摘要:
给《思维导图大脑使用说明书》配图作者:孙小小原文地址:http://xiaoxiaosun1978.blog.sohu.com/62130566.html最近在学习《思维导图大脑使用说明书》,有人觉得这本书太单薄了,我反而觉得这样的页数和内容正合适,可以很快读完,然后可以再次详细阅读和写笔记,继而尝试锻炼自己画图。如果是按照读小说的感觉读这样的书,显然不对头。整体来说,这本10元钱的书物超所值,内容精练,通俗易懂。是Mindmap很好的入门书。我个人觉得,既然Mindmap是这个可爱的老头Tony Buzan提出来的,那么最好是直接看他的书。其他人的诠释可以放在以后作为借鉴。如果说我可以提出一 阅读全文
摘要:
毕业面试心程2013年9月,伴随着秋季招聘号角的吹响,作为准应届毕业生的我踏上了从青岛到西安的校园招聘的征程。虽然心中踌躇满志,但是对于未来的结果却充满着不确定和未知。到我写下这篇文字,在西安这个城市已经驻留了近20天。期间参加过大型公司的宣讲,进行过数次笔试,尝试过霸笔,经历过数次面试,其中有困难和挫折,有惊喜和喜悦,有失望与落寞,有淡定与坦然,个中滋味,或许只有亲身经历过这些方能体会得到。之所以写下这些文字,除了分享自己的心路历程,也希望借助于此在这个繁忙的工作季给大家分享一下自己的面试经验。我深知自己的文采登不上大雅之堂,那么我就结合着自己的面试过程和大家简单地聊一聊这段时间面过的几家公 阅读全文
摘要:
hash_map的简洁实现hash_map是经常被使用的一种数据结构,而其实现方式也是多种多样。如果要求我们使用尽可能简单的方式实现hash_map,具体该如何做呢?我们知道hash_map最重要两个概念是hash函数和冲突解决算法。hash_map键-值之间的映射关系,hash函数将键映射为内存地址,冲突解决算法用于解决不同的键映射为相同地址时候的情况。数据结构和算法导论中介绍了大量的hash函数和冲突解决算法,如果选择实现精简的hash_map,那么可以选择“除留取余法”作为hash函数,选择“开散列地址链”作为冲入解决算法。这样的选择不仅使得hash_map实现简单,而且有很高的查询效率 阅读全文
摘要:
缓冲区溢出攻击缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0day安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明了。本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证。不过即便如此,完成一个简单的溢出代码也需要解决很多书中无法涉及的问题,尤其是面对较新的具有安全特性的编译器——比如MS的Visual Studio2010。接下来,我们结合具体代码,按照对缓冲区溢出原理的循序渐进地理解方式去挖掘 阅读全文
摘要:
统计一下你写过多少代码最近整理了一下自己从开始学习编程以来写过的程序和代码,林林总总,花了不少的时间,最后把一些自认为还算不错的代码提交到github上做一个简单的分类和备份。当然我并不奢求它们能成为多好的开源代码,只是希望通过这种方式分享自己的劳动成果罢了。如果大家有兴趣可以访问我的github,欢迎朋友们提出意见和建议。在我整理代码的时候,突发奇想地想知道自己曾经写过多少行代码。相信手握大量代码的童鞋应该也有类似的想法,于是查阅资料来完成这个目标。首先,我们需要一点时间做一下准备工作。我们需要将自己写过的程序拷贝到一个文件夹下边,以防我们把一些教程和示例的代码也统计进去了,这的确需要不少精 阅读全文
摘要:
红黑树数据结构剖析红黑树是计算机科学内比较常用的一种数据结构,它使得对数据的搜索,插入和删除操作都能保持在O(lgn)的时间复杂度。然而,相比于一般的数据结构,红黑树的实现的难度有所增加。网络上关于红黑树的实现资料汗牛充栋,但是乏于系统介绍红黑树实现的资料。本文通过一个自己实现的红黑树数据结构以及必要的搜索,插入和删除操作算法,为大家更系统地剖析红黑树数据结构的实现。对于大部分数据结构,一般都会使用抽象数据类型的方式实现,C++提供的模板机制可以做到数据结构与具体数据类型无关,就像STL实现的那样。不过本文并非去实现STL中的红黑树,更重要的是透过红黑树的实现学习相关的算法和思想。当然,我们还 阅读全文
摘要:
一个简单的通用Makefile实现Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新make时只需要处理那些修改过的文件即可。Makefile拥有很多复杂的功能,这里不可能也没必要一一介绍,为了简化问题的复杂性,本文仅和大家讨论针对单目录下的C/C++项目开发,如何写一个通用的Makefile。首先,我们假设当前工程目录为prj/,该目录下有6个文件,分别是:main.c、abc.c、xyz.c、abc.h、xyz.h和Makefile。其中main.c包含头文件abc.h和xyz.h,a 阅读全文
摘要:
最简git Server配置如何保持多台计算机的项目代码的同步更新呢?通过在一个公用计算机上开启git服务,任何能与该计算机互联的终端都可以同步最新的项目代码。每个终端所负责的就是下载代码更新,修改代码,提交代码更新,这些工作产生的变化能全部反应到git服务器上。同时,这么做也能避免使用github导致的代码过早公布的弊端。从此代码的版本控制和备份问题得到完美解决!服务端配置:1.安装git:sudo apt-get install git-core2.安装ssh服务:sudo apt-get install openssh-server3.创建服务端仓库文件夹(用户root可以访问):mkd 阅读全文
摘要:
Lisp的本质(The Nature of Lisp)学习思考作者 Slava Akhmechet 译者 Alec Jang出处: http://www.defmacro.org/ramblings/lisp.html简介最初在web的某些角落偶然看到有人赞美Lisp时, 我那时已经是一个颇有经验的程序员。在我的履历上, 掌握的语言范围相当广泛, 象C++, Java, C#主流语言等等都不在话下, 我觉得我差不多知道所有的有关编程语言的事情。对待编程语言的问题上, 我觉得自己不太会遇到什么大问题。其实我大错特错了。我试着学了一下Lisp, 结果马上就撞了墙。我被那些范例代码吓坏了。我想很多初 阅读全文
摘要:
git使用小结很多人可能和我一样,起初对git是一无所知的。我也是因为一次偶然的机会接触到git,并被它强大的功能所蛰伏。git其实就是一种版本控制工具,就像svn一样,但是git是分布式的。我不想给git打广告,我们直入正题——git能帮我们做什么?1)源码版本控制。平常写一写demo程序可能和git打不上交道,但是当我们把程序写到10000行以上,一般一个人开发的话要持续一个多月。期间程序作者可能会保存了N多份程序不同时期的拷贝,一来是为了备份代码,二者是作者添加新的程序功能,一旦对新功能不满意时可以方便撤销。git能帮助我们保存每次提交源码更改时的历史记录,并在需要的时候帮助我们撤销回滚 阅读全文