- 博客(16)
- 收藏
- 关注
原创 分布式技术
目录一、微服务1、概述2、服务发现3、负载均衡4、服务调用容灾5、微服务网关6、服务调用跟踪7、服务动态配置二、分布式互斥1、集中式算法2、分布式算法3、令牌环算法4、分布式锁三、分布式事务1、BASE理论2、消息事务+最终一致性3、TCC4、二阶段提交5、三阶段提交四、可用性1、一致性哈希2、分布式选举3、负载均衡4、限流五、分布式存储六、分布式计算七、分布式调度 分布式是个大命题,...
2020-07-08 17:57:09 4654
原创 InnoDB杂谈
一、索引算法 这块分为B+树索引,全文索引,哈希索引。 B+树索引并不能找到一个给定键值的具体行,B+树索引能找到的只是被查找数据行所在的页,然后数据库通过把页读入到内存,再在内存中进行查找,最后得到要查找的数据。1、B+树 B+树是为磁盘或其它直接存储辅助设备设计的一种平衡查找树。在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶子节点上。1.1B+树的插入 叶子节点page未满,索引page未满: 直接插入...
2020-06-20 12:11:20 414
原创 C++超轻量限流器实现
目录一、简介二、令牌桶算法简述三、使用四、实现五、后续一、简介 该限流器基于令牌桶算法实现,特点如下:接入方便,无业务侵入:接入只需要添加一行代码r.pass()。 线程安全,CPU友好,无锁高效。 轻量,核心代码200行。 github地址,有兴趣可以来颗star:https://github.com/YukangLiu/RateLimiter二、令牌桶算法简述 有一个装着令牌(token)的桶,它按照qps的速率补充令牌...
2020-05-14 22:34:13 3780 8
原创 epoll原理的一点总结
之前只是使用epoll,也只在别人的博客上了解过大致的工作原理。这几天刷面经,看到许多问epoll的问题,于是花了一天去看了看epoll的源码,给自己也整理了一个原理简述。 epoll是linux的IO多路复用机制的接口,要讲epoll的原理,得从它的三个函数逐个介绍: 首先是epoll_create,这个函数会做两件事,一是分配一块连续的物理空间初始...
2020-02-20 08:54:13 436
原创 linux c++11高性能协程库netco
目录一、开源协程库调研1、golang语言自带协程2、云风的coroutine协程库3、腾讯的libco协程库4、魅族的libgo协程库二、netco协程库概述三、netco的实现1、框架2、Context3、Coroutine4、对象池5、Epoller6、Timer7、Processor8、Scheduler9、netco_...
2020-01-14 23:42:48 5237 1
原创 《redis设计与实现》读书笔记
目录一、数据结构1、字典2、跳跃表3、整数集合4、压缩列表5、对象二、单机数据库1、过期键删除策略2、RDB持久化3、AOF持久化4、事件5、客户端6、服务端三、多机数据库1、复制2、Sentinel3、集群一、数据结构 主要记录几个比较独特的数据结构。1、字典 整个Redis的键值对存储可...
2019-12-13 22:01:34 641
原创 面向对象使用的轻量化高并发Linux c++网络库kikilib
目录一、概述二、使用三、实现1、框架2、Socket3、定时器4、线程池5、读写缓冲区6、日志7、对象池四、测试五、遇到的问题mark六、后续一、概述 kikilib网络库是轻量,高性能,纯c++11,更符合OOP语言特点且易于使用的一个Linux服务器网络库。并发模型使用的是Reactor模型+非阻塞IO,...
2019-12-05 16:53:36 2208 3
原创 Disruptor原理概述与轻量级C++实现
最近学习了disruptor,于是自己实现了一个极轻量化的多生产者多消费者c++版本disruptor,并用这个版本优化了github上排第一的threadpool项目,效率得到了一定的提升,特别是执行函数相对比mutex锁所需时间较小时候。 源码地址:https://github.com/WoBuShiXiaoKang/DisruptorThreadPool/tre...
2019-11-22 18:23:57 3523 9
原创 《计算机网络自顶向下方法》学习笔记——3、网络层
目录1、IP2、因特网控制报文协议(ICMP)3、路由选择算法 英特网的网络层有三个主要组件。第一个是IP协议,第二个是路由选择部分,它决定数据报从源到目的地所流经的路径。最后一个是报告数据报中差错和对某些网络层信息请求进行响应的设施,即英特网控制报文协议(ICMP)。1、IP(1)Ipv4数据报格式:版本: 这个4...
2019-11-08 19:01:43 409
原创 《计算机网络自顶向下方法》学习笔记——2、运输层
目录1、多路复用与多路分解2、UDP3、TCP1、多路复用与多路分解 将主机间交付扩展到进程间交付被称为运输层的多路复用与多路分解: 一个进程有一个或多个套接字,它相当于从网络向进程传递数据和从进程向网络传递数据的门户。因此,在接收主机中的运输层实际上并没有直接将数据交付给进程,而是将数据交给了一个中间的套接字。 每个运输层报文段中...
2019-11-08 18:55:34 520
原创 《计算机网络自顶向下方法》学习笔记——1、应用层
目录1、进程与计算机网络之间的接口2、何为应用层协议3、SSL4、HTTP5、FTP6、电子邮件7、DNS8、BitTorrent1、进程与计算机网络之间的接口 进程通过一个称为套接字的软件接口向网络发送报文和从网络接收报文。这里,进程可以类比于一个房子,而它的套接字相当于它的门,当一个进程想向位于另一台主机上的另一个进程发送报文时,就把报文推出...
2019-11-08 18:45:39 697
原创 设计模式——行为型模式
1.策略模式※ 策略模式定义了算法家族,分别封装起来,让它们之间可以互相转换,此模式让算法的变化,不会影响到使用算法的用户。 策略模式就是用来封装算法的,但在实践中,我们发现可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。 在基本的策略模式中,选择所用具体实现...
2019-10-26 11:37:12 330
原创 设计模式——创建型模式
1.单例模式※ 整个程序有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。class myStaticSingleton{public: static myStaticSingleton* getInstance(){ return &_instance; }private: myStaticSingleton() {} s...
2019-10-26 10:50:54 196
原创 设计模式——结构型模式
1.代理模式※(1)代理模式的定义: 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。 Proxy模式在访问对象时引入了一定程度的间接性。根据代理的类型,附加的间接性有很多种用途:远程代理(Remote Proxy)可以隐藏一个对象存在于不同地址空间的事实。虚代理(Virtual Prox...
2019-10-26 10:36:18 218
原创 OOP三大特征和五大设计原则
1.封装 封装就是把数据和对数据进行的操作集合在一起,然后将实现与使用分离,只暴露部分接口和属性供外部使用。2.继承 继承,可以让某个类型的对象获得另一个类型的对象的属性和方法,并在无需重新编写原来的类的情况下对这些功能进行扩展。继承增加了类的可重用性。3.多态 多态指同一个行为具有多个不同表现形式或形态,一般通过子类继承父类...
2019-10-26 09:33:49 530
原创 levelDB源码学习总结
关于leveldb框架的介绍,已经有无数个大佬进行过详细论述了。以下三篇博客就很不错,本文的图片也基本摘自第一篇博客:LevelDB原理探究与代码分析Leveldb二三事leveldb实现原理本文为看完以上博客后总结的一些问题,在雄神的鼎力相助下一起阅读源码找到的答案,欢迎交流指正。目录一、log日志文件相关二、跳表相关(memtable)三、sstable相关...
2019-09-28 21:25:53 915
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人