自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 有了InheritableThreadLocal为啥还需要TransmittableThreadLocal?

典型回答InheritableThreadLocal是用于主子线程之间参数传递的,但是,这种方式有一个问题,那就是必须要是在主线程中手动创建的子线程才可以,而现在池化技术非常普遍了,很多时候线程都是通过线程池进行创建和复用的,这时候InheritableThreadLocal就不行了。TransmittableThreadLocal是阿里开源的一个方案 () ,这个类继承并加强InheritableThreadLocal类。

2023-10-27 15:53:19 154

原创 并发编程总结

偏向所锁,轻量级锁都是乐观锁,重量级锁是悲观锁。一个对象刚开始实例化的时候,没有任何线程来访问它的时候。它是可偏向的,意味着,它现在认为只可能有一个线程来访问它,所以当第一个线程来访问它的时候,它会偏向这个线程,此时,对象持有偏向锁。偏向第一个线程,这个线程在修改对象头成为偏向锁的时候使用CAS操作,并将对象头中的ThreadID改成自己的ID,之后再次访问这个对象时,只需要对比ID,不需要再使用CAS在进行操作。

2023-05-31 23:56:19 823

原创 # 数据结构和算法面试题系列-随机算法总结

随机算法涉及大量概率论知识,有时候难得去仔细看推导过程,当然能够完全了解推导的过程自然是有好处的,如果不了解推导过程,至少记住结论也是必要的。本文总结最常见的一些随机算法的题目,是几年前找工作的时候写的。需要说明的是,这里用到的随机函数假定它能随机的产生范围[a,b]内的整数,即产生每个整数的概率相等(虽然在实际中并不一定能实现,不过不要太在意,这个世界很多事情都很随机)。

2023-04-26 23:20:50 695

原创 数据结构和算法面试题系列-排序算法之快速排序

快速排序也是基于分治模式,类似归并排序那样,不同的是快速排序划分最后不需要merge。对一个数组A[p..r]A[p...r]A[p...q-1]A[q+1...r]A[p...q-1]A[q]A[q+1...r]A[q][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-63GtmUft-1682512340729)(null)]快速排序算法不算复杂的算法,但是实际写代码的时候却是最容易出错的代码,写的不对就容易死循环或者划分错误。

2023-04-26 20:33:18 566

原创 数据结构和算法面试题系列-排序算法之快速排序

快速排序也是基于分治模式,类似归并排序那样,不同的是快速排序划分最后不需要merge。对一个数组A[p..r]A[p...r]A[p...q-1]A[q+1...r]A[p...q-1]A[q]A[q+1...r]A[q][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tzEJN01W-1682438818684)(null)]快速排序算法不算复杂的算法,但是实际写代码的时候却是最容易出错的代码,写的不对就容易死循环或者划分错误。

2023-04-26 00:07:50 459

原创 数据结构和算法面试题系列-排序算法之基础排序

排序算法也是面试中常常提及的内容,问的最多的应该是快速排序、堆排序。这些排序算法很基础,但是如果平时不怎么写代码的话,面试的时候总会出现各种bug。虽然思想都知道,但是就是写不出来。本文打算对各种排序算法进行一个汇总,包括插入排序、冒泡排序、选择排序、计数排序、归并排序,基数排序、桶排序、快速排序等。快速排序比较重要,会单独写一篇,而堆排序见本系列的二叉堆那篇文章即可。需要提到的一点就是:插入排序,冒泡排序,归并排序,计数排序都是稳定的排序,而其他排序则是不稳定的。

2023-04-25 23:53:03 467

原创 数据结构和算法面试题系列-二分查找算法详解

二分查找本身是个简单的算法,但是正是因为其简单,更容易写错。甚至于在二分查找算法刚出现的时候,也是存在bug的(溢出的bug),这个bug直到几十年后才修复(见《编程珠玑》)。本文打算对二分查找算法进行总结,并对由二分查找引申出来的问题进行分析和汇总。若有错误,请指正。

2023-04-25 23:50:42 513

原创 数据结构和算法面试题系列-二叉树面试题汇总

解决这两个问题的方案非常简单:在每次递归调用的时候,更新当前遍历结点的。

2023-04-22 17:57:12 767

原创 数据结构和算法面试题系列-二叉树基础

int value;} BTNode;其中value存储值,left和right指针分别指向左右子结点。二叉搜索树跟二叉树可以使用同一个结构,只是在插入或者查找时会有不同。

2023-04-22 17:47:23 596

原创 数据结构和算法面试题系列-二叉堆

