自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (2)
  • 收藏
  • 关注

原创 BST算法原理及其实现

首先,我们先了解下递归。说到递归,数据结构中树介绍章节中有大量的实例用了,包括二叉树定义与遍历等。当然一般公司项目中很少用它,主要是效率低下,同时递归涉及到函数反复建栈,压栈,销毁栈的过程,开销较大。这里仅仅作为一种技术探讨来研究。递归,简单地说就是函数自己调用自己,网上也有不少解释了。这里我的看法是将整个递归过程看做一种函数映射关系,即 F(A) --> B,如果B与A具有相同的属性和操作,同时

2016-04-28 00:35:46 2774

原创 Firefox浏览器个人用的插件

Firefox默认为Linux下的浏览器,最近发现一些特别好用的插件,可以帮助我们程序猿们提高工作学习效率,比如在线看影片时广告太长,上Stackoverflow,google时网速慢,或者直接被墙。再比如如何保存网页为PDF格式等,前端开发中如何获取请求参数,莫非浏览器表格提交等等。Firefox强大的插件(附加组件在线商店直接可以搜索,上万种插件满足我们各类需求)就可以帮我们搞定这些。之前浏览

2016-04-04 12:47:28 720

转载 Fedora23安装搜狗拼音输入法

Fedora23原装的ibus输入法确实不好用,其实主要是选词功能太弱了,网上搜到一篇不错的帖子,按照步骤安装了搜狗输入法,发现比较好用,特此记录下步骤。先看我的系统版本:1、先卸载系统自带的ibus输入法yum remove ibusgsettings set org.gnome.settings-daemon.plugins.keyboard active fals

2016-03-17 23:46:42 7327 1

原创 C语言实现C++面向对象语言多态特性

我们知道,C++语言演化过程中,加入了不少新特性,使其成为一门现代高级OO语言。当初C++在上个世纪七十年代末,80年代初时,C++发展刚刚起步,那时C++可以看作C with class,C++编写的代码是经过转换成C语言代码后,再经过C编译器来生成目标代码的。如今,C++语言已经自成一套体系,有自己语言书写风格和设计理念。C++整个语法体系中包括了C++基础(兼容C语言语法特性,OO特性)、模

2016-03-09 21:02:36 2581

原创 位图法在实际项目中的运用

位图法即bitmap算法,实际是用每一位来存放某种状态。在项目中运用的比较多,常常用于位图法将某些运行过程中的关键步骤记录下来,便于后期运行过程定位跟踪。位图法也常常用于处理大数据,比如用1个int32类型的变量可以表示0~31,如果用常见的int32类型来表示这些数据,则需要32个int类型的变量表示,这极大地浪费了内存。一般来说0~A范围内的数据可以用A/32int类型大小的数组表示,下面

2015-09-26 23:27:15 981

原创 分治法在算法设计中的运用

在算法设计中,常见的设计思想有分治法,分支定界,回溯,动态规划等等。其中分治法是算法设计中最为重要的思想之一。分治法思想的本质就是分而治之,将解决一个问题的解空间一分为二,每个子问题的解空间步骤与原问题解法上类似,分治法很多时候用递归这种方式来实现。算法设计相关教材一般将归并排序作为分治法的典型应用,归并排序思想是将一个待排序的序列一分为二,递归地对每个子序列排序,这样一直分解下去,直到不能分解为

2015-07-09 22:13:28 1960

原创 AVL树原理思想及其实现

AVL树,一种平衡搜索二叉树,是BST(Binary Search Tree)二叉查找树的一种,实际上是在BST搜索树上增加了平衡条件,所谓的平衡条件指的是树中的每个结点的左孩子与右孩子的高度之差不大于1。既然是一种BST树,那么它肯定满足BST的一般性质。在计算机科学领域,二叉搜索树(BST),有时也称作有序的或者排序好的二叉树,是一种特殊类型的容器。它允许快速的查找,增加,删除结点,可以被用作

2015-07-05 17:15:50 727 1

原创 堆排序算法原理及实现

堆排序是排序中一种比较重要的算法,和快速排序一样,其复杂度也是O(nlogn);同时也是一种原地排序算法:在任何时候,数组中只有常数个元素存储在输入数组以外。堆这种数据结构是处理海量数据比较常见的结构,海量数据的TOP K问题一般可以通过分治法+hash+堆这种数据结构解决。值得注意的是,这里将的“堆”准确的说是二叉堆,逻辑上是一棵类似完全二叉树的数据结构。

