Java
文章平均质量分 87
Licheng Xu
Master student of University Malaya - Software Engineering
展开
-
Java网络编程:实战Scoket与ServerSocket
Java网络编程:实战Scoket与ServerSocket 一、Scoket与ServerSocketjava中使用网络编程的话可以使用Scoket或者是ServerSocketServerSocket.class是用来代表服务器端的Socket,需要bind绑定端口,阻塞式调用accpet函数,等待客户端来建设连接,Scoket.class是用来代表客户端的Socket,可以要求与...原创 2019-11-10 21:45:35 · 207 阅读 · 0 评论 -
Java网络编程:同异步、是否阻塞与网络通信线程池
Java网络编程:同异步、是否阻塞与网络通信线程池 一、同步与异步、阻塞与非阻塞1.1 同步通信机制男孩向心仪的女孩表白,女孩子可能会陷入沉思,她要好好考虑是否接收表白,男孩子只需要默默地等待,这就类似于同步的通信机制,发出表白的男孩子就是发出请求的一方,在同步通信机制下,接收到请求的一方它需要花费时间去处理请求,处理完毕做出结束,整个通信才会返回1.2 异步通信机制女孩可能需要几天...原创 2019-11-09 22:24:05 · 191 阅读 · 0 评论 -
Java网络编程:解读java.io与Socket概述
Java网络编程:解读java.io与Socket概述 一、javaio之字节流1.1 网络编程的本质是进程间的通信比如说客户端浏览器进程想从服务器端接收不同的网页、文件等等,就需要想服务器发送请求,服务器端接收到请求就返回数据。这里便是两个进程之间数据的交换1.2 通信的基础是IO模型如果我们站在一个应用进程的角度来看,假设我们有个数据源,需要把数据源输入到应用进程里,对于应用来说这...原创 2019-11-08 22:53:55 · 1093 阅读 · 0 评论 -
Java网络编程:网络层解析与协议
Java网络编程:网络层解析与协议基本知识点 一、URL解析http://www.google.com:80/search?q=test&safe=strict协议:http协议,说明我们与服务器交换的数据都将要符合http协议域名/IP地址:www.baidu.com,声明我们想要跟网络上哪一台主机进行交互端口:80,说明需要跟这台主机的哪个服务进程进行数据交换...原创 2019-11-07 14:03:28 · 533 阅读 · 0 评论 -
Spring MVC:拦截器开发与控制器接收各类请求参数
Spring MVC组件开发 一、拦截器(p417)1.1 拦截器的定义SpringMVC的拦截器与过滤器的区别:拦截器是使用JDK动态代理实现的,拦截的是应调用方法的拦截过滤器是使用Filter实现的,拦截的是request对象Spring MVC可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,它可以在进入处理器之前做一些操作,或者在处理器完成后进行操作...原创 2020-05-22 23:01:57 · 2226 阅读 · 0 评论 -
SpringMVC:组件介绍与流程,结合例子简单使用
SpringMVC 一、SpringMVC组件与流程(p372)1.1 组件[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NOMVSTyl-1571110550122)(F:\博客截图\springMVC.PNG)]DispatcherServlet:前置控制器,整个流程控制的核心,控制其他组件的执行并进行调度,降低组件之间的耦合性HandlerMap...原创 2019-10-15 11:36:43 · 102 阅读 · 0 评论 -
JAVA设计模式:桥接模式
桥接模式Bridge 模式又叫做桥接模式,是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。 一、结构与角色Abstraction相当于例子中的CarRefin...原创 2019-09-29 15:56:43 · 99 阅读 · 0 评论 -
JAVA设计模式:适配器模式
适配器模式Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式。比如我们在使用笔记本电脑,它就有个电源适配器,笔记本工作电压只要20伏,而家电为220伏,两者不可以直接相连,则需要使用电源适配器 一、结构与角色1.1 通过继承实现适配器客户端调用的时候requiredMethod,而组件提供的是oldMethod,采用继承的方法实...原创 2019-09-29 19:37:03 · 92 阅读 · 0 评论 -
JAVA设计模式:解释器模式
解释器模式Interpreter模式也叫解释器模式,是行为模式之一,它是一种特殊的设计模式,它建立一个解释器,对于特定的计算机程序设计语言,用来解释预先定义的文法。简单地说,Interpreter模式是一种简单的语法解释器构架。 一、结构与角色Context:解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等。AbstractExpression:解释器抽象类。C...原创 2019-09-29 23:03:53 · 75 阅读 · 0 评论 -
JAVA设计模式:状态模式
状态模式State模式也叫状态模式,是行为设计模式的一种。State模式允许通过改变对象的内部状态而改变对象的行为,这个对象表现得就好像修改了它的类一样。 一、结构与角色状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况,例如下面判断hour。把状态的判断逻辑转译到表现不同状态的一系列类当中,可以把复杂的判断逻辑简化。Context:用户对象,拥有一个State类...原创 2019-10-01 18:25:49 · 85 阅读 · 0 评论 -
JAVA设计模式:组合模式
组合模式Composite模式也叫组合模式,是构造型的设计模式之一。通过递归手段来构造树形的对象结构,并可以通过一个对象来访问整个对象树。 一、结构与角色Component (树形结构的节点抽象),即接口或者抽象类为所有的对象定义统一的接口(公共属性,行为等的定义)提供管理子节点对象的接口方法[可选]提供管理父节点对象的接口方法Leaf (树形结构的叶节点)Comp...原创 2019-09-27 20:12:51 · 89 阅读 · 1 评论 -
JAVA设计模式:外观模式
外观模式Facade模式也叫外观模式,Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。 一、结构与角色Package1、Package2、Package3为3个类库或者3个子系统,外观Facade包含子系统的功能,外观Facade的doSomething方法再供用户调用。Facade:为调用方法定义简单...原创 2019-09-27 20:12:01 · 83 阅读 · 0 评论 -
JAVA设计模式:代理模式
代理模式Proxy模式又叫做代理模式,是构造型的设计模式质之一,它可以为其他对象提供一种代理以控制对这个对象的访问,所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中,进行某些特别的处理例如:买书的过程可以被称为代理模式,书一般都是由专门的出版社(被代理对象),但是我们买书的时候一般都不会去出版社那里直接购买,而是去通...原创 2019-09-26 11:50:47 · 83 阅读 · 0 评论 -
JAVA设计模式:享元模式
享元模式FlyWeight模式也叫享元模式,是构造型模式之一,它通过与其他类似对象共享来减小内存占用。 一、结构与角色抽象享元角色:所有具体享元类的父类,规定一些需要实现的公共接口具体享元角色:抽象享元角色的具体角色类,并实现了抽象享元角色规定的方法享元工程角色:负责创建和管理享元角色 二、示例代码当我们需要拼写applause的时候,里面是两个a两个p,如果采用单纯new...原创 2019-09-23 21:17:13 · 56 阅读 · 0 评论 -
JAVA设计模式:观察者模式
观察者模式Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态,提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。Spring中的观察者模式:https://cloud.tencent.com/developer/article/1449255 一、结构与角色Subject被观察者被观察...原创 2019-09-23 20:06:41 · 74 阅读 · 0 评论 -
JAVA设计模式:策略模式
策略模式策略模式是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定。该模式主要用来平滑地处理算法的切换。 一、结构strategy包含一个算法接口,具体的实现交给子类ConcreteStrategy A与B,例如算法接口为加密,则A可以为对称加密算法,B为非对称加密算法,通过Conte...原创 2019-09-23 18:52:46 · 108 阅读 · 0 评论 -
Java线程:synchronized底层实现原理,即可其与RenntrantLock的区别
synchronized底层实现原理 一、实现synchronized的基础1.1 java对象头java对象在内存中的布局:对象头、实例数据、对齐填充虚拟机位数头对象结构说明32/64 bitMark Word默认存储对下那个的hashcode,分代年龄,锁类型,锁标志位等信息,实现轻量级锁与偏向锁的关键32/64 bitClass Metadata ...原创 2019-09-11 16:39:02 · 350 阅读 · 0 评论 -
JAVA设计模式:中介者模式
中介者模式Mediator模式是行为模式之一,在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用。 一、结构与角色mediator:中介者类的抽象父类concreteMediator:具体的中介者类,持有concreteColleague的引用colleague:关联类的抽象...原创 2019-09-30 11:32:54 · 84 阅读 · 0 评论 -
JAVA设计模式:职责链模式
职责链模式Chain of Responsibility(CoR)模式也叫职责链模式或者职责连锁模式,是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式。 一、结构与角色Handler:处理类的抽象父类,存在对自身的引用,例如组装车中,车头组装完之后自动调用车身组装,所以需要持有它的引用concre...原创 2019-09-30 13:54:46 · 106 阅读 · 0 评论 -
JAVA设计模式:迭代模式
迭代模式Iterator模式也叫迭代模式,是行为模式之一,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator(遍历)按顺序进行遍历访问的设计模式。 一、不使用迭代模式的应用如果不使用Iterator模式,会存在什么问题。1.1由容器自己实现顺序遍历。直接在容器类里直接添加顺序遍历方法1.1.1 Bookpublic class Book { private S...原创 2019-10-01 00:21:39 · 103 阅读 · 0 评论 -
Spring:Spring的基于AspectJ的AOP开发
Spring的基于AspectJ的AOP开发 一、AspectJ简介AspectJ是一个基于Java语言的AOP框架Spring2.0以后新增了对AspectJ切点表达式支持@AspectJ是AspectJ1.5新增功能,通过JDK5注解技术,允许直接在Bean类中定义切面新版本Spring框架,建议使用AspectJ方式来开发AOP使用AspectJ需要导入Spring AOP和...原创 2019-10-11 18:29:01 · 207 阅读 · 0 评论 -
JAVA设计原则:迪米特法则
迪米特法则迪米特法则(Law of Demeter )又叫做最少知识原则,也就是说,一个对象应当对其他对象尽可能少的了解。狭义的解释为,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一类的某一个方法的话,可以通过第三者转发这个调用。 一、和陌生人讲话这里someone,直接跟stranger进行通信,通过public void play(St...原创 2019-10-06 18:01:17 · 186 阅读 · 0 评论 -
JAVA设计原则:依赖倒转原则
依赖倒转原则传统过程传统的过程式设计倾向于使高层次的模块依赖于低层次的模块,抽象层依赖于具体的层次。例如上图中的,高级业务逻辑依赖中层模块,中层模块依赖于底层模块。依赖倒转实现层来依赖抽象层,抽象不应该依赖于细节,细节应该依赖于抽象,高层模块不依赖底层模块,两者都依赖抽象。 一、示例:组装电脑1.1 MainBoard//主板的抽象类public abstract clas...原创 2019-10-06 14:50:07 · 155 阅读 · 0 评论 -
JAVA设计原则:里氏代换原则
里氏代换原则一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类和子类对象的区别。也就是说,在软件里面,把父类替换成它的子类,程序的行为没有变化。一个软件实体如果使用的是一个子类的话,那么它不能适用于其父类。 一、里氏代换原则例子1.1 Personpublic class Person { public void display(){ ...原创 2019-10-06 02:13:30 · 927 阅读 · 0 评论 -
JAVA设计原则:单一职责原则
单一职责原则就一个类而言,应该仅有一个引起它变化的原因。例如一台山寨手机的功能:拍照、摄像、手机游戏、网络摄像头、GPS、炒股等等,虽然功能多,但是每一个功能都不强。每一个职责都是一个变化的轴线,当需求变化时会反映为类的职责的变化。如果一个类承担的职责多于一个,那么引起它变化的原因就有多个。一个职责的变化甚至可能会削弱或者抑制类完成其他职责的能力,从而导致脆弱的设计。 一、单一职责原则示例...原创 2019-10-06 00:44:59 · 239 阅读 · 0 评论 -
JAVA设计原则:开放封闭原则
开放封闭原则开放封闭原则(Open-Closed Principle):一个软件实体应当对扩展开放,则修改关闭。在设计一个模块时,应当使得这个模块可以在不被修改的前提下被扩展。也就是说,应当可以在不必修改源代码的情况下修改这个模块的行为。设计的目的便在于面对需求的改变而保持系统的相对稳定,从而使得系统可以很容易的从一个版本升级到另一个版本。 一、怎么做到开放封闭原则实际上,绝对封闭的系统是...原创 2019-10-05 01:22:23 · 785 阅读 · 0 评论 -
JAVA设计模式:访问者模式
访问者模式Visitor模式也叫访问者模式,是行为模式之一,它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的情况下,增加新的操作。比如有一个公园,有一到多个不同的组成部分;该公园存在多个访问者:清洁工A负责打扫公园的A部分,清洁工B负责打扫公园的B部分,公园的管理者负责检点各项事务是否完成,上级领导可以视察公园等等。也就是说,对于同一个公园,不同的访问者有不同的行为操作,而且...原创 2019-10-04 01:00:11 · 81 阅读 · 0 评论 -
JAVA设计模式:命令模式
命令模式Command模式也叫命令模式 ,是行为设计模式的一种。Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数。 一、应用场景在面向对象的程序设计中,一个对象调用另一个对象,一般情况下的调用过程是:创建目标对象实例、设置调用参数、调用目标对象的方法。但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门的类称作command类。...原创 2019-10-02 12:15:17 · 82 阅读 · 0 评论 -
JAVA设计模式:备忘录模式
备忘录模式Memento模式也叫备忘录模式,是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。 一、结构与角色如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。一个类需要保存它的对象的状态(相当于Originator角色),例如下面例子的person设计一个类,...原创 2019-10-01 16:05:31 · 84 阅读 · 0 评论 -
JAVA设计模式:模板方法模式
模板方法模式Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。Template Method模式一般应用在具有以下条件的应用中:具有统一的操作步骤或操作过程具有不同的操作细节存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同 一、...原创 2019-10-01 13:37:31 · 157 阅读 · 0 评论 -
Java线程:synchronized互斥锁,结合代码探究对象锁与类锁的区别
Java线程:synchronized 一、synchronized1.1 线程安全问题的主要诱因存在共享数据,即临界资源存在多条线程共同操作这些共享数据所以我们程序代码需要保证同一时刻有且只有一个线程在操作共享数据,而其他的线程必须等待该线程处理完数据后再对共享数据操作 1.2 互斥锁特性synchronized符合互斥锁特性,特别注意,synchronized锁的不是代码...原创 2019-09-09 21:35:06 · 312 阅读 · 1 评论 -
Java底层学习:内存模型、调优参数、堆和栈的区别、元空间与堆与线程独占部分间的联系、intern()方法在不同JDK6与6+比较
Java底层知识JVM二 一、Java的内存模型-JDK8线程私有:程序计数器:字节码指令虚拟机栈:Java方法本地方法栈:native方法线程共享:MetaSpace:名称为元空间,类加载信息常量池:字面量和符号引用量堆:数组和类对象1.1 程序计数器Program Counter Register是当前线程锁执行的字节码行号指示器,逻辑地址改变...原创 2019-09-09 18:50:59 · 445 阅读 · 0 评论 -
Java底层学习:平台无关性的实现、JVM加载class文件、反射、ClassLoader、loadClass与forName的区别。
一、Java:Compile Once,Run Anywhere的实现1.1 代码例子public class ByteCodeSample { public static void main(String[] args){ int i = 1; int j = 1; i++; j++; System.ou...原创 2019-09-08 16:17:58 · 132 阅读 · 0 评论 -
JAVA设计模式:简单工厂模式
简单工厂模式简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式,通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。一、模式中包含的角色及其职责1.1 工厂角色(Creator)简单工厂模式的核心,它负责实现创建所有实例的内部逻辑,工厂类可以被外界直接调用,创建所需的产品对象1.2 抽象角色(Product)简单工厂模式所创建的所有对象的父类,它负责描述所有...转载 2019-07-25 23:36:06 · 79 阅读 · 0 评论 -
JAVA设计模式:装饰模式
装饰模式一、定义装饰(Decorator)模式又叫做包装模式,通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案二、装饰模式的角色和职责抽奖组件角色:一个抽象接口,是被装饰类和装饰类的父接口,实例代码中的Car具体组件角色:为抽象组件的实现类,实例代码中的RunCar抽象装饰角色:包含一个组件的引用,并定义了与抽象组件一致的接口,实例代码中的CarDecorato...原创 2019-08-03 13:31:57 · 103 阅读 · 0 评论 -
JAVA设计模式:建造者模式
建造者模式一、定义Builder模式也叫做建造者模式或是生成器模式,Builder模式是一种对象创建型模式之一,用来隐藏符合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象二、代码实例2.1 Housepublic class House { //地板 private String floor; //墙 ...原创 2019-08-03 00:01:38 · 101 阅读 · 0 评论 -
JAVA设计模式:单例模式
单例模式一、什么是单例模式单例模式是一种对象创建型模式,使用单例模式可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。GoF对单例模式的定义是:保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。二、为什么要使用单例模式在应用系统中,我们常常有以下需求:在多个线程之间,比如servlet环境,共享同一个资源或者操作同一个对象...转载 2019-07-24 23:24:02 · 82 阅读 · 0 评论 -
Spring:Bean的管理学习笔记
1:通过Spring工厂类来获取Bean的实例,在Spring IOC简单例子中用到了applicationContext,接口为ApplicationContext,具体的为FileSystemXmlApplication与ClassPathXmlApplication2:BeanFactory是在工厂实例化完事之后,在方法getBean才会创建这个类的实例,ApplicationContex...原创 2019-07-19 23:54:01 · 155 阅读 · 0 评论 -
JAVA设计模式:工厂模式在开发中的运用,以计算机为例
工厂模式在开发中的运用一、面试题计算器二、利用简单工厂模式解决,避免面向过程2.1 Operationpublic abstract class Operation { private double num1; private double num2; public double getNum1() { return num1; } ...原创 2019-07-29 17:26:47 · 131 阅读 · 0 评论 -
Spring:事务管理学习笔记
Spring事务管理一、概述1.1 事务简介事务是正确执行一系列的操作,使得数据库从一种状态转换成另一种状态,而且保证操作全部成功,或者全部失败1.2 事务特性1.2.1 原子性即不可分割性,事务要么全部被执行,要么就全部不被执行1.2.2 一致性事务的执行使得数据库从一种正确状态转换成另一种正确状态1.2.3 隔离性在事务正确提交之前,它可能的结果不应显示给任何其他事务1....原创 2019-07-29 13:31:29 · 147 阅读 · 0 评论