自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(354)
  • 资源 (6)
  • 问答 (2)
  • 收藏
  • 关注

原创 xxljob阻塞处理策略设置为单机串行导致的bug

之前我们公司有个项目需要每五分钟去拉取平台上的订单,于是乎我就在xxljob设置了这个定时任务,设置如下:然后xxljob内的代码如下: 错误描述: 然后我发现有些订单没有拉取下来有遗漏,对运营工作造成了影响。 我第一时间找到了没拉取下来的订单,看了一下定时任务打印的日志,发现定时任务执行有延迟,本来16:30以后还要再执行三次任务,但是日志中没有体现,16:30以后应该要执行的三次任务延迟到了16:52在执行。后来检查代码才发现执行pullOrderTask这个方法的

2025-03-27 14:36:15 9706

原创 idea中的查看git历史记录,不显示详细信息

1、idea中git查看history正常显示如下图:1、idea中git查看history,现在不显示提交的历史文件详细信息,如下图: 1、找到如下窗口中画红色框的黑色线条,鼠标放在黑色线条上,往下拖拽即可显示。

2025-03-05 15:16:52 18127

原创 流未关闭导致文件无法删除

生成excel文件方法:@Overridei++) {生成zip文件方法:@Overridetry {i++) {int length;log.error("生成热销品压缩文件错误,错误详情:{}",e);throw new BizException(FAIL_CODE,"生成热销品压缩文件错误");主方法:先生成excel之后删除excel,但是由于没有关闭fis的文件流,导致文件无法删除,因此关闭文件流即可。

2024-10-16 11:36:06 52944 1

原创 SpringBoot把nacos配置注入时数据注入时出现莫名错误

我在nacos的配置a是003457但是注入的数据是1839。

2024-07-23 15:17:05 16843 1

原创 多线程事务

我们在工作中经常会到往数据库里插入大量数据的工作,但是既需要保证数据的一致性,又要保证程序执行的效率。因此需要在多线程中使用事务,这样既可以保证数据的一致性,又能保证程序的执行效率。但是spring自带的@Transactional注解无法满足多线程间的事务一致性,因为这几个事务执行的线程不同,无法保持数据的一致性。

2024-05-25 23:01:25 43558 2

原创 No space left on device

删除掉/home这个节点下面比较占内存的文件即可。

2024-05-07 09:02:38 49120

原创 解决Oracle锁表的方法

在实际工作中,并发量比较大的项目,经常会出现锁表的问题,下面我将复现这个问题,并给出解决方法。

2024-04-24 11:33:02 51417

原创 CountDownLatch使用错误+未最终断开连接导致线程池资源耗尽

我设置了CountDownLatch对线程的协作做出了一些限制,但是我发现运行一段时间以后便发现定时任务不运行了。报错以后定时任务不运行了这是线程运行的状态,一直在等待状态并没有被释放,因此没有再执行任务。

2024-04-23 09:50:49 51697

原创 换行符导致字符串无法匹配

然后我用接口调的时候发现了异常,这个数据的前面有个换行符,但是用navicat之类的工具是看不出来的,因此对于备注这种东西最好用like来进行sql匹配。但是我使用navicat查看列表的时候并没有发现什么异常。我运行一句sql的时候,发现对应的字段查询不出结果。

2024-04-22 17:55:15 51109

原创 fastjson转换json时默认将属性第一个字母转小写

我新建了一个实体类,但是实体类的首字母是大写的,但是使用fastjson后打印的,Json字符串首字母却是小写的,这是fastjson的一个bug实体类: Json字符串:实体类上使用@JSONField注解以后就变正常了。代码修改如下:运行效果:

2024-04-19 16:52:14 52417

原创 SpringBoot日志打印控制

【代码】SpringBoot日志打印控制。

2024-04-11 11:40:02 51731

原创 未提交事务直接返回,导致连接池资源耗尽

我所撰写的代码如下,在使用编程式事务的时候,我未提交或回滚事务就直接返回,因为连接池默认连接数的大小是10,所以到第十一次的时候连接池就会使用完,导致任务无法进行。接口无法给予响应。

2024-04-11 11:15:36 52479

原创 未设置超时时间导致线程池资源耗尽,排查过程

我们一般认为线程处于blocked状态的时候线程才是处于阻塞状态,但是这个状态只是对于计算机来说的。对于我们来说,只要业务不执行了,线程就是处于阻塞状态的,因此任何状态下的线程对于业务来说都是阻塞的。

2024-04-10 16:57:15 53171 2

原创 Connection pool exhausted - try increasing ‘maxPoolSize‘ and/or ‘borrowConnectionTimeout‘ on the Dat

使用Atomikos这个插件配置参数AtomikosDataSourceBean时忘记配置MinPoolSize,MaxPoolSize,BorrowConnectionTimeout这三个参数,导致连接池资源耗尽。调接口时反应及慢,迟迟不响应,之后提示下面的报错。

2024-03-29 17:31:36 53877

原创 ORACLE常用SQL语句

【代码】ORACLE常用SQL语句。

2024-03-14 22:11:51 10489

原创 Atomikos常见问题

运行代码后事务不生效,即使发生了错误也无法回滚,数据仍然插入成功。此时事务生效,都没有插入成功。

2024-02-22 10:00:28 53828

原创 你们见过最老的项目有多老,我负责的项目在我没出生前就运行了

2024-02-19 15:06:13 54420

原创 使用C++从零开始,自己写一个MiniWeb

初始化可以分为五步:1、网络通讯初始化===>>>2、创建套接字===>>>3、绑定端口===>>>4、绑定套接字===>>>5、创建监听队列。浏览器发起新的访问时,会向服务器端发送一个请求报文。请求报文由4四个部分组成:请求行、请求头部行、空行、请求数据。在http.cpp最上面引入依赖,并撰写main方法,打印错误日志的方法。4、右击源文件,点击添加,新建http.cpp文件。2、选择空项目并点下一步(切记不能选错项目类型)3、填写项目名称和路径,点击创建即可。1、打开VS点击创建新项目。

2024-02-11 21:19:21 57688

原创 发现推特bug,建议加大应用启动时申请的内存并退位让贤,让我管理推特

发现推特bug,建议加大应用启动时申请的内存并退位让贤,让我管理推特

2024-01-29 10:55:01 53811

原创 MySQL中的free链表,flush链表,LRU链表

你在执行增删改的时候,如果发现数据页没缓存,那么必然会基于free链表找到一个空闲的缓存页,然后读取到缓存页里去,但是如果已经缓存了,那么下一次就必然会直接使用缓存页。反正不管怎么样,你要更新的数据页都会在Buffer Pool的缓存页里,供你在内存中直接执行增删改的操作。接着你肯定会去更新Buffer Pool的缓存页中的数据,此时一旦你更新了缓存页中的数据,那么缓存页里的数据和磁盘上的数据页里的数据,是不是就不一致了?这个时候,我们就说缓存页是脏数据,脏页。

2023-08-28 15:05:37 55609

原创 MySQL中的Buffer Pool

一、概述一、概述Buffer Pool是数据库的一个内存组件,里面缓存了磁盘上的真实数据,然后我们的Java系统对数据库执行的增删改操作,其实主要就是对这个内存数据结构中的缓存数据执行的。我们先来看一下下面的图,里面就画了数据库中的Buffer Pool内存组件。

2023-08-27 17:05:37 54739

原创 MySQL执行更新的流程

引擎要执行更新语句的时候 ,比如对“id=10”这一行数据,他其实会先将“id=10”这一行数据看看是否在缓冲池里,如果不在的话,那么会直接从磁盘里加载到缓冲池里来,而且接着还会对这行记录加独占锁。

2023-08-27 16:30:56 55425

原创 死锁产生的4个必要条件

1 . 产生死锁的必要条件:(1)互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。(2)请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。(3)不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。(4)环路等待条件:在发生死锁时,必然存在一个进程–资源的环形链。解决死锁的基本方法2 . 预防死锁:(1)资源一次性分配:一次性分配所有资源,这样就不会再有请求了:(破坏请求条件)

2023-08-19 22:19:25 55135

原创 线程池原理

线程池,按照配置参数(核心线程数、最大线程数等)创建并管理若干线程对象,没有任务的时候,这些线程都处于等待空闲状态。如果有新的线程任务,就分配一个空闲线程执行。如果所有线程都处于忙碌状态,线程池会创建一个新线程进行处理或者放入队列(工作队列)中等待。

2023-08-19 22:04:29 54697

原创 池化技术介绍

提前保存大量的资源,以备不时之需以及重复使用。池化技术应用广泛,如内存池,线程池,连接池等等。内存池相关的内容,建议看看 Apache、Nginx 等开源 web 服务器的内存池实现。由于在实际应用当做,分配内存、创建进程、线程都会设计到一些系统调用,系统调用需要导致程序从用户态切换到内核态,是非常耗时的操作。因此,当程序中需要频繁的进行内存申请释放,进程、线程创建销毁等操作时,通常会使用内存池、进程池、线程池技术来提升程序的性能。

2023-08-19 21:41:27 53961

原创 服务的拆分

标准是按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务。以社交App为例,你可以认为首页信息流是一个服务,评论是一个服务,消息通知是一个服务,个人主页也是一个服务。

2023-08-19 21:01:40 54452

原创 Java编译器中的优化技术

Java中的热点代码主要有两类,包括:1、被多次调用的方法。2、被多次执行的循环体。前者很好理解,一个方法被调用得多了,方法体内代码执行的次数自然就多,它成为热点代码是理所当然的。而后者则是为了解决当一个方法只被调用过一次或少量的几次,但是方法体内部存在循环次数较多的循环体,这样循环体的代码也被重复执行多次,因此这些代码也应该认为是“热点代码”。对于这两种情况,编译的目标对象都是整个方法体,而不会是单独的循环体。

2023-07-26 22:31:26 54556

原创 自己动手写一个编译器

Pcode 是 TinyC 编译器的中间代码,是本人参考 pascal 编译器的中间代码 pcode 、并结合逆波兰表达式(后缀表达式)的逻辑后,设计出的一种非常简单的、基于栈和符号表的虚拟代码。Pcode 虚拟机是一个用来运行 Pcode 命令的、假想的机器,它包括:一个代码区(code)、一个指令指针(eip)、一个栈(stack)、一个变量表(var_table)、一个函数表(func_table)以及一个标签表(label_table)。

2023-07-25 14:38:14 61735 3

原创 封装hiredis成dll包,为老项目提供redis网络支持

1、需要下载window8.1的SDK否则无法下载2、平台工具集需要使用Visual Studio 2015(v140)

2023-07-19 15:37:19 54627

原创 封装cpp-httplib成dll包,为老项目提供http网络支持

公司内某些老的项目不支持https或者http1.1的一些新功能,需要开发对应的SDK供其调用,以便维护老项目。

2023-07-19 08:40:31 55568

原创 环形链表(快慢指针)

给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true。否则,返回 false。

2023-07-12 21:38:42 53950

原创 通过反射机制获取父类在内的所有属性字段

我之前写的通过反射拿到接口入参是这样写的,但是这样写有一个问题,就是无法获得父类的参数信息,导致日志无法打印出全部参数。

2023-07-12 21:03:10 55856

原创 Web项目中耗时操作,用异步请求,减少请求等待时间,使用Redis保证操作幂等性

最近项目中碰到了一个接口需要比较耗时的操作,但是我们公司前后端交互的网关设置了超时时间。因此我需要设置出一个方案保证给用户比较快的响应,又保证任务执行了。因此我采用了,下面的操作方式。客户端发送请求后,我会先去Redis中检查是否还有任务在执行,如果有则不开启异步线程,如果没有则开启异步线程进行数据的业务操作。下面就是我写的伪代码。

2023-07-09 22:31:27 54268

原创 Redis 为什么这么快?

决定 Redis 请求效率的因素主要是三个方面,分别是网络、cpu、内存。在网络层面,Redis 采用多路复用的设计,提升了并发处理的连接数,不过这个阶段, Server 端的所有 IO 操作,都是由同一个主线程处理的这个时候 IO 的瓶颈就会影响到 Redis 端的整体处理性能。所以从 Redis6.0 开始,在多路复用及层面增加了多线程的处理,来优化 IO 处理的能力不过,具体的数据操作仍然是由主线程来处理的,所以我们可以认为 Redis 对于数据 IO的处理依然是单线程。

2023-07-04 09:36:31 54153

原创 Spring Bean 作用域的定义

3、request,用来定义一个作用范围仅在 request 中的 Bean,也就是说在每次 HTTP。4、session,用来定义一个作用范围仅在 session 中的 Bean,也就是说在每次 HTTP。2、prototype,用来定义一个 Bean 为多例,也就是说在每次请求获取 Bean 的时都会。5、globalSession,用来定义一个作用范围仅在中的 Bean。的一个实例对象,Spring 中的 Bean 默认都是单例的。重新创建实例,因此每次获取到的实例对象都是不同的。

2023-07-03 17:21:07 54641

原创 Nacos 配置更新的工作流程

Nacos Client 端需要获取服务端变更的配置,前提是要有一个比较, 也就是拿客户端本地的配置信息和服务端的配置信息进行比较。一旦发现和服务端的配置有差异,就表示服务端配置有更新,于是把更新的配置拉到本 地。在这个过程中,有可能因为客户端配置比较多,导致比较的时间较长,使得配置同步较慢的问题。所谓长轮训,(如图)就是客户端发起一次轮训请求到服务端,当服务端配置没有任何变更的时候,这个连接一直打开。进行判断,服务端会逐个比较这些配置中 md5 不同的 key,把存在更新的 key 返回给。

2023-07-02 14:46:39 54587

原创 零拷贝原理

须要经过几个拷贝的过程。从磁盘中读取目标文件内容拷贝到内核缓冲区,CPU 控制器再把内核缓冲区的数据赋值到用户空间的缓冲区中, 接着在应用程序中,调用 write() 方法,把用户空间缓冲区中的数据拷贝到内核下的 Socket Buffer 中。最后,把在内核模式下的 SocketBuffer 中的数据赋值到网卡缓冲区(NIC Buffer)网卡缓冲区再把数据传输到目标服务器上。在这个流程中,数据只经历了两次拷贝就发送到了网卡中,并且减少了 2 次 cpu 的上下文切换,对于效率有非常大的提高。

2023-07-01 15:39:47 54128

原创 Java的SPI

不过,在Java里面并没有提供实现,因为不同的数据库厂商,会有不同的语法和实现。所以只能由第三方数据库厂商来实现,比如Oracle是oracle.jdbc.OracleDriver,mysql是com.mysql.jdbc.Driver. 然后在应用开发的时候,根据集成的驱动实现连接到对应数据库。然后第三方可以实现这个接口来完成功能的扩展和实现。实例化会造成性能开销,并且加载一些不需要用到的实现类,会导致内存资源的浪费,在这个目录下,以接口的全限定名命名的配置文件,文件内容是这个接口的实现类。

2023-07-01 11:58:23 54390

原创 String、StringBuffer、StringBuilder 区别

最后是 StringBuilder,它比 StringBuffer 的性能高,因为 StringBuffer 加了同步锁。String 内部的 value 值是 final 修饰的,所以它是不可变类。所以每次修改 String 的值,StringBuffer 和 StringBuilder 是可变类,字符串的变更不会产生新的对象。String 的性能是最的低的,因为不可变意味着在做字符串拼接和修改的时候,需要重新。String 是不可变类,所以它是线程安全的。StringBuilder 不是线程安全的。

2023-07-01 11:36:37 54065

原创 受检异常和非受检异常

所以,除了 Error 和 RuntimeException 及派生类以外,其他异常都是属于受检异常,所谓的受检异常,表示在编译的时候强制检查的异常,这种异常需要显示的通过。而非受检异常,表示在编译器可以不需要强制检查的异常,这种异常不需要显示去捕捉。比如数据库异常、文件读取异常,这些异常是程序无法提前预料到的,但是一旦出现问。Exception 表示程序中的异常,可能是由于程序不严谨导致的,比如。这种异常和程序本身无关,所以不需要检查,属于非受检异常。行时异常,也是属于非受检异常。

2023-07-01 11:28:19 54386 2

【模拟飞行领域】微软模拟飞行2020终极版资源汇总:包含教程、机模、地景及插件下载链接和常见问题解答

内容概要:本文档主要提供了微软模拟飞行2020终极版的下载链接,涵盖天翼云盘、百度网盘和夸克网盘三个平台,并附上了访问码或提取码,方便用户从不同渠道获取游戏安装包。此外,还提供了一个百度网盘链接,其中包含教程、500种机型模型、地景以及插件等超过1000GB的附加资源,极大地丰富了玩家的游戏体验。针对可能出现的问题,如安装包解析错误等,给出了相应的解决办法,同时提醒用户在遇到问题时可以通过留言方式联系客服,由于客服繁忙,可能无法即时回复。; 适合人群:对飞行模拟类游戏感兴趣的玩家,尤其是已经拥有一定飞行模拟游戏经验,想要进一步提升游戏真实性和趣味性的用户。; 使用场景及目标:①为玩家提供便捷的官方正版游戏下载途径;②为玩家提供丰富的游戏扩展资源,包括但不限于教程、机型模型、地景和插件等;③帮助玩家解决在下载过程中遇到的基本问题。; 其他说明:建议用户在下载前确保网络环境良好,避免因下载不完整而导致安装失败;若非网盘会员,可优先选择天翼云盘以获得更快的下载速度。

2025-06-03

redis工具类可以方便的使用redis

redis工具类可以方便的使用redis

2025-03-31

黑神话:悟空能力提升器

黑神话:悟空能力提升器,可提升人物能力快速通关,告别枯燥的打怪升级

2025-03-05

作文格子纸(1000字)

作文格子纸(1000字)

2025-03-11

花生十三思维导图,思维导图

花生十三思维导图

2025-03-05

申论答题纸(A4完美打印版),PDF+WORD的版本

申论答题纸(A4完美打印版),PDF+WORD的版本

2025-02-03

录屏软件,ocam去广告版

录屏软件,ocam去广告版

2024-12-19

PB6.5学习资料,内含参考书目

PB6.5学习资料,内含参考书目

2024-03-08

Linux版本的nasm安装包

Linux版本的nasm安装包

2023-07-25

智慧社区管理文件,可作为学年论文项目,也可作为练手项目

项目使用技术:springboot+vue+element+js+axios+html5+bootstrap+shiro+maven,涉及到初级的增删改查功能。

2022-05-23

常见java面试题部分附解析

常见java面试题部分附解析

2022-05-23

批量发送邮件的脚本,适合较小的机构进行邮件批量发送

批量发送邮件的脚本,适合较小的机构进行邮件批量发送

2022-03-20

最新版 JDBC,版本号为mysql-connector-java-8.0.16

最新版 JDBC可以用java操作数据库

2022-03-20

利用python在boss网页版上自动与合适的候选人打招呼

利用python在boss网页版上自动与合适的候选人打招呼,简单易用减少HR工作量

2022-03-20

图书管理系统,该系统运用java驱动mysql,内含大量基础操作,阅读代码有利于提升基础操作水平。

图书管理系统,该系统运用java驱动mysql,内含大量基础操作,阅读代码有利于提升基础操作水平。

2022-03-20

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

TA关注的人

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