[置顶]关于博主

首先感谢各位通过域名52coder.net 52murong.com访问本站。52murong.com 慕蓉是我女朋友的名字,她也是一名程序员,现在访问该域与52coder.net均会打开本站。

52coder.net是很早之前与同学一起脑洞的域名:中文名可以叫做-我爱程序员。我记得那年冬天孟非主持的非诚勿扰很火,我信誓旦旦的说以后要做一个网站,专门去为程序员解决个人问题,于是就有了现在的这个域名52coder.net。当时比较热衷于论坛,折腾过Discuz,在读书时折腾过,最多的时候同时在线人数超过1000,论坛的注册人数达到了2w左右,现在却早已忘记当初因为什么原因关闭论坛。

博客开始......

Linux内核模块

cat /proc/modules

第一列: 模块的名字

第二列: 模块的内存大小,单位是bytes

第三列: 被load的次数,0以为着没有被load过

第四列: 是否依赖第三方moudle,列出这些module,不依赖第三方moudle使用-代替

第五列: 模块的状态,有Live, Loading, Unloading三种状态

第六列: 模块当前的内核内存偏移位置。这些信息,debug的时候会非常有用。例如一些诊断工具 oprofile。

[root@centos7-10 ~]# cat /proc/modules

xt_CHECKSUM 12549 1 - Live ......

C语言中的隐式转换

为了定义转换规则,C99允许每个整数类型具有"整数转换等级"。下面按从最高级到最低级的顺序排列。

(1)long long int、usigned long long int

(2)long int、unsigned long int

(3) int 、unsigned int

(4) short int 、unsigned short int

(5) char、signed char、unsigned char

(6)_Bool

比较转换规则如下:

如果两个操作数类型相同,过程结束,否则依次尝试下面的规则:

(1):如果两个操作数都是有符号型或者都......

Linux网络安全技术与实现

本文记录Linux网络技术与实现读书笔记,这是一本已经停产了的书,在豆瓣上评分颇高,此书为第二版,第一版书名为-更安全的Linux网络。笔记记录的形式不会采取面面俱到的方式,精选一些比较重要的内容,如果你没有接触过这方面的内容,阅读本文可能会有强烈的不适感。

TCP UDP及Socket的关系端口的分类

公认的端口:0-1023

注册的端口:1024-49151

动态端口:49152-65535

端口的作用

假设我们在服务器端主机运行了Web SSH及DNS三项服务。在TCP/IP的网络规范中,当一个网络应用运行起来时,都会占用一个端口,如服务器端的Web服务器启动时,即会占用......

The Linux Programming Interface

本文复习The Linux Programming Interface一书中,一些知识点的总结,源代码存在github中,在源代码中添加部分注释,用于学习与总结。

确定glibc版本

使用如下命令:

[root@centos7-10 files]# ldd /usr/bin/ls | grep libc

libcap.so.2 => /lib64/libcap.so.2 (0x00007f7d5a0c1000)

libc.so.6 => /lib64/libc.so.6 (0x00007f7d59aeb000)

然后在shell窗口中执行如下命令可以看到:

......

网络序与主机序

用一个例子演示htons的用法,用于编译的centos虚拟机为小端模式,因此下面的程序输出为

10 00

4096

与htons函数类似的几个函数及对应的作用如下:

uint32_t htonl(uint32_t hostlong);

uint16_t htons(uint16_t hostshort);

uint32_t ntohl(uint32_t netlong);

uint16_t ntohs(uint16_t netshort);

Description

The htonl() function converts the unsigned integer hostlon......

关于溢出的一个真实bug

来源于项目中一个真实的bug,最近项目中要适配32位linux系统时发现一段检测磁盘剩余空间的程序,低于一定空间的话退出安装程序安装失败.

代码简化如下:

参考如下代码:

#include <stdio.h>

#include <unistd.h>

#include <string.h>

#include <sys/vfs.h>

#include <errno.h>

#include <stdint.h>

#include <limits.h>

int main()

{

struct statfs d......

linux Command Line Cookbook

在gitbook上看到一本不错的书,适合在碎片时间比如地铁上阅读,而且是英文版,格调比较高。

Command Line Cookbook

书中首先讲的是重定向相关的内容,书中讲了一个例子,比如执行两条命令,在第一条命令执行失败时才执行第二条命令,可以用如下方法:

ls file &> /dev/null || echo "File not exist"

假如当前目录下不存在file这个文件,才会打印 File not exist,而&>file是一种特殊的用法,也可以写成>&file,二者的意思完全相同,都等价于

>file ......

epoll实例

epoll的示例网上很多,个人认为这个例子最能反映epoll的用法,最近在看libevent的源码,按照目前的工作繁忙情况也只有周日一天有时间看看,有点想念以前时间比较多,可以写一些学习笔记。

计划后续写一些livevent源码学习笔记。io多路复用可以参考我的另一篇文章io多路复用

getaddrinfo可以参考man手册的例子:getaddrinfo

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <errno.h>

#include <sy......

CUnit与google test安装与使用

之前工作中使用的是CUnit,新工作使用的是与google test相似的自研框架,因此本文记录单独搭建CUnit与google test的方法,用于满足日常开发中demo编写过程中的测试。CUnit可以结合gcov lcov等使用,本文不介绍此部分。

CUnit安装与使用

下载tools目录下的CUnit-2.1-2-src.tar.bz2,然后使用如下命令依次执行

$tar jxf CUnit-2.1-2-src.tar.bz2

$ cd CUnit-2.1-2

$ ./configure --prefix=/usr

$ make

$ make install

然后将CU......