- 博客(7)
- 收藏
- 关注
原创 架构学习笔记
架构设计的主要目的是为了解决软件系统复杂度带来的问题当我们对这样一个系统进行架构设计的时候,首先应识别其复杂度到底体现在哪里。复杂度来源:高性能单机性能,集群性能高可用计算(轮询,分发)的高可用,存储的高可用高扩展提炼出一个“抽象层”和一个“实现层”,依赖接口,不要依赖具体实现 低成本低成本与高性能相冲突安全功能安全,常见的 XSS 攻击、CSRF 攻击、SQL ...
2019-12-11 10:49:49 133
原创 用双向链表实现简易的内存系统
思路1,map+双向链表来实现,双向链表的表头记录最新的数据,get,set操作都会把节点插入表头,这样的好处是保证热点数据在前面,非热单数据在后面;2,定时器按配置定时从链尾开始扫描数据,过期的数据被清除,如果实在没有过期时间,但是又超出内存限制的情况就删除链尾的最后一个节点3,哈希表记录每一个节点的数据,set(),get(),exist(),del(),keys()操作的时间复...
2019-12-01 15:51:02 471
原创 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 168
原创 长连接问题分析
短连接优点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 664
原创 Tcp握手问题分析
TCP握手常见问题1,连接拒绝端口连接一个不存在的端口,被TCP拒接(rst)2,Operation now in progress丢包,错误IP,backlog满&阻塞tcp_abort_on_overflow=0设置:/opt/sys/net/ipv4/tcp_obort_on_overflow0:的情况会不处理新的连接,让客户端超时连接不上1:回一个rst,即重置这...
2019-11-29 11:37:04 817
原创 database/sql库连接池实现方法解读(原创)
前言database/sql对外实现了驱动的接口,对内提供了调用底层驱动的方法,其灵活,巧妙的设计实现了底层驱动和业务之间的解耦,其方案被众多开源框架参考,比如beego的Cache库,Log库都是参考了其设计,堪称教科书。其连接池的实现方案同样巧妙,虽然繁杂,但思路和逻辑清晰,作为golang的学习者,本文着重分析连接池的实现。连接池实现拓扑图:1,驱动注册drivers = ma...
2019-11-28 10:36:20 1000
原创 PHP扩展gdb调试方法
这里写自定义目录标题cd ext/./ext_skel --extname=hellocd hellovim config.m4phpize./configure --with-php-config=xxxmake && make installphp_module_startup:php_request_startup:php_excecu_script:g...
2019-09-12 19:12:52 257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人