摘要:背景 在总结socket编程时,如果不考虑到并发问题,服务器与客户端的交互逻辑应该是: 服务器侦听本地端口上的连接请求(listen); 客户端向正在被侦听的服务器端口发起连接请求(connect); 服务器接收到客户端的连接请求,并自动将其加入到连接队列; 服务器从连接队列取出第一个连接并建立新连
阅读全文
摘要:背景 调试linux程序一般有两种,一种是检查程序的日志输出,但如果问题与IO有关就不能通过日志获得调试信息了; 虽然gdb不常用且命令复杂,但却是不可或缺呀。 常用调试命令 分类 序号 命令 说明 运行 1 r run简写,运行程序,遇到断点暂停 2 c continue简写,继续执行直到下一个断
阅读全文
摘要:背景 现在工作上正在做的是,基于嵌入式设备的web服务开发,这里只对整个服务器框架作一个宏观概述,不涉及具体业务。 技术点 服务器:boa 前端:html, css, javascript 服务器开发模式:CGIC库& C++编程语言 数据库:sqlite3 & 内存数据库(如redis) 数据流
阅读全文
摘要:背景 之前在linux下手写c语言日志库的时候,遇到日志内容无法及时刷新的情况,百思不得其解;最后查资料才知道是默认的缓冲区设置的问题。‘ 与之相关的缓冲区设置函数有setbuf和setvbuf 分析 缓冲区分类:1.行缓冲 2.全缓冲 3.无缓冲 行缓冲特点是: 默认大小:1024字节; 遇换行符
阅读全文
摘要:背景 封装日志API供平时代码学习使用,顺便学习一下相关的知识点: 变参函数 时间的格式化输出 c语言版本 log.h #ifndef _LOG_H_ #define _LOG_H_ #include <stdarg.h> #include <stdio.h> #include <time.h> #
阅读全文
摘要:背景 个人vim显示风格,以及一些控制命令的备忘。 系统信息: Linux debian9 4.9.0-7-amd64 #1 SMP Debian 4.9.110-1 (2018-07-05) x86_64 GNU/Linux 编译器和vim等辅助程序,都是系统自带的原始版本。 2019/12/30
阅读全文
摘要:背景 收集一些平时可能会用到的Linux脚本。 内容 tcp连接统计 netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 删除空行 sed '/^$/d' file.txt 删除以 '#'开头的行 sed '/^
阅读全文
摘要:#include <time.h> #include <sys/time.h> #include <stdio.h> char * getTimestamp() { struct timeval tv; struct tm tm_time; gettimeofday(&tv, NULL); gmti
阅读全文
摘要:背景 总结一下在c,c++里注册回调的几种用法 用法 c语言 #include <iostream> using namespace std; int demo(char *str1, char *str2) { printf("print in demo(): %s, %s\n", str1, s
阅读全文
摘要:序 linux下的c/c++编译代码通常需要自己写用于本程序的makefile文件,而事先准备好一个通常的、符合自己编程习惯的模板是可以加快你的编译工作。 在我看来,一个通常模板应,应具备几个必要的功能: 自动匹配依赖 添加目标和依赖的搜索路径 允许多目标编译 可生成库文件 c程序和c++程序编译快
阅读全文