Posts List

Java之 CompletableFuture使用

Future是Java 5添加的类,用来描述一个异步计算的结果。可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,也可以使用cancel方法停止任务的执行。 本文介绍CompletableFuture ...

Java 惯用法

本文整理一些Java开发中常用的惯用法。 instanceof测试类型实例 双目运算符,obj instanceof Type 测试它左边的对象是否是它右边的类的实例 if (list instanceof ArrayList) { //... } 关于Comparable和Comparator Comparable可以认为是一个内比较器,实现 ...

Java8:Optional

Optional对象支持值可空的抽象,特别是针对Java中的NPE问题,Optional可以很好的显式的来应对。 比如: user.getAddress().getProvince(); 这种写法,在user为null时,是有可能报NullPointerException异常的。为了解决这个问题,于是采用下 ...

Java之 JVM工具使用

本文介绍JVM的常用工具 jstack 主要用来做线程堆栈分析,常用来分析CPU和load高的问题,一般步骤如下: 找到java进程的pid ps -ef | grep java 找到Java进程中的占用cpu较高的线程的线程id top –Hp pid java进程的信息dump到本地文件中 命令:j ...

MySQL与Spring boot对接

本文整理了下CentOS7下mysql与Spring boot对接的基本配置,Spring boot与Mybatis结合使用。 pom.xml引入依赖 引入连接mysql的必要依赖 mysql-connector-java 引入整合MyBatis的核心依赖 mybatis-spring-boot-starter <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency> 搜索mapp ...

Java之 Object类的方法

本文整理一些Java开发中关于Object类型的方法的使用。 equals方法 equals()方法在object类中定义如下: public boolean equals(Object obj) { return (this == obj); } 很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。 但是我们知道,String 、Math ...

Java对象锁synchronized与Lock类

本文通过一个例子来解释两种锁机制:实现ABC循环打印3次“ABCABCABC”,要求使用3个线程,分别打印A/B/C,通过锁同步机制来控制流程 使用对象锁 synchronized锁的是括号里的对象 public class Main { private static Boolean flagA = true; private static Boolean flagB = false; private static Boolean flagC = false; public ...

Java源码:ArrayList

ArrayList是最常用的随机访问动态数组,与C++的std::vector类似。 类型声明 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { // ... } public interface List<E> extends Collection<E> { // ... } public interface Collection<E> extends Iterable<E> { int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); boolean equals(Object o); int hashCode(); Object[] toArray(); <T> T[] toArray(T[] a); boolean add(E e); boolean remove(Object o); void clear(); boolean containsAll(Collection<?> c); boolean addAll(Collection<? extends E> c); boolean removeAll(Collection<?> c); boolean removeIf(Predicate<? super E> filter); boolean ...

Spring:Bean对象管理

Spring是Java服务端主流的开发框架,其中的依赖注入和模块化,实现了一套灵活的组件化方案。 这个相当于Spring在框架层面帮我们做好了Bean对象的管理,而且还支持注解以及很多方法来支持非侵入式的组件化方案,使得代码耦合极低,就像没有 ...

Spring:方法拦截

本文介绍一种基于Spring的通用的方法拦截方案,配合注解来轻量级的使用,方法拦截技术经常用于性能监控,统一日志等。 ProxyFactory 代理工厂提供了对象行为的扩展机制(addAdvice)可以在方法调用前后做一些事情。 // 接口和对象 interface UserReadService { String getUserId(String id); } class UserReadServiceImpl implements UserReadService { @Override ...

Java注解

java注解常常用于自动化,简化代码开发成本,减少重复劳动,比如Spring框架使用了很多注解(如@Resource, @Service,@Component等),让组件化可以非常简单的实施,而且代码清晰简洁。 常用注解 标准注解 @Deprecated 添加到不鼓励使 ...

Java 多线程

本文整理了下Java中常用的多线程相关的类型和使用方式。 线程类 Thread类型 public class Thread implements Runnable { public static native void sleep(long millis) throws InterruptedException; public Thread(Runnable target); public Thread(Runnable target, String name); public final void join() throws InterruptedException; } 例:继承Thread,覆盖Thread的run方法 class MyThread extends Thread { @Override public void run() { System.out.println("hello1"); } } MyThread mythd = new MyThread(); mythd.start(); Runnable ...

Java常用工具类

本文整理Java中常用的工具类,如StringUtils, Arrays, CollectionUtils等 StringUtils StringUtils是Apache Commons Lang3中的提供的操作String工具类。 maven引入 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.5</version> </dependency> 常用方法 StringUtils支持对nu ...

Java8:Stream

本文整理下Java8引入的Stream流,能大大简化集合类的操作,同时引入了常用的filter, map, reduce等高阶函数的操作类型。 Stream有点类似C++库boost.Range的概念,是基于容器的迭代范围的一个视图,并能够给予视图做各 ...

Java序列化

Java对象的序列化主要有两种用途: 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 在网络上传送对象的字节序列。 序列化接口与API 在Java中,只要一个类实现了java.io.Serializable接口(没有方法),那么它就可以 ...