- 博客(34)
- 资源 (3)
- 收藏
- 关注
原创 Python——类、实例和其他对象的内建函数
1、issubclass() issubclass() 布尔函数判断一个类是另一个类的子类或子孙类。issubclass(sub, sup) issubclass() 返回 True 的情况:给出的子类 sub 确定是父类 sup 的一个子类(反之,则为 False)。这个函数也允许“不严格”的子类,意味着,一个类可视为其自身的子类。issubclass() 的第二个参
2014-03-21 00:50:06
9843
原创 Python——类属性/实例属性
一、类属性 类属性仅与其被定义的类相绑定。类数据属性仅当需要有更加“静态”数据类型时才变得有用,它和任何实例都无关。 1. 类的数据属性 数据属性仅仅是所定义的类的变量。这种属性已被 OO 程序员所熟悉,即静态变量,或者是静态数据。它们表示这些数据是与他们所属的类对象绑定的,不依赖于任何类实例。静态成员通常仅用来跟踪与类相关的值。
2014-03-19 22:25:12
31144
3
原创 Python——面向对象编程(引言)
一、类和实例 类和实例相互关联着:类是对象的定义,而实例是“真正的实物”。下面的实例展示了如何创建一个类:>>> class MyNewObjectType(bases):... 'define MyNewObjectType class'... class_suite... 关键字是 class,紧接着是一个类名。随后是定义类的类体代码。
2014-03-18 23:27:16
2614
原创 Python——条件、循环和其他语句
一、print 和 import 的更多信息 print 打印多个表达式也是可行的,只要将它们用逗号隔开就好:
2014-03-05 23:05:51
15614
原创 Python——字典
字典是Python中唯一内建的映射类型。字典中的值并没有特殊的顺序,但是都存储在一个特定的键(Key)里。键可以是数字、字符串甚至是元组。
2014-03-04 21:22:08
27376
原创 Python——字符串
一、基本字符串操作 所有标准的序列操作(索引、分片、乘法、判断成员资格、求长度、取最小值和最大值)对字符串同样适用。但是,请记住字符串都是不可变的。二、字符串格式化:精简版 字符串格式化使用字符串格式化操作符即百分号%来实现。在%的左侧放置一个字符串(格式化字符串),而右侧则放置希望格式化的值。可以使用一个值,如一个字符串或者数字,也可以使用多个值的元组或者
2014-03-03 21:07:38
10413
原创 Python——列表,元组
一、简介 列表(list)是Python以及其他语言中最常用到的数据结构之一。Python使用使用中括号 [ ] 来解析列表。列表是可变的(mutable)——可以改变列表的内容。二、基本的列表操作 列表可以使用所有适用于序列的标准操作,例如索引、分片、连接和乘法。本文介绍一些可以改变列表的方法。 1. list 函数
2014-02-26 23:30:07
30847
原创 Python——序列
一、概览 在Python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号——即元素的位置,也称为索引。第一个索引是 0,第二个则是 1,以此类推。序列中的最后一个元素标记为 -1,倒数第二个元素为 -2,一次类推。 Python包含 6 中内建的序列,包括列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。
2014-02-26 21:11:20
29190
1
原创 《STL源码剖析》——迭代器(iterators)概念与traits编程技法(二)
一、SGI STL 的私房菜:__type_traits __type_traits 负责萃取型别(type)的特性。此处所关注的型别特性是指:这个型别是否具备 non-trivial defalt ctor?是否具备 non-trivial copy ctor?是否具备 non-trivial assignment operator?是否具备 non-trivial dtor?
2014-02-25 22:53:37
1541
原创 《STL源码剖析》——迭代器(iterators)概念与traits编程技法(一)
一、迭代器设计思维——STL关键所在 STL的中心思想在于:将数据容器(containers)和算法(algorithms)分开,彼此独立设计,最后再以一帖粘合剂将它们撮合在一起。二、迭代器(iterator)是一种 smart pointer 迭代器是一种行为类似指针的对象,而指针的各种行为中最常见也最重要的便是内容提领(dereference)和成员访问
2014-02-25 21:47:18
1156
原创 《STL源码剖析》—— 空间配置器(五)
一、内存基本处理工具 STL定义有五个全局函数,作用于未初始化空间上。前两个函数是用于构造的 construct() 和用于析构的 destroy(),另三个函数 uninitialized_copy(),uninitialized_fill(),uninitialized_fill_n(),分别对应于高层次函数 copy()、fill()、fill_n() —— 这些都是STL
2014-02-20 20:51:12
1462
原创 《STL源码剖析》—— 空间配置器(四)
一、第二级配置器 __default_alloc_template 剖析 为了方便管理,SGI第二级配置器会主动将任何小额区块的内存需求量上调至 8 的倍数,并维护 16 个free-lists,各自管理大小分别为 8, 16, 24, 32, 40, 48, 56,64, 72,80,88,96,104,112,120,128 bytes的小额区块。free-lists的节点结
2014-02-20 05:05:55
1304
原创 《STL源码剖析》—— 空间配置器(三)
一、空间的配置与释放,std::alloc 对象构造前的空间配置和对象析构后的空间释放,由负责,SGI对此的设计哲学如下: 1. 向 system heap 要求空间。 2. 考虑多线程(multi-threads)状态。 3. 考虑内存不足时的应变措施。 4. 考虑过多“小型区块”可能造成的内存碎片(fra
2014-02-19 22:11:35
1272
原创 《STL源码剖析》—— 空间配置器(二)
一。构造和析构基本工具:construct() 和 destroy()#ifndef __SGI_STL_INTERNAL_CONSTRUCT_H#define __SGI_STL_INTERNAL_CONSTRUCT_H// 欲使用 placement new,需先包含此文件#include __STL_BEGIN_NAMESPACE// 以下是 destroy() 第一版本
2014-02-18 21:31:00
1240
原创 《STL剖析》——空间配置器(一)
SGI STL 的配置器与众不同,也与标准规范不同,其名称是 alloc 而非 allocator ,而且不接受任何参数。一、SGI标准的空间配置器,std::allocator 虽然 SGI 也定义有一个符合部分标准、名为 allocator 的配置器,但 SGI 从未用过它,也不建议我们使用。主要原因是效率不佳,只把 C++ 的 ::operator new 和 ::op
2014-02-18 20:59:52
990
原创 TIME_WAIT状态
一、TIME-WAIT是什么 TIME-WAIT状态是在连接拆除阶段开始起作用的。在拆除一个TCP连接通常需要交换 4 个分段。 (1)主机 1 上的应用程序关闭自己这端的连接,使得 TCP 向主机 2 发送了一个 FIN。 (2)主机 2 对着(1)中的 FIN 进行 ACK 确认。 (3)一段时间之后,主机 2 上的应用程序关闭
2014-02-16 18:44:07
1429
原创 笔试题(一)
1. 以下程序的输出:#include using namespace std; class Base {public: Base(int j) : i(j) {} virtual ~Base() {} void func1() { i *= 10; func2(); } int getV
2014-02-15 18:28:16
1305
原创 《STL源码剖析》—— stl_config.h
参考侯捷《STL源码剖析》#ifndef __STL_CONFIG_H# define __STL_CONFIG_H// 本文件所做的事情:// (1) 如果编译器没有定义 bool,true,false,就定义它们// (2) 如果编译器的标准程序库未支持 drand48() 函数,就定义 __STL_NO_DRAND48// (3) 如果编译器无法处理 static
2014-02-12 22:26:56
1775
原创 有了互斥量,为什么还需要条件变量?
一。互斥量和条件变量简介 互斥量(mutex)从本质上说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁以后,任何其他试图再次对互斥锁加锁的线程将会阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个变为运行状态的线程可以对互斥锁加锁,其他线程将会看到互斥锁依然被锁住,只能回
2013-06-04 21:39:26
7568
7
原创 Linux中使用共享库的错误
之前一段时间在学习《C++网络编程》(卷一),将书中的代码敲出来进行测试,但是却出现了使用共享库(.so)的错误。 一。错误描述 编译ACE模块后,生成的libACE.so (libACE.so -> libACE.so.6.1.6)被放置在了/usr/local/lib/目录下,相关头文件放置在/usr/local/include。我的测试文件名
2013-05-25 00:02:59
2381
原创 在CentOS上安装ACE
安装过程如下:1. 可以从http://download.dre.vanderbilt.edu上下载ACE软件。2. 将下载下来的文件解压到一个地方,例如, /usr/local/MyDev3. 编译步骤:(1)定义环境变量 在/etc/profile文件中加入下面语句: export ACE_ROOT=/usr/local/MyDev/
2013-05-16 00:27:00
2228
原创 Python基础:__name__
在Python中每一个模块都有一个默认的属性:__name__。1、当我们直接运行python程序的时候,则__name__的值是 __main__。 2、当一个python模块被其他模块import的时候,则该模块的__name__值为模块的文件名(不带路径及文件扩展名)。
2013-05-09 22:47:06
903
原创 GDB的基本用法
本文参考《Debug Hacks》一书所作 —— 每天进步一点点。一. 准备 通过 gcc 的 -g 选项生成调试信息。 $ gcc -Wall -O2 -g 源文件 -g选项可以使用仅可GDB使用的一些附加调试信息;这些附加信息可以使GDB工作的更好,但是也可能令其他调试器崩溃或者不能读该文件。二. GDB基本用法 启动: $
2013-04-16 00:24:06
11583
原创 Python之struct简介
最近一段时间在看有关Python相关的知识,特别是其中关于网络通信的内容。在大部分的书本示例中,客户端和服务器端通信的内容都是文本信息,例如“hello world!”之类的信息。但是在实际应用中,我们看到的大部分数据时二进制数据,如“0x12345678”。所以这时候,就需要使用到Python中的struct来处理一下了。 一、struct简介 看到struc
2013-03-14 23:46:39
9372
转载 迈出从3K到1W的重要一步——掌握设计模式
IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。 为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置;而自己将代码改了又改,删了又建,几乎晕厥,最后只能推翻重来。 为什么大牛写完的程序测试上线后,几乎完美运行,用户无懈可击;而自己的程序bug重重,改好
2012-07-14 00:15:54
1322
原创 BSD与系统V的初始化机制
内核运行的第一个程序是init进程。该进程读取系统初始化表(/etc/inittab),确定如何初始化和启动各种守护进程。在系统初始化过程中,BSD和系统V的最大区别在于init脚本中。在BSD风格中,所有守护进程实质上只有少数几个脚本启动。例如,Slackware中的init进程采用了BSD分隔,该进程运行系统脚本(etc/rc.d/rc.S)来配置系统。与BSD风格不同,系统V风格的脚本是独立
2012-06-16 15:59:07
1144
转载 Linux的运行级别
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://bxuan.blog.51cto.com/376592/704946 运行级别就是操作系统当前正在运行的功能级别。级别是从0到6,具有不同的功能。这些级别定义在/ect/inittab文件中。这个文件是init程序寻找的主要文件,最先运行的服务是那些
2012-06-16 15:20:48
488
原创 Linux日志
企业系统的关键需求之一是对系统上发生的相关事件进行日志记录,从而辅助执行系统管理和故障后的系统调试。对此,Linux提供了一种极好的、简单的且安全可配置的日志工具。 Linux日志主要保存在/var/log目录中。该目录包含了多个由系统维护的日志文件,但其他服务和程序也可以将自己的日志文件放置在该目录中。 一、/var/log/messages文件
2012-06-16 15:07:51
772
转载 mysql中的unix_timestamp函数
偶然看到MySQL的一个函数 unix_timestamp(),不明就里,于是就试验了一番。 unix_timestamp()函数的作用是返回一个确切的时间点的UNIX时间戳,这个Unix时间戳是一个无符号整数。unix_timestamp()函数有两种重载形式,一是不带任何参数,另外一个是带有一个Date或DateTime或TimeStamp类型的参数。 unix_times
2012-06-12 18:17:38
28881
转载 gethostbyname() -- 用域名或主机名获取IP地址
#include #include struct hostent *gethostbyname(const char *name);这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。传出值,是一个hostent的结构。如果函数调用失败,将返回NULL。struct hostent{ char *h_name; char
2012-05-20 14:18:59
739
转载 WSAStartup与WSACleanup
WSAStartup与WSACleanupWSAStartup应该与WSACleanup成对使用,WSAStartup的功能是初始化Winsock DLL,WSACleanup是来解除与Socket库的绑定并且释放Socket库所占用的系统资源。在Windows下,Socket是以DLL的形式实现的。在DLL内部维持着一个计数器,只有第一次调用WSAStartup才真正装载DLL,以后
2012-05-20 13:52:28
21303
原创 关于XML-RPC
这个星期在工作中实现了一个文件拷贝的程序,该程序从局域网中的某台机器上将某个文件或某个文件下的文件拷贝到本地机器中,程序运行于windows平台,语言是C++。在这个程序中主要的难点(这里先说是难点吧,其实感觉应该是程序需要考虑到的技术点)应该三处,一:程序与系统中其他模块如何交互,即某人如何告诉你拷贝命令和拷贝完成如何通知需要通知的人。二:拷贝文件的具体操作。三:任务中优先级的设置。这篇文章就介
2012-05-20 12:17:00
1125
原创 C++中继承情况下的类作用域
首先,每一个类都保持着自己的作用域,在该作用域中定义了成员的名字。 名字查找在编译时发生 对象、引用或指针的静态类型决定了对象能够完成的行为(C++ PRIMER)。这里能够完成的行为,应该说是能够使用的变量名(数据和方法),这些变量名是定义在调用它的对象、引用或指针的静态类型中的。为什么将行为改为变量名,是因为我觉得行为是处理事件的方法,而在静态类型和动
2012-05-19 17:49:53
902
原创 博客从今天开始
大家好,欢迎来到我的博客! 我一名普通的程序员,目前工作于北京,从事着服务器开发与维护工作。我毕业于XD university,从工作到现在,差不多有一年时间了。在这一年中,我学到了很多知识,但是还有很多的知识需要去学习。我看过一些书,从书中学到很多,但是看过的书并没有形成一个体系,或者是看过之后没有总结与复习。之前会把一些知识记录到笔记本上,却很少去查看。所以从几天起,把自己从
2012-05-19 15:46:58
453
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人