<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ddppqq的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ddppqq</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ddppqq]]></copyright><item><title><![CDATA[判断无向图和有向图是否有回路]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/20579809</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/20579809</guid><author>ddppqq</author><pubDate>Thu, 06 Mar 2014 00:22:47 +0800</pubDate><description><![CDATA[一、无向图回路的判断
    对于无向图，判断其是否有回路有两种方法，如下所示：
    1、利用深度优先搜索DFS，在搜索过程中判断是否会出现后向边（DFS中，连接顶点u到它的某一祖先顶点v的边），即在DFS对顶点进行着色过程中，若出现所指向的顶点为黑色，则此顶点是一个已经遍历过的顶点（祖先），出现了后向边，若完成DFS后，则图中有回路；另外，无环图中变的个数E
    2、在图的邻接表表]]></description><category></category></item><item><title><![CDATA[线程和fork]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/20013911</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/20013911</guid><author>ddppqq</author><pubDate>Thu, 27 Feb 2014 01:08:56 +0800</pubDate><description><![CDATA[一、简介
    当线程调用fork时，就为子进程创建了整个进程地址空间的副本，父子进程通过写时复制技术来共享内存页的这一副本。
    子进程通过几成整个地址空间的副本，也从父进程那里继承了所有互斥量、读写锁和条件变量的状态。如果父进程包含多个线程，子进程在fork返回后，如果紧接着不是马上调用exec的话，就需要清理锁状态。
    在子进程内部只存在一个线程，它是由父进程中调用fork]]></description><category></category></item><item><title><![CDATA[关于浮点数]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/18715211</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/18715211</guid><author>ddppqq</author><pubDate>Thu, 23 Jan 2014 21:40:42 +0800</pubDate><description><![CDATA[一、浮点的精度限制
    看了看《深入理解计算机系统》中有关信息存储的内容，不得不感叹浮点数的存储真让人望而生畏。下面就看看编程中遇到浮点数需要注意的东西吧。
    浮点数的存储格式与整数完全不同。大部分的实现采用的是IEEE 754标准，float类型，是1个sign bit，8 exponent bits，23 mantissa bits。而double类型，是1个sign bit，1]]></description><category></category></item><item><title><![CDATA[信号量中的PV操作]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/18182905</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/18182905</guid><author>ddppqq</author><pubDate>Sun, 12 Jan 2014 15:26:43 +0800</pubDate><description><![CDATA[一、信号量的概念
    1、信号量的类型定义
    信号量（semaphore）的数据结构为一个值和一个指针，指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时，表示当前可用资源的数量；当它的值小于0时，其绝对值表示等待使用该资源的进程个数。注意，信号量的值仅能由PV操作来改变。
    一般来说，信号量S>=0时，S表示可用资源的数量。执行一次P操作]]></description><category></category></item><item><title><![CDATA[一道有关hash的POJ题目：POJ1200 Crazy Search]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/17619723</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/17619723</guid><author>ddppqq</author><pubDate>Fri, 27 Dec 2013 21:39:13 +0800</pubDate><description><![CDATA[一、题目描述
    这里把题目粘过来吧，网页是在http://poj.org/problem?id=1200，题目描述如下：
    Description:
    Many people like to solve hard puzzles some of which may lead them to madness. One such puzzle could be finding ]]></description><category></category></item><item><title><![CDATA[（14）堆]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/17515681</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/17515681</guid><author>ddppqq</author><pubDate>Tue, 24 Dec 2013 21:29:19 +0800</pubDate><description><![CDATA[一、简介
    堆数据结构的性质：堆：任何结点的值都小于或等于其孩子的值的完全二叉树为小根堆，任何结点的值都大于或等于其孩子的值的完全二叉树为大根堆。为了方便使用完全二叉树的性质，假定数组从下标1开始。这样：
leftChild = 2*i;
rightChild = 2*i + 1;
parent = i/2;    堆数据结构算法分析：
    堆排序的最坏时间复杂度为O(nlogn)]]></description><category></category></item><item><title><![CDATA[（13）搜索]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/17513321</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/17513321</guid><author>ddppqq</author><pubDate>Mon, 23 Dec 2013 22:57:36 +0800</pubDate><description><![CDATA[一、简介
    通过构造可生成一个随机整数的有序集合（不允许重复）来引出问题的讨论。C++相关的代码使用了set数据结构，具体代码如下所示：
void gensets(int m, int maxval)
{
    int *v = new int[m];
    IntSetImp S(m, maxval);
    while(S.size() < m)
        S.inser]]></description><category></category></item><item><title><![CDATA[有意思的C语言优先级口诀]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/17400151</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/17400151</guid><author>ddppqq</author><pubDate>Wed, 18 Dec 2013 19:22:04 +0800</pubDate><description><![CDATA[今天看到这个，有点意思，转一转。嘿嘿~


一共有十五个优先级： 
1   ()  []  .  ->

2   !  ~   -（负号） ++  --   &（取变量地址）*   （type）(强制类型)    sizeof 

3   * / %

4   + - 

5   >> 

6   > >= 

7   == !=   

8   &]]></description><category></category></item><item><title><![CDATA[（12）取样问题]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/17336457</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/17336457</guid><author>ddppqq</author><pubDate>Sun, 15 Dec 2013 20:01:52 +0800</pubDate><description><![CDATA[一、简介
    问题描述：程序的输入包含两个整数m和n，其中m
    （1）一般情况下，如果要从r个剩余的整数中选出s个，我们以s/r的概率来选择下一个数。如下伪代码所示：
    select = m  
    remaining = n  
    for i = [0, n)  
      if (bigrand() % remaining) < select]]></description><category></category></item><item><title><![CDATA[（11）排序]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/17334559</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/17334559</guid><author>ddppqq</author><pubDate>Sun, 15 Dec 2013 16:19:34 +0800</pubDate><description><![CDATA[一、排序
    本章以插入排序为伊始，进而介绍了快速排序，以及随机选取划分元素的改进的快速排序，且可根据所要排序元素的多少动态的选择是进行插入排序还是快速排序的算法（在元素较少的排序中，插入排序的运行效果可能更好）。插入排序与快速排序这里就不多介绍了。下面看一个这一章的习题。
    习题第9题中要求编写一个程序，在O（n）时间内从数组x[0...n-1]中找到第k个最小的元素，算法可以对x]]></description><category></category></item><item><title><![CDATA[C语言中可变参数的处理va_list]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/17332161</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/17332161</guid><author>ddppqq</author><pubDate>Sun, 15 Dec 2013 10:57:41 +0800</pubDate><description><![CDATA[今天在看UNPv2的时候看到C语言中可变参数的操作，有必要深究一下，恩。整理下。。。
    va_list是在C语言中解决可变参数问题的一组宏，他有这么几个成员：
    1） va_list型变量：
#ifdef  _M_ALPHA
typedef struct {
        char *a0;       /* pointer to first homed integer arg]]></description><category></category></item><item><title><![CDATA[Unix编程艺术中的17点编程哲学原则]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/17202263</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/17202263</guid><author>ddppqq</author><pubDate>Sun, 08 Dec 2013 17:31:57 +0800</pubDate><description><![CDATA[Unix编程艺术中的17点编程哲学原则        

  ---设计开发者的至高准则

 



译者:July   二零一一年一月十三日。

参考文献：The Art of Unix Programming 
By Eric Steven Raymond


博主说明：本文是依据unix编程艺术一书的英文版，第一章部分章节，所做的翻译。
翻译过程中，参考了其中文]]></description><category></category></item><item><title><![CDATA[inline函数和虚函数的区别]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/17192609</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/17192609</guid><author>ddppqq</author><pubDate>Sat, 07 Dec 2013 21:11:40 +0800</pubDate><description><![CDATA[inline函数和virtual函数有着本质的区别，inline函数是在程序被编译时就展开，在函数调用处用整个函数体去替换，而virtual函数是在运行期才能够确定如何去调用的，因而inline函数体现的是一种编译期机制，virtual函数体现的是一种运行期机制。因此，内联函数是个静态行为，而虚函数是个动态行为，他们之间是有矛盾的。
    函数的inline属性是在编译时确定的， 然而，vir]]></description><category></category></item><item><title><![CDATA[各种Linux错误码]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/17014527</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/17014527</guid><author>ddppqq</author><pubDate>Thu, 28 Nov 2013 23:25:48 +0800</pubDate><description><![CDATA[查了下网上的资料，搜寻了下Linux下的各种错误码。摘自/usr/include/asm/errno.h。。如下所示：
#ifndef _I386_ERRNO_H
#define _I386_ERRNO_H
#define EPERM            1      /* Operation not permitted */
#define ENOENT           2      /]]></description><category></category></item><item><title><![CDATA[（9~10）代码调优、空间节省]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/16901715</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/16901715</guid><author>ddppqq</author><pubDate>Sat, 23 Nov 2013 15:38:03 +0800</pubDate><description><![CDATA[一、代码调优
     1、问题1--整数取模
    一种算法是：
k = (j + rotdist)%n;    另一种优化方法是：
k = j + rotdist;
if(k >= n)
    k -=n;
    2、问题2--函数、宏和内联代码
    通过宏替换函数来打破函数层次，提高算法效率。
    3、问题3--顺序搜索
    一种优化是设置哨兵值来测试是否已]]></description><category></category></item><item><title><![CDATA[（8）算法设计]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/16901355</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/16901355</guid><author>ddppqq</author><pubDate>Sat, 23 Nov 2013 15:24:10 +0800</pubDate><description><![CDATA[一、算法设计
    1、问题描述：输入具有n个浮点数的向量x，输出是输入向量的任何连续子向量中的最大和。
    有效解决方法：
    （1）分治算法：要解决规模为n的问题，可递归得解决两个规模近似为n/2的子问题，然后对他们的答案进行合并以得到整个问题的答案。
    代码如下，最大子向量要么整个在a中，要么整个在b中，要么跨越a和b之间的边界。跨越a和b 的边界时，其最大子向量在a]]></description><category></category></item><item><title><![CDATA[我的GitHub]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/16104839</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/16104839</guid><author>ddppqq</author><pubDate>Wed, 13 Nov 2013 22:08:20 +0800</pubDate><description><![CDATA[做个宣传吧，GitHub大家都知道，很好用，而且真的对于开源项目来说太牛了。先给大家介绍几个当时玩Github的时候收藏的有意思的网页吧：
    1、GitHub上的一些热门开源项目：http://www.youkuaiyun.com/article/2012-07-30/2807869-GitHub-hottest-projects；
    2、如何在GitHub上开源项目：http://www.c]]></description><category></category></item><item><title><![CDATA[（5~7）编程小事、程序性能分析及粗略估算]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/16100685</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/16100685</guid><author>ddppqq</author><pubDate>Wed, 13 Nov 2013 21:57:15 +0800</pubDate><description><![CDATA[这几章是在没啥总结的，就码点有意思的话吧。
    1、assert表示我们相信某个逻辑表达式为真，若表达式为假则会报告某种错误；
    2、得到正确程序需要做的主要有：脚手架、编码、测试、调试及计时；
    3、想提高程序的性能，可以从以下几个方面进行入手和综合考虑：问题定义、系统结构、算法和数据结构、算法调优、数据结构重组、代码调优、硬件；
    4、如果性能问题无法回避，则在设]]></description><category></category></item><item><title><![CDATA[（4）编写正确的程序]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/15566933</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/15566933</guid><author>ddppqq</author><pubDate>Tue, 12 Nov 2013 20:31:57 +0800</pubDate><description><![CDATA[一、简介
    编程技巧斤斤是编写正确程序的很小一部分，大部分内容还是前三节的主题：问题定义、算法设计及数据结构的选择。
    一个正确运行的程序，其需要断言、顺序控制结构、选择控制结构及迭代控制结构。并且需要使用测试用例来保证程序的正确性。
二、习题
    1、给定一个盛有黑豆子和白豆子的咖啡罐以及一大堆额外的黑豆子，重复一下过程，直到仅剩下一个豆子为止。
    从罐子中随机取]]></description><category></category></item><item><title><![CDATA[（3）数据决定程序结构]]></title><link>https://blog.youkuaiyun.com/ddppqq/article/details/15486757</link><guid>https://blog.youkuaiyun.com/ddppqq/article/details/15486757</guid><author>ddppqq</author><pubDate>Mon, 11 Nov 2013 22:53:42 +0800</pubDate><description><![CDATA[一、格式信函编程
    编写一个格式信函发声器，该发声器基于格式信函模板。可将数据从控制中分离出来。
二、用于特殊数据的强大工具
    在实际应用中，每种工具都是用数据的某一视图来解决特定但又通用的问题。主要包括超文本、名字-值对、电子表格、数据库、特定领域的编程语言。
三、原理
    数据结构对软件的一个贡献就是将大程序缩小为小程序。数据结构设计还有许多其他正面影响，包括节省时间]]></description><category></category></item></channel></rss>