自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Python核心编程-抓取网页

#!/usr/bin/env pythonfrom urllib import urlretrievedef firstNonBlank(lines): for eachLine in lines: if not eachLine.strip(): continue else: return eachL

2012-12-18 23:18:16 1110

原创 用Python实现一个简单的算术游戏

#!/usr/bin/env pythonfrom operator import add, sub from random import randint, choiceops = {'+': add, '-':sub}#定义一个字典MAXTRIES = 2 def doprob(): op = choice('+-') #用choice从'+-'中随意选择

2012-12-18 19:35:45 2463

原创 用Python实现求最大公约数和判断是否是素数

程序如下:#!/usr/bin/env pythondef showMaxFactor(num): count = num / 2 while count > 1: if num % count == 0: print 'largest factor of %d is %d' % (num, count) b

2012-12-15 12:47:33 1492

原创 迭代序列的三种方法和与序列相关的内建函数

法一:通过序列项迭代>>> nameList = ['Walter', "Nicole",'Steven','Henry']>>> for eachName in nameList:... print eachName, "Lim"... Walter LimNicole LimSteven LimHenry Lim法二:通过序列索引迭代>>> name

2012-12-14 22:48:41 1676

原创 Python的elif语句

Python中没有switch/case语句,我们可以用elif语句来模拟它.如:if user.cmd == 'create': action = "create item"elif user.cmd == 'delete': action = 'delete item'elif user.cmd == 'update': action = 'update ite

2012-12-14 22:16:51 19199

原创 Python字典应用的一个例子

#!/usr/bin/env python#定义一个空字典db = {}def newuser():    prompt = '--login desired: '    while True:        name = raw_input(prompt)        #根据关键字name看字典中是否已存在此键值对 if db.has_ke

2012-12-14 20:47:14 3202

原创 解释性语言和编译性语言的区别

