自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式(六)外观模式(Facade Pattern)

key:外观模式有效的隔离内部复杂的子系统外观模式有效的隔离了内部复杂系统和外部应用请求,封装了对内部子系统的接口调用,使得外部应用的调用变的更加方便、简单。大大降低了外部应用和内部复杂子系统之间的耦合度,为软件系统的后期维护升级提供了很好的弹性。举例如下,一个tank有很多的子系统,例如通信系统,制动系统,武器系统等复杂的子系统,如果不加以外观,那么使用的时候要生成很多的子系统的对象,然后在

2012-07-29 15:06:28 1356

原创 编程珠玑(四)求一个字符串中连续出现的次数最多的子串

这个题目不是编程珠玑上看到的,但是解法用到的数据结构在编程珠玑上有讲到,先归类到这里。求一个字符串中连续出现的次数最多的子串。例如字符串“abababc”,最多连续出现的为ab,连续出现三次。要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复子串为abab。两个题目的解法有些类似,都用到了后缀数组这个数据结构。求一个字符串中连续出现的次数最多的子串,首先生成后缀数组例如

2012-07-27 22:11:40 16495 11

原创 设计模式(五)策略模式(Strategy Pattern)

Key:策略模式定义一系列的算法,将每一种算法封装起来并可以相互替换使用。策略模式定义一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化。策略模式是处理算法不同的变体的一种行为模式,通过在抽象策略中定义算法接口或封装算法标识,实现该抽象粗略的具体子类成为一个单独的算法,即具体策略。策略模式用多个类来区分不同的行为,使用策略模式可以避免暴露复杂的

2012-07-27 15:21:38 1017

原创 设计模式(四)代理模式(Proxy Pattern)

key:代理模式通过提供代理来控制对象的访问。这里的“控制”我理解:一、可以用来控制对象的加载时间,在需要的时候才生成真正的对象,这样可以实现延迟加载,提高系统的效率,例如一个规模较大的系统如果一开始就全部初始化全部所需的资源,那么可能用户等待的时间很长,使得用户体验不好。这个时候可以用代理来实现快速的加载,原理可以参考下面的具体例子。二、可以控制对象的权限,在处理对象之前做一些校验身

2012-07-25 15:51:11 1136

原创 编程珠玑(三)取样问题