使用数组来实现二叉堆,二叉堆两个属性,其中LENGTH(A)表示数组A的长度,而则表示存放在A中的堆的元素个数,其中,也就是说虽然都可以包含有效值,但是之后的元素不属于相应的堆。二叉堆对应的树的根为A[0],给定某个结点的下标 i ,可以很容易计算它的父亲结点和儿子结点。注意在后面的示例图中我们标注元素是从1开始计数的,而实现代码中是从0开始计数。注:堆对应的树每一层都是满的,所以一个高度为h的堆中,元素数目最多为(满二叉树),元素数目最少为。由于元素数目,所以,因此h = lgn。

2023-04-22 17:45:16 473

原创 数据结构和算法面试题系列-栈

我们使用结构体来定义栈,使用柔性数组来存储元素。几个宏定义用于计算栈的元素数目及栈是否为空和满。int top;} Stack;

2023-04-22 17:43:27 477

原创 数据结构和算法面试题系列-链表

先定义一个单向链表结构,如下,定义了链表结点和链表两个结构体。这里我没有多定义一个链表的结构体,保存头指针,尾指针,链表长度等信息,目的也是为了多练习下指针的操作。// 链表结点定义int value;} listNode;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PfeF6Pp6-1682156358128)(null)]

2023-04-22 17:41:33 588

原创 数据结构和算法面试题系列—字符串

字符串作为数据结构中的基础内容,也是面试中经常会考察的基本功之一,比如实现 strcpy,strcmp等基本函数等,回文字符串,字符串搜索,正则表达式等。

2023-04-16 10:32:58 384

原创 JUC源码系列-Semaphore源码研读

Semaphore(信号量)也是常用的并发工具之一,它常常用于流量控制。通常情况下,公共的资源常常是有限的,例如数据库的连接数。使用Semaphore可以帮助我们有效的管理这些有限资源的使用。Semaphore的结构和ReentrantLock以及CountDownLatch很像,内部采用了公平锁与非公平锁两种实现,如果你已经看过了ReentrantLock源码分析 和 CountDownLatch源码分析,弄懂它将毫不费力。Semaphore是一个有效的流量控制工具,它基于AQS共享锁实现。

2023-04-16 00:17:19 253

原创 JUC源码系列-ReentrantReadWriteLock

(1)首先说一下公平锁和非公平锁的区别,公平锁:当线程发现已经有线程在排对获取锁了,那么它必须排队,除了一种情况就是,线程已经占有锁,此次是重入,不用排队。非公平锁:只有一种情况需排队,其他情况不用排队就可以尝试获取锁: 如果当前全局处于读锁状态,且等待队列中第一个等待线程想获取写锁,那么当前线程能够获取到读锁的条件为:当前线程获取了写锁,还未释放;当前线程获取了读锁,这一次只是重入读锁而已;其它情况当前线程入队尾。

2023-04-15 18:37:02 660

原创 JUC源码系列-ReentrantLock源码研读

上一篇我们学习了lock接口,本篇我们就以ReentrantLock为例,学习一下Lock锁的基本的实现。Lock 接口ReentrantLock 实现lock()tryLock()unlock()从表中可以看出,ReentrantLock对于Lock接口的实现都是直接“转交”给sync对象的。ReentrantLock对于Lock接口方法的实现大多数是直接调用了AQS的方法,AQS中已经完成了大多数逻辑的实现,子类只需要直接继承使用即可,这足见AQS在并发编程中的地位。

2023-04-15 18:35:37 646

原创 JUC源码系列-Lock 和 Condtion

前面几篇我们学习了synchronized同步代码块,了解了java的内置锁,并学习了监视器锁的wait/notify机制。在大多数情况下,内置锁都能很好的工作,但它在功能上存在一些局限性,例如无法实现非阻塞结构的加锁规则等。为了拓展同步代码块中的监视器锁,java 1.5 开始,出现了lock接口,它实现了可定时、可轮询与可中断的锁获取操作,公平队列,以及非块结构的锁。与内置锁不同,Lock是一种显式锁,它更加“危险”,因为在程序离开被锁保护的代码块时,不会像监视器锁那样自动释放,需要我们手动释放锁。

2023-04-15 18:33:46 638

原创 JUC源码系列-CyclicBarrier源码分析

本篇我们来看看另一个和它比较像的并发工具CyclicBarrier。CyclicBarrier实现了类似CountDownLatch的逻辑,它可以使得一组线程之间相互等待,直到所有的线程都到齐了之后再继续往下执行。CyclicBarrier基于条件队列和独占锁来实现,而非共享锁。CyclicBarrier可重复使用,在所有线程都到齐了一起通过后,将会开启新的一代。CyclicBarrier使用了。

2023-04-15 18:24:37 875

原创 JUC源码系列-CountDownLatch源码研读

CountDownLatch是一个很有用的工具,latch是门闩的意思,该工具是为了解决某些操作只能在一组操作全部执行完成后才能执行的情景。例如,小组早上开会,只有等所有人到齐了才能开;再如,游乐园里的过山车,一次可以坐10个人,为了节约成本,通常是等够10个人了才开。CountDown。

