go错误和日志 发表于 2019-10-16 | 分类于 go 错误处理在 Go 语言中声明 error 可以有多种方式: errors.New 声明包含简单静态字符串的 error fmt.Errorf 格式化 error string 其他自定义类型使用了 Error() 方法 使用 “pkg/errors”.Wrap 当要把 error 作为返回值 ... 阅读全文 »
cap原理 发表于 2019-10-07 | 分类于 cap CAP 分布式理论理解CA without P:如果不要求 P(不允许分区),则 C(强一致性)和 A(可用性)是可以保证的。但其实分区不是你想不想的问题,而是始终会存在,因此 CA 的系统更多的是允许分区后各子系统依然保持 CA。 CP without A:如果不要求 A(可用),相当于每个请求都 ... 阅读全文 »
etcd_intro 发表于 2019-10-07 | 分类于 etcd etcd 笔记 定义:分布式的 kv 存储系统 常用 API123456get keyput key valxxx=lease grant 60put key val —lease=xxxdelete keywatch key 过期时间lease 定义一个过期时长,多个 key 都可以绑定到这个 ... 阅读全文 »
gorm源码分析 发表于 2019-10-07 | 分类于 gorm gorm 源码解析gorm 使用示例 123456789101112131415161718192021222324252627package mainimport ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlit ... 阅读全文 »
mysql常见问题 发表于 2019-10-07 | 分类于 mysql mysql 原理事务 ACID 如何实现redo log 重做日志其实保障的是事务的持久性和一致性,而 undo log 撤销日志则保障了事务的原子性,锁保证隔离性。一个事务写操作对另一个事务写操作的影响:锁机制保证隔离性一个事务写操作对另一个事务读操作的影响:MVCC 保证隔离性 原子性:使用 ... 阅读全文 »
nodejs问题 发表于 2019-10-07 | 分类于 categories Nodejs 注意点执行函数后面记得加分号结束; 12function hello(uid,callback)hello(uid,function(){});//一定要加; 判断条件 123456789101112131415161718192021222324252627282 ... 阅读全文 »
protobuf_intro 发表于 2019-10-07 | 分类于 protobuf 为什么要使用 protobuf跟 JSON 相比 protobuf 优点 性能更高,更加规范 编解码速度快,数据体积小 使用统一的规范,不用再担心大小写不同导致解析失败等蛋疼的问题了 缺点 改动协议字段,需要重新生成文件。 数据没有可读性 安装在 go 中使用 protobuf,有两个可选用 ... 阅读全文 »
python常见问题 发表于 2019-10-07 | 分类于 python python 常见问题安装virtualenv -p /usr/bin/python2.7 venv python 常用函数1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484 ... 阅读全文 »
redis注意点 发表于 2019-10-07 | 分类于 redis redis 关键点核心点 数据类型实现 跳跃表 层级高度 插入、删除过程 hash 表 rehash 过程 持久化 RDB BGSAVE AOF BGREWRITEAOF 多机 主从模式 psync 指令 sentinel 主从故障转移 订阅同一个通道 心跳保活 r ... 阅读全文 »
thrift_intro 发表于 2019-10-07 | 分类于 rpc thrift 笔记 Thrift 实际上是实现了 C/S 模式,通过代码生成工具将接口定义文件生成服务器端和客户端代码(可以为不同语言),从而实现服务端和客户端跨语言的支持。用户在 Thirft 描述文件中声明自己的服务,这些服务经过编译后会生成相应语言的代码文件,然后用户实现服务(客户端调用服务, ... 阅读全文 »