- 博客(11)
- 收藏
- 关注
原创 雪花算法的介绍及实现
此部分是雪花算法的关键部分(是固定的41位),因为时间是唯一且单调递增的,以时间作为关键部分,理论上ID便不会重复(但计算机上的时间计量却可能不是唯一且单调递增的,存在时间回跳或前跳现象),时间戳精度为毫秒。std::chrono::high_resolution_clock: 提供最高精度的计时周期(可能是steady_clock或者system_clock的typedef)std::chrono::duration_cast<std::chrono::milliseconds>();
2023-04-12 19:56:01
353
原创 C++ 的一些小知识点
3.const修饰的成员方法:1成员方法函数里不能修改类对象,2const方法不能调用非const方法,3,可以使用或改变static修饰的变量的值(因为static修饰的变量不属于对象,是类里的变量)、在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放(比真正的全局变量短)。C中,用const修饰的变量本质上还是一个变量,可以通过指针指向该变量的地址来修改被const修饰的变量的值,不一定要初始化。
2023-03-08 19:44:17
114
原创 多线程并发服务器的实现
attr:线程的的属性,一般置为NULL,表示默认属性;创建线程,对通信模块的调用。第三个是回掉函数,线程所要执行的功能;4.通信模块:read函数将读取的数据保存在数组中。第四个是回掉函数的参数;5.主函数:调用函数完成套接字的创建等基本步骤。无阻塞回收结束的子进程的函数。1.多线程服务器的实现是在多进程服务器的基础上增改了一些功能。阻塞回收结束的子进程的函数。1.套接字的创建,ip地址初始化。参数说明:thread:线程号。
2023-02-26 14:55:35
290
原创 TCP并发服务器的创建
2·使用SIGCHLD信号完成对子进程的回收可以避免父进程阻塞等待而不能执行其他操作,只有当父进程收到SIGCHLD信号之后才去调用信号捕捉函数完成对子进程的回收,未收到SIGCHLD信号之前可以处理其他操作。1·子进程退出后,内核会给它的父进程发送SIGCHLD信号,父进程收到这个信号后可以对子进程进行回收。2.对僵尸进程的处理,以及子进程和父进程的顺序,父进程监听的时候子进程的通信暂时停止,子进程在用通信时,父进程监听停止。关闭套接字的写端和读端;Shutdown(套接字的返回值,0);
2023-02-24 19:36:31
313
原创 简单TCP服务器的建立
参数:socked创建套接字的返回值,sockfd必须是指向执行listen()调用以后的监听套接字。完成listen()后,socket()变成监听socket(listen socket);Af:地址族, 一般可用:PF_INET //internet协议。int listen(socket的返回值,同时可连接的数量);如果创建成功,返回创建好的套接字的文件描述符。
2023-02-21 22:37:19
1028
原创 进程间的通信
ftok的第一个参数是一个文件的路径名称.一般在应用系统中,使用$HOME或者应用系统的根目录作为它的值.这样产生的key_t就不会与系统中其他的软件和系统的相同了,从而避免造成冲突. (当以文件为第一个参数时,如果文件的大小发生变化,生成的Key也会响应变化,应注意 )第一个参数是共享内存的id,第二个参数一般写NULL,代表让系统自己分配空间,第三个参数:0代表可读可写,SHM_RDONLY代表只读。第二个参数是创建的共享内存的大小,第三个参数共享内存的权限。3.映射共享内存,得倒共享内存的地址。
2023-02-21 09:23:35
126
原创 进线程知识点2
线程1. 定义:1.由于进程的虚拟地址空间是私有的,因此进程切换开销很大;2. 而线程是为了提高系统的性能,引入的轻量级进程 3.一个进程中可以并发多个线程,每个线程执行不同的任务 。2. 线程和进程的区别和关系:区别: 1.进程代表资源分配的最小单位线程是最小的调度单位 2. 每个进程有自己的内存和资源,一个进程中的线程会共享这些内存和资源。 3.子进程无法影
2023-02-19 16:52:13
88
原创 I/O进线程基础知识1
.fgets函数和fgetc函数 fgets:从文件中读入字符串;fgetc:从文件读入一个字符1.fgets--char *Fgets(char * a,sizeof(a),FILE *fp);//第一个位置为要输入到那里,容器所在位置;第二个为容器的内存大小;第三个就是要从哪个文件输入(流指针);
2023-02-14 23:12:29
206
原创 顺序表的创建以及功能的实现
Memset()这个就是用来初始化的函数,后面的三个参数分别为:要初始化空间的首地址;要初始化为多少;要初始化的空间大小;
2023-02-11 18:40:55
548
原创 C语言的错误总结
2.4.1内存的分配:1.静态内存区(编译时计算机自动分配):存储静态全局变量,静态局部变量,全局变量;2.动态内存区:(运行时分配)包括栈区和堆区;2.1:栈区:存储函数的形参和局部变量(运行完自动释放)【编译器管理】堆区:自己通过指定的函数所分配的空间,需要自己手动分配【free()】,这些不会自动释放.【程序员管理】
2023-02-05 23:49:41
128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人