03 2011 档案
判断单链表里面有没有环
摘要:这题目还是慢有意思的。题目:0.如何判断单链表里面是否有环?算法的思想是设定两个指针p, q,其中p每次向前移动一步,q每次向前移动两步。那么如果单链表存在环,则p和q相遇;否则q将首先遇到null。这里主要理解一个问题,就是为什么当单链表存在环时,p和q一定会相遇呢?假定单链表的长度为n,并且该单链表是环状的,那么第i次迭代时,p指向元素i mod n,q指向2i mod n。因此当i≡2i(mod n)时,p与q相遇。而i≡2i(mod n) => (2i - i) mod n = 0 => i mod n = 0 => 当i=n时,p与q相遇。这里一个简单的理解是,p和 阅读全文
posted @ 2011-03-29 16:41 RocZhang 阅读(43811) 评论(8) 推荐(12)
悲剧,当用cywin 写Linux脚本
摘要:上一篇文章说到用cywin 在window上面调用linux 的命令(不是Linux命令本身,而是Linux命令对应的window 的模拟命令), 并且使得linux 命令与window 的Dos命令 结合起来,貌似功能强大。恰好有这么一个需求,需要自动化做一个批量转换,而转换器只有window版本的。 本来可以用batch 或者python,但是想试试cywin调用window 的命令的强大。结果悲剧产生了。1. window上面的回车换行与Linux 不一样。 结果cywin里面的sh 解析不了window 文件中的回车换行。 --------->解决方法 dos2unix2. Wi 阅读全文
posted @ 2011-03-23 20:07 RocZhang 阅读(1165) 评论(0) 推荐(0)
英语与毅力
摘要:英语重要性不用说, 说说学习英语的最重要的品质: “毅力”,自己认为的。在沪江英语(www.hjenglish.com)里面有一个英语频道:voa听写。 这个节目很简单:就是将VOA 英语里面的文章拿来作为材料作为听写材料,并提供在线听写工具,对于听写完的文章与原文比较打分。 此外还提供了一些排行榜,比如这篇文章的正确率的排行榜。 自己也断断续续的听了50多篇,现在听一篇不是慢速的,也就是80%的正确率,最好也就是89%。但是看见排行榜上面居然那么多100%的争取率,甚为惊讶. 第一感觉总是以为是系统作弊吧,怎么可能达到100%呢? 一直不怎么相信。好奇心的驱使下,看看这些得到100% 的沪元 阅读全文
posted @ 2011-03-22 17:56 RocZhang 阅读(1331) 评论(1) 推荐(0)
vi 写的时候没有权限怎么办?
摘要:经常遇到编辑配置文件,修改之后保存,却没有权限. 要么临时保存再覆盖,要么放弃。 还有其他办法补救的,直接写的吗?Vim 的设计早已经解决这个问题:w ! sudo tee %[range] write !{command}% 代表当前文件。没有时间去看过vim 的帮助文档。:help write 阅读全文
posted @ 2011-03-21 22:33 RocZhang 阅读(1159) 评论(0) 推荐(0)
【转发】boost::shared_ptr 分析与实现
摘要:boost::shared_ptr 分析与实现 http://blog.chinaunix.net/u/14337/showart_299314.html/************************************************************ * file: shared_ptr * * desc: 本文将对boost::shared_ptr作一详细的介绍。 本文介绍的不是用法,而是 * 智能指针的原理,结构以及boost对其的实现. 最后还会给出一个简化了的实现。 * * author: whiteear * date: 2007-05-10 * copyr 阅读全文
posted @ 2011-03-21 18:12 RocZhang 阅读(608) 评论(0) 推荐(0)
转发 “Xen的工作原理”
摘要:url:http://blogold.chinaunix.net/u2/69106/showart_1999860.html如今,虚拟化市场上满是各种不同的虚拟化解决方案。多年以来,VMware一直控制着基于i386的虚拟化市场。然而,现在的开源解决方案Xen也在迅速地扩张自己的市场。在本文中,TechTarget中国的特约虚拟化专家Sander vanVugt将介绍什么是Xen、它如何工作以及Xen如何与其它虚拟化解决方案一争高下。 要理解Xen的虚拟化方法,首先你必须了解什么是虚拟化。在计算时代早期,虚拟化并不存在。那时,使用的是模拟(Emulation)。在模拟技术中,软件程序模拟了计算 阅读全文
posted @ 2011-03-21 15:18 RocZhang 阅读(286) 评论(0) 推荐(0)
Linux 命令 md5sum
摘要:linux 软件颁发时候,防止被人给篡改,不仅提供一个软件包还提供一个认证。下面介绍md5sum 命令,怎么生成和验证安全。1. 生成md5 验证码sh-3.2$ md5sum testd73e296044c73cee29af0c08be61f091 *test可以将生成的验证码保存到文件(!!切忌验证码和文件名之间有两个空格), 比如md5.txt2. 验证文件:sh-3.2$ md5sum -c md5.txtperf.log: OK还有其他的验证工具,sum,sha224sum,sha224sum,sha384sum,shasum.此外md5还用来生成断网址(URL shorting) 阅读全文
posted @ 2011-03-21 14:40 RocZhang 阅读(6313) 评论(0) 推荐(0)
Shell 调用 window 命令之间交互
摘要:Linux shell 在Linux 就是一个命令粘合器,很容易把那些工具组合起来,行程一个更强大的工具,或者让手头的工作自动化起来。Window上也有batch ,理论上也有这样的功能。 但是其语法和功能与Linux 上的shell 比起来,不可同日而语。如果有的命令只有window版本,如果用linuxshell 调用window的命令,并且参数传递?问题: 想用Linux 上面的shell及其工具如何与window上面的命令结合起来? 答案是:cywin.cywin,在window 上模拟linux的运行环境,同时又可以调用原生态的window 命令。 比如: for i in $(ls 阅读全文
posted @ 2011-03-21 12:50 RocZhang 阅读(3594) 评论(0) 推荐(0)
体验一下 Ubuntu 10.10
摘要:体验一下Ubuntu10.10 新版本。实在window机器上面安装的,救下一个iso的版本,即wubi.1. 下载linux 版本http://www.ubuntu.com/desktop/get-ubuntu/download . 区分一下amd 和 intel 的cup 类型。如果下错到安装的时候,其会自动的重新下载正确的版本。但是又要重现下一便,累啊。我真个是在美国直接下,然后在拷贝过来。万恶的资本主义的网速是11M, 峰值是18M. 然后拷贝过来走公司的网络,速度大概就2M 多,也就是10来分钟。 羡慕万恶的资本主义网速.2. 下载一个虚拟光驱demon,挂上wubi的iso 3. 阅读全文
posted @ 2011-03-18 18:14 RocZhang 阅读(452) 评论(0) 推荐(0)
GCC 里面的一些命令
摘要:记录一下常用GCC 相关的命令和参数ldd ---> print share library dependenciyLD_LIBRARY_PATH---> environment variable, it will search the path accord to this variable. Also check the ldd to verify this environmental variableldconfig-----> configure dynamic linker run-time bind. it will create a symbol link to 阅读全文
posted @ 2011-03-18 15:10 RocZhang 阅读(295) 评论(0) 推荐(0)
Design pattern : Singleton
摘要:Singleton语义: 在整个应用程序里只能创建唯一一个对象,并且提供全局的访问点:实现:1.先看一个经常性的一个错误实现:class Singleton{private: Singleton() {};/× 如果没有定义 copy constructor 和 assignment operator ,编译器会实现,就可以根据已有的对象构造新对象,就不能保证唯一×/Singleton( const Singleton & ); // no implement Singleton & operator = ( const Singleton & ); 阅读全文
posted @ 2011-03-16 00:06 RocZhang 阅读(476) 评论(0) 推荐(0)
Linux 配置文件策略
摘要:1. Souce 解析 config 文件尝试到Linux 的设计的好处,直接可以把config 文件当作脚本来执行。configure 文件,一般都是一些键值对,对于强类型语言C /C#,一个简单的配置文件,需要程序去解释,去读。 但是再shell 里面,这些变的太简单,配置文件,也就是代码。 举例:## Where deploy output is storedLOG_DIR=log## The directory to perform the Perforce syncP4_ROOT=~/p4/current代码里面直接把这个文件导入执行就可以:source test.configech 阅读全文
posted @ 2011-03-11 18:23 RocZhang 阅读(727) 评论(0) 推荐(0)
How to improve the efficiency
该文被密码保护。
posted @ 2011-03-08 22:44 RocZhang 阅读(4) 评论(0) 推荐(0)
C++ 异常 与 ”为什么析构函数不能抛出异常“ 问题
摘要:C++ 用异常使得可以将正常执行代码和出错处理区别开来。 比如一个栈,其为空时,调用其一个pop 函数,接下来怎么办? 栈本身并不知道该如何处理,需要通知给其调用者(caller),因为只有调用者清楚接下来该怎么做。 异常,就提供了一个很好机制。 但是异常需要操作系统,编译器,RTTI的特性支持。下面围绕一个问题 “为什么析构函数不能抛出异常?” 展开C++中异常的实现。Effective C++ 里面有一条”别让异常逃离析构函数“,大意说是Don't do that, otherwise the behavior is undefined. 这里讨论一下从异常的实现角度,讨论一下为什 阅读全文
posted @ 2011-03-08 18:39 RocZhang 阅读(19087) 评论(2) 推荐(3)
How to implement the inheritance and polymorphism in C
摘要:C++ 有许多features( abstract class, virtual deconstuctor,RTTI, virtual inheritance)完全用C 去模拟一个C++ 其实是很难。 下面列一个表,如何用C 去模拟C++的一些主要功能:Feature in C++Implemented in CClassstructure data member data member static_ data member global member and link membor function function point constructor function global ac 阅读全文
posted @ 2011-03-07 20:46 RocZhang 阅读(294) 评论(0) 推荐(0)
The memory layout for C++ object
摘要:记录一下自己学习笔记ATL Under the Hood - Part 1http://www.codeproject.com/KB/atl/atl_underthehood_.aspx 告诉对象的类存模型,包括继承关系的类之间的内存模型View Code 1 #include <iostream> 2 using namespace std; 3 4 class Base { 5 public: 6 Base() {} 7 virtual void f1() = 0; 8 virtual void f2() = 0; 9 int bi;10 };11 12 class Base 阅读全文
posted @ 2011-03-07 20:03 RocZhang 阅读(581) 评论(0) 推荐(0)
浅议 Dynamic_cast 和 RTTI
摘要:写这篇博文的目的是,记录学习过程。对于问题要较真,在解决这个问题中会学到很多,远远超过自己期望,锻炼思维,享受这个过程。问题: Static_cast 与 Dynamic_cast的区别来自书本上的解释: 用 static_cast<type-id > ( expression )1. static_cast(expression) The static_cast<>() is used to cast between the integer types. 'e.g.' char->long, int->short etc. 用来数值之间的转 阅读全文
posted @ 2011-03-07 00:47 RocZhang 阅读(13324) 评论(2) 推荐(3)
转:C++反汇编揭秘2 – VC编译器的运行时错误检查(RTC)
摘要:作者: ATFieldBlog: http://blog.csdn.net/atfield转载请注明出处本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ATField/archive/2007/04/08/1556844.aspx我在上篇文章举了一个简单的C++程序非常简略的解释C++代码和汇编代码的对应关系,在后面的文章中我将按照不同的Topic来仔细介绍更多相关的细节。虽然我很想一开始的时候就开始直接介绍C++和汇编代码的对应关系,不过由于VC编译器会在代码中插入各种检查,SEH,C++异常等代码,因此我觉得有必要先写一下一些在阅读VC生成的汇编代码的时候 阅读全文
posted @ 2011-03-04 01:29 RocZhang 阅读(845) 评论(0) 推荐(0)
转:C++反汇编揭秘1 一个简单的C++程序反汇编解析
摘要:http://info.codepub.com/2008/07/info-20439.html本系列主要从汇编角度研究C++语言机制和汇编的对应关系。第一篇自然应该从最简单的开始。C++的源代码如下:class my_class{public : my_class() { m_member = 1; } void method(int n) { m_member = n; } ~my_class() { m_member = 0; }private : int m_member;};int _tmain(int argc, _TCHAR* argv[]){ my_class a_class; 阅读全文
posted @ 2011-03-04 00:58 RocZhang 阅读(943) 评论(0) 推荐(0)