Java
文章平均质量分 82
AlferWei
一个奋斗在编程路上的程序员。
展开
-
UML类图关系
依赖、关联、聚合、组合的UML类图表示以及关系之间的联系与区别。依赖一个类A使用到了另一个类B,这种使用是具有临时性的、非常弱的,但是类B的变化会影响到A。表现在代码层面,一般是类B作为参数在类A中的某个方法中被使用。关联关联体现的是两个类或者类与接口之间予语义级别的一种强依赖关系,关系不是临时的,一般是长期的,而且双方的关系一般是平等的,关联可以是单向的、双向的。表现...原创 2020-01-09 20:34:18 · 460 阅读 · 0 评论 -
IO工具包commons-io
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version></dependency>FileUtils/** * &...原创 2019-03-22 18:15:26 · 479 阅读 · 0 评论 -
Java集合工具包com.google.guava:guava
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version></dependency>Listspac原创 2019-02-26 20:58:54 · 4015 阅读 · 0 评论 -
Java集合工具包commons-collections
<dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.2</version></dependency>原创 2019-02-13 15:27:25 · 2655 阅读 · 0 评论 -
Java多线程 - 内置锁与高级锁机制
当多线程共享一个资源变量的时候,需要对线程加以控制,以保证线程是安全的,共享的资源被有效的使用。内置锁(监视锁)synchronized作用域代码块上,是一种内存可见的内置锁。synchronized是一种可重入锁:同一个线程可以获得它自己持有的锁。synchronized(x1) { code1; synchronized(x2) { code2; }}显示锁...原创 2019-01-08 19:58:50 · 685 阅读 · 0 评论 -
工厂模式和抽象工厂模式
工厂模式:根据传进的Class,动态产生目标类的实例; class HumanFactory{ Human newInstance(Class c){ return (Human)Class.forName(c.getName()).newInstance(); } }抽象工厂模式:在工厂模式的基础上,进行更细致的产品线划分,进而动态产生...原创 2015-07-08 12:33:41 · 172 阅读 · 0 评论 -
preparedstatement和statement
对于数据库连接池,可以通过修改池的Connection、(Prepared)Statement属性,来优化连接池; 当我们使用JDBC进行数据库操作时,如何使用Connection、PreparedStatement、Statement,就会影响数据库的性能; 一、使用Statement而不是PreparedStatement对象JDBC驱动的最佳化是基于使用的是什么功能. 选...原创 2015-07-09 15:51:37 · 142 阅读 · 0 评论 -
java文件读取与输出到文件
文件读取需要找到文件具体在什么地方,有相对路径和绝对路径;绝对路径就是相对于操作系统的路径,比如在windows下的D:\XX\file.txt;相对路径则是针对想在运行的项目环境的路径,可以执行类可以通过项目所在的容器环境找到文件;相对路径简单可以分为两种情况:一、从项目根目录下寻找File file = new File("conf/mixpanel.xml");Fil...原创 2015-08-11 17:42:46 · 399 阅读 · 0 评论 -
java实现生产者消费者问题
JAVA解决线程模型的三种方式import java.util.LinkedList;public class ProducerConsumer { private LinkedList<Object> storeHouse = new LinkedList<Object>(); private int MAX = 10; public ...原创 2016-01-20 20:33:05 · 135 阅读 · 0 评论 -
Apache提供的Java通用组件
Commons Proper专注于一个原则和目标:创建并维护可重用的Java组件。Commons Proper是一个协作、分享的地方,Apache社区可以在项目中一起工作与使用者共同分享。Commons的开发者会尽其所能地减少组件与其它开发库的依赖,让部署这些组件更加容易。除此之外,Commons组件还会尽可能保持接口的稳定,让Apache的用户(包括使用Commons的其它Apache项目)可以...原创 2018-07-02 22:21:52 · 388 阅读 · 0 评论 -
Java常用工具类
ElasticSearch工具类/** * es factory */public class ESClientFactory { private static final Logger logger = LoggerFactory.getLogger(ESClientFactory.class); public static TransportClient get...原创 2018-07-02 22:14:39 · 336 阅读 · 0 评论 -
Java线程池深入理解
摘要:本文主要讲了Java中线程池的使用方法,注意事项以及实现原理,对深入理解Java线程池有一定的帮助。为什么需要使用线程池呢?笔者认为线程池除了可以将执行线程与主线程隔离,实现线程的异步执行外,还可以减少因为线程创建、切换、销毁所产生的资源开销。当然,线程的休眠和执行都需要一定的内容空间,使用过多的线程将会带来性能上的损失。所以,线程池中线程的数量需要进行合理的设置。提交一个线程到线程池建立E...原创 2018-07-02 21:23:33 · 350 阅读 · 0 评论 -
Java 对象的浅拷贝与深拷贝
Java 对象的深度克隆Java 对象的引用与克隆在Java中,常会用到下面的代码逻辑:class Person implements Cloneable{ String name; int age; public Person(String name, int age){ this.name = name; ...原创 2018-06-23 22:20:06 · 245 阅读 · 0 评论 -
Java 多线程系列 -- CountDownLatch
一个简单的跑步比赛分析比如一个跑步比赛,有五个选手参加,有两点需要注意,第一我们必须确保这5个选手都准备就绪了,才能宣布比赛开始,第二只有当5个选手都完成比赛了才能宣布比赛结束。假设这5个选手都有自己的一个独立的线程,我们需要的是等待这5个线程都准备就绪,才开始比赛;同时,我们需要等待这5个线程都完成了,才宣布比赛结束。这个时候,CountDownLatch就派上用场啦。准备比赛开始:这5个选手都...原创 2018-04-16 17:36:06 · 257 阅读 · 0 评论 -
JVM参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置...转载 2018-04-10 23:15:40 · 233 阅读 · 0 评论 -
JVM内存管理及垃圾回收
JVM内存管理根据JVM规范,JVM把内存划分了如下几个区域:方法区堆区本地方法栈虚拟机栈程序计数器 其中,方法区和堆是所有线程共享的。方法区方法区存放了要加载的类的信息(如类名,修饰符)、类中的静态变量、final定义的常量、类中的field、方法信息,当开发人员调用类对象中的getName、isInterface等方法来获取信息时,这些数据都来源于方法区。方法区是全局共享的,在一定条件下它也会...原创 2018-04-10 18:03:28 · 244 阅读 · 0 评论 -
jvm问题排查工具
jdk自带的jvm监控工具Java自带了几个jvm监控工具,如jstat、jmap、jstack。jstatjstat是常见的线上jvm问题排查工具,jstat用法:说明:lines: 使用interval参数,会在间隔指定时间后输出当前JVM内存的状态,这个参数是指定输出多少行后,再输出title,这样就不需要翻屏看这一列的title了。 vmid: 虚拟机的pid ...原创 2018-04-07 16:31:26 · 1465 阅读 · 0 评论