摘要: 我认为通过学习一份好的编码规范可以深入的去了解一门语言的一些特性(《通过编码规范来学习一门编程语言》)。我的想法是对Google C++编码规范进行翻译,通过翻译的这个过程去复习、学习C++中的一些重要的知识点和特性。Google的C++ 编码规范据称是地球上最好的C++编码规范,没有之一。姑且不去深究Google的C++编码规范是否为天下第一,但是至少是这种开放的精神很值得表扬。目前这份C++编码规范的中英文版网上都能够很方便的找到: Google 官方英文版: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml中文翻 阅读全文
posted @ 2012-03-05 20:41 imjustice 阅读(656) 评论(0) 推荐(0) 编辑
摘要: 学习一门编程是一件很快乐也很痛苦的事情。快乐的是在学习的过程中你能够获得一些与你所学过的语言不一样的地方,从这些不同之处往往能够体会到不同的编程思想。学习新的一门语言可以通过很多方式,不过不外乎阅读经典入门教材、自己编码练习、阅读他人代码学习、继续阅读深层次的书籍、继续编码、继续阅读他人代码。。。我认为除了传统的这几种方式以外,通过阅读和研究一份优秀的这门语言的编码规范能够很好的帮助去理解一门语言。编码规范又叫编码风格,代码风格等,是一份面向于编程人员的用来约束程序员编码的一种文档。很多程序员甚至很多公司都并不重视编码规范的重要性,认为写出来的代码只要能够很好的work就行了。但是我觉得一份好 阅读全文
posted @ 2012-03-02 19:39 imjustice 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 接触JavaScript不久,今日想写一个简单的秒表练练手,于是就想当然的写下了如下代码: var date = new Date(currTime.getTime() - beginTime.getTime());// currTime.getTime()=1329655993149 beginTime.getTime()=1329655991421var hour = date.getHours(); 结果比较出乎我的意料,hour变量的值并不是我所期望的,hour的值是8。currTime和beginTime变量实际的时间差也就2秒钟哪来的8个小时?!经过一番思索和搜索,我发现原因是因. 阅读全文
posted @ 2012-02-19 21:33 imjustice 阅读(1801) 评论(0) 推荐(0) 编辑
摘要: 由于微博和各种社交网络的兴起,同时它们发布状态对于字数的限制,短地址服务在这几年发展的非常迅猛。例如新浪微博,人人,腾讯都模仿国外短地址服务网站推出了自己的短地址服务并使用在自己的服务当中。但是短地址服务真的那么好么?未必!短真的比长好么?短地址服务的初衷当然就是缩短网址长度,可能很多人认为较之动辄很长一大串的正常网址,短地址更加短小好记看着也更加舒服。但是短地址真的比长地址好记么?可能吧。比方... 阅读全文
posted @ 2012-02-16 21:27 imjustice 阅读(698) 评论(0) 推荐(0) 编辑
摘要: 我认为在任何应用程序、系统的数据库中或多或少都会有一些静态表用来存放系统中一些默认的值,比如说界面上的一些field信息、一些数据模板、界面上的选项设置等等。我们不可能把这些东西都hard code到代码中去,所以必然需要这些静态的数据表来存放这些信息。可能你会觉得手动去维护这些静态表就挺好,但是我认为在任何情况下我们都不应该手动的去修改数据库中的数据,这样可能会导致脏数据或者其他未知问题。设想一下,如果你的系统有开发和测试两个数据库,又同时需要支持SQL-SERVER和ORACLE两种数据库,那么你就需要维护四个数据库,当数据库数量增加手动维护明显是不可能的一件事情。 阅读全文
posted @ 2011-10-02 17:57 imjustice 阅读(997) 评论(0) 推荐(0) 编辑
摘要: 今日公司一个网络共享盘600G,活生生的被我们塞满到了只剩下300MB,我就在想如何可以从中释放出更多的空间来。共享盘的使用时间有很多年,其中必定有很多文件其实是重复的,被不同的人存了好几份,久而久之就导致了硬盘空间的极度浪费。我们平时在自己电脑中可能也会存在这种文件,特别是mp3啊,图片啊啥么的。 为了解决这个问题,我写了一个简单的小程序来遍历制定的目录,并找出其中相同的两个文件。想法很简单,遍历目录下的所有文件(包含所有子目录),算出遍历到的文件的MD5值,如果有多个文件的MD5值相等就说明这几个文件就是冗余的。说白了这个程序主要就三个主要功能需要实现:遍历目录 + 计算MD5值 + 找到相等后处理。 核心代码如下,利用递归的方法遍历制定目录下的所有文件,并计算哈希值。 /// /// A Recursive way to traverse all file in 阅读全文
posted @ 2011-09-29 00:04 imjustice 阅读(2159) 评论(0) 推荐(1) 编辑
摘要: C#中有一个String类,有一个string类型,有一个StringBuilder类用来操作字符串,对于初学者来说这三个东西往往很容易产生困扰。 string 类型表示一个字符序列(零个或更多 Unicode 字符)。string 是 .NET框架中 String类的别名。所以说string和String在本质上并没有什么区别。String对象是一个不可变的,对象创建完以后其中的内容就不能够进行修改,当我们对一个已经创建好的String对象进行复制的时候,实际上返回的是一个包含修改完内容的新的对象。原来的对象所对应的那块内存就变为垃圾内存,会被GC给回收。所以说string类型是不能够真正修改其中的值的。 阅读全文
posted @ 2011-09-28 20:42 imjustice 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 之前在用LINQ TO SQL 时使用过 “=>”运算符来进行数据的操作,当时不是很明白这个运算符的来源。今天碰到一段代码也使用这个运算符,甚是好奇。 这个运算符是C#3.0之后才加进来的,是Lambda运算符,该运算符读作”goes to”。该运算符左边是输入的参数,右边可以是一个语句也可以是一个程序块。Lambda表达式是用来写一个匿名的函数,也可以当作一个匿名函数传入到另一个函数中被其使用。 在介绍Lambda表达式之前,先了解一下在Lambda出现之前,C#中是如何将函数作为参数传递给方法的。我举一个排序的例子来说明这个方法。 阅读全文
posted @ 2011-09-22 22:42 imjustice 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 众所周知,C++项目的编译时间一般都很就,稍微大一点的项目完全编译可能就需要几十分钟,有的可能需要好几个小时甚至更久。这对于现在的开发人员来说是非常难以忍受的一件事情!所以就有人开发了一种叫做分布式编译的东西,这个东西的思想其实很简单,就是把一个项目中的没有依赖关系的工程分给不同的机器进行同时编译,编译完以后把编译出来的结果传回来。这样的话理论上来说,如果网络内可用的空闲机器数量足够,编译时间可以缩短到一个很短的范围内。但是不排除网络通信上的影响因素。 阅读全文
posted @ 2011-09-21 23:09 imjustice 阅读(3262) 评论(0) 推荐(0) 编辑
摘要: 在学习C++引用是一个比较容易混淆的东西,“引用是一个变量的别名”这貌似是很多教材中对引用的定义,貌似老师还会举一些什么张三李四的例子,但是我觉得对于学习C++的人来说该清楚引用还是有必要的。 我认为引用就是C++把指针包装了一下然后提供给我们用的一个相对安全方便的东西。 我个人把引用理解为一个 const 指针,引用一旦初始化不能改变其指向的对象。下面举了一个例子来支持我的想法: 阅读全文
posted @ 2011-08-09 22:48 imjustice 阅读(216) 评论(0) 推荐(0) 编辑