2023-04-15 18:21:01 398

原创 JUC源码系列-AQS共享锁的获取与释放

共享锁与独占锁的最大不同,是共享锁可以同时被多个线程持有,虽然AQS里面没有成员用来保存持有共享锁的线程们。由于共享锁在获取锁和释放锁时,都需要唤醒head后继,所以将其逻辑抽取成一个的逻辑了。

2023-04-15 18:18:37 408

原创 JUC源码系列-AQS独占锁获取

AQS(AbstractQueuedSynchronizer)是JAVA中众多锁以及并发工具的基础,其底层采用乐观锁,大量使用了CAS操作, 并且在冲突时,采用自旋方式重试,以实现轻量级和高效地获取锁。AQS虽然被定义为抽象类,但事实上它并不包含任何抽象方法。这是因为AQS是被设计来支持多种用途的,如果定义抽象方法,则子类在继承时必须要覆写所有的抽象方法,这显然是不合理的。

2023-04-15 17:05:31 511

原创 JUC源码系列-AQS的Condition的接口实现

本篇文章是基于线程间的同步与通信(4)——Lock 和 Condtion 这篇文章写的,在那篇文章中,我们分析了Condition接口所定义的方法,本篇我们就来看看AQS对于Condition接口的这些接口方法的具体实现。Object 方法Condition 方法区别时间单位,返回值时间单位,参数类型,返回值Condition独有Condition独有这里先做一下说明,本文说wait方法时,是泛指wait()三个方法,当需要指明某个特定的方法时,会带上相应的参数。

2023-04-15 17:02:32 462

原创 JUC源码系列-ReentrantLock独占锁的释放

