自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 验证volatile关键字不保证原子性

package com.chaohu;class MyData { volatile int num = 0; public void addPlusPlus(){ this.num++; }}/** * 验证volatile关键字不保证原子性:20个线程,每个线程对共享 * 资源的变量值加1000次,如果都是原子操作,最终结果应该是20000. * */public class Test { public static void

2021-04-28 21:16:23 97

原创 volatile关键字的可见性证明

volatile关键字是JVM提供的一种轻量级的同步机制。有主要3中特性: 1.保证可见性, 2.不保证原子性, 3.禁止指令重排(保证有序性)。下面代码用来验证volatile的可见性:package com.chaohu;import java.util.concurrent.TimeUnit;class MyData { //int number = 0; volatile int number = 0; public void ad

2021-04-28 20:57:18 156

原创 CountDownLatch复习

一、CountDownLatch是java.util.concurrent包下的一个类。二、一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。三、创建时,要给个初始值(int类型的count)。四、调用countDown()方法,递减锁存器的计数,如果计数到达零,则释放所有等待的线程。五、调用await()方法,使当前线程在锁存器倒计数至零之前一直等待,除非线程被中断。package com.chaohu;import java.util.concurren

2021-04-17 20:08:48 86

原创 读写锁分离

package com.chaohu.cache;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReentrantReadWriteLock;//缓存资源类public class MyCache { public static void main(String[] args) { MyCache myCache = new MyCache();

2021-04-17 19:16:17 122

原创 数值转换问题

1.普通类型值传递2.引用类型地址传递3.String指向常量池中的package com.chaohu.interviewquestions;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;public class TransferValue { public void changeValue1(int age){ age = 30;

2021-04-17 17:16:38 179

原创 熟记的单例模式

package com.chaohu.singleton;public class Demo01 { public static void main(String[] args) { for (int i = 1 ; i <= 10 ; i++){ new Thread(new Runnable() { @Override public void run() {

2021-04-17 17:14:38 35

原创 自定义枚举类

package com.chaohu.myenum;//自定义枚举类class Season{ //1.声明Season对象的属性(private final修饰) private final String seasonName; private final String seasonDesc; //2.私有化类的构造器(保证外面不能new,从而类的对象有限且确定) private Season(String seasonName,String season

2021-04-17 17:12:53 59

原创 手写一个自旋锁

package com.chaohu.lock;import java.util.concurrent.atomic.AtomicReference;/** * 题目:实现一个自旋锁 * 自旋锁好处:循环比较获取,直到成功位置,没有类似wait的阻塞 * * 通过CAS操作完成自旋锁,A线程先进来调用mylock方法自己持有5秒钟, * B随后进来后发现当前线程持有锁,不是null。所以只能通过自选等待, * 直到A释放锁后B随后抢到。 */public class SpinLock

2021-04-17 17:08:53 47

原创 Spring整合Mybatis入门

1.创建mevan工程,打包方式为默认jar。2.导入依赖。<dependencies> <!-- lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.

2021-04-15 19:25:47 55

原创 Spring Bean的初始化过程

1.创建容器。2.反射调用构造器创建实体(此时该实体还不是bean)。3.Spring会识别被配置成bean的信息,扫描注解的包。把实体对应的类信息封闭成一个BeanDefinition对象,会把这些BeanDefinition对象放入到一个Map中。会根据配置判断是否是单例,如果是单例,会放到单例池。再进行验证,最后进入依赖注入。4.set方法。5.(如果实现了BeanNameAware接口),就会调用setBeanName方法。6.(如果实现了BeanFactoryAware接口),就会调用s

2021-04-15 16:07:30 1212 1

原创 在JSP页面中使用Bootstrap

Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。官网:https://v3.bootcss.com/。在官网下载相应版本后,导入资源【css、js、fonts】,然后在<head></head>中写 <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <me

2021-03-20 15:38:22 2532

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除