自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程同步工具

主要对比线程同步工具:CountDownLatch、CyclicBarrier、Semaphore【前言】 在一个主线程有多个子线程并发执行,如果不做任何处理,主线程跑完后,有可能拿不到子线程的执行结果用于业务处理。所以通常都需要在主线程中对于子线程进行join方法的调用,使得主线程阻塞,等待子线程执行完后再进行主线程的代码执行。【例子:】public stat...

2020-04-14 09:27:01 250

原创 图文结合教你SpringBoot中初始化Tomcat以及Tomcat运行原理

SpringBoot中是如何初始化Tomcat 的前言​ SpringBoot的创造简化了我们创建项目和运行项目的工作。我们不必再像SpringMVC时代那样,将项目先打包成jar包,然后放入Tomcat中再启动。我们可以忽略打包的操作和tomat的配置问题,编写完代码后直接启动项目即可。这一切都得益于SpringBoot的内置容器的实现。那么,SpringBoot具体是如何为我们完成了初始化Tomcat 的这一系列的操作的呢?下面我将以第一人称的学习源码视角带领大家来一起快乐分析SpringBoot的

2020-06-29 11:59:42 2732 1

原创 JUC并发包源码剖析之ReentrantLock

并发编程–ReentrantLock前言Java常规的多线程间协作的控制为通过synchronized关键字来实现。但是,synchronized并非使用于所有的并发场景,并且执行效率很低(只要存在于线程间切换时上下文切换)。所以在JDK-1.5版本之后引入了继承自Lock接口的ReentrantLock为首的很多对象锁。相比于synchronized来说,使用更加灵活。所以下面,主要以ReentrantLock为突破口来描述下ReentrantLock的具体实现流程以及其中的包含的数据结构和设计思想的

2020-06-23 15:27:16 259

原创 JAVA实现频谱分析

目录前言学习的意义:频域和时域图的展现项目Git地址一、理解时域、频域、FFT所有信号都是若干正弦波的和采样中的几个名词不得不说的几个理解误区二、加窗和窗函数的理解什么是加窗?理想是美好的,现实是骨感的体现加窗的意义形象加窗的意义加窗函数Hanning和Hamming窗Blackman-harris窗常见窗函数三、总结四、代码分享说明:波形图代码:频谱代码:采样点数补全方法:前言学习的意义:...

2020-06-04 14:50:25 5202 6

原创 原理性分析Switch和If的执行效率 -- 理解阿里代码规约

条件判断语句是程序的重要组成部分,也是系统业务逻辑的控制手段。重要程度和使用频率更是首屈一指,那我们要如何选择 if 还是 switch 呢?他们的性能差别有多大?switch 性能背后的秘密是什么?接下来让我们一起来寻找这些问题的答案。 测试代码 我们采用Oracle提供的JMH(JAVA微基准测试套件)框架来测试,首先引入相关依赖,在pom中添加如下:<!-- https://mvnrepository.com/artifact/org.openjdk.jmh/jmh-core.

2020-05-12 16:03:10 762

原创 SpringBoot整合Sqlite3+mybatisPlus+Druid 以及整合过程中的坑

坑1:【此处使用sqlite3,因为低版本不支持JDK1.8】 依赖引入 此处仅贴出sqlite3的依赖,其他根据自己项目的结构去引入对应的依赖即可 <!-- sqlite3驱动包 --> <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.27.2.1</vers.

2020-05-12 15:06:27 6531 2

原创 @Transactional注解失效的6种场景分析以及原理

@Transactional注解相信大家并不陌生,平时开发中常用的一个注解,它能保证方法内多个数据库操作要么同时成功,要么同时失败回滚。但是使用@Transactional有许多需要注意的细节,不然你会发现你的@Transactional总是莫名其妙的失效了。事务事务管理在系统开发中是不可缺少的一部分,Spring提供了很好的事务管理机制,主要分为编程事务和声明事务。编程...

2020-05-08 14:13:19 964

原创 SpringBoot常用注解

@SpringBootApplication 这个注解是SpringBoot项目的基石,创建SpringBoot项目之后会默认在主类(启动类)上加上。 我们可以把@SpringBootApplication看做是以下几个注解的集合: @Configuration @EnableAutoConfiguration @ComponentSc...

2020-05-07 10:47:32 213

原创 Lombok实际开发中的使用和理解工作原理

在JAVA应用程序中存在许多重复相似的、生成之后几乎不对其做更改的代码,但是我们还不得不花费很多精力编写它们来满足JAVA的编译需求。 比如在JAVA应用程序的开发中,我们几乎要为所有Bean的成员变量添加get(()、set()方法,这些相对固定但又不得不写的代码实在浪费精力,同时让类看起来更加的杂乱。我们希望将有限的精力更多的关注更重要的地方。Lombo...

2020-04-24 16:11:52 215

原创 开启新路

由于之前都是在公司内部的博客上去写一些工作中的学习新的,觉得基本除了领导会看看,也没什么人看,对于错误的指正也更别提了。所以现在开始打算同步在CSDN更新一些学习心得,希望大家可以批评指正,成为一个大牛的路很艰难,希望大家可以一起学习,一起进步。...

2020-03-12 09:57:50 63

原创 多种方式实现基于SpringApplication的监听特定事件

由于项目存在与硬件设备的多种交互,产生了以下业务内容:1、需要在项目启动时初始化特定的设备;2、特定设备的特定数值在发生变化时触发特定事件执行业务逻辑设计的初步大体思路为观察者模式或者监听来实现,考虑到使用观察者模式存在主题的列表维护、观察者的列表维护、主题更改或者取消后需要同时对于观察者进行代码更新的紧耦合的问题,决定采用基于SpringApplication的相关监听方式来实现。了解S...

2020-03-10 10:20:43 236

原创 基于Redis实现多模块共享流水号生成

public String obtainSyntheticBatchNo() { String begin = "0001"; String dateTime = DateFormatterEnum.SIMPLE_WITHOUT_HOUR.format(new Date()); String serialNumber = (String) redisTemplate.op...

2020-03-10 10:11:40 211

空空如也

空空如也

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

TA关注的人

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