自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (4)
  • 收藏
  • 关注

原创 Tcp协议简读

TCP的服务TCP提供一种面向连接的,可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。这个过程跟打电话相似,先拨号振铃,等待对方摘机应答,然后才说是谁。在一个TCP连接中,仅有两方进行彼此通信。TCP通过下列方式来提供可靠性1. 应用数据被分割成TCP认为最适合发送的数据块。这和U

2017-08-25 21:21:45 340

原创 第一个tornado程序,经典的hello.py

代码import tornado.httpserverimport tornado.ioloopimport tornado.optionsimport tornado.webfrom tornado.options import define, optionsdefine("port", default=8000, help="run on the given port", type=in

2016-01-28 10:47:55 640

原创 Python内置函数大全

数学运算类abs(x) 求绝对值。 (1)参数可以是整型,也可以是复数 (2)若参数是复数,则返回复数的模complex(real, imag) 创建一个复数。divmod(a, b) 分别取商和余数,(注意:整型、浮点型都可以)。float(x) 将一个字符串或数转换为浮点数,如果无参数将返回0.0。int(x, base) 将一个字符转换为int类型,base表示进制。long(

2016-01-17 16:28:46 377

原创 Python中*args 和**kwargs

*args位置参数 , 把参数收集到一个元组中,作为变量args。def fun_var_args(farg, *args): print "arg:", farg for value in args: print "another arg:", value fun_var_args(1, "two", 3) # *args可以当作可容纳多个变量组成的

2016-01-17 09:40:56 314

原创 常见Python运行时错误

“SyntaxError :invalid syntax” (1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :if spam == 42 print('Hello!')(2)使用 = 而不是 ==if spam = 42: print('Hello!')“IndentationError:unexpected in

2016-01-10 21:21:51 775

原创 临界区(Critical section)与互斥量(Mutex)

临界区(Critical Section)保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操作共享资源的目的。   临界区包含两个操作原语 EnterCriti

2016-01-10 18:19:53 1377

原创 linux中的sleep与alarm

sleep#include <unistd.h>unsigned int sleep(unsigned int seconds);此函数使调用进程被挂起,直到满足以下条件之一 (1)已经过了seconds所指定的墙上时钟时间 (2)调用进程捕捉到一个信号并从信号处理程序返回 注:由于其他系统活动,实际返回时间比所要求的会迟一些,像alarm一样。sleep的返回值 (1)在上述第一种情形中

2016-01-10 17:18:42 991

原创 简单认识Yum

众所周知,Redhat和Fedora的软件安装命令是rpm,但是用rpm安装软件最大的麻烦就是需要手动寻找安装该软件所需要的一系列依赖关系, 超级麻烦不说,要是软件不用了需要卸载的话由于卸载掉了某个依赖关系而导致其他的软件不能用是非常恼人的。令人高兴的是,Fedora终于推出了类似于 ubuntu中的apt的命令yum,令Fedora的软件安装变得简单容易。关于配置文件yum的一切配置信息都储存在一

2016-01-10 16:53:46 281

原创 常用Linux系统命令

系统uname -a 查看内核/操作系统/CPU信息head -n 1 /etc/issue 查看操作系统版本cat /proc/cpuinfo 查看CPU信息hostname 查看计算机名lspci -tv 列出所有PCI设备lsusb -tv 列出所有USB设备lsmod 列出加载的内核模块env 查看环境变量资源free -m 查看内存使用量和交换区使用量

2016-01-10 16:22:46 217

原创 /etc/hosts.conf

作用指定如何解析主机域名,可设置网络安全。默认文件内容默认情况,/etc/hosts.conf 文件有如下内容 order hosts,bind multi on参数说明 order 是解析顺序的参数,order hosts,bind,nis ,说明先查询解析/etc/hosts文件,然后DNS,再是NIS。multi 表示是否运行/etc/hosts文件允许主机指定多个

2016-01-10 15:45:49 9368

原创 python基本概念

常量也即字面意义上的常量,如同5、1.23、9.25e-3这样的数,或者如同’This is a string’、”It’s a string!”这样的字符串。它们被称作字面意义上的,因为它们具备字面的意义(按照它们的字面意义使用它们的值)。字符串即字符的序列,它本上就是一组单词。 使用单引号(’) 你可以用单引号指示字符串,就如同’Hello world!’这样。所有的空白,即空格和制表符都照

2016-01-10 15:20:24 267

原创 心跳包机制

简介之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。但是它检查不到机器断电、网线拔出、防火墙这些断线。而且逻辑层处理断

2016-01-06 00:30:12 1484

原创 python线程池

线程池概念线程池是预先创建线程的一种技术。线程池在还没有任务到来之前,创建一定数量的线程,放入空闲队列中。这些线程都是处于睡眠状态,即均为启动,不消耗CPU,而只是占用较小的内存空间。当请求到来之后,缓冲池给这次请求分配一个空闲线程,把请求传入此线程中运行,进行处理。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过

2015-12-31 10:58:07 403

原创 python中的生成器

定义生成器是一次生成一个值的特殊类型函数,可以将其视为可恢复函数。调用该函数将返回一个可用于生成连续 x 值的生成器【Generator】,简单的说就是在函数的执行过程中,yield语句会把你需要的值返回给调用生成器的地方,然后退出函数,下一次调用生成器函数的时候又从上次中断的地方开始执行,而生成器内的所有变量参数都会被保存下来供下一次使用。任何包含yield语句的函数称为生成器。生成器的使用在Py

2015-12-27 16:28:40 253

原创 python中的迭代器

在python中,很多对象都是可以通过for语句来直接遍历的,例如list、string、dict等等,这些对象都可以被称为可迭代对象。概念所谓的迭代器就是具有next方法(这个方法在调用时不需要任何参数)的对象。在调用next方法时,迭代器会返回它的下一个值。如果next方法被调用时,但迭代器没有值可以返回,就会发生一个StopIteration异常。_iter_()和next()方法这两个方法是

2015-12-27 16:09:18 295

原创 计算机网络常见基本概念

计算机网络的分类按网络传输技术分类 1.广播网络 2.点到点网络按网络覆盖规模分类 1.LAN 2.MAN 3.WAN按拓扑结构分类 1.总线型网络 2.环型网络 3.星型网络信道带宽指信道可以不失真地传输信号的频率范围。信道容量指信道在单位时间内可以传输的最大信号量,标志着信道的传输能力。局域网定义 局域网是在有限的地理范围内覆盖多台计算机,通过传输媒体连接起来的通信网络,通过完

2015-12-27 15:50:33 467

原创 Python是如何进行内存管理的

Python的内存管理主要有三种机制:引用计数机制,垃圾回收机制和内存池机制。引用计数机制简介 python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。特性 1.当给一个对象分配一个新名称或者将一个对象放入一个容器(列表、元组或字典)时,该对象的引用计数

2015-12-26 22:58:47 693

原创 显示有限的接口到外部

当发布python第三方package时, 并不希望代码中所有的函数或者class可以被外部import, 在init.py中添加all属性,该list中填写可以import的类或者函数名, 可以起到限制的import的作用, 防止外部import其他函数或者类。

2015-12-23 23:24:17 298

原创 contextlib模块

模块简介contextlib模块的作用是提供更易用的上下文管理器。它提供了3个对象:装饰器 contextmanager、函数 nested 和上下文管理器 closing。使用这些对象,可以对已有的生成器函数或者对象进行包装,加入对上下文管理协议的支持,避免了专门编写上下文管理器来支持 with 语句。装饰器 contextmanager contextmanager 用于对生成器函数进行装饰,

2015-12-23 23:19:00 2221

原创 浅谈with语句

上下文管理器要使用 with 语句,首先要明白上下文管理器这一概念。有了上下文管理器,with 语句才能工作。上下文管理协议(Context Management Protocol) 包含方法 enter() 和 exit(),支持该协议的对象要实现这两个方法。上下文管理器(Context Manager) 支持上下文管理协议的对象,这种对象实现了enter() 和 exit() 方法。上下文管

2015-12-23 21:53:11 843

原创 Linux下的五种I/O模型

阻塞I/O简介 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空间,IO函数返回成功指示。也就是说进程会一直阻塞,直到数据拷贝完成。模型图示非阻塞IO模型简介 非阻塞IO通过进程反复调用IO函数(多次系统调用,并马上返回);也就是说在数据拷贝的过程中,进程是阻塞的。模型图示 我们把一个SOCKET接口设置为非阻塞就

2015-12-09 00:05:00 396

原创 简单介绍同步,异步,阻塞,非阻塞

同步所谓同步,就是调用一个功能,在没有得到结果之前,该调用就不返回,死等结果。也就是必须一件一件事做,等前一件做完了才能做下一件事。举例 就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时就开始吃饭。异步就是我调用一个功能,不需要知道该功能结果,该功能有结果后通知我(回调通知)。阻塞阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间

2015-12-08 23:42:20 182

原创 创建一个tcp连接

创建步骤调用reactor.connetcTCP()方法打开一个TCP连接,传递一个ClientFactory对象作为第三个参数。ClientFactory对象等待连接被建立,然后创建一个Protocol对象来管理连接中的数据流。相关接口介绍connectTCP 返回一个提供Iconnector的连接器对象,当连接被创建/失败/丢失时,这个连接器将在factory调用各种回调。def connec

2015-12-08 22:20:51 817

原创 书写一个twisted的Daemon

书写步骤实质上会关注三个层次的对象。它们互相可配置,可独立开发,只需要通过简单的调用配置就可结合使用。 1.就是侦听的建立、工厂的初始化、服务器的运行,它需要reactor的开发。2.服务的初始化、用户连接的建立、持久配置数据的存储、协议的实例化,它需要factory的开发。3.用户连接建立后的事件处理,它需要protocol的开发了提示 请求和实例化的顺序是reactor、fa

2015-12-08 21:59:54 354

原创 glob

模块简介glob是python自己带的一个文件操作相关模块,用它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。glob(pattern)返回与pattern相匹配的路径名列表。它只有一个参数pattern,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。iglob(pattern)返回与glob相同的结果,但是用迭代器。glob与.iglob()的区别glo

2015-12-07 21:38:32 206

原创 Twisted模型简介

Twisted简介Twisted 网络编程框架是一种基于事件的网络编程框架,用户需要继承特定的类,并重载其中的方法来处理网络通信中可能出现的各种情况。一个典型的Twisted应用程序会建立至少一个协议,可以从twisted.internet.protocol.BaseProtocol类或其子类继承。协议还需要实现数据的接收处理,即收到数据之后需要做出何种响应。比较简单的Twisted应用程序可以继承

2015-12-04 00:02:14 891

原创 简单了解交换机

简介是一种基于MAC地址识别,能完成封装转发数据帧功能的网络设备,工作在数据链路层。基本功能1.像集线器一样,交换机提供了大量可供线缆连接的端口,这样可以采用星型拓扑布线。2.像中继器、集线器和网桥那样,当它转发帧时,交换机会重新产生一个不失真的方形电信号。3.像网桥那样,交换机在每个端口上都使用相同的转发或过滤逻辑。4.像网桥那样,交换机将局域网分为多个冲突域,每个冲突域都是有独立的宽带,因此大大

2015-12-02 23:23:52 591

原创 OSI七层模型小结

1.物理层功能 物理拓扑:透明地传输比特流,通过媒介传输比特,确定机械及电气规范(比特Bit)设备 网线光纤、同轴电缆、集线器(HUB)、Modor协议 RJ45、CLOCK、IEEE802.32.数据链路层功能 组帧:建立逻辑连接、进行硬件地址寻址、差错效验等功能,将比特组装成帧和点到点的传递(帧Frame)。设备 二层交换机、网桥、数据帧协议 PPP、FR、HDLC、VLAN、MAC

2015-12-02 22:45:16 368

原创 地址解析协议(APR)

概念地址解析协议, 即 ARP (Address Resolution Protocol)是根据IP地址获取物理地址的一个TCP/IP协议。 主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。作用建立局域网内主机间的MAC地址与IP

2015-12-02 22:11:27 2166

原创 IP地址分类

IP地址分类A 类地址8bit 网络号 + 24bit 主机号 地址范围:1.0.0.1-127.255.255.254 子网掩码:255.0.0.0B 类地址16bit 网络号 + 16bit 主机号 地址范围:128.1.0.1-191.255.255.254; 子网掩码:255.255.0.0C 类地址24bit 网络号 + 8bit 主机号 地址范围:192.0.1.1-22

2015-12-02 22:04:05 285

原创 select、poll、epoll简介

epoll跟select都能提供多路I/O复用的解决方案。在现在的Linux内核里有都能够支持,其中epoll是Linux所特有,而select则应该是POSIX所规定,一般操作系统均有实现select本质 通过设置或者检查存放fd标志位的数据结构来进行下一步处理。缺点 1.单个进程可监视的fd数量受到了限制,在32位机器上,他所能管理的fd数量最大为1024;2.对socket进行扫描时是线性

2015-12-02 21:51:20 316

原创 PyInstaller-2.1打包python程序

安装1.下载解压PyInstaller-2.1.zip,可以放在任意目录2.cd C:\PyInstaller-2.1 执行python PyInstaller.py 若出现如下错误,则需要安装pywin32-218.win32-py2.7.exe 3.继续执行python PyInstaller.py 若出现以下现象,则成功 命令执行方式方式一 cd C:\PyInstaller-2

2015-12-02 21:27:22 873

原创 py2exe打包python程序

py2exe简介py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序。py2exe用法如果你有一个名为test.py的python脚本,你想把它转换为运行在windows上的可执行程序,并运行在没有安装python的windows系统上,那么首先你应写一个用于发布程序的设置脚

2015-12-02 20:59:31 435

原创 ‘python’不是内部或外部命令

发现问题我们安装python后,运行cmd执行python时,可能会出现如下情况:解决问题运行->cmd set PATH=%path%;C:\Python27

2015-12-02 20:49:06 542

原创 进程和线程的差别

什么是进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。什么是线程线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。线程是进

2015-12-01 23:55:25 390

原创 Heap与stack的差别

1.Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。 2.Stack空间有限,Heap是很大的自由存储区 3.C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。 4.程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行

2015-11-29 22:28:11 427

原创 static变量与普通变量的区别

static全局变量与普通的全局变量全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程

2015-11-29 22:22:38 9039

原创 浅谈const,static,extern

关于constconst有什么用 const用来定义一个只读的变量或对象。主要优点 便于类型检查,同宏定义一样可以方便地进行参数的修改和调整,节省空间,避免不必要的内存分配,可为函数重载提供参考。说明 const修饰函数参数,是一种编程规范的要求,便于阅读,一看即知这个参数不能被改变,实现时不易出错。关于staticstatic有什么作用 在C中 主要用于定义全局静态变量,定义局部静态变量

2015-11-29 22:02:05 319

原创 typedef和define有什么区别

用法不同typedef用来定义一种数据类型的别名,增强程序的可读性。define主要用来定义常量,以及书写复杂使用频繁的宏。执行时间不同typedef是编译过程的一部分,有类型检查的功能。define是宏定义,是预编译的部分,其发生在编译之前,只是简单的进行字符串的替换,不进行类型的检查。作用域不同typedef有作用域限定。define不受作用域约束,只要是在define声明后的引用都是正确的。对

2015-11-29 21:51:02 410

原创 简述strcpy、sprintf与memcpy的区别

操作对象不同1.strcpy的两个操作对象均为字符串 2.sprintf的操作源对象可以是多种数据类型,目的操作对象是字符串 3.memcpy的两个对象就是两个任意可操作的内存地址,并不限于何种数据类型。执行效率不同memcpy最高,strcpy次之,sprintf的效率最低。实现功能不同1.strcpy主要实现字符串变量间的拷贝 2.sprintf主要实现其他数据类型格式到字符串的转化 3

2015-11-29 21:40:48 1701

TortoiseSVN-1.8.4.24972-win32-svn-1.8.5.msi

SVN为程序开发团队常用的代码管理,版本控制软件;此包为svn安装包。

2015-11-27

Setup-Subversion-1.8.5.msi

SVN为程序开发团队常用的代码管理,版本控制软件,setup-subversion-1.8.4.msi 版本控制,搭建服务器用,其他使用者电脑不需要。

2015-11-27

LanguagePack_1.8.4.24972-win32-zh_CN.msi

SVN为程序开发团队常用的代码管理,版本控制软件,此包为svn汉化包

2015-11-27

空空如也

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

TA关注的人

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