- 博客(62)
- 资源 (4)
- 收藏
- 关注
转载 svn diff 使用 vimdiff代替,提高阅读性
可能是被Win下的比较软件给养出的恶习,所以一直很难习惯*nux下文本diff的比较效果,尤其是频繁的使用svn diff。简直会让我对程序的理解能力直线下降。终于发现,其实svn已经提供了这种切换diff程序的机制,在svn的手册里有diffwrap.sh这样一个脚本:#!/bin/sh # 配置你喜欢的diff程序路径 DIFF="vimdiff" # SVN diff
2015-05-03 14:17:51 724
原创 fedora20/21 中文输入法 记录
有了笔记后,好久都不来写了,罪过。这次是fedora下使用搜狗输入法 。众所周知,Linux下的中文输入法是很难调教的,可不像Windows下,下载输入法然后安装就行。Linux下的中文输入法主要由框架+引擎两部分组成。主流的有:iBus、SCIM、Fcitx,本文就介绍n种搭配。一、iBus + 拼音一般情况下,Fedora自带的Gnome Shell已经和iBu
2015-04-21 14:03:22 5374
转载 《Hadoop基础教程》读后感
Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身。 《Hadoop基础教程》是我读的第一本Hadoop书籍,当然在线只能试读第一章,不过对Hadoop历史、核心技术和应用场景有了初步了解。 Hadoop历史 雏形开始于2002年的Apa
2014-09-27 20:26:25 2856
转载 gdb调试升级命令
http://which.blog.51cto.com/7179876/1206977gdb是一个很有用的调试工具,自己做linux下的开发,天天用的说。下面说一下自己平常实际操作。 1,gdb 可执行程序,进入调试。 2,r 运行程序。若带参数,则r 参数一 参数二 。 3,既然调试,必有断点。break命令(可以简写为b)。
2013-11-07 20:47:06 1622
原创 vim gdb 调试及gcc优化
基本的调试命令 就不说了。今天收获了。gdb 使用while打印数组set $i=0while $ip shuzu[$i]set $i++endgcc优化原来经常遇到的-O是优化运行时间的。自己试了试 -O0 比-O3慢了3倍速度大概,当然也要分具体代码。GCC -O选项这个选项控制所有的优化等级。使用优化选项会使编译过程耗费更多
2013-10-21 21:32:40 1273
原创 c++虚函数内部机制
基类析构函数声明为virtual是很重要的~比如:有一class B 继承自 上边的 class A;如果我们这样 A pClassA = new B(pClassA这里是个指针); 即new 一个派生类(B)的对象,并且有基类的指针来指向它,这样没问题。但是如果我们要释放刚才的空间delete pClassA 这个就会有麻烦,因为C++标准中对这一行为没有明确定义,即通过基类指针来销
2013-09-18 23:29:32 1109
原创 由二分搜索引出的算法复杂度分析
由一个类似于二分搜索的算法引出了对复杂度的分析问题。想来想去,也不知道如何证明。这也说明自己对算法的理解不到位的地方,也是如何证明,如何分析复杂度,这里进行一次大补。如果用主定理的话,又体现不出对算法的深入理解吧。而且算法证明最好不要用主定理,不能体现水平吧。补充一: 算法复杂度分为时间复杂度和空间复杂度。对于时间复杂度,可以理解为程序运行的次数 也就
2013-09-17 22:21:35 1821
原创 阿里巴巴搜索系统总结(三)
一和二在另一套博客上。这次总结只是为了更深入了解一下阿里搜索系统。阿里离线系统 分为 一淘搜索前端,商品搜索引擎 和产品搜索引擎。 另外还有 一淘商品库 标类产品库 。流程大概是,1.从淘宝内部和外网商品以及合作商家那里获取到商品 后倒入数据库。2.进行 同款聚合(去重吧)合成半标类和标类 。3.pbullder进行处理后倒入到飙泪产品库。4.前
2013-09-15 23:33:47 2548
转载 git 管理项目
之前初学过一点git版本控制工具,利用github做仓库,照着github上的文档练习的了一下。不过那只篇只是照虎画猫(我的水平只能照着老虎画个猫模样,嘻嘻!)。最近在学hibernate,公司与家之间都要调用我练习的小项目,交给git/github来管理,我只想说真的爽歪歪了。本文在我之前的那篇《git/github学习笔记》的基础上,属于那个的升级加强版,欢迎对照阅读:http
2013-08-26 19:06:11 1212
转载 rpc通信
今天得到一个名字叫“RPC”通信机制,这是什么东西呢?google一下解释直接贴过来:1、RPC(Remote Procedure Call Protocol)RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用远程另一套机器上的子程序,就像LPC(本地过程调用).越
2013-08-24 16:25:55 2816
转载 MVC设计模式
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式最早由Trygve Reenskaug在1978年提出[1] ,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的
2013-08-24 10:21:52 75589
转载 PHP与 后台c交换数据
为什么要用json跟XML相比,JSON的优势在于格式简洁短小,特别是在处理大量复杂数据的时候,这个优势便显得非常突出。从各浏览器的支持来看,JSON解决了因不同浏览器对XML DOM解析方式不同而引起的问题。目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言
2013-08-24 10:00:03 1868
原创 一直没有发现的调试工具,valgrind
Valgrind 使用简单说明本文部分参考网上相关资料。Valgrind能做什么? •内存使用检测,包括: –内存泄漏 –非法内存访问 –未初始化变量使用 –重复释放内存 •多线程竞争 –检测死锁 -检测竞争Valgrind还能做什么? •性能分析 –Cachegri
2013-08-16 20:25:57 636
转载 c++ 成员函数与变量的内存分布
静态成员函数与一般成员函数的唯一区别就是没有this指针,因此不能访问非静态数据成员,就像我前面提到的,所有函数都存放在代码区,静态函数也不例外。所有有人一看到 static 这个单词就主观的认为是存放在全局数据区,那是不对的很明显,类的内存大小和其唯一的成员变量的内存大小是一致的。内存地址也是一致的。他们甚至可以相互转换。换成结构体结果也是一样。网友可以自己运行上面代码来进行确认。 这个
2013-07-31 23:37:30 890
转载 Resource Acquisition Is Initialization (RAII)是什么?(封装的优势)
先来看一小段代码,它取自 Bjarne Stroustrup 的演讲“Speaking C++ as a Native”:// use an object to represent a resource ("resource acquisition is initialization")class File_handle { // belongs in some support l
2013-07-22 17:27:13 803
转载 如何训练思维的深度和缜密度?
思维的深度跟实践的深度是相关的,看一件事儿、想一件事儿和做一件事儿构成的对一件事儿的思考深度显然是不同的。所以最好的训练是 learning by doing。- 思维的深度跟知识的深度有关。一个天才如果对某个领域缺乏基础了解,是不可能靠常识想太深的。所以深入的、疯狂学某个领域是非常必要的。这方面随便举个例子,篮球专栏作者 Bill Simmons,他是一个体育疯子,他不仅看过数以万计的比
2013-07-02 22:11:28 1721
翻译 面试:如果程序崩溃,可能的原因是什么?
You are given the source to an application which crashes when it is run. After runningit ten times in a debugger, you find it never crashes in the same place. The applicationis single threaded, an
2013-06-09 15:07:17 6154
转载 分割字符串
The strtok() function parses a string into a sequence of tokens. On the first call to strtok() the string to be parsed should be specified in str. In each subsequent call that sh
2013-05-22 09:06:58 813
转载 二级指针删除单向链表
今晚在这里看到一篇文章,http://coolshell.cn/articles/8990.html,原文给的是代码片段,本着动手实践的原则,另外顺便复习一下链表,写了下代码#include #include typedef struct _node { int n; struct _node *next;} node;typedef int (* remove_fn)(n
2013-05-16 15:11:48 587
原创 设计模式(六)----观察者模式
1.引子 今天逛论坛,看到一个很实用的帖子,问的是子对象如何通知父对象? 代码是: class A{ bool flag; void set_status() { flag = true; }};class B{ B() { A a; a.flag = false; } b
2013-05-09 17:12:42 908
转载 输入和输出缓冲区更新(试过成功)
原文:http://blog.csdn.net/u010064842/article/details/87692291.区分概念什么是缓冲区 缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。为什么要
2013-05-09 09:16:51 3888
原创 KMP算法
KMP是一种线性复杂度的串匹配算法,普通的匹配算法的复杂度是O(m*n)而KMP则是O(m+n)。自己理解的KMP核心思想是:abcddadc i 此时等于3时发现不匹配,abedse j=3此时,传统算法是 i再从2开始匹配,但KMP是拒绝走回头路的,既然已经匹配过3了,那下一次i就需要算4了。i既然不回头,那回头的就只能是j了。怎样才能达到这样,不必重复比较呢?
2013-05-08 17:10:43 694
原创 完美洗牌算法
输入 , 如何在O(n)的时间,用O(1)的空间,将这个序列顺序改为 。输入:1234567dbcdefg则输出1a2b3c4d5e6f7g公式:y = 2x mod (2n -1),顾而 x = (y + k * (2n - 1))/2这里k可以化成y相关,因为i 范围为0--2n-1所以y+k(2n-1) 必须在0 --(2n-1)*2所以y 与k*(2n-
2013-05-06 16:32:08 3755 1
原创 linux下实现自动后台运行,脱离输出到终端
看sipp的源代码,看到里面有实现完全后台运行,即脱离了终端。不向终端打印任何信息。代码如下:#include #include #include #include #include #include #include #include #define BUFFER_SIZE 1024int main(int argc, char *argv[]){// ret
2013-05-06 14:18:12 2330
原创 sipp代码 中 时间和多线程编程
sipp中多线程代码拿出来:#include #include #include #include #include int main(){ pid_t l_pid; char x[100]= "ls"; switch(l_pid = fork()) { case -1: // error when fo
2013-05-06 11:12:44 967
转载 trie树--详解
文章作者:yx_th000 文章来源:Cherish_yimi (http://www.cnblogs.com/cherish_yimi/) 转载请注明,谢谢合作。关键词:trie trie树 数据结构前几天学习了并查集和trie树,这里总结一下trie。 本文讨论一棵最简单的trie树,基于英文26个字母组成的字符串,讨论插入字符串、判断前缀是否存在、查找字符串
2013-05-05 10:32:36 533
转载 卡特兰数总结
一、白什么是卡特兰数可以从它对应的应用来分析:我总结了一下,最典型的四类应用:(实质上却都一样,无非是递归等式的应用,就看你能不能分解问题写出递归式了) 1.括号化问题。 矩阵链乘:P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n)种) 2.出栈次序问题。 一个栈(无穷大)的进栈
2013-05-04 21:28:30 703
原创 设计模式(五) -- 抽象工厂及各种工厂总结
在抽象工厂模式中,有一个产品族的概念:所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族。抽象工厂模式所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品称为一个等级结构。我们依然拿生产汽车的例子来说明他们之间的区别。 其实感觉解释都是废话,还是伤uml图 和代码吧。interface IProduct1 { public void show
2013-04-25 21:30:07 587
原创 设计模式(四) ---- 工厂方法模式
绝大部分转自:http://blog.csdn.net/zhengzhb/article/details/7359385工厂方法模式简单来说就是将工厂里创建对象的部分,抽象成虚类。这样我们就可以降低工厂类方法内的逻辑。 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,注意是相关的类,而不是仅仅一个类。典型应用
2013-04-25 11:06:59 731
原创 设计模式(三) ----代理模式
一,普通代理模式代理模式也比较容易理解,但是其用途不是很好理解了。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。-------我还有很长的路要走了。二 代理模式的使用为其他对象提供一种代理以控制对这个对象的访问。 其应用场景有:1 远程代理。2. 虚拟代理,是根据需要创建开销很大
2013-04-25 10:19:34 653
原创 设计模式(二)----四大原则
原则一:单一职责原则(SRP),就一个类而言,应该引用一个引起它变换的原因。具体就是尽量简化类的方法。通俗的说,即一个类只负责一项职责。具体可见:http://blog.csdn.net/zhengzhb/article/details/7278174这的讲解非常详细。原则二:开放-封闭原则,是说软件实体(类/模块/函数等等),应该可以扩展,但是不可修改。 对于程序设计
2013-04-24 15:01:59 1297
原创 设计模式开篇(一)
已经有很多前辈写过关于设计模式的很多经典文章,我在这里记录一些自己的学习进程,表示自己还在学习好了。先从借来的大话设计模式看起,今天是第一章和第二章。第一章 简单uml uml中继承很容易记住。说些不怎么好记住的,如 依赖 ,关联 ,聚合,组合 。依赖用 虚线箭头表示,在代码上是类的方法用到(传入或引用)了 被依赖的类。关联:有名的客户和订单的关系以及公司和员工的关系,
2013-04-23 16:02:35 877
转载 阿里云面试总结
电话问题1:构造和析构函数中的虚函数调用;答案:虚函数可以在构造函数和析构函数中调用,但虚函数此时是静态绑定;而非动态绑定。电话问题2:C++中的异常可不可以是引用;答案:异常可以是引用,并且效率高。电话问题3:TCP状态中的close_wait是什么状态;答案:close_wait状态是被动关闭方的一个状态,此时是半关闭状态,被关闭
2013-04-22 22:16:56 1604
原创 c来实现虚函数
#include typedef struct{ void (*draw)(void*); //虚函数 void (*rotate)(void*);}vtable;typedef struct{ vtable *vptr; //虚表指针}Shape;typedef struct{ vtable *vptr; int x,y,w,h;}Re
2013-04-21 11:30:19 3665
原创 信号和槽的使用
/* 功能,Sigslot入门 日期,2012年9月1日 星期六 环境,win7-32-vs2010 */#include #include #include #include "sigslot.h"using namespace std;using namespace sigslot;class ThreadMutex { private:
2013-04-01 21:01:08 872
原创 linux c++ 限时输入
#include#include#include#include#include#define MAXLINE 4096static void sig_alrm(int);static jmp_buf env_alrm;int main(void){ int n; char line[MAXLINE]; if(signal
2013-03-31 12:30:37 1402
转载 Linux定时器的使用
源自:http://www.cppblog.com/jerryma/archive/2012/01/31/164704.htmlLinux定时器的使用使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进程睡眠
2013-03-30 23:24:03 453
原创 类快排的时间复杂度问题
void swap(int* a,int* b){ *a = *a ^ *b; //a、b中不同位 *b = *a ^ *b; //b = a *a = *a ^ *b; //a = b}void ArrangArray(int* StartPos,int* EndPos){ //Step1先将小于零的放在最左边,大于等于0的数不区分,都放
2013-03-28 14:23:43 1042
转载 关于死锁
http://metc.gdut.edu.cn/os/oscai/chapter2/pages/ch29.htm系统中只有一台打印机R1和一台读卡机R2,可供进程P1和P2共享。R1、R2已经分别分配给P1、P2使用,当P1、P2在不释放资源R1、R2而又同时分别申请R2、R1(如左图),形成环路,这样会产生死锁。产生死锁的必要条件互斥条件进程要求对
2013-03-26 21:44:05 579
转载 c++中的重载(同一类)覆盖(不同类)
Virtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是Ba
2013-03-23 12:43:44 1050
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人