
理论
文章平均质量分 70
yinnnnnnn
这个作者很懒,什么都没留下…
展开
-
tcp三次握手、四次挥手涉及到的优化参数【全】
tcp三次握手tcp_syn_retriestcp 发送syn重试次数,默认6次net.ipv4.tcp_syn_retries = 6第 1 次重试发生在 1 秒钟后,接着会以翻倍的方式在第2、4、8、16、32 秒共做 6 次重试,最后一次重试会等待 64 秒,如果仍然没有返回ACK,才会终止三次握手。所以,总耗时是 1+2+4+8+16+32+64=127 秒,超过 2 分钟。tcp_max_syn_backlog半连接状态的队列大小,默认1024net.ipv4.tcp_max原创 2020-08-12 01:04:46 · 915 阅读 · 0 评论 -
面试高频题目:一种优雅对称的快排源码实现
排序算法是整个算法体系中的最核心的一大块,而快速排序又是排序算法中最核心的一种实现,相信大家都懂排序算法的原理:快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的...原创 2020-02-07 17:21:12 · 392 阅读 · 0 评论 -
一种浅显易懂理解链表高频面试题的全新思路
前言我们都知道链表相关的算法题是笔试,面试的高频题,往往链表题的实现代码通常只有几行,但很多人被链表的指针指来指去,极容易绕晕。比如链表反转的一种实现: ListNode *Reverse(ListNode *pHead) { ListNode *pre = NULL; ListNode *cur = pHead; while (cur)...原创 2018-10-27 09:50:52 · 568 阅读 · 0 评论 -
C++一道深坑面试题:STL里sort算法用的是什么排序算法?
前言当你第一眼看到这道面试题是不是心里在暗喜,一问算法题就比问排序算法,一问排序算法就问快速排序。如果你回答:STL里的sort算法肯定用的是快速排序啊?难不成还是冒泡排序么?如果你只是回答快速排序,那么恭喜你只答对了33.333%,离正确答案还差一大截。回答完,接着会引来一堆问题轰炸:数据量大和数据量小都适合用快速排序吗?快速排序的时间复杂度不是稳定的nlogn,最坏情况会变成n^2,怎么解决复...原创 2018-04-30 10:12:23 · 20845 阅读 · 4 评论 -
multi-paxos和raft区别
什么是raft?Raft论文中都做了详细的描述,语言清晰,我这里仅做下认为非常重要的点的记录:数据流向是由leader流向follower的,follower和leader不一致,以leader为准修改follower本地日志2.leader的选举中,如果follower发现candidate的日志比本地日志少,follower不投票给candidate,这就保证了选举出的leader覆盖了大多原创 2017-10-08 10:53:24 · 3311 阅读 · 0 评论 -
paxos工程中的运用-multi-paxos
什么是multi-paxos上篇介绍了paxos的理论知识[http://blog.csdn.net/qq_35440678/article/details/78080431],要在实际工程运用大多数使用multi-paxos协议,原因是朴素paxos每次提议都执行完整paxos协议代价过大-3次网络交互,2 次本地持久化,因此,multi-paxos引入leader概念,较少paxos的prepa原创 2017-09-27 12:42:40 · 1241 阅读 · 0 评论 -
理解这两点,也就理解了paxos协议的精髓
什么是paxos协议?Paxos用于解决分布式系统中一致性问题。分布式一致性算法(Consensus Algorithm)是一个分布式计算领域的基础性问题,其最基本的功能是为了在多个进程之间对某个(某些)值达成一致(强一致);简单来说就是确定一个值,一旦被写入就不可改变。paxos用来实现多节点写入来完成一件事情,例如mysql主从也是一种方案,但这种方案有个致命的缺陷,如果主库挂了会直接原创 2017-09-24 22:15:23 · 17912 阅读 · 10 评论 -
6个实例详解如何把if-else代码重构成高质量代码
本文提纲:为什么我们写的代码都是if-else?这样的代码有什么缺点?是否有优化的方法?如何重构?异常逻辑处理型重构方法状态处理型重构方法为什么我们写的代码都是if-else?程序员想必都经历过这样的场景:刚开始自己写的代码很简洁,逻辑清晰,函数精简,没有一个if-else,可随着代码逻辑不断完善和业务的瞬息万变:比如需要对入参进行类型和值进行判断;这里要判断下原创 2017-09-11 23:47:12 · 62896 阅读 · 25 评论 -
《复盘》思维导图
最近看了《复盘》这本书,有些方法论不错,做了个思维导图,要原图的留邮箱。原创 2017-07-16 12:54:49 · 9372 阅读 · 2 评论 -
Linux内核设计与实现-进程管理与进程调度
第三章:进程管理简单记录看书看到的一些和自己之前理解有出入的点,做个记录: - 进程号的最大值是多少,能否调整大小? 最大进程数,默认在cat /proc/sys/kernel/pid_max 32768(short int短整型的最大值),可直接修改提高fork()写时拷贝:只有在需要写入的时候,数据才会被复制。线程在linux中的实现, 从内核的角度来说,它并没有线程这个概念。lin原创 2017-01-15 11:09:23 · 486 阅读 · 0 评论 -
读书笔记-tcp/ip详解卷1 第18章:TCP连接的建立与终止
练习:测试tcp连接建立超时重传telnet 到一个不存在的ip/port 窗口一:date;telnet 120.0.0.2 3 ;date窗口二观察:tcpdump -Xnlps0 port 3 -i any在我的阿里云机器,一共发了6个尝试连接包,间隔时间分别为:1s、2s、4s、8s、16s,一共耗时63秒。 书上写的是只有两次超时重试,一次是接近6s,第二次24s,内核调用TCP的5原创 2016-12-12 23:20:20 · 658 阅读 · 0 评论 -
redis之父的博客翻译-Redis中的LRU算法改进
redis通常使用缓存,是使用一种固定最大内存的使用。当数据达到可使用的最大固定内存时,我们需要通过移除老数据来获取空间。redis作为缓存是否有效的重要标志是如何寻找一种好的策略:删除即将需要使用的数据是一种糟糕的策略,而删除那些很少再次请求的数据则是一种好的策略。 在其他的缓存组件还有个命中率,仅仅表示读请求的比例。访问一个缓存中的keys通常不是分布式的。然而访问经常变化,这意味着不经常访问翻译 2016-12-04 10:37:15 · 4545 阅读 · 0 评论 -
你脑子里关于字符集的疑问都收录在这!
本文希望解答以下几个问题:什么是字符集,ASCII码、unicode、UTF-8、GB2312、GBK 之间有什么区别?给定一个字符串,如何检测其编码类型如此多的字符集,平时改怎么选用合适的?字符编码之间如何转换?对于mysql,表、字段都有字符集,如何统一选中哪种?mysql的utf8mb4是uft8有何区别mysql中默认的lantin1字符集又是什么字符集?ASCII码、uni原创 2016-11-06 19:56:44 · 350 阅读 · 0 评论 -
计算机网络-IP地址
说到IP地址,每个人都多多少少了解一点,但总有一些和IP地址相关的知识没有彻底弄明白,比如:什么是内网IP和外网IP?如何区分?内网IP是如何与外界通信的?IP地址和子网掩码是什么关联?IP地址有多少?是怎么分配的?NAT是什么?DHCP又是什么? 本文希望能解答以上疑惑。(本文讨论的是IPv4.) 首先,简单来说IP地址就相当于qq号,每个人想用原创 2016-09-23 22:32:47 · 816 阅读 · 0 评论