自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(181)
  • 资源 (5)
  • 收藏
  • 关注

翻译 QUIC-LB: Generating Routable QUIC Connection IDs(draft-ietf-quic-load-balancers-0)

AbstractQUIC connection IDs allow continuation of connections across address/ port 4-tuple changes, and can store routing information for stateless or low-state load balancers. They also can prevent linkability of connections across deliberate address mi.

2020-06-05 12:08:35 1165

原创 numpy模块之axis

numpy模块之axis的含义numpy是python进行科学计算必不可少的模块,随着深度学习越来越火,numpy也越来越流行。了解numpy的人知道,在numpy中,有很多的函数都涉及到axis,很多函数根据axis的取值不同,得到的结果也完全不同。可以说,axis让numpy的多维数组变的更加灵活,但也让numpy变得越发难以理解。这里通过详细的例子来学习下,axis到底是什么,它在numpy中

2016-11-06 17:02:16 28953 23

原创 git操作之git rebase

git rebase可以简单的理解为调整commit信息,包括合并commit信息到master(与merge类似,但是效果不同)以及删除commit信息或者修改log信息等,下面分别介绍几种git rebase常用的场景。合并commit信息到master例如有如下commit信息并且当前处于topic分支: A---B---C topic /D---E---F---G ma

2016-03-30 17:34:25 1453

原创 redis中的事务、lua脚本和管道的使用场景

事务redis中的事务并不像mysql中那么完美,只是简单的保证了原子性。redis中提供了四个命令来实现事务,MULTI:类似于mysql中的BEGIN;EXEC:类似于COMMIT;DISCARD类似于ROLLBACK;WATCH则是用于来实现mysql中类似锁的功能。具体的使用方法非常简单,例如:127.0.0.1:6379> multiOK127.0.0.1:6379> incr cou

2016-01-26 09:05:14 19087 4

原创 node.js在遇到“循环+异步”时的注意事项

nodejs的特征nodejs的最大特征就是一切都是基于事件的,从而导致一切都是异步的。nodejs的速度为什么快,其原理和nginx一样,他们都是通过事件回调来处理请求的,从而导致了整个处理过程中,不会阻塞nodejs,因此,其在同一时间内可以处理大量的请求,而这种优越性在你的请求是IO密集型的情况下,表现的尤为突出。下面的例子简单说明了基于异步事件的nodejs的处理流程:var send_da

2016-01-26 09:03:31 15713 3

原创 从源码角度理解nginx和uwsgi的通信过程

问题来源曾经遇到过一个项目涉及到了上传商品图片的问题,而我在限制图片大小的时候,是先把整个图片都读取到内存中,然后再判断其大小。这种做法当出现恶意攻击或者图片很大时,会严重影响web application的性能。原先想通过先判断首部的content-length来对大小进行限制。但后来觉得,如果图片是先由前端的nginx完全读取后再转发给uwsgi的,那这样判断依然会影响nginx的性能。为此,我

2016-01-26 08:59:50 5633 1

转载 python编码风格

针对Python Style Guide Jun 18, 2009 版本翻译译文发布于:http://www.elias.cn/Develop/PythonStyleGuide译者:elias DOT soong AT gmail DOT comOn this page... (hide)1.  概述1.1  Python 语言方面的准则1.2  Pyt

2015-04-02 08:58:23 934

转载 跟我一起写makefile十四

使用make更新函数库文件———————————函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令"ar"来完成打包工作。一、函数库文件的成员一个函数库文件由多个文件组成。你可以以如下格式指定函数库文件及其组成:    archive(member)这个不是一个命令,而一个目标和依赖的定义。一般来说,这种用法基本上就是为了"ar"

2014-12-30 20:57:23 707

转载 跟我一起写makefile十三

五、定义模式规则你可以使用模式规则来定义一个隐含规则。一个模式规则就好像一个一般的规则,只是在规则中,目标的定义需要有"%"字符。"%"的意思是表示一个或多个任意字符。在依赖目标中同样可以使用"%",只是依赖目标中的"%"的取值,取决于其目标。有一点需要注意的是,"%"的展开发生在变量和函数的展开之后,变量和函数的展开发生在make载入Makefile时,而模式规则中的"%"则发生

2014-12-30 20:56:41 719

