自定义博客皮肤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)
  • 收藏
  • 关注

原创 高并发面试:线程池的七大参数?手写一个线程池?

线程池1. Callable接口的使用package com.yuxue.juc.threadPool;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;/** * 多线程中,第三种获得多线程的方式 * */public class CallableTest { public stat

2021-07-11 21:54:39 223

原创 用阻塞队列实现一个生产者消费者模型?synchronized和lock有什么区别?

多线程当中的阻塞队列主要实现类有ArrayBlockingQueue是一个基于数组结构的有界阻塞队列,此队列按FIFO原则对元素进行排序LinkedBlockingQueue是一个基于链表结构的阻塞队列,此队列按FIFO排序元素,吞吐量通常要高于ArrayBlockingQueueSynchronousQueue是一个不存储元素的阻塞队列,单个插入操作必须等到另一个线程调用移除操作,否则插 入操作一直处于阻塞状态1. 阻塞队列概念阻塞队列通俗来说,是一个队列,而一个阻塞队列再数据结构中所起的

2021-07-10 21:17:24 155 2

原创 多线程的这些锁知道吗?手写一个自旋锁可以吗?

多线程中的各种锁1. 公平锁、非公平锁1.1 概念:公平锁就是先来后到、非公平锁就是允许加塞 Lock lock = new ReentrantLock(Boolean fair);默认非公平公平锁是指多个线程按照申请锁的顺序来获取锁,类似排队打饭。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程优先获取锁,在高并发的情况下,有可能会造成优先级反转或者节现象。1.2 两者区别?公平锁:Threads acquire a fair lock in the o

2021-07-08 22:00:44 115

原创 集合类线程安全吗?ConcurrentModification异常遇到过吗?如何解决?

集合类不安全的问题1. ArrayList的线程不安全问题1.1 首先回顾ArrayList底层ArrayList的底层数据结构是数组底层是一个Object[] elementData的数组,初始化默认为空数组默认容量DEFAULT_CAPACITY为10,如果容量不够调用grow()方法,将容量调整为原来的1.5倍,核心代码为int newCapacity = oldCapacity + (oldCapacity >> 1);扩容过程是首先创建出来一个新数组,之后使用Arrays

2021-07-07 14:44:08 100

原创 CAS你知道吗?底层如何实现?ABA问题又是什么?关于这些你知道答案吗

CAS你知道吗?如何实现?1. compareAndSet在volatile当中我们提到,volatile不能保证原子语义,所以当用到变量自增时,如果用到synchronized会太”重“了,在多线程环境下我们一般用原子类如AtomicInteger,其底层是CAS,volatile见此篇public final boolean compareAndSet(int expect, int update) { return unsafe.compareAndSwapInt(this, valueOf

2021-07-06 14:07:47 99

原创 对volatile的理解--从JMM以及单例模式剖析

请谈谈你对volatile的理解1.volitale是Java虚拟机提供的一种轻量级的同步机制三大特性1.1保证可见性 1.2不保证原子性 1.3禁止指令重排首先保证可见性1.1 可见性概念:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看到修改的值package com.yuxue.juc.volatileTest;/** * 1验证volatile的可见性 * 1.1 如果int num = 0,number变量没有添加volatile关键字修饰 * 1.

2021-07-05 14:03:41 59

原创 Happens-Before原则到底规定了什么

Happens-Before 规则如何理解 Happens-Before 呢?如果望文生义(很多网文也都爱按字面意思翻译成“先行发生”),那就南辕北辙了,Happens-Before 并不是说前面一个操作发生在后续操作的前面,它真正要表达的是:前面一个操作的结果对后续操作是可见的。就像有心灵感应的两个人,虽然远隔千里,一个人心之所想,另一个人都看得到。Happens-Before 规则就是要保证线程之间的这种“心灵感应”。所以比较正式的说法是:Happens-Before 约束了编译器的优化行为,虽允许

2020-12-15 21:01:08 119

原创 并发程序背后的故事以及并发当中的内存模型

并发程序幕后的故事核心矛盾并发当中有一个核心矛盾一直存在,就是三者( CPU、内存、I/O 设备)的速度差异。CPU 和内存的速度差异可以形象地描述为:CPU执行一条指令假如花费一天时间的话,CPU读写内存需要等待一年,而内存和 I/O 设备的速度差异就更大了,内存是天上一天,I/O 设备是地上十年。所以就存在一个问题,单独提高CPU是没有作用的,因为根据木桶理论,程序整体的性能取决于最慢的操作->那就是读写 I/O 设备为了合理利用 CPU 的高性能,平衡这三者的速度差异,计算机体系机构、操

2020-12-09 21:29:26 67

转载 一千行MySQL学习笔记

原文地址:https://shockerli.net/post/1000-line-mysql-note/ , 作者:格物非常不错的总结,强烈建议保存下来,需要的时候看一看。基本操作数据库操作表的操作数据操作字符集编码数据类型(列类型)列属性(列约束)建表规范SELECTUNION子查询连接查询(join)TRUNCATE备份与还原视图事务(transaction)锁表触发器SQL编程存储过程用户和权限管理表维护杂项基本操作/* Windows服务.

2020-12-09 17:22:14 59

原创 MySQL入门看这一篇就够了(万字长文)

MySQLJavaEE:企业级Java开发 web阶段分为1.前端(页面,展示数据库中的数据)2.后台(连接点:链接数据库JDBC、Mybatis,链接前端(控制视图跳转,给前端传递数据))3.数据库(存数据)1、初始MySQL1.1、为什么学习数据库大数据时代,Java需要数据库被迫需求:存数据数据库是所有软件体系中最核心的存在1.2、什么是数据库数据库(DB,database)概念:数据仓库,用来存储数据,是一个软件安装在操作系统上!SQL可以存储大量的数据大概500万之内的数据

2020-12-09 14:06:53 305

原创 Mybatis入门及第一个Mybatis程序

Mybatis笔记整理所需要的基础知识JDBCMysqlJava基础MavenJunit框架:是有配置文件的。最好的方式:看官网文档1、简介1.1、什么是MyBatis简介什么是 MyBatis?MyBatis 是一款优秀的持久层框架它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old J

2020-12-02 17:53:15 94

空空如也

空空如也

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

TA关注的人

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