自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 外接键盘的win键失效问题

键盘的Win键没反应可能是由于键盘被锁或系统模式切换导致的。以下是解决 Win键没反应的方法:解锁 Win 键:按住 Fn 键不放,然后按下 Win 键看能否恢复正常。如果不能,可以尝试按Fn+F2或Fn+F6解锁 Win键。

2025-11-19 10:54:31 240

原创 MySQL新增插入,重复更新操作业务实现

本文介绍了处理数据库"新增或更新"操作的几种方法。在业务代码控制方面,采用先查询后插入的方式,但存在性能差和并发风险问题。在SQL层面提出了三种解决方案:1)使用EXISTS判断避免重复插入;2)建立联合唯一索引,通过ON DUPLICATE KEY UPDATE实现冲突时更新;3)使用INSERT IGNORE忽略重复数据。重点分析了MySQL特有的ON DUPLICATE KEY UPDATE语法,说明其如何实现冲突时金额累加更新或跳过插入操作。这些方法可根据实际业务需求选择使用,其

2025-10-14 19:38:12 339

原创 MyBatis Plus注解 @TableField

摘要:@TableField是MyBatis-Plus的核心注解,用于映射实体类字段与数据库表列的关系。主要功能包括:通过value属性设置字段与列的映射关系;exist属性控制字段是否对应数据库列;fill属性实现自动填充策略。还提供FieldStrategy策略配置,包括IGNORED、NOT_NULL、NOT_EMPTY等5种策略,通过insertStrategy、updateStrategy、whereStrategy属性分别控制插入、更新、查询操作时的字段处理逻辑。支持全局和局部策略配置,注解配置

2025-09-30 17:19:38 727

转载 MySql explain关键字详解

使用explain可以模拟优化器执行SQL查询语句,从而知道MySQL怎么处理你的SQL语句的,分析你的查询语句和表结构的性能瓶颈。explain能够干什么读取表的顺序哪些索引能够被使用数据读取操作的操作类型哪些索引能够被实际使用表之间的引用每张表有多少行被物理查询。

2025-09-18 16:48:51 45

原创 (String)强制转换报错

错误提示表明在 Java 程序中尝试将Integer类型强制转换为String类型,而这两种类型在 Java 中是不兼容的,不能直接进行强制转换。id为一个int类型的参数,导致的报错。

2025-09-10 10:15:03 262

原创 EasyExcel导入文件报错 Convert data com.alibaba.excel.metadata.data.ReadCellData@2a019117

发现报错的这一列的数据我并不需要解析,而且我的实体类中也没有这个字段,可能是easyExcel将所有的列都进行解析了,导致的报错。查看错误,错误显示的是说 类型转换异常,想要将一个字段转换为Long类型失败了,通过listener中重写。我在使用easyExcel解析excel为我的代码中的实体类的时候,报了如上错误。就是在实体类中需要转换的字段前面添加注解。Value中的值要和列名对应。还要在实体类上面添加注解。

2025-08-13 09:11:02 616

原创 Mybatis @Param参数传递说明

MyBatis参数绑定规则总结:基础类型单参数可任意命名;集合类型默认名list/collection,数组用array;JavaBean直接使用属性名;多参数必须用@Param注解。集合和数组建议显式指定@Param以避免错误,JavaBean无需注解。遵循这些规则可有效防止参数绑定问题,提升代码可读性和稳定性。

2025-08-11 10:38:21 709

原创 MySql查询 值存在但查不到

MySQL查询时值存在但查不到的问题,通常是由于数据中存在不可见字符(如Unicode的U+FEFF零宽空格)导致。

2025-07-17 14:49:49 529

原创 如何在postman中传入文件参数

打开Body中的form-data,将请求所需的参数写到Key中,点击右侧的按钮选择File,在Value列中即可上传本地文件。

2024-09-27 15:48:45 1304

原创 Springboot项目实现easyExcel批量导入到数据库

在service中为了返回详细的错误提示,在读取数据之前,先将存储错误信息的list以set的形式给初始化;在数据插入结束之后调用listener中的函数返回错误信息。对数据的插入部分我写到了listener中,也可以写到Service中。若是项目中没有配置swagger不需要写。

2024-09-27 15:43:04 765

原创 启动vue项目

上面这些命令也可以直接在vscode终端中执行.

2024-07-16 18:20:23 365

