- 博客(11)
- 收藏
- 关注
原创 【AQS源码解析】ReentrantLock的公平锁加锁解锁分析
引言 AQS是用来构建锁和其他同步组件的基础框架,它也是Java三大并发工具类(CountDownLatch、CyclicBarrier、Semaphore)的基础。ReentrantLock,甚至BlockingQueue也是基于它的实现。本文从ReentrantLock的lock()出发,从源码维度分析一个加锁解锁动作都干了什么事。 公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。 非公平锁:多个线程去获取锁的时候,会直接去尝试获取,
2021-11-19 22:56:01
575
1
原创 Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found 用IDEA创建springboot项目的时候遇到的一些坑
Plugin ‘org.springframework.boot:spring-boot-maven-plugin:’ not found 用IDEA创建springboot项目的时候遇到的一些坑,记录一下在pom.xml文件中“spring-boot-maven-plugin” 报红了,显示not found 找不到。<plugin> <groupId>org.springframework.boot</groupId> <artifactId>sp
2021-07-17 15:43:30
315
原创 MySQL MVCC机制---图文并茂带你深入浅出
文章目录前言事务隔离性一、如何保证事务的隔离性?二、事务之间相互影响的探究1.脏写2.脏读3.不可重复读4.幻读三、如何平衡安全与性能?1.脏读2.不可重复读3.幻读四、InnoDB是如何平衡安全与性能的?1. 隔离级别2. 版本链3. 版本链有什么用?4. MVCCReadView隔离级别对应的MVCC执行机制脏读案例总结前言事务我们知道,事务具有四大特性(ACID):原子性(Atomicity):令一个事务的所有操作不可分割,要么全部执行、要么全不执行。隔离性(Isolation):事务并
2021-07-07 21:37:58
759
4
原创 Spring AOP 编程思想---深入浅出
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、为一个方法增加额外功能引起的思考二、代理设计模式三、动态代理1.如何进行动态代理1.1 JDK动态代理1.2 CGlib动态代理1.3 额外功能的编码2.Spring工厂如何创建代理类对象总结一、为一个方法增加额外功能引起的思考额外功能指在核心业务实现上拓展出的一些辅助功能,比如日志、性能监测等。我们先来看如下案例:class UserServiceImpl implements UserService{ publi
2021-07-06 10:40:10
198
原创 Spring IOC 设计思想解读,由浅入深
文章目录前言一、由new一个对象引发的思考?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、由new一个对象引发的思考?不多BB,先上代码:class User{ private int age; private String name; public void set(..){.
2021-07-05 21:00:27
256
原创 深入理解java虚拟机---从new一个对象开始
文章目录前言一、前端编译阶段1.前端编译都做了什么?2.回到new一个对象2.1 词法分析2.2 语法分析2.3 填充符号表2.4 插入式注解处理器2.4 语义分析之标注检查2.5 语义分析之数据流与控制流分析2.6 解语法糖2.6 字节码生成二、代码运行1.类的加载过程1.1 类加载器1.2 双亲委派模型1.3 加载1.4 验证1.5 准备1.6 解析1.7 初始化2.继续往下走前言在我们探究new一个对象背后的故事前,我们首先应该牢记两个概念,同时这两个概念对于学习虚拟机从头到尾都是很有帮助的。.
2021-06-13 22:21:08
1286
1
原创 Java访问权限控制关键字总结_表格形式
表格罗列了public,包访问权限(无任何关键字),protected,private四种关键字修饰的访问权限,对号表示其他类可以访问,错号表示其他类不能访问,需要特别指出的是关于protected关键字修饰的变量或方法只对于其他包内的非继承类不可访问,其他类都可以访问。...
2020-11-22 22:02:44
327
原创 数字图像处理第四版更新内容
数字图像处理第四版相较第三版更新内容1、扩充了关于空间滤波基本原理的内容2、更全面地介绍图像变换的内容3、更完整地介绍有限差分,重点是边缘检测4、讨论聚类,超像素及他们在区域分割中的应用5、涵盖最大稳定极值区域的内容6、扩展特征提取的内容,包括尺度不变特征变换(sift)7、扩展神经网络的内容,包含深度神经网络、反向传播、深度学习,尤其是深度卷积神经网络8、在各章末尾提供更多的习题...
2020-09-16 19:03:19
2626
1
原创 C++_函数模板与类模板详解_深入浅出_助于理解
什么是模板?模板大致可分为函数模板与类模板,显然二者针对的对象不同,前者针对函数,后者针对类,但其思想都是一样的。我们在生活中经常听到模板这个概念,比如英语作文模板,ppt模板等等,C++中的模板概念同上述概念的思想相同,指的就是一个固定的格式,这个固定的格式在C++中代表着类中的结构体,函数中的函数体等等,通过模板我们可以加工出一系列产品,在保证了模板的固定格式相同外又有些细微的改动,这些所谓的改动在C++模板中的概念就是数据类型。综上所述,模板分为类模板与函数模板,类模板就是定义一个类,将类中的数
2020-09-16 17:08:53
256
原创 C++_拷贝赋值运算符详解_深入浅出_图文并茂
什么是拷贝赋值运算符拷贝赋值运算符就是上一章拷贝初始化中提到的“=”,即类与类之间的赋值操作依托赋值运算符进行,此处要注意区别下初始化与赋值的概念。//person是用户自定义类类型person p1=p2;//此处为拷贝初始化,即创建一个p1对象,使用创建好的p2对象对它进行拷贝初始化person p3;//调用默认构造函数初始化p1对象p3=p1;//将p1对象赋值给已经初始化好的p3对象person p4(30,"老王");//调用有参构造初始化p4对象p4=p1;//将p1的成员数据赋
2020-09-14 10:19:30
4823
1
原创 C++_详解拷贝构造函数_深入浅出_解决你的困惑
@拷贝构造函数什么是拷贝构造函数如果构造函数的第一个参数是自身类类型的引用,且所有其他参数(如果有的话)都有默认值,则此构造函数是拷贝构造函数。//创建一个person自定义数据类型,成员有年龄、姓名class person{ public: //定义有参构造并使用初始化列表进行初始化 person(int age, string name) :m_age(age), m_name(name) {} //定义拷贝构造函数 person(const person&
2020-09-13 18:19:18
601
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人