minikube
minikube部署所需要的文件:
deployment.yaml
service.yaml
configmap.yaml
Protobuf
什么是 Protobuf?Protobuf 是 Google 开发的一种 高效的数据序列化协议,全称是 Protocol Buffers,它用来定义和传输结构化数据。它特别适合在不同系统之间进行高性能的数据交换。相比传统的数据格式(如 XML 和 JSON),Protobuf 更快、更小、更高效。
1. 为什么需要 Protobuf?问题:效率与标准化在分布式系统中,不同服务之间需要交换大量的数据。传统方法有以下局限:
JSON/XML:文本格式,臃肿且慢
例如,{"name":"Alice", "age":25},需要重复字段名(如 name 和 age),导致传输数据量大。
XML 更严重,因为还需额外的标签嵌套结构(<name>Alice</name>)。
需要强类型定义
数据格式必须明确定义,以防止发送方和接收方的理解不一致(例如数据类型、字段顺序)。
跨语言支持
不同系统可能用不同编程语言,格式需要能被所有语言解析。
Protobuf ...
Google C++ Style Guide
Google C++ Style Guidetable of contents
Section
Subsections
C++ Version
Header Files
Self-contained Headers, The #define Guard, Include What You Use, Forward Declarations, Inline Functions, Names and Order of Includes
Scoping
Namespaces, Internal Linkage, Nonmember, Static Member, and Global Functions, Local Variables, Static and Global Variables, thread_local Variables
Classes
Doing Work in Constructors, Implicit Conversions, Copyable and Movable Types, Structs vs. Classes, Struct ...
google/LevelDB
Intro阅读和学习 LevelDB 源码是一项极具挑战性的任务,但也非常有意义。LevelDB 是 Google 开发的一款高效、轻量级的键值存储库,其核心基于 LSM 树(Log-Structured Merge Tree) 的设计。学习 LevelDB 源码的过程不仅有助于理解数据库底层存储的实现,还可以提高对系统设计和高性能编程的理解。
1. 理解 LevelDB 的基础概念在直接阅读源码前,先对 LevelDB 的核心原理有一个较深入的理解。包括:
LSM 树:LevelDB 的核心数据结构。
数据分为内存(MemTable)和磁盘(SSTable)两层。
数据写入先进入内存表,达到一定大小后转化为磁盘文件(SSTable)。
磁盘文件会进行后台合并(Compaction)以优化查询性能。
主要概念:
MemTable:存储在内存中的数据,基于跳表(SkipList)实现。
Immutable MemTable:达到大小限制后,转化为只读内存表,等待刷入磁盘。
SSTable:存储在磁盘上的有序不可变文件,支持高效的范围查询。
Write-Ahead Log (W ...
apache/brpc
https://github.com/apache/brpc
bvarbthreadprotobuf
【Rust crate】 Diesel
all-about-inserts
Diesel Migration
内网穿透理论与实践
内网穿透理论与实践正向代理与反向代理代理就相当于是中介。正常来说客户端将请求发送给服务器端,服务器端收到请求后将响应结果返回给客户端。设置代理后,请求和响应都将经过代理到达彼此。当客户端发送请求时,代理对其进行拦截,再由代理将其发送给服务器端。服务器端收到请求后,代理再对响应结果进行拦截,再由代理返回给客户端。
正向代理和反向代理的区别在于代理的对象不同。正向代理代理的是客户端,而反向代理代理的是服务器端。从用户角度来说,其根本区别在于正向代理对客户端是透明的,即客户端设置的。而反向代理对服务器端是透明的,即服务器端设置的。
正向代理可以隐藏用户的信息,并能够将其作为跳板访问我们无法访问的资源,如翻墙。反向代理可以隐藏服务器的信息,保障了内网的安全,同时能够用来实现负载均衡。
NAT静态 NAT静态 NAT 指的是将一个内部 IP 地址映射到一个外部 IP 地址。静态 NAT 通常用于服务器,因为服务器需要一个固定的 IP 地址。
静态 NAT 通常需要在路由器上手动配置,将一个内部 IP 地址映射到一个外部 IP 地址。这样,当外部用户访问外部 IP 地址时,路由器会将请求转发给内部 ...
【大三上】工业数据
HCCSA-iDME xMD-F 认证考试
工业软件产业及第一代工业软件体系工业软件导论工业软件的四梁八柱
研发设计类软件是四梁之一
四梁包括四大类核心的工业软件研发设计软件是工业软件的皇冠
凝结了制造业壁垒最高的多学科知识和机理CAD——Computer Aided Design 计算机辅助设计
CAD 是利用计算机进行工程涉及的研发设计类工业软件3D CAD:技术壁垒高,存在卡脖子风险CAE:Computer Aided Engineering 计算机辅助工程(仿真)
CAE 解决工业产品功能性能和机电热控等专业功能性能模拟仿真分析问题CAE 仿真:认识世界的第三范式
CAE 软件仿真方法是与理论方法、实验方法并列的人类认识世界的第三大方法CAE 典型学科及工具软件:涉及学科广EDA——Electronic Design Automation 电子设计自动化
EDA 解决了超大规模集成电路(VLSI)芯片的功能设计、综合、验证、物理设计(包括布线、发布、版图、设计规则检查等)等设计问题,相当于电子设计领域CAD、CAE、CAM的综合智能制造:生产数字孪生、资源(人、机、料)智能A ...
dtm
DTM 分布式事务管理器https://dtm.pub/
qs(Quick Start)二阶段消息
二阶段消息,可以完美替代现有的事务消息或本地消息表架构。无论从复杂度、便利性、性能,还是代码量,新架构都完胜现有架构方案,是这个领域的革命性架构。
二阶段消息是 dtm 首创的事务模式,用于替换本地事务表和事务消息这两种现有的方案。它能够保证本地事务的提交和全局事务提交是“原子的”,适合解决不需要回滚的分布式事务场景。下面我们来看看二阶段消息,如何解决这个业务场景的问题。
http_msg_doAndCommit 流程分析定义和实现与分布式事务相关的业务逻辑和数据库操作data.go 的主要作用是定义和实现与分布式事务相关的业务逻辑和数据库操作。在这里,我们定义了一个名为 SagaAdjustBalance 的函数,用于调整用户的余额。在这个函数中,我们首先判断事务的执行结果,如果事务执行失败,则返回错误;否则,我们执行核心的业务逻辑,即调整用户的余额。123456789// SagaAdjustBalance 1func SagaAdjustBalance(db dtmcli.DB, ...
Redis
Redis 是什么?架构是怎么样的?
Redis 基础认知redis 的数据类型redis 支持五种数据类型:
String 字符串
Hash 哈希
List 列表
Set 集合
Zset 有序集合
还有:
HyperLogLog:基数统计
Geo:地理位置
Pub/Sub:发布订阅
还有 Redis Module:
RedisBloom:布隆过滤器
RedisSearch:全文搜索
Redis-ML:机器学习Redis 和 Memcached 区别共同点
基于内存的数据库,都当作缓存来使用
都有过期策略
两者的性能都非常高不同
Redis 支持更多的数据类型
Redis 支持持久化,Memcached 不支持
Redis 原生支持集群模式,Memcached 需要依赖客户端来实现往集群中分片写入数据
Redis 支持发布订阅模型、Lua 脚本、事务等功能
为什么选择 Redis
高性能
高并发
Redis 是单进程Redis 是单进程的,这是 Redis 的特点之一。Redis 采用 IO 多路复用模型,通过监听多个文件描述符,来处理多个客户端的请求。Redis 通过非 ...