- 博客(13)
- 收藏
- 关注
原创 TCP协议优化
控制传输包大小(MSS) 放大TCP拥塞窗口(cwnd) 调大SOCKET读写缓冲区 (滑动窗口) 调大RTO(Retransmission TimeOut)初始值(RTT超时判断) 禁用TCP快速回收 HTTP协议:打开SOCKET的TCP_NODELAY选项
2024-04-03 17:33:58 107 1
原创 NAT类型、探测及穿透
NAT原理及类型NAT检测方法及过程NAT穿透技术基于UDP的NAT穿透 基于TCP的NAT穿透其他:upnp协议、hairpinNAT策略
2022-05-19 17:36:41 1260
原创 C++单元测试常见问题总结
一、异步接口测试常见方法1.runloop阻塞调用线程等待异步执行结果。例如chromium的单测,//单测TEST_F(HttpNetworkTransactionTest, Incomplete100ThenEOF) { HttpRequestInfo request; request.method = "POST"; request.url = GURL("http://www.foo.com/"); request.traffic_annotation = n
2022-02-10 15:19:04 2186
原创 C++单例实现
单例是经常用到的一种设计模式,看似简单实则要考虑很多方面,如线程安全、懒加载性能等,本文提供C++单例的两种实现,具有较高的适用性。局部静态变量实现
2021-06-18 21:30:06 174
原创 SkipList(跳表)
跳表简介跳表是基于有序链表实现的搜索结构,是一种动态的搜索结构,即支持动态插入和删除操作,且跳表查找和删除的平均时间复杂度是Olog(n),因此跳表是一种时间复杂度最小的搜索结构。我们知道对一个数据集合的查找,最差的时间复杂度是O(n),即遍历每个元素进行查找;最好的时间复杂度是近似Olog(n),实现Olog(n)时间复杂度,主要思想是每进行一次查找查找范围都减小一半,因此时间复杂度为Olog(n)的数据集合一般为有序集合,每次查找与有序集中的中间元素比较,确定下次查找的元素集合范围。单...
2020-07-20 20:30:46 427
原创 字符集、字符编码和字符编码转换
字符集1.ASCII2.ANSIGBK、GB2312、BIG5等3.MBCS4.UNICODEUTF8、UTF16、UCS2/UCS4(区别)窄字符和宽字符窄字符:宽字符:字符编码转换方法1.使用C++标准库codecvt、locale、use_facethttps://zh.cppreference.com/w/cpp/locale/codecvthttps://zh.cppreference.com/w/cpp/locale/use_faceth.
2020-07-02 21:55:54 554
原创 散列表
散列表简介 散列表(哈希表)是普通数组概念的推广。由于对普通数组可以直接寻址,因此散列表一般情况下的时间复杂度为O(1)。1.直接寻址表关键字全域U={0,1,2,...,m-1}。直接寻址表,记为T[0,...,m-1],其中每个位置或称为槽(slot),对应全域U中的一个关键字。槽k指向集合中一个关键字为k的关键字。2.散列表直接寻址法的缺点是当U很大时,需要的直接寻址表很大,没有足够的内存实现。在散列方式下,关键字k放在槽h(k)中,既利用散列函数h,由关键字k计算出槽的位置。..
2020-05-17 23:40:18 186
原创 B树和B+树
B树简介B树(B-树)是为磁盘而设计的一种平衡搜索树,类似红黑树。主要目的是降低磁盘IO次数,提高磁盘读取效率。数据库是磁盘IO密集应用,因此常使用B树和B+树存储信息。B树可以有很多孩子,“分支因子”m可以很大,通常依赖于所使用的磁盘单元的特性。含有n个节点的B树高度为,由于B树“分支因子”很大,表示高度的对数的底数可以非常大。因此要比二叉搜索树高度小很多,但一般也用O(lgn)表示B树操作的时间复杂度。数据库存储信息一般非常之大,因此大部分数据库会把信息保存到磁盘等持久性存储器中数据。数据库的
2020-05-17 21:27:48 179
原创 停机问题
停机问题停机问题(halting problem)是逻辑数学中可计算性理论的一个问题。通俗的说,停机问题就是判断任意一个程序是否会在有限的时间之内结束运行的问题。如果这个问题可以在有限的时间之内解决,那么就可以有一个程序判断其本身是否会停机。但是,在程序停止之前,没有办法判断它会不会停止。所以这是一个不可解的问题。艾伦·图灵在1936年证明了,一个可以解决停机问题的通用算法是不
2013-10-30 23:26:56 990
原创 图灵之非确定型图灵机
非确定型图灵机如果不加特殊说明,通常所说的图灵机都是确定型图灵机。非确定型图灵机和确定型图灵机的不同之处在于,在计算的每一时刻,根据当前状态和读写头所读的符号,机器存在多种状态转移方案,机器将任意地选择其中一种方案继续运作,直到最后停机为止。具体而言,其状态转移函数为其中是状态集合,是带字母表,分别表示读写头向左和向右移动;符号 表示集合的幂集,即
2013-10-30 23:24:35 6522
原创 图灵之确定型图灵机
图灵机图灵机,又称确定型图灵机,是英国数学家阿兰·图灵于1936年提出的一种抽象计算模型,其更抽象的意义为一种数学逻辑机,可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器。图灵的基本思想图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:在纸上写上或擦除某个符号;把注意力从纸的一个位置移动到另一个位置;
2013-10-30 23:17:54 3775
原创 计算模型总结
计算模型主要包括,图灵机、递归函数、λ演算、马尔科夫算法等。图灵机图灵机,又称确定型图灵机,是英国数学家阿兰·图灵于1936年提出的一种抽象计算模型,其更抽象的意义为一种数学逻辑机,可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器。目录 [隐藏] 1 图灵的基本思想2 图灵机的正式定义3 图灵机的基本术语4 图灵机的例子5 通用图灵机6 图灵机
2013-10-27 21:21:38 15124
原创 对算法导论中用循环不变式证明算法正确性的理解
算法导论中原文:We use loop invariants to help us understand why an algorithm is correct. Wemust show three things about a loop invariant:Initialization: It is true prior to the first iteration of the
2013-10-08 23:18:06 2997
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人