自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 TCP select与epoll

构建并发服务器,实现多个客户端同时请求服务器,可以用多进程,来一个链接fork一个进程,但是使用多进程需要大量的运算和内存空间,每个进程都有独立的内存空间,相互间的数据交换也需要用到复杂的IPC通信,代价较大,可以用I/O复用来实现多个客户端的连接请求。复用:为了提高物理设备的效率,用最少的物理要素传递最多数据时使用的技术。服务器用复用技术可以减少进程数,无论链接多少客户端,提供服务的服务器进程只有一个。服务器端复用最具代表性的实现是运用select函数。

2023-09-08 10:29:25 132 1

原创 TCP/IP协议——TCP详解

TCP提供面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(同常一个客户端一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行通信,广播和多播不能用于TCP。TCP通过以下方式提供可靠性:1,应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度保持不变。由TCP传给IP的信息单位称为报文段或段。2,当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。3

2023-08-26 14:47:40 656

原创 TCP/IP协议——UDP用户数据报协议

UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装称一个待发送的IP数据报。这与面向流字符协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没什么联系。UDP封装成一份IP数据报的格式如下:UDP不提供可靠性,它把应用程序传给IP层的数据发送出去,但是不能保证它们到达目的地。UDP首部:UDP长度指的是UDP首部和UDP数据的字节长度。该字段最小为8字节。这个UDP长度是有冗余的。

2023-07-31 17:42:56 914 1

原创 TCP/IP协议——链路层协议&网际协议

TCP/IP协议族允许运行在不同操作系统进行通信。应用程序通常是用户进程,下三层一般在操作系统内核中进行。运输层TCP提供可靠的数据通信,它的工作是把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。运输层UDP为应用程序提供一种简单的服务,只是把称做数据报的分组从一台主机发送到另一台主机,不保证能到达另一端,任何必须的可靠性由应用层提供。

2023-07-28 19:49:10 696 1

原创 配接器详解——STL源码剖析笔记

配接器(adapters)在STL组件的灵活组合运用功能上,扮演着轴承,转换器的角色,adapters这个概念事实上是一种设计模式。《Design Partterns》中对其的定义是:将一个class接口转换为另一个class的接口,使原本因接口不兼容不能合作的classes,可以一起运作。STL所提供的各种配接器中,改变仿函数接口者称为function adapter,改变容器接口者称为container adapter,改变迭代器接口者称为iterator adapter。

2023-07-13 17:14:38 94 1

原创 仿函数(函数对象)——STL源码剖析笔记

仿函数是早起命名,C++标准规格定案后采用新名称函数对象,意即具体函数性质的对象。STL的各种算法里经常用到仿函数,前几篇文章有提到,比如sort的第一个版本以operator

2023-07-11 15:57:02 61 1

原创 算法大全(涵盖70余个算法)——STL源码剖析笔记

以有限的步骤,解决逻辑或数学上的问题,这一门学科我们称之为算法。与编程最有直接关系的科目,首推算法和数据结构,数据结构亦即STL中的容器。STL算法即是将最常用的算法规范出来。广而言之,我们写的每一个程序每一个函数都是算法,因为都是解决或大或小的逻辑或数学上的问题。唯有用来解决特定问题(如排序,查找,最短路径,三点共线等等),并且获得数学上的效能分析和证明,这样的算法才具有可服用性。

2023-07-10 17:18:55 609 1

原创 关联式容器详解-stl源码剖析笔记

标准的关联式容器分为两大类,set(集合)和map(映射表),以及衍生出的multiset(多键集合)和multimap(多键映射表)。这些容器的底层结构均为红黑树,红黑树也是一个独立的容器,但不为外界使用。此外,STL还提供不在标准列表之内的关联式容器:hash table(散列表),以及以hash table为底层机制的hash_set,hash_map,hash_multiset,hash_multimap。关联式容器,每笔数据(每个元素)都有一个键值和一个实值。

2023-07-03 17:30:46 128 1

原创 序列式容器详解-stl源码剖析笔记

public;//表示目前使用空间的头 iterator finish;//表示目前使用空间的尾 iterator end_of_storage;//表示目前可用空间的尾 void insert_aux(iterator position , const T & x);} public ://全局函数 deallocate();//vector的成员函数 } reference front() {

2023-06-24 12:22:38 310 1

原创 迭代器iterators及traits详解-stl源码剖析学习笔记

如果不是为了迭代器,ListItem应该完全隐藏不曝光的,或者说,要实现List迭代器,必须对List的内部实现非常了解。如果答案是无关紧要的,那么在进行构造,拷贝,赋值等操作时,就可以采用最有效的措施,即不调用这些构造、拷贝、赋值函数,而直接进行malloc(),memcpy()等操作,这对于大规模操作频繁的容器,能显著的提高效率。总之,设计适当的相应型别,是迭代器的责任,设计适当的迭代器是容器的责任,只有容器本身,才知道该设计怎样的迭代器遍历自己,并执行迭代器的各种操作(前进,后退,取值…

2023-06-15 17:48:47 346 1

原创 空间配置器(allocator)详解-stl源码剖析学习笔记

空间配置器也就是配置空间,配置容器所需要的空间,该空间获取可以是内存,也可以是磁盘或其他存储介质。

2023-06-14 15:41:34 620 1

原创 jsoncpp下载编译注意事项 C++ json库读写文件

Visual Studio打开cmake文件,设置平台属性以及项目属性C/C++中运行库配置,注意,这里的平台配置和运行库要和后续引入的项目属性配置一致,我统一使用了win32和多线程调试DLL,不然会在后续程序引用时出现无法解析的外部符号错误(排查了很久,发现这个问题,一定要更改一致)。json数据存储在名称/值对中,名称为字符串类型,用双引号括起来,中间为冒号,然后为值,值可以是数字(整数或浮点数)、字符串(双引号中)、逻辑值(true或者false)、数组(中括号中)、对象(大括号中)、空值。

2023-06-09 12:03:51 1538

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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