摘要:要想学好JUC,还得先了解 volatile 这个关键字。了解 volatile ,我们从一个例子开始吧。 本文不会很详细去说java内存模型,只是很简单地学习一下 一个例子 这个程序里面,新开一个线程, 初始化值为 , 线程里面是一个死循环,当 修改为 的时候,我们希望线程里面的死循环会结束,然后 阅读全文
posted @ 2020-05-25 08:15 JFound 阅读(17) 评论(0) 推荐(0) 编辑
摘要:JUC(java.util.concurrent)的开始,可以说是从Unsafe类开始。 Unsafe 简介 Unsafe在 下,顾名思义,这是一个不安全的类,因为Unsafe类所操作的并不属于Java标准,Java的一系列内存操作都是交给jvm的,而Unsafe类却能有像C语言的指针一样直接操作内 阅读全文
posted @ 2020-05-23 12:13 JFound 阅读(113) 评论(0) 推荐(2) 编辑
摘要:什么是注解 Java官方文档上说,注解是元数据的一种形式,它提供不属于程序一部分的数据,注解对被注解的代码没有直接的影响。 准确上说,注解只不过是一种特殊的注释而已,如果没有解析它的代码,它可能连注释都不如。 主要用途 注解有很多种用途,其中包括: 提供编译器使用信息 编译器可以使用这些注解来检查错 阅读全文
posted @ 2020-05-22 23:58 JFound 阅读(9) 评论(0) 推荐(0) 编辑
摘要:描述 ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。 通常使用静态的变量来维护 ThreadLocal 如: 通常用来保存userId、TransactionId等。 s 阅读全文
posted @ 2020-05-21 08:12 JFound 阅读(7) 评论(0) 推荐(0) 编辑
摘要:最近在开发的时候,在mysql Innodb 引擎下,一条记录记录也能引起锁的事件。 场景描述 在项目压测的是,突然发现有类似以下的异常发生: 但代码里面明明只锁了一条记录,不存在多个资源的时候,死锁又是怎么来的呢。 例子 首先创建实验数据: sql DROP TABLE IF EXISTS ; C 阅读全文
posted @ 2020-05-20 08:06 JFound 阅读(9) 评论(0) 推荐(0) 编辑
摘要:我的事务为啥会失效? 在用Spring的时候,我们经常用过使用@Transactional声明式事务,但是有些时候,@Transactional声明的事务却是没有生效。 一个例子。 环境 数据库为innodb,代码为基于spring的一个demo。 Demo代码如下: 代码说明 代码中 声明式事务注 阅读全文
posted @ 2020-05-19 08:14 JFound 阅读(11) 评论(0) 推荐(0) 编辑
摘要:开篇 之前,在用spring编码调试的时候,有时候发现被自动注入的对象是原始类的对象,有时候是代理类的对象,那什么时候注入的原始类对象呢,有什么时候注入的是代理类的对象呢?心里就留下了这个疑问。后来再次看spring aop的时候变有了大胆的想法。 案例 先添加springboot依赖 添加测试的类 阅读全文
posted @ 2020-05-18 08:14 JFound 阅读(11) 评论(0) 推荐(0) 编辑
摘要:1.介绍 本教程中,我们将研究 如何使用spring boot thin launcher项目来将Spring Boot项目瘦身 。 Spring Boot出了名的把所有依赖打包成单个可执行的 Fat JAR,同时也被广泛应用于微服务。有时候和 Fat JAR不一致的是,反复包括相同的依赖会成为一种 阅读全文
posted @ 2020-05-17 10:39 JFound 阅读(31) 评论(0) 推荐(0) 编辑
摘要:玩玩JAVA反射 什么是反射 Java反射机制是在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;对于任何一个对象,都能够调用它的任何一个方法和属性;这样动态获取新的以及动态调用对象的方法的功能就叫做反射。 简单来说反射就是解剖一个类,然后获取这个类中的属性和方法,前提是要获取这个类的C 阅读全文
posted @ 2020-05-16 15:15 JFound 阅读(14) 评论(0) 推荐(0) 编辑