与网络编程有关的部分内核参数

      几乎所有的内核模块,包括内核核心模块和驱动程序,都在/proc/sys 文件系统下提供了某些配置文件以提供用户调整模块的属性和行为。通常一个配置文件对应一个内核参数,文件名就是参数的名字,文件的内容是参数的值。 我们可以通过命令sysctl -a 查看所有这些内核参数。下面说明与网络编...

2018-09-14 15:55:54

阅读数 51

评论数 0

HTTP中GET和POST的区别

       我们通常在讨论 GET vs POST 的时候,实际上讨论的是 specification,而不是 implementation。什么是 specification?说白了就是相关的 RFC。implementation 则是所有实现了 specification 中描述的代码/库/...

2018-09-02 10:47:28

阅读数 100

评论数 0

C++的String类

String类        string类本不是STL的容器,但是它与STL容器有着很多相似的操作,可以被看成是以字符为元素的一种容器。标准的string类提供了STL容器接口,如begin()、end()。 在C++中使用string类,先必须包含头文件#include&l...

2018-09-01 13:08:07

阅读数 38

评论数 0

libevent 总结

Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库。            主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 *BSD 和 Ma...

2018-08-18 18:39:44

阅读数 64

评论数 0

进程间通信的五种方式

进程间通信的意思就是在不同进程之间传递信息。它是一组编程接口,让程序员协调不同进程,使能够相互传递消息。 IPC目的 1)数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。 2)共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立...

2018-08-17 14:07:57

阅读数 331

评论数 0

哈希简介

Hash主要应用于数据结构中和密码学中。 用于数据结构时,主要是为了提高查询的效率,这就对速度比较重视,对抗碰撞不太看中,只要保证hash均匀分布就可以。 在密码学中,hash算法的作用主要是用于消息摘要和签名,换句话说,它主要用于对整个消息的完整性进行校验。 1. 数据结构 使用Hash...

2018-08-16 23:19:50

阅读数 182

评论数 0

C语言进程的内存分区、变量作用域和生存期

