摘要: 为什么要3次握手?假设存在以下过程: 其实呢,最开始两步,是因为通信的双方要互相通知对方自己的初始化的Sequence Number(缩写为ISN:Inital Sequence Number)——所以叫SYN。 引申的问题有以下三个: 为什么要4次挥手? 理论上完全可以做到3次挥手。Server完 阅读全文
posted @ 2018-05-13 16:55 ExitQuit 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 问题:怎么提高if语句性能?分支预测又是什么?C/C++ 分支预测(likely unlikely),原理是很么? 原理:执行时候,分两步, 1、将指令(多条,因为这样更快)从内存搞到高速缓存。 2、开始执行指令。 因此分支预测可以让程序员告诉编译器, x == 3 很大概率不出现,让最后才生成 x 阅读全文
posted @ 2018-05-13 16:46 ExitQuit 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 1、Read uncommitted 未提交 脏读 2、Read committed 读提交 怎么解决脏读问题?很简单,就是只读提交了的数据,但是这样会造成问题就是【不可重复读】,一个事务范围内两个相同的查询却返回了不同数据。原因是事务在执行过程中另外的事务对数据进行了update。。。 3、Rep 阅读全文
posted @ 2018-05-13 16:43 ExitQuit 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 又来更新剑指offer上的题目思路啦。 11、【二进制中1的个数】 题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路:每次都将数字n的最后一位1反转成0,不断反转到这个数字变成0,然后我们统计反转了多少次,这样不就可以成功得到这个数字有多少位了吗? 难点:如何反转一个数字 阅读全文
posted @ 2018-05-13 13:54 ExitQuit 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 直接贴代码吧。。。没啥好说的。。。 阅读全文
posted @ 2018-05-11 10:28 ExitQuit 阅读(351) 评论(0) 推荐(0) 编辑
摘要: memcached Vs redis:1、基于libevent==>代码庞大==>最大同时连接数为200(线程)/比较慢==>redis实现了自己的网络库,用的epoll。2、memcached是2003搞出来的==>数据结构比较少 >Redis数据结构比较多。3、memcached内存不够用时== 阅读全文
posted @ 2018-05-10 17:25 ExitQuit 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 1、【二维有序数组查找】 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 方案肯定是要用O(n)级别的,如果是O(N^2),那么还就是暴力破解。这样根本就没有利用到题目的性质 》二 阅读全文
posted @ 2018-05-07 10:57 ExitQuit 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 还是拿背包问题来分析吧,假设有N个背包,现在我们要对这个N个背包排列。。输出所有情况 那么有: 生动点形容整个场景,存在N个人 第一步,在这N个人中找一个人轮流坐在第一个位置上 第二步,在这N-1个人中找一个人轮流坐在第一个位置上 第一个位置已经固定人了 第三步,在这N-2个人中找一个人轮流坐在第一 阅读全文
posted @ 2018-05-04 19:28 ExitQuit 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 最近上班上到脑袋都晕,,,突然想到要复习一下。就搞了个子集树的代码。。 其实子集树有点像暴力破解,大名鼎鼎的0-1规划中的背包问题一样。假设有N个背包,对应N个元素。 那么有: 然后要、不要分别对两种情况,好比二叉树的左子树和右子树一样。 子集树写法也参考了背包问题,遍历N个背包,分别决定要不要该背 阅读全文
posted @ 2018-05-04 19:05 ExitQuit 阅读(784) 评论(0) 推荐(0) 编辑
摘要: 思路: 假设存在两个栈stack1、stack2,可以这样认为: stack2中保存的为【队列的前部分元素】,可以认为 其栈顶值 = 队列头部值。 stack1中的元素为【未经转换的队列后部分元素】,相当于buffer一样的存在,它其实就是队列中后部分元素逆序的结果。因此需要将其元素全部投入到sta 阅读全文
posted @ 2018-05-02 08:43 ExitQuit 阅读(192) 评论(0) 推荐(0) 编辑