2015-06-09 22:20:28 7951

原创 插入排序增强版

我们指定,排序算法按照其稳定性来说,分为非稳定性排序与稳定性排序算法。判断稳定性与非稳定性算法的依据一般在是否为相邻元素之间的数据交换,不然一般为非稳定排序。比如快速排序,Shell排序等都不是稳定排序,而像冒泡排序,插入排序,合并排序等都是稳定排序。C语言库函数中的qsort函数是基于快速排序的,因此排序之后,未参加排序的数据之间的顺序可能被打乱。又是我们又需要在某一类场景下利用到稳定排序算法。

2015-05-31 09:17:57 548

原创 Hash函数经典用法

撰写这篇文章之前,先牢骚几句。程序员除了数据结构与算法,什么也不属于自己---记得哪个NB人物曾经说过这样的话。的确,程序员水平高低如何,很大程度上取决于基本功是否扎实。高级程序员与普通码农的区别在我看来就是对这些基础知识是否做到了运用自如。许多程序员开发程序也是简单地调用已有系统库,或者第三方组件,写写简单的hello world或者if...else之类的程序,这样下去其个人竞争优势逐渐散失,

2015-05-28 22:11:45 14190 1

原创 字符串中删除特定的字符

1. 在字符串中删除特定的字符(字符串)。输入两个字符串,从第一字符串中删除第二个字符串中所有字符例如,输入"They are students." 和 "aeiou"。则删除之后的第一个字符串变成 "Thy r stdnts."#include #include #include //trimString函数//inputString:输入字符串//pattern:待删

2015-05-13 22:28:57 1806

原创 二元多项式同类项合并问题

编码习惯一定要养成好!编码过程中如果使用了全局变量的,在函数过程调用完了之后,切记一定要记得清零,不然可能会有想不到的异常! 测试用例最少要准备2个以上case,以防单个Case无法预料的问题。下面来一道多项式问题合并问题。有很多方法,来一种最为普通的做法,直接用大数组解决:#include #include #include #include using namespace std;

2015-05-07 00:36:26 948

原创 单链表归并排序

数组排序常见的有十几种排序算法,然而对于单链表来说,链表缺乏随机访问特点,导致一些排序算法在时间和空间复杂度上都比较负责,一般的冒泡排序与插入排序,其时间复杂度都是O(N^2)。链表中最优的排序算法应该为归并排序,归并排序是分治法的典型应用,主要思想是将一个大问题划分为N(一般取2)个等价的子问题,通过对子问题的解答来达到对原有问题的解决。下面对链表的归并排序用代码实现。归并排序思想可以参考数组归

2015-05-04 21:56:40 4707

原创 Linux 平台源代码阅读器understand

Windows平台上,source insight是阅读源代码最佳工具之一,然而到了Linux平台上,很难找到与之抗衡的工具,有人说用VIM+Ctags+CScope,不过还是不太爽!找到了一款跨平台的源代码阅读工具understand,该工具基于QT开发(基本上Linux上GUI软件都是用Qt开发,当然也有很少一部分用的GTK开发)。解压缩之后直接将所有文件拷贝到/opt目录下,在/usr/sh

2015-05-02 08:40:20 5116 1

原创 Redis双向链表浅析

Redis源码Adlist中实现了一个双向链表,该链表在设计数据结构及其操作上有许多不同的技巧!

2015-04-16 22:48:01 735

原创 C++ string类应用

程序中许多时候都需要处理字符串,如果用C语言写一些方法函数,则效率比较低。如果是应用软件,可以考虑用string类,掌握string类常见的方法基本可以处理70%以上的关于字符串的问题了( 如果有必要的话,可以结合STL容器考虑)。当然如果自己直接写增删改查相关的处理函数也是可以的,下面直接上代码,将string常见操作都列出,考试时可以作为参考!#include #include usi

2015-04-09 23:40:43 824

原创 表驱动法在项目中的应用

在编码过程中,有一类场景往往是根据不同的输入或者条件,调用不同的函数。比如在通信设计领域,往往会有不同的消息到达,而不同的消息需要对应不同的处理函数。这样一来,如果我们采用常见的if....else或者switch......case等条件结构,分支会非常多,而且逻辑结果很混乱。那么此时把条件和对应的操作函数放入到一张表中,则可以简化代码,也便于后期维护拓展。当然最好的还是用状态机实现的,这个后面

