<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Qiangks的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/Qiangks</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Qiangks]]></copyright><item><title><![CDATA[Golang 中创建守护进程的正确姿势]]></title><link>https://blog.csdn.net/Qiangks/article/details/86158129</link><guid>https://blog.csdn.net/Qiangks/article/details/86158129</guid><author>Qiangks</author><pubDate>Wed, 09 Jan 2019 16:02:26 +0800</pubDate><description><![CDATA[
一直对守护进程有点迷糊， Srs的守护进程是通过两次fork实现的。
C/C++一般的做法是fork一次， 然后调用setsid() 实现daemon， golang呢？

守护进程的特点
守护进程： 我的理解是脱离控制台的进程。
一般我们执行程序都是在shell/bash下启动程序， 如果不以守护进程方式启动，该程序的父进程一般就是bash或shell， 通过ps -ef | grep xxx...]]></description><category></category></item><item><title><![CDATA[文章标题]]></title><link>https://blog.csdn.net/Qiangks/article/details/74163249</link><guid>https://blog.csdn.net/Qiangks/article/details/74163249</guid><author>Qiangks</author><pubDate>Sun, 02 Jul 2017 23:03:04 +0800</pubDate><description><![CDATA[st的代码有一点难读， 主要是代理用了很多的宏实现， 这样gdb调试时断点不好设置， 而且库里面用到了一些偏底层的函数（对我来说， 很多函数都没有用到过）， 比如mprotect， mmap之类的。 但是底层的原理还是比较简单的， 就是通过setjmp和longjmp实现缓存状态和切换。
我是很想把这里理清楚的， 但是能力有限， 理理看。apue上将goto语句不能跨越函数， 执行这类跳转功能的函数]]></description><category></category></item><item><title><![CDATA[Linux  获取系统及硬件环境总结]]></title><link>https://blog.csdn.net/Qiangks/article/details/72958106</link><guid>https://blog.csdn.net/Qiangks/article/details/72958106</guid><author>Qiangks</author><pubDate>Fri, 09 Jun 2017 15:05:39 +0800</pubDate><description><![CDATA[1.获取cpu核心数： 
int count = (int) sysconf(_SC_NPROCESSORS_ONLN)
mmap 函数
getrlimit函数
4.]]></description><category></category></item><item><title><![CDATA[ARP 协议]]></title><link>https://blog.csdn.net/Qiangks/article/details/72547883</link><guid>https://blog.csdn.net/Qiangks/article/details/72547883</guid><author>Qiangks</author><pubDate>Fri, 19 May 2017 17:13:09 +0800</pubDate><description><![CDATA[ARP  协议主要作用是查询 IP地址对应的MAC地址。是IPV4 网络中必不可少的协议。
参考： 
地址解析协议的学习，写的太好了！为什么需要mac地址呢？总结一下： 
先简化为最简单的场景：同一局域网内的两台主机通信 
１. 网络层通过IP地址寻址一台机器， 数据链路层通过使用物理地址寻址一台机器，ARP协议就是将IP地址转换为MAC地址的。 
2.  原理：以主机A(192.168.0.1)向]]></description><category></category></item><item><title><![CDATA[TCP/IP 学习三-IP网际协议]]></title><link>https://blog.csdn.net/Qiangks/article/details/71751836</link><guid>https://blog.csdn.net/Qiangks/article/details/71751836</guid><author>Qiangks</author><pubDate>Fri, 12 May 2017 18:42:12 +0800</pubDate><description><![CDATA[3.1 引言不可靠(unreliable)： 不能保证数据报能准确到达目的地。
无连接（connectionless）： 意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明， IP数据报可以不按发送顺序接收。
3.2 IP首部通过wireshark抓包对比学习IP数据报格式：]]></description><category></category></item><item><title><![CDATA[centos mysql 环境搭建]]></title><link>https://blog.csdn.net/Qiangks/article/details/71480555</link><guid>https://blog.csdn.net/Qiangks/article/details/71480555</guid><author>Qiangks</author><pubDate>Tue, 09 May 2017 16:45:58 +0800</pubDate><description><![CDATA[在centos 上搭建mysql时， 用yum 安装总是出现很多问题， 参考网上的一篇文档，最终总算是搭好了。
1.  卸载原有的mysql1. sudo rpm -qa | grep mysql
2. sudo rpm -e --nodeps mysql  // 强力删除mysql包
3. sudo yum install -y mysql-server mysql mysql-devel
4.]]></description><category></category></item><item><title><![CDATA[正则表达式]]></title><link>https://blog.csdn.net/Qiangks/article/details/71136370</link><guid>https://blog.csdn.net/Qiangks/article/details/71136370</guid><author>Qiangks</author><pubDate>Wed, 03 May 2017 18:47:37 +0800</pubDate><description><![CDATA[注意： 正则表达式与文件通配语法无关， 比如 *.xml
正则表达式基础语法大部分的字符（包括字母和数字字符）是普通字符。他们只能匹配它们自己。 
cat 匹配 cat有一些被称为“元字符”的特殊字符， 可以匹配特殊规则点 “.”匹配任意字符 
c.t 匹配: 以c开头， 以t结尾， 中间是任意一个字符使用反斜杠“\”可以忽略元字符，使得元字符的功能与普通字符一样。  
c.t 匹配： c.t 
c]]></description><category></category></item><item><title><![CDATA[一天内学会的计算机技能]]></title><link>https://blog.csdn.net/Qiangks/article/details/71104735</link><guid>https://blog.csdn.net/Qiangks/article/details/71104735</guid><author>Qiangks</author><pubDate>Tue, 02 May 2017 22:24:48 +0800</pubDate><description><![CDATA[转自： 一天内学会的计算机技能




