一个TCP FIN_WAIT2状态细节引发的感慨

昨天下午跟同事讨论TCP挥手断开的细节,越发感到TCP协议真的是非常令人讨厌,这个协议已经成了人们装逼的谈资,就是因为它非常复杂,且毫无确定性可言!如果你能说出它的任何细节方面的前因后果,那你一定就是牛人了,但这其实毫无意义。 如果你阅读TCP的诸多RFC,然后对比着4.4 BSD,Linux,...

2018-07-31 10:40:00

阅读数:221

评论数:0

C++ 的单元测试工具 —— Catch

如果你平常使用 Java 语言做开发,当你听到单元测试工具的时候,你很可能马上会想起 JUnit。作为一名C++软件工程师,当我第一次打算给我的程序做单元测试的时候,我的第一想法是:有这样的工具吗?经过一段时间的搜索之后,我的反应变成了:我该用哪一个? 我在学校的时候,很少听说C++的单元测试工...

2018-07-22 20:21:52

阅读数:68

评论数:0

二叉搜索树(BST)的删除算法原理解析

二叉搜索树的删除算法主要分两种情况: 1、要删除的节点只有一个孩子(左孩子或右孩子),这种情况比较简单,只需要将该孩子连接到当前节点的父节点即可。   下面重点讲讲第二种情况: 2、第二种情况便是要删除的节点有两个孩子,这个时候的算法就比较复杂(相比较于只有一个孩子的情况)。首先我们需要找...

2018-07-21 17:48:09

阅读数:28

评论数:0

c语言中realloc()函数解析

realloc(void *__ptr, size_t __size):更改已经配置的内存空间,即更改由malloc()函数分配的内存空间的大小。 如果将分配的内存减少,realloc仅仅是改变索引的信息。 如果是将分配的内存扩大,则有以下情况: 1)如果当前内存段后面有需要的内存空间,则...

2018-07-20 14:30:27

阅读数:36

评论数:0

C++ 多态的实现及原理

C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数   1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数...

2018-07-19 16:45:50

阅读数:20

评论数:0

C++ 多态详解

前几天在网上看到这样的一个问题: 多态现在一般的用法,就是拿一个父类的指针去调用子类中被重写的方法。但我搞不懂为什么要那么做,我们直接在子类中写一个同名的成员函数,从而隐藏父类的函数不就行了么? 然后有人这样回答: 将父类比喻为电脑的外设接口,子类比喻为外设,现在我有移动硬盘、U盘以及MP3...

2018-07-19 16:41:35

阅读数:38

评论数:0

函数重写(override)与协变返回类型(covariant return type)

函数重写 在进行本文的协变返回类型(covariant return type)的讨论之前,不妨先重新温故C++关于函数重写的语法规则。协变返回类型与函数重写有着千丝万缕的联系。 首先明确函数重载(overload)与函数重写(override )之间的差异: 函数重载与函数重写 函数...

2018-07-19 15:44:52

阅读数:31

评论数:0

内存链表union类型节省内存

我在阅读《STL源码剖析》中看到关于内存组织成空闲链表的结构: union obj{ union obj* next; char client_data[1]; }; 使用union主要是为了节省空间,当我们以一个指针得到该块内存时,可以完全使用该块内存。假如我们用resu...

2018-07-18 21:38:20

阅读数:17

评论数:0

云计算三种服务模式SaaS、PaaS和IaaS及其之间关系(顺带CaaS、MaaS)

云计算架构图 很明显,这五者之间主要的区别在于第一个单词,而aaS都是as-a-service(即服务)的意思,这五个模式都是近年来兴起的,且这五者都是云计算的落地产品,所以我们先来了解一下云计算是什么。 1、云计算是什么? 云计算(cloud computing)是基于互联网的相关服...

2018-07-17 13:45:30

阅读数:61

评论数:0

Redis源码分析(三)---dict哈希结构

        昨天分析完adlist的Redis代码,今天马上马不停蹄的继续学习Redis代码中的哈希部分的结构学习,不过在这里他不叫什么hashMap,而是叫dict,而且是一种全新设计的一种哈希结构,他只是通过几个简单的结构体,再搭配上一些比较常见的哈希算法,就实现了类似高级语言中HashM...

2018-07-12 21:19:34

阅读数:22

评论数:0

redis C语言客户端---hiredis的安装与使用

hiredis的安装与使用1. 介绍hiredis是redis数据库的简约C客户端库,是redis官方的C语言客户端,支持所有命令(command set),管道(pipelining),时间驱动编程(event driven programming)。github地址:https://githu...

2018-07-11 20:57:35

阅读数:40

评论数:0

结构体字节对齐,pragma pack,__attribute__(packed)

程序编译器对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏   蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式。例如我们设置结构体的对齐方式:struct student{int age;char c;};对于以上结构体,默认用sizeof输出大小为8字...

2018-07-05 17:01:53

阅读数:19

评论数:0

【排序算法】插入排序(C++实现)

插入排序的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。常见的插入排序有插入排序(Insertion Sort),希尔排序(Shell Sort),二叉查找树排序(Tree Sort),图书馆排序(Library Sort),P...

2018-07-02 19:52:22

阅读数:47

评论数:0

c++问题集

1. C 和 C++ 区别    2. const 有什么用途    主要有三点:      1:定义只读变量,即常量       2:修饰函数的参数和函数的返回值       3: 修饰函数的定义体,这里的函数为类的成员函数,被const修饰的成员函数代表不修改成员变量的值 3. 指针和引用的区...

2018-07-02 14:16:03

阅读数:41

评论数:0

算法-求二进制数中1的个数

问题描述任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,下面介绍了几种方法来实现这道题,相信很多人可能见过下面的算法,但我相信很少有人见到本文中所...

2018-07-02 10:43:47

阅读数:24

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