- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 c++中#define, const, constexpr
以后在定义的常量调用时,只是使用对应的内存地址,不再开辟新的空间,在内存中只有一个拷贝,因此const相比#define,可以避免反复分配内存,节省空间。const的值可以在编译时确定,也可以在运行时计算。#define是预处理阶段进行处理,是一种宏定义,所以定义常量的宏是没有类型的,是在编译前即预编译阶段进行字符替换,并且由于是在预处理阶段替换所以不会有类型安全检查,系统也不会为它分配内存,存储在程序的代码段空间,实际就是给出了立即数,在运行过程中,常量在内存中会有若干个拷贝;一个语义,不会混淆。
2023-09-18 16:45:28
370
原创 带反应堆的epoll的回写服务器
前面在读取到客户端发来的数据进行处理后就直接写回客户端了,这样的做法是不严谨的。因为不一定能直接写回到客户端,因为由于客户端使用了滑动窗口的机制,可能使客户端的缓冲区已经满了,epoll 反应堆在接收到客户端的数据后,会把红黑树中值为 fd 的节点去掉或修改,重新设置 fd 的事件为写事件,当接收到客户端的可写时,在进行数据处理和回写。libevent 这个库在网络编程和高并发服务器程序开发中的使用非常的广泛,并且可以跨平台,是利用上面讲到的epoll +非阻塞的方式实现的,并且使用了大量的回调。
2023-08-01 00:28:56
80
1
原创 Linux两个线程打印输出字母,使用互斥量和条件变量
假设创建两个子线程, 第一个子线程输出所有的大写字母(A-Z),第二个子线程输出所有小写字母(a-z),每输出一个字母都要睡眠(usleep)100ms。使用互斥锁和条件变量对打印机进行保护,使得顺序和交替打印字母。
2023-07-24 19:21:48
179
sqljdbc41.jar和mysql-connector-java-5.1.13-bin.jar
2018-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人