要从0~n-1的整数中取出来m(m有几种算法,第一种算法是严格按照概率得到,满足每个数取得的概率相同。原理和抓阄时候一样,先取和后取得并没有概率上的差别,第一个数字0取得的概率为m/n,当rand()%n第二种算法和以前一篇的洗盘算法比较相似,但是并不是严格的每个数字取到的概率为m/n,算法是这样的,先生成一个n维的整数数组,a值为0~n-1,然后生成m个n内的随机整数rand,然后交换a

2012-07-24 21:50:03 1283

原创 编程珠玑(二)寻找一个字符串中最长重复字串

例如字符串"banana"中最长重复字串为ana,这里用到了一个很简单的数据结构字符串数组,其实为一个字符串指针数组,一个char *类型的数组,用字符地址代表每个字符,可以节省空间。算法很简单,求出每个后缀数组,然后对后缀数组进行排序,最后求出相邻的两个数组之间的最大公共字串。#include using namespace std;void common_str(char *s

2012-07-24 16:34:28 1147

原创 设计模式(三)抽象工厂模式(Abstract Factory Pattern)

Key:抽象工厂模式可以产生新的系列产品,并控制产品的生产过程。这里有必要和工厂方法这个设计模式做一些比较。工厂方法和抽象工厂并不是谁更高级,虽然听起来抽象工厂比工厂方法高级点。它们各有长处,各有短处。工厂方法在增加产品种类上比较方便,增加一个具体工厂和一个具体产品即可。而在产生系列产品上比较不方便,可能会造成类的爆炸。而抽象工厂在产生系列产品上比较方便,但是如果增加产品的种类,不得不去在修改

2012-07-24 14:36:17 985

原创 设计模式(二)工厂方法模式(Factory Mothod Pattern)

Key:工厂模式是为了产生任意的对象类型和控制对象的生产过程。如果只是简单的产生任意类型的对象(不同的对象对同一个接口产生多态性),那么只要用多态就可以了,但是如果还想自己定制这个类型对象的生产过程,那么就要用到这个工厂模式了。例如创建对象前进行权限的检查,或者对对象的个数进行限制,或者检查系统的性能根据情况看看是否可以产生对象。这个设计模式有一个抽象的工厂和一个抽象的产品,例如为了产生控

2012-07-24 09:56:13 1204

原创 设计模式(一)简介

“设计模式为在某一个情景下的问题解决方案”。学习使用设计模式可以复用解决方案,而且和UML一样提供一种交流的术语。在做设计的时候有一些基本的原则:面向接口编程、多用组合少用继承、高内聚低耦合等。其实设计模式体现的也是这些原则。按照目的来划分,设计模式可以分为创建型模式、结构型模式和行为型模式三大类。创建型模式用来处理对象的创建过程;结构型设计模式用来处理类或者对象的组合;行为型模式用来对类或对象怎

2012-07-23 16:11:23 635

原创 memmove和ALIGN函数

关于memcpy和memmove函数,linux的man上说的“ The memcpy() function copies n bytes from memory area src to memory area dest.  The memory areas should not overlap.  Use memmove()  if the memory areas do overlap.”就是

2012-07-23 13:50:17 1998

原创 树的镜像

淘宝笔试的一个题目,在网上也没有找到正确的代码,自己写了一个,简单测试了下还行,但不保证完全正确。题目是这样的,一棵树,不一定是二叉树,是一棵很普通的屌丝树,把他镜像反转下。思路必须明确,首先用左孩子右兄弟的存储方法存储这棵树,然后对所有同级别的兄弟反转,也就是所有节点的右边链反转,其实也就是单链表反转的操作。代码中用到了递归,但是要注意的一点是单链表反转while中操作的次数为链表的长度减一的,

2012-07-23 11:54:19 1086

原创 TCP/IP学习(五)ICMP、Ping、Tracerout和Telnet

ICMPICMP协议经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP使用)。一些ICMP报文把差错报文返回给用户进程。ICMP是在IP数据报内被传输的,协议代码为1。所有ICMP报文的前4个字节都是一样的,第一个字节为类型(常见的有0,ping的回显应答。3,目的不可达。8,ping请求回显。11,超时)第二个字节为代

2012-07-22 14:45:18 6025 2

原创 编程珠玑(二)字符串左旋

编程珠玑第二章的内容,有些内容没有看明白作者的意思。下面是向量左旋和变位词的问题。一、将一个n元向量左旋转i个位置。例如当N=8,i=3时,向量abcdefgh旋转为defghabc。这个题目编程之美也有2.17节数组的循环移位和3.1节字符串移位包含的问题。总结下,大概有5种解法,但是编程珠玑上有两种不是很明白,简单介绍下三种算法。第一种算法比较直接,可以写一个每次都向左移动一位,移

2012-07-20 19:20:16 1177

原创 编程珠玑(一)位图

这个问题是编程之美中第一章开篇提到的问题,bitmap排序。大概意思是这样的,要对n个不重复的整数进行排序,每个数小于n(10的7次方)要求内存1M。其实是区号为800开始的电话号码,800不算在内。这个是典型的位图(bitmap,应该是位映射我觉得,估计是好翻译才把map翻译成图的)。下面是代码:#include using namespace std;const int NUM

2012-07-20 11:43:52 1854

原创 TCP/IP学习(四)TCP缓冲区大小及限制

这个问题在前面有的部分已经涉及,这里在重新总结下。主要参考UNIX网络编程。(1)数据报大小IPv4的数据报最大大小是65535字节,包括IPv4首部。因为首部中说明大小的字段为16位。IPv6的数据报最大大小是65575字节,包括40字节的IPv6首部。同样是展16位,但是IPv6首部大小不算在里面,所以总大小比IPv4大一个首部(40字节)。(2)MTU许多网络有一个可由硬

