自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 《C++面向对象程序设计-基于Visual C++ 2010》读书笔记

数据类型与基本运算字符串常量按字符书写顺序依次存储在内存中,并在最后存放空字符’\0’表示字符串常量的结束。ASCII字符在内存中占1个字节,而中文字符占2个字节有名常量是指用关键字const修饰的变量。由于该变量只能读取,而不能被修改,所以 也称为常变量。有名常量必须在定义时进行初始化,之后不再允许赋值。例如:const double PI=3.1415926;const ...

2018-06-17 17:22:23 1925

原创 《C#程序设计经典300例》读书笔记

语法基础结构体主要用于创建小型对象,因为在C#中值类型是存储在线程堆栈中的,而线程堆栈的默认大小是1MB。交错数组byte[][] months = new byte[12][];if (month % 2 == 0) { months[month] = new byte[31];} else { months[month] = new byte[30];}...

2018-06-16 23:07:40 3473

原创 《Maven实战》读书笔记--(1)使用intellij idea搭建并配置maven多模块项目

本文使用intellij idea搭建Maven3多模块项目,并进行配置相关配置,以实现项目的构建打包。项目结构multi-module-project是我们的项目名称,其中包含多个模块:mmp-dal模块:数据访问层,提供对原始数据(主要指数据库)的操作mmp-integration模块:提供对第三方服务的调用mmp-commons模块:提供工具类、常量定义等公共服务...

2018-06-07 18:13:48 1166 2

原创 合并StarUML的多个Project文件

平时使用StartUML画类图或者时序图,有时想要将多个Project文件合并为一个文件,下图有两个Project文件我们打开Project1,可以看到Project1里面包含一个Model选择File->Import->Fragment,导入Project2文件可以看到此时Project2位于Project1中我们使用鼠标将Model2拖到Projec...

2018-06-07 00:05:20 3178

原创 《设计模式之禅》读书笔记--(27)行为类模式比较

行为类模式包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。策略模式与命令模式策略模式的意图是封装算法,它认为“算法”已经是一个完整的、不可拆分的原子业务,即其意图是让这些算法独立,并且可以相互替换,让行为的变化独立于拥有行为的客户;而命令模式则是对动作的解耦,把一个动作的执行分为执行对象、执行行为,让两者相...

2018-06-03 18:09:18 244

原创 《设计模式之禅》读书笔记--(26)结构类模式比较

结构类模式包括适配器模式、桥梁模式、组合模式、装饰模式、门面模式、享元模式和代理模式。它们都是通过组合类或对象产生更大结构以适应更高层次的逻辑需求。代理模式与装饰模式装饰模式就是代理模式的一个特殊应用,两者的共同点是都具有相同的接口,不同点则是代理模式着重对代理过程的控制,而装饰模式则是对类的功能进行加强或减弱,它着重类的功能变化。代理模式是把当前的行为或功能委托给其他对象执行,代理类...

2018-06-03 18:02:18 208

原创 《设计模式之禅》读书笔记--(19)备忘录模式

定义备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。类图Originator 发起人角色记录当前时刻的状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。Memento 备忘录角色负责存储Originator发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。Ca...

2018-06-03 17:49:33 187

原创 《设计模式之禅》读书笔记--(18)门面模式

定义门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行,门面模式提供一个高层次的接口,使得子系统更易于使用。类图Facade 门面角色客户端可以调用这个角色的方法,此角色知晓子系统的所有功能和责任,一般情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去,也就是说该角色没有实际的业务逻辑,只是一个委托类。Subsystem 子系统角色可以同...

2018-06-03 16:32:42 161

原创 《设计模式之禅》读书笔记--(17)观察者模式

定义观察者模式定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。类图Subject 被观察者被观察者必须能够动态地增加、取消观察者,一般是抽象类或实现类,仅仅完成作为被观察者必须实现的职责:管理观察者并通知观察者。Observer 观察者观察者接收到消息后,即进行update操作,对接收到的信息进行处理。Co...

2018-06-03 16:05:14 301

原创 《设计模式之禅》读书笔记--(16)组合模式

定义组合模式将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。类图Component 抽象构件角色定义参加组合对象的共有方法与属性,可以定义一些默认的行为或属性。Leaf 叶子构件叶子对象其下没有分支,是遍历的最小单位。Composite 树枝构件树枝对象的作用是组合树枝节点和叶子节点形成一个树形结构。实现...