try {// 更新对象 //捕获异常 } finally {一定要记得在 finally 块中释放锁!!!

2023-04-15 12:07:58 850

原创 Synchronized修饰同步非静态方法、同步静态方法、同步代码块的区别

某个类Object中的某个静态方法staticMethod加上同步锁之后,当某个线程 Thread 调用staticMethod时该线程会获取Object类的锁(当前Object的锁没被其它线程获取时,若当前Object锁被其它锁获取则会进行等待。:某个类Object中的某个非静态方法Method加上同步锁之后,当某个线程Thread调用Method时会获取所对应的Object对象的锁,此时其他线程在Thread释放锁前都无法调用该对象中的任何同步非静态方法(所有非静态同步方法都共用其所属的对象的锁)

2023-04-15 00:56:45 277

原创 SpringBoot 事务不回滚的解决方法

springboot 事务失效的情况和解决方法

2022-10-12 16:23:17 3635

原创 说一下 Spring 事务传播机制?

java 事务传播机制讲解

2022-10-12 15:24:59 222

原创 加入事务和嵌套事务有的区别

嵌套事务和当前事务的区别

2022-10-12 11:50:41 392

原创 事务隔离级别(数据库层面)和传播机制(代码层面spring框架)的区别?

面试题收集,数据库事务和spring事务传播机制的区别

2022-10-12 10:42:28 396

原创 并发编程之CompletableFuture全网最细最全用法(一)

并发编程CompletableFuture api 讲解源码解读

2022-09-20 16:53:49 4631

原创 SpringBoot 优雅的参数效验!

不知道大家平时的业务开发过程中 controller 层的参数校验都是怎么写的?是否也存在下面这样的直接判断?public String add(UserVO userVO) { if(userVO.getAge() == null){ return "年龄不能为空"; } if(userVO.getAge() > 120){ return "年龄不能超过120"; } if(userVO.getName().isEmpty.

2021-08-16 16:44:56 147

原创 玩转Elasticsearch之高级应用(映射高级)

1. 地理坐标点数据类型地理坐标点地理坐标点是指地球表面可以用经纬度描述的一个点。 地理坐标点可以用来计算两个坐标间的距离,还可以判断一个坐标是否在一个区域中。地理坐标点需要显式声明对应字段类型为 geo_point :PUT /company-locations{ "mappings": { "properties": { "name": { "type": "text" }, "location": { "typ

2021-08-15 17:41:47 183

原创 Elasticsearch之入门使用(二)

玩转Elasticsearch之入门使用Elasticsearch是基于Lucene的全文检索引擎,本质也是存储和检索数据。ES中的很多概念与MySQL类 似 我们可以按照关系型数据库的经验去理解第1节 核心概念索引(index)类似的数据放在一个索引,非类似的数据放不同索引, 一个索引也可以理解成一个关系型数据库。类型(type)代表document属于index中的哪个类别(type)也有一种说法一种type就像是数据库的表,比如dept表,user表。注意ES每个大版本之间区别很大

2021-08-10 23:16:21 108

原创 Elasticseach 部署(一)

Elasticseach(一)Single-Node Mode快速部署Elasticsearch是一个分布式全文搜索引擎,支持单节点模式(Single-Node Mode)和集群模式(ClusterMode)部署,一般来说,小公司的业务场景往往使用Single-Node Mode部署即可。本文章我们先以Single-Node Mode部署实例,随后再专门写集群模式相关内容。1. 虚拟机环境准备准备一台虚拟机操作系统:CentOS 7.x 64 bit客户端连接工具:XShell关闭虚拟机的防

2021-08-05 23:58:10 162

原创 RabbitMQ架构与实战 (二)

RabbitMQ架构与实战 (二)

2021-08-03 15:37:10 118

原创 RabbitMQ架构与实战 (一)

RabbitMQ架构与实战第1节 RabbitMQ架构与实战1.1 RabbitMQ介绍、概念、基本架构1.1.1 RabbitMQ介绍RabbitMQ,俗称“兔子MQ”(可见其轻巧,敏捷),是目前非常热门的一款开源消息中间件,不管是互联网行业还是传统行业都广泛使用(最早是为了解决电信行业系统之间的可靠通信而设计)。高可靠性、易扩展、高可用、功能丰富等支持大多数(甚至冷门)的编程语言客户端。RabbitMQ遵循AMQP协议,自身采用Erlang(一种由爱立信开发的通用面向并发编程的语言)编写

2021-08-01 00:11:21 455

原创 java11 高级特性-flatMap

一、前提建三个类 class Foo { String name; List<Bar> bars = new ArrayList<>(); Foo(String name) { this.name = name; }}class Bar { String name; Bar(String name) { this.name = name; }}class Outer {

2021-07-28 15:49:44 297

原创 观察者模式在项目中的应用

标题观察者模式在项目中的应用观察者模式在 Java 语言中的地位非常重要。在 JDK 的 java.util 包中,提供了 Observable 类以及 Observer 接口,它们构成了 JDK 对观察者模式的支持。但是,在 Java9 被弃用了。 另外我们在JAVA应用中都会大量使用spring框架,在spring中也提供了观察者模式的实现。Spring 事件驱动模型也是观察者模式很经典的应用。就是我们常见的项目中最常见的事件监听器。标题理论说明先描述一下spring中实现观察者模式所定义的几个角

2021-07-23 00:03:35 1018 10

原创 RDP大屏幕报表sql问题

RDP大屏幕报表使用数据集sql查询出来是多条数据,页面配置数据集就只有一条数据了不影响的,正常拖拽字段配置数据就可以,大屏幕报表为了避免大量无用的数据加载,只显示一条数据结构,用于大屏幕配置,不影响大屏幕最终展示效果的...

2021-07-18 14:38:09 243

原创 2021-07-18

RDP 数据大屏报表轮播组件轮播打开大屏幕报表管理,点击“新建”,输入大屏幕报表名称,打开设计器,拖动“组件选择区”的“轮播组件”至“主设计区”,可进行设计,可在属性配置页面,调整一下组件的属性,例如分页类型等效果图如下:...

2021-07-18 14:35:08 85

原创 狂神说SpringBoot14:集成Swagger终极版

https://mp.weixin.qq.com/s/0-c0MAgtyOeKx6qzmdUG0w

2021-06-15 15:10:07 158 1

拉钩java高薪就业笔记.zip

学习笔记,精炼简洁

2021-05-20

1 Lambda表达式&函数式接口.md

Java8新特性markdown笔记,很详细

2021-05-20

阿里巴巴最新开发规约(泰山版).pdf.zip

阿里巴巴java开发规约,程序员必须掌握的开发规范,有助于实力的提升

2021-04-28

java高级工程师简历模板和诊断案例.zip

为java工程师提供,简历模板以及规范

2021-04-18

光环PMP三模试题及答案

光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案光环PMP三模试题及答案

2019-05-06

光环PMP二模试题及答案

光环PMP二模试题及答案

2019-05-06

光环PMP一模试题及答案

光环PMP一模试题及答案

2019-05-06

光环pmp十大知识领域五大过程组总结笔记

光环pmp十大知识领域五大过程组总结笔记让你记得更牢固,脉络更清晰

2019-05-05

光环PMP计算题总结与答案

光环PMP计算题总结与答案

2019-05-05

pmp光环十五至尊图输入输出总结

pmp光环十五至尊图输入输出总结,帮助你们提高记忆,并且强化训练

2019-02-12

2019光环pmp一模拟考试及解析

pmp光环一模考试和解析,里面有很好的解题思路和体型,想要通过的可以下载下来学习。

2019-01-23

空空如也

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

TA关注的人

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