<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[鬼手]]></title><description><![CDATA[致力于网络技术研究。]]></description><link>https://blog.csdn.net/hoi0714</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; hoi0714]]></copyright><item><title><![CDATA[linux获取指定接口的IP]]></title><link>https://blog.csdn.net/hoi0714/article/details/7909513</link><guid>https://blog.csdn.net/hoi0714/article/details/7909513</guid><author>hoi0714</author><pubDate>Sun, 26 Aug 2012 17:23:48 +0800</pubDate><description><![CDATA[#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define NIPQUAD(addr) \
    ((unsigned char *)&addr)[0], \
    ((unsigned char *)&addr)[1], \
    ((unsigned]]></description><category></category></item><item><title><![CDATA[内存分配钩子__malloc_hook, __reallac_hook, __free_hook的使用]]></title><link>https://blog.csdn.net/hoi0714/article/details/7909488</link><guid>https://blog.csdn.net/hoi0714/article/details/7909488</guid><author>hoi0714</author><pubDate>Sun, 26 Aug 2012 17:11:53 +0800</pubDate><description><![CDATA[mem.h
#ifndef __MEM_H__
#define __MEM_H__

#include 
#include 

static void *(*old_malloc_hook)(size_t, const void*);
static void *(*old_realloc_hook)(void *ptr, size_t size, const void *caller);
sta]]></description><category></category></item><item><title><![CDATA[字符串旋转算法 -- 求逆]]></title><link>https://blog.csdn.net/hoi0714/article/details/7905471</link><guid>https://blog.csdn.net/hoi0714/article/details/7905471</guid><author>hoi0714</author><pubDate>Fri, 24 Aug 2012 20:52:32 +0800</pubDate><description><![CDATA[#include 
#include 

void reverse(char *array, int begin, int end)
{
    char tmp;
    while (begin < end)
    {
        tmp = array[begin];
        array[begin] = array[end];
        array[end] = tmp]]></description><category></category></item><item><title><![CDATA[linux获取指定网口的MAC]]></title><link>https://blog.csdn.net/hoi0714/article/details/7853981</link><guid>https://blog.csdn.net/hoi0714/article/details/7853981</guid><author>hoi0714</author><pubDate>Sat, 11 Aug 2012 10:03:09 +0800</pubDate><description><![CDATA[#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int obtain_mac(const char *ifname, unsigned char *mac, int len)
{
    int sk = -1, ret = 0;
    struct ifreq ifreq;]]></description><category></category></item><item><title><![CDATA[命令行邮件发送工具]]></title><link>https://blog.csdn.net/hoi0714/article/details/7840368</link><guid>https://blog.csdn.net/hoi0714/article/details/7840368</guid><author>hoi0714</author><pubDate>Tue, 07 Aug 2012 19:01:32 +0800</pubDate><description><![CDATA[command line email utility
febooti

http://www.febooti.com/]]></description><category></category></item><item><title><![CDATA[jpgraph联合tcpdf动态生成图文并茂的pdf文件]]></title><link>https://blog.csdn.net/hoi0714/article/details/7799796</link><guid>https://blog.csdn.net/hoi0714/article/details/7799796</guid><author>hoi0714</author><pubDate>Sun, 29 Jul 2012 22:42:54 +0800</pubDate><description><![CDATA[基础环境：PHP5


因为jpgraph依赖于GD库，所以使用jpgraph之前需确认GD库是否已经安装。（GD库，是php处理图形的扩展库，GD库提供了一系列用来处理图片的API，使用GD库可以处理图片，或者生成图片。）
如何确认GD库是否安装？方法如下：
在apache网站根目录（默认为/var/www）建立一个文件，如phpinfo.php，内容如下：

<%php
phpi]]></description><category></category></item><item><title><![CDATA[MYSQL常用命令]]></title><link>https://blog.csdn.net/hoi0714/article/details/7798073</link><guid>https://blog.csdn.net/hoi0714/article/details/7798073</guid><author>hoi0714</author><pubDate>Sun, 29 Jul 2012 00:33:44 +0800</pubDate><description><![CDATA[MySQL常用命令


1. 创建数据库
create database name;


2. 选择数据库
use databasename;


3. 删除数据库
drop database name;
drop database if exists name;


4. 显示数据库中的表
show tables;


