- 博客(18)
- 收藏
- 关注
原创 go_test的使用
示例函数以Example开头输出:通过注释检查标准输出。执行:只有当包含注释时,在go test执行时才会运行。否之只会编译,不去运行基准测试(Benchmarking)在Go语言中是一种用于测量代码性能的测试方法。它通常用于评估代码的运行时间和资源消耗,帮助开发者找到性能瓶颈并优化代码。基准测试的函数以Benchmark开头,放在_test.go文件中,与普通的测试函数和示例函数放在一起。下面是详细介绍如何编写和运行基准测试。基准测试必须以Benchmark开头,必须接受一个类型的参数。
2024-07-20 16:20:52
351
原创 服务器开发问题-EPOLLIN、EPOLLOUT触发情况
初始连接完成当你使用非阻塞模式调用函数来连接远程主机,如果返回并且 是 ,这意味着连接正在进行中。此时,可以通过监视 事件来检测连接何时完成。当连接完成时,套接字会触发 事件。写缓冲区可用在非阻塞套接字上,如果你之前的 操作因为写缓冲区已满( 或 错误)而无法完成,你可以监视 事件。当缓冲区有空间可写时, 事件会被触发,这时你可以继续写数据。客户端主动断开连接客户端意外断开连接服务器发送数据时发现连接关闭:注意事项EPOLLOUT 触发频率:EPOLLOUT 事件非常频繁地触发,因为只要有可用的写
2024-07-07 17:12:43
602
原创 服务开发问题-条件变量、锁、信号量
锁信号量条件变量定义用于控制对共享资源的独占用于控制对共享资源的访问数量用于在特定条件满足时通知等待的线程特点阻塞其他试图访问同一资源的线程计数器机制,限制并发访问线程可以等待条件并在条件满足时被唤醒;必须与锁配合使用使用使用sem_wait和sem_post控制访问注意事项型号量是有记录功能的。可以先post()使信号量值+1,之后再wait()条件变量没有记录值的功能。如果先signal()再wait()是没用的。wait()是把当前线程放入阻塞队列。
2024-07-07 00:01:15
276
原创 服务器开发——setsockopt函数
*** level:选项所在的协议层。例如,SOL_SOCKET 表示套接字层,IPPROTO_TCP 或 IPPROTO_IP 表示 TCP 或 IP 层。* optname:要设置的选项的名称。每个协议层都定义了自己的一组选项。* optval:指向一个变量的指针,该变量包含选项的新值。这个变量的类型取决于 optname 的值。* @return 成功(0);
2024-06-03 22:44:08
830
原创 数据完整性保证
在计算机项目开发中,数据的完整性和持久性是至关重要的。比如:在多进同时对日志文件进行写入的时候,如何避免日志信息的混乱,进程A写入的信息被进程B写入的信息覆盖。以及在电脑断电的情况下,尽力避免数据的丢失。
2024-05-28 18:47:02
1016
原创 信号-sigset_t,sigaction
是一个结构体,用于指定当特定信号到达时应该如何处理它。这个结构体允许用户定义一个信号处理函数,以及在调用信号处理函数期间需要阻塞的信号集。它提供了比传统的signal()函数更多的控制和灵活性。这是指向信号处理函数的指针。该函数的类型为,其中signum是被捕获信号的编号。可以设置为SIG_IGN忽略信号,或SIG_DFL使用默认的信号处理方式。这是另一种信号处理函数的指针,类型为。与sa_handler不同,提供了更多的信息,例如信号的额外数据(通过siginfo_t。
2024-05-26 16:46:31
742
原创 易错点 — 字符串字面量 vs. 字符数组
当您使用 char* str = “abcdefg”;语法时,。这个字符串字面量在大多数现代编译器的实现中是存储在程序的中的。这意味着,虽然您可以改变指针 str(让它指向其他地址),但您不能修改它所指向的数据(即 “abcdefg”),尝试修改如 str[0] = ‘x’;将导致运行时错误,如段错误(Segmentation Fault)。而当您使用 char str[] = “abcdefg”;
2024-05-16 23:35:35
240
原创 多进程开发
l(list): 参数列表地址,一空指针结尾v(vector): 指针数组p(path):按照PATH环境变量指定的目录搜索文件e(environment):存有环境变量字符串地址的指针数组的地址。
2024-03-21 00:28:19
984
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人