- 博客(34)
- 资源 (20)
- 收藏
- 关注
转载 2020-10-14
前言键盘可以说是我们最常使用的输入硬件设备了,但身为程序员的你,你知道「键盘敲入 A 字母时,操作系统期间发生了什么吗」?那要想知道这个发生的过程,我们得先了解了解「操作系统是如何管理多种多样的的输入输出设备」的,等了解完这个后,我们再来看看这个问题,你就会发现问题已经被迎刃而解了。正文设备控制器我们的电脑设备可以接非常多的输入输出设备,比如键盘、鼠标、显示器、网卡、硬盘、打印机、音响等等,每个设备的用法和功能都不同,那操作系统是如何把这些输入输出设备统一管理的呢?为了屏蔽设备之
2020-10-14 22:06:23
337
转载 漫谈linux文件IO
转载自:http://blog.chinaunix.net/uid-27105712-id-3270102.html在Linux开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从多个角度探索如何提高IO性能。本文尽量用通俗易懂的视角去阐述。不copy内核代码。 阐述之前,要先有个大...
2020-03-28 17:47:08
275
原创 C++实现命令模式
概述:命令模式是一种行为型模式,将一个请求封装成一个对象,从而可以用不同的请求对象进行参数化优点:降低命令请求端和接收端的耦合度新的命令只需要封装成相应的对象,就可以添加到系统中,可扩展性好缺点:命令比较多的情况下,会导致创建过多的命令类使用场景:客户端有多个请求协议的情况下,可以将协议当做命令UML类图:实例: #include <iostrea...
2019-07-21 12:10:14
466
原创 C++实现模板模式
概述:模板模式是一种行为型模式,它用来定义一个算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤优点:在父类中形式化地定义一个算法,而由它的子类来实现细节的处理,在子类实现详细处理算法时并不会改变算法的执行步骤复用了父类中的代码在模板模式中,可以通过子类来覆盖父类的基本方法,不同的子类提供基本方法的不同实现,更换和...
2019-07-13 20:33:30
1107
原创 C++实现策略模式
概述:策略模式是一种行为型模式,它用来定义一系列的算法 ,把它们一个个封装起来,并且使它们可以互换优点:算法之间可以随便互换,扩展性好避免使用多重条件判断语句缺点:策略类会变多,系统会变大客户端必须知道所有的策略类以及它们的区别使用场景:有多重条件判断语句一个系统需要动态地从几个算法中选择一个UML类图:每一种自行车都是一种策略,用户可以...
2019-07-13 18:30:46
763
原创 C++实现适配器模式
概述:适配器模式是一种结构性模式,它将一个类的接口转换成客户需要的接口,使得原来由于接口不兼容而不能一起工作的类可以一起工作优点:可以让没有关联的两个类一起运行提高了类的复用性缺点:过多适配器系统会比较乱,系统的维护性变差使用场景:当想使用已经存在的类,但是这个类的接口不符合客户需求UML类图:用户拿着适配器将两孔充电器转换成三孔实例:#include...
2019-07-13 18:13:24
274
原创 C++实现外观模式
概述:外观模式是结构型模式,它将复杂的子类系统抽象到同一个接口进行管理,外界只需要通过该接口与子类系统进行交互,而不必直接与复杂的子类系统进行交互外观模式降低访问复杂系统的内部子系统的复杂度,简化客户端与之的接口优点:减少客户端与系统之间的耦合度简化客户端代码缺点:不符合开闭原则,扩张功能需要修改客户端和统一接口的代码使用场景:客户端与系统存在最大的依赖性...
2019-07-13 17:54:10
370
原创 C++实现代理模式
概述:代理模式是一种结构型模式,在某些情况下,一个对象不适合或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用优点:代理模式能够将客户与真正被调用的对象分离,降低了耦合度客户端可以通过代理与多个目标对象交互,目标对象的修改和扩展客户端并不感知,扩展性和维护性强缺点:在客户端和真正目标对象之间增加代理对象,请求速度有可能会变慢增加代理会使系...
2019-07-13 17:29:08
839
1
原创 C++实现单例模式(懒汉、饿汉、线程安全和局部静态变量法)
概述单例模式是一个创建型设计模式,一个类只会创建一个对象。由于只有一个对象,所以不能够通过new来创建对象,因此类的构造函数得是private的由于不能够new出对象,所以类内部需要提供一个函数来获取对象,这个函数和对象都是属于类的,而不是对象,因此这个函数和唯一 的对象都得是static的,并且对象是private类型的,函数是public类型的创建单例的基本步骤:1. 构造函数私有化...
2019-07-13 13:32:04
2862
原创 C++实现抽象工厂模式
概述抽象工厂模式是一个创建型设计模式,它针对的是创建产品族,而不是单单一个产品优点封装了产品的创建,使得不需要知道具体是哪种产品,只需要知道是哪个工厂即可可以支持不同类型的产品,使得模式灵活性更强可以非常方便的使用一族中的不同类型的产品缺点结构过于臃肿,如果产品类型较多或产品族较多,会非常难于管理每次如果添加一组产品,那么所有的工厂类必须添加一个方法,这样违...
2019-07-06 15:21:42
1203
原创 C++实现工厂方法模式
概述工厂方法模式是一个创建型设计模式,通过定义一个创建对象的接口,让其子类决定实例化哪一个工厂类,一个工厂类创建一个实例,工厂模式使其创建过程延迟到子类进行。在工厂方法模式中,我们在创建对象时不会对客户端暴露逻辑,并且通过使用一个共同的接口来指向创建的对象。优点符合开闭原则不需要记住具体类名,甚至连具体参数都不用记忆实现了对象创建和使用分离系统的可扩展性也就变得非常好...
2019-07-06 15:03:52
1263
原创 C++实现简单工厂模式
简单工厂模式概述简单工厂模式是用单独的类来创建其它类的实例的一种创建型模式。简单工厂模式实质是工厂类根据传入的参数,来动态决定创建哪一个产品的实例优点客户端与具体实现类解耦不用考虑对象的创建过程缺点简单工厂模式,增加功能是通过修改源代码实现,不符合开闭原则这个类的职责过重,这个类发生问题,会影响很多使用这个工厂的模块使用场景工厂类负责创建的产品类比...
2019-07-06 14:41:22
1986
原创 vim常用快捷键
光标移动:1. H:前 J:下 K:上 L:后2. 移动到行首:03. 移动到行尾:$4. 移动到文件开始位置:gg5. 移动到文件末尾:shift+g6. 跳转到100行:100G删除操作:1. 删除光标后边的字符:x2. 删除光标前的字符:X3. 删除光标当前行:dd4. 删除多行:ndd(n为自然数)5. 删除光标到行首的字符串:d06. 删除光标到行尾...
2019-06-29 13:57:39
597
原创 Makefile入门实例
编写简单的MakeFile文件Makefile概述makefile文件是用来描述整个工程的编译连接规则的,主要描述哪些源文件需要编译以及如何编译,如何生成我们想要的可执行文件。一旦Makefile文件写好,只需要一个make命令,整个工程完全自动编译,极大提高了软件的开发效率。Makefile规则Makefile主要有三大规则:目标、依赖条件和命令目标:是我们要生成的文件依赖:是要生成...
2019-06-29 13:45:50
271
原创 MyBatis自动生成实体类、DAO接口和Mapping映射文件的代码(逆向工程)
MyBatis属于一种半自动的ORM框架,它需要程序员自己编写sql语句和映射文件,但是编写映射文件和sql语句很容易出错,所以mybatis官方提供了Generator生成器,自动生成DAO接口。实体类和Mapping。这个生成器是根据单表自动生成mybatis执行所需要的代码,因此,首先得先创建数据库表,然后再自动生成代码。 1.创建user数据表create table `user`(
2017-11-30 17:18:03
5494
1
原创 在Ubuntu中安装eclipse图文详解
1.首先得先下载JDK和eclipsejdk下载网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html eclipse下载网址:http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/heli
2017-11-30 16:28:16
124944
22
原创 MyBatis ofType和javaType区别
JavaType和ofType都是用来指定对象类型的,但是JavaType是用来指定pojo中属性的类型,而ofType指定的是映射到list集合属性中pojo的类型。pojo类:publicclass User { privateint id; privateString username; private
2017-11-27 11:09:57
56680
14
原创 Spring给bean注入日期属性的方法
通常情况下,我们给Spring的bean注入属性可以通过setter方法和构造器方法给bean注入属性值,这两种方法都需要使用property标签给bean的属性赋值。如下所示,使用setter方法给bean注入Date属性值publicclass DateTest { privateDatedate; publicDate getD
2017-11-24 17:06:55
4729
1
原创 Spring bean在相同xml文件和不同的xml文件中引用的方式
Bean在相同的xml文件中,可以通过ref便签,以及它的local属性来引用它。如下所示:beans xmlns="http://www.springframework.org/schema/beans"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:p="http://www.s
2017-11-23 16:11:58
2349
原创 Spring一个类包含多个构造函数且带的参数相同所存在的注入类型问题
在Spring框架中,当一个类包含多个构造函数带的参数相同,它总是会造成构造函数注入参数类型歧义的问题。看如下一个代码:publicclass Student { privateStringname; privateStringaddress; privateint age; pub
2017-11-23 15:46:59
7818
原创 Spring的@Autowired如何自动装配在bean配置文件中声明的两个类似的bean呢?
Spring的@Autowired注解是如法分辨出两个类似的bean,也就是说如果配置文件中出现两个类似的bean@Autowired注解将无法实现自动装配功能。只有一个bean的实例:public class Customer {@Autowiredprivate Person person;//...}只有一个bean的配置文件如下:http
2017-11-23 10:08:07
7705
原创 maven项目打红叉解决方法
Maven项目打红叉,且在problem出现如下问题时:1 Java compiler level does not match the version of the installed Java project facet.SSMDemo Maven WebUnknownFaceted Project Problem (Java Version Mismatch)2、
2017-11-09 19:11:13
1978
转载 用maven创建web
(原文地址:http://blog.youkuaiyun.com/zhshulin) 目前做的项目使用的是MAVEN来管理jar包,这也是我第一次接触maven,感觉非常好,再也不用一个一个去添加和下载jar包了,直接在maven配置文件中配置就可以了,maven可以帮助我们自动下载。非常方便。之前比较忙没时间整理,现在整理一下,记录下来,加深印象。当然我们使用maven也只是最基本的,很
2017-11-09 16:28:32
158
原创 ubuntu中maven的安装与配置图文详解
1.下载Maven压缩包 下载地址为:http://maven.apache.org/download.cgi2.将Maven压缩包解压到Home目录下 解压命令为:tar zxvf apache-maven-3.5.2-bin.tar.gz 将解压后的文件移动到 /opt/maven路径下 命令为:mv apache-mave
2017-11-06 17:18:18
1085
原创 多态详解
平常问到什么是多态,相信绝大部分人会脱口而出多态不就是方法的重载和重写。但是,多态真的就是方法的重载和重写吗?为了回答这个问题我们先来看一下多态的定义。 1.多态的定义 多态性是指允许不同的子类型的对象对相同的信息作出不同的响应。 2.多态定义的理解 要理解这句话我们得先知道什么是不同的子类型的对象、相同的信息指的是什么和作出不同的响应又指的是什
2017-05-28 10:41:28
365
原创 单例模式与垃圾回收
单例模式创建的对象是否会被JVM回收在单例模式中,如果对象长久没有被使用,该对象是否会被JVM进行垃圾回收呢?在回答这个问题之前得先弄懂JVM会在什么时候对对象进行垃圾回收的。JVM如何判断一个对象需要被回收 JVM判断一个对象是否需要被回收,得对这个对象进行可达性分析。所谓的可达性分析, 就是判断这个对象是否有到达GC Roots的一个引用链,即是否能够到达这个GC
2017-05-22 11:32:04
2616
转载 Java中关于OOM的场景及解决方法
1、OOM for Heap=>例如:java.lang.OutOfMemoryError: Java heapspace【分析】 此OOM是由于JVM中heap的最大值不满足需要,将设置heap的最大值调高即可,参数样例为:-Xmx2G【解决方法】调高heap的最大值,即-Xmx的值调大。2、OOM for Perm=>例如:java.lang.Out
2017-05-20 19:59:34
418
原创 java实现二叉查找树
1.什么是二叉查找树 二叉查找树是应用了链表的灵活性和数组的查找的高效性来实现对数据的操作和查找。 二叉查找树要么是一棵空树,要么就必须具有如下特征: 1.二叉查找树只能有左右两棵子树 2.根节点的值大于左子树的值,小于右子树的值(
2016-10-21 18:11:50
229
原创 基于堆的优先队列和堆排序
1.什么是优先队列 优先队列就是具备优先级的队列,优先级可以用队列里面的值大小表示,也就是值越大表示的优先级越高,所以,优先队列就是可以删除最大元素和插入元素的队列。2.什么是堆 堆又称为二叉堆,二叉堆是一组能够用堆有序的完全二叉树排序的元素,并在数组中按照层次存储(不使用数组的第一个位置)。3.为什么要使用堆来实现优先队列
2016-10-13 20:28:37
762
原创 java main函数的args[]参数
args[]这个参数主要是为程序使用者在命令行状态下与程序交互提供的一种手段。 在命令行中执行java程序的时候使用的是“java 文件名 args参数”。所以args[]是在命令行运行时输入的参数,由于可以有多个参数,所以定义成数组。之所以要把args[]数组定义为String类型是因为java缺省就认为输入的参数都为字符串,之后自己可以进行类型转换。
2016-10-09 11:40:31
636
转载 Java中的==和equals区别
Java中的==和equals区bi 中软国际电子政务部Jeff Chi总结,转载请说明出处。概述: A.==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同。 B.对于String a = “a”; Integer b =1;这种类型的特有对象创建方式,==的时候值是相同的。 C
2014-10-22 18:13:45
197
jboss-marshalling-1.3.0.CR9.jar, jboss-marshalling-serial-1.3.0.CR9.jar
2017-12-12
FPGA常见警告与FPGA错误集锦
2014-04-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人