转载 twisted入门教程之十四:Deferred用于同步环境

第十四部分 Deferred用于同步环境你可以从这里从头开始阅读这个系列。介绍这部分我们要介绍Deferred的另外一个功能。便于讨论,我们设定如下情景:假设由于众多的内部网请求一个外部诗歌下载服务器,但由于这个外部下载服务器性能太差或请求负荷太重。因此,我们不想将所有的内部请求全部发送到外部服务器。我们的处理办法是,在中间添加一个缓存代理。当一个请求来到后,我

2014-12-22 20:16:07 1092

转载 twisted入门教程之十三:使用Deferred新功能实现新客户端

第十三部分 使用Deferred新功能实现新客户端你可以从这里从头阅读这个系列。介绍回忆下第10部分中的客户端5.1版。客户端使用一个Deferred来管理所有的回调链,其中包括一个格式转换引擎的调用。在那个版本中,这个引擎的实现是同步的。(即等待其执行再切到其它函数或任务中)现在我们想实现一个新的客户端,其使用我们在第十二部分实现的格式服务器提供的格式

2014-12-22 20:13:23 1028

转载 twisted入门教程之十二:改进诗歌下载服务器

第十二部分 改进诗歌下载服务器你可以从这里从头阅读这个系列。新的服务器实现这里我们要新写一个Twisted版的服务器。然后,再来讨论一些Deferred的新功能。在第九、十部分,我们提出了诗歌转换引擎这个概念。由于其实现太过简单,因此我们用随机选择来模拟了可能会出现转换失败的情景。但如果转换引擎位于服务器端,那么当服务器宕机就会出现真实的转换

2014-12-22 20:12:28 837

转载 twisted入门教程之十一:改进诗歌下载服务器

第十一部分:改进诗歌下载服务器你可以从这里从头阅读这个系列。诗歌下载服务器到目前为止,我们已经学习了大量关于诗歌下载客户端的Twisted的知识,接下来,我们使用Twisted重新实现我们的服务器端。利益于Twisted的抽象机制,接下来你会发现我们前面已经几乎全部学习到这部分知识了。其实现源码在twisted-server-1/fastpoetry.py中。之

2014-12-22 20:11:23 950

转载 twisted入门教程之十:增强defer功能的客户端

第十部分:增强defer功能的客户端可以从这里从头开始阅读这个系列。版本5.0现在我们将要向诗歌下载客户端添加一些新的处理逻辑,包括在第九部分提到要添加的功能。不过,首先我要说明一点:我并不知道如何实现Byronification引擎。那超出了我的编程能力范围。取而代之的,我想实现一个简单的功能,即Cummingsifier。其只是将诗歌内容转换成小写字母:

2014-12-22 20:10:16 946

转载 twisted入门教程之九:第二个小插曲,Deferred

第九部分:第二个小插曲,Deferred可以从这里从头来阅读这个系列更多关于回调的知识稍微停下来再思考一下回调的机制。尽管对于以Twisted方式使用Deferred写一个简单的异步程序已经非常了解了,但Deferred提供更多的是只有在比较复杂环境下才会用到的功能。因此,下面我们自己想出一些复杂的环境,以此来观察当使用回调编程时会遇到哪些问题。然后,再来看看d

2014-12-22 20:08:38 891

转载 twisted入门教程之八:使用Deferred的诗歌下载客户端

第八部分:使用Deferred的诗歌下载客户端可以从这里从头开始阅读这个系列。客户端4.0我们已经对deferreds有些理解了,现在我们可以使用它重写我们的客户端。你可以在twisted-client-4/get-poetry.py中看到它的实现。这里的get_poetry已经再也不需要callback与errback参数了。相反,返回了一个用户可能根

2014-12-22 20:07:07 891

转载 twisted入门教程之七:小插曲,Deferred

第七部分:小插曲,Deferred你可以从这里从头开始阅读这个系列回调函数的后序发展在第六部分我们认识这样一个情况:回调是Twisted异步编程中的基础。除了与reactor交互外,回调可以安插在任何我们写的Twisted结构内。因此在使用Twisted或其它基于reactor的异步编程体系时,都意味需要将我们的代码组织成一系列由reactor循环可以激活的回调

2014-12-22 20:04:49 1115