2015-04-08 21:28:52 949

原创 几种常见STL容器类操作

STL容器类主要分为两种,一种是序列容器类,包括vector,list,deque等。另外一种是关联式容器,主要map,set。在实际使用过程中,主要按照数据存储的场景来选择容器。在实际使用时,如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵循下面的原则:    1) 如果你需要高效的随机存取,而不在乎插入和删除的效率,使用vector    2) 如果你需要大量的插入和删除,

2015-04-05 11:54:07 691

原创 二维指针的使用场景

实际上,指针作为参数,其目的有许多,一般来说,一维指针主要传给函数入参地址,或者通过其改变地址对应的值。而二维指针也比较类似,如果需要修改指针的值,则可以将函数出参修改为二维指针。若需要修改入参地址,如果实参是一级指针,则函数出参是二级指针,如果实参是二级指针,则函数出参是三级指针。

2015-04-02 00:46:33 2982

原创 POJ数字滑雪问题

#include #define MAX 100int skiMap[MAX][MAX]; //地图存储int skiLength[MAX][MAX];//滑行最长距离存储int direction[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};    //四个方向的坐标变化 //判断当前要访问节点(x,y)是否在地图内bool isInSk

2015-03-07 18:41:48 1448

原创 几个经典算法研究

最近研究几个经典算法,比如二分查找,大数相加等。加强一下编码思路训练。

2015-01-05 22:38:53 677 1

原创 链表操作常见技巧浅析

链表操作是程序设计中最常见的一类操作。在我们项目或面试中经常会用到,我们可以大致总结下链表操作的常见技巧。其实也没有什么难点,主要是操作列表时,注意异常边界值的考虑。一般在修改链表时,会用到辅助链表指针,其目的在我看来主要有2个作用:一是将当前结点保存起来,好让此时结点的指针指向下一结点(这里可以类似看做一个游标,向前或向后的结点移动。二是利用辅助链表指针的位置来实现特定的目的)。我们主要看到这里

2014-12-29 22:47:25 956

原创 线性表之链式表示

线性表链式表示方法线性表的链式存储特点是用一组任意的存储单元存储线性表的数据元素(这组存取单元很可能在物理上不是连续的)。因此为了表示每个数据元素,出了存储其本身的信息之外,还的存储一个指示其后继的信息。这两部分信息组成数据元素的存储映像,称为结点。包括了一个数据域和一个指针域(为什么可以包括自己类型的指针呢?因为指针在32位CPU上表示4字节大小,大小固定)。其原理及其实现都是比

2014-12-23 22:43:38 561

原创 数据结构之线性表(顺序表示)

在学习完大量的计算机原理知识之后,个人发现需要在二方面都得具备:一方面是宏观知识,主要是对整个计算机系统的理解和软件设计相关的基础知识。另一方面则是微观知识,具体表现为某个或某一类算法的原理及实现思想。如果只是谈及第一部分而没有具体做过的话(实现的话),感觉也只是纸上谈兵,而且计算机理论基础,包括操作系统内核代码实现则需要有扎实的算法基础和数据结构知识。缺少这个的话,无法向着高级程序员迈进。这两年

2014-12-22 20:58:40 663

原创 利用Perl中的Cisco模块登录公司交换机

发现CPAN中有个CISCO模块,恰好能满足登录公司交换机,

2014-11-17 23:00:06 989

原创 Perl统计英文单词(没有考虑缩写和连写词)

英文中单词之间直接有空格,而且Perl直接能匹配上

2014-11-05 19:29:18 1461

原创 Windows下硬盘安装fedora 15 livecd

之前办公室电脑中安装的redhat 4.7版本,由于版本太老。许多新的

2014-09-29 22:30:54 947

转载 MATLAB 2010a解决中文字体乱码的方法

今天在Faedor中安装了MATLAB 2010b,一切顺利,但最后使用时,发现界面中某些中文显示为方框。在网上搜索了解决方案,特记录下以备后用。首先需要有中文字体,一般情况在File->Preferences->Fonts中进行设置,选择喜欢的中文字体后,如Current Folder、Command History等处的中文就能正常显示。但是在打开文件等处仍然显示为方框,此时需要进行进

