<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Hokeo的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Hokeo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Hokeo]]></copyright><item><title><![CDATA[使用VIM 将文本中某个字符串替换成另外一个字符串方法]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/38580905</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/38580905</guid><author>Hokeo</author><pubDate>Fri, 15 Aug 2014 10:00:27 +0800</pubDate><description><![CDATA[:s/well/good/ 替换当前行第一个 well
 为 good

:s/well/good/g 替换当前行所有 well 为 good

:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good

:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good

n 为数字，若 n 为 .]]></description><category></category></item><item><title><![CDATA[shell快捷键使用技巧]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/38564335</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/38564335</guid><author>Hokeo</author><pubDate>Thu, 14 Aug 2014 21:26:06 +0800</pubDate><description><![CDATA[Ctrl+p重复上一次命令 
Ctrl+a跳到第一个字符前 
Ctrl+x同上但再按一次会从新回到原位置 
Ctrl+b前移一个字符不删除字符情况下 
Ctrl+h删除前一个字符 
Ctrl+u删除提示符前的所有字符 
Ctrl+w同上 
Ctrl+d删除提示符后一个字符或exit或logout 
Ctrl+e转到字符尾部 
Ctrl+f后移一个字符 
Ctrl+k删除提示符后]]></description><category></category></item><item><title><![CDATA[c 结构体之位域（位段）]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/37963255</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/37963255</guid><author>Hokeo</author><pubDate>Sat, 19 Jul 2014 16:22:44 +0800</pubDate><description><![CDATA[有些信息在存储时，并不需要占用一个完整的字节， 而只需占几个或一个二进制位。例如在存放一个开关量时，只有0和1 两种状态， 用一位二进位即可。为了节省存储空间，并使处理简便，C语言又提供了一种数据结构，称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域， 并说明每个区域的位数。每个域有一个域名，允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位]]></description><category></category></item><item><title><![CDATA[Python对象的深拷贝与浅拷贝]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/37914905</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/37914905</guid><author>Hokeo</author><pubDate>Thu, 17 Jul 2014 21:29:21 +0800</pubDate><description><![CDATA[本文内容是在《Python核心编程2》上看到的，感觉很有用便写出来，给大家参考参考！

浅拷贝

首先我们使用两种方式来拷贝对象，一种是切片，另外一种是工厂方法。然后使用id函数来看看它们的标示符







1

2

3

4

5

6

7




#
 encoding=UTF-8

 

obj
 = ['name]]></description><category></category></item><item><title><![CDATA[How to create and apply a patch with Git]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/37756635</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/37756635</guid><author>Hokeo</author><pubDate>Mon, 14 Jul 2014 10:12:12 +0800</pubDate><description><![CDATA[Git is quite common nowadays and a lot of people are asking me how they can create a patch file. Creating a patch file with git is quite easy to do, you just need to see how it's done a few times.

]]></description><category></category></item><item><title><![CDATA[Shell 快捷键助你一臂之力]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/37736517</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/37736517</guid><author>Hokeo</author><pubDate>Sun, 13 Jul 2014 10:05:20 +0800</pubDate><description><![CDATA[工作以来都在接触Linux和Unix系统，所以对这两类系统用的多，也比较熟悉。渐渐的，Shell中的快捷键也运用自如，一次朋友看到我快捷的操作shell命令，很好奇的建议，什么时候教教他这些快捷方式。特撰写此文，来提高大家的工作效率和保护你们的键盘。

下述所有命令在Linux/unix的shell下有效，这里以bash为主。如有出入，以你自己的操作系统为准。

开始描述之前，先问几个常见]]></description><category></category></item><item><title><![CDATA[Makefile中指示符“include”、“-include”和“sinclude”的区别]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/37695207</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/37695207</guid><author>Hokeo</author><pubDate>Fri, 11 Jul 2014 14:34:53 +0800</pubDate><description><![CDATA[指示符“include”、“-include”和“sinclude”

 

如果指示符“include”指定的文件不是以斜线开始（绝对路径，如/usr/src/Makefile...），而且当前目录下也不存在此文件；make将根据文件名试图在以下几个目录下查找：首先，查找使用命令行选项“-I”或者“--include-dir”指定的目录，如果找到指定的文件，则使用这个文件；否则继续依此搜]]></description><category></category></item><item><title><![CDATA[Makefile自动依赖]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/37519029</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/37519029</guid><author>Hokeo</author><pubDate>Mon, 07 Jul 2014 16:16:57 +0800</pubDate><description><![CDATA[Makefile生成自动依赖的方法有两种：

1．  将所有.o文件的依赖关系写入单独文件，然后在Makefile中调用该文件

2．  每个.c文件对应一个.d文件，将依赖关系写入.d文件中

 

 

一、对于第一种方法，Makefile的写法如下：

#file start

CC = gcc

SRCS := $(wildcard *.c)

OBJS]]></description><category></category></item><item><title><![CDATA[通用makefile]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/37503387</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/37503387</guid><author>Hokeo</author><pubDate>Mon, 07 Jul 2014 11:30:17 +0800</pubDate><description><![CDATA[######################################
# Copyright (c) 1997 George Foot (george.foot@merton.ox.ac.uk)
# All rights reserved.
######################################
#目标（可执行文档）名称，库（譬如stdcx,iostr,mys]]></description><category></category></item><item><title><![CDATA[makefile学习总结-----make的递归执行]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/36435739</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/36435739</guid><author>Hokeo</author><pubDate>Wed, 02 Jul 2014 17:32:06 +0800</pubDate><description><![CDATA[make的递归调用指的是：在Makefile中使用“make”作为一个命令来执行本身或者其它makefile文件。递归调用在一个村在有多级子目录的项目中非常有用。例如，当前目录下存在一个“subdir”子目录，这个子目录中有描述这个目录编译规则的makefile文件，在执行make时需要从上层目录（当前目录）开始并完成它所有子目录的编译。那么在当前目录下可以使用这样一个规则来实现对它的子目录的编译]]></description><category></category></item><item><title><![CDATA[makefile学习总结-----自动化变量]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/36422375</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/36422375</guid><author>Hokeo</author><pubDate>Wed, 02 Jul 2014 15:34:47 +0800</pubDate><description><![CDATA[$@  
代表规则中的目标文件名。如果目标是一个文档（Linux中，一般称.a文件为文档），那么它代表这个文档的文件名。在多目标的模式规则中，它代表的是哪个触发规则被执行的目标文件名。  
$%  
规则的目标文件是一个静态库文件时，代表静态库的一个成员名。例如，规则的目标是“foo.a(bar.o)”，那么，“$%”的值就为“bar.o”，“$@”的值为“foo.a”。如果目标不是函数库文]]></description><category></category></item><item><title><![CDATA[makefile学习总结-----搜索目录]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/36419857</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/36419857</guid><author>Hokeo</author><pubDate>Wed, 02 Jul 2014 15:02:50 +0800</pubDate><description><![CDATA[在一个较大的工程中，一般会将源代码和二进制文件（.o文件和可执行文件）安排在不同的目录来进行区分管理。这种情况下，我们需要使用make提供的目录自动搜索依赖文件功能（在指定的若干个目录下搜索依赖文件）。书写makefile时，指定依赖文件的搜索目录。当工程的目录结构发生变化时，我们就可以不更改Makefile的规则，而只更改依赖文件的搜索目录。
本节我们将详细讨论在书写Makefile时如何使用]]></description><category></category></item><item><title><![CDATA[makefile学习总结-----通配符使用]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/36388351</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/36388351</guid><author>Hokeo</author><pubDate>Wed, 02 Jul 2014 10:51:52 +0800</pubDate><description><![CDATA[Maekfile中表示一个单一的文件名时可使用通配符。可使用的通配符有：“*”、“?”和“[…]”。在Makefile中通配符的用法和含义和Linux（unix）的Bourne shell完全相同。例如，“*.c”代表了当前工作目录下所有的以“.c”结尾的文件等。但是在Makefile中这些统配符并不是可以用在任何地方，Makefile中统配符可以出现在以下两种场合：
1.        可以用]]></description><category></category></item><item><title><![CDATA[makefile学习总结-----基础知识]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/36375721</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/36375721</guid><author>Hokeo</author><pubDate>Wed, 02 Jul 2014 10:04:05 +0800</pubDate><description><![CDATA[Makefile的内容在一个完整的Makefile中，包含了5个东西：显式规则、隐含规则、变量的定义、指示符和注释。关于“规则”、“变量”和“Makefile指示符”将在后续的章节进行详细的讨论。本章讨论的是一些基本概念。

²       显式规则：它描述了在何种情况下如何更新一个或者多个被称为目标的文件（Makefile的目标文件）。在书写Makefile是需要明确地给出目标文件、目标的依]]></description><category></category></item><item><title><![CDATA[单链表插入c语言实现]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/35554357</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/35554357</guid><author>Hokeo</author><pubDate>Sat, 28 Jun 2014 10:49:26 +0800</pubDate><description><![CDATA[int list_insert(Node **linkp, int newValue)
{
	Node *current;
	Node *newNode;

	while (((current = *linkp) != NULL) && (current->value < newValue))
	{
	    linkp = &(current->link);
	}

	newNode = (No]]></description><category></category></item><item><title><![CDATA[常见字符串函数实现]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/34499625</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/34499625</guid><author>Hokeo</author><pubDate>Wed, 25 Jun 2014 22:27:08 +0800</pubDate><description><![CDATA[1. strlen
int strlen(const char * string)
{
    assert(string != NULL);

    int lenth = 0;
    
    while(*string++)
    {
        lenth++;
    }
    return lenth;
}
2. strcat
char * strcat(char *]]></description><category></category></item><item><title><![CDATA[ucos中的三种临界区管理机制]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/31733419</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/31733419</guid><author>Hokeo</author><pubDate>Tue, 17 Jun 2014 09:32:36 +0800</pubDate><description><![CDATA[熟悉ucos，或者读过Jean.J.Labrosse写过的ucos书籍的人，一定会知道ucos中著名的临界去管理宏：OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。

同样是通过关中断来保护临界区，OS_ENTER_CRITICAL/OS_EXIT_CRITICAL一共实现了三种实现方式，如下所示：





[cpp] view
 plaincop]]></description><category></category></item><item><title><![CDATA[const和volatile]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/30987151</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/30987151</guid><author>Hokeo</author><pubDate>Sun, 15 Jun 2014 14:40:22 +0800</pubDate><description><![CDATA[const和volatile放在一起的意义在于：

（1）本程序段中不能对a作修改，任何修改都是非法的，或者至少是粗心，编译器应该报错，防止这种粗心；
（2）另一个程序段则完全有可能修改，因此编译器最好不要做太激进的优化。

“const”含义是“请做为常量使用”，而并非“放心吧，那肯定是个常量”。
“volatile”的含义是“请不要做没谱的优化，这个值可能变掉的”，而并非“你可以修]]></description><category></category></item><item><title><![CDATA[git commit简介]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/30458117</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/30458117</guid><author>Hokeo</author><pubDate>Fri, 13 Jun 2014 09:37:31 +0800</pubDate><description><![CDATA[在用git来进行版本控制时，我需要执行git commit命令，将索引内容添加到仓库中。

示例1：

git commit  -m "提交的描述信息"

如果我们这里不用-m参数的话，git将调到一个文本编译器（通常是vim）来让你输入提交的描述信息


可能一天下来，你对工作树中的许多文档都进行了更新（文档添加、修改、删除），但是我忘记了它们的名字，此时若将所做的全部更新添加]]></description><category></category></item><item><title><![CDATA[git add]]></title><link>https://blog.youkuaiyun.com/Hokeo/article/details/30458053</link><guid>https://blog.youkuaiyun.com/Hokeo/article/details/30458053</guid><author>Hokeo</author><pubDate>Fri, 13 Jun 2014 09:36:47 +0800</pubDate><description><![CDATA[一、前言
git add命令主要用于把我们要提交的文件的信息添加到索引库中。当我们使用git commit时，git将依据索引库中的内容来进行文件的提交。
二、基本
git add 表示 add to index only files created or modified and not those deleted 
我通常是通过git add 的形式把我们添加到索引库中，可以是文件也可]]></description><category></category></item></channel></rss>