解释性语言和编译性语言的区别计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。编译性语言编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(

2012-12-14 12:12:09 2061

原创 用Python实现队列

#!/usr/bin/env pythonqueue = []def enQ(): queue.append(raw_input('Enter new string: ').strip())#调用list的列表的pop()函数.pop(0)为列表的第一个元素def deQ(): if len(queue) == 0: print 'Cannot po

2012-12-13 23:51:36 1917

原创 用Python实现栈

这是Python核心编程里的一个例子:#!/usr/bin/env python#定义一个列表来模拟栈stack = []#进栈,调用列表的append()函数加到列表的末尾,strip()没有参数是去掉首尾的空格def pushit(): stack.append(raw_input('Enter new string: ').strip())#

2012-12-13 01:01:04 3337

原创 linux内核的container_of()宏定义分析

一、#define offsetof(TYPE, MEMBER) ((size_t) & ((TYPE *)0)->MEMBER )1. ( (TYPE *)0 ) 将零转型为TYPE类型指针;2. ((TYPE *)0)->MEMBER 访问结构中的数据成员;3. &( ( (TYPE *)0 )->MEMBER )取出数据成员的地址;4.(size_t)(&(((TYPE*)0

2012-12-12 11:31:46 1085

原创 Python模块及函数的使用

一.1.模块是包含函数和其他语句的脚本文件,以".py"为后缀名,在Python中可以通过导入模块来使用模块中的函数或数据.创建一个文件fun.py内容如下:def f1(): print('hello world!')def f2(L): result = 0 for i in L: result += i return r

2012-12-11 13:52:13 1235

原创 Python中yield的用法

yield是生成的意思,但是在python中则是作为生成器理解,生成器的用处主要可以迭代,这样简化了很多运算模型(还不是很了解是如何简化的)。yield是一个表达式,是有返回值的.当一个函数中含有yield时,它不再是一个普通的函数,而是一个生成器.当该函数被调用时不会自动执行,而是暂停,见第一个例子:例1:>>> def mygenerator():... prin

2012-12-11 11:52:52 32228

原创 用Python实现二分查找

程序如下:#!/usr/bin/env pythonimport sys def search2(a,m): low = 0 high = len(a) - 1 while(low <= high): mid = (low + high)/2 midval = a[mid] if midval <

2012-12-11 00:42:33 17600

原创 linux下的fork()函数

1.传统的fork()系统调用直接把所有的资源复制给新创建的进程.Linux的fork()使用写时拷贝(copy-on-write)页实现.写时拷贝是一种可以推迟甚至免除拷贝数据的技术,内核此时并不复制整个进程地址空间,而是让父进程和子进程共享同一个拷贝.   只有在需要写入的时候,数据才会被复制,从而使各个进程拥有各自的拷贝,也就是说,资源的复制只有在需要写入的时候才进行,在此之前,只是以只

2012-12-09 17:59:40 1123

原创 C中为什么要用内联函数

inline 这个名称可以反映出它的工作方式,函数会在它所调用的位置上展开.这么做可以消除函数调用和返回所带来的开销(寄存器存储和恢复),而且,编译器会把调用函数的代码和函数本身放在一起进行优化,所以有进一步优化代码的可能.不过这么做是有代价的,代码会变长,这也就意味着占用更多的内存空间或者占用更多的指令缓存.内核开发者通常把那些对时间要求比较高,而本身长度又比较短的函数定义成内联函数.

2012-12-09 09:40:52 2021

原创 Python切片索引

1.sequence[a:b]输出下标a到b-1的序列.2.sequence[:b]输出从开使下标0到b-1的序列3.sequence[::-1]翻转操作.4.sequence[::2]隔一个取一个注:sequence的下标: 从0  1  2  3......(n-3)  (n-2)  (n-1)                                对应:(-n)

2012-12-09 01:32:02 1805 1

原创 标准类型运算符和内建函数

1.标准类型运算符:   (1)对象值的比较   (2)对象身份的比较:           例1.如:foo1 = foo2 = 4.3    表示foo1和foo2指向相同的对象.(这条语句等同于 foo1 = 4.3   foo2 = foo1)  因为python是通过传递引用来处理对象的.           例2.foo1 = 4.3              第一个数

2012-12-08 17:19:43 787

原创 Python对象

1.所有的Python 对象都包括三个特性:   (1)身份:每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得到.这个值可以被认为是该对象的内存地址.   (2)类型:对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。您可以用内建函数type()查看Python 对象的类型。   (3)值:对象表示的数据项注

2012-12-08 12:30:07 837

原创 两个简短的python小程序

1这是一个创建一个文件,并在控制台写入行到新建的文件中.#!/usr/bin/env python'makeTextFile.py -- create text file'import osls = os.linesep#get filenamewhile True: fname = raw_input('Enter filename:') if os.pa

2012-12-08 10:46:01 2205

原创 如何在linux下运行python程序

要编辑一个new_python的python程序文件,输入如下命令:$pico new_python        (注:可以用vim直接编辑.)输入如下测试代码:#!/usr/bin/env pythonprint 1+1其中第一行告诉shell如何执行此文本文件,第二行是一个输出表达式.保存文件后,对文件增加可执行屬性$chmod a+x new_pyt

2012-12-08 01:34:20 32243

原创 指针数组与二維数组的区别

下面有两个定义:int a[10][20];int *b[10];其中a是一个真正的二維数组,它分配了200个int类型的存储空间,并且通过常规的矩阵下标运算可以得到矩阵元素,对于b来说,该定义仅仅分配了10个指针,并且没有对它们初始化,它们的初始化必须以显示的方式进行,比如静态初始化或通过代码初始化.假定b的每个元素都指向一个具有20个元素的数组,那么编译器就要为它分配200个i

2012-12-06 13:15:19 1071

原创 C的指针数组

声明: char *lineptr[MAXLINES]它表示lineptr是一个具有MAXLINES个元素的一維数组,其中数组的每一个元素是一个指向字符类型对象的指针,也就是说,lineptr[i]是一个字符指针,而*lineptr[i]是该指针指向的第i个文本行的首字符.例:指针数组的初始化(摘自C程序设计)编写一个函数month_name(n),它返回一个指向第n个

2012-12-04 23:37:28 720

原创 UNIX环境高级编程--第十一章线程总结

1.只要单个资源需要在多个用戶间共享,就必须处理一致性问题.2.处理器的数量并不影响程序结构,所以不管处理器的个数是多少,程序可以通过使用线程得以简化,而且,即使多线程程序在串行化任务时不得不阻塞,由于某些线程在阻塞时还有另外一些线程可以运行,所以多线程程序在单处理器上仍能改善响应时间和吞吐量.3.线程创建时并不能保证哪个线程会先运行,是新建的线程还是调用线程.4.单个线程的三种退出方

2012-12-04 16:56:41 799

原创 加油

这几天好不顺...心里有点受打击,好好调整一下自己吧..加油.

2012-12-04 16:56:10 458

原创 一些简单的Python语法

1.Python中字符串被定义为引号之间的字符集合.Python支持成对的单引号和双引号.2.使用索引运算符( [ ] )和切片运算符( [ : ] )可以得到子字符串.索引规则是:第一个字符的索引是0,最后一个字符的索引是-1.   [a:b]--输出从a到b的子字符(包括a,但不包括b),,,如:>>>pystr = 'Python'

2012-12-04 00:59:08 911

原创 进程原语和线程原语的比较

进程原语         线程原语         描述          fork      pthread_create     创建新的控制流          exit      pthread_exit     从现有的控制流中退出          waitpid      pthread_join     从控制流中

2012-12-03 19:39:52 1863

原创 pthread_create()使用的小问题

APUE上的一个例子#include "apue.h"#include #include pthread_t ntid;void printids(const char *s) { pid_t pid; pthread_t tid; pid = getpid(); tid = pth

2012-12-03 11:19:04 1096

原创 另一道与fork()有关的面试题

题目:请问下面的程序一共输出多少个“-”?#include #include #include int main(void){ int i; for(i=0; i<2; i++){ fork(); printf("-"); } return 0;}一般熟悉fork机制会认为输出为6个'-',但我们运行一下,输出的是8个'-'

2012-12-03 09:23:12 5419 3

原创 开使学习python

1.安装sudo apt-get install cpython2.启动:在命令行下输入python.命令提示符变为>>>即启动了python解释器.3.>>>print 'aaa'打引一个字符串.一个简单操作过程:Python 2.6.5 (r265:79063, Oct  1 2012, 22:07:21) [GCC 4.4.3] on linux2Type "help

2012-12-03 02:06:06 1225

原创 程序员练级攻略(转)

启蒙入门1、 学习一门脚本语言,例如Python/Ruby可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)遍历本地文件系统 (sys, os, path),例如写一个

