- 博客(2096)
- 资源 (57)
- 收藏
- 关注
原创 通过try-catch判断数据库唯一键字段是否重复
MyBatis+MySQL项目中可通过捕获数据库唯一约束异常来避免重复查询。MySQL违反唯一索引时会抛出SQL异常,MyBatis会将其包装为Java异常(如DuplicateKeyException或SQLIntegrityConstraintViolationException)。开发者可直接捕获处理这些异常判断数据重复,无需预先执行SELECT查询。优点包括减少数据库交互、避免并发竞争;缺点是异常处理开销略高于普通逻辑,频繁重复可能影响性能。适用于重复概率较低的场景,高频率重复建议优化业务设计。
2025-08-20 21:44:57
242
原创 java字符串split方法介绍
Java的split(String regex,int limit)方法中,limit参数控制拆分行为:1)limit>0时最多拆分limit-1次;2)limit=0时拆分全部但忽略末尾空串(默认);3)limit<0时拆分全部并保留空串。示例分别展示了不同limit值对"a|b|c|"字符串的拆分结果,如limit=2得["a","b|c|"],limit=0得["a","b","c
2025-08-11 21:20:16
308
原创 在纯servlet项目中,使用@WebFilter定义了多个filter,如何设置filter的优先级
在纯Servlet项目中,@WebFilter注解不直接支持过滤器优先级设置。控制执行顺序的方法有:1)通过web.xml文件按定义顺序控制;2)对使用@WebFilter的过滤器可尝试结合@Order注解(需框架支持);3)采用编程方式通过FilterRegistration.Dynamic注册过滤器并显式设置顺序。最可靠的方式是使用web.xml配置或FilterRegistration编程方式,可以确保精确控制过滤器的执行顺序。
2025-08-01 20:46:14
399
原创 Mac OS上docker desktop 替代方案
Colima是一个为开发者设计的轻量级容器运行时,它提供了一种简单、快速、安全的本地容器应用运行方案。与Docker Desktop相比,Colima易于操作,且具备自动重启容器、浏览器内打开应用等便捷功能。macOS的Docker Desktop对于小型企业(员工少于250人且年收入低于1000万美元)、个人、教育用途和非商业开源项目是免费的。其他情况下,需要付费订阅。注意:该命令只会安装docker的客户端。注意:重启后,会覆盖 vm 内的。] + [重启 Colima]
2025-07-17 16:00:17
478
原创 centos7修改yum源并安装Ansible
本文介绍了CentOS系统中配置阿里云yum源和通过EPEL安装Ansible的方法。第一部分详细说明了备份原配置、下载阿里云源、重建缓存的步骤。第二部分针对安装Ansible时"Nopackageavailable"的问题,指导用户先安装EPEL仓库(提供额外软件包支持),再安装Ansible并验证版本。文章还补充说明了EPEL仓库的特点,包括扩展软件生态、高兼容性、免费开源等优势。这些操作能有效提升软件下载速度和扩展系统功能。
2025-07-07 14:54:43
386
原创 替换springboot打好jar包中的class文件
摘要:Spring Boot项目通常使用spring-boot-maven-plugin打包为可执行jar。当需要临时替换class文件测试时,有三种方法:1)解压替换后重新打包(需注意普通jar命令会破坏启动器结构);2)使用jar命令直接更新jar中的class文件(推荐,保持启动器完整);3)使用zip命令更新jar包。后两种方法需确保新class文件路径与原jar内部路径一致。最稳妥的方式是使用Spring Boot工具重新打包或通过spring-boot-loader启动修改后的jar。
2025-07-03 21:55:51
472
原创 guava限流器RateLimiter源码详解
限流是保护高并发系统的三把利器之一,另外两个是缓存和降级。常用的限流算法有滑动窗口、令牌桶和和漏桶等。Guava中的RateLimiter使用的是令牌桶,对比其他,该算法可容忍一定突发流量的速率的限流,通过控制桶的容量、发放令牌的速率,来达到对请求的限制。如上图:令牌桶算法会维护⼀个令牌( token )桶,以⼀个恒定的速度往桶⾥放⼊令牌( token ):当令牌桶满了的时候,再向其中放令牌,那么多余的令牌会被丢弃;
2025-06-30 21:47:31
869
转载 同步、异步、响应式编程介绍
随着互联网用户规模的扩大,应用架构从单一应用演变为微服务架构,其中服务间通过RPC或HTTP通信,导致I/O成为性能瓶颈。传统阻塞架构使用多线程处理请求,但线程资源昂贵且上下文切换耗时,高并发下易导致系统负载激增。异步架构通过非阻塞代码提高CPU利用率,减少线程创建和上下文切换,提升效率。响应式编程通过流式处理和操作符简化异步编程,解决回调地狱和Future组合困难的问题,但调试复杂且易出现资源泄漏。对于I/O密集型应用,异步架构和响应式编程能显著提升性能,但需权衡操作复杂性和调试难度。
2025-05-12 17:49:06
163
原创 mybatis传递多个不同类型的参数到mapper xml文件
在业务中查询某张表时需要设置多个查询条件,并且还要根据id列表进行权限过滤,这时推荐采用Map<String, Object>作为参数进行查询,因为:Object可以设置成不同的类型,比如:List<Integer> ids, Map<String, Object>原因是mybatis的xml采用ONGI查询来解析,所以如果Bean中没有定义这个字段,就会报错。
2025-04-29 20:17:23
640
原创 JDBC简介
说到JDBC,很容易让人联想到另一个十分熟悉的字眼“ODBC”。它们之间有没有联系呢?如果有,那么它们之间又是怎样的关系呢?ODBC是OpenDatabaseConnectivity的英文简写,用C语言实现的,标准应用程序数据接口。通过ODBCAPI,应用程序可以存取保存在多种不同数据库管理系统(DBMS)中的数据,而不论每个DBMS使用了何种数据存储格式和编程接口。应用程序接口:屏蔽不同的ODBC数据库驱动器之间函数调用的差别,为用户提供统一的SQL编程接口。
2025-01-21 21:53:52
729
转载 深度解析lettuce,为什么单连接也可以处理高并发redis请求
什么是lettuceSpring Boot自2.0版本开始默认使用Lettuce作为Redis的客户端(注1)。Lettuce客户端基于Netty的NIO框架实现,对于大多数的Redis操作,只需要维持单一的连接即可高效支持业务端的并发请求 —— 这点与Jedis的连接池模式有很大不同。同时,Lettuce支持的特性更加全面,且其性能表现并不逊于,甚至优于Jedis官方是这样介绍的:Lettuce 是一个可扩展的线程安全 Redis 客户端,提供同步、 异步和反应式API。
2024-12-19 21:37:57
370
原创 IntelliJ IDEA配置(mac版本)
用惯了eclipse开发java的小伙伴们,初次接触IntelliJ IDEA可能会和我一样,多少有些不适感,在使用过程中总想着eclipse得对应功能。接下来,我就总结下我日常开发中遇到的常用配置(不包括快捷键,我认为每个人快捷方式不一样,二来网上一大堆)。
2024-11-26 21:18:45
1889
原创 DJL(Deep Java Library )介绍
它是在现有深度学习框架基础上使用原生Java概念构建的开发库。它为开发者提供了深度学习的最新创新和使用前沿硬件的能力,例如GPU、MKL等。
2024-10-30 22:14:25
1121
原创 Kd-tree介绍和使用
在介绍Kd-tree的相关算法前,我们先回顾一下二叉查找树(Binary Search Tree,BST)的相关概念和算法。若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树;例如,图1中是一棵二叉查找树,其满足BST的性质。
2024-09-30 22:47:40
1279
原创 在postman中使用javascript脚本生成sign签名
大多数线上api接口服务都需要提供签名才可以正常访问。虽然带来了安全,单有时为了快速验证接口的某个功能,就不得不编写代码,计算签名然后再请求。那么,使用postman提供的script功能,是否能实现签名计算功能吗?答案是:可以!接下来,我们就利用postman来完成这个接口api的签名和请求。
2024-08-30 21:29:10
1678
原创 NoSuchFieldError: Class JCTree$JCImport does not have member field
重建 Java 或 Spring 应用程序时,升级 Java 21 后,您可能会在构建过程中遇到 “NoSuchFieldError: Class JCTree$JCImport does not have member field” 的问题。让我们学习如何修复它。
2024-08-15 10:58:49
1288
1
原创 GeoHash原理介绍以及在redis中的应用
我们知道,经度范围是东经180到西经180,纬度范围是南纬90到北纬90,我们设定西经为负,南纬为负,所以地球上的经度范围就是[-180, 180],纬度范围就是[-90,90]。如果以本初子午线、赤道为界,地球可以分成4个部分。如果纬度范围[-90°, 0°)用二进制0代表,(0°, 90°]用二进制1代表,经度范围[-180°, 0°)用二进制0代表,(0°, 180°]用二进制1代表,那么地球可以分成如下4个部分:如果在小块范围内递归对半划分呢?可以看到,划分的区域更多了,也更精确了。
2024-07-23 21:35:23
1610
转载 RK键盘说明书 转载
以此类推,重复以上步骤,Fn+Q/W/E 可同时设置并存储三组不同的蓝牙设备,并且可在不同设备之间任意切换。支持同时存储/切换三台蓝牙设备,通过 Fn+Q/W/E 在三台已经配对成的蓝牙。短按:有线模式和蓝牙模式切换,切换成功后键盘指示灯闪烁三次。设备间相互切换,切换成功后键盘指示灯闪烁三次。长按 3 秒:进入蓝牙配对设置。
2024-07-16 22:20:27
9991
原创 替换spring-boot中的组件版本
在使用spring-boot搭建应用时,引入了spring-boot-starter-parent后,为什么在pom.xml中加入其他依赖时通常不需要指定version?
2024-05-09 17:33:08
1154
原创 项目升级到jdk21后 SpringBoot相关组件的适配
了解到jdk21是一个LTS版本,可以稳定支持协程的功能。经过调研,将目前线上的jdk8升级到21,使用协程提升并发性能。目前系统使用springBoot 2.0.3.RELEASE,并且引入了mybatis-spring-boot-starter、spring-boot-starter-data-redis、jasypt-spring-boot-starter。记录一下升级过程中遇到的问题和解决方法。
2024-04-16 22:04:31
7228
1
原创 java中的尾递归
在计算机学里,尾调用是指一个函数里的最后一个动作是返回一个函数的调用结果的情形,即最后一步新调用的返回值直接被当前函数的返回结果。尾递归和一般的递归的不同点在对内存的占用,普通递归每次递归调用时回创建新的stack,从而stack膨胀,随着递归的结束而后收缩。观察到,tailrecsum(x, y)中形式变量y的实际变量值是不断更新的,对比普通递归就很清楚,后者每个recsum()调用中y值不变,仅在层级上加深。注:上面的第二种仅为了说明尾递归,实际上python的编译器时不支持尾递归优化的。
2024-04-09 20:56:09
1664
原创 Hbase java客户端调优——Connections
本文将介绍以下java Hbase 客户端三个配置:不要使用单个Put,而是批量List如何控制每个 RegionServer 的 HBase 客户端连接数/Socket 数使用通用连接并共享池
2024-03-20 15:51:19
1481
原创 小数在java中默认使用双精度(double)表示的问题排查
默认小数在java中使用双精度表示,所以在反序列化或者类型转换时,需要注意,否则会报错:java.lang.Double cannot be cast to java.lang.Float
2024-02-29 16:13:53
1521
1
原创 linux SSH互信不生效问题排查
日志中很清楚的反应了因为/root目录权限的问题,导致互信失败。后来发现172.172.230.210 上的/root 目录的权限为777,修改为700或者750问题解决。根据日志可以看到,app用户被锁。发现仍然需要输入密码。确保SELINUX=disabled。
2024-02-01 21:27:54
1395
原创 eclipse安装astview插件
astview插件可以展示java源码经过词法、语法分析后生成的抽象语法树(AST)。本文介绍如何手工安装eclipse的astview插件。
2023-12-18 16:04:03
730
1
原创 yumdownloader介绍和使用示例
有时候公司的服务器外网权限控制的很严,不允许连接到外网。如果安装系统离线源之外的工具使用yum会直接报错;如果使用离线rpm安装的话,有很多依赖需要下载安装。yumdownloader神器的出现完美的解决这这个问题
2023-12-06 21:35:32
4133
转载 内存对齐(C/C++)
内存对齐是操作系统为了可以让 CPU 高效读取内存中的数据采用的一种策略,它使得数据在内存中都按一定的规则排列。本篇来解释一下内存对齐。
2023-11-01 14:47:41
1115
转载 理解Go语言struct的内存对齐
上图中右边是内存以8字节形式对齐,变量s中的f1占了1个字节,紧跟后边填充了7字节的padding,使后边的f2按照8字节对齐,在这种情况下s变量的带下为16字节。从这个例子可以看出,内存对齐减少了内存的读取次数,性能将更好,同时由于内存对齐保障了读取f2是单次读取,使得更易实现变量读取的原子性。字长是CPU的主要技术指标之一,指的是CPU一次能并行处理的二进制位数,通常CPU的字长为4字节(32位)、8字节(64位)。当我们输出变量s1和s2的Size时,S1的长度是6字节,S2的长度是是4字节。
2023-10-31 20:20:09
716
原创 基于http的protobuf服务实现
本文介绍在http协议中,使用protobuf格式进行通信。借助了springboot框架,指定http的Content-Type值为application/x-protobuf
2023-10-11 17:10:19
3090
原创 linux 防火墙iptables
iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用;现在又叫做iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能。
2023-09-25 11:30:59
381
原创 网络知识——局域网和交换机
介绍了局域网内通信的原理,涉及到DHCP获取ip、DNS、网关等信息;ARP协议获取局域网内ip地址;以及如何通过路由表进行转发,访问不通网段的机器
2023-09-22 18:01:46
8079
原创 Apache BeanUtils工具介绍
beanutils,顾名思义,是java bean的一个工具类,可以帮助我们方便的读取(get)和设置(set)bean属性值、动态定义和访问bean属性;细心的话,会发现其实JDK已经提供了一个java.beans包,同样可以实现以上功能,只不过使用起来比较麻烦,所以诞生了apache commons beanutils;看源码就知道,其实apache commons beanutils就是基于jdk的java.beans包实现的。
2023-08-22 10:38:24
1774
原创 在shell脚本中使用通配符(*)删除、移动某个目录
先说结论:在shell脚本中使用通配符(*)删除、移动某个目录,需要将拼接好的路径保存在一个变量中,然后在rm或者mv命令后面跟这个变量。如果在rm或mv命令后面进行拼接,则不生效。从打印中可以看到,如果将拼接的路径保存到一个变量后,打印出来的是将通配符(*)展开后的结果,所以对于rm或者mv命令会生效。如果在rm或mv命令后拼接则rm、mv命令不生效。
2023-08-04 00:21:46
992
1
原创 SWIG介绍和使用
SWIG 是一种软件开发工具,可将用 C 和 C++ 编写的程序与各种高级编程语言连接起来。SWIG 与不同类型的目标语言一起使用,包括常见的脚本语言,如 Javascript、Perl、PHP、Python、Tcl 和 Ruby。支持的语言列表还包括非脚本语言,例如 C#、D、Go 语言、Java,包括 Android、Lua、OCaml、Octave、Scilab 和 R。
2023-06-14 21:43:04
3540
原创 GMP库使用以及java中的BigInteger和BigDecimal
GMP library全称是GNU Multiple Precision Arithmetic Library,即GNU高精度算术运算库。在网络安全技术领域中各种加密算法的软件实现始终有一个共同话题是如何在普通的PC机上实现大数运算。普通的PC机内部字长最多时32位或64位,但各种加密算法中为了达到一定安全强度,都要求在128位、512位或1024位字长下进行加减乘除等数学运算,这叫做“大数运算在此前提下,如何在普通的PC机上高效快速的实现大数运算成为加密算法在普通PC机上软件实现的重要问题。
2023-06-07 00:10:35
2435
apache-maven-3.2.3-bin
2014-10-21
jquery 全屏显示插件
2015-03-20
macOS eclipse Launcher
2023-12-18
linux解析json工具——jq
2017-09-16
parquet-tools-1.6.0rc3.zip
2020-07-24
yesmeck-jquery-jsonview-v1.2.3-14-g01b1eb8.zip
2019-12-30
jQuery-Plugin-For-Easily-Readable-JSON-Data-Viewer.zip
2019-12-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人