原创 docker部署项目命令

Docker的三个基本概念:Image(镜像)Container(容器)Repository(仓库)Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱.

2024-07-16 17:13:11 1004

原创 SpringBoot使用Zxing生成二维码

ZXing,一个支持在图像中解码和生成条形码(如二维码、PDF 417、EAN、UPC、Aztec、Data Matrix、Codabar)的库。ZXing(“zebra crossing”)是一个开源的、多格式的、用Java实现的一维/二维条码图像处理库,具有到其他语言的端口。另外还可以使用一些其他的方式生成二维码,比如基于开源的Hutool工具生成二维码,可以参考SpringBoot系列(22):Java生成二维码的几种实现方式(基于Spring Boot)

2024-04-09 16:19:28 1121

原创 计算当前是第几周

【代码】计算当前是第几周。

2024-04-09 15:40:32 629

原创 springboot+websocket+微信小程序实现评论区功能

Springboot+websocket+微信小程序实现评论区的功能

2024-04-07 22:32:45 1293 2

转载 mybatis-plus 使用wrapper and和or连用,A and (B or C)

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了QueryWrapper自定义查询对象,可以无需手写sql,进行条件查询。在其中的and()和or()方法,可以进行条件的连接,写几个例子介绍一下使用方式;

2023-11-20 17:56:14 6149

原创 Springboot项目报错Invalid bound statement (not found):com.uyun.bankbranchalert.mapper.ReporterStatusMapp

【代码】Springboot项目报错Invalid bound statement (not found):com.uyun.bankbranchalert.mapper.ReporterStatusMapp。

2023-11-15 16:55:28 199

原创 springboot项目报错Cannot deserialize value of type `java.sql.Timestamp` from String “2023-11-13 15:39:21

主要是后台到前台的时间格式的转换。主要是前台到后台的时间格式的转换。

2023-11-15 16:35:02 933

原创 Springboot项目中打印日志

logging: level: com.uyun.bankbranchalert.mapper: debug root:info

2023-11-15 15:44:32 685

原创 idea 将分支的代码合并到master

(自己的分支是自己写的代码,需要合并到master分支去)

2023-11-06 10:43:33 2138

原创 InnoDB存储引擎中锁的范围

当一个事务获取了某一行的共享锁之后,其他事务可以继续获取该行的共享锁,但是不能获取排它锁。通过锁定范围内的间隙,间隙锁可以保证其他事务无法在范围内插入新的记录,从而避免了幻读问题的发生。是的,记录锁( Lock)是对数据库中的单行记录进行锁定的机制。当一个事务获取了某一行的排它锁之后,其他事务就无法获取该行的排它锁或共享锁,直到持有排它锁的事务释放锁。需要注意的是,间隙锁只会在某个范围内的间隙上加锁,而不会锁定具体的记录,其他事务仍然可以在范围内的间隙之外插入新的记录。

2023-09-09 22:08:31 389

原创 java解决 衣服尺码 Compare T-Shirt Sizes

一般来说衣服尺码分为L,M,S三种,分别代表大(Large),中(Medium)和小(Small)。不过由于人的身高差异性较大,尺码又会进行细分,会在L和S前面加上一个或多个X表示更大或更小的尺码。例如,XS比S小一个尺寸,XXS比XS小一个尺寸,而XL比L大一个尺寸,XXL比XL大一个尺寸,依此类推。有时候为了简化,当尺码前面有大于或等于两个X时,会简写为“X的个数+XL或XS”的形式,例如XXXL会简写为3XL,XXXXS会简写为4XS。接下来T行,每一行输入两个由空格隔开的字符串,分别表示尺码。

2023-09-07 22:20:37 784

原创 Java 线程池

简单理解,它就是一个管理线程的池子。它帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。因为线程其实也是一个对象,创建一个对象,需要经过类加载过程,销毁一个对象,需要走GC垃圾回收流程,都是需要资源开销的。提高响应速度。如果任务到达了,相对于从线程池拿线程,重新去创建一条线程执行,速度肯定慢很多。重复利用。线程用完,再放回池子,可以达到重复利用的效果,节省资源。

2023-09-06 16:39:18 550

原创 线程的6种状态

