自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

青色橙子

且随代码疾行

  • 博客(200)
  • 收藏
  • 关注

原创 (三)流机制解析SAX

SAX会在解析文档的各个部分时候调用事件回调,DOM是基于此基础上建立DOM树的ContentHandler接口定义了若干个在解析文档时解析器会调用的回调方法startElement 和endElement在每当遇到起始会终止标签时调用characters在每当遇到字符数据时调用startDocument和endDocument分别在文档开始和结束时各调用一次...

2020-02-11 09:35:58 211

原创 (一)XML特点

一、XML与HTML比较 1.1XML对大小写敏感,而且XML不能省略结尾 1.2在XML中只有单个标签而没有结尾的元素必须/>结尾。例如<img src="coffee.png"/> 1.3在XML中,所有属性值必须用引用给括起来 1.4在XML中,所有属性必须带有属性值二、XML的文档结构 2.1XML头 ...

2020-02-11 09:35:41 817

原创 JVM常见问题

在我的博客中,之前有很多文章介绍过JVM内存结构,相信很多看多我文章的朋友对这部分知识都有一定的了解了。那么,请大家尝试着回答一下以下问题:1、JVM管理的内存结构是怎样的?2、不同的虚拟机在实现运行时内存的时候有什么区别?3、运行时数据区中哪些区域是线程共享的?哪些是独享的?4、除了JVM运行时内存以外,还有什么区域可以用吗?5、堆和栈的区别是什么?6、Ja...

2020-02-11 09:35:22 187

原创 线程状态汇总

常见状态汇总 Thread类中定义的状态 Thread.cpp中定义的状态 状态说明 NEW INITIALIZING 新建,正在初始化,为其分配资源 NEW STARTING 新建,正在启动 RU...

2020-02-11 09:35:09 153

原创 BooleanLock实现