2014-08-24 15:15:33 4521

原创 cppcheck 单元测试框架浅析

cppcheck源码很值得一读,代码中定义

2014-08-20 22:31:47 1147

原创 从内存模型角度来看C++多态实现机制

最近对多态的实现机制比较感兴趣,本文从C++内存模型角度去看待多态的实现机制。实例如下:#include#include #include using namespace std;class Animal{    public:           Animal(int a = 1, int b = 2)           {

2014-08-11 23:10:25 1459

转载 电脑的脉搏—时钟频率的来龙去脉

电脑的脉搏—时钟频率的来龙去脉电脑的脉搏—时钟频率的来龙去脉PCSHOW.net 作者:《微型计算机》陈忠民 2005-10-04   一首美妙的乐曲会有一个主旋律,而电脑的主旋律就是CPU的时钟频率。主频、外频和倍频,它们从何而来?锁频、超频,又是怎么回事呢?   电脑中有许许多多的半导体芯片,每个芯片都是在特定的时钟频率下进行工作的。

2014-08-11 23:06:25 1185

转载 跟我到CPU内部去看1+1=2是如何运行的

跟我到CPU内部去看1+1=2是如何运行的!(转)    1+1=2     好吧,我承认这是小学生也会做的题目,但是作为一个程序员,或者是软件设计师,你知道1+1=2如何在计算机内部表示并执行的么?          在复习软件设计师中的计算机组成原理的时候这个问题一直在困扰着我,因为这里的内容涉及到了cpu运行原理.而对我们大多数人而言,cpu只不过

2014-08-11 23:05:26 1397 1

转载 Fedora18解决无线上网和屏幕亮度调节问题

先看网卡型号:[root@localhost sunjunior]# lspci | grep -i broadcom06:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)安装Fedora18之后,安装无线上网驱动:yum install broadcom-wl

2014-08-11 23:02:50 618

原创 设计模式学习心得之模板模式

模板模式可以说的是最简单的模式了(跟单例模式一样简单,呵呵)。在面向对象系统分析与设计中通常会遇到这样一种情况:对于某一种业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑框架是相同的。而template模式则提供了这种情况的一个实现框架。模板模式实现原理也很简单,利用面向对象的继承和多态特性就可以得到。我们平时在编写代码时可能就有用到,比如业务单板有许多种,CHSTM, E1,CEP,

2014-08-11 22:59:05 876

原创 数组越界导致局部变量修改

#include int main(){    int i = 1;    int a[2];    a[0] = 2;    a[1]= 1;    a[2] = 4;    printf("i = %d\n", i);    return 0;}

2014-08-11 22:57:09 1282

原创 算法导论------快速排序

当我们学习研究完各种开发语言,操作系统,软件设计等方面软件知识之后,发现程序设计的本质还是在算法设计上。算法设计的好坏直接影响程序性能。于是,最近学习绕了一圈之后又重新拾掇起程序的核心部分------------算法(程序=数据结构+算法),掌握常见的数据结构与算法再去研读优秀的开源项目(比如linux内核)时会做到游刃有余。算法中最基础的就是查找和排序。当然这里谈算法是与数据结构紧密相连的。数据

2014-08-11 22:53:43 683

转载 fedora 18 使用LiveCD修复grub2引导

安装了WINDOWS7后Fedora18的主引导记录被覆盖了,进不去系统,以下是一个可行的解决方案:用LiveCD启动之后,首先应该明确的是你的fedora装在哪个分区,现在的硬盘都应该是sata的吧,那么就对应/dev/sdax,x是个数字,1~4表示主分区,5开始是逻辑分区。利用blkid和fdisk等命令来查看分区 , 找到fedora安装所在分区(系统分区),我

2014-08-11 22:48:34 914

C语言指针总结,非常好用的资料

C语言指针总结,非常好用的资料。建议学习C语言的同学下载

2012-04-15

larbin源代码下载

larbin网络爬虫源代码,基于C++编写。编译出现错误时,注释掉相应的行即可。先安装makedepend,然后注释掉internal.h中的错误行。接着在/usr/include/c++下复制iostream到larbin src目录下,改名为iostream.h。在iostream.h下加入using namespace std;最后make如果还有错误(错误:posix_types_32.h:没有那个文件或目录),就把系统下posix_types.h里面全部注释掉即可

2011-05-31

空空如也

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

TA关注的人

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