方法可以将 Java 线程置于 TIMED WAITING 状态。当超时时间到达后 Java 线程将会返回到 RUNNABLE 状态。当线程调用同步方法时,在没有获取到锁的情况下,线程将会进入到。进入等待状态的线程需要依靠其他线程的通知才能够返回到运行状态,而。状态相当于在等待状态的基础上增加了超时限制,比如通过。线程在执行 Runnable 的。

2023-09-06 16:30:56 215

原创 Spring 怎么解决循环依赖的呢?

Spring 循环依赖:简单说就是自己依赖自己,或者和别的 Bean 相互依赖。只有单例的 Bean 才存在循环依赖的情况,原型(Prototype)情况下,Spring 会直接抛出异常。原因很简单,AB 循环依赖,A 实例化的时候,发现依赖 B,创建 B 实例,创建 B 的时候发现需要 A,创建 A1 实例……无限套娃,直接把系统干垮。Spring 可以解决哪些情况的循环依赖?Spring 不支持基于构造器注入的循环依赖,但是假如 AB 循环依赖,如果一个是构造器注入,一个是 setter 注入呢?

2023-09-05 16:17:11 867

原创 进程,线程,协程

字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。在多线程的情况下,程序计数器用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪儿了。需要注意的是,如果执行的是 native 方法,那么程序计数器记录的是 undefined 地址,只有执行的是 Java 代码时程序计数器记录的才是下一条指令的地址。所以,程序计数器私有主要是为了线程切换后能恢复到正确的执行位置。

2023-09-03 14:55:57 375

原创 请求转发和重定向

客户端的行为,地址栏发生改变,有两个请求,重定向可以转发到任意地址(可以跨越),request中的数据不共享。服务端的行为,地址栏不会发生改变,只有一个请求,request当中的数据在servlet程序中共享。转发的地址只能是网站内的资源,不能转到百度等页面。不能重定向到WEB-INF中的页面。可以重定向到百度等页面。

2023-09-03 14:33:51 198

原创 死锁 && 银行家算法

银行家算法的核心是安全性检测子算法,这个子算法实际上就是个寻找安全序列的过程,如果能够找到一个安全的给进程分配资源的序列,就认为是安全的。在资源的动态分配过程中,使用某种方法防止系统进入不安全状态,从而避免死锁的发生。进程想要向操作系统申请资源,操作系统查看自己是否有足够的资源,若自己有足够的资源就分配给进程。(4)系统执行安全性检查,若此次分配资源后系统处于安全状态,就正式分配资源给进程P。(2)如果request>Max,表示操作系统没有足够的资源分配,让该进程继续等待。

2023-09-01 20:51:52 341

原创 Java 创建一个线程的方式

上面两种都是没有返回值的,但是如果我们需要获取线程的执行结果,该怎么办呢?Java中创建线程主要有三种方式,分别为。

2023-09-01 20:48:53 381

原创 java设计模式---策略模式

策略设计模式是一种行为设计模式。当在处理一个业务时,有多种处理方式,并且需要再运行时决定使哪一种具体实现时,就会使用策略模式。如果在一个系统里面有许多类,它们仅仅在行为上有区别,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为;一个系统需要动态地在几种算法中选择一种;如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。

2023-08-31 15:33:02 798

原创 单元测试及其工具Junit

下载完以后解压到你喜欢的目录下,假设是JUNIT_HOME,然后将JUNIT_HOME下的junit.jar包加到你的系统的CLASSPATH环境变量中,对于IDE环境,对于需要用到的junit的项目增加到lib中,其设置不同的IDE有不同的设置,这里不多讲。单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。线上错误的发现,排查问题,修复,测试环境验证到上线的周期一般半天起步。

2023-08-30 17:24:05 3222

原创 版本控制 Git工具的使用

没有进行版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,比如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。当在一个分支中已经存在的文件在另一个分支中被修改并提交,原分支中的文件再次修改为不同的内容提交,而后将其中一个分支合并到另一个分支的时候就会发生合并冲突:此时我们需要手动修改冲突。当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。

2023-08-30 17:16:57 1016

原创 JVM ZGC垃圾收集器

ZGC的染色指针技术将46位指针宽度的高4位取出来存储4个标志信息,通过这些标志位,虚拟机可以直接从指针中看到其引用对象的三色标记状态、是否进入了重分配集(即被移动过)、是否只能通过finalize()方法才能被访问到,如图3-20所示。是一款基于Region内存布局的,(暂时)不设分代的,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的,以低延迟为首要目标的一款垃圾收集器。大型Region(Large Region):容量不固定,可以动态变化,但必须为2MB的整数倍,用于放置。