2012-12-03 00:02:12 1378

原创 通过一道面试题谈linux下的fork运行机制

fork()的返回值指明的是进程运行的上下文环境。如:pid_t pid;pid = fork();if(pid>0) {/*如果返回值大于零,表明处于父进程上下文环境中,返回值是子进程的ID号*/} else if(pid == 0) {/*返回值为零,表明处于子进程上下文环境中*/} else {/*表烦调用fork发生了错误,但仍处于父进程的上下文*/

2012-12-02 20:55:43 1234

原创 UNIX环境高级编程--第十章信号总结

1.信号是软件中断,信号提供了一种处理异步事件的方法.2.产生信号的事件对进程来说是随机出现的,进程不能简单的测试一个变量来判别是否出现了一个信号,而是必须告诉内核"在此信号出现时,请执行下列动作."3.内核执行的三种信号处理动作:    (1)忽略此信号:有两个信号--SIGKILL和SIGSTOP不能忽略.    (2)捕捉信号:通知内核在某种信号发生时调用一个用戶函数,在

2012-12-02 15:23:07 883

原创 UNIX环境高级编程--第9章总结

1.经由网络登陆至系统时,终端和计算机之间的连接不是点对点连接.2.在网络登陆情况下,所有登录都经由内核的网络接口驱动程序,事先并不知道将会有多少这样的登录.我们不是使一个进程等待每个可能的登录,而是必须等待一个网络连接请求的到达.3.图形界面的窗口管理器登录并不会产生登录shell.所以其环境变量设置在~/.bashrc中.4.会话是一个或多个进程组的集合.进程调用setsid建立一

2012-12-01 20:33:09 713

原创 UNIX环境高级编程--第八章进程控制总结

1.ID为0的进程通常是调度进程,也称交换进程,是内核的一部分,也称系统进程2.进程ID为1的进程是init进程,在自举过程结束时由内核调用,它不是内核中的系统进程,但它以超级用戶权限运行.3.在某些虚拟存储器实现中,进程ID为2的是守护进程,此进程负责支持虚拟存储系统的分页操作.4.fork()函数被调用一次,但返回两次.两次返回的唯一区别是子进程的返回值是0,而父进程的返回值则是子

2012-12-01 08:39:25 817

空空如也

空空如也

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

TA关注的人

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