来自 Quora 网友，题主还补充说：





注：这个问题特指和计算机打交道的技能。




我有一个月的时间，我想学习很多大约一天就能学会的实用技能。我不期望（一天）精通，但有了良好理解后，我能做些基本操作。比如，我想学习如何使用 Eclipse 的调试器，如何创建 makefile，学习一些重要的 Linux 终端命令]]></description><category></category></item><item><title><![CDATA[raknet 性能测试]]></title><link>https://blog.csdn.net/Qiangks/article/details/71077665</link><guid>https://blog.csdn.net/Qiangks/article/details/71077665</guid><author>Qiangks</author><pubDate>Tue, 02 May 2017 09:48:04 +0800</pubDate><description><![CDATA[转自：酷壳的 性能测试怎么做







如何严谨地做性能测试


一般来说，性能测试要统一考虑这么几个因素：Thoughput吞吐量，Latency响应时间，资源利用（CPU/MEM/IO/Bandwidth…），成功率，系统稳定性。

下面的这些性能测试的方式基本上来源自我的老老东家汤森路透，一家做real-time的金融数据系统的公司。

一，你得定义一个系统]]></description><category></category></item><item><title><![CDATA[Raknet 库学习二]]></title><link>https://blog.csdn.net/Qiangks/article/details/70880955</link><guid>https://blog.csdn.net/Qiangks/article/details/70880955</guid><author>Qiangks</author><pubDate>Fri, 28 Apr 2017 00:04:06 +0800</pubDate><description><![CDATA[这一节分析一下Raknet的数据结构， 主要以raknet/Samples/Chat Example目录下的聊天程序为例介绍展开。
1. ChatClient 的大致流程：
创建客户端实例： RakNet::RakPeerInterface *client=RakNet::RakPeerInterface::GetInstance()
根据用户输入的客户端监听端口，服务器的ip， 端口， 初始化so]]></description><category></category></item><item><title><![CDATA[Raknet 库学习一]]></title><link>https://blog.csdn.net/Qiangks/article/details/70635761</link><guid>https://blog.csdn.net/Qiangks/article/details/70635761</guid><author>Qiangks</author><pubDate>Mon, 24 Apr 2017 18:06:23 +0800</pubDate><description><![CDATA[由于工作原因，接触到了Raknet库， Raknet是一个基于UDP传输协议的C++网络库。 
1. raknet结构raknet是用cmake构建的（我这里是centos 64位环境），  从cmake很容易看出raknet的编译过程： 
结构非常简单， 就是根据Source下的源文件，编译生成了一个静态链接库。2. raknet调试：
开启raknet调试： cmake -DCMAKE_BUIL]]></description><category></category></item><item><title><![CDATA[cmake]]></title><link>https://blog.csdn.net/Qiangks/article/details/68485073</link><guid>https://blog.csdn.net/Qiangks/article/details/68485073</guid><author>Qiangks</author><pubDate>Thu, 30 Mar 2017 11:35:38 +0800</pubDate><description><![CDATA[动态库
  .so后缀的是动态库， 很多系统的库都是动态库， /usr/lib64 下回喊道很多这种的.so， 有的还会带上库的版本号
cmake 设置动态库： 
我的文件目录： 
├── build 
├── CMakeLists.txt 
└── src 
    ├── core 
    │   ├── utility.cpp 
    │   └── utility.hpp 
    ├─]]></description><category></category></item><item><title><![CDATA[docker centos7 环境下， 用man 报：No manual entry for xxx]]></title><link>https://blog.csdn.net/Qiangks/article/details/67633454</link><guid>https://blog.csdn.net/Qiangks/article/details/67633454</guid><author>Qiangks</author><pubDate>Tue, 28 Mar 2017 11:04:20 +0800</pubDate><description><![CDATA[参考： https://groups.google.com/forum/#!topic/docker-user/fuW0e9xlqQE