转载 twisted入门教程之六:抽象地利用Twisted

第六部分:抽象地利用Twisted你可以从这里从头开始阅读这个系列。打造可以复用的诗歌下载客户端我们在实现客户端上已经花了大量的工作。最新版本的(2.0)客户端使用了Transports,Protocols和Protocol Factories,即整个Twisted的网络框架。但仍有大的改进空间。2.0版本的客户端只能在命令行里下载诗歌。这是因为Poetry

2014-12-22 20:03:31 3213

转载 twisted入门教程之五:由Twited支持的诗歌下载服务客户端

第五部分:由Twited支持的诗歌下载服务客户端你可以从这里从头开始阅读这个系列抽象地构建客户端在第四部分中,我们构建了第一个使用Twisted的客户端。它确实能很好地工作,但仍有提高的空间。首先是,这个客户端竟然有创建网络端口并接收端口处的数据这样枯燥的代码。Twisted理应为我们实现这些例程性功能,省得我们每次写一个新的程序时都要去自己实现。Twi

2014-12-22 20:02:05 1327

转载 twisted入门教程之四:由Twisted支持的诗歌客户端

第四部分:由Twisted支持的诗歌客户端你可以在这里从头开始阅读这个系列。第一个twisted支持的诗歌服务器尽管Twisted大多数情况下用来写服务器代码,为了一开始尽量从简单处着手,我们首先从简单的客户端讲起。让我们来试试使用Twisted的客户端。源码在twisted-client-1/get-poetry.py。首先像前面一样要开启三个服务器:

2014-12-22 19:59:59 1131

转载 twisted入门教程之三:初步认识Twisted

第三部分:开始认识Twisted可以从这里从头开始阅读这个系列。用twisted的方式实现前面的内容最终我们将使用twisted的方式来重新实现我们前面的异步模式客户端。不过,首先我们先稍微写点简单的twisted程序来认识一下twisted。最最简单的twisted程序就是下面的代码,其在twisted-intro目录中的basic-twisted/s

2014-12-22 19:58:33 1667

转载 twisted入门教程之二:异步编程初探与reactor模式

第二部分:低效的诗歌服务器来启发对Twisted机制的理解这个系列是从这里开始的,欢迎你再次来到这里来。现在我们可能要写一些代码。在开始之前,我们都做出一些必要的假设。关于对你的假设在展开讨论前,我假设你已经有过用Python写同步程序的经历并且至少知道一点有关Python的Sockt编程的经验。如果你从没有写过Socket程序,或许你可以去看看Socket模块的文档,尤其

2014-12-22 19:56:20 1157

转载 twisted入门教程之一:Twisted理论基础

前言:最近有人在Twisted邮件列表中提出诸如”为任务紧急的人提供一份Twisted介绍”的的需求。值得提前透露的是,这个序列并不会如他们所愿.尤其是介绍Twisted框架和基于Python 的异步编程而言,可能短时间无法讲清楚。因此,如果你时间紧急,这恐怕不是你想找的资料。我相信如果对异步编程模型一无所知,快速的介绍同样无法让你对其有所理解,至少你得稍微懂点基础知识

2014-12-22 19:54:38 1112

转载 跟我一起写makefile 十二

隐含规则————在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。“隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的

2014-12-19 09:44:58 728

转载 跟我一起写makefile 十一

make 的运行——————一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。一、make的退出码make命令执行后有三个退出码:

2014-12-19 09:27:07 541

转载 跟我一起写makefile 十

四、foreach 函数 foreach函数和别的函数非常的不一样。因为这个函数是用来做循环用的,Makefile中的foreach函数几乎是仿照于Unix标准Shell(/bin/sh)中的for语句,或是C-Shell(/bin/csh)中的foreach语句而构建的。它的语法是:     $(foreach ,,) 这个函数的意思是,把参数中的

2014-12-19 09:16:19 582

转载 跟我一起写makefile九

使用函数————在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。一、函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:    $( )或是    ${ }这里,就是函数

2014-12-19 08:54:40 653

转载 跟我一起写makefile 八

六、多行变量 还有一种设置变量值的方法是使用define关键字。使用define关键字设置变量的值可以有换行,这有利于定义一系列的命令(前面我们讲过“命令包”的技术就是利用这个关键字)。define指示符后面跟的是变量的名字,而重起一行定义变量的值,定义是以endef关键字结束。其工作方式和“=”操作符一样。变量的值可以包含函数、命令、文字,或是其它变量。因为命令需要以[Tab]键

