Java
Java
BusyMonkey
这个作者很懒,什么都没留下…
展开
-
AOP实现原理
Spring 为解耦而生,其中AOP(面向切面编程)是很浓重的一笔,本文来探讨一下AOP实现的原理。一. 概述 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调...原创 2017-09-18 10:08:39 · 1247 阅读 · 0 评论 -
happens-before
1、解释前一个操作的结果可以被后续的操作获取。讲白点就是前面一个操作把变量a赋值为1,那后面一个操作肯定能知道a已经变成了1。2、规则程序次序规则:在一个线程内一段代码的执行结果是有序的。就是还会指令重排,但是随便它怎么排,结果是按照我们代码的顺序生成的不会变!管程锁定规则:就是无论是在单线程环境还是多线程环境,对于同一个锁来说,一个线程对这个锁解锁之后,另一个线程获取了这个锁都能看到前一个线程的操作结果!(管程是一种通用的同步原语,synchronized就是管程的实现)volatil转载 2020-07-10 11:39:41 · 155 阅读 · 0 评论 -
Java 集合
1、ListList:有序, 可重复, 有索引。三者均为可伸缩数组。Vector:底层数据结构是数组结构。 jdk1.0版本。线程安全的。 无论增删还是查询都非常慢。默认扩充为原来的2倍。ArrayList:底层数据结构是动态数组结构。线程不安全的。 所以ArrayList的出现替代了Vector, 但是查询的速度很快。默认扩充为原来的1.5倍。对于随机访问get和set...原创 2017-03-24 14:43:12 · 366 阅读 · 0 评论 -
HashTable、HashMap、TreeMap、ConcurrentHashMap
1、区别:HashMap非线程安全,HashTable 和 ConcurrentHashMap线程安全 Hashtable既不支持Null key也不支持Null value,Hashtable的put()方法的注释中有说明2、两个类的put方法源码,ConcurrentHashMap 使用了分段锁,sychronized关键字(跟HashTable不同,HashTable是锁整个表):...原创 2019-03-08 15:54:07 · 373 阅读 · 0 评论 -
Redis 基础
http://www.runoob.com/redis/redis-java.html1、在Maven库网页中找依赖或下载jar:http://mvnrepository.com/2、安装Redis服务:Redis 安装Window 下安装下载地址:https://github.com/MSOpenTech/redis/releases。https://g...原创 2017-02-22 13:26:42 · 838 阅读 · 0 评论 -
java 详解类加载器的双亲委派及打破双亲委派
http://www.jb51.net/article/102920.htmhttps://www.cnblogs.com/wxd0108/p/6681618.html类加载过程类从被加载到JVM中开始,到卸载为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。 其中类加载过程包括加载、验证、准备、解析和初始化五个阶段。其实,双亲委派模型并不复杂...转载 2018-03-29 11:16:17 · 5747 阅读 · 0 评论 -
JVM
目录1、内存模型1.1、程序计数器1.2、VM Stack1.3、本地方法栈1.4、堆1.5、方法区1.6、对象内布局2、垃圾回收2.1、回收机制2.2、GC Root2.3、常见GC回收算法2.4、垃圾回收器2.5、JVM命令2.6、元空间2.7、垃圾回收器搭配2.8、JVM参数2.9、何时出发GC1、内存模型...原创 2017-03-01 14:28:39 · 859 阅读 · 0 评论 -
常见GC算法
https://www.cnblogs.com/1024Community/p/honery.html1、标记清除算法标记-清除算法采用从根集合(GC Roots)进行扫描,对存活的对象进行标记,标记完毕后,再扫描整个空间中未被标记的对象,进行回收,如下图所示。标记-清除算法不需要进行对象的移动,只需对不存活的对象进行处理,在存活对象比较多的情况下极为高效,但由于标记-清除算法直接回...转载 2018-03-28 15:41:49 · 353 阅读 · 0 评论 -
java 多线程框架
目录1、Thread和Runnable:1.1、继承Thread:1.2、实现Runnable接口:1.3、Thread和Runnable闭包创建线程:2、ExecutorService 线程池:2.1、瞬时线程:2.2、定时线程和周期线程:2.3、线程池统一命名:3、ThreadLocal 线程本地变量:3.1、ThreadLocal为什么会内存泄漏...原创 2017-03-04 14:33:22 · 5015 阅读 · 0 评论 -
AtomicInteger类的理解与使用
http://blog.csdn.net/u012734441/article/details/516197511、Integer:public class Sample1 { private static Integer count = 0; synchronized public static void increment() { count+...转载 2018-02-26 17:03:00 · 721 阅读 · 0 评论 -
Java 锁
目录1、关于乐观锁和悲观锁:2、关于锁的开销:3、悲观锁的读写:4、乐观锁的读写:5、乐观锁的写修改:6、不可重入锁:7、可重入锁:8、自旋锁:9、排他锁(ReentrantLock)9.1、普通ReentrantLock9.2、带条件的ReenTrantLock10、synchronized10.1、同步方法10.2、代码块对象同步11...原创 2017-03-23 15:47:22 · 758 阅读 · 0 评论 -
IntelliJ 快捷键
CTRL+F9:编译代码(运行时修改代码不重启)CTRL+SHIFT+F12:窗体最大化;ALT+↑/↓:切换方法;ALT+F8:查看表达式的值;ALT+F7:查看变量或方法所有引用的地方;SHIFT+F6:重命名;CTRL+ALT+ENTER:在当前光标上方插入空行;SHIFT+ENTER:在当前光标下方插入空行;ALT+7:查看类中所有方法和变量;CTRL+...原创 2019-05-07 09:42:18 · 196 阅读 · 0 评论 -
HashMap
目录1、Hash算法2、HashMap 的数据结构2.1、Put 方法的原理2.2、Get方法的原理3、hash方法3.1、HashMap JDK73.2、ConcurrentHashMap JDK73.3、HashMap JDK83.4、ConcurrentHashMap JDK83.5、ConcurrentHashMap 两个版本比较4、HashMa...原创 2018-07-17 17:18:30 · 280 阅读 · 0 评论 -
Java 8 流排序
publci class TestBean { private String a; private String b; public TestBean(String a, String b) { this.a = a; this.b = b; } public String getA() { retu...原创 2019-10-09 21:50:18 · 1249 阅读 · 0 评论 -
序列化框架 JDK&MessagePack&ProtoBuf
名称 支持语言 性能 Jdk Serializable Java 速度快,文件大 MessagePack 市面上主流编程语言都支持 速度慢,文件小 Google ProtoBuf 市面上主流编程语言都支持 速度快,文件小 kryo 1、maven配置<propertie...原创 2019-12-07 14:49:20 · 390 阅读 · 0 评论 -
Java 中的异常
http://www.importnew.com/26613.html方法中声明Throws Exception之后,要抛出异常,还需要在catch中 throw new Exception()程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行...原创 2018-09-22 16:16:26 · 170 阅读 · 0 评论 -
Servlet&JSP
目录1、生命周期2、servlet与applet2.1、相似之处:2.2、不同之处:3、servlet与cgi4、servlet与jsp5、forward与redirect6、JSP的隐含对象1、生命周期客户端请求该 Servlet 加载 Servlet 类到内存 实例化并调用init()方法初始化该 Servlet service(),根据请...原创 2019-12-23 21:00:09 · 594 阅读 · 0 评论 -
Jmeter 自动化测试
目录1、指定JDK2、新建HTTP测试任务2.1、添加线程组2.2、默认请求值2.3、HTTP请求2.4、请求消息体读csv2.5、查看结果树2.6、聚合报告3、script3.1、jmeter常用内置参数3.2、BeanShell PostProcessor3.3、使用泛型4、循环调用csv文件数据5、命令行6、导入外部jar...原创 2016-04-14 10:21:47 · 7063 阅读 · 3 评论 -
Apache Commons 工具类
组件 描述 最新版本 发布日期 BCEL 字节码工程开发库:分析、创建和操作Java class文件。 5.2 2007-06-14 BeanUtils 对Java反射和自检(introspection)API的包装,让使用变得更加容易。 1.9.2 2014-05-29 BSF Bean脚本框架:包括JSR-233的脚本语言...转载 2019-10-27 16:43:20 · 171 阅读 · 0 评论 -
Java 启动一个main方法有几个线程
目录1、Attach Listener2、Signal Dispatcher3、Finalizer4、Reference Handler5、Monitor Ctrl-BreakThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();ThreadInfo[] threadInfos = thre...转载 2019-12-17 16:06:15 · 840 阅读 · 0 评论 -
Java 枚举代理if/else
首先上一段if/elseString str = "EnumA"; if ("EnumA".equals(str)) { System.out.println("this is EnumA"); } else if ("EnumB".equals(str)) { System.out.println("this ...原创 2019-12-16 15:27:30 · 284 阅读 · 0 评论 -
VO DTO DO PO
1、定义VO:View Object,视图对象,用于展示层 DTO:Data Transfer Object,展示层与服务层的数据传输对象 DO:Domain Object,领域对象,抽象的业务实体 PO:Persistent Object,持久化对象2、VO和DTO的区别数据本质是一样的,比对DTO是没有转义的,数据库字段0、1、2、A、B等。VO则是转以后的开始状态、结束...原创 2019-12-10 09:35:44 · 620 阅读 · 0 评论 -
Java 内部类和内部接口
目录1、内部类1.1、成员内部类1.2、局部内部类1.3、匿名内部类1.4、静态内部类1.5、优缺点2、内部接口1、内部类1.1、成员内部类成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)public class OuterClass { private String str; class ...原创 2019-12-09 21:56:25 · 340 阅读 · 0 评论 -
Idea maven 父子项目
1、建立父模块2、立子模块3、依赖问题<!-- 在父pom中的dependencies标签中的jar配置,子pom会直接继承 --><depedencies> ...</depedencies>子模块会直接继承父模块中的jar包,此种方式一般用于:在父pom中配置每个模块都需要的jar包及其他配置信息<depen...原创 2016-07-20 12:57:21 · 3870 阅读 · 0 评论 -
JDK 序列化和反序列化
serialVersionUID:字面意思上是序列化的版本号,凡是实现Serializable接口的类都有一个表示序列化版本标识符的静态变量,比如序列化和反序列化的对象如果属性有部分不一致,若不带serialVersionUID,序列化之后反序列化会失败,有serialVersionU...转载 2019-05-06 09:18:58 · 225 阅读 · 0 评论 -
java Socket网络通信 BIO NIO AIO
目录1、BIO2、NIO3、AIO1、BIO同步阻塞IO,一个线程处理一个连接,发起和处理IO请求都是同步的package com.busy.server;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.So...原创 2018-03-30 16:50:58 · 364 阅读 · 0 评论 -
Java NIO Buffer
目录1、继承关系2、内存管理3、MappedByteBuffer效率比较4、性能分析5、注意1、继承关系2、内存管理MMC:CPU的内存管理单元。 物理内存:即内存条的内存空间。 虚拟内存:计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部...原创 2018-09-12 21:27:36 · 311 阅读 · 0 评论 -
信号量Semaphore和线程池的差异
信号量Semaphore是一个并发工具类,用来控制可同时并发的线程数,其内部维护了一组虚拟许可,通过构造器指定许可的数量,每次线程执行操作时先通过acquire方法获得许可,执行完毕再通过release方法释放许可。如果无可用许可,那么acquire方法将一直阻塞,直到其它线程释放许可。线程池用来控制实际工作的线程数量,通过线程复用的方式来减小内存开销。线程池可同时工作的线程数量是一定的,超过...转载 2019-11-11 17:34:55 · 403 阅读 · 0 评论 -
Java 泛型类的继承
按照约定,类型参数名称命名为单个大写字母,以便可以在使用普通类或接口名称时能够容易地区分类型参数。以下是常用的类型参数名称列表 -E - 元素,主要由Java集合(Collections)框架使用。K - 键,主要用于表示映射中的键的参数类型。V - 值,主要用于表示映射中的值的参数类型。N - 数字,主要用于表示数字。T - 类型,主要用于表示第一类通用型参数。S - 类型,主要用...原创 2018-06-15 13:39:00 · 1211 阅读 · 1 评论 -
java 定义 枚举类 enum
public enum Operation { Add("Add"), Upd("Upd"), Del("Del"); private String value; public String getValue() { return value; } private Operation(String value) { this....原创 2018-04-18 18:52:27 · 298 阅读 · 0 评论 -
transient
1、transient的作用及使用方法我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方...转载 2019-08-02 17:56:04 · 195 阅读 · 0 评论 -
eclipse远程调试Tomcat方法
Linux中配置tomcat在catalina.sh中添加如下CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899"原创 2017-12-28 15:40:54 · 360 阅读 · 0 评论 -
Java 精度丢失(BigDecimal)
https://www.jianshu.com/p/c81edc59546cSystem.out.println(0.05 + 0.01);System.out.println(1.0 - 0.42);System.out.println(4.015 * 100);System.out.println(123.3 / 100);输出:0.060000000000000005...转载 2019-07-25 15:04:06 · 427 阅读 · 0 评论 -
Java工具类--通过HttpClient发送http请求
http://blog.csdn.net/frankcheng5143/article/details/50070591用到的jar包有httpclient-4.5.1.jar,httpcore-4.4.3.jar,注意是Apache HttpClient,不是commons-httpclientimport java.io.IOException;import java.util.A...转载 2018-03-19 17:23:33 · 9447 阅读 · 0 评论 -
java zip 递归压缩
https://www.cnblogs.com/qingergege/p/5768376.htmlpublic String compressFolder(String path) { ZipOutputStream out = null; BufferedOutputStream bos = null; try { out = new ZipOutputStream(new...转载 2018-01-04 16:01:31 · 734 阅读 · 0 评论 -
Java xsd和xml
1、xsd<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element nam...原创 2019-07-08 17:55:38 · 385 阅读 · 0 评论 -
java 操作xls
xls一个sheet页65536行、xlsx100w行pom:<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.11-beta1</version> </...转载 2017-03-03 12:04:40 · 485 阅读 · 0 评论 -
java 删除本地文件夹或文件
https://www.cnblogs.com/gaopeng527/p/5787535.htmlimport java.io.File;public class DeleteDirectory { /** * 删除空目录 * @param dir 将要删除的目录路径 */ private static void doDeleteEmp...转载 2016-05-19 11:24:24 · 3545 阅读 · 0 评论 -
jboss支持https的配置
http://blog.chinaunix.net/uid-20081651-id-1735987.html根据网上的资料很容易就配通了linux系统下jboss支持https协议。我们使用的jboss版本是3.2.7,jdk是jrocket 1.5.0,这些版本内部已经支持ssl,不需要增加任何补丁。步骤:1、在jdk的bin目录下,运行keytool,生成证书:...转载 2017-06-15 10:27:45 · 5002 阅读 · 0 评论 -
http自动转https
<security-constraint> <web-resource-collection > <web-resource-name >SSL</web-resource-name> <url-pattern>/*</url-pattern> ...转载 2017-06-15 14:52:02 · 437 阅读 · 0 评论