- 博客(120)
- 资源 (39)
- 收藏
- 关注
原创 OpenStack设计与实现(二)Libvirt简介与实现原理
一、Libvirt简介Libvirt是由Redhat开发的一套开源的软件工具,目标是提供一个通用和稳定的软件库来高效、安全地管理一个节点上的虚拟机,并支持远程操作。它由以下的模块组成:一个库文件,实现管理接口一个守护进程(libvirtd)一个命令行工具(virsh)基于可移植性和高可靠性的考虑,Libvirt采用C语言开发,但是也提供了对其他编程语言的
2016-01-20 01:58:22 5858
原创 OpenStack设计与实现(一)虚拟化
云计算的一个核心思想就是在服务器端提供集中的物理计算资源,这些计算资源可以被分解成更小的单位去独立地服务于不同的用户,也就是在共享物理资源的同时,为每个用户提供隔离、安全、可信的虚拟工作环境,而这一切不可避免地要依赖于虚拟化技术。一、虚拟化技术的概述虚拟化技术对大家来说都不陌生,比如虚拟内存和虚拟服务器等,为了更好的理解虚拟化我们应该首先来了解一下计算机系统的层次结构。每一层都
2016-01-19 15:32:29 8373 4
原创 食堂买饭的启示
每次去食堂买饭总是纠结我究竟应该买多少钱的米饭,经过我的仔细观察,我发现同是卖米饭的大妈,有的人盛的米饭就多,而有的人盛的米饭就少。 食堂的米饭价目表如下: 重量 价格 4毛 200g 6毛 300g 8毛 400g 1块 500g 1块2毛 600g如果你买1块2毛的米饭,那么大妈就会给你盛1碗然后多一点点
2016-01-18 09:54:38 2111 2
转载 UML之时序图详解
作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131动态图概念 : 从静态图中抽取瞬间值的变化描述系统随时间变化的行为, 动态图包括交互图活动图状态图, 这篇博客研究交互图 包括时序图和协作图; – 时序图 : 显示对象之间的关系, 强调对象之间消息的时间顺序, 显示对象之间的交互; – 协作
2015-12-21 19:10:42 80238 12
原创 设计模式之桥梁模式和策略模式的区别
桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。以下是它们的UML结构图。 桥梁模式: 策略模式: 在桥接模式中,Abstraction通过聚合的方式引用Implementor。 举一个例子:策略模式:我要画圆,要实心圆,我可以用solidPen来配置,画虚线圆可以用dashedPen来配置。这是strategy模式。 桥接模式:同样是画圆,
2015-12-16 21:57:53 5277 2
原创 设计模式(十二)责任链模式
一、击鼓传花击鼓传花是一种热闹而又紧张的饮酒游戏。在酒宴上宾客一次坐定位置,由一人击鼓,击鼓的地方与传花的地方是分开的,以示公正。开始击鼓时,花束就开始依次传递,鼓声一落,如果花束在某人手中,则该人就得饮酒。比如说,贾母、贾赦、贾政、贾宝玉和贾环是五个参加击鼓传花游戏的传花者,他们组成一个环链。击鼓者将花传给贾母,开始传花游戏。花由贾母传给贾赦,贾赦传给贾政,贾政传给贾宝玉,贾宝玉传给贾环,贾环再传
2015-12-05 16:42:06 2794 3
原创 设计模式(十一)策略模式
一、打折的烦恼有一家卖书的网站想做一套结算系统,其中的一部分就是计算书的价格,这家网站上的书基本上都有优惠,而且不同种类的书优惠不同,比如漫画书打9折,小说打6折等等,他们刚开始的设计是这样的。方案一:在客户端进行判断if(book is comic) price*=0.9;else if(book is novel) price*=0.6;看起来好像也没什么问题,但是当我们的书种
2015-12-04 00:07:32 3235 2
原创 设计模式(十)适配器模式
一、问题引入说起适配器其实在我们的生活中是非常常见的,比如:如果你到日本出差,你会发现日本的插座电压都是110V的,而我们的手机充电器和笔记本充电器都是220V,所以你到了日本之后就没办法充电了,这时候我们通常会怎么办呢,当然是使用一个升压的变压器将电压升高到220V,这样我们的手机通过一个变压器(适配器)就能使用原本不能使用的插座了。又比如说,有的国家的插座都是三孔的,而我们的手机大部分都是两孔的
2015-12-03 11:44:06 3273 2
原创 设计模式(九)装饰模式(Decorator)
一、咖啡店的故事这次我们借用HeadFirst中的咖啡店的故事来讨论一下装饰模式。咖啡店中有各种种类的咖啡和咖啡需要加的配料。有一家咖啡店为了提高效率打算开发一套咖啡订购系统,用户可以根据清单选择咖啡和咖啡所加的配料,系统可以自动的计算总价格。第一种方案是这个样子的:Beverge是一个抽象类,店内所有的饮料都必须继承自这个类。description用来描述这个是什么类型的饮料例如:Dark Roa
2015-12-02 01:16:14 5062 1
原创 设计模式(八)桥梁模式(Bridge)
一、写在前面之前有读者评论说,前边的文章开头理论性太强了,显得晦涩难懂,会把读者搞晕,谢谢这位读者,同时也希望其他的读者多提意见,帮助我改正提高博客,为了改进之前的问题,今天我们先用例子引入,然后再给出桥梁模式的相关概念。二、问题引入例子1:现需要提供大中小3种型号的画笔,能够绘制5种不同颜色,如果使用蜡笔,我们需要准备3*5=15支蜡笔,也就是说必须准备15个具体的蜡笔类。而如果使用毛笔的话,只需
2015-12-01 17:50:53 14315 8
原创 设计原则(四)依赖倒置原则(DIP)
一、什么是依赖倒置原则一种表述: 抽象不应当依赖于细节;细节应当依赖于抽象。另一种表述: 要针对接口编程,不要针对实现编程。针对接口编程的意思就是说,应当使用Java接口和抽象Java类进行变量的类型声明、参量的类型声明、方法的返回类型声明,以及数据类型的转换等。不要针对实现编程的意思就是说,不应当使用具体Java类进行变量的类型声明、参量的类型声明、方法的返回类型声明,以及数据类型的转换等。二
2015-11-29 12:11:14 6503 3
原创 设计原则(二)里氏替换原则(LSP)
一、什么是里氏替换原则 里氏替换原则的严格表达是:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。换言之,一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能察觉出基类对象和子类对象的区别。比如,假设有两个类,一个是Base类,另一个是Child类,并且
2015-11-29 11:03:47 12254 7
原创 设计模式(七)门面模式(Facade Pattern 外观模式)
一、模式定义门面模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。门面模式又称为外观模式,它是一种对象结构型模式。二、模式动机现代的软件系统都非常复杂,尽管我们已经想尽一切方法将其“分而治之”,把一个系统划分为好几个较小的子系统了,但是仍然可能会存在这样的
2015-11-28 16:14:11 27945 3
原创 设计模式(六)原型模式
一、说说鸣人的影分身话说鸣人听了水木老师的建议偷出了卷轴并且学会了一招禁术:影分身之术。当鸣人使用影分身之术的时候就会有好多个和鸣人一模一样的人出现,就像复制出来的一样,这种影分身之术在面向对象的设计领域里就叫做原型模式。二、什么是原型模式有了上边的鸣人的例子,我们再理解圆形模式的定义应该会更简单了,GOF给它的定义是:用原型实例指定创建对象的种类并且通过拷贝这些原型对象创建新的对象。
2015-11-28 16:13:22 2436 2
原创 设计原则(三)组合复用原则
一、什么是组合复用原则组合复用原则也叫合成/聚合复用原则(CARP),就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。 这个原则的简短表述就是:要尽量使用组合,尽量不要使用继承。二、实现复用的两种方式在面向对象的设计里,有两种基本的方法可以在不同的环境中复用已有的设计和实现,即通过组合或通过继承。组合由于组合可以将已有的对象纳入
2015-11-28 15:55:53 10684 4
原创 设计模式(三)抽象工厂模式
一、模式定义抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。二、产品族和等级结构为了更清晰地理解抽象工厂模式,需要先引入两个概念:产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌
2015-11-26 08:13:02 3594 1
原创 设计模式(四)单例模式
写在前边:辛辛苦苦写了好几天终于能有一篇发到首页上了,其中的艰辛就不必多说了,我不是专家不发能首页,好多文章博乐也都不看,比起首页上那些空洞无味的文章,我觉得我的博客对一部分人能起到帮助的作用,如果您觉得我写的还可以就顶一下吧,您的支持是我最大的动力!一、模式定义单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类
2015-11-25 18:50:33 3122 4
原创 设计模式(五)创建者模式(Builder)
一、模式定义造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。二、模式动机无论是在现实世界中还是在软件系统中,都存在一些复
2015-11-25 18:15:51 6597 4
原创 设计模式(二)工厂方法模式
一、模式定义工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟
2015-11-23 22:27:04 3022 3
原创 设计模式(一)简单工厂模式
一、模式定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式(同属于创建型模式的还有工厂方法模式,抽象工厂模式,单例模式,建造者模式)。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。二、模式结构从上图可以看出
2015-11-23 20:05:09 13501 9
原创 设计原则(一)"开-闭"原则(OCP)
经典力学的基石是牛顿三大定律。而面向对象的可复用设计的第一块基石,便是所谓的”开-闭“原则(Open-Closed Principle,常缩写为OCP)。一、什么是开闭原则“开-闭”原则讲的是:一个软件实体应当对扩展开放,对修改关闭。这一原则最早由Bertrand Meyer提出,英文原文是:Software entities should be open for extension,but clo
2015-11-23 16:16:39 2760 2
转载 Ubuntu下安装MIPS交叉编译器 mips-linux-gcc
1.添加源 以root权限添加下面两行内容到 /etc/apt/sources.list 文件deb http://ftp.de.debian.org/debian squeeze main deb http://www.emdebian.org/debian/ squeeze main 2.在terminal中依次执行下列命令sudo apt-get update sudo apt-
2015-11-16 10:14:16 25374
原创 ubuntu14.04 配置ffmpeg
在安装ffmpeg之前,首先要安装yasm1.安装yasm我用的yasm是yasm-1.2.0.tar.gz这个版本的wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gztar xzvf yasm-1.2.0.tar.gzcd yasm-1.2.0./configuremakesudo make insta
2015-10-31 17:17:25 1740
原创 关于VS2013中To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
在VS2013中开发C程序的时候,经常遇到这个问题To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.比如gets函数,scanf函数在VS2013中都不能直接使用,要转化为VS2013要求的函数,但是这样就不利于将程序移植到其他的平台上,所以不方便。可以在文件的最开始加上这么一句话:#de
2015-10-31 09:53:25 8926 1
转载 VS2013 激活码(注册码,密钥)
Visual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9 Visual Studio Premium 2013 KEY(密钥):FBJVC-3CMTX-D8DVP-RTQCT-92494 Visual Studio Professional 2013 KEY(密钥): XDM3T-W3T3V-MGJWK-8BFVD-GV
2015-10-31 09:37:23 9912 1
转载 MyEclipse10中导入的jquery文件报错(出现红叉叉,提示语法错误)
转自:http://blog.csdn.net/fyq891014/article/details/41694435为了做一个页面特效,导入了一个jquery文件,怎想,myeclipse竟然报错说是语法错误,但是这个js文件我是从官网上下载的,不应该出错才对,百度谷歌之后终于找到了解决办法:选中报错的js文件,右键选择 MyEclipse–>Exclude From Validation ;然后继
2015-10-31 08:31:45 1357
原创 ubuntu设置静态IP
1、设置IP$ sudo vim /etc/network/interfacesauto eth0 iface eth0 inet static (原来是dhcp) address 192.168.1.5 netmask 255.255.255.0 gateway 192.168.1.1 :wq (保存并退出)2、设置DNS,要不然不能通过域名访问地址$ sudo vim /etc/
2015-10-29 20:28:18 2762
转载 ubuntu下环境变量设置(java, eclipse)
一、在Ubuntu中有如下几个文件可以设置环境变量1./etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.2./etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量3.~/.profile:在登录时用到的第三个文件是.profile文件
2015-10-29 11:42:34 1723
原创 ubuntu14.04 mini 中文乱码
在安装安装ubnutu mini时选的中文,但是安装完了之后系统中文就乱码了,所以最好不要用中文的,换回英文的方法:我们需要修改配置文件/etc/default/locale 中文设置为: LANG=”zh_CN.UTF-8” LANGUAGE=”zh_CN:zh” 修改为: LANG=”en_US.UTF-8” LANGUAGE=”en_US:en” 重启之后就好了~
2015-10-27 20:59:49 1016
原创 Firefox如何设置成中文
在ubuntu14.04中自带的Firefox浏览器是英文版,英文不好的童鞋又要着急了,其实很简单就能设置成中文。1、查看自己的Firefox版本号点击右上角的菜单按钮,下边有个小问号,点击进入,找到关于 firefox,就可以查看自己的版本号了。2、安装插件登陆一下的地址:http://ftp.mozilla.org/pub/firefox/releases/ 选择自己的Firefox版本和操作
2015-10-27 15:32:17 23036
原创 ubuntu14.04 配置java jdk环境
第一步:从oracle官网现在jdk,注意带有x64字样的是64位的,只有x86字样的32的位,根据系统的位数选择对应的版本,不知道自己的系统是多少为位的请参考:http://blog.csdn.net/xingjiarong/article/details/46885621oracle jdk 下载界面:http://www.oracle.com/technetwork/java/javase/d
2015-10-25 11:35:47 2400
原创 ubuntu14.04 安装搜狗输入法
下载搜狗拼音输入法 官方网址:http://pinyin.sogou.com/linux/?r=pinyin双击下载的文件安装 可以下载deb的安装包,然后直接双击安装就好了。但是只这样安装搜狗输入法是不能用的,还得需要如下的配置。配置输入法要换fictx输入法,先删除ibus输入法。 sudo apt-get purge ibus sudo apt-get au
2015-10-25 11:09:25 1118
原创 ubuntu14.04 安装wine qq
1、安装包:可以在以下的链接下载:链接: http://pan.baidu.com/s/1qWOQNyk 密码: 29ey2、安装相关依赖:sudo apt-get install wine(处理ubuntu 64位机没有 ia32-lib库的问题) sudo apt-get install g++-multilib sudo apt-get install libncurses5:i386
2015-10-24 16:24:21 2358
原创 ubuntu14.04 增加虚拟内存swap
因为我一般不太用ubuntu系统,所以在安装时一般都是选择默认设置,直接安装,所以说所有硬盘空间都是挂载在/下的,没有分配swap空间,但是在安装MyEclipse时我发现必须要有swap,否则没办法安装,于是就要增加一块新的swap空间。一、查看一下存储空间的使用情况free-m二、建立swap空间dd if=/dev/zero of=/swapadd bs=1024 count=524288以上
2015-10-24 09:13:48 8644
原创 ubuntu14.04 设置界面内容残缺(只剩下一部分了)
我在安装搜狗输入法时卸载了ibus,所以出现了设置界面内容减少的情况,像下面这样:可以执行一下的命令讲设置界面装回来:sudo apt-get install ubuntu-desktop执行后就一切正常了。
2015-10-24 08:55:46 2119
原创 ubuntu14.04 安装Flash Player
新安装的ubuntu系统默认是没有Flash Player的,所以不能播放视频和音乐,所以Flash Player是必不可少的软件,但是安装过程却非常简单。执行如下两条命令:sudo apt-get updatesudo apt-get install flashplugin-nonfree
2015-10-24 01:35:01 2522
原创 java多线程(十)使用线程安全的集合
在多线程中,如果要并发的修改一个数据结构,那么很有可能会破坏这个数据结构。例如,一个线程可能要向一个散列表中插入一个元素,假如在调整各个桶之间的链接关系时被剥夺了控制权,而此时正好有另外一个线程正在遍历链表,则可能会产生异常或者死循环。可以通过锁来保护共享的数据结构,但是选择线程安全的实现作为替代可能更容易一些。一、旧的线程安全的集合任何集合类都可以通过使用同步包装器变成线程安全的:
2015-08-29 08:52:21 38875 1
原创 java多线程(九)阻塞队列
前边的博客中我们介绍了如果用对象锁和条件锁以及更加方便的synchronized关键字来实现多线程的同步和互斥,也许你会觉得使用synchronized关键字已经非常方便了,但是使用者必须真正的理解synchronized的用法,而且要有一定的多线程的编程的经验,否则很难做到全面的考虑问题而造成意想不到的问题。其实在java中还有比
2015-08-28 08:30:16 2555
原创 Windows下配置wampserver
wampserver集成了Apache,MySql,PHP,只需要简单的安装,然后配置一下就ok了,比起三样分别安装要简介的多。wamp的安装比较简单,只需要跟着提示一步一步的向下就可以了,除了修改一下安装目录,其他的都按照默认就可以啦。等到wamp启动后(图标变成绿色),进行以下的两步配置。第一步:左击图标->选择Apache->打开httpd.conf查找其中的Deny fro
2015-08-28 08:28:09 1402
原创 java多线程(八)为什么弃用stop和suspend
初始的java版本中定义了一个stop方法来终止一个线程还定义了一个suspend方法来阻塞一个线程,直到另一个线程调用resume方法。这两个方法在Java SE 1.2之后就被弃用了,因为这两种方法都不安全,下面我们分别来讨论一下为什么不安全和应该怎样做才是安全的。一、stop方法为什么不安全其实stop方法天生就不安全,因为它在终止一个线程时会强制中断线程的执行,不管
2015-08-27 09:12:23 13962 2
jython_installer-2.5.2.jar
2016-02-09
数据库课程设计——物业管理系统
2016-01-19
数据结构课程设计——校园导游
2016-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人