2014-12-19 08:39:28 597

转载 跟我一起写makefile 七

使用变量————在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以

2014-12-17 11:45:41 466

转载 跟我一起写makefile 六

书写命令————每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin

2014-12-17 11:31:08 545

转载 跟我一起写makefile 五

六、多目标Makefile的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时依赖于一个文件,并且其生成的命令大体类似。于是我们就能把其合并起来。当然,多个目标的生成规则的执行命令是同一个,这可能会可我们带来麻烦,不过好在我们的可以使用一个自动化变量“$@”(关于自动化变量,将在后面讲述),这个变量表示着目前规则中所有的目标的集合,这样说可能很抽象,还是看一个例子吧。

2014-12-17 11:12:36 585

转载 跟我一起写makefile四

书写规则————规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,

2014-12-17 10:51:08 628

转载 跟我一起写makefile三

Makefile 总述———————一、Makefile里有什么?Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我

2014-12-17 09:49:15 633

转载 跟我一起写makefile二

三、make是如何工作的在默认的方式下,也就是我们只输入make命令。那么,    1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。    2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。    3、如果edit文件不存在,或是edit所依赖的后面的

2014-12-17 09:48:35 617

转载 跟我一起写makefile 一

概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写m

2014-12-17 09:47:36 637

原创 automake编写完整的项目---动态库+可执行文件

上一篇博客使用hello程序简单的介绍了automake的使用流程,但是真正的项目肯定是很复杂的,包含bu

2014-11-26 08:35:11 5522

原创 automake简介

在 Unix 上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个 Makefile 就不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于 make的文档比较多,不过写一个 Makefile 总是一件很烦人的事情,GNU Autoconf 及 Automake 这两个软件就是帮

2014-11-26 08:34:13 4484

转载 ubuntu配置开机启动服务

在ubuntu10.04之前的版本都是使用chkconfig来进行管理,而在之后的版本就没有了,如果想继续使用chkconfig命令,只好自己apt-get install下了。[plain] view plaincopysudo apt-get install chkconfig  在这里我给大家介绍另两个命令来配置ubuntu的启

2014-11-15 14:38:05 1542

转载 ubuntu为什么没有/etc/inittab文件? 深究ubuntu的启动流程分析

最近,因和队友一起做linux开发,因为用的不是同一版本linux(他用arch, 我用ubuntu),再配置上经常就不一样,就如这个inittab文件,于是深究了一下原因:Linux 内核启动 init ,init进程ID是1,是所有进程的父进程,所有进程由它控制。Ubuntu 的启动由upstart控制,自9.10后不再使用/etc/event.d目录的配置文件,改为/etc/

2014-11-12 11:42:52 981

转载 grub简单入门教程

一、什么是多重操作系统引导管理器,什么是GRUB;1、什么是多重操作系统引导管理器及工作原理;系统启动引导管理器,是在计算机启动后运行的第一个程序,他是用来负责加载、传输控制到操作系统的内核,一旦把内核挂载,系统引导管理器的任务就算完成退出,系统引导的其它部份,比如系统的初始化及启动过程则完全由内核来控制完成;Briefly, boot loader is th

2014-11-12 11:25:32 903

automake编写的完整项目---动态库+可执行文件

在 Unix 上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个 Makefile 就不那么简单了。GNU Autoconf 及Automake 这两个软件就是帮助程序开发者轻松产生 Makefile 文件的。用户只要使用 “./configure”, “make”, “make install” 就可以把程序安裝到系统中。

2014-11-25

linux下基于epoll的简单http协议

linux平台下基于epoll的简单http协议,有测试客户端代码,以及使用说用,是初学者使用的好资料,大家可以到博客上发表意见,我也会改进代码,谢谢,博客地址:http://write.blog.csdn.net/postedit/34415651

2014-07-01

OPENGL超级宝典

该书详细的讲解了OPENGL的知识,非常全面,是学习和开发opengl不可缺少的工具

2013-01-20

Google Android开发入门与实战

适合android初学者使用,内容比较详细,简单易懂

2012-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除