<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JJDiaries]]></title><description><![CDATA[也许，人们的坚持，往往不是因为相信未来，而是他们不想背叛过去。梦想如此，活着也是如此。——程浩]]></description><link>https://blog.youkuaiyun.com/Viidiot</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Viidiot]]></copyright><item><title><![CDATA[谷歌新Logo如何做到只有305字节]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/48412897</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/48412897</guid><author>Viidiot</author><pubDate>Sun, 13 Sep 2015 09:53:41 +0800</pubDate><description><![CDATA[谷歌新旧Logo

谷歌换logo已经有一段时间了，对于更换Logo的问题，大家讨论的最多的是到底新老Logo哪个更好看。

但也有个别同学注意到了一个事实:谷歌的新Logo只有305字节那么大，而老的Logo则有14000字节。

咳咳，按照谷歌的网络流量，单单一个Logo就能为整个互联网省下不少带宽啊。新Logo为什么就这么小呢？

谷歌的旧Logo使用了serif字体，而这类]]></description><category></category></item><item><title><![CDATA[程序员面试题集锦]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/48253363</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/48253363</guid><author>Viidiot</author><pubDate>Sun, 06 Sep 2015 23:23:48 +0800</pubDate><description><![CDATA[谷歌面试官经典作品(CTCI)目录

1.1 判断一个字符串中的字符是否唯一

1.2 字符串翻转

1.3 去除字符串中重复字符

1.8 利用已知函数判断字符串是否为另一字符串的子串

2.1 从链表中移除重复结点

2.2 实现一个算法从一个单链表中返回倒数第n个元素

2.3 给定链表中间某结点指针，删除链表中该结点

2.4 求由两个链表结点组成的数之和]]></description><category></category></item><item><title><![CDATA[程序员面试中常见10大算法汇总]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/48102637</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/48102637</guid><author>Viidiot</author><pubDate>Sun, 30 Aug 2015 10:43:04 +0800</pubDate><description><![CDATA[以下是在编程面试中排名前10的算法相关的概念，我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力，因此这份列表只是作为一个介绍。本文将从Java的角度看问题，包含下面的这些概念：

1. 字符串

如果IDE没有代码自动补全功能，所以你应该记住下面的这些方法。
toCharArray() // 获得字符串对应的char数组
Arrays.sort() // 数组排序]]></description><category></category></item><item><title><![CDATA[TCP-IP协议详解(2) 以太网与WiFi协议]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/48096295</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/48096295</guid><author>Viidiot</author><pubDate>Sun, 30 Aug 2015 00:36:31 +0800</pubDate><description><![CDATA[在阅读“TCP-IP协议详解”系列文章之前，建议阅读以下两篇文章，以便对互联网协议有个快速的全局了解和把握！
互联网协议入门(一)
互联网协议入门(二)


“小喇叭开始广播啦”，如果你知道这个，你一定是老一辈的人。“小喇叭”是五十年代到八十年代的儿童广播节目。在节目一开始，都会有一段这样的播音：“小朋友，小喇叭开始广播了！” 听到这里，收音机前的小朋友就兴奋起来，准备好听节目了：这一期]]></description><category></category></item><item><title><![CDATA[TCP-IP协议详解(1)网络协议概观]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/48095945</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/48095945</guid><author>Viidiot</author><pubDate>Sun, 30 Aug 2015 00:34:29 +0800</pubDate><description><![CDATA[在阅读“TCP-IP协议详解”系列文章之前，建议阅读以下两篇文章，以便对互联网协议有个快速的全局了解和把握！
互联网协议入门(一)
互联网协议入门(二)


信号的传输总要符合一定的协议(protocol)。比如说长城上放狼烟，是因为人们已经预先设定好狼烟这个物理信号代表了“敌人入侵”这一抽象信号。这样一个“狼烟=敌人入侵”就是一个简单的协议。协议可以更复杂，比如摩尔斯码(Morse C]]></description><category></category></item><item><title><![CDATA[django开发博客(1) 入门]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/48095147</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/48095147</guid><author>Viidiot</author><pubDate>Sun, 30 Aug 2015 00:30:45 +0800</pubDate><description><![CDATA[现在正式开始博客开发

1、安装django1.4

如果你使用的是fedoraDVD版，安装时选择了web开发组建，这一步可以省略，因为它自带django环境

django下载地址 https://www.djangoproject.com/download/  这里我们选择最新版

然后在终端下打开下载目录

tar xzvf Django-*.tar.gz 。

cd ]]></description><category></category></item><item><title><![CDATA[「专治不明觉厉」之“大数据”]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/48094897</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/48094897</guid><author>Viidiot</author><pubDate>Sun, 30 Aug 2015 00:29:02 +0800</pubDate><description><![CDATA[大数据（Big Data）



大数据，官方定义是指那些数据量特别大、数据类别特别复杂的数据集，这种数据集无法用传统的数据库进行存储，管理和处理。大数据的主要特点为数据量大（Volume），数据类别复杂（Variety），数据处理速度快（Velocity）和数据真实性高（Veracity），合起来被称为4V。



大数据中的数据量非常巨大，达到了PB级别。而且这庞大的数据之中，]]></description><category></category></item><item><title><![CDATA[深夜随笔]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/48094549</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/48094549</guid><author>Viidiot</author><pubDate>Sun, 30 Aug 2015 00:22:58 +0800</pubDate><description><![CDATA[好久没来优快云写博客了。看到最近一篇博文，已经是快两年前的事了。
时间过得太快，从学校毕业来到一个陌生的城市，再从一个陌生的城市去到另一个陌生的城市。
生活就是这样。身边的人来去匆匆，自己也是漂浮不定。
女神，还是那么遥远。
她依然是在梦里，穿着碎花洋裙，天真烂漫。
问归期，未有期。

我在西二旗。
等你！]]></description><category></category></item><item><title><![CDATA[(十一)二叉查找树]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16832737</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16832737</guid><author>Viidiot</author><pubDate>Wed, 20 Nov 2013 08:28:59 +0800</pubDate><description><![CDATA[一颗二叉查找树
/*******************************************二叉查找树，支持的操作包括：SERACH、MINIMUM、
MAXIMUM、PREDECESSOR、SUCCESSOR、INSERT、DELETE。
定理：对于一个高度为h的二叉查找树，操作SERACH、MINIMUM、
MAXIMUM、PREDECESSOR、SUCCESSOR的运行时间均为]]></description><category></category></item><item><title><![CDATA[libxml2的编译与安装]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16833701</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16833701</guid><author>Viidiot</author><pubDate>Tue, 19 Nov 2013 23:21:29 +0800</pubDate><description><![CDATA[1. 下载和安装LIBXML2
    Libxml2是个C语言的XML程式库，能简单方便的提供对XML文件的各种操作，并且支持XPATH查询，及部分的支持XSLT转换等功能。Libxml2的下载地址是
http://xmlsoft.org/
，完全版的库是开源的，并且带有例子程式和说明文件。最佳将这个库先下载下来，因为这样能查看其中的文件和例子。
由于我是在linux下用C语言进行研发的]]></description><category></category></item><item><title><![CDATA[(十)哈希表]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16491521</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16491521</guid><author>Viidiot</author><pubDate>Sun, 17 Nov 2013 20:40:50 +0800</pubDate><description><![CDATA[利用链表法解决冲突的构建的一个hash表，最终的示意图如下图所示。

下面的代码实现的功能为：将一个网址进行hash，并存放于hash表中。
链表节点包含三个元素：1）存放指向存放网址的指针。2）该网址出现的次数。3）指向下一个节点的指针。
/*******************************************
=================JJ日记=========]]></description><category></category></item><item><title><![CDATA[(九)双链表]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16358331</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16358331</guid><author>Viidiot</author><pubDate>Sat, 16 Nov 2013 16:42:45 +0800</pubDate><description><![CDATA[/*******************************************
双链表操作：list_serach list_insert  list_delete  
相关伪代码：
//在链表L中查找具有关键字k的元素x
list_search(L,k)
	x=head[L]
	while x != NIL and key[x]!=k
		do x <—— next[x]
	retur]]></description><category></category></item><item><title><![CDATA[Linux网络编程(六)]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16357367</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16357367</guid><author>Viidiot</author><pubDate>Sat, 16 Nov 2013 15:10:54 +0800</pubDate><description><![CDATA[网络编程中，使用多路IO复用的典型场合：
1.当客户处理多个描述字时（交互式输入以及网络接口），必须使用IO复用。
2.一个客户同时处理多个套接口。
3.一个tcp服务程序既要处理监听套接口，又要处理连接套接口，一般需要用到IO复用。
4.如果一个服务器既要处理TCP，又要处理UDP，一般也需要用到IO复用。
5.如果一个服务器要处理多个服务或者多个协议，一般需要用到IO复用。
linux提供]]></description><category></category></item><item><title><![CDATA[Linux网络编程(五)]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16357347</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16357347</guid><author>Viidiot</author><pubDate>Sat, 16 Nov 2013 15:10:38 +0800</pubDate><description><![CDATA[/*
Linux网络编程(五)——多路IO复用之select()


网络编程中，使用IO复用的典型场合：
1.当客户处理多个描述字时（交互式输入以及网络接口），必须使用IO复用。
2.一个客户同时处理多个套接口。
3.一个tcp服务程序既要处理监听套接口，又要处理连接套接口，一般需要用到IO复用。
4.如果一个服务器既要处理TCP，又要处理UDP，一般也需要用到IO复用。
5.如果一个服务器要处]]></description><category></category></item><item><title><![CDATA[Linux网络编程(四)]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16357313</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16357313</guid><author>Viidiot</author><pubDate>Sat, 16 Nov 2013 15:10:27 +0800</pubDate><description><![CDATA[在linux网络编程【1-3】中，我们编写的网络程序仅仅是为了了解网络编程的基本步骤，实际应用当中的网络程序并不会用那样的。实际网络程序多使用select、poll、epoll等多路IO复用。在进入主题之前，我们先来了解一下linux的IO模型。
现有的linux IO模型有5种：阻塞式IO模型，非阻塞式IO模型，IO复用模型，信号驱动式IO模型，异步IO模型。
关于阻塞、非阻塞、同步、异步，]]></description><category></category></item><item><title><![CDATA[Linux网络编程(三)]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16357197</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16357197</guid><author>Viidiot</author><pubDate>Sat, 16 Nov 2013 15:10:15 +0800</pubDate><description><![CDATA[Linux网络编程(三) wait()还是waitpid()
Linux网络编程(二)存在客户端断开连接后，服务器端存在大量僵尸进程。这是由于服务器子进程终止后，发送SIGCHLD信号给父进程，而父进程默认忽略了该信号。为避免僵尸进程的产生，无论我们什么时候创建子进程时，主进程都需要等待子进程返回,以便对子进程进行清理。为此，我们在服务器程序中添加SIGCHLD信号处理函数。

代码如下：]]></description><category></category></item><item><title><![CDATA[(八)循环队列]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16357061</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16357061</guid><author>Viidiot</author><pubDate>Sat, 16 Nov 2013 14:31:50 +0800</pubDate><description><![CDATA[/****************************************
循环队列操作：
用数组Q[0,n-1]来实现一个至多有n-1个元素的队列。
队列的两个属性：head[Q] and tail[Q]
head[Q]指向队列的头
tail[Q]指向新元素将要被插入的地方。
队列中各个元素的位置为：head[Q],head[Q]+1,...,tail[Q]-1.
在最后一个位置要进行“]]></description><category></category></item><item><title><![CDATA[(七)线性堆栈]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16357047</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16357047</guid><author>Viidiot</author><pubDate>Sat, 16 Nov 2013 14:31:15 +0800</pubDate><description><![CDATA[/****************************************
堆栈操作：
用数组S[0,n-1]来实现一个至多有n个元素的栈。

STACK_EMPYT(S) //判断栈是否为空
    if top[S]=-1
        then return ture
        else return false

PUSH(S,x) //将元素x压入栈中
    if to]]></description><category></category></item><item><title><![CDATA[(六)线性选择]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16357039</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16357039</guid><author>Viidiot</author><pubDate>Sat, 16 Nov 2013 14:30:40 +0800</pubDate><description><![CDATA[/************************************************
以期望线性时间做选择：返回数组A[p,r]中第i小的数
算法通过分治递归划分，像快排那样，将数组划分成两边，
然后根据情况，处理划分后的某一边，算法伪代码如下：
select(A,p,r,i)
    if p=r
        then return A[p]
    q<——partion(A]]></description><category></category></item><item><title><![CDATA[(五)使用最大堆实现优先级队列]]></title><link>https://blog.youkuaiyun.com/Viidiot/article/details/16357033</link><guid>https://blog.youkuaiyun.com/Viidiot/article/details/16357033</guid><author>Viidiot</author><pubDate>Sat, 16 Nov 2013 14:29:58 +0800</pubDate><description><![CDATA[/*******************************************
利用最大堆实现最大优先级队列
最大优先级支持的操作：
1.insert(S,x) //将元素x插入集合S中
2.maximum(S)  //返回S中最大关键字的元素
3.extract(S)  //去掉并返回S中最大关键字的元素
4.increase_key(S,x,k)  //将元素x的关键字的值增加到k，]]></description><category></category></item></channel></rss>