摘要: 前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错://对于一个2行13列int元素的二维数组//函数f的形参形式f(int daytab[2][13]) {...}//以下两种可以忽略行数f(int daytab[][13]) {...}f(int (*daytab)[13]) {...} 甚至会有人告诉你多维数组作为参数传递可以省略第一维,其他维不能省略。然而你对这种形式并不满意:如果事先限定了二维数组的大小,函数的泛用性就要大打折扣了。因为你真正需要的,是可以处理事先未知行数和列数的二维数组的函数。当然也有文章提到类似下面的动态分配的方式,但作为函数参数传递有.. 阅读全文
posted @ 2013-06-14 17:15 五岳 阅读(42728) 评论(9) 推荐(17)
摘要: 原定标题是“linux自带的测试、调试、性能工具”,不过并不恰当,比如本文要提到的gdb,很多Linux发行版中都提供了它,但毕竟不是Linux的必要组成部分,只是对与大多数Linux用户随手可得罢了。合理组合使用这些工具可以满足更复杂的要求,并写成测试脚本,能为测试提供很大的方便。本文不涉及具体的脚本编写,也不涉及与网络相关的命令如netstat和tcpdump。 为了方便阅读,用横线把内容进行分割,并且每个下划线下对这部分主要内容进行提示。 对于1~6这几个命令,单独使用时看上去很简单,但当它们结合重定向和正则表达式从而构成更复杂的功能甚至是自动化脚本时,才能发挥其真正威力。 c... 阅读全文
posted @ 2013-06-13 22:47 五岳 阅读(2877) 评论(0) 推荐(0)
摘要: 或许你曾经仔细了解过什么是大端小端,也动手编写了测试手头上的机器上是大端还是小端的程序,甚至还编写了大端小端转换程序;但过了一段时间之后,当你再看到大端和小端这两个字眼,你的脑中很快浮起了自己曾经做过的工作,却总是想不起究竟哪种是大端、哪种是小端,然后又去查以前写的记录?更让人不快的是,这种经历反反复复,让你十分困扰。如果你和以前的笔者一样,有过这种不快的经历,那么这篇文章希望能帮你彻底解决这个苦恼,让你彻底记住它们。 如果你在工作中经常使用到大端和小端以至于对它们十分熟悉,或者你的记忆力在保持时间的长度和精准度上都十分优秀,以至于不需要借助其他的方法,那么这篇文章不适合你。 如果你... 阅读全文
posted @ 2013-06-08 16:03 五岳 阅读(109414) 评论(4) 推荐(31)
摘要: 比如想在gcc手册里找-o选项对应的解释,如果man gcc | grep -o,grep会把-o当做自己的命令选项,是得不到正确结果的。 如果想得到正确结果,把待查的-o扩展成*-o就行了,不过这时需要给grep加上-E选项,所以最终的实例为:man gcc |grep -E *-o 阅读全文
posted @ 2013-06-05 17:27 五岳 阅读(568) 评论(0) 推荐(0)
摘要: 提示:本文是一篇个人读书笔记,并不是对原书内容的系统总结整理,除了两处标红部分,可能对作者以外的读者没有太大的参考意义。 每条准则都有例外第1章 假想的编译程序使用编译程序所有可选警告设施在使用nginx时深切地体会到了这一点的好处:有一行语句在编码时漏掉了,由于这个语句是唯一使用某个变量的地方,而且默认开启了-Werror=unused-value,才发现了这个错误。使用函数原型来检查参数(现在不使用也可以);必要的空语句用NULL代替,以防while()后多打的分号造成的bug相等判断反着写以防写成赋值:'t' == char使用lint来查出编译程序漏掉的错误如果有单元测 阅读全文
posted @ 2013-05-31 21:48 五岳 阅读(795) 评论(0) 推荐(0)
摘要: 序言 本文以经典的二分查找为例,介绍如何使用循环不变式来理解算法并利用循环不变式在原始算法的基础上根据需要产生算法的变体。谨以本文献给在理解算法思路时没有头绪而又不甘心于死记硬背的人。 二分查找究竟有多重要?《编程之美》第2.16节的最长递增子序列算法,如果想实现O(n2)到O(nlogn)的时间复杂度下降,必须借助于二分算法的变形。其实很多算法都是这样,如果出现了在有序序列中元素的查找,使用二分查找总能提升原先使用线性查找的算法。 然而,虽然很多人觉得二分查找简单,但随手写一写却不能得到正确的结果:死循环、边界条件等等问题伴随着出现。《编程珠玑》第四章提到:提供充足的时间,仅有约10%... 阅读全文
posted @ 2013-05-26 09:07 五岳 阅读(10018) 评论(21) 推荐(11)
摘要: 用于内存管理的malloc/free这对函数,对于使用C语言的程序员应该很熟悉。前段时间听说有的IT公司以“实现一个简单功能的malloc”作为面试题,正好最近在复习K&R,上面有所介绍,因此花了些时间仔细研究了一下。毕竟把题目做出来是次要的,了解实现思想、提升技术才是主要的。本文主要是对malloc/free实现思路的介绍,蓝色部分文字是在个人思考中觉得比较核心的东西;另外对于代码的说明,有一些K&R上的解释,使用绿色加亮。 在研究K&R第八章第七节的实现之前,不妨先看看其第五章第四节的alloc/afree实现,虽然这段代码主要目的是展示地址运算。alloc实现#d 阅读全文
posted @ 2013-05-03 21:09 五岳 阅读(10887) 评论(4) 推荐(9)
摘要: 提示:本文是一篇个人读书笔记,并不是对原书内容的系统总结整理,可能对作者以外的读者没有太大的参考意义。 目前对C++的了解还处于入门阶段,这本书真正看懂的内容大概只有一半左右。大部分条款和机制先建立一个印象,希望能在未来实际使用中再来回顾和加深理解。条款02:不允许在class内对static const类型变量赋值?替代方案是使用enum{NumTurns = 5}; (P14)条款03:1.const与指针(P17~18)char greeting[]="Hello";const char* p = greeting;//non-const pointer, const 阅读全文
posted @ 2013-04-26 16:21 五岳 阅读(505) 评论(0) 推荐(0)
摘要: 提示:本文是一篇个人读书笔记,并不是对原书内容的系统总结整理,可能对作者以外的读者没有太大的参考意义。第一章 C++编程基础1. 构造函数语法(P8),除了一般的等式初始化外的另一种初始化方法 int num_tries(0)2.case标签的向下穿越(P19),比较后会一直执行符合的case语句以及下面的所有语句。3.vector的两种初始化方式(P24-25) 单个元素逐一指定;利用一个已经初始化的array赋值4.while(infile>>name)何时结束?(P32) 读到文件尾端,infile>>name返回false5.cin中的setw()(习题,P20 阅读全文
posted @ 2013-04-21 14:33 五岳 阅读(639) 评论(0) 推荐(0)
摘要: 近期时间有限,暂不作尝试,链接留档备用。http://www.cnblogs.com/zplutor/archive/2011/09/17/2179756.htmlhttp://www.cnblogs.com/cpunion/archive/2005/07/28/202174.html 阅读全文
posted @ 2013-04-14 13:25 五岳 阅读(211) 评论(0) 推荐(0)
摘要: 上一周把《大话设计模式》看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多、偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼界。《大话设计模式》的代码使用C#写成的,而在本人接触到的面向对象语言中,只对C++和Python还算了解,为了加深对各个模式的理解,我在网上下载了一个C++版的源 阅读全文
posted @ 2013-04-09 16:58 五岳 阅读(46501) 评论(14) 推荐(32)
摘要: 深刻理解Python中的元类(metaclass)Python装饰器学习(九步入门) 阅读全文
posted @ 2013-04-07 20:52 五岳 阅读(168) 评论(0) 推荐(0)
摘要: 来源:http://www.cnblogs.com/linyawen/archive/2012/04/12/2443551.html如果你习惯用C++,JAVA或者其它的面向对象语言,你会经常用到函数重载。所谓函数的重载是指多个函数的名称以及返回值类型均相同,仅参数类型或参数个数不同。函数重载大大提高了代码重用率和程序员开发效率。但如果你现在转向使用python,你就有可能不习惯它的形式上不支持函数重载。但python作为面向对象语言,自然不会丢掉函数重载这个面向对象语言所共有的重要特性。python中实现函数重载的方法非常特别而有趣。先看下面的一个函数定义:def f(str,times): 阅读全文
posted @ 2013-04-03 22:01 五岳 阅读(11420) 评论(0) 推荐(2)
摘要: 原作者:xdx2ct1314,出处:http://blog.csdn.net/xdx2ct1314/article/details/7495539c++默认的拷贝构造函数是浅拷贝浅拷贝就是对象的数据成员之间的简单赋值,如你设计了一个没有类而没有提供它的复制构造函数,当用该类的一个对象去给令一个对象赋值时所执行的过程就是浅拷贝,如:class A {public: A(int _data) : data(_data){} A(){}private: int data;};int main() { A a(5), b = a; // 仅仅是数据成员之间的赋值 }这一句b =... 阅读全文
posted @ 2013-04-03 17:31 五岳 阅读(310) 评论(0) 推荐(0)
摘要: 原作者:taoying原文链接:http://blog.csdn.net/taoyingzhushui/article/details/8100434父类子类指针函数调用注意事项1,如果以一个基础类指针指向一个衍生类对象(派生类对象),那么经由该指针只能访问基础类定义的函数(静态联翩)2,如果以一个衍生类指针指向一个基础类对象,必须先做强制转型动作(explicit cast),这种做法很危险,也不符合生活习惯,在程序设计上也会给程序员带来困扰。(一般不会这么去定义)3,如果基础类和衍生类定义了相同名称的成员函数,那么通过对象指针调用成员函数时,到底调用那个函数要根据指针的原型来确定,而不是根 阅读全文
posted @ 2013-04-03 10:35 五岳 阅读(432) 评论(0) 推荐(0)
摘要: 前言: 这算是第二次系统地阅读UNPv1,正如副标题,不希望写成书摘、缩写版,尽量多写写个人体会和获得的经验,因此很多地方都会从全书的角度来说明,而不仅仅限于某个章节内部。 SCTP、信号驱动I/O、广播和多播等内容不包括在内。准备工作: 为了适应在命令行界面编写代码,我先进行了vim环境的配置和Xshell的配置。在读书过程中还学习了gdb调试程序的方法(见这里)。(1)vim插件搭建 从别人那里拷贝现成的的.vimrc和插件,分别放于/home/用户名 和/home/用户名/vim文件夹下就行了。(2)Xshell远程登录 下载安装Xshell。由于是用VMware装的Ubu... 阅读全文
posted @ 2013-03-31 17:36 五岳 阅读(1349) 评论(0) 推荐(0)
摘要: 这几天照着UNP上提供的ping源码编写了一个用来学习。虽然编译后能运行,但由于使用了原始套接字,必须root权限运行,这与和Linux下真实的ping有差别:后者是不需要输入sudo或者切换到#才能运行的。linux中的ping源码没有找到,但是看到oschina上有一例自制的ping源码相似,作者提供的示意图中在$提示符下没有用sudo运行的。总之,希望能够使自己编写的程序以root权限运行而不需要加上sudo或者切换到#提示符。 没有找到能在进程运行时提升自身权限的方法,另查到一种方法(来源见文后注释)可以实现,这两步缺一不可:(1)用root权限完成gcc;(2)chmod u+... 阅读全文
posted @ 2013-03-31 15:35 五岳 阅读(1673) 评论(0) 推荐(0)
摘要: 本文主要参考自:http://www.cnblogs.com/zzx1045917067/archive/2012/12/26/2834310.html,进行了一点补充和编排;Core dump部分参考了:http://blog.ddup.us/?p=176。 gdb是一个在UNIX环境下的命令行调试工具。 如果需要使用gdb调试程序,请在gcc时加上-g选项。 下面的命令部分是简化版,比如使用l代替list等等。1.基本命令1)进入GDB #gdb test test是要调试的程序,由gcc test.c -g -o test生成。进入后提示符变为(gdb) 。2)查看源码 ... 阅读全文
posted @ 2013-03-29 08:29 五岳 阅读(79757) 评论(2) 推荐(4)
摘要: Xshell是一个安全终端模拟软件,可以进行远程登录。我使用XShell的主要目的是在Windows环境下登录Linux终端进行编码,非常方便。本文简单介绍下它的使用方法。1.下载后在安装时选择个人/学校免费版即可。2.安装完毕后先在要连接的Ubuntu主机下开启SSH服务,如果没有开启需要安装openssh-server:sudo apt-get install openssh-server 使用ps -e | grep ssh,如果只有ssh-agent表示还没启动,需要/etc/init.d/ssh start;有sshd说明已启动。3.打开Xshell,选择“新建”,“连接”设置... 阅读全文
posted @ 2013-03-28 16:05 五岳 阅读(30236) 评论(0) 推荐(0)
摘要: 本文大多数内容来自于MATLAB的help命令,如果有不理解的可以使用这个命令阅读帮助文档。1.生成高斯随机数样本矩阵: R = MVNRND(MU,SIGMA,N),其中MU是1*D均值向量,SIGMA是D*D协方差矩阵,N是样本数目,返回的R是N*D样本矩阵示例mu = [1 -1]; Sigma = [.9 .4; .4 .3];r = mvnrnd(mu, Sigma, 500);plot(r(:,1),r(:,2),'.'); %用点作图2.将workspace的矩阵变量存入文件及从文件中读取矩阵变量: 以矩阵m1为例,这两条命令分别是 savefilename.ma 阅读全文
posted @ 2013-03-24 15:56 五岳 阅读(1884) 评论(0) 推荐(0)
摘要: 之前为了编写一个svm分词的程序而简单学了下Python,觉得Python很好用,想深入并系统学习一下,了解一些机制,因此开始阅读《Python学习手册(第三版)》。如果只是想快速入门,我在这里推荐了几篇文章,有其他语言编程经验的人简单看一看就可以很快地开始编写Python程序了。 黑体表示章节, 下划线表示可以直接在原文对应位置查到的专有技术名词。 原书配套答案请到http://www.hzbook.com/Books/4572.html下载,简单注册即可。第三章 如何运行程序 import进行模块导入只能运行一次,多次运行需使用reload。 模块往往是变量名的封装,被认为是命... 阅读全文
posted @ 2013-02-26 22:09 五岳 阅读(29526) 评论(2) 推荐(3)
摘要: 原文链接:http://blog.csdn.net/lvliang2008/article/details/8280386主机使用PPPOE拨号上网其实VMware的三种模式是都可以上网的,只要理解VMware的虚拟网卡和虚拟网络,虚拟交换机,虚拟路由器既可以了。按照深入立即VMware虚拟网络中的介绍,http://blog.csdn.net/lvliang2008/article/details/8280049在安装VMware时是设计好了两个虚拟网卡,三个虚拟交换机和一个虚拟路由器的,第一个虚拟交换机VMnet0是接在外网和物理网卡之间的,bridged模式下的虚拟机中的网卡也是接在这个 阅读全文
posted @ 2013-02-11 15:22 五岳 阅读(734) 评论(0) 推荐(0)
摘要: 开始学Python,这篇文章来自于应用需求。 os.walk很方便,下面写了两个版本的函数进行遍历,分别是不使用walk和使用walk的。import sysimport stringimport osdef detect_nowalk(dir_path): files = os.listdir(dir_path) for filename in files: print "file:%s\n" % filename next = os.path.join(dir_path, filename) if os.path.isdir(ne... 阅读全文
posted @ 2013-01-11 19:52 五岳 阅读(11495) 评论(3) 推荐(0)
摘要: http://www.blogjava.net/zhenandaci/archive/2008/08/31/225966.html 阅读全文
posted @ 2013-01-10 19:24 五岳 阅读(162) 评论(0) 推荐(0)
摘要: Python入门教程 超详细1小时学会PythonPython完全新手教程 阅读全文
posted @ 2013-01-10 16:26 五岳 阅读(880) 评论(0) 推荐(0)
回到顶部