
java
剑拔弩张的Logan
这个作者很懒,什么都没留下…
展开
-
intellij idea 常用快捷键
快速开发 Ctrl + alt +B 查找接口的实现类 Ctrl+U 转到父类 Ctrl+I 实现方法 Ctrl+F12 可以显示当前文件的结构 查看该类有哪些方法 Ctrl+N 可以快速打开类 Ctrl+Shift+N 可以快速打开文件 Alt+Q...原创 2020-09-05 00:11:14 · 254 阅读 · 0 评论 -
volatile的底层原理
一.线程间可见public class VolatileTest { private static boolean flag = true; public static void main(String[] args) throws InterruptedException { new Thread(() -> { while (flag) { //do sth }原创 2020-07-05 17:31:49 · 342 阅读 · 0 评论 -
synchronized锁升级过程和实现原理
一.synchronized升级过程在最开始JDK1.0,1.2的时候,synchronized就是重量级锁,后来JDK对synchronized进行了一系列优化,这个优化就是有个升级过程。这个升级过程被markword清晰地进行了记录。整个锁升级的过程大概分为:new-->偏向锁-->轻量级锁(无锁,自旋锁,自适应自旋)-->重量级锁我们结合下面这张图具体谈一下从刚刚new出来的时候,首先上的是偏向锁,出现争用,升级为轻量级锁,竞争状态变得特备激烈,变为重量级锁。原创 2020-07-04 18:42:25 · 2395 阅读 · 0 评论 -
Java对象在内存中的内存布局
一.Java对象的内存占用大小为了方便在程序中看到java对象内存布局,我们可以在maven中添加jol-core依赖<dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</version></dependency>首先我们看下最简单的Object对象是怎么原创 2020-07-02 19:41:58 · 5028 阅读 · 0 评论 -
CountDownLatch应用场景实践
一.CountDownLatch介绍 CountDownLatch是一个并发工具类,作用是允许一个或多个线程等待其他线程完成操作。我们有时会称之为发令枪。有一个个形象的例子能说明其功能:公司召开一个全体股东会,需要所有股东到场了才能正式开始。会议室准备了一个花名册,记录了需要到会的总人数,每一个股东来到会议室就要签名确认,同时总人数减一,当需要到会的总人数为0时,会议就正式开始。所以,CountDownLatch就有充当计数器和发令枪的功能。二.结合ExecutorService实现...原创 2020-07-02 14:33:47 · 345 阅读 · 0 评论 -
Docker for windows 打包制作java镜像
Docker for windows安装链接:https://oomake.com/download/docker-windows1.构建Spring Boot项目创建一个 DockerController,在其中有一个index()方法,访问时返回:Hello Docker!package com.docker.hellodocker.controller;import or...原创 2019-04-17 17:06:05 · 3771 阅读 · 3 评论