- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 C++11静态局部变量的初始化时机
#include <iostream>using namespace std;// 基于C++11静态局部变量的懒汉式单例实现class Singleton{public: static Singleton *GetInstance() // 如果多次调用此函数,单例类的初始化也只会执行一次(即只会为这个静态局部对象分配一次内存空间) { static Singleton locla_s; return &locla_s; } templ.
2021-03-15 10:46:19
2189
原创 最新Unicode版本(13.0, 2020-03-10)中包含的字符总数
目前最新版本的Unicode版本(13.0)中,包含的字符总数已达143859个。
2020-11-24 09:54:40
1977
原创 如何让输出环境(系统环境)的字符集编码格式 匹配 应用程序内存中的执行字符集编码格式
#include <iostream>#include <string>int main(){ std::string str = "这是中文"; std::string *sp = &str; std::cout << str << std::endl;}以上这段代码的输出为:在更改执行字符集编码格式为UTF-8之后:#include <iostream>#include <str...
2020-11-21 17:51:49
259
原创 使用Linux socketAPI 实现图片的网络传输
服务端:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<unistd.h>#include <arpa/inet.h>#define MA
2020-05-24 00:11:54
762
1
转载 C++:new operator、 operator new 与 placement new的区别
转载自:https://www.cnblogs.com/luxiaoxun/archive/2012/08/10/2631812.html
2020-05-07 13:36:24
234
原创 正确使用智能指针的基本规范
尽量不要混合使用普通指针和智能对同一块动态内存进行管理和使用 不要使用相同的内置指针值初始化或reset多个智能指针,否则会造成多个独立的智能指针共同管理和使用同一动态内存 不能delete get()返回的指针 如果使用了get()返回的指针,那么必须记住当最后一个对应的智能指针销毁后,get()返回的普通指针也将失效 如果使用智能指针管理的资源不是动...
2020-04-15 15:44:38
337
原创 C++中5种类型的迭代器
类似容器,迭代器也定义了一组公共操作。一些操作所有迭代器都支持,另外一些只有特定类别的迭代器才支持。迭代器是按它们所提供的操作来分类的,这种分类形成了一种高低层次。除了输出迭代器之外,一个高层类别的迭代器支持低层类别迭代器的所有操作。C++标准指明了范型和数值算法的每个迭代器参数的最低类别。对每个迭代器参数而言,其能力必须与规定的最低类别至少相当。向算法...
2020-04-14 15:17:22
699
原创 C++标准库头文件
概念库 <concepts>(C++20 起) 基础库概念 协程库 <coroutine>(C++20 起) 协程支持库 工具库 <cstdlib> 通用工具:程序控制、动态内存分配、随机数、排序与搜索 <csignal> 信号管理的函数与宏常量 ...
2020-04-06 20:54:48
409
原创 简述线程函数与进程函数之间的相似之处
简要说明:fork创建一个新的进程控制流,pthread_create创建一个新的线程控制流 exit使调用进程从其控制流中退出,pthread_exit使调用线程从其控制流中退出 waitpid使父进程获得子进程的退出状态,pthread_join可以使进程中的任一线程获得其他线程的退出状态,两者均是阻塞的 atexit用于注册进程的终止处理程序,pthread_cancel_p...
2020-04-02 15:27:34
246
原创 如何给Makefile指定自己想用的gcc/g++版本(编译开源项目acl-dev/acl库时的经历)
最近在Github上找到了一个很不错的C++服务器框架库,所以Clone了一份想试试,下图是该项目首页:项目主持人也给出了相应平台的库编译方式(此处只涉及其常用的三个库):以上是三库合一的编译方式,当然也可独自编译。如果这样,需要注意一点:因为 lib_acl 是最基础的库,而 lib_protocol 依赖于 lib_acl,lib_acl_cpp 依赖于 lib_proto...
2020-03-31 18:18:54
8450
转载 redis与lua的结合使用
如何使用脚本实现redis命令文中涉及:创建并修改Lua坏境 Lua坏境协作组件 伪客户端 lua_scripts字典 EVAL命令 EVALSHA命令 脚本管理命令 脚本复制
2020-03-28 11:09:27
232
转载 C++应用总结
主要说明C++的一些资源与应用(转载)原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm
2020-03-25 22:51:02
277
原创 在Linux/Unix环境中,一个C程序是如何启动和终止的
_exit、_Exit、exit三个函数都用于正常终止一个程序,但前两者和exit有一定区别:_exit和_Exit调用之后立即进入内核exit调用之后会先执行一些清理处理,或执行一些终止处理程序(这些程序调用atexit来登记注册),然后再返回内核...
2020-03-23 22:00:41
488
原创 POSIX标准定义的必需和可选的头文件
ISO C标准定义的头文件POSIX标准定义的必需头文件(由于POSIX包含了ISO C标准库函数,所以POSIX标准定义的必需头文件也包含上图中的各个头文件)POSIX标准定义的可选头文件...
2020-03-20 10:01:10
389
原创 Linux打开文件的内核数据结构
上图表现了进程打开的标准输入与标准输出文件的内核数据结构(可用于所有I/O)。值得注意的是:在Linux中没有使用v-node节点,而是直接使用了通用的i-node节点结构。这三张表(进程文件描述符表,打开文件表,i-node节点表)的关系及其表项内容也在上图中表现出来了。需要注意一点:这种表间关系对于在不同进程之间共享文件的方式非常重要。...
2020-03-19 13:13:04
672
原创 MySQL InnoDB 事务隔离级别为Serializable时的情况
左边的客户连接,先开始一个事务,右边的客户连接,后开始一个事务。当左边事务还未提交之前,右边事务是无法进行的,如图会报错.在左边事务提交之后,右边事务可以成功执行。Serializable是最严格的隔离级别。在Serializable隔离级别下,所有事务按照次序依次执行,因此,脏读、不可重复读、幻读这些数据不一致的情况都不会出现。虽然Serializable...
2020-03-17 14:58:36
332
1
原创 Linux高性能服务器编程:I/O复用的高级应用二(聊天室程序)服务端解析
/* 群聊服务端程序: * 使用poll同时管理监听socket和连接socket * 并且使用牺牲空间换取时间的策略来提高服务器性能 * 注意:此服务器程序没有使用到并发的编程技巧 */#define _GNU_SOURCE 1#include <stdio.h>#include <libgen.h>#include <unistd.h&...
2020-03-12 10:36:25
512
转载 C++中typename关键字的使用方法和注意事项
一篇非常非常好的博文,追根朔源,值得学习!转载自:https://blog.csdn.net/vanturman/article/details/80269081
2020-03-06 15:25:06
165
转载 与网络相关Linux高级I/O函数
sendfile、 mmap、 splice、tee等Linux高级I/O函数学习自:https://www.cnblogs.com/kex1n/p/7446291.html
2020-03-05 17:08:40
116
原创 dup和dup2的功能及区别
#include <stdio.h>#include <sys/socket.h>#include <errno.h>#include <unistd.h>/* dup/dup2 test case. */int main(){ int sockfd = socket(AF_INET, SOCK_STREAM, 0); /...
2020-03-05 12:47:57
971
原创 C++关键字:typename与class在声明模板的类型参数时的区别
typename关键字也可以使用class关键字替代,它们没有任何区别。C++ 早期对模板的支持并不严谨,没有引入新的关键字,而是用 class 来指明类型参数,但是 class 关键字本来已经用在类的定义中了,这样做显得不太友好,所以后来 C++ 又引入了一个新的关键字 typename,专门用来定义类型参数。不过至今仍然有很多代码在使用 class 关键字,包括 C++ 标准库、一些开源程...
2020-03-04 20:53:24
763
原创 Linux-ELF可执行目标文件内容 & Linux进程内存映像(程序数据在内存中的位置)
可见,ELF文件中有一部分并没有加载到内存中(符号表和调试信息)。
2020-03-01 15:05:13
437
原创 TCP字节流的概念理解
UDP协议为应用层提供不可靠、无连接和基于数据报的服务。所以,使用UDP协议的应用程序通常要自己处理数据确认、超时重传等逻辑。而TCP协议则完全相反,为应用层提供可靠的、面向连接的和基于流的服务。字节流服务和数据报服务两者的区别对应在实际编程中,则体现为通信双方是否必须执行相同次数的读写操作。当然了,这也只是表现形式。当发送端应用程序连续执行多次写操作时,TCP模块先将这些数据...
2020-01-18 11:37:55
5945
原创 accept()系统调用接受一个异常的连接,其是否还能调用成功,测试
#include <stdio.h>#include <libgen.h>#include <stdlib.h>#include <netinet/in.h>#include <string.h>#include <arpa/inet.h>#include <assert.h>#include &l...
2020-01-10 18:13:05
375
原创 测试listen(int sockfd,int backlog)中backlog参数对listen调用的实际影响
#include <stdio.h>#include <signal.h> /* --->signal() */#include <libgen.h> /* --->basename() */#include <stdlib.h> ...
2020-01-10 18:05:22
392
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人