自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (2)
  • 收藏
  • 关注

原创 记一次批量保存数据的优化史

数据源来源于Excel ,采用POI 解析后,保存到数据库中。一 、流程简介在数据导出时,会按照实体配置的模板,生成一种固定格式的Excel。例如第一行约定为实体的名称,第二行为字段名称(字段名称无顺序要求),从第三行开始就为数据行。所以导入数据的时候,也是按照此种格式解析。1. 结构说明由于系统的表结构基本都是父子表结构:于是导入的数据在Excel 中展示为:表示SO_001 这个订单下了2个商品。2. 优化点分析1) 上传文件部分优化前的处理为:java 代码读取文件流到POI 中

2021-04-07 07:42:01 807

原创 @EnableAsync 导致的 ClassCastException

问题出现的场景因系统庞大,为了找到问题原因和重现问题,自己用简单的模型复现问题。在此篇幅,就基于此模型进行分析。先介绍一下类图:左边是一个简单的类的继承关系:public class Animal {}public class Cat extends Animal {}public class Dog extends Animal {}右边的结构也是类似,代码如下:public interface Special<T extends Animal> {

2020-12-10 21:16:15 413

原创 AQS (AbstractQueuedSynchronizer)原理

AQS 原理AbstractQueuedSynchronizer 抽象同步队列简称 AQS,它是实现同步器的基础组件,类图如下:由上图可知,AQS 是一个 FIFO 的双向队列,其内部通过节点 head 和 tail 记录的队首和对尾元素,对列元素的类型为Node。其中Node的 thread 变量来存放进入AQS 队列里面的线程。Node 内部的 SHARED 用来标记该线程是获取共享资源时被阻塞挂起后放入AQS 队列中,EXCLUSIVE 是用来标记线程是获取独占资源时被挂起后放入AQS 队列的;

2020-12-09 08:39:39 221

原创 线程池原理及概念,如何确定线程池大小

线程池一、线程池的概念二、线程池原理三、线程池API1.接口定义和实现类2.方法定义3.任务执行过程4.Excutors 工具类四、如何确定线程数量一、线程池的概念线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件...

2020-05-07 23:25:47 2260 2

原创 Java agent 配置不生效 (哭笑不得的坑)

用IDEA 添加参数时,需要先明确添加的是什么参数,不要见框就填!!!

2024-04-13 11:49:44 275 1

原创 三步实现 Sentinel-Nacos 持久化

最后附上这部分源码梳理图,可以结合上述内容一起理解。

2024-01-30 22:42:30 1315

原创 【Sentinel 控制台无应用显示-如何排查】

在学习 Sentinel 的时候,可能会导致Sentinel dashboard 中无对应应用显示的问题,因无应用就无法开始后续的操作,因此此处分享如何排查应用不显示的方式。

2024-01-23 18:05:37 924

原创 【@EnableWebMvc的原理】

启用SpringMvc 的 Java 配置类,代替 xml 格式的配置文件。二、 的注解定义1、查看 的配置2、查看 5、 查看 WebMvcConfigurerComposite6、在哪进行初始化 的实现类?目的就是查找调用 的地方:根据上面的图可以知道:我自己实现的AppConfig 配置类,使用了注解: 和 ,而在进行配置类扫描的时候,依赖注入的属性会自动注入,也就是在启动容器时会自动执行: ,然后再一次调用

2023-10-24 19:53:27 581

原创 【Linux 安装Kibana 及 Es 分词器安装】

Kibana 集成 ElasticSearch

2023-10-09 18:02:45 1249

原创 【centos7安装ElasticSearch】

最近工作中有用到ES ,当然少不了自己装一个服务器捣鼓。本文的ElasticSearch 的版本:7.17.3。

2023-10-09 18:02:30 1705

原创 RocketMQ 快速搭建与控制台搭建

RockerMQ 4.9.5 带你入门

2023-09-04 15:15:53 1105

原创 JDK 19新特性之 VirtualThread

来执行对应的线程 (小百科:ForkJoinPool 是JDK 7加入的一个线程池类,在java.util.concurrent 包中。Fork/Join 技术是分治算法(Divide-and-Conquer)的并行实现,它是一项可以获得良好的并行性能的简单且高效的设计技术),因此,打印的时间输出是同一个时间,在线程睡眠的时候,依然可以做其他事情。: 表示 “可用于调度虚拟线程的平台线程数量。: 表示 “可用于调度程序的平台线程的最大数量。输出结果如下:(每个间隔3s,因为线程睡眠时间是3s )

2023-06-10 15:27:06 264

原创 IDEA 创建 Springmvc 项目

IDEA 创建 web 项目

2023-05-30 19:21:33 1611

原创 SpringBoot Controller层传入的参数进行解密

*** 解密请求/*** 加密响应体。

2023-05-25 18:04:28 1967 1

原创 【工具类-- posman导出的接口JSON 转为 jmx】

posman 转 jmx

2023-03-10 22:39:08 229

原创 【Windows 部署 doctron 】html转pdf,html 转图片

doctron : html 转PDF的工具,html 转图片

2023-03-10 18:29:06 410

原创 【Windows 安装GoPath】

Windows 配置 GoPath

2023-03-10 17:12:55 268

原创 ThreadLocal 实现原理

ThreadLocal 实现原理

2023-03-08 18:04:49 84

原创 seata 报错:RmTransactionException

3分钟解决分布式事务报错的问题

2022-08-11 17:32:49 1942

原创 抽象队列同步器(AQS)之 CountDownLatch 的原理

CountDownLatch 原理

2022-04-05 22:15:37 435

原创 ThreadLocal 原理及其扩展

ThreadLocal & InheritableThreadLocal 应该怎么用?

2022-03-28 07:15:00 238

原创 【垃圾回收器与内存分配策略(全)】

一文掌握垃圾回收机制

2022-02-11 16:49:08 635

原创 【synchronized 原理】

描述了 synchronized 的原理以及锁升级的过程

2022-02-08 14:39:00 400

原创 【xxl-job 学习之源码分析】

xxl-job 学习之原理分析前言大家在工作过程中,或许都对定时任务有所了解,那么业务需求多一点就会用特定的框架来实现(毕竟:专业的事交给专业的人去做)。因此就有了xxl-job 的出场机会,这里对于xxl-job 是什么,能做什么,如何使用不再赘述,此处只分析原理和实现机制。阅读对象:针对想了解xxl-job 源码和原理且拥有一定开发经验的朋友。文章源码所用版本: 2.3.1-SNAPSHOT资料下载与说明xxl-job 源码下载下载完成后用 IDEA 打开,结构如上所示。详解每一部分内容如

2022-02-07 18:03:39 945

原创 Mybatis 核心源码分析

一、Mybatis 整体执行流程二、Mybatis 层次结构三、源码分析

2022-01-17 10:06:38 8508 1

原创 查询一个数据库中某个列名存在哪些表,哪些库

在工作中遇到这样一个场景,需要找出数据库中所有的电话号码的字段。因此写一个程序自动去获取,因为一个服务器中数据库大概有几十个,一个数据库的表平均也是几十张表,并不能通过人力去一个个查找。代码如下:import com.alibaba.druid.pool.DruidDataSource;import org.springframework.http.MediaType;import org.springframework.web.bind.annotation.RequestMapping;i

2021-10-20 20:07:22 512

原创 NettyClientChannelManager : no available service ‘null‘ found, please make sure registry config...

seata 版本:1.3.0项目中在使用 Seata 作为分布式事务的时候,好像特别容易遇到这个错误~总结原因,还是对Seata配置参数不熟悉导致的。首先是看到错误描述,找到抛出错误的地方:看到 getAvailServerList(transactionServiceGroup); 的入参是:transactionServiceGroup。刚好在配置文件中也有一项配置与之对应:于是,上官网查看相关的参数配置,搜索serviceGroup将内容拷贝在这里了:事务分组说明。事务分组

2021-06-19 17:02:34 3250

原创 window 安装 Sqlite 并连接

下载安装包sqlite 下载地址解压进行安装下载上面框起来的包,保存到本地,都分别解压后放在同一个文件夹。例如我这里解压后都放在了d:/develop/sqlite3 下面:用cmd 命令进入到当前文件夹执行: sqlite3创建数据库如上截图,使用 .open filename to reopen on a persistent database..open test.dbCREATE TABLE user ( id bigint(20) NOT NULL, nick_n

2021-06-13 17:44:58 540 1

原创 基于 prometheus 和 grafana 监控 Nacos 2.0

nacos monitor展示核心监控项

2021-06-02 17:34:16 1002 1

原创 SpringBoot 启动流程

写在前面的话用SpringBoot 已经有很长一段时间了,在系统中架构中也使用了SpringBoot 的一些加载机制。比如:在系统启动前后执行数据库更新文件;自定义事件后在某个时机去执行具体的业务;再有就是修改一些自动配置类等。但都没有对SpingBoot 的启动流程做总结,那么今天就来总结一下。此篇源码基于版本:spring-boot-starter-parent:2.3.4.RELEASE启动流程详解关键注解:@SpringBootApplication众所周知,在SpringBoot 启动类上

2021-01-24 21:26:06 466

原创 处女座的我治好了MongoDB 未配置host,系统启动报错的问题

背景在开发中可能遇到这样的场景:比如使用MongoDB存储文件,但是同时又想支持MinIO 方式。在代码层面做了多种方式的接入。但就在做接入的时候遇到这样的问题:在application.properties 中配置了MongoDB的连接:file.storage.mode=MONGODBspring.data.mongodb.host=MONGO_DB_HOSTspring.data.mongodb.database=MONGO_DB_DATABASE熟悉SpringBoot 的小伙伴应

2021-01-19 23:18:08 864

原创 圣诞之 @Scheduled的原理

小小注解,背后也有大大的功能。众所周知,此注解一般用来标记定时执行的方法上,比如在用于服务器心跳检测,定时同步一些业务数据等的场景。定时任务执行的配置配置类实现 SchedulingConfigurer 接口,至于为啥需实现,往后读自然明白。/*** 异步执行任务线程池配置属性*/public class SchedulingProperties { boolean removeOnCancelPolicy = Boolean.FALSE; public boolean is

2020-12-25 11:17:03 402 1

原创 Spring AOP 的实现方式

Aop 相关名词切面(Aspect)一个横切功能的模块化,这个功能可能会横切多个对象(业务)。切入点(PointCut)可以插入“横切逻辑”的方法通知(Advice)前置通知(Before Advice)在切入点add() 方法前执行,插入的通知后置通知(After Advice)在切入点add() 方法前执行完毕之后,插入的通知异常通知(After Throwing)当切入点add()方法执行抛出异常时,插入的通知最终通知(After FinallyAdvice)当切入

2020-11-28 23:41:33 98

原创 Spring Bean的作用域

@TOCBean的作用域分类Bean的执行时机

2020-11-28 22:38:24 143

原创 Spring 依赖注入的方式(applicationContext.xml 和 Java Config)

依赖注入基于 applicationContext.xml 配置setXXX()构造方法注入P名称空间注入基于Java Config@Bean@Import用法之一用法之二用法之三在刚接触Spring 的时候,应该都是从Spring IOC(容器) 开始的,这里不具体讲Spring IOC 是什么,乃至于其中的原理,以下只会阐述Bean可以通过哪些方式让Spring IOC 帮我们管理。基于 applicationContext.xml 配置学习Spring早期都是从applicaionContex

2020-11-28 22:01:29 554

原创 Spring 事务总结

事务事务的种类JDBC 事务Hibernate 事务Spring 事务详解 Spring 事务Spring 事务的API事务统一接口:PlatformTransactionManager事务状态 TransactionStatus:事务定义 TransactionDefinition:事务的隔离级别:事务的传播行为:Spring 两种实现事务的方式方式1:@Transactional -- 编程式事务方式2: 声明式事务--AOP事务的种类从我们开始接触数据库时,就知道事务是什么。因为数据库操作离不开事

2020-11-03 20:14:06 96

原创 记JPA 保存数据异常: Row was updated or deleted by another transaction

用Hibernate的小伙伴可能也知道,偶尔会出现上述标题中的异常。但是此处陈述的情况前提是:代码写正确的情况。1.有两个对象,如下关系图:在B 类中引用了A类;2.代码的执行流程大致如下:(所有流程都是在一个事务中,其中编码唯一性校验是用切面的做的,未开启事务)3. 异常信息:javax.persistence.OptimisticLockException: Row was updated or deleted by another transaction (or unsaved-v

2020-09-27 21:18:26 5115

原创 解决 docker-compose command not found

题外话:恋上Linux 只是一段时间的事~,毕竟主要还是从事开发工作。之前捣鼓了一段时间docker,最终因加班而中断了,现在再次开始弄,却遇到这样那样的问题。总结下来就是:遇到问题直接上官网。众所周知,docker-compose 是属于docker的,当然是上Docker 官网:https://docs.docker.com/compose/install/执行箭头指定的命令,即可安装docker-compose 成功!如果命令执行完还是没能解决问题的话,可能你的原因和我的不同,就再多看看官网

2020-09-04 17:34:46 19509 5

原创 线程的异常捕捉

线程的异常捕捉场景代码演示之前总结过线程及线程池相关的文章,线程池创建也有多种方式,每种创建线程的方式又各有所异。这次总结子线程中异常的捕捉。场景在实际开发中,可能一些业务场景是需要开多条线程执行的,在执行过程中如果出现异常,是否能得到我们所期望的结果是和线程的执行方式有很大关系的。代码演示1.为做测试,此处自定义一个线程类:public class ThreadExceptionRunner implements Runnable { public void run() {

2020-06-12 16:29:20 427

原创 Java 中的锁分类以及锁的原理

锁的分类及基本概念乐观锁:假定没有冲突,在修改数据如果发现数据和之前获取的不一致,则读取最新的数据,再次尝试修改。悲观锁:假定会发生冲突,同步所有的数据的相关操作,从读数据就开始上锁。独占锁:给资源加上写锁,当前线程可以修改资源,其它线程不能再加锁(单写)共享锁:给资源加上读锁后只能读不能改,不能加写锁(多读)重入锁:同时加两次锁,不会出现死锁(再次拿到锁)可重入锁:同时加两次锁,会出现死锁(阻塞)公平锁:抢到锁的顺序和抢锁顺序相同则为公平锁非公平锁:抢到锁的顺序和抢锁顺序无关。synch

2020-05-18 22:56:58 774

Angular 实例(购物车展示)

Angular入门级代码测试,主要用到的技术:Angular双向绑定,Angular对数组的常规操作

2018-06-28

Axure RP8 中文版

AxureRP 8 中文版,实用的原型界面设计工具,新手上路的必备利器。安装之后将lang文件夹放置安装路径下即可运行!

2018-06-08

空空如也

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

TA关注的人

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