之所以采用booleanLock是因为传统的synchronized无法控制时间,也不可中断。public interface Lock{ void lock() throws InterruptedException; void lock(long mills) throws InterruptedException ,TimeoutException; vo...

2020-02-10 09:11:42 272

原创 对象访问方式

HotSpot虚拟机对象探秘通过上面的介绍我们大概知道了虚拟机的内存情况,下面我们来详细的了解一下HotSpot虚拟机在Java堆中对象分配、布局和访问的全过程。3.1 对象的创建(重点)下图便是Java对象的创建过程,我建议最好是能默写出来,并且要掌握每一步在做什么。①类加载检查: 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用...

2020-02-10 09:11:18 221

原创 Spring Data发布领域事件方式

何为领域事件 领域事件是用来捕获发生在领域之间的一些事件,用来帮助不同领域甚至不同限界上下文来进行解耦。所以领域事件可以被本地的限界上下文所消费也可以被外部的限界上下文所消费。当采用本地的限界上下文所消费时,通常使用的是Spring Data的domain event所实现。被外部上下文所消费的情况下一般是采用消息队列的形式。当然也可以采用拉取的方式,比如rest服务。Spring Data...

2020-02-10 09:10:55 2786

原创 Hook线程以及捕获线程异常

//调用线程回调方式,因为run方法不能抛出checked异常。所以发生异常后需要通过此方法回调异常至派生它的线程public void setUncaughtExceptionHandler(UncaughtExceptionHandler eh);public static void setDefaultUncaughtExceptionHandler(UncaughtExceptio...

2020-02-09 09:07:40 242

原创 上下文设计模式

上下文定义:贯穿整个系统或阶段生命周期的对象,其中包含了系统全局的一些信息,比如登录之后的用户信息,账号信息,以及程序每一个阶段运行时的数据。比如:单例模式的对象也就是上下文private ConcurrentHashMap<Thread,ActionContext> contexts = new ConcurrentHashMap<>();public ...

2020-02-09 09:07:24 2172

原创 策略模式

Thread类与Runnable接口 Thread类定制了线程实现框架。具体的实现细节有Runnable接口实现Thread类中的run方法public void run(){ if(target != null){ target.run(); }}这里run方法是一个空的实现,具体实现交由Runnable接口实现...

2020-02-09 09:07:08 99

原创 Guarded Suspension模式(确保挂起)

发现条件不满足时,就暂时挂起等待条件满足,常见的在BlockingQueue中含有大量的Guarded Suspension模式public class GuardedSuspensionQueue<T>{ private final LinkedList<T> queue = new LinkedList<>(); private f...

2020-02-09 09:06:55 179

原创 7种单例设计模式

类只有在主动使用时才会初始化:六种情形:new ,static属性,static方法,反射,初始化父类,main所在类 方式 线程安全 高性能 懒加载 饿汉式 安全。 由于instance作为类变量,初始化时会被收入进<clinit>方法。 ...

2020-02-09 09:06:35 135

原创 Worker Thread模式

重要角色: 1.流水线工人:流水线工人主要对传送带上的产品进行加工。 2.流水线传送带:用于传送来自上游的产品 3.产品组装说明书:用于说明该产品如何组装1.产品组装说明书public abstract class InstructionBook{ public final void create(){ ...

2020-02-09 09:06:19 209

原创 垃圾回收跟踪机制Reference

1.Strong Reference以及LRUCachepublic class Reference{ //1M private final byte[] data = new byte[2 << 19]; protected void finalize() throws Throwable{ System.out....

2020-02-09 09:06:03 162

原创 Event-Driven Architecture(事件驱动)

EventS:需要被处理的数据Event Handlers:处理Event的方式方法Event Loop:维护Events和Event Handler之间的交互流程,一般采用queue代替Events属性 类型和数据同步的EDA框架实现public interface Message {Class<? extends Message>...

2020-02-09 09:05:50 752

原创 Event Bus设计

模式实现:注解加服务者提供框架实现三大要素:EventBus,Dispatcher,RegistryEventBus:提供对外部操作的方法。Registry:用来整理所有在EventBus上注册的Subsriber(订购者)。Dispatcher:负责对消息进行推送。/*** 定义Event Bus所使用的方法*/public interface Bus {...

2020-02-09 09:05:36 202

原创 简述AQS设计之道

引文说起AQS(AbstarctQueuedSynchronizer)不得不提起JUC,JUC包中几乎百分之80%以上的同步实现都是采用AQS实现的。即使没有直接用到AQS也是间接的用到了AQS的三大核心思想。所以与其在文中给大家一词一句的分析代码,不如给大家讲讲AQS的背后核心思想(简称AQS三板斧),因为源码大家都安装有jdk,可以自己看。但是很多时候代码是看懂了,其背后的原理没有搞懂。...

2020-02-09 09:04:50 563

原创 观察者模式

观察者模式抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。抽象观察者角色:为所有的具体观察者定义一个接口,在得到主题通知时更新自己。具体被观察者角色:也就是一个具体的主题,在集体主题的内部状态改变时,所有登记过的观察者发出通知。具体观察者...

2020-02-07 10:57:18 128

原创 Active Object(主动对象模式)

主动对象拥有自己独立的线程,可以接受异步的消息。并且能返回结果。

2020-02-07 10:57:10 1452

原创 Balking模式(犹豫模式)

如果线程发现某个对象状态改变了,则放弃当前的工作。比如Word文档编辑时的Ctr +s与系统自动保存。Balking模式主要是关注状态例如:需要初始化系统全局资源,一旦初始化过了就不再加载public synchronized HashMap load(){ if(hasLoad){ return hashMap; } hashMap = ...

2020-02-07 10:57:04 502

原创 Thread-Per-Message模式

为每一个消息开辟一个线程处理此种设计模式存在巨大的缺陷。因为JVM开创线程数量是有限的。此种方式可以用于系统资源初始化,或者系统关闭时资源回收。如果线程数量较多,可以采用线程池实现。如聊天程序实现:public class ChatServer{ //端口 private final int port; //服务类 private Th...

2020-02-07 10:56:52 436

原创 Two Phase Termination模式

1.线程停止的two phase termination线程分为两个阶段,第一个阶段是正常工作,第二个阶段是处理终止信息如资源释放。第二个阶段要确保如下几点: 1.保证安全性 2.百分之百确保线程结束 3.对资源的释放时间要确保在一个可控范围内例如:public void run(){ try{ this.chat()...

2020-02-07 10:56:48 177

原创 Latch(阀门)设计模式

CyclicBarrier与CountDownLatch区别: CycliBarrier可以重用,而CountDownLatch不可以。在设计上之所以可以重用,是因为CycliBarrier中是一群线程在等一个状态,这个状态有自身打破,而CountDownLatch是一群线程在等待一个状态。这个状态由另外的线程打破。CountDownLatch类实现public cla...

2020-02-07 10:56:24 203

原创 Future模式(凭据模式)

此种方式将Future与Task分离开来。导致finish()方法暴露出来。被外部调用。更优的方式将Future与Task结合起来。参考JDK FutureTask类不便于管理。如果要实现Cancle,参考FutureTask在内部将callback与future分离开来的设计public interface Future<T>{ //获取返回值 ...

2020-02-07 10:56:17 104

原创 不可变对象设计模式

不给外部修改共享资源的机会,每次都返回一个新的对象。例如:String,StreamActor模型:https://en.wikipedia.org/wiki/Actor_modelpublic final class IntegerAccumulator{ private final int init; public IntegerAccumulator(i...

2020-02-07 10:56:10 109

原创 读写分离设计

适用于读多于写的情况public interface Lock {//获取显示锁,未能获取线程将堵塞void lock() throws InterruptedException;//释放获取的锁 减少read或者write的数量void unlock();}public interface ReadWriteLock {/**** 读的数量大于0...

2020-02-07 10:55:58 205

原创 Single Thread Execution设计模式

同一个时刻只能有一个线程访问共享资源,以牺牲性能为代价的使用Synchronized修饰访问资源或者使用Lockpublic class FlightSecurity{ private int count = 0; //登机牌 private String boardingPass = null; private String idCard = nul...

2020-02-07 10:55:45 156

原创 lambda表达式

一.语法 1.1一般性语法 (Type1 param1, Type2 param2, ..., TypeN paramN) -> { statment1; statment2; //............. return statmentM;} 1.2单参数语法T...

2020-02-06 09:30:27 121

原创 正则表达式实践

正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你修,在你学会正则之前,你只能看着那些正则大师们,写了一串外星文似的字符串,替代了你用一大篇幅的if else代码来做一些数据校验。既然喜欢,那就动手学呗,可当你百度出一一堆相关资...

2020-02-06 09:29:59 240

原创 正则表达式

字符类 []内一个可选字符集,[A-Za-z]或[^0-9] 其中-表示一个范围,^表示补集,即除指定字符串外的所有字符串 如果字符类中包含 "-",那么它必须是第一项或者最后一项;如果要包含"[",那么它必须是第一项。如果要包含"^",那么它可以是除开始位置之外的所有位置,其中,你只需要转义"[",以及"\"。 有许多预定的字符类,例如\d(数字)和\p{Sc}(...

2020-02-06 09:28:39 222

原创 注解

元注解:  元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:    1.@Target 指定注解的作用范围 CONSTRUCTOR:用于描述构造器     FIELD:用于描述域  ...

2020-02-06 09:28:29 199

原创 泛型基础

1、定义什么是泛型,看表面的意思,泛型就是指广泛的、普通的类型。在java中是指把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型。可一看一个简单的例子:List<String> strings = new ArrayList<String>();strings.add("a String");String aString = str...

2020-02-06 09:27:58 105

原创 父类与子类的属性,方法问题

1.子类继承父类不可以继承父类的私有属性,以及不可以覆盖父类的私有方法2.子类不可以直接访问父类的私有属性,方法。类似 super.属性名/super.方法名。但可以间接访问3.如果子类不曾覆盖父类的方法,则访问调用父类的方法等同于 super.方法名。在此方法中访问与子类相同的属性,实际上是访问父类的属性。----打破父类私有属性子类不可以访问。同样的如果相同属性只有父类提供了get...

2020-02-06 09:27:18 2272

原创 Mybatis设计模式使用

Mybatis至少遇到了以下的设计模式的使用。 Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder; 工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory; ...

2020-02-06 09:26:33 137

原创 JPA语法

JPA常见注解 注解名 必选 属性描述 @Entity 是 name属性对应一个表名 @Table 否 name:可选,表示表的名称.默认地,表名和实体名称一致,只有在不一致的情况下才需要指定表名。 catal...

2020-02-06 09:24:42 2076

原创 JPA实践

JPA介绍及实践0.概念梳理DAO: Data Access Object(数据访问对象),一种设计模式,通过映射应用程序对持久层的调用,DAO提供一些特定的数据操作,而无需暴露数据库细节。 ORM:Object Relational Mapping(对象关系映射),一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用...

2020-02-06 09:24:33 335

原创 Spring JPA规范

spring-data-jpa所有的语法规定如下图:JPA标准对象理解官方解释:* Root<T> root:代表了可以查询和操作的实体对象的根,*可以通过它的 Path<Y> get(String attributeName); 这个方法拿到我们要操作的字段*注意:只...

2020-02-06 09:20:48 1624

原创 JAVA不同版本的区别

Java不同版本区别:JSE: java标准版,包含Java语言核心的类。比如:数据库连接、接口定义、输入/输出、网络编程。JEE: java企业版,包含JSE中的类,并且还包含用于开发企业级应用的类。 比如:EJB、servlet、JSP、XML、事务控制。JME: java移动版,包含嵌入式开发或者移动应用开发所需要的类,包括一些JSE的核心代码和一些无线设备的API。J...

2020-02-05 15:31:15 2883

转载 同步、异步、阻塞、非阻塞区别

1.同步、异步、阻塞、非阻塞同步:用户触发IO操作,你发起了请求就得等着对方给你返回结果,你不能走,针对调用方的,你发起了请求你等异步:触发触发了IO操作,即发起了请求以后可以做自己的事,等处理完以后会给你返回处理完成的标志,针对调用方的,你发起了请求你不等阻塞:你调用我,我试图对文件进行读写的时候发现没有可读写的文件,我的程序就会进入等待状态,等可以读写了,我处理完给你返回结果,这里...

2020-02-05 15:30:11 137

原创 文件压缩与解压缩

文件压缩package zt.o.commoncommon.utils;import java.io.*;import java.util.List;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;public class ZipUtils { private static final i...

2020-02-05 15:26:53 350

空空如也

空空如也

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

TA关注的人

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