- 博客(7)
- 收藏
- 关注
原创 架构学习笔记
架构设计的主要目的是为了解决软件系统复杂度带来的问题 当我们对这样一个系统进行架构设计的时候,首先应识别其复杂度到底体现在哪里。 复杂度来源: 高性能 单机性能,集群性能 高可用 计算(轮询,分发)的高可用,存储的高可用 高扩展 提炼出一个“抽象层”和一个“实现层”,依赖接口,不要依赖具体实现 低成本 低成本与高性能相冲突 安全 功能安全,常见的 XSS 攻击、CSRF 攻击、SQL ...
2019-12-11 10:49:49
180
原创 用双向链表实现简易的内存系统
思路 1,map+双向链表来实现,双向链表的表头记录最新的数据, get,set操作都会把节点插入表头,这样的好处是保证热点数据在前面, 非热单数据在后面; 2,定时器按配置定时从链尾开始扫描数据,过期的数据被清除,如果实在没有 过期时间,但是又超出内存限制的情况就删除链尾的最后一个节点 3,哈希表记录每一个节点的数据,set(),get(),exist(),del(),keys() 操作的时间复...
2019-12-01 15:51:02
536
原创 git 常用命令
1. git init: 创建新文件夹,打开,然后执行 以创建新的 git 仓库。 2.git clone: git clone /path/to/repository 克隆本地 git clone username@host:/path/to/repository 克隆远程服务器 3.git add filename 你可以计划改动(把它们添加到缓存区) 4.git commit -m “mes...
2019-11-29 11:42:04
221
原创 长连接问题分析
短连接 优点 1,多余传输 2,TCP慢启动 3,握手节点可能对包 4,连接的使用率跟长连接差不多 缺点 1,简单 2,理论上连接数会少 3,无状态,对负载均衡好 长连接 常见问题 1,服务端超时关闭 redis:timeout(Error while reading line from the server) mysql:wait_timeout & interactive_tim...
2019-11-29 11:39:44
771
原创 Tcp握手问题分析
TCP握手常见问题 1,连接拒绝端口 连接一个不存在的端口,被TCP拒接(rst) 2,Operation now in progress 丢包,错误IP,backlog满&阻塞 tcp_abort_on_overflow=0 设置:/opt/sys/net/ipv4/tcp_obort_on_overflow 0:的情况会不处理新的连接,让客户端超时连接不上 1:回一个rst,即重置这...
2019-11-29 11:37:04
956
原创 database/sql库连接池实现方法解读(原创)
前言 database/sql对外实现了驱动的接口,对内提供了调用底层驱动的方法,其灵活,巧妙的设计实现了底层驱动和业务之间的解耦,其方案被众多开源框架参考,比如beego的Cache库,Log库都是参考了其设计,堪称教科书。其连接池的实现方案同样巧妙,虽然繁杂,但思路和逻辑清晰,作为golang的学习者,本文着重分析连接池的实现。 连接池实现拓扑图: 1,驱动注册 drivers = ma...
2019-11-28 10:36:20
1103
原创 PHP扩展gdb调试方法
这里写自定义目录标题 cd ext/ ./ext_skel --extname=hello cd hello vim config.m4 phpize ./configure --with-php-config=xxx make && make install php_module_startup: php_request_startup: php_excecu_script: g...
2019-09-12 19:12:52
320
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