2012-07-19 18:45:52 63155 3

原创 TCP/IP学习(三)TCP连接的建立与终止

先看看TCP的状态变迁图(TCP/IP详解上面的原图,来自Google)下面就图中涉及到的问题做一些说明。  TCP连接的建立与终止 下面是TCP连接建立与终止的时候的时序图:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务

2012-07-18 16:55:03 5227

原创 http协议

HTTP 是一个属于应用层的面向对象的协议,是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP 的连接方式。HTTP 协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP 协议简单,使得HTTP 服务器的程序规模小

2012-07-17 20:53:52 1099

原创 Linux proc机制

proc - process information pseudo-filesystemThe proc filesystem is a pseudo-filesystem which is used as an interface to kernel data structures. It iscommonly mounted at /proc.  Most of it is read-

2012-07-17 10:30:44 2147

原创 C++异常机制

异常就是运行时出现出现的不正常(没说一样),例如系统运行时耗尽了内存或遇到意外的非法输入。C++的异常处理中,需要由问题检测部分抛出一个对象给处理代码,通过这个对象的类型和内容,两个部分能够就出现了什么错误进行通信。C++的异常处理机制包括:throw表达式,错误检测部分使用这种表达式来说明遇到了不可处理的错误,可以说throw引发(raise)了异常。try块(try block),错误

2012-07-17 09:21:28 2295

原创 C++类型转换机制

可以分为隐式类型转换和显示类型转换,显示类型转换也称为强制类型转换(cast),有四种名字命名的强制类型转换操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。隐式的类型转换比较常见,在混合的类型表达式中经常发生。最简单的为整型提升,对于所有比int小的整型,包括char、signed char、unsigned char、shor

2012-07-15 22:25:41 1494

原创 洗牌算法(shuffle)

搜了下,好多讨论,也有好多算法,但是可以确定的是没有最好的方法。还有计算机的伪随机的问题,应该找到一个种子也是唯一的,例如时间,但是如果服务器同时产生种子可能得到的时间也相同,还有就是CPU的温度,显卡的温度等作为种子,但是如果是一台服务器,同一时间可能也相同。其实可以考虑下别的条件,如果是真正的在线游戏的话,可以利用用户的UID来当作种子因为这个是现成的唯一的东西。下面是一种不错的方法,注意交换

2012-07-14 10:25:43 868

原创 二分查找引出的问题

看到http://blog.csdn.net/v_july_v/article/details/7093204上有这个问题,自己写了下,发现好多问题。这几天一直在想递归,感觉这个用递归貌似很好些。于是写出了这样的代码:int my_search1(int *a, int s, int e, int num){ if(s <= e) {

2012-07-12 17:00:03 553

原创 进程(三)守护进程

在操作系统的知识中感觉守护进程所涉及到的知识很多,系统总结下,大多参考apue。一、基本概念守护进程也称精灵进程(daemon)是生存期较长的一种进程。它们常常在系统自举时启动,仅在系统关闭时才终止。它们没有控制终端,都是在后台运行的。可以用命令ps -axj来查看系统的守护进程,下面只列出感兴趣的守护进程,最后两项为系统的ftp和apache服务。 PPID   PID  PGID

2012-07-10 20:28:49 879

原创 进程(二)Linux下进程具体属性

进程数据结构(进程描述符)直接查看下源码(这里是0.11版本的内核)中的文件/include/linux/sched.h,Linux的进程控制块为一个由结构task_struct所定义的数据结构,这个结构就在上面的sched.h中。这个文件中有一行代码:extern struct task_struct *task[NR_TASKS];为记录指向各PCB的指针,指针数组定义于/kern

2012-07-10 19:14:16 4089

用C++实现的Fisher算法

用C++实现的Fisher算法,我的毕设希望有用!

2010-05-09

用C++实现的LDA算法

用C++实现的LDA算法,我的毕设的一小部分,希望有帮助!

2010-05-09

空空如也

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

TA关注的人

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