摘要:
今天想编写个Trie树的小东西,没想到居然遇到python中的一个很知名的坑,看似没毛病的代码,就是得不到正确结果,最后在stackoverflow上才寻得大牛解释。故记录如下。大致是这样一个问题def fun(a=[]): a.append(1) print a#执行3次fun() 预料结果应该是[1] [1] [1] 实际结果如下fun() #[1]fun() #[1,1]fun() #[1,1,1]...这个问题叫做default mutable parameter values,为何会发生这样的结果呢?不急,举个简单的例子def fun1(a): a.append(1) pri... 阅读全文
阅读排行榜
TCP连接的问题以及TIME_OUT状态
2014-02-22 13:05 by Ryan_Liu, 3425 阅读, 收藏,
摘要:
本文主要讨论两个问题1、为什么TCP链接设计为三次握手(为什么不是两次或者四次)2、TIME_OUT状态的一些问题首先第一个,先看一个所谓Two Generals' Problem两个将军想要攻打同一个敌人,必须他们同时攻打才可能胜利。他们的通信方式,接设是信鸽传递。信鸽可能被其他人捕获从而达不到另一个将军的地方。模拟过程如下:A给B发信息,我们明天进攻如何?假设B收到了,B给A回复信息:可以。这时候B是不敢明天进攻的,因为他不确定自己的消息是否被A接到。假设A接到,A回复:收到你统一的消息。这时A也是不敢明天进攻的,因为他不确定自己这条信息是否被B收到。假设B又收到这条消息,B回复。 阅读全文
Linux小工具bc使用
2014-01-08 09:16 by Ryan_Liu, 1097 阅读, 收藏,
摘要:
现在才知道bc竟然是可以编程的,不得不佩服linux各种工具的博大精深(推荐一本书,software toolsman bc,bc可加的参数有bc [ -hlwsqv ],其中我们常用的也就是-l了,它的意思是定义一些常用的数学库,比如log,sin之类的,所以一般打开bc的命令为bc -l常用的数学运算的书写方式s (x) The sine of x, x is in radians.c (x) The cosine of x, x is in radians.a (x) The arctangent of x, arctangent returns radians.l (x) The na 阅读全文
C++中的#pragma pack效果
2014-01-15 23:25 by Ryan_Liu, 885 阅读, 收藏,
摘要:
先说pragma,参考msdn,A "pragma" instructs the compiler to perform a particular action at compile time. Pragmas vary from compiler to compiler.再来说pragma pack这个制定字节对其的指令,如果制定了字节对齐,那么编译器将按照指定好的指令来生成代码,对性能将会造成一定影响。编译器的默认优化,有点空间换取时间的感觉。。#pragma packinstructs the compiler to pack structure members wi 阅读全文
C++中的 extern "C" 的作用
2014-02-21 09:16 by Ryan_Liu, 408 阅读, 收藏,
摘要:
先举个简单的例子,把如下代码保存为test.cppextern "C" { int foo() { return 1; }}int bar() { return 1;}然后如下编译为obj文件,g++ -c test.cpp -o test.o然后运行如下命令 nm test.o (查看obj文件中的symbols names)得到如下结果00000000 T foo0000000a T _Z3barv这里可以看出区别,如果一个c++文件函数的定义加上了 extern "C" 那么它生成obj文件时,用于链接用的名字会按照c语言obj形式来生成,而不进行 阅读全文
浙公网安备 33010602011771号