1.内存分区        C源代码进过预处理、编译、汇编和链接4步生成一个可执行程序。         程序在没有运行之前,也就是说程序没有被加载到内存前,可执行程序内部已经分好3段信息,分别是代码区(text)、数据区(data)和未初始化数据区(bss)三个部分。(部分人直接把data和b...

2018-08-16 21:34:04

阅读数 61

评论数 0

STL容器比较和基本操作

stl不同容器的优缺点 verctor vector类似于C语言中的数组,它维护一段连续的内存空间,具有固定的起始地址,因而能非常方便地进行随机存取,即 [] 操作符,但因为它的内存区域是连续的,所以在它中间插入或删除某个元素,需要复制并移动现有的元素。此外,当被插入的内存空间不够时,需要重新...

2018-08-15 18:07:24

阅读数 49

评论数 0

面向对象思想、特征等

面向对象思想 面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。 起初,“面向对象”是专指在程序设计中采用封装、继承、多态和抽象等设计方法。可是目前面向对象的思想已经涉及到软...

2018-08-15 17:38:58

阅读数 149

评论数 0

常见数据结构的应用场景

常见数据结构应用场景 通用数据结构 可以简单的按照速度将通用数据结构划分为:数组和链表(最慢),树(较快),哈希表(最快)。增、删、改、查是四大常见操作,不过其实可以浓缩为两个操作:增和查。删除操作和和修改操作都是建立在查找操作上的,所以完美的数据结构应该是具有较高的插入效率和查找效率。 通...

2018-08-15 13:18:09

阅读数 109

评论数 0

B-tree与B+tree

B-tree B-tree是一种适用于外查找的树,它是一种平衡的多叉树,称为B-树(或B树、B_树)。 一棵m阶B树是一棵平衡的m路搜索树。它或者是空树,或者是满足下列性质的树: 1、根结点至少有两个子女; 2、每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 &amp...

2018-08-12 12:46:30

阅读数 438

评论数 0

BSTree、AVLTree、RBTree、

二叉排序树 BSTree二叉排序树,又叫二叉搜索树。                                          性质:二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值; (2)若右子树不空...

2018-08-10 23:49:39

阅读数 100

评论数 0

C++的cosnt、static、宏定义、内联函数

const C++中const的用法,C++是怎么处理的【在编译期间对于使用常量的地方用常量初始化的值直接替换】 ①const是定义常量的,不能做左值被修改; 必须初始化; ②const常量的初始值如果是明确的值,那么常量在编译期间被常量初始值替换。 ③const修饰常变量(C语言)时,不能...

2018-08-09 16:19:58

阅读数 122

评论数 0

C和C++的区别

C与C++的区别: 1数据类型:bool类型。C语言没有 2函数参数问题。 1、无名的函数形参。2、函数的默认参数(允许函数参数被初始化) 3.inline函数。C语言只有宏 4.函数重载:函数名相同,参数形式和参数个数不同。C语言没有 5.c和c++代码的相互调用。C调用C++、和C+...

2018-08-09 11:38:25

阅读数 35

评论数 0

new和malloc的区别

主要区别如下: 1.new分配在自由存储区,malloc分配在堆区。甚至可以不为对象分配内存!定位new new (place_address) type。 不分配任何的内存,它只是简单地返回指针实参,然后右new表达式负责在place_address指定的地址进行对象的初始化工作。 2.返...

2018-08-09 09:51:24

阅读数 31

评论数 0

TIME_WAIT过多的解决办法

执行主动关闭的那端经历了这个状态,并停留MSL(最长分节生命期)的2倍,即2MSL。 TIME_WAIT存在的两个理由: 1 可靠的实现TCP全双工连接的终止 2 允许老的重复的分节在网络上的消逝 第一个:如果客户端不维持TIME_WAIT状态,那么将响应给服务端一个RST,该分节被服务器...

2018-08-09 09:44:28

阅读数 1219

评论数 0

TCP相关面试题

Q1:TCP报文长度是在TCP三次握手中那一次确定的? 这个是关于TCP报文的最大报文段长度mss的相关问题。在TCP连接的前两次握手中(SYN报文中),通信双方都会在选项字段中告知对方自己期待收到最大报文长度(mss值),以双方两个SYN报文中最小的mss最为本次数据传输的mss值。通信双方以...

2018-08-08 22:55:52

阅读数 357

评论数 0

TCP和UDP、流量控制和拥塞控制

URL访问网站时的网络传输全过程,归纳起来就是: 首先要通过域名找到IP,如果缓存里没有就要请求DNS服务器;得到IP后开始于目的主机进行三次握手来建立TCP连接;连接建立后进行HTTP访问,传输并获取网页内容;传输完后与目的主机四次挥手来断开TCP连接。 整个过程基本分做下面几个部分: 1...

2018-08-08 18:32:31

阅读数 3160

评论数 0

快排和归并排序的非递归实现

快速排序:是一种交换排序,当完全有序时退化为冒泡排序,时间复杂度为O(n^2)。正常情况下为O(nlogn). 非递归:其实就是手动利用栈来存储每次划分后两个序列的起始点和终止点。栈非空时获取栈顶两个值:起始点和终止点,然后再根据两个点划分获得中轴,将两个序列中没划分完的起始点和终止点入栈。重复...

2018-08-07 20:21:03

阅读数 49

评论数 0

C++实现迭代器模式

迭代器模式:提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示(将对聚合对象的遍历封装到一个类中进行)。属于行为型模式 优点: 1、它支持以不同的方式遍历一个聚合对象(容器)。 2、迭代器简化了聚合类。 3、在同一个聚合上可以有多个遍历。 4、在迭代器模式中,增加新的聚合类...

2018-08-07 11:57:33

阅读数 194

评论数 0

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