
java
文章平均质量分 96
码农小K
这个作者很懒,什么都没留下…
展开
-
volatile的应用与原理
背景多线程开发中,不少见 volatile,其很典型的标记就是可见性,接下来一起了解一下其原理吧定义volatile 是轻量级的 synchronized,它在多处理器开发中保证了共享变量的“可见性"可见性的意思是一个线程修改一个共享变量时,另外一个线程能读到这个修改的值volatile 的使用比锁的成本更低,因为它不会引起线程上下文的切换和调度术语内存屏障是一组处理器指令,用于实现对内存操作的顺序限制缓存行缓存中可以分配的最小存储单位。实现原理有 volatile 修饰的变原创 2020-07-02 22:39:30 · 322 阅读 · 0 评论 -
深入了解Spring与Java的SPI机制
SPI(service provider interface)机制是JDK内置的一种服务发现机制,可以动态的发现服务JDK的SPI机制jdk 的 spi 机制是通过 ServiceLoader 类来加载扩展的服务提供类为什么需要这种机制呢?大家可以从类加载器文章中双亲委派的破坏了解原因双亲委派模型破坏原因简单的说,类加载器中的双亲委派模型的工作原理是对于类的加载,先交给父类加载器完成,如果父类加载器无法完成加载,子类加载器才进行加载。JDK中的一些基础类接口,例如 JDBC,如果按照双亲委派模原创 2020-05-30 20:05:02 · 1015 阅读 · 0 评论 -
JVM运维命令
命令参数-Xms:初始堆大小-Xmx:最大堆大小-XX:NewSize=n:设置年轻代大小-XX:NewRatio=n:设置年轻代和年老代的比值.如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值.注意Survivor区有两个.如:3,表示Eden:Survivor=3:2...原创 2020-04-17 21:02:58 · 305 阅读 · 0 评论 -
Java8 Function和BiFunction
1.Function作为一个函数式接口,主要方法apply接收一个参数,返回一个值int test(Function<Integer, Integer> func) { return func.apply(1);}void main() { System.out.println(test((a)-> a + 1)); // 2}2.Func...原创 2019-09-22 18:09:31 · 641 阅读 · 0 评论 -
Java 定义常量
常量定义方法1. 接口:变量默认为 static final2. 枚举 enum每个常量都是唯一的,可以通过 values() 方法遍历,也可以有非 public 的构造方法3. 普通类中使用 static final 修饰变量...原创 2018-08-18 17:33:46 · 793 阅读 · 0 评论 -
Jstack中线程thread的状态 BLOCKED,WAITING,TIMED_WAITING
1.BLOCKED这种状态是指一个阻塞线程在等待monitor锁如:wait2.WAITING一个线程在等待另一个线程执行一个动作时在这个状态如:Object#wait() 而且不加超时参数Thread#join() 而且不加超时参数LockSupport#park()3.TIMED_WAITING一个线程在一个特定的等待时间内等待另一个线程完成一个动作会在这个状态如:Thread#sleep()...原创 2018-07-02 23:15:05 · 4298 阅读 · 0 评论 -
异常 及 try catch finally注意点
异常分类:1.Error(JVM虚拟机错误)2.Exception(异常):程序可以处理的异常 根据编译特性分类: (1)检查性异常:在编译的时候必须检查,如IOException (2)非检查性异常:在编译时可以不检查,如RuntimeException 根据运行时特性分类: (1)运行时异常:不用捕捉的异常,如RuntimeException (2)非运行时...原创 2018-06-12 14:06:06 · 404 阅读 · 0 评论 -
设计模式的六大设计原则
1)单一指责原则(Single Responsibility Principle,SRP)每个类的功能单一,不能多功能2)里氏替换原则(Liskov Substitution Principle LSP,LSP) 1.子类必须完全实现父类的方法 2.子类可以有自己的个性 3.覆盖或实现父类的方法时输入参数可以被放大 4.覆盖或实现父类的方法时输出结果可以被缩小3)依赖倒置原则(De...原创 2018-06-12 11:23:48 · 311 阅读 · 0 评论 -
Synchronized的原理及自旋锁,偏向锁,轻量级锁,重量级锁的区别
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。 锁从宏观上分类,分为悲观锁与乐观锁。乐观锁乐观锁是一种乐观思想,即认为读多写少,遇...原创 2018-01-30 00:24:16 · 26557 阅读 · 23 评论 -
Java序列化(Serializable+ExternalSeralizable)
java序列化的详解,在比较满意的一篇文章收集的转至:http://blog.youkuaiyun.com/dreamtdp/article/details/153783291、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Ja转载 2018-01-29 14:37:19 · 918 阅读 · 0 评论 -
Java 单例模式(饿汉+懒汉)
java单例就是一个类始终只实例化一次饿汉模式:在程序启动,类加载的时候就初始化:public class Singleton{ private static Singleton instance = new Singleton(); private Singleton(){} public static Singleton newInstance(){原创 2018-01-16 23:33:13 · 441 阅读 · 0 评论 -
JUnit单元测试使用java详解
原文地址 http://www.open-open.com/lib/view/open1462177214142.html我们写单元测试,一般都会用到一个或多个单元测试框架,在这里,我们介绍一下JUnit4这个测试框架。这是Java界用的最广泛,也是最基础的一个框架,其他的很多框架,包括我们后面会看到的Robolectric,都是基于或兼容JUnit4的。然而首先要解决的问题是。。。为转载 2017-04-07 12:31:51 · 718 阅读 · 0 评论