<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[coding_Xu的csdn]]></title><description><![CDATA[技术交流]]></description><link>https://blog.youkuaiyun.com/ForeverUnknown</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ForeverUnknown]]></copyright><item><title><![CDATA[以Blog为例阐述Git多人协作开发流程]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/45046621</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/45046621</guid><author>ForeverUnknown</author><pubDate>Tue, 14 Apr 2015 19:20:12 +0800</pubDate><description><![CDATA[目录(?)[-]

建立服务端仓库开发者的Git分支

张三的Git分支李四的Git分支王五的Git分支
开发过程

张三和李四
开发完毕进入测试阶段添加新特性紧急修复漏洞




项目背景：

张三 / 李四 / 王五 打算共同协作，开发一套博客系统


项目分工：

张三 / 李四 负责文章系统 王五负责评论系统


建立服务端仓库

git虽]]></description><category></category></item><item><title><![CDATA[SkipList跳表]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44359263</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44359263</guid><author>ForeverUnknown</author><pubDate>Tue, 17 Mar 2015 23:30:03 +0800</pubDate><description><![CDATA[为什么选择跳表
目前经常使用的平衡数据结构有：B树，红黑树，AVL树，Splay Tree, Treep等。
 
想象一下，给你一张草稿纸，一只笔，一个编辑器，你能立即实现一颗红黑树，或者AVL树
出来吗？ 很难吧，这需要时间，要考虑很多细节，要参考一堆算法与数据结构之类的树，
还要参考网上的代码，相当麻烦。
 
用跳表吧，跳表是一种随机化的数据结构，目前开源软件 Redis 和 L]]></description><category></category></item><item><title><![CDATA[深入理解DB2索引（Index）]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44359135</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44359135</guid><author>ForeverUnknown</author><pubDate>Tue, 17 Mar 2015 23:26:13 +0800</pubDate><description><![CDATA[索引（Index）是数据库管理系统中一个非常重要的数据结构，索引的合理使用能够极大提高数据库系统的性能。那么，什么是索引？索引有时如何提高数据库系统性能的呢？
阅读本文时建议参考：《深入理解数据库磁盘存储（Disk
 Storage）》
索引概念
以一本书为例，通常一本书开头会有目录，而后才是正文，通过目录中每行左侧的标题和右侧的页码，我们可以快速定位到需要阅读的页面，而无需一页一页翻阅到]]></description><category></category></item><item><title><![CDATA[网关协议学习：CGI、FastCGI、WSGI]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44343461</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44343461</guid><author>ForeverUnknown</author><pubDate>Tue, 17 Mar 2015 16:15:22 +0800</pubDate><description><![CDATA[CGI

CGI即通用网关接口(Common Gateway Interface)，是外部应用程序（CGI程序）与Web服务器之间的接口标准，是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序，并将它们的输出发送给Web浏览器，CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。通俗的讲CGI就像是一座桥，把网页和WEB服务器中的执行程序连]]></description><category></category></item><item><title><![CDATA[python协程]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44343129</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44343129</guid><author>ForeverUnknown</author><pubDate>Tue, 17 Mar 2015 15:59:40 +0800</pubDate><description><![CDATA[协程，又称微线程，纤程。英文名Coroutine。
协程的概念很早就提出来了，但直到最近几年才在某些语言（如Lua）中得到广泛应用。
子程序，或者称为函数，在所有语言中都是层级调用，比如A调用B，B在执行过程中又调用了C，C执行完毕返回，B执行完毕返回，最后是A执行完毕。
所以子程序调用是通过栈实现的，一个线程就是执行一个子程序。
子程序调用总是一个入口，一次返回，调用顺序是明确的。而协程]]></description><category></category></item><item><title><![CDATA[python中的可变与不可变类型]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44337163</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44337163</guid><author>ForeverUnknown</author><pubDate>Tue, 17 Mar 2015 09:09:20 +0800</pubDate><description><![CDATA[python的数据类型和c不太一样，有一种分类标准，可变(mutable)/不可变(immutable).
我理解的可变，就是在内存中的那块内容（value）是否可以被改变。如果是不可变的，在对对象本身操作的时候，必须在内存的另外地方再申请一块区域(因为老区域#不可变#)，老的区域就丢弃了(如果还有其他ref，则ref数字减1，类似unix下的hard-link)。如果是可变的，对对象操作的时候]]></description><category></category></item><item><title><![CDATA[python 多线程多进程]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44316469</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44316469</guid><author>ForeverUnknown</author><pubDate>Mon, 16 Mar 2015 22:33:39 +0800</pubDate><description><![CDATA[1. 之前写过一篇《通过实例认识Python的GIL》的文章，感觉有些意犹未尽 
2. 这次对例子作了些扩展，进一步的分析GIL对Python程序的影响
2.1 先来看例子：


[python] 
view plaincopy


from threading import Thread    from threading import Event as TEvent    f]]></description><category></category></item><item><title><![CDATA[Python 中的进程、线程、协程、同步、异步、回调]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44314429</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44314429</guid><author>ForeverUnknown</author><pubDate>Mon, 16 Mar 2015 21:58:57 +0800</pubDate><description><![CDATA[进程和线程究竟是什么东西？传统网络服务模型是如何工作的？协程和线程的关系和区别有哪些？IO过程在什么时间发生？
在刚刚结束的 PyCon2014 上海站，来自七牛云存储的 Python 高级工程师许智翔带来了关于 Python 的分享《Python中的进程、线程、协程、同步、异步、回调》。
一、上下文切换技术
简述
在进一步之前，让我们先回顾一下各种上下文切换技术。
不过首先说明一点术语]]></description><category></category></item><item><title><![CDATA[vi编辑器常用命令]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44260915</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44260915</guid><author>ForeverUnknown</author><pubDate>Sat, 14 Mar 2015 16:54:39 +0800</pubDate><description><![CDATA[1、命令模式（command mode）—执行命令

　　在该模式中，可以输入命令来执行许多种功能。控制屏幕光标的移动，字符、字或行的删除，移动复制某区段及进入Insert mode下，或者到 last line mode。

　　2、输入模式（Insert mode）—输入文本

　　vi被运行时，通常处在命令模式下，键入以下命令 可以使vi退出命令模式，进入输入模式：I（i）、A（]]></description><category></category></item><item><title><![CDATA[vim寄存器和vim标记]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44260833</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44260833</guid><author>ForeverUnknown</author><pubDate>Sat, 14 Mar 2015 16:43:21 +0800</pubDate><description><![CDATA[原文出处：http://blog.youkuaiyun.com/rainysia/article/details/7721691
一：官方帮助手册
:help registers
:help :registers
二： 寄存器分类
1.无名（unnamed）寄存器：""，缓存最后一次操作内容；
2.数字（numbered）寄存器："0 ～ "9，缓存最近操作内容，复制与删除有别,
 "0寄存器缓]]></description><category></category></item><item><title><![CDATA[The C10K problem翻译]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44205855</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44205855</guid><author>ForeverUnknown</author><pubDate>Wed, 11 Mar 2015 21:50:07 +0800</pubDate><description><![CDATA[The C10K problem翻译

The C10K problem

如今的web服务器需要同时处理一万个以上的客户端了，难道不是吗？毕竟如今的网络是个big place了。 
现在的计算机也很强大了，你只需要花大概$1200就可以买一个1000MHz的处理器，2G的内存， 1000Mbit/sec的网卡的机器。让我们来看看--20000个客户，每个为50KHz，100Kbyes和]]></description><category></category></item><item><title><![CDATA[IO多路复用之select]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44183335</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44183335</guid><author>ForeverUnknown</author><pubDate>Tue, 10 Mar 2015 23:01:53 +0800</pubDate><description><![CDATA[前言：
select系统调用的用途是：在指定的一段时间内，监听用户感兴趣的文件描述符上的可读、可写和异常事件。
select API：
int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout);
FD_ZERO(fd_set *fd_set);   ]]></description><category></category></item><item><title><![CDATA[IO多路复用之epoll]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44182611</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44182611</guid><author>ForeverUnknown</author><pubDate>Tue, 10 Mar 2015 22:54:39 +0800</pubDate><description><![CDATA[前言：
epoll是Linux所特有的I/O复用函数。它在实现和使用上与select、poll有很大的差异。首先，epoll使用一组函数来完成任务而不是单个函数。其次，epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中，从而无需象select和poll那样每次调用都要重复传入文件描述符集或事件集。
epoll API：
int epoll_create(int size); /]]></description><category></category></item><item><title><![CDATA[IO多路复用之poll]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44182229</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44182229</guid><author>ForeverUnknown</author><pubDate>Tue, 10 Mar 2015 22:26:10 +0800</pubDate><description><![CDATA[前言：
poll系统调用和select类似，也是在指定时间内轮询一定数量的文件描述符，以测试其中是否有就绪者。
poll API：
int poll(struct pollfd* fds, nfds_t nfds, int timeout);

文件描述符的就绪条件：
--可读

1、socket内核接收缓冲区中的字节数大于或等于其低水位标记SO_RCVLOWAT。此时我们可以无阻]]></description><category></category></item><item><title><![CDATA[12种常见的并发网络服务程序设计方案]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44181285</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44181285</guid><author>ForeverUnknown</author><pubDate>Tue, 10 Mar 2015 21:38:48 +0800</pubDate><description><![CDATA[文中多个片段摘自陈硕老师的《Linux多线程服务端编程-使用muduo C++网络库》，特整理于此，备学习、工作使用。 

             12种常见的并发网络服务程序设计方案



方案 0：
         这其实不是并发服务器，而是 iterative 服务器，因为它一次只能服务一个客户。代码见 UNP figure 1.9，UNP 以此为对比其他方案的基准点。
]]></description><category></category></item><item><title><![CDATA[IO模型之IO多路复用]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44164159</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44164159</guid><author>ForeverUnknown</author><pubDate>Tue, 10 Mar 2015 00:10:38 +0800</pubDate><description><![CDATA[服务器端编程一般处理三个问题:网络IO、业务逻辑处理和数据存储。个人感觉网络IO的设计与实现最能体现一个后台工作者的编程功底。当然，目前流行的第三方库如Libevent、Libev、Muduo等都已经很好的解决了这个问题，此处，仅仅是自己把平时自己看到的一些关于网络IO的知识做个记录。
    目前典型的IO模型对比如下：




I/O模型
读写操作和阻塞阶段


阻塞IO]]></description><category></category></item><item><title><![CDATA[recv函数异常处理]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44026163</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/44026163</guid><author>ForeverUnknown</author><pubDate>Mon, 02 Mar 2015 23:21:25 +0800</pubDate><description><![CDATA[网络模型：
通信进程为一个常驻内存进程，监听客户端的请求，当到达一个请求后，fork出一个子进程，做具体业务处理。

此时服务端对于recv函数的处理一般会是
sigset(SIGALARM, TimeOut);

alarm(time_out)

while(recv(...)
    if(errno == EINTR)
        continue;
    els]]></description><category></category></item><item><title><![CDATA[LevelDB原理探究与代码分析]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/43116217</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/43116217</guid><author>ForeverUnknown</author><pubDate>Sun, 25 Jan 2015 18:24:59 +0800</pubDate><description><![CDATA[1. 概述
Level DB（http://code.google.com/p/leveldb/）是google开源的Key/Value存储系统，它的committer阵容相当强大，基本上是bigtable的原班人马，包括像jeff dean这样的大牛，它的代码合设计非常具有借鉴意义，是一种典型的LSM
 Tree的KV引擎的实现，从它的数据结构来看，基本就是sstable的开源实现，而且针对]]></description><category></category></item><item><title><![CDATA[FireFox常用快捷键]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/40834651</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/40834651</guid><author>ForeverUnknown</author><pubDate>Wed, 05 Nov 2014 22:05:21 +0800</pubDate><description><![CDATA[+++++++普通使用+++++++
Alt+Home：首页
Ctrl+O：打开文件
F5/Ctrl+R：重新载入
Ctrl+F5/Ctrl+Shift+R：重新载入（忽略缓存）
Home：页面顶部
End：页面底部
F6/Alt+D/Ctrl+L：地址栏
Ctrl+K：搜索栏
Ctrl+U：页面源代码
Ctrl+P：打印
Ctrl+W/Ctrl+F4：关闭标签
Ctrl+]]></description><category></category></item><item><title><![CDATA[分享一些不错的github地址]]></title><link>https://blog.youkuaiyun.com/ForeverUnknown/article/details/40753077</link><guid>https://blog.youkuaiyun.com/ForeverUnknown/article/details/40753077</guid><author>ForeverUnknown</author><pubDate>Mon, 03 Nov 2014 23:06:12 +0800</pubDate><description><![CDATA[感觉都是很不错的git，没事可以找一两个逛逛

Dropbox：https://github.com/dropbox
Facebook：https://github.com/facebook
Apache：https://github.com/apache
Bitly：https://github.com/bitly
Douban：https://github.com/douban]]></description><category></category></item></channel></rss>