- 博客(45)
- 收藏
- 关注
原创 深入解析Java并发编程:线程池核心原理与最佳实践
3.1 内置策略对比策略类行为适用场景抛出严格要求任务完整性由提交任务的线程直接执行流量削峰,保证不丢任务静默丢弃新任务允许丢弃非关键任务丢弃队列头部的任务并重试提交新任务优先处理最新任务3.2 自定义拒绝策略示例(记录日志+异步重试)@Overrideif (!try {// 延迟重试});线程池不是“银弹”,需结合具体业务场景精细调校。理解其内部机制,善用监控工具,方能避免“线程风暴”与“僵尸线程”。没有最好的配置,只有最适合的配置。
2025-04-03 12:38:13
328
原创 Spring+hibernate项目碰见了死锁以及锁表的问题--真实线上老项目+sqlserver云数据库没有权限以及个人解决过程
任何报错都事出有因处理死锁问题思路确认发生死锁的方法--查看并发量--并发量大--大概率是同时操作改张表引发的问题--加乐观锁或者其他关键字可解决--必须明确事务的执行顺序并发量小--大概率是sql引起的问题--找到具体sql--优化sql,重建索引(索引失效引起)
2025-04-02 15:00:43
1994
1
原创 Vue3项目后台管理实现接入高德地图组件,并根据点击事件返回经纬度
项目框架SpringCloud+Vue3+uniApp,前后台均需要集成地图模块。
2024-11-28 16:36:02
313
原创 原生mybatis框架引入mybatisplus,调用接口时找不到原生Mapper自带的默认方法
这个框架的问题是出在配置mybatis的config文件当中,原本的config文件用的是SqlSessionFactoryBean去构建工厂Bean,需要将它替换成MybatisSqlSessionFactoryBean就欧克了,附上截图。1.yaml配置文件和@Mapper注解基本上可以不用关注,因为mybatis能用就证明这俩多半是没有问题的。2.再看看是不是映射出了问题,像Namespace的空间包名和Mapper没有对上之类的。
2024-10-13 18:50:45
471
原创 SpringBoot 支付宝集成接口 INVALID_PARAMETER 订单信息无法识别
网上百度了很多方法,都说传入的参数不对,所以一直在检查哪里是不是出问题了,也没怀疑官方的代码有问题。将product_code替换掉,解决了订单信息无法识别的问题。
2024-05-20 22:19:54
403
原创 elementui+vue通过下拉框多选字段进行搜索模糊匹配
在SQL中直接使用如'["01"]'这样的字符串,并尝试通过CONCAT函数将其嵌入到LIKE模式中通常是不直接支持的,特别是当数据库期望的是一个简单的百分号(%)引导的模式时,对于这种情况,需要对SQL语句进行更复杂的处理,因为LIKE和CONCAT无法直接处理数组。在这里,我们使用 or,意味着在每个 LIKE 条件之间添加 OR,形成类似 (nature like '%value1%' or nature like '%value2%' ...) 的结构。将数组转换成了以逗号分隔的字符串。
2024-05-07 15:39:30
999
1
原创 Vue通过下拉框选择字典值,并将对应的label以及value值提交到后端
1.因为做的产品性质是多选,它会以数组的方式提交,所以需要先将Json格式转变为String。方法会遍历数组中的每个元素,如果回调函数返回。后面的表达式不会执行,整个表达式的结果将是。,则整个表达式的结果将被右侧的空字符串。产品性质也是从字典中获取。2.提交表单,先访问了。是可选链操作符,如果。是逻辑或操作符,如果。dict_data表。产品品种从字典中获取。dict_type表。
2024-04-30 14:28:57
1263
原创 使用mybatisplus时 Cause: java.lang.IllegalStateException: Type handler was null on parameter mapping
而Map集合是插入不到数据库当中的,即使它为空并且数据库字段当中也没有,依然会报错,解决办法要么是写一个TypeHandle对它进行全局转换(没必要,毕竟不存入到数据库),要么加一个注解(可以解决)开发背景:原生框架为mybatis+springcloud,自主升级为mybatisplus后调用save方法时出现问题。实体类继承了BaseEntity 在BaseEntity当中有params字段。
2024-04-29 16:52:19
3933
5
原创 mybatisPlus中 Mapper层以及Service层的方法 整理分类 以及代码实操
是一个基于MyBatis的增强工具,旨在简化开发、提高效率。它提供了通用的mapper和service,可以在不编写任何SQL语句的情况下,快速实现对单表的CRUD、批量、逻辑删除、分页等操作。
2024-03-02 11:00:39
4880
原创 在原有项目进行业务逻辑开发:同一用户短时间不得提交多次申请,以及更新主表时数据刷新掉了角色权限以及密码重置的问题,详细思路及代码
其实问题也是出在了这里,当时将密码重置的问题解决后,在第二天发现权限消失了,又回来看这个代码,当时因为在User的实体类中定义了roleIdList的list集合,但是在数据库主表中的并未设置这个字段,而且注解设置的也是false不存在,然后在后面修正的代码测试时拿到的数据也是为空,我就在想会不会是其他的地方用到了这个字段,例如登录的时候对其进行了操作?用户提交表单后,插入到对应数据库表的字段中去,因需要保存是哪一个用户提交的,所以需要拿到主表的user_id,更新功能为记录提交时间,短时间不得再次提交。
2024-02-29 20:54:01
1090
原创 Vue前端对请假模块——请假开始时间和请假结束时间的校验处理
开发背景:Vue+element组件开发业务需求:用户提交请假申请单,请假申请的业务逻辑处理实现:用户选择开始时间需要大于本地时间,不得大于请假结束时间,请假时长根据每日工作时间实现累加计算。
2024-02-26 19:17:56
1082
原创 SpringBoot项目实现文件上传,MINIO+OSS阿里云
只能在创建桶时启用。retention:保留是指在一段时间内防止对象删除的规则。添加minio的配置文件,注意:@Value的注解导入是spring的原生注解。下载后是一个minio.exe的文件,可以先创一个文件夹来存放数据以及文件。versioning: 版本控制允许在同一个键下保留同一个对象的多个版本。再在管理创建用户拿到对应的ID以及Secret。quota:配额用于限制桶内的数据量。添加依赖后,在yml文件下配置相关配置。在文件的目录下cmd进入控制台。在yml文件中配置相对应的配置。
2024-02-23 16:10:32
1472
原创 Axios 中不同的 responseType 选项
这些选项允许您指定服务器响应的预期数据类型,从而使您能够在应用程序中适当地处理响应。例如,当下载图像时,您可能会使用。,而在获取 JSON 数据时,则会使用默认的。选择取决于您正在处理的数据类型。Axios 中不同的。
2024-01-26 16:37:40
2198
原创 Springboot通过前端发起请求,上传excel文件解析数据 postman进行操作
springboot版本3.2.0,数据库版本8mybatisplus版本3.5.4.1。
2024-01-17 21:24:48
826
原创 Springboot通过前端发起请求,拿到数据库中的数据并生成excel表格,postman请求并下载文件
springboot版本3.2.0,数据库版本8mybatisplus版本3.5.4.1。
2024-01-17 16:48:01
1030
1
原创 TortoiseGit 2.15.0.0 安装与配置(图文详细教程)
为TortoiseGit优化,并与Windows更好地集成。TortoiseGit是Tortoise为Git提供的版本可视化工具,简化了记忆。选择64-bit windows 下面的语言包也可以一并下载。配置git.exe 这个是检测git版本号 最好不去更改路径。此步骤需要将鼠标不停得在进度条上进行滑动。Add Key 添加private密钥。可以更改location安装地址。行的过程,将命令行可视化。然后直接install即可。可以在第一次启动时选择语言。也可以在设置当中去更改。
2024-01-15 14:37:34
4046
原创 JAVA面试部分——后端-框架前篇
在Spring框架中,@Async注解可以用来将一个方法标记为异步方法,以实现异步处理。@Async注解可以指定一个自定义的线程池,也可以使用默认的线程池。默认情况下,@Async注解使用的是Spring的默认线程池,即SimpleAsyncTaskExecutor。SimpleAsyncTaskExecutor是一个基于内存的线程池,它不具有任何线程生命周期管理的复杂性,不提供线程池的参数配置。如果你想使用自定义的线程池,可以通过在@Async注解上设置value属性来指定线程池的名称。
2024-01-15 08:54:01
979
原创 JAVA面试部分——后端-Redis
此外,Redis事务不支持原子性,即一个事务中的命令可能会被其他客户端的命令打断,导致数据处于不一致的状态。集合(Set): 应用场景:集合是一种无序的数据结构,可以存储多个不重复的字符串类型的元素,适用于实现交集、并集等操作。替代方案:在关系数据库中,可以使用一张表来存储集合数据,将元素作为一行记录,使用唯一索引来保证元素的不重复性。这意味着在MySQL中,一个事务中的所有操作要么全部提交成功,要么全部失败回滚,而在Redis中,一个事务中的操作不具备原子性,可能只部分执行。
2024-01-12 09:26:26
802
1
原创 Vue3 的基本开发+新特性
默认情况下在 <script setup>语法糖下组件内部的属性和方法是不开放给父组件访问的,可以通过defineExpose编译宏指定哪些属性和方法容许访问 说明:指定testMessage属性可以被访问到。如果我们要定义组件的 name 或其他自定义的属性,还是得回到最原始的用法——再添加一个普通的 <script> 标签。通过watch监听的ref对象默认是浅层侦听的,直接修改嵌套的对象属性不会触发回调执行,需要开启deep。顶层组件可以向底层组件传递方法,底层组件调用方法修改顶层组件的数据。
2024-01-11 16:21:56
958
1
原创 JAVA面试部分——后端-数据库后篇
这是因为幻读涉及到的是在一个事务内读取了另一个事务插入的新记录,即使在RR级别下,其他事务仍然可以在当前事务开始后插入新记录,因此可能导致幻读。第五范式(5NF)是最终范式,它消除了第四范式中存在的连接依赖,即在一个表中,如果存在与该表主键没有直接关系的非主属性,那么这个表就不符合第五范式。当一个事务需要在锁定范围内插入或更新数据时,InnoDB会升级该事务的锁定级别,并使用排他锁来锁定该范围内的所有行。总之,间隙锁是一种强大的锁定机制,通过锁定索引范围而不是实际数据行,可确保数据的一致性和完整性。
2024-01-11 08:44:16
1670
1
原创 通过Vscode 简单创建一个vue3+element的项目
确保你安装了最新版本的,并且你的当前工作目录正是打算创建项目的目录。在命令行中运行以下命令。
2024-01-10 20:03:08
1117
原创 git 上传本地文件到gitee或github
如果报错git push失败, 提示![rejected] master -> master (fetch first)error: failed to push some refs.解决办法。在需要上传的文件夹中选中Git Bash Here,git会创建一个文件夹。建议上传之前用 git branch 命令行看一下是否是master分支。在.git文件夹下的config文件添加以下字段即可。
2024-01-10 14:53:59
618
原创 JAVA面试部分——后端-数据库前篇
索引回表是一种数据库查询策略,用于处理在数据库中查询某个特定值但只知道其部分或模糊的信息的情况。通过先定位主键值,然后根据主键值扫描整行数据,以找到具体的行记录。避免索引回表的方法是使用覆盖索引。覆盖索引是一种特殊类型的索引,其中包含了查询所需的所有数据,因此无需回表获取数据。将被查询的字段建立到联合索引里去,这样就能避免索引回表。
2024-01-10 10:20:22
1794
原创 nodejs ‘cnpm‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
通过npm install -g cnpm --registry=https://registry.npm.taobao.org下载cnpm时成功后执行cnpm却显示 'cnpm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
2024-01-09 20:19:40
2851
3
原创 SpringMVC基础掌握--一图看懂三大处理器以及执行流程
Spring MVC所有的请求都经过Dispatcherservlet来统一分发。DispatcherServlet将请求分发给Controller之前,需要借助于Spring MVC提供的HandlerMapping定位到具体的Controller。HandlerMapping接口负责完成客户请求到Controller映射。Controllr接口将处理用户情求,这和Java Servlet扮演的角色是一致的。
2024-01-09 10:27:44
1217
原创 JAVA面试部分——后端-线程后篇
函数式接口是Java中的一种接口,它只包含一个抽象方法。在Java 8及以后的版本中,函数式接口被用于支持Lambda表达式和函数式编程。函数式接口在结构上的特点如下:只包含一个抽象方法。可以包含默认方法和静态方法。使用@FunctionalInterface注解进行标识,以确保它符合函数式接口的规范。除了抽象方法之外,函数式接口还可以声明默认方法和静态方法。默认方法允许在接口中提供方法的默认实现,可以被实现接口的类选择性重写。
2024-01-09 08:49:37
1246
原创 JAVA面试部分——后端-线程前篇
SynchronousQueue:一种无缓冲的等待队列,类似于无中介的直接交易,有点像原始社会中的生产者和消费者,生产者拿着产品去集市销售给产品的最终消费者,而消费者必须亲自去集市找到所要商品的直接生产者。同时,线程池中的线程状态也不同,有些是核心线程,有些是非核心线程。线程初始化的时候线程数量:初始时,线程池中的线程数量通常等于核心线程数。并行计算:线程池可以用于并行计算,将计算任务分解为多个子任务,分配给线程池中的线程并行执行,加速计算过程。只有拥有临界区的线程才能执行其中的代码,其他线程必须等待。
2024-01-09 08:48:46
1138
原创 Mybati--缓存基本概念 一图看懂
除了上述自定义缓存的方式,你也可以通过实现你自己的缓存,或为其他第三方缓存方案创建适配器,来完全覆盖缓存行为。这个示例展示了如何使用一个自定义的缓存实现。type 属性指定的类必须实现 org.apache.ibatis.cache.Cache 接口,且提供一个接受 String 参数作为 id 的构造器。这个接口是 MyBatis 框架中许多复杂的接口之一,但是行为却非常简单。
2024-01-08 11:04:27
892
1
原创 JAVA常见面试题——后端--集合篇
在 Java 中,线程安全的 Map 实现主要是。是一个线程安全的哈希表实现,与Hashtable不同,它提供了更好的并发性能。分段锁机制内部使用分段锁(Segment)来控制不同部分(段)的访问,将整个 Map 分成多个小的 Segment,每个 Segment 独立加锁,不同线程访问不同 Segment 的数据时可以并行进行,提高了并发性能。读写分离允许多个线程同时读取,但对于写操作,需要加锁。因此,它的读操作不会阻塞,可以并发进行。安全性保障:在保证并发性的同时,
2024-01-08 09:17:23
1679
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人