5. 显示表头
desc tabl]]></description><category></category></item><item><title><![CDATA[64位Centos6.0上编译32位程序]]></title><link>https://blog.csdn.net/hoi0714/article/details/7780993</link><guid>https://blog.csdn.net/hoi0714/article/details/7780993</guid><author>hoi0714</author><pubDate>Tue, 24 Jul 2012 17:09:02 +0800</pubDate><description><![CDATA[1. 查看当前系统的版本，确定当前系统是64系统
[root@zjh:~]# uname -r
2.6.32-5-amd64


2. 查询编译环境是否完备
确认下"Development tools", "Compatibility libraries" 这两个组件有没有安装：

[root@zjh:~]# yum grouplist "Development tools" "Co]]></description><category></category></item><item><title><![CDATA[监测linux磁盘IO实时情况]]></title><link>https://blog.csdn.net/hoi0714/article/details/7768581</link><guid>https://blog.csdn.net/hoi0714/article/details/7768581</guid><author>hoi0714</author><pubDate>Fri, 20 Jul 2012 18:19:22 +0800</pubDate><description><![CDATA[Linux 内核里提供了一个 block_dump 参数用来把 block 读写（WRITE/READ）状况 dump 到日志里，这样可以通过
 dmesg 命令来查看，具体操作步骤是：
# sysctl vm.block_dump=1
or
# echo 1 > /proc/sys/vm/block_dump]]></description><category></category></item><item><title><![CDATA[用perl生成linux密码]]></title><link>https://blog.csdn.net/hoi0714/article/details/7761564</link><guid>https://blog.csdn.net/hoi0714/article/details/7761564</guid><author>hoi0714</author><pubDate>Thu, 19 Jul 2012 08:56:04 +0800</pubDate><description><![CDATA[perl -e 'print crypt("test",q($6$hoiLHdTI)) ."\n"'


结果如下：
$6$hoiLHdTI$hmqx7iThdTf3lW3oQcaGimBfx.LapJ8Q9a8rvnlw.Zg.6KTx5Bv0ZeAnaTUTSDkbi83ie7828.O.25/l90AW0/]]></description><category></category></item><item><title><![CDATA[Bash history命名配置及使用]]></title><link>https://blog.csdn.net/hoi0714/article/details/7709583</link><guid>https://blog.csdn.net/hoi0714/article/details/7709583</guid><author>hoi0714</author><pubDate>Mon, 02 Jul 2012 19:38:27 +0800</pubDate><description><![CDATA[历史是宝贵的财富，当然也包括编程的时候。

bash history有多种使用方式，最简单的方式就是按上下方向键。按一次“上”键，bash列出上次运行的命令，按两次，bash则列出再上次运行的命令；按“下”键正好相反，bash列出当前命令之后运行过的命令。

方向键按几次还受得了，如果想运行的命令距离太远，超过了重新输入一遍的代价，就不值得使用这种方式了。这时我们有两种选择：使用histo]]></description><category></category></item><item><title><![CDATA[使用objdump看内核源码]]></title><link>https://blog.csdn.net/hoi0714/article/details/7679350</link><guid>https://blog.csdn.net/hoi0714/article/details/7679350</guid><author>hoi0714</author><pubDate>Wed, 20 Jun 2012 12:48:52 +0800</pubDate><description><![CDATA[1. 修改源代码的顶层  Makefile
   CC =$(CROSSCOM_PILE)gcc -->
   CC =$(CROSSCOM_PILE)gcc   -g
   使成生的vmlinux中含有debug信息
2. 所有生成.o的rule中再加一条     /*其他参数除了-c外抄生成.o文件用的参数*/
   CC   -E  -dD -C $ /preprocessing/]]></description><category></category></item><item><title><![CDATA[打印函数调用栈----backtrace原理简单实现]]></title><link>https://blog.csdn.net/hoi0714/article/details/7658100</link><guid>https://blog.csdn.net/hoi0714/article/details/7658100</guid><author>hoi0714</author><pubDate>Wed, 13 Jun 2012 08:52:18 +0800</pubDate><description><![CDATA[backtrace函数是callstack调试器的基本功能之一，利用此功能，可以看到各级函数的调用关系。在gdb中，这一功能被称为backtrace，输入bt命令就可以看到当前函数的callstack。它的实现多少有些有趣，这里研究一下。
我们先看看栈的基本模型






参数N


↓高地址




参数…


函数参数入栈的顺序与具体的调用方式有关]]></description><category></category></item><item><title><![CDATA[bit、Byte、bps、Bps、pps的详细介绍]]></title><link>https://blog.csdn.net/hoi0714/article/details/7467373</link><guid>https://blog.csdn.net/hoi0714/article/details/7467373</guid><author>hoi0714</author><pubDate>Mon, 16 Apr 2012 21:19:26 +0800</pubDate><description><![CDATA[1）bit与Byte

