Java基础
文章平均质量分 71
宿久
这个作者很懒,什么都没留下…
展开
-
时间操作工具类DateUtil
import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/** * yyyy-MM-dd HH:mm:ss * */public class DateUtil { /** * 把日期...转载 2018-09-07 10:51:34 · 789 阅读 · 0 评论 -
深入理解JVM(一)虚拟机基础
1. 虚拟机原理所谓虚拟机,就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。虚拟机可以分为系统虚拟机和程序虚拟机。Java虚拟机专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令。一个Java程序(Java字节码的集合),通过Java虚拟机运行于各大主流系充平台,该程序以虚拟机为中介,实现了跨平台的特性。2. 虚拟机的基本结构...原创 2018-12-22 15:57:45 · 1707 阅读 · 0 评论 -
深入理解JVM(三)类加载机制
Class类型通常以文件的形式存在(当然,任何二进制流都可以是Class类型),只有被Java虚拟机装载的Class类型才能在程序中使用。系统装载Class类型可以分为加载、连接和初始化3个步骤。其中,连接又可分为验证、准备和解析3步。类加载条件当创建一个类的实例时,比如使用new关键字,或者通过反射、克隆、反序列化。 当调用类的静态方法时,即当使用了字节码invok...原创 2018-12-27 13:48:47 · 319 阅读 · 0 评论 -
Java WatchService监听文件夹下文件的变化
package com.uv;/* * @author uv * @date 2018/12/19 17:37 */import java.nio.file.FileSystems;import java.nio.file.Paths;import java.nio.file.StandardWatchEventKinds;import java.nio.file.WatchE...原创 2018-12-19 18:15:10 · 1471 阅读 · 0 评论 -
Java定时任务
Timer和TimerTaskTimer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次。 TimerTask是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行的任务。一个Timer调度的例子/* * @author uv * @date 2018/10/23 15:17 * */...原创 2018-10-23 20:19:38 · 287 阅读 · 0 评论 -
简单实现RPC框架(一)服务端的实现
RPC框架 RPC是Remote Procedure Call的缩写,像Client-Servier一样的远程过程调用,也就是调用远程服务就跟调用本地服务一样方便,一般用于将程序部署在不同的机器上,供客户端进行调用。就像一个request-response调用系统一样简单。 RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机...原创 2018-10-14 20:27:15 · 2005 阅读 · 0 评论 -
简单实现RPC框架(二)客户端的实现
继上一篇文章实现Server端后,本篇实现Client端。上篇文章链接https://blog.csdn.net/qq_22200097/article/details/83048668 1. 添加依赖 <dependency> <groupId>org.reflections</groupId> <artifact...原创 2018-10-15 09:36:19 · 585 阅读 · 0 评论 -
Netty的使用:Server和Client通信
Netty是一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。对比于BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。 提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Futur...原创 2018-10-13 22:33:43 · 43169 阅读 · 14 评论 -
Java动态代理
动态代理分JDK动态代理和cglib动态代理,常见的使用是在Spring的AOP中。JDK动态代理: 通过接口中的方法名,在动态生成的代理类中调用业务实现类的同名方法;代理实现了接口的类 ,没有实现接口的类不能使用JDK动态代理。 Cglib动态代理: 通过继承业务类,生成的动态代理类是业务类的子类,通过重写业务方法进行代理;不能代理final修饰的类。使用cglib代理必须引入cglib...原创 2018-10-12 14:56:07 · 132 阅读 · 0 评论 -
手写SpringMVC源码
项目结构图项目依赖<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version>原创 2018-10-04 16:16:22 · 1949 阅读 · 1 评论 -
Java底层之ArrayList底层实现原理
ArrayList简介 ArrayList就是动态数组,,相当于Array的复杂版本,它提供了动态的增加和减少元素,实现了Collection和List接口,可以灵活的设置数组的大小。要注意的是ArrayList并不是线程安全的,因此一般建议在单线程中使用ArrayList。ArrayList的元素可以为null;源码解析 ArrayList底层使用数组存储元素,默认数组大...原创 2018-09-26 19:01:09 · 797 阅读 · 0 评论 -
LinkedMutiValueMap的使用(一个key对应多个value)
LinkedMutiValueMap来自Spring的 org.springframework.util包下,可以一个key对应多个value。LinkedMutiValueMap的value统一用LinkedList保存,哪怕这只是插入一个字符串。1. 添加数据 MultiValueMap map = new LinkedMultiValueMap(); //添加一个Key对应一...原创 2018-09-11 10:03:32 · 2325 阅读 · 0 评论 -
Java底层之HashMap底层实现原理
HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。 HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。 HashMap ...原创 2018-09-23 17:05:26 · 1617 阅读 · 0 评论 -
深入理解JVM(二)垃圾回收概念与算法
垃圾回收(Garbage Collection 简称CG),GC中的垃圾,特指存在于内存中的、不会再被使用的对象,而“回收”,也相当于把垃圾桶“倒掉”。这样房间里或者内存空间里就会有空闲的区域被腾出来。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。如果大量不会被使用的对象一直占着空间不放,需要内存空间时,就无...原创 2018-12-23 10:33:32 · 406 阅读 · 0 评论