- 博客(28)
- 收藏
- 关注
原创 C++分发器
以调用某个算法为例,该算法有一个确定的函数Process,其参数不确定,返回值确定为bool类型,当然Process的返回值也可用模板进行替换,实现更灵活的返回值。
2025-03-03 10:54:35
200
原创 C++日志Logger类
一个支持多个日志级别的单例Logger类,日志文件按日期轮换,以及可定制的错误回调。日志可以是写入控制台和文件,时间戳精确到毫秒。
2025-02-17 13:22:38
251
原创 Linux网络编程-9.HTML,CSS基础
9.1 HTMLhttp://www.w3school.com.cn/html/index.asphttp://www.runoob.com/HTML简介HTML,Hyper Texture Markup Language,超文本标记语言在计算机中以.html、.htm作为扩展名可以被浏览器访问, 就是经常见到的网页HTML特点语法非常简洁、比较松散,以相应的英语单词关键字进行组合html标签不区分大小写大多数标签是成对出现的, 有开始, 有结束<html><
2024-02-02 16:16:58
1079
原创 Linux网络编程-7.libevent库
7.1 libevent基本概念libevent是干什么的开源的库,提高开发效率封装了socket通信封装了IO多路转接精简,专注于网络,高性能事件驱动libevent库的安装官方网站:http://libevent.org源码下载:1.4.x – 适合源码学习2.x源码包的安装:./configure检测安装环境生成makefilemake编译源代码生成库、可执行文件sudo make install将数据拷贝到系统中默认目录
2024-01-20 10:11:01
836
原创 Linux网络编程-6.本地套接字
6.1 广播服务器创建套接字 - socketfd绑定服务器IP和端口初始化客户端IP和端口信息:struct sockaddr_in cli;cli.sin_family = AF_INET;cli.port = htons(port);inet_pton(AF_INET, "xxx.xxx.xxx.255", &cli.sin_addr.s_addr);发送数据:sendto(fd, buf, len, 0);设置广播权限setsockopt();
2024-01-18 17:13:48
1050
原创 Linux网络编程-4. I/O多路转接
4.1 I/O多路转接I/O多路转接技术:先构造一张有关文件描述符的列表,将要监听的文件描述符添加到列表中然后调用一个函数,监听该列表中的文件描述符,知道这些描述符中的一个进行I/O操作时,该函数才返回– 该函数为阻塞函数– 函数对文件描述符的检测操作是由内核完成的在返回时,他告诉进程有多少(哪些)描述符要进行I/O操作使用多路转接技术:select、poll、epoll第一种:select、poll只能确定数量第二种:epoll不仅能确定数量、而且能确定是哪一个4.2
2024-01-12 15:06:19
845
1
原创 Linux网络编程-5.UDP通信
5.1 UDP通信流程由于面向无连接通信,所以在收发数据时通过IP和端口Server:// 1. 创建套接字int fd = socket(FA_INET, SOCK_DGRAM, 0);// 2. 绑定IP和端口bind();// 3. 通信// 接收数据:recvfrom(); // 会保存client的IP和port// 发送数据:sendto();// 4. 关闭套接字close(fd);Client:// 1. 创建套接字int fd = socket(AF_
2024-01-12 15:05:43
1055
1
原创 Linux网络编程-3.TCP并发服务器
3.1 TCP多进程并发服务器共享:读时共享,写时复制文件描述符内存映射区父进程:等待接受客户端连接有连接– 创建一个子进程关闭通信的文件描述符子进程:通信关闭监听的文件描述符子进程资源回收:wait()/waitpid()signalsignal()sigaction()SIGCHLD限制:硬件文件描述符上限(1024)3.1.1 多进程伪代码void recyle(int num){ whiel(waitpid(-1,
2024-01-11 15:35:53
439
1
原创 Linux网络编程-2.TCP通信
2.socket编程2.1 socket编程基础socket网络通信的函数接口封装了传输层协议– TCP– UDP2.1.1 socket套接字创建一个套接字得到的是一个文件描述符套接字创建成功,得到一个文件描述符fdfd操作的是一块内核缓冲区默认是阻塞状态...
2024-01-10 08:45:09
920
1
原创 Linux程序设计-7.线程同步
7. 线程同步线程同步:协调步骤,顺序执行7.1 销毁并初始化一个锁pthread_mutex_init()包含头文件:#include <pthread.h>函数原型:int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);参数说明restrict约束该块内存区域对应的数据,只能通过后面的变量进行访问和修
2024-01-08 10:37:16
1036
1
原创 Linux程序设计-6.线程
6. 线程LWP: light weight process 轻量级的进程,本质仍是进程(Linux环境下)进程:独立空间地址,拥有PCB线程:也有PCB,但是没有独立的地址空间(共享)区别:在于是否共享空间地址Linux下:线程:最小的执行单位进程:最小的分配资源单位,可以看成是一个线程的进程...
2024-01-07 23:37:52
877
1
原创 Linux程序设计-4.进程通信
4. 进程通信4.1 管道4.1.1 创建管道pipe()帮助手册man 2 pipe包含头文件:#include <unistd.h>函数原型:int pipe(int pipefd[2]);函数说明:pipefd[0]:为管道的读取端pipe[1]:为管道的写入端。属于半双工通信,管道大小512*8参数说明pipefd管道的文件描述符return成功:0失败:-1,并设置errno示例:#include <std
2022-02-15 22:58:30
199
原创 Linux程序设计-3.进程控制
3. 进程控制3.1 环境变量3.1.1 获取环境变量getenv()帮助手册:man 3 getenv包含头文件:`#include <stdlib.h>函数原型:char *getenv(const char *name);参数说明name环境变量return成功:环境变量的值失败:NULL3.1.2 修改或添加环境变量setenv()帮助手册:man 3 setenv包含头文件:`#include <stdlib.
2022-02-13 21:00:31
692
原创 Linux程序设计-2.文件和目录
2. 文件和目录2.1 文件2.1.1 获取文件状态stat()帮助手册:man 2 stat包含头文件:#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>函数原型:int stat(const char *pathname, struct stat *statbuf);参数说明pathname文件名statbuf文件状态结构体re
2022-02-12 10:17:07
819
原创 Linux程序设计-1.文件I/O
1. 文件I/O1.1 打开和可能创建一个文件open()帮助文档:man 2 open包含头文件:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>函数原型:int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);参数说明
2022-02-11 11:37:51
709
原创 Linux中gcc编译流程,库的制作,makefile的编写以及gdb调试
1. gcc编译1.1 gcc编译流程GCC 编译器在编译一个C语言程序时需要经过以下 4 步:将C语言源程序预处理,生成.i文件。预处理后的.i文件编译成为汇编语言,生成.s文件。将汇编语言文件经过汇编,生成目标文件.o文件。将各个模块的.o文件链接起来生成一个可执行程序文件。参数说明-o file生成目标file文件-E预处理后就停止,不会编译,默认输出到终端-S编译之后就停止,不会汇编,生成汇编代码-c执行汇编之后就停止,不会链接,生
2022-02-10 15:45:05
1340
原创 vim常用命令
vim教程:vimtutot1. 命令模式快捷键1.1 光标的移动快捷键说明k上j下h左l右w移动到下一个单词首0行首$行尾gg文件头G文件尾ngg 或 nG移动到第n行1.2 删除内容快捷键说明x删除光标所在的字符dw删除光标位置开始的一个单词d0删除光标位置到行首d$删除光标位置到行尾D删除光标位置到行尾dd删除光标所在行ndd
2022-02-09 20:21:28
688
原创 Linux常用命令
1. 查看历史命令history [option]2. 查看文件信息(list)ls [option] [dir/file]帮助文档:man ls常用参数参数解释-l显示详细信息-a显示所有文件-A同 -a ,但不列出 “.” (当前目录) 及 “…” (父目录)-R递归显示子目录的信息-h便于阅读-r将文件以相反次序显示(原定依英文字母次序)-t将文件依建立时间之先后次序列出-F在列出的文件名称后加一符号;例如可执行
2022-02-08 16:50:58
831
原创 Linux 启动smb服务器,windows连接smb 服务器
在centos中启动smb服务器,在windows10中连接smb服务器1.安装smb服务器yum install -y samba2.编辑配置文件2.1 备份配置文件备份默认的配置文件,以免配置错误。cp /etc/samba/smb.conf /etc/samba/smb.conf.bak2.2 修改配置文件然后在/etc/samba/smb.conf里面插入以下一段代码:[share] # share为文件夹名字comment=Temporary file spacepath=/
2021-11-09 15:46:15
2543
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人