之所以没有man帮助文档， 主要是docker为了保证img的占用小， 特意做的没有文档的镜像。


解决方法很简单：
1. sudo vim /etc/yum.conf， 删除 ‘tsflags=nodocs’这行
2. 安装man：sudo]]></description><category></category></item><item><title><![CDATA[Nginx 调试一]]></title><link>https://blog.csdn.net/Qiangks/article/details/65938492</link><guid>https://blog.csdn.net/Qiangks/article/details/65938492</guid><author>Qiangks</author><pubDate>Sat, 25 Mar 2017 17:42:34 +0800</pubDate><description><![CDATA[Nginx的main函数： int ngx_cdecl
main(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]]></description><category></category></item><item><title><![CDATA[Nginx 调试环境配置]]></title><link>https://blog.csdn.net/Qiangks/article/details/65630049</link><guid>https://blog.csdn.net/Qiangks/article/details/65630049</guid><author>Qiangks</author><pubDate>Fri, 24 Mar 2017 13:51:45 +0800</pubDate><description><![CDATA[Nginx 调试环境搭建
从git上clone下来Nginx的代码 https://github.com/nginx/nginx
修改auto/cc/conf文件， ngx_compile_opt=&quot;-c -g3&quot;加上-g3。（一般是-g就可以了， -g3主要是为了调试Nginx时， 可以用gdb展开一些宏：展开宏的命令：　macro expand &lt;宏&gt;）
在Nginx目录下运行：./auto/c]]></description><category></category></item><item><title><![CDATA[leetcode 刷题（求树的直径）]]></title><link>https://blog.csdn.net/Qiangks/article/details/65440136</link><guid>https://blog.csdn.net/Qiangks/article/details/65440136</guid><author>Qiangks</author><pubDate>Thu, 23 Mar 2017 10:52:03 +0800</pubDate><description><![CDATA[树的直径的定义：
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.



我首先想到的思路是： 直径必然是两个叶子节点之间的距离的最大值， 怎么求这]]></description><category></category></item><item><title><![CDATA[leetcode 二叉树--之建BST树]]></title><link>https://blog.csdn.net/Qiangks/article/details/62238267</link><guid>https://blog.csdn.net/Qiangks/article/details/62238267</guid><author>Qiangks</author><pubDate>Wed, 15 Mar 2017 21:53:47 +0800</pubDate><description><![CDATA[BST(binary search tree)即： 二分搜索树顾名思义， 这种树特别适合二分查找， 因为该树的所有左子树的节点都比根节点的值小， 所有右子树都比根节点的值大。leetcode 108题： 
Given an array where elements are sorted in ascending order, convert it to a height balanced BST。解]]></description><category></category></item><item><title><![CDATA[汇编寄存器总结]]></title><link>https://blog.csdn.net/Qiangks/article/details/62234355</link><guid>https://blog.csdn.net/Qiangks/article/details/62234355</guid><author>Qiangks</author><pubDate>Wed, 15 Mar 2017 18:45:45 +0800</pubDate><description><![CDATA[经常用到的寄存器有 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的值）
未完待续]]></description><category></category></item><item><title><![CDATA[const 真难啊]]></title><link>https://blog.csdn.net/Qiangks/article/details/61191628</link><guid>https://blog.csdn.net/Qiangks/article/details/61191628</guid><author>Qiangks</author><pubDate>Fri, 10 Mar 2017 10:00:24 +0800</pubDate><description><![CDATA[const 真TM 难啊

const int a = 3;
// easy
const int *b = &a;
const int *x = b;
// *x is a const value
  *x = 4; 
// error
const int *c = &a;
x = c; 
// right


const int* const y = b;]]></description><category></category></item><item><title><![CDATA[用汇编的思想理解C/C++]]></title><link>https://blog.csdn.net/Qiangks/article/details/59745442</link><guid>https://blog.csdn.net/Qiangks/article/details/59745442</guid><author>Qiangks</author><pubDate>Thu, 02 Mar 2017 23:08:43 +0800</pubDate><description><![CDATA[最近面试找工作， 遇到一个美团一个很好的面试官。 虽然面试结果可能不尽如意， 但是面试官给出的意见确非常中肯。 所以觉得有必要重新学习一下基础。 就从操作系统开始学起。刚好之前从git上发现有人共享了一本30天自制操作系统。 书的标题虽然有点夸张， 但是觉得还是觉得跟着一步一步写，效果会比单纯的看长篇大论的理论要好。 也放出github的地址， 有兴趣的也可以下下来看看。
30天自制操作系统一切皆0]]></description><category></category></item></channel></rss>