
java基础
飒行
run
展开
-
多线程安全时间格式化操作
SimpleDateFormat是一个非线程安全的实现。从以下代码可以体现。1.packageorg.saxing;2.3.importjava.text.ParseException;4.importjava.text.SimpleDateFormat;5.importjava.util.Date;6.import...原创 2018-04-18 17:42:25 · 2281 阅读 · 1 评论 -
深究Java中的RMI底层原理
前言:随着一个系统被用户认可,业务量、请求量不断上升,那么单机系统必然就无法满足了,于是系统就慢慢走向分布式了,随之而来的是系统之间“沟通”的障碍。一般来说,解决系统之间的通信可以有两种方式:即远程调用和消息。RMI(Remote Method Invocation)就是远程调用的一种方式,也是这篇文章主要介绍的。一、RMI的一个简单示例这个示例拆分为服务端和客户端,放在两个idea项目中,并且通...转载 2018-06-02 14:59:15 · 291 阅读 · 0 评论 -
线程池原理
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3509960.html 本章介绍线程池的生命周期。在"Java多线程系列--“基础篇”01之 基本概念"中,我们介绍过,线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态。线程池也有5种状态;然而,线程池不同于线程,线程池的5种状态是:Running,SHUTDOWN, STOP, TIDY...转载 2018-06-07 19:50:07 · 200 阅读 · 0 评论 -
什么时候手动创建线程而不使用线程池
1、需要自定义线程的优先级,线程池中线程总是Normal2、需要一个前台线程,线程池中线程是后台线程 非UI线程最好使用线程池创建为后台线程,常常关闭一个软件之后,仍然占有内存,就是由于创建了多个前台线程,程序关闭的时候,还有其他前台线程没有关闭。3、需要手动终止线程,线程池不具有这种功能。4、线程执行时间长,线程池目的是为了线程重用,省去创建新线程的额外开销,多适用于多而执行时间短的线程...转载 2018-06-07 17:51:17 · 2713 阅读 · 0 评论 -
终止线程的三种方法
有三种方法可以使终止线程。 1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。 3. 使用interrupt方法中断线程。 1. 使用退出标志终止线程 当run方法执行完后,线程就会退出。但有时run方法是永...转载 2018-06-07 14:12:20 · 13638 阅读 · 0 评论 -
JUC
概要之前,在"Java 集合系列目录(Category)"中,讲解了Java集合包中的各个类。接下来,将展开对JUC包中的集合进行学习。在学习之前,先温习一下"Java集合包"。本章内容包括:Java集合包JUC中的集合类转载请注明出处:http://www.cnblogs.com/skywang12345/p/3498454.html Java集合包在“Java 集合系列01之 总体框架”中,介...转载 2018-06-06 08:11:49 · 2008 阅读 · 1 评论 -
JVM类加载机制详解(二)类加载器与双亲委派模型
在上一篇JVM类加载机制详解(一)JVM类加载过程中说到,类加载机制的第一个阶段加载做的工作有:1、通过一个类的全限定名(包名与类名)来获取定义此类的二进制字节流(Class文件)。而获取的方式,可以通过jar包、war包、网络中获取、JSP文件生成等方式。2、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。这里只是转化了数据结构,并未合并数据。(方法区就是用来存放已被加载的类信息,...转载 2018-06-12 11:31:59 · 298 阅读 · 0 评论 -
JVM类加载机制详解(一)JVM类加载过程
首先Throws(抛出)几个自己学习过程中一直疑惑的问题:1、什么是类加载?什么时候进行类加载?2、什么是类初始化?什么时候进行类初始化?3、什么时候会为变量分配内存?4、什么时候会为变量赋默认初值?什么时候会为变量赋程序设定的初值?5、类加载器是什么?6、如何编写一个自定义的类加载器?首先,在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class)。而JVM把Cl...转载 2018-06-12 08:56:51 · 282 阅读 · 0 评论 -
线程池的五种状态
线程池的5种状态:Running、ShutDown、Stop、Tidying、Terminated。线程池各个状态切换框架图:1、RUNNING(1) 状态说明:线程池处在RUNNING状态时,能够接收新任务,以及对已添加的任务进行处理。 (02) 状态切换:线程池的初始化状态是RUNNING。换句话说,线程池被一旦被创建,就处于RUNNING状态,并且线程池中的任务数为0!private fin...转载 2018-06-11 19:36:06 · 33243 阅读 · 12 评论 -
java实现 远程调用例子 rpc
服务端 :HelloServicepublic interface HelloService { public String hello(String name);}HelloServiceImplpublic class HelloServiceImpl implements HelloService { @Override public String hello...原创 2018-06-02 17:16:50 · 2141 阅读 · 0 评论 -
volatile详解
一、Java内存模型想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的。Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来)。线程对变量的所有操作(读取,赋值)都必须在工作内存中进行。不同线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主...转载 2018-05-15 20:15:24 · 195 阅读 · 0 评论 -
单例模式
作者:孤独烟,来自:http://rjzheng.cnblogs.com/其实写这篇文章之前,我犹豫了一下,毕竟单例大家都知道,写这么一篇文章会不会让人觉得老掉牙。后来想想,就当一种记录吧。先来一副漫画吧,如下图所示ok,我们回顾下小灰的遭遇,上述漫画所提出的那些问题主要有以下三点:为什么静态内部类的单例模式是最推荐的?如何在反射的情况下保证单例?如何在反序列化中保证单例?针对上述三个问题有了这篇...转载 2018-05-14 16:06:24 · 164 阅读 · 0 评论 -
一次springboot2 + swagger2-ui 404报错记录
之前用Springboot1一直没问题,升级之后 swagger不能用了。如果 /v2/api-docs 可以访问,swagger-ui不能访问,那基本是静态资源映射问题。原创 2018-05-06 17:48:50 · 4957 阅读 · 1 评论 -
CGLIB(Code Generation Library)详解
什么是CGLIBCGLIB是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比较受欢迎的ORM框架,同样使用CGLIB来代理单端(多对一和一对一)关联(延迟提取集合使用的另一种机制)。CGLIB作为一个开源项目,其代码托管在github,地址为:https://github.com/cglib/cglib为什...转载 2018-04-26 17:04:04 · 184 阅读 · 0 评论 -
Java动态代理分析
Java动态代理机制的出现,使得Java开发人员不用手工编写代理类,只要简单地制定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分配到委托对象上反射执行,配置执行过程中,开发人员还可以进行修改代理设计模式代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息、过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。...转载 2018-04-26 17:02:50 · 172 阅读 · 0 评论 -
Java中的锁
在学习或者使用Java的过程中进程会遇到各种各样的锁的概念:公平锁、非公平锁、自旋锁、可重入锁、偏向锁、轻量级锁、重量级锁、读写锁、互斥锁等待。这里整理了Java中的各种锁,若有不足之处希望大家在下方留言探讨。WARNING:本文适合有一定JAVA基础的同学阅读。公平锁和非公平锁公平锁是指多个线程在等待同一个锁时,必须按照申请锁的先后顺序来一次获得锁。公平锁的好处是等待锁的线程不会饿死,但是整体效...转载 2018-04-25 19:27:48 · 150 阅读 · 0 评论 -
Java反射----Field的getModifiers()方法返回int类型值表示该字段的修饰符
如何判断类或变量、方法的修饰符,可以使用Java反射机制中,Field的getModifiers()方法返回int类型值表示该字段的修饰符,即这个方法就是返回一个int型的返回值,代表类、成员变量、方法的修饰符。 其中,该修饰符是java.lang.reflect.Modifier的静态属性。对应表如下:PUBLIC: 1PRIVATE: 2PROTECTED: 4STATIC: 8FI...转载 2018-04-25 11:30:18 · 500 阅读 · 0 评论 -
CentOS7 装载 jdk 8
1. Oracle 现在不允许不勾选协议直接下载,按如下进行下载。wget --no-cookie --no-check-certificate --header "Cookie:oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174...原创 2018-04-18 19:32:22 · 227 阅读 · 0 评论 -
java 中的锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁
origin:https://blog.youkuaiyun.com/zqz_zqz/article/details/70233767/之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的: 1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对); 2. AtomicInteger效率最不稳定,不同...转载 2018-06-25 16:38:20 · 322 阅读 · 0 评论