- 博客(22)
- 收藏
- 关注
原创 Golang 中创建守护进程的正确姿势
一直对守护进程有点迷糊, Srs的守护进程是通过两次fork实现的。C/C++一般的做法是fork一次, 然后调用setsid() 实现daemon, golang呢?守护进程的特点守护进程: 我的理解是脱离控制台的进程。一般我们执行程序都是在shell/bash下启动程序, 如果不以守护进程方式启动,该程序的父进程一般就是bash或shell, 通过ps -ef | grep xxx...
2019-01-09 16:02:26
9070
原创 文章标题
st的代码有一点难读, 主要是代理用了很多的宏实现, 这样gdb调试时断点不好设置, 而且库里面用到了一些偏底层的函数(对我来说, 很多函数都没有用到过), 比如mprotect, mmap之类的。 但是底层的原理还是比较简单的, 就是通过setjmp和longjmp实现缓存状态和切换。我是很想把这里理清楚的, 但是能力有限, 理理看。apue上将goto语句不能跨越函数, 执行这类跳转功能的函数
2017-07-02 23:03:04
343
原创 Linux 获取系统及硬件环境总结
1.获取cpu核心数: int count = (int) sysconf(_SC_NPROCESSORS_ONLN)mmap 函数getrlimit函数4.
2017-06-09 15:05:39
951
原创 ARP 协议
ARP 协议主要作用是查询 IP地址对应的MAC地址。是IPV4 网络中必不可少的协议。参考: 地址解析协议的学习,写的太好了!为什么需要mac地址呢?总结一下: 先简化为最简单的场景:同一局域网内的两台主机通信 1. 网络层通过IP地址寻址一台机器, 数据链路层通过使用物理地址寻址一台机器,ARP协议就是将IP地址转换为MAC地址的。 2. 原理:以主机A(192.168.0.1)向
2017-05-19 17:13:09
411
原创 TCP/IP 学习三-IP网际协议
3.1 引言不可靠(unreliable): 不能保证数据报能准确到达目的地。无连接(connectionless): 意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明, IP数据报可以不按发送顺序接收。3.2 IP首部通过wireshark抓包对比学习IP数据报格式:
2017-05-12 18:42:12
284
翻译 centos mysql 环境搭建
在centos 上搭建mysql时, 用yum 安装总是出现很多问题, 参考网上的一篇文档,最终总算是搭好了。1. 卸载原有的mysql1. sudo rpm -qa | grep mysql2. sudo rpm -e --nodeps mysql // 强力删除mysql包3. sudo yum install -y mysql-server mysql mysql-devel4.
2017-05-09 16:45:58
393
转载 正则表达式
注意: 正则表达式与文件通配语法无关, 比如 *.xml正则表达式基础语法大部分的字符(包括字母和数字字符)是普通字符。他们只能匹配它们自己。 cat 匹配 cat有一些被称为“元字符”的特殊字符, 可以匹配特殊规则点 “.”匹配任意字符 c.t 匹配: 以c开头, 以t结尾, 中间是任意一个字符使用反斜杠“\”可以忽略元字符,使得元字符的功能与普通字符一样。 c.t 匹配: c.t c
2017-05-03 18:47:37
332
1
转载 一天内学会的计算机技能
转自: 一天内学会的计算机技能来自 Quora 网友,题主还补充说:注:这个问题特指和计算机打交道的技能。我有一个月的时间,我想学习很多大约一天就能学会的实用技能。我不期望(一天)精通,但有了良好理解后,我能做些基本操作。比如,我想学习如何使用 Eclipse 的调试器,如何创建 makefile,学习一些重要的 Linux 终端命令
2017-05-02 22:24:48
700
转载 raknet 性能测试
转自:酷壳的 性能测试怎么做如何严谨地做性能测试一般来说,性能测试要统一考虑这么几个因素:Thoughput吞吐量,Latency响应时间,资源利用(CPU/MEM/IO/Bandwidth…),成功率,系统稳定性。下面的这些性能测试的方式基本上来源自我的老老东家汤森路透,一家做real-time的金融数据系统的公司。一,你得定义一个系统
2017-05-02 09:48:04
1298
原创 Raknet 库学习二
这一节分析一下Raknet的数据结构, 主要以raknet/Samples/Chat Example目录下的聊天程序为例介绍展开。1. ChatClient 的大致流程:创建客户端实例: RakNet::RakPeerInterface *client=RakNet::RakPeerInterface::GetInstance()根据用户输入的客户端监听端口,服务器的ip, 端口, 初始化so
2017-04-28 00:04:06
592
原创 Raknet 库学习一
由于工作原因,接触到了Raknet库, Raknet是一个基于UDP传输协议的C++网络库。 1. raknet结构raknet是用cmake构建的(我这里是centos 64位环境), 从cmake很容易看出raknet的编译过程: 结构非常简单, 就是根据Source下的源文件,编译生成了一个静态链接库。2. raknet调试:开启raknet调试: cmake -DCMAKE_BUIL
2017-04-24 18:06:23
3844
原创 cmake
动态库 .so后缀的是动态库, 很多系统的库都是动态库, /usr/lib64 下回喊道很多这种的.so, 有的还会带上库的版本号cmake 设置动态库: 我的文件目录: ├── build ├── CMakeLists.txt └── src ├── core │ ├── utility.cpp │ └── utility.hpp ├─
2017-03-30 11:35:38
319
原创 docker centos7 环境下, 用man 报:No manual entry for xxx
参考: https://groups.google.com/forum/#!topic/docker-user/fuW0e9xlqQE之所以没有man帮助文档, 主要是docker为了保证img的占用小, 特意做的没有文档的镜像。解决方法很简单:1. sudo vim /etc/yum.conf, 删除 ‘tsflags=nodocs’这行2. 安装man:sudo
2017-03-28 11:04:20
825
原创 Nginx 调试一
Nginx的main函数: int ngx_cdeclmain(int argc, char *const *argv){ ngx_buf_t *b; ngx_log_t *log; ngx_uint_t i; ngx_cycle_t *cycle, init_cycle; ngx_conf_dump_t
2017-03-25 17:42:34
624
原创 Nginx 调试环境配置
Nginx 调试环境搭建从git上clone下来Nginx的代码 https://github.com/nginx/nginx修改auto/cc/conf文件, ngx_compile_opt="-c -g3"加上-g3。(一般是-g就可以了, -g3主要是为了调试Nginx时, 可以用gdb展开一些宏:展开宏的命令: macro expand <宏>)在Nginx目录下运行:./auto/c
2017-03-24 13:51:45
419
原创 leetcode 刷题(求树的直径)
树的直径的定义:The diameter of a binary tree is the length of thelongest path between any two nodes in a tree. This path may or may not pass through the root.我首先想到的思路是: 直径必然是两个叶子节点之间的距离的最大值, 怎么求这
2017-03-23 10:52:03
1452
原创 leetcode 二叉树--之建BST树
BST(binary search tree)即: 二分搜索树顾名思义, 这种树特别适合二分查找, 因为该树的所有左子树的节点都比根节点的值小, 所有右子树都比根节点的值大。leetcode 108题: Given an array where elements are sorted in ascending order, convert it to a height balanced BST。解
2017-03-15 21:53:47
561
原创 汇编寄存器总结
经常用到的寄存器有 cs, ds, ss, es, ax, bx, cx,dx, si, di, sp, bp, ip, psw。cs: ip 指定cpu 要读取指令的地址ss:sp 制定栈内存的地址ds 默认的段地址cx loop指令执行的时候进行2步操作(cx=cx -1 ; 判断cx的值)未完待续
2017-03-15 18:45:45
550
原创 const 真难啊
const 真TM 难啊const int a = 3;// easyconst int *b = &a;const int *x = b;// *x is a const value *x = 4; // errorconst int *c = &a;x = c; // rightconst int* const y = b;
2017-03-10 10:00:24
297
原创 用汇编的思想理解C/C++
最近面试找工作, 遇到一个美团一个很好的面试官。 虽然面试结果可能不尽如意, 但是面试官给出的意见确非常中肯。 所以觉得有必要重新学习一下基础。 就从操作系统开始学起。刚好之前从git上发现有人共享了一本30天自制操作系统。 书的标题虽然有点夸张, 但是觉得还是觉得跟着一步一步写,效果会比单纯的看长篇大论的理论要好。 也放出github的地址, 有兴趣的也可以下下来看看。30天自制操作系统一切皆0
2017-03-02 23:08:43
1016
原创 30天自制操作系统--重新学习汇编指令
CPU 寄存器具有代表性的寄存器有以下8个:AX–accumulator, 累加寄存器 CX–counter, 计数寄存器 DX– data 数据寄存器 BX – base 基址寄存器 SP – stack pointer, 栈指针寄存器 BP – base pointer, 基址寄存器 SI – source ind
2017-03-02 21:41:19
449
原创 关于 strlen 和 sizeof的区别
关于strlen和sizeof的区别strlen 和 sizeof 自己一直没有注意去研究,一直迷惑, 凡事还需巨细靡遗啊!巨细靡遗! 巨细靡遗![strlen]c++ reference 中说: The length of a C string is determined by the terminating null-character: A C string is as long as t
2017-02-28 13:38:29
374
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人