在计算机科学中，bit是表示信息的最小单位，叫做二进制位；一般用0和1表示。Byte叫做字节，由8个位（8bit）组成一个字节(1Byte)，用于表示计算机中的一个字符。bit(比特)与Byte(字节)之间可以进行换算，其换算关系为：

1B(Byte)=8b(bit)位

1KB=1024B

1MB=1024KB

1GB=1024MB

2）b]]></description><category></category></item><item><title><![CDATA[windows下查看某个端口被哪个程序占用的方法]]></title><link>https://blog.csdn.net/hoi0714/article/details/7467027</link><guid>https://blog.csdn.net/hoi0714/article/details/7467027</guid><author>hoi0714</author><pubDate>Mon, 16 Apr 2012 19:26:53 +0800</pubDate><description><![CDATA[经常，我们在启动应用的时候发现系统需要的端口被别的程序占用，如何知道谁占有了我们需要的端口，很多人都比较头疼，下面就介绍一种非常简单的方法，希望对大家有用 


假如我们需要确定谁占用了我们的9050端口 

1、Windows平台 
在windows命令行窗口下执行： 
1.查看所有的端口占用情况
C:\>netstat -ano
  协议    本地地址]]></description><category></category></item><item><title><![CDATA[如何判断进程是否为daemon]]></title><link>https://blog.csdn.net/hoi0714/article/details/7349129</link><guid>https://blog.csdn.net/hoi0714/article/details/7349129</guid><author>hoi0714</author><pubDate>Tue, 13 Mar 2012 15:30:26 +0800</pubDate><description><![CDATA[通过命令ps -e -o pid,ppid,cmd,tty可以看出但凡daemon进程，其tty都显示为?，也就是不存在tty
 1629     1 /usr/sbin/sshd              ?
 1684     1 /usr/sbin/boa               ?

可以通过这样的方法来判断进程是否为daemon
/*
 * 判断进程是否为daemon进程]]></description><category></category></item><item><title><![CDATA[删除匹配关键字的行和后几行]]></title><link>https://blog.csdn.net/hoi0714/article/details/7339663</link><guid>https://blog.csdn.net/hoi0714/article/details/7339663</guid><author>hoi0714</author><pubDate>Sat, 10 Mar 2012 14:13:26 +0800</pubDate><description><![CDATA[text.txt:
37. Yahoo! Messenger: Chat (12) 
This scenario contains user-initiated operations of Yahoo! Messenger on a PC.  The user logs into Yahoo! Messenger, selects a friend, and initiates a chat]]></description><category></category></item><item><title><![CDATA[linux2.6内核系统调用的增加方法]]></title><link>https://blog.csdn.net/hoi0714/article/details/7324394</link><guid>https://blog.csdn.net/hoi0714/article/details/7324394</guid><author>hoi0714</author><pubDate>Tue, 06 Mar 2012 13:15:05 +0800</pubDate><description><![CDATA[内核版本linux-2.6.38
1. 定义系统调用名
在linux-2.6.38/kernel目录新增一C文件，如：newsyscall.c
#include 
#include 


asmlinkage int sys_newsyscall(int a, int b)
{
	int c = 0;
	printk("Add a new syscall!\n");
	c = a + b;]]></description><category></category></item><item><title><![CDATA[程序中打印IP的方法]]></title><link>https://blog.csdn.net/hoi0714/article/details/7317469</link><guid>https://blog.csdn.net/hoi0714/article/details/7317469</guid><author>hoi0714</author><pubDate>Sun, 04 Mar 2012 11:19:03 +0800</pubDate><description><![CDATA[IP的打印，老是记不住
应用层
printf("ip = %d.%d.%d.%d", NIPQUAD(ip));
内核
printk("ip = %pI4", NIPQUAD(ip));]]></description><category></category></item><item><title><![CDATA[字节对齐的一般算法]]></title><link>https://blog.csdn.net/hoi0714/article/details/7297777</link><guid>https://blog.csdn.net/hoi0714/article/details/7297777</guid><author>hoi0714</author><pubDate>Mon, 27 Feb 2012 12:39:25 +0800</pubDate><description><![CDATA[比如要4字节对齐的话，采用的计算方法为：
int align_base = 4;
align_len = (len + (align_base - 1)) & ~align_base;]]></description><category></category></item></channel></rss>