2023-08-30 14:10:33 900

原创 JVM 垃圾收集器

CMS作为老年代的收集器,却无法与JDK 1.4.0中已经存在的新生代收集器Parallel Scavenge配合工作[1],所以在JDK 5中使用CMS来收集老年代的时候,新生代只能选择ParNew或者Serial收集器中的一个。和 ParNew 有些类似,但 Parallel Scavenge 主要关注的是垃圾收集的吞吐量——所谓吞吐量,就是 CPU 用于运行用户代码的时间和总消耗时间的比值,比值越大,说明垃圾收集的占比越小。主要垃圾收集器如下,图中标出了它们的工作区域、垃圾收集算法,以及配合关系。

2023-08-29 22:41:23 737

原创 JVM 访问对象的两种方式

由于 reference 类型在《Java 虚拟机规范》里面只规定了它是一个指向对象的引用,并没有定义这个引用应该通过什么方式去定位、访问到堆中对象的具体位置,所以对象访问方式也是由虚拟机实现而定的,主流的访问方式主要有使用。这两种对象访问方式各有优势,使用句柄来访问的最大好处就是 reference 中存储的是稳定句柄地址,在对象被移动(垃圾收集时移动对象是非常普遍的行为)时只会改变句柄中的实例数据指针,而 reference 本身不需要被修改。HotSpot 虚拟机主要使用直接指针来进行对象访问。

2023-08-28 21:35:45 1755

原创 JVM 给对象分配内存空间

如果堆的内存并不是规整的,已被使用的内存和空闲的内存相互交错在一起,那就没有办法简单地进行指针碰撞了,虚拟机就必须维护一个列表,记录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录。堆的内存是绝对规整的,内存主要分为两部分,所有使用过的内存被放在一边,空闲的内存被放在另一边,中间放着一个指针作为分界点的指示器,分配空间的时候,仅仅把指针向空闲方向挪动一段与对象大小相等的距离。实现简单,多线程下,效率不高,CAS+失败重试的形式完成的。

2023-08-28 21:27:00 905

原创 JVM 判定对象是否死亡的两种方式

这个算法的基本思路就是通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为“引用链”(Reference Chain),如果某个对象到GC Roots间没有任何引用链相连,或者用图论的话来说就是从GC Roots到这个对象不可达时,则证明此对象是不可能再被使用的。虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方法堆栈中使用到的参数,局部变量,临时变量等。方法区中类静态属性引用的对象,譬如Java类的引用类型静态变量。

2023-08-28 21:24:06 1321

原创 JVM 垃圾收集

标记-整理算法主要用于老年代,移动存活对象是个极为负重的操作,而且这种操作需要 Stop The World 才能进行,只是从整体的吞吐量来考量,老年代使用标记-整理算法更加合适。,也即每次新生代中可用内存空间为整个新生代容量的90%(Eden的80%加上一个Survivor的10%),只有一个Survivor空间,即10%的新生代是会被“浪费”的。其中的标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向内存空间一端移动,然后直接清理掉边界以外的内存。

2023-08-28 21:21:12 814

原创 JVM,JRE和JDK的区别

Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。众所周知java.exe是java class文件的执行程序,但实际上java.exe程序只是一个执行的外壳,它会装载jvm.dll(windows下,下皆以windows平台为例,linux下和solaris下其实类似,为:libjvm.so),这个动态连接库才是java虚拟机的实际操作处理所在。

2023-08-27 21:28:11 1968

原创 MySQL 更新语句是怎么执行的

从上图可以看出,MySQL 在执行更新语句的时候,在服务层进行语句的解析和执行,在引擎层进行数据的提取和存储;同时在服务层对 binlog 进行写入,在 InnoDB 内进行 redo log 的写入。update 语句的执行流程图,图中浅色框表示是在 InnoDB 内部执行的,深色框表示是在执行器中执行的。,一是 binlog 写入之前prepare状态的写入,二是 binlog 写入之后commit状态的写入。更新语句的执行是 Server 层和引擎层配合完成,数据除了要写入表中,还要记录相应的日志。

2023-08-27 14:53:33 326

空空如也

空空如也

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

TA关注的人

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