自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

To be a crazy and happy coder!

技术整理/学习总结

  • 博客(68)
  • 资源 (7)
  • 收藏
  • 关注

原创 书单计划

《代码大全》:以前经常要写一个精巧算法高深简短的代码。读了Code Complete之后理解了什么是好的代码。

2013-09-15 21:45:33 1026

原创 我的程序又core dump了

小心翼翼的检查好源文件,make一下,庆幸编译完美通过。run一下,过了不知道多久,程序又core了!你是否也遇到过这样的情况,有点想骂人的冲动,程序总是无端的core dump,多个模块,gdb调试之也看不出问题,这样的系统交付出去,自己都不放心。骂人是没有用的,发泄发泄,该调试还得调试。冷静下来,梳理一下思路,分析下到底哪里出了问题。运行时的segment error大多数是内存问题。

2013-06-23 17:13:52 1369

原创 常犯错误记录

1.位运算和逻辑运算在一起时,小心优先级问题plNodeState & testBit != 0(plNodeState & testBit) != 0后者为我的真正用意。代价:花了近乎半个小时才发现这个错误。2.fgets()能把最后的换行也读了:"\n\0"3.getchar()读的是缓冲区。每当换行进入缓冲区,就从缓冲区队列前读入一个字符, IO函数要小心行缓冲等;

2013-05-23 17:19:48 747

原创 屏蔽敏感词汇&KMP

