<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wjflyhigh的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wjflyhigh</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wjflyhigh]]></copyright><item><title><![CDATA[dd命令简介]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/12456929</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/12456929</guid><author>wjflyhigh</author><pubDate>Tue, 08 Oct 2013 23:16:14 +0800</pubDate><description><![CDATA[先简要介绍dd的参数，后边通过几个实例介绍dd的应用，参考了其他网友的资料，在此一并感谢 

小菜水平有限文中有什么错误请大家指正，关于dd还有什么好的使用方法，可以贴出来，小菜会及时更新 


dd 是 Linux/UNIX 下的一个非常有用的命令，作用是用指定大小的块拷贝一个文件，并在拷贝的同时进行指定的转换。 

1. 命令简介 

dd 的主要选项： 

指定数字的地]]></description><category></category></item><item><title><![CDATA[一个C语言程序被编译的全过程]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/11901651</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/11901651</guid><author>wjflyhigh</author><pubDate>Sun, 22 Sep 2013 16:27:10 +0800</pubDate><description><![CDATA[编译的概念：编译程序读取源程序（字符流），对之进行词法和语法的分析，将高级语言指令转换为功能等效的汇编代码，再由汇编程序转换为机器语言，并且按照操作系统对可执行文件格式的要求链接生成可执行程序。


编译的完整过程：C源程序－－>预编译处理(.c)－－>编译、优化程序（.s、.asm）－－>汇编程序(.obj、.o、.a、.ko)－－>链接程序（.exe、.elf、.axf等）


1]]></description><category></category></item><item><title><![CDATA[Linux Socket编程]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/11620597</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/11620597</guid><author>wjflyhigh</author><pubDate>Thu, 12 Sep 2013 23:31:32 +0800</pubDate><description><![CDATA[“一切皆Socket！”

话虽些许夸张，但是事实也是，现在的网络编程几乎都是用的socket。

——有感于实际编程和开源项目研究。

我们深谙信息交流的价值，那网络中进程之间如何通信，如我们每天打开浏览器浏览网页时，浏览器的进程怎么与web服务器通信的？当你用QQ聊天时，QQ进程怎么与服务器或你好友所在的QQ进程通信？这些都得靠socket？那什么是socket？socket的类型]]></description><category></category></item><item><title><![CDATA[c语言内存泄露示例]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/10415359</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/10415359</guid><author>wjflyhigh</author><pubDate>Tue, 27 Aug 2013 19:57:42 +0800</pubDate><description><![CDATA[存在内存错误的 C 和 C++ 程序会导致各种问题。如果它们泄漏内存，则运行速度会逐渐变慢，并最终停止运行；如果覆盖内存，则会变得非常脆弱，很容易受到恶意用户的攻击。从 1988 年著名的莫里斯蠕虫 攻击到有关 Flash Player 和其他关键的零售级程序的最新安全警报都与缓冲区溢出有关：“大多数计算机安全漏洞都是缓冲区溢出”，Rodney Bates 在 2004 年写道。


在可以]]></description><category></category></item><item><title><![CDATA[Linux中的工作队列]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/10412971</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/10412971</guid><author>wjflyhigh</author><pubDate>Tue, 27 Aug 2013 18:29:29 +0800</pubDate><description><![CDATA[工作队列(work queue)是Linux
 kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行，因此工作队列的优势就在于它允许重新调度甚至睡眠。
工作队列是2.6内核开始引入的机制，在2.6.20之后，工作队列的数据结构发生了一些变化，因此本文分成两个部分对2.6.20之前和之后的版本分别做介绍。


I、]]></description><category></category></item><item><title><![CDATA[MAC地址与IP地址绑定策略的破解]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/10325343</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/10325343</guid><author>wjflyhigh</author><pubDate>Mon, 26 Aug 2013 09:54:23 +0800</pubDate><description><![CDATA[1 引言
　　对“ip地址盗用”的解决方案绝大多数都是采取MAC与IP地址绑定策略，这种做法是十分危险的，本文将就这个问题进行探讨。在这里需要声明的是，本文是处于对对MAC与IP地址绑定策略安全的忧虑，不带有任何黑客性质。
　　
　　1.1 为什么要绑定MAC与IP 地址
　　
　　影响网络安全的因素很多，IP地址盗用或地址欺骗就是其中一个常见且危害极大的因素。现实中，许多网络应用是基于]]></description><category></category></item><item><title><![CDATA[关于/usr/bin/env]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9769131</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9769131</guid><author>wjflyhigh</author><pubDate>Mon, 05 Aug 2013 16:44:46 +0800</pubDate><description><![CDATA[在linux的一些bash的脚本，需在开头一行指定脚本的解释程序，如：
#!/usr/bin/env python
再如：
#!/usr/bin/env perl
#!/usr/bin/env zimbu
但有时候也用
#!/usr/bin/python
和
#!/usr/bin/perl
那么 env到底有什么用？何时用这个呢？
脚本用env启动的原因，是因为脚本解释器在li]]></description><category></category></item><item><title><![CDATA[C语言运算符的优先级]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9714899</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9714899</guid><author>wjflyhigh</author><pubDate>Fri, 02 Aug 2013 11:44:57 +0800</pubDate><description><![CDATA[优先级


运算符


名称或含义


使用形式


结合方向


说明




1


[]


数组下标


数组名[常量表达式]


左到右

 



()


圆括号


（表达式）/函数名(形参表)

 



.


成员选择（对象）


对象.成员名

 


]]></description><category></category></item><item><title><![CDATA[gcov和lcov代码覆盖率工具]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9671045</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9671045</guid><author>wjflyhigh</author><pubDate>Wed, 31 Jul 2013 17:54:18 +0800</pubDate><description><![CDATA[1.GCOV查看arm-linux代码覆盖率 
一、           关于gcov工具
gcov伴随gcc 发布。gcc编译加入-fprofile-arcs -ftest-coverage 参数生成二进制程序，执行测试用例生成代码覆盖率信息。
1、如何使用gcov
用GCC编译的时候加上-fprofile-arcs -ftest-coverage选项，链接的时候也加上。
fprofi]]></description><category></category></item><item><title><![CDATA[等待队列（二）]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9667789</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9667789</guid><author>wjflyhigh</author><pubDate>Wed, 31 Jul 2013 14:35:18 +0800</pubDate><description><![CDATA[通过 前一篇文章 的介绍我们队等待队列有了一个比较具体的认识，本文将来分析一下等待队列是如何睡眠一个进程和如何唤醒一个进程的。
使用等待队列前通常先定义一个等待队列头：static wait_queue_head_t wq ,然后调用wait_event_*函数将等待某条件condition的当前进程插入到等待队列wq中并睡眠，一直等到condition条件满足后，内核再将睡眠在等待队列wq上的]]></description><category></category></item><item><title><![CDATA[等待队列（一）]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9667659</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9667659</guid><author>wjflyhigh</author><pubDate>Wed, 31 Jul 2013 14:33:38 +0800</pubDate><description><![CDATA[在Linux内核中等待队列有很多用途，可用于中断处理、进程同步及定时。我们在这里只说，进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列，并放弃控制全。因此，等待队列表示一组睡眠的进程，当某一条件为真时，由内核唤醒它们。
等待队列由循环链表实现，其元素包括指向进程描述符的指针。每个等待队列都有一个等待队列头(wait queue h]]></description><category></category></item><item><title><![CDATA[编译Linux内核]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9664897</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9664897</guid><author>wjflyhigh</author><pubDate>Wed, 31 Jul 2013 10:57:13 +0800</pubDate><description><![CDATA[内核，是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统，决定着系统的性能和稳定性。Linux作为一个自由软件，在广大爱好者的支持下，内核版本不断更新。新的内核修订了旧内核的bug，并增加了许多新的特性。如果用户想要使用这些新特性，或想根据自己的系统度身定制一个更高效，更稳定的内核，就需要重新编译内核。本文将以RedHat
 Linux 6.0（kernel 2.2.]]></description><category></category></item><item><title><![CDATA[C语言中scanf/fscanf 的%[]和%n说明符的使用方法]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9127041</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9127041</guid><author>wjflyhigh</author><pubDate>Wed, 19 Jun 2013 11:31:20 +0800</pubDate><description><![CDATA[标准输入输出函数%[]和%n说明符的使用方法 
   scanf fscanf,均从第一个非空格的可显示字符开始读起！
        标准输入输出函数scanf具有相对较多的转换说明符，它常常作为入门级函数出现在各种教材中。但奇怪的是，[]和n这两种都为c89/c99所规定的标准说明符却鲜少在大多数教材中出现。虽然[]和n说明符的使用频率不及其它说明符，但两者在程序设计中的作用仍然不可小视，]]></description><category></category></item><item><title><![CDATA[迪杰斯特拉算法--数据结构]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9124633</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9124633</guid><author>wjflyhigh</author><pubDate>Tue, 18 Jun 2013 22:44:07 +0800</pubDate><description><![CDATA[Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法，用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展，直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解，但由于它遍历计算的节点很多，所以效率低。

　　Dijkstra算法是很有代表性的最短路算法，在很多专业课程中都作为基本内容有详细的介绍，如数据结构，图论，运筹学等等。

其基本思想是，设]]></description><category></category></item><item><title><![CDATA[arping命令]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9121447</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9121447</guid><author>wjflyhigh</author><pubDate>Tue, 18 Jun 2013 16:02:21 +0800</pubDate><description><![CDATA[arping是用于发送arp请求到一个相邻主机的工具；
arping使用arp数据包，通过ping命令检查设备上的硬件地址。

语法：
[root@ha01 ~]# arping
Usage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination
  -f : quit on firs]]></description><category></category></item><item><title><![CDATA[汉诺塔--（数据结构）]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9121129</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9121129</guid><author>wjflyhigh</author><pubDate>Tue, 18 Jun 2013 15:39:09 +0800</pubDate><description><![CDATA[我的数据结构学习从汉诺塔开始，这个简单的算法我可是整整想了一晚上，现在终于有点明白了，上机单步了几遍，有所了解，，还是写点什么以供以后参考，也希望能对正在学算法的盆友有所裨益······

       总得来说汉诺塔就是层叠递归调用的典型例子，一直是利用A—>B  A-->C  B-->C这样的单个步骤。

       具体来说，当盘数大于一时，不违背原则下（过程中总是大在下小的在上）]]></description><category></category></item><item><title><![CDATA[动态切换 Linux 使用的 CPU 数量]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9095877</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9095877</guid><author>wjflyhigh</author><pubDate>Fri, 14 Jun 2013 16:23:28 +0800</pubDate><description><![CDATA[动态切换 Linux 使用的 CPU 数量


摘要: 由于要测试一些代码，其运行结果会受到多核并行的影响，所以希望能够调整使用的 CPU 数量。网络上之前看到的方法是在内核的启动参数上添加一个 maxcpus，但是如果这样的话每切换一次都要重启一次，是在太麻烦了。想 ...
由于要测试一些代码，其运行结果会受到多核并行的影响，所以希望能够调整使用的 CPU 数量。
网络上之前看到的方法]]></description><category></category></item><item><title><![CDATA[指定进程运行的CPU]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9092615</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9092615</guid><author>wjflyhigh</author><pubDate>Fri, 14 Jun 2013 10:42:26 +0800</pubDate><description><![CDATA[coolshell最新的文章《性能调优攻略》在“多核CPU调优”章节，提到“我们不能任由操作系统负载均衡，因为我们自己更了解自己的程序，所以，我们可以手动地为其分配CPU核，而不会过多地占用CPU0，或是让我们关键进程和一堆别的进程挤在一起。”。在文章中提到了Linux下的一个工具，taskset，可以设定单个进程运行的CPU。

同时，因为最近在看redis的相关资料，redis作为单进程模]]></description><category></category></item><item><title><![CDATA[perf event]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9081027</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9081027</guid><author>wjflyhigh</author><pubDate>Wed, 12 Jun 2013 21:59:32 +0800</pubDate><description><![CDATA[Perf Event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具，由内核社区维护和发展。Perf不仅可以用于应用程序的性能统计分析，也可以应用于内核代码的性能统计和分析。得益于其优秀的体系结构设计，越来越多的新功能被加入Perf，使其已经成为一个多功能的性能统计工具集 。本文将介绍 Perf 在应用程序开发上的应用。

　　Perf 简介

　　Perf 是用来进行软件性能]]></description><category></category></item><item><title><![CDATA[KMP匹配算法]]></title><link>https://blog.youkuaiyun.com/wjflyhigh/article/details/9028409</link><guid>https://blog.youkuaiyun.com/wjflyhigh/article/details/9028409</guid><author>wjflyhigh</author><pubDate>Wed, 05 Jun 2013 10:24:14 +0800</pubDate><description><![CDATA[在开发中，经常会遇到在一个字节数组中，查找一个子数组的问题。如果不是字节数组，而是字符串的话，直接通过 string.IndexOf 就可以解决，对于字节数组还是需要做一点功课。

 

因为字符串比较容易观察，所以，我们首先通过字符串来分析，然后，再在字节数组上实现。

 

问题：

对于一个源字符串 source = "abababaababacb" 来说，查找其中包含子]]></description><category></category></item></channel></rss>