2018-06-03 14:54:55 167

原创 《设计模式之禅》读书笔记--(15)迭代器模式

定义迭代器模式提供一种方法访问一个容器对象中各个元素,而又不需要暴露该对象的内部细节。类图Iterator 抽象迭代器抽象迭代器负责定义访问和遍历元素的接口,基本上是有固定的3个方法:first()获得第一个元素,next()访问下一个元素,isDone()是否已经访问到底部。ConcreteIterator 具体迭代器具体迭代器实现迭代器接口,完成容器元素的遍历。...

2018-06-03 14:13:04 164

原创 CentOS6系统LNMP环境搭建及WordPress安装

1. 安装nginx查询nginx安装包yum list nginx发现没有nginx的rpm包,所以需要先从http://nginx.org/packages/centos/6/noarch/RPMS/更新rpm依赖库rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6...

2018-05-07 10:21:14 877

原创 《设计模式之禅》读书笔记--(14)适配器模式

定义适配器模式将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作,通常用来解决接口不相容的问题。类图Target 目标角色该角色定义把其他类转换为何种接口,也就是我们期望接口。Adaptee 源角色它是已经存在的、运行良好的类或对象,经过适配器角色的包装,从而转换成目标角色。Adapter 适配器角色适...

2018-05-04 21:54:29 190

原创 《设计模式之禅》读书笔记--(13)策略模式

定义定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。类图Context 封装角色也叫上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。Strategy 抽象策略角色策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性。ConcreteStrategy 具体策略角色实现抽象策略中的操作,包含...

2018-03-27 13:28:02 203

原创 《设计模式之禅》读书笔记--(12)装饰模式

定义装饰模式可以动态地给一个对象添加一些额外的职责。类图Component 抽象构件Component是一个接口或者是抽象类,就是定义我们最核心的对象,也就是最原始的对象。ConcreteComponent 具体构件ConcreteComponent是最核心、最原始、最基本的接口或抽象类的实现。Decorator 装饰角色一般是一个抽象类,实现接口或者抽象方...

2018-03-26 13:51:22 179

原创 《设计模式之禅》读书笔记--(25)创建类模式比较

创建类模式包括工厂方法模式、建造者模式、抽象工厂模式、单例模式和原型模式,它们都能够提供对象的创建和管理职责。其中,单例模式是要保持在内存中只有一个对象,原型模式是要求通过复制的方式产生一个新的对象,这两个不容易混淆,剩下的工厂方法模式、抽象工厂模式和建造者模式有较多的相似性。工厂方法模式与建造者模式工厂方法模式注重的是整体对象的创建方法,生产出的产品应该具有相似的功能和架构,而不需要考虑...

2018-03-25 18:23:56 172

原创 《设计模式之禅》读书笔记--(11)责任链模式

定义责任链模式通过将多个对象连成一条链,并沿着这条链传递请求,直到有对象处理它为止,这样可以避免请求的发送者与接受者之间的耦合关系。类图抽象处理者实现三个职责:一是定义一个请求的处理方法handleMessage,唯一对外开放;二是定义一个链的编排方法setNext,设置下一个处理者;三是定义具体请求者必须实现的两个方法:定义自己能够处理的级别getHandlerLevel和具...

2018-03-21 13:45:18 201

原创 《设计模式之禅》读书笔记--(10)命令模式

定义命令模式将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类图Receiver 接收者角色该角色就是干活的角色,命令传递到这里是应该被执行的。Command 命令角色需要执行的所有命令都在这里声明。Invoker 调用者角色接收到命令,并执行命令。实现通用Receiver类:...

2018-03-20 12:37:09 173

原创 《设计模式之禅》读书笔记--(9)中介者模式

定义中介者模式用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。类图Mediator 抽象中介者角色抽象中介者角色定义统一的接口,用于各同事角色之间的通信。ConcreteMediator 具体中介者角色具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色。Colle...

2018-03-19 11:12:55 186

原创 《设计模式之禅》读书笔记--(24)桥梁模式

定义将抽象和实现解耦,使得两者可以独立地变化。类图Abstraction 抽象化角色定义出该角色的行为,同时保存为一个对实现化角色的引用,一般是抽象类。Implementor 实现化角色定义角色必需的行为和属性,一般是接口或抽象类。RefinedAbstraction 修正抽象化角色引用实现化角色对抽象化角色进行修正。ConcreteImplemento...