在互联网上,由于一些政策法规,需要对一些帖子或者聊天记录进行关键字屏蔽,本文使用KMP模式匹配算法,将目标串S中的敏感词汇全部替换成*。实际应用中需要一个屏蔽词库,需将每个屏蔽词条作为模式串T,分别过滤一次S串。考虑到屏蔽词库中有相同前缀的屏蔽词,比如:“朱令”和“朱令案”,所以可以预先将屏蔽词库中的屏蔽词按照长度做由大到小的排序。先过滤长词,再过滤短词即可。int getNext(c

2013-05-23 09:49:58 4812

原创 海量数据处理之bitmap实现

bitMap位图经常用来处理海量数据的问题,如3亿微信号和7亿QQ查重问题,电话号码去重问题,都可以用位图法来处理。位图法思想较简单,即申请一个由比特构成的table,可在相应的位置置0或1.从而快速达到快速查找,同时又不会特别浪费空间。网上关于位图法的详细解释比较多。本文主要给出一个位图法简单的实现。typedef char byte8;typedef byte8 * bitMap;

2013-05-08 20:23:20 1966

原创 三分搜索法

一 问题在一个平面上有N个点,每个点的坐标已经给出,现在要求在X轴上找一个点,使得这个点到所有点中最大的距离最小。二 分析不知道是否有基于策略选择的算法,也许是DP也许是Greedy。本文通过数值计算来解决此问题。问题抽象:设f(x) = max(node1_distance, node2_distance, ……nodeN_distance), a求x*使min(

2013-04-15 10:19:28 2516

原创 编程之美3.11 二分查找常见问题

二分查找原理简单,但写起来比较容易错,只要记住一点:小心的处理边界。就没什么问题了。下面是分别是三种常用的查找要求的实现:(1)给定一个有序(非降序)数组arr,求任意一个i使得arr[i]等于value,不存在返回-1。(2)给定一个有序(非降序)数组arr,求第一个i使得arr[i]等于value,不存在返回-1。(3)给定一个有序(非降序)数组arr,求最后一个i使得ar

2013-04-02 17:40:27 2323 2

原创 leetcode: 2Sum/3Sum/3SumClosest/4Sum系列问题

leetcode(http://leetcode.com/onlinejudge)上有好几道关于数组中几个数据和为target的题目。恰好正在看剑指offer中“和为s的两个数组这章”,据此思想,leetcode上的三道题目都被我解决了。总结一下。1.twoSum:输入一个递增数组和一个数字s,在数组中查找两个数使得它们的和正好是s。既然题目中已经提到了“递增数组”,那么肯定不会暴力了。因

2013-03-19 19:49:15 10821 3

原创 函数的设计

函数作为C/C++程序的基本功能单元,具有非常重要的作用,良好的函数接口设计,合适的入参,出参,返回值的设计对整个程序大有裨益,会让开发者感到流畅,清爽,水到渠成的感觉。相反,风格不统一,格式混乱,前后矛盾冲突,不仅会让团队其他人感到迷惑,也会降低整个实现的流畅性,感到捉襟见肘,拆东墙补西墙。本文主要总结了函数的接口设计和内部实现的一些规则。函数接口的两大要素是参数和返回值。C语言中,函数

2013-03-16 21:13:16 1911 1

原创 总控节点防瘫痪

初学linux开发,总结下。若有错误,敬请指正,谢谢。1.主备模式配置两个服务进程,一个主,另一个备,主和备都打开服务。客户端把主和备的地址都配上,如果发现往主服务进程发送请求,connect不到,推测主服务进程可能瘫痪,就往备用服务进程发送请求。对于这种方式,笔者尚未实践过。只停留在理论阶段。缺点需要手动修复主服务进程。2. fork + waitpidwhile (1) {

2013-03-12 20:22:46 902

原创 计算机思维方式

对于计算机专业的人来说,电脑无疑是非常傻的。没有智能,不会思考,他只会执行有限的简单的指令。它的优点是不会感到累。我们程序员的职责就是用计算机能懂得语言告诉他做一些事儿。尽管计算机做的事如此简单,但是在纷繁的应用中,他还是表现了他解决问题的一些特征,如果程序员能很好的理解这些特征,那么我们的工作将会事半功倍。一. 人脑的智慧VS电脑的不知疲倦+快速对面坐了5个学生,有一篮苹果,其中一些

2012-12-26 11:33:24 4652

原创 链接常见错误

一.概要对于语言初学者,开始的时候总是把所有的代码写在一个源文件中。当代码行非常庞大时候,这样的做法往往很难维护和修改。而真正的工程项目都是由多人共同完成的,因此划分模块,组织良好清晰的文件结构显得非常重要。本文主要针对C/C++语言初学者在组织工程文件结构时所遇到的众多问题和概念给予总结。二.认识编译单元开始时,自己写的小工程只有一个源文件时,通过编译链接就可生成可执行文件。这个过程

2012-12-08 19:56:54 1173

原创 AOV网与拓扑排序

一.概念在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,成这样的有向图为顶点表示活动的网,简称AOV网(activity on vertex network)。最典型的例子是课程与课程之间的优先关系。若某个AOV网中所有顶点都在拓扑序列中,说明该AOV网不存在回路。一个AOV网的拓扑序列可能不唯一。对AOV网进行拓扑排序的基本思想是:(1)从AOV网中选择一个

2012-11-13 10:10:37 9489

原创 C/C++ IO总结

正如Effective C++所讲:C++就是一个语言联邦。他是一个多面手。对于同一个问题往往有很多种解决办法,具体采用那种办法就交给程序员去选择。因此本文对C++文件IO的整理就得分为两个面:C方式,C++方式。程序员可根据自己所在团队选择合适且统一的IO方式。 一. 基础知识1.1文件类型:ASCII文件和二进制文件首先我不保证文件类型只有这两种。但理解这两种文件对学习文件IO

2012-11-06 19:38:43 6226

原创 又一次历练(记2012腾讯编程马拉松决赛经历)

想想退役已经两年了,毕业后读研,天天和paper呆一起的日子,代码量骤降。偶尔刷刷学校的月赛,寻找下当年比赛时的感觉。    9月份招聘季到了,实验室的师兄们开始各种网投,包括腾讯马拉松的一问一答。师兄们不断的现场求助大家。也就勾起了我的兴趣。先把C++刷到800,接着又把Java刷到800,C只刷到了780+,题目就被我用光了。不久就收到了复赛邀请,其实我一直把初赛当成资格赛,以为只要参

2012-09-20 10:07:43 4278 2

原创 生活中的计算机

学计算机专业多年,习惯性的总去探索事物背后的计算机原理,收录如下(同时和大家分享下,遇到问题时重要的不是查阅读资料搜索答案,而是认真的思考后通过程序去验证自己的假设)。持续更新……问题5(2012.)暑假突发奇想,每次按下空调遥控器,都需要向空调发送那些信息指令?空调遥控器和电视遥控器有什么区别?我认为空调遥控器每次按键后都会将空调遥控器显示的所有状态都发送给空调主机。包括温度,模

2012-09-07 19:03:49 1521

原创 调bug就像修路

调试程序查找bug就像修一条路。当我们站在路的终点发现得到的结果出错时,毫无疑问这条路上有地方出故障了,也许有个大坑,也许有别的岔道了。    很多人初学者都会站在路终点处重复的执行,试图结果能够再次正确。可往往会失望,只能无助的望着这条让自己感到诡异的路。    亦或者是用自己有限的视野,来回查看这条万里路到底哪里出现了问题(翻动着数千行的代码),往往会惊呼一切正常,大骂着诡异的问题。

2012-08-03 10:38:02 994

原创 有限域中的乘法逆元

在密码学和安全领域有限域的应用很广。包括大家熟知的欧几里得算法求最大公因子。本文介绍在有限域中求乘法逆元。包括对于整数和多项式的。利用了扩展的Euclid算法。有伟大的高德纳提出。1. 乘法逆元w' :任意的w属于Zp, w!=0,存在z属于Zp使得w*z==1 (mod p);举例如下:求5关于mod 14 的乘法逆元。5*3 == 1 (mod 14);所以5的模14乘法逆元为

2012-06-28 15:21:23 16117 2

原创 函数的调用方法

0.概述如果你能很清楚的理解下面这个程序,那么本篇文章就不用看了。班门弄斧而已。void GetMemory(char* p){ p = new char[100];}void main(){ char *str = "1234"; GetMemory(str); strcpy(str, "hi"); //出错! str = NULL! printf("%s\n", s

2012-04-24 21:25:54 1367 1

原创 编程之美——小飞的电梯调度算法之新解

亚洲微软研究院所在的希格玛大厦一共有6部电梯。在高峰时间,每层都有人上下,电梯每层都停。实习生小飞常常会被每层都停的电梯弄的很不耐烦,于是他提出了这样一个办法:由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层。所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层。在一楼的时候,每个乘客选择自己的目的层,电梯则计算出

2012-04-22 10:56:39 5388 8

原创 C++继承体系下构造的执行顺序

理清下面代码即可:#include class B{public: B(int i) { b=i; cout << "B constructed" << endl; } int b;};class V: public B{public: V(int i, int j):B(i) { v=j; cou

2012-04-12 21:27:30 860

原创 POJ2513 Trie+并查集+欧拉回路

题目大意:给定一系列sticks,每个木棒的两端都涂有颜色,判断是否能够找到将所有的木棒连接起来的方法,使相互连接的木棒的两端的颜色是相同的?分析:画图分析可知,如果形成的图能有一条路径遍历所有的边并且不重复。则达到目的。不由想起欧拉回路(从某个节点出发,不重复的遍历所有路径,回到原点,则为此图的欧拉回路)。而本题中并不要求回到原点。没有欧拉回路要求的苛刻。判断无向图是否有欧拉回路的方

2012-04-10 15:19:40 3932

原创 DFS解素数环问题

问题描述: 将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环。 算法描述:典型深搜问题。 代码:#includeusing namespace std;int N = 0;int data[30] = {0};bool not_contain(int num, int depth){ f

2012-04-08 20:27:18 1441

原创 再次理解DFS(POJ1014)

原题目:http://poj.org/problem?id=1014题目大意:有分别价值为1,2,3,4,5,6的6种物品,输入6个数字,表示相应价值的物品的数量,问一下能不能将物品分成两份,是两份的总价值相等,其中一个物品不能切开,只能分给其中的某一方,当输入六个0是(即没有物品了),这程序结束,总物品的总个数不超过20000 输出:每个测试用例占三行:

2012-04-07 10:33:14 4773 18

原创 全排列的生成

前两种是字典序,第三种非字典序。方法一:组合数学方法 (总结规律,得出结论,偏向数学)顾名思义,这种方法的思想就是将所有的n元排列按“字典顺序”排成队,以12…n为第一个排列,排序的规则,也就是有一个排列(p)=(p1p2p3…pn)直接生成下一个排列的算法可归结为:(1)求满足关系式p(k-1)(2)求满足关系式p(i-1)(3)p(i-1)与p(j)互换位置得q=(q1q2

2012-04-06 16:23:53 2810

原创 Java对集合的排序

Java中对集合的排序有两种支持(1): Collections.sort(List list);(2): Collections.sort(List list, Comparator c);一:第一种方式参数list必须实现了comparable接口,覆盖掉其compareTo()方法。也就是让sort给你排序,你就必须告诉它什么是大什么是小?类似于C++中的快排qsort。不过

2012-03-30 21:17:00 868

原创 T9输入法的实现

T9输入法,名字听起来陌生,可是大家却经常使用它。可以说T9输入法是输入法历史中的一次革命。至少自T9输入法开始,输入法有长足的进步。如图手机中九个数字键。26个英文字母被分配到2至9这8个数字键上。以前想输入英文单词的时候总是需要连续多次按某个键,才能得到目标字母。比如想输入“hello”,就需要按两次4,两次3,三次5,三次5,三次6.输入一个单词需要数十次的按键,更何况还有经常按错的情况

2012-03-30 11:11:04 7411 6

原创 equals方法和hashCode方法

对于Java语言中的老祖宗类Object有9个方法。都是作为一个对象应该具有的方法。特别是equals方法和hashCode方法最迷惑人。1. 为什么需要equals方法?在编程中经常需要判断一个对象和另一个对象是否相等。因此Object对象就规定了每个对象都应该有equals方法,用来判断是否和另一个对象相等。观察Object类的源码实现: public boolean equals

2012-03-12 21:01:46 854

原创 求所有的出栈序列

之前我们谈到验证一个出栈序列是否合法比较容易,简单模拟入栈出栈过程即可。那么如果需要求出所有合法的出栈序列该怎么办呢?(1)我们之前谈到,合法的出栈序列条件:对于每个已出栈数之后的且小于此数的数都必须按降序排列。例如1 2 5 3 4。对于5来说,后面的3,4都小于5,可是3,4却是升序的。则肯定不是合法的出栈序列。由此可以想到我们可以求出所有的全排列,然后从中剔除掉非法序列。显然,当

2012-03-08 18:05:39 5486 3

原创 POJ1363验证出栈序列问题

题目地址: http://poj.org/problem?id=1363此题只需验证是否为合法的出栈序列。有两个思路:1、每个已出栈之后的数且小于此数的数都必须按降序排列。复杂度O(n^2),适合人脑。2、另一个思路就是直接模拟入栈出栈过程。虽然模拟毫无技巧可言,但复杂度O(n),优于算法1。适合电脑。代码如下:for(i = 0; i < N; i++){ if(in

2012-02-29 16:55:56 1906 4

原创 Java的内存分配

初学Java语言的人总是声称Java中没有指针。每次听到这种说法,我都是不做过多争辩。Java语言只是表面上没有了C/C++中的指针符号“*”。而其这种机制依然是存在的,只是换了个表现形式而已。其目的都是为了操作内存。还有些人经常说Java语言多么优秀,程序员不用关心底层的内存云云……。我们的语言还没有到那种程度,只是对于内存等细节的处理比以前更优秀了而已。下面整理了Java中内存的分配问题。

2012-02-29 15:55:00 645

原创 快速幂的应用

一个非常平常的公式:x^n = (x^(n/2))^2 (n为偶数)x^n = (x^((n-1)/2))^2 * x (n为偶数)这两个公式初中应该就学了。可是似乎他一直没发挥什么作用。事实上他在计算机科学中的作用甚大。可以观察等号左侧的式子对于计算机来说需要计算n-1次乘法,而对于右边的式子只进行了约n/2+1次乘法。这个差别对于计算机来说是巨大的。而且右边的式子中的幂运算还可以进

2012-02-23 16:12:33 787

原创 XDOJ最喜欢的数字

Description         zyf最喜欢的数字是1!所以他经常会使用一些手段,把一些非1的数字变成1,并为此得意不已。他会且仅会的两种手段是:1.把某个数m除以某个质数p——当然p必须能整除这个数,即m=m/p 2.把某个数m减1,即m=m-1 有一天他突发奇想,想把[a,b]区间中所有的数一个一个地变成1,这是一个巨大的无聊的工程,所以他想知道他最少得花多少操

2012-02-23 15:47:34 2608

原创 C++继承体系下类中属性的能见度总结

在面向对象技术下类中成员的可见性以及访问控制程度总是让程序员发懵。特别是初学者。下面将对其做一总结。1.横向来看,比较简单。类中成员的访问控制程度有三种:public,private,proteced。public:完全向外部公开。protected:类中以及派生类均可访问,不能再类外访问。private: 仅本类中可以访问,类外不能访问。友元除外。横向的较简单。一旦涉及到纵向

2012-01-13 15:18:57 1782

原创 函数的重写

我在OOP方面的知识一直都使用后再看理论的,因为之前的理论大多都没有吸收,也缺乏深入理解。最近又重新学习了继承体系中关于类中方法的重写(override)。先通过在C++下的例子来阐述这一机制。#include#includeusing namespace std;class People{public:    People(string name){

2012-01-12 21:13:45 3198 4

原创 Adapter适配器模式

Adapter模式,适配器模式。先看类图。我举个例子,本公司从国外买了一套中间件GUI产品,这套由其他公司开发的GUI产品代码风格以及提供的接口对于本公司程序员来说都非常陌生。但是本公司的所有程序员对公司之前用的接口非常熟悉。如果让程序员们都花时间去研究这套GUI产品,一方面比较慢,因为第三方团队开发出来的东西总是让人很难读懂。一方面比较浪费时间,因为对于本公司的业务来说完全没有必要学

2012-01-11 19:33:26 851

原创 用例图中如何区分include和extend?

需求分析的时候,复杂的需求总是让人很难搞清用例之前的关系,generalize关系比较容易搞清,最易混淆的就是include和extend了。网上好多都对此讲解的不明白,甚至出错。本文告诉你如何判断到底是用include还是extend?看完下图就明白了。本图是用visio画的,所以《uses》其实是代表《include》(微软总是不服从标准)。1. 《include》意为包含

2012-01-10 12:07:18 8258 1

原创 Template Method模板方法

一.    TemplateMethod Pattern定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。子类可以不改变算法结构,重新定义该算法的某些特定步骤,算法结构可以理解为根据需求设计出来的业务流程,特定步骤即是那些可能在内容上存在变数的环节,算法结构可以理解为根据需求设计出来的业务流程,特定步骤即是那些可能在内容上存在变数的环节。二.    两个应用场景1.    日志文件

2011-12-27 22:34:14 815

原创 递归,迭代还是其他?

1.问题描述:(1)一只青蛙一次可以跳上1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。(2)一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法?2.递归:在递归里面,一个子程序自己负责解决摸个问题的一小部分,他还把问题分解成很多的小块,然后调用自己来分别解决每一小块。当问题的小部分很容易解

2011-12-27 21:15:56 949 2

原创 面试题——二维数组中的查找

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。      例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。这是前两天解决的一个问题,写出来总结一下。递归函数如下

2011-12-27 13:44:55 2268

献给计算机工作者养生动作

本资源是一些养生相关的动作,主要是考虑到大家长期伏案工作,身体消耗较大。希望大家平时工作之余可以练习保养身体。

2011-08-31

2010/2011 西安电子科技大学 上机题

2008 西安电子科技大学 上机题 计算机 考研

2011-05-04

计算机考研西电复试2010全过程

复试题 拟录取名单 录取名单 报录比 招生情况等等 上机题

2011-05-04

UML课程设计——人事工资管理系统

UML课程设计——人事工资管理系统(需求,用例设计,结构设计,部署等)

2010-06-28

北大POJ 大量解题代码

ACM POJ 解题报告北大POJ 大量解题代码

2009-06-13

jsp 案例开发集锦

非常好的jsp教程,示例带你进入jsp世界!

2009-06-12

北大ACM大量水题解

不太多,但都是精简的!主要是为了熟悉环境,谢谢大家,几乎免费!

2008-12-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除