![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
xiao潇
进步是不断积累的过程,加油!
展开
-
Spring boot集成druid配置
看了官方文档之后的总结。(基于maven)总的来说,现在spring boot 已经可以开始支持druid,所以只需要引入适当的包即可。1、pom.xml<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId&...原创 2018-06-13 09:36:03 · 2335 阅读 · 0 评论 -
@Validated 讲解
SpringBoot 中使用@Validated 来检验数据,如果数据异常则抛出异常,统一处理。例如,在Controller层中,对传入的一个参数进行检验@Validated TestDto testDto对应的entity,TestDto@Datapublic class TestDto { @NotEmpty(message = "图片不能为空") private ...原创 2019-10-29 21:16:08 · 12106 阅读 · 2 评论 -
Java - 生产者消费者
生产者和消费者模型基于Lock的生产者消费者模型基于阻塞队列的生产消费者模型需求: 一个初始值为0,一个加一,一个减1,循环操作基于Lock的生产者消费者模型class SharaData { private AtomicInteger number = new AtomicInteger(); private Lock lock = new ReentrantLock();...原创 2019-06-20 15:05:40 · 107 阅读 · 0 评论 -
volatile 禁止指令重排
首先编译器执行指令的时候会存在指令重排的情况,以便于提高指令的执行速度。就像是考试一样,肯定是先把会的题做完再做难的题目。什么时候会发生重排,也就是两个指令之间不会存在依赖性,例如: a = 1; y = a+1。这两个语句就不会发生指令重排,因为y的值依赖a的值;但是如果是: a =1 ; y = 2 。这两个语句就会发生,因为不存在依赖。在单线程的条件下,指令重排不会影响到最终的结果,也就...原创 2019-06-10 22:04:58 · 2841 阅读 · 1 评论 -
Java集合类不安全问题(HaspMap不安全)
Java 集合类不安全问题ArrayList为什么ArrayList 不安全怎么解决ArrayList 不安全问题HashSet不安全问题HashMap什么时候HashMap是不安全的?怎么解决HashMap不安全问题Java中的一些集合类:例如ArrayList、HashSet、HashMap 在并发条件下都是不安全的。一般情况下报的错误是:“Concurrent Modification E...原创 2019-06-17 12:19:13 · 737 阅读 · 0 评论 -
单例模式看这几个
单例模式是一种常用的软件设计模式,通过它能够保证系统中,应用该模式的一个类只有一个实例。在面试中,本人总共手写过三种单例模式:懒汉模式、饿汉模式、双重检查模式懒汉模式:顾名思义,当系统需要类的实例的时候才会进行初始化,否则就不会进行初始化。public class Singleton { private static Singleton singleton = null;...原创 2019-06-11 23:53:40 · 128 阅读 · 0 评论 -
Java 锁(可重入锁,自旋锁,读写锁)
Java 一些列锁公平锁与非公平锁可重入锁自旋锁读写锁本文主要介绍Java的一些锁:公平锁,非公平锁,可重入锁,自旋锁,以及它们的使用案例公平锁与非公平锁公平锁就是多线程按照申请锁的顺序来获取锁,先来后到。非公平锁是多线程获取锁的顺序不是按照申请锁的顺序。可能造成优先级反转和饥饿现象,如果能抢占就抢占,否则就按照公平锁进行处理。ReentrantLock默认的时候是非公平锁,但是也可...原创 2019-06-18 12:12:58 · 1523 阅读 · 0 评论 -
synchronized 使用详解+案例
synchronizedsynchronized 锁的类型类锁加类锁的方式对象锁加对象锁的方式对于类锁和对象锁的调用呢?synchronized 锁的类型synchronized的锁类型,我觉得主要分为两种,一种是类锁,一种是实例对象锁。类锁类锁,顾名思义,就是在这个类上面加锁,也就是说,对于所有加了类锁的方法的时候,一次只有一个线程能够调用一个增加类锁的方法。加类锁的方式1、在静态方...原创 2019-06-27 11:13:32 · 524 阅读 · 0 评论 -
Java死锁案例
两个线程在执行的过程中,因为争抢资源而造成相互等待的现象,若无外力干涉的情况,无法推进。(此案例来源于网络)class HoldLockThread implements Runnable { private String lockA; private String lockB; public HoldLockThread(String lockA, Strin...原创 2019-08-29 16:57:50 · 279 阅读 · 0 评论 -
阻塞队列(BlockingQueue)和生产者消费者
BlockingQueue什么是阻塞队列阻塞队列的使用add removeoffer pollput takeoffer poll 设超时时间什么是阻塞队列举例说明:海底捞有一个等待区,当人满的时候,宾客就在等待去进行等待;然后当有空位的时候,等待区中的人就进去消费,那么这个等待区就相当于阻塞队列。像一个生产消费模型。阻塞队列首先是一个队列,当堵塞队列为空的时候,那么从队列中取元素的操作就会...原创 2019-06-19 14:10:02 · 467 阅读 · 0 评论 -
volatile 不保证原子性
什么是原子性,说白了就是整个程序中的所有操作要么都执行,要么都不执行。但是 volatile 可以保证可见性,但是不能保证原子性,所以是一个轻量级的同步机制。例如:下面代码加了volatile,但是不能保证原子性,number的最终结果不是20000.class Data { public volatile int number; public void add(){...原创 2019-06-08 22:19:58 · 198 阅读 · 0 评论 -
Java CAS详解
CAS主要内容CAS实例什么是UnSafe类CAS底层AtomicInteger.getAndIncrement() 进行分析UnSafe 的 getAndAddIntCAS缺点?什么是ABA问题原子引用如何解决ABA问题时间戳原子引用主要内容本文从 CAS实例 --> 什么是UnSafe类 --> CAS底层 -->AtomicInteger.getAndIncrement...原创 2019-06-12 16:57:55 · 3940 阅读 · 3 评论 -
IDEAL 将一个项目转为library导入到另一个项目
在网上搜了很多答案都没有能够很好的解决问题的,自己试了一个方法,最后成功了。需求:将一个项目作为library导入到另一个项目中,可以使用导入项目的所有接口。编辑器:IDEAL1、file --- Project Structure ---Modules2、点击绿色+按钮 --- import Module3、如下图所示,然后一直next4、右边的绿色+号-----Library,然后选中所有的P...原创 2018-04-17 10:00:40 · 1465 阅读 · 2 评论 -
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
最近看了一篇关于SSM框架的整合文档不错,特此分享出来。原文地址:https://blog.csdn.net/gebitan505/article/details/44455235出处:http://blog.csdn.net/zhshulin转载 2018-04-17 10:17:15 · 260 阅读 · 0 评论 -
IDEAL 自动生成 ‘serialVersionUID’
Setting->Inspections->Serialization issues->Serializable class without ’serialVersionUID’ 然后在你要生成UID的class中,Alt+Enter就能看到创建serialVersionUID。原创 2018-05-08 11:31:16 · 900 阅读 · 1 评论 -
jackson ObjectMapper读取json文件插入到mysql数据库
数据形式{"data":[ { "id":1, "eage":20}, { "id":2, "eage":21 }]}1、读取json文件String path = "test.json"ObjectMapper objectMapper = new ObjectMapper();Map&原创 2018-06-26 17:22:00 · 1655 阅读 · 0 评论 -
Api结构设计-01
一般的返回结果包括:code,message,data。所以对于返回结果进行封装。public class ApiResponse { private int code; private String message; private Object data; public ApiResponse() { this.code = Status....转载 2019-05-05 20:15:46 · 365 阅读 · 0 评论 -
spring-security
使用spring-security来设置登陆功能:1、增加security配置文件 WebSecurityConfig 配置文件需要继承 WebSecurityConfigurerAdapter@EnableWebSecurity@EnableGlobalMethodSecuritypublic class WebSecurityConfig extends WebSec...转载 2019-05-06 16:37:50 · 262 阅读 · 0 评论 -
volatile 可见性
JVM运行的实习时线程,每个线程都有自己的工作内存(栈内存),工作内存时线程私有的内存空间,JMM中规定所有的变量都存在了主内存中,主内存时共享内存,所有的线程都可以访问,但是线程对于共享变量的操作必须在工作内存中进行,首先要将主内存的值拷贝到自己的内存空间中,然后进行操作,之后写回主内存中,不能直接操作主内存中的共享变量,而是拷贝一份共享变量的副本在线程的工作内存中进行,因此不同的线程之间无法访...原创 2019-06-05 10:52:17 · 145 阅读 · 0 评论