2018-03-18 15:18:15 197

原创 《设计模式之禅》读书笔记--(23)享元模式

定义使用共享对象可有效地支持大量的细粒度的对象,我们可以将这些对象的信息分为两个部分:内部状态与外部状态。内部状态是对象可共享出来的信息,存储在享元对象内部并且不会随环境改变而改变,它可以作为一个对象的动态附加信息,不必直接储存在具体某个对象中,属于可以共享的部分;外部状态是对象得以依赖的一个标记,是随环境改变而改变的、不可以共享的状态,它是一批对象的统一标识,是唯一的一个索引值。...

2018-03-17 21:31:37 176

原创 《设计模式之禅》读书笔记--(22)解释器模式

定义给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。类图AbstractExpression 抽象解释器抽象解释器是生成语法集合的关键,每个语法集合完成指定语法解析任务,它是通过递归调用的方式,最终由最小的语法单元进行解析完成。具体的解释任务由各个实现类完成,具体的解释器分别由TerminalExpression和Nonterm...

2018-03-17 21:30:48 260

原创 《设计模式之禅》读书笔记--(8)原型模式

定义原型模式是指用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,简而言之,就是不通过new关键字来产生一个对象,而是通过对象复制来实现。类图实现实现一个接口,然后重写clone方法,就完成了原型模式:package com.sigalhu.prototypepattern;public class PrototypeClass implement...

2018-03-17 10:33:22 219

转载 Java泛型详解[转]

