- 博客(16)
- 收藏
- 关注
转载 Python yield 使用浅析
您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?我们先抛开 generator,以一个常见的编程题目来展示 yield 的概念。如何生成斐波那契數列斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契數列的前
2015-11-17 15:42:36
258
转载 zip tar rar 命令详解
linux zip命令zip -r myfile.zip ./*将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件.2.unzipunzip -o -d /home/sunny myfile.zip把myfile.zip文件解压到 /home/sunny/-o:不提示的情况下覆盖文件;-d:-d /home/sun
2015-11-13 19:13:35
355
原创 [试题分析] A &a=__NULL;填空题。
A &a=*(A*)NULL;引用了零地址上的一个对象!对零地址解引用,是没有问题的,当然 要是把"A"换成内置类型就不行了。
2015-10-15 17:14:14
270
转载 平面划分问题
一条直线把平面分成两部分在一条直线的基础上增加一条,这时第二条直线与第一条直线相交,只有一个交点,把原来的两个部分分别都分成两部分,一共是2+2=4部分在两条直线的基础上增加一条,这时第三条直线与前两条直线相交时,当交点不在第三直线上的时候,这时第三直线被前两条截成三段,每一段都分原来的三部分成两部分,从而得到4+3=7部分。在三直线的基础上的第四条直线与前三条相交最多有三个交点,从而把原来
2015-10-14 13:39:24
640
原创 [试题解析]static int x[2][3]={2,3,4,5,6,7} *x[1]=?
[试题解析]static int x[2][3]={2,3,4,5,6,7} *x[1]=?A.*(x)[5] B.*(*(x+1)) C.*(&x[0][0]+2) D.*(*x+3)[分析] 先看看二维数组的分布图A> 括号的优先级最高,"[ ]" 先跟x结合就成了,*x[5] 相当于*(x+5),也就是说相当于纵向地址增加5个,相当于越界访问了,其值就
2015-10-14 12:47:00
2319
转载 main()参数int argc,int *argv[]的学习
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[]) { int i; for (i = 0; i i++) cout
2015-09-21 22:57:33
538
转载 关于CPU Cache -- 程序猿需要知道的那些事
本文原文地址:http://cenalulu.github.io/linux/all-about-cpu-cache/本文将介绍一些作为程序猿或者IT从业者应该知道的CPU Cache相关的知识先来看一张本文所有概念的一个思维导图为什么要有CPU Cache随着工艺的提升最近几十年CPU的频率不断提升,而受制于制造工艺和成本限制,目前计算机的
2015-08-28 11:02:10
553
转载 KMP算法
个人觉得这篇文章是网上的介绍有关KMP算法更让人容易理解的文章了,确实说得很“详细”,耐心地把它看完肯定会有 所收获的~~,另外有关模式函数值next[i]确实有很多版本啊,在另外一些面向对象的算法描述书中也有失效函数 f(j)的说法,其实是一个意思,即next[j]=f(j-1)+1,不过还是next[j]这种表示法好理解啊:
2015-08-10 16:42:33
237
转载 linux /proc详解
Linux-proc 查看逻辑CPU个数:#cat /proc/cpuinfo |grep "processor"|sort -u|wc -l24 查看物理CPU个数:#grep "physical id" /proc/cpuinfo|sort -u|wc -l 2#grep "physica
2015-08-08 21:39:19
489
转载 主要介绍va_start和va_end的使用及原理。
本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(
2015-08-08 10:07:26
356
转载 memcached源码分析之线程池机制(二)
在上一篇中已分析了memcached线程池的创建流程,由于上篇篇幅较长,因此将memcached线程池中线程的调度流程另立一篇。先让我们把目光转到主函数中,主线程在调用thread_init函数创建好线程池后,就开始创建监听套接字,memcached支持TCP,UDP,UNIX域套接字,因此相应的要创建三种监听套接字这里我们只分析TCP listening socket的创建(UD
2015-08-06 19:30:33
219
转载 memcached源码分析之线程池机制(一)
已经个把月没有写长篇博文了,最近抽了点时间,将memcached源码分析系列文章的线程机制篇给整出来,在分析源码的过程中参考了网上的一些资源。该文主要集中于两个问题:(1)memcached线程池是如何创建的,(2)线程池中的线程又是如何进行调度的。一切从源码中找答案。memcached的线程池模型采用较典型的Master-Worker模型:(1)主线程负责监听客户端的建立
2015-08-06 19:20:44
302
转载 Memcached中item锁的粒度
在多线程环境中,对于memcached中的item操作,应该对它加锁,如果加所有的item都加一个全局锁,这样对于一把锁来控制所有hash桶中的item,粒度实在是太大了,一个桶的插入删除操作会阻塞另一个桶的操作。如果锁粒度很小的话,例如每个hash桶加锁,那么如果是在hash桶扩容的情况下,一次扩容操作可能涉及到多个桶数据的迁移,这样需要对多个桶的锁进行循环加锁,这样就有些复杂。Memcache
2015-08-06 19:17:32
457
转载 linux内核模块编程
Linux内核模块编程是一个很重要的知识点。尤其是编写底层驱动程序时,一定会涉及到它。内核模块编程也是Tiger哥学习Linux时第一节课所接触的知识。由此可以看出它的important,也可以看出其实它很easy。一前言:1. 什么是内核模块1> 内核模块是具有独立功能的程序。它可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在内核空间中运行
2015-08-02 20:18:44
343
转载 TCP Splicping技术简介
引子几个月前的一次午饭间,和同事闲聊,突然想起可以在实现Socks4/5等连接代理的时候,当认证等过程结束后,对tcp数据包(即skb)直接做NAT,从而降低CPU占用率、避免内存拷贝,最终达到增大网络流量的目的。当时同事有些异议,后来也就渐渐地遗忘了此事,直到看到l7sw中的tcp splicing(TCP粘合)实现,发现有种不谋而合的感觉。定义Also
2015-07-02 23:28:44
895
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人