原文:Java泛型详解引言泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除。泛型类我们首先定义一个简单的Box类:public class Box { private String object; public void set(St...

2018-03-16 20:11:12 134

原创 《设计模式之禅》读书笔记--(7)代理模式

定义代理模式为其他对象提供一种代理以控制对这个对象的访问。类图Subject 抽象主题角色Subject抽象主题角色可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求。RealSubject 具体主题角色RealSubject具体主题角色是业务逻辑的具体执行者。Proxy 代理主题角色Proxy代理主题角色负责对真实角色的应用,把所有抽象主题类...

2018-03-14 17:31:05 135

原创 《设计模式之禅》读书笔记--(6)建造者模式

定义建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类图Product 产品类通常实现了模板方法模式,也就是有模板方法和基本方法。Builder 抽象建造者规范产品的组建,一般是由子类实现。ConcreteBuilder 具体建造者实现抽象类定义的所有方法,并返回一个组建好的对象。Director 导演类负责安排已...

2018-03-14 11:24:32 324

原创 《设计模式之禅》读书笔记--(5)模板方法模式

定义模板方法模式要求定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通常,算法框架可使用抽象类定义,其中,可以有一个或几个实现对基本方法进行调度的具体方法,也就是一个框架,叫做模板方法;而由子类实现,并被模板方法调用的方法叫做基本方法。类图实现抽象模板类:package com.sigalhu.te...

2018-03-13 20:07:10 154

原创 《设计模式之禅》读书笔记--(4)抽象工厂模式

定义抽象工厂模式要求为创建一组相关或相互依赖的对象提供一个接口,而且无须指定它们的具体类。类图实现抽象产品类:package com.sigalhu.abstractfactory;public abstract class AbstractProductA { //每个产品共有的方法 public void shareMethod(){ ...

2018-03-13 16:51:13 164

原创 《设计模式之禅》读书笔记--(3)工厂方法模式

定义工厂方法模式一般定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。类图在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义;Creator为抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的。实现抽象产品类:package com.si...

2018-03-13 15:54:41 166

原创 《设计模式之禅》读书笔记--(2)单例模式

定义单例模式要求一个类只能生成一个对象。开发者可以通过定义一个私有访问权限的构造函数,来避免被其他类new出一个对象,其他类对该类的访问可以通过getInstance获得同一个对象。类图实现单例模式根据申请对象的时机可分为饿汉式单例与懒汉式单例,其中,饿汉式单例在程序启动就申请对象;懒汉式单例在其他类获取单例时申请对象。需要注意的是,懒汉式单例还需要考虑多线程同时调用get...

2018-03-13 11:28:23 177

原创 《设计模式之禅》读书笔记--(21)状态模式

定义当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。类图State 抽象状态角色接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。ConcreteState 具体状态角色每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理,通俗地说,就是本状态下要做的事情,以及本状态如何过渡到其他状态。Context 环境角色定...

2018-03-12 22:48:39 159

原创 《设计模式之禅》读书笔记--(20)访问者模式

定义封装一些作用于某种数据结果中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。类图Visitor 抽象访问者抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象是可以被访问的。ConcreteVisitor 具体访问者它影响访问者访问到一个类后该怎么干,要做什么事。Element 抽象元素...

2018-03-12 21:38:19 170

原创 《设计模式之禅》读书笔记--(1)设计原则

单一职责原则单一职责原则要求在设计类、接口或方法时要保证功能的单一。例如不要将描述用户信息与行为的方法放到一个类或者接口中,而应该将按职责进行划分。其中,将用户的信息抽取为BO(Business Object,业务对象);将用户的行为抽取为Biz(Business Logic,业务逻辑)。但在这里最好还将BO与Biz抽象为接口,然后在用一个类去实现这些单一职责的接口,而不应该针对每个接口都设计...

2018-03-12 16:13:13 166

原创 Java的内省机制

内省(Introspector)是Java语言对JavaBean类属性、事件的一种缺省处理方法。JavaBean是一种特殊的类,遵守JavaBean的规范,即提供默认构造方法,同时所有的属性都是私有的,且每个属性都有公开的读取和设定的方法(getter和setter),这些方法都遵守命名的规范。例如类Person中有属性name,可以通过getName/setName来得到其值或者设置新的值。...

2018-03-12 11:16:10 179

原创 Java的反射机制

定义Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。Java反射机制容许程序在运行时加载、探知、使用编译期间完全未知的类。换言之,Java可以加载一个运行时才得知名称的类,获得其完整结构。功能在运行时判断任意一个对象所...

2018-03-09 17:06:11 126

转载 C++之operator关键字[转]

原文:C++ operator关键字(重载操作符)operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。为什么使用操作符重载?对于系统的所有操作符,一般情况下,只支持基本数据类型和标准库中提供的class,对于用户自己定义class,如果想支持基本操作,比如比较大小,判断是否相等,等等,则需要用户自己来定义关于这个操作符的具体实现

2017-08-16 11:48:19 417

原创 C++之friend关键字

友元提供了不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。友元的声明以关键字friend开始,只能出现在类定义的内部。因为友元函数是类外的函数,所以它的声明可以放在类的私有段或公有段且没有区别。友元的正确使用能提高程序的运行效率,但同时也破坏了类的封装性和数据的隐藏性,导致程序可维护性变差。普通函数友元

2017-08-16 10:11:21 898

转载 为什么多线程读写shared_ptr要加锁?[转]

原文:为什么多线程读写 shared_ptr 要加锁?shared_ptr的引用计数本身是安全且无锁的,但对象的读写则不是,因为shared_ptr有两个数据成员,读写操作不能原子化。shared_ptr的线程安全级别和内建类型、标准库容器、std::string一样,即:一个shared_ptr对象实体可被多个线程同时读取两个shared_ptr对象实体可以被两个线程同时写入如果要从多个线程

2017-08-15 02:17:41 1151

转载 shared_ptr线程安全性分析[转]

原文:shared_ptr线程安全性分析本文基于shared_ptr的源代码,提取了shared_ptr的类图和对象图,然后分析了shared_ptr如何保证文档所宣称的线程安全性。本文的分析基于boost 1.52版本,编译器是VC 2010。shared_ptr的线程安全性boost官方文档对shared_ptr线程安全性的正式表述是:shared_ptr对象提供与内置类型相同级别的线程安全性。

2017-08-13 02:05:07 930

转载 最长回文子串:Manacher算法[转]

原文:Manacher 算法背景给定一个字符串,求出其最长回文子串。例如:s="abcd"; //最长回文长度为 1s="ababa"; //最长回文长度为 5s="abccb"; //最长回文长度为 4,即 bccb以上问题的传统思路大概是,遍历每一个字符,以该字符为中点向两边查找。其时间复杂度为O(n2)O(n^2),很不高效。而Manacher算法可以把时间复杂度提升到O(n)O(

2017-08-11 11:01:39 249

空空如也

空空如也

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

TA关注的人

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