- 博客(44)
- 收藏
- 关注
原创 Mybatis多线程update
在多线程环境中使用MyBatis执行更新操作时,需关注线程安全和并发控制。首先,确保数据库事务隔离级别合适,如READ COMMITTED或REPEATABLE READ,以减少脏读和不可重复读问题。其次,可通过SELECT FOR UPDATE实现悲观锁,或在SQL中使用FOR UPDATE锁定行。乐观锁则可通过版本号字段实现,每次更新时检查并增加版本号。此外,避免共享资源竞争,确保SqlSession的线程安全,并合理配置数据库连接池。最后,实现异常处理和重试机制,如使用Spring的@Retryabl
2025-05-20 10:56:41
238
原创 MyBatis-Plus的updateBatchById方法在更新数据时,实体类中为空的属性不会被更新。
MyBatis-Plus的updateBatchById方法在更新数据时,默认会忽略实体类中为空的属性,即不会更新这些字段。若需更新空值字段,可通过以下两种方式解决:1. 字段级别更新策略:使用@TableField注解,将字段的更新策略设置为FieldStrategy.IGNORED,使该字段即使为null也会被更新。2. 全局更新策略:在Spring Boot的配置文件中(如application.properties或application.yml)设置mybatis-plus.global-conf
2025-05-20 10:53:22
424
2
原创 Oracle where条件执行先后顺序
在Oracle数据库中,WHERE子句的执行顺序由用户指定的逻辑条件决定,而非固定顺序。单个条件直接评估,多个条件通过AND连接时,依次评估所有条件,全部为真才选中记录;通过OR连接时,只要有一个条件为真即选中记录。Oracle优化器会根据表统计信息和索引选择最佳执行计划,用户可通过EXPLAIN PLAN查看。使用括号可明确条件优先级,复杂逻辑可能影响性能,建议通过合理索引和逻辑结构优化查询。
2025-05-14 17:06:49
534
原创 Oracle删除重复数据保留其中一条
在Oracle数据库中,要删除重复数据并保留其中一条记录,可以使用多种方法。这里介绍两种常见的方法:使用ROWID或使用ROW_NUMBER()窗口函数。
2025-03-03 18:50:05
1119
原创 Maven编译报Some problems were encountered while building the effective settings ‘profiles.profile.id‘
Maven的settings.xml文件中存在重复的配置项,导致ID冲突。具体错误提示’profiles.profile.id’ must be unique表明ID为nexus的profile被重复定义。
2025-03-03 14:53:50
567
原创 IDEA打包提示Error occurred during initialization of VM: Could not reserve enough space for object heap解决
在 File > Settings > Build Tools > Maven > Importing 中,将VM options for importer设置为。确保IDEA的 Project SDK(File > Project Structure > SDKs)与Maven导入使用的JDK版本一致。执行 File > Invalidate Caches / Restart,选择清理缓存并重启。注意:若系统内存较低(如8GB以下),建议将-Xmx设为512m。
2025-03-03 14:47:16
1111
原创 Java字符串包含另一个字符串,返回所有下标
在Java中,如果你想找到一个字符串中所有子字符串的出现位置,你可以使用String类的indexOf()方法。这个方法可以找到子字符串第一次出现的位置,但如果你要找到所有出现的位置,你需要在一个循环中连续调用indexOf(),并且在每次调用后更新起始位置。性能:对于非常大的字符串或频繁的查找操作,这种方法可能在性能上不是最优的。起始位置:每次调用indexOf()时,你可以指定一个起始位置。这种方法可以有效地找到一个字符串中所有子字符串的出现位置,并将它们存储在一个列表中。
2025-03-03 14:13:03
299
原创 Java枚举用法示例
在Java中,枚举(Enum)是一种特殊的类,用来表示一组常量值。枚举可以包含字段、方法和构造函数。下面是如何定义和使用枚举的基本示例。首先,我们定义一个简单的枚举Day,用来表示一周中的每一天:2. 使用枚举a. 遍历枚举你可以使用values()方法获取枚举的所有实例,并遍历它们:b. 根据名称获取枚举实例你可以使用valueOf(String name)方法根据名称获取枚举实例:c. 添加字段和方法你可以在枚举中添加字段和方法:d. 使用字段和方法使用定义的字段和方法:3. 实现接
2025-03-03 14:08:38
350
原创 Java数组判断是否存在某个值
使用循环遍历数组,逐个比较数组元素与目标值,如果找到相等的元素,则返回true,否则返回false。使用Java 8中的Stream API,通过调用anyMatch方法来判断是否存在满足条件的元素。使用Java 8中的IntStream,通过调用contains方法来判断数组中是否包含目标值。这些方法都可以判断数组中是否存在某个特定值,可以根据具体的使用场景选择适合的方法。
2025-03-03 11:49:11
457
原创 Oracle 随机数0-100000
在Oracle数据库中生成一个随机数(例如,0到100000之间的随机数),你可以使用DBMS_RANDOM包中的VALUE函数。DBMS_RANDOM.VALUE函数允许你指定随机数的范围。
2025-02-12 16:26:23
360
原创 Oracle分页sql语句
对于Oracle 12c及更高版本,推荐使用FETCH FIRST和OFFSET子句,因为它们使分页查询更加直观和简洁。对于旧版本的Oracle数据库(12c之前),可以使用基于ROWNUM的方法,但这种方法在处理大数据集时可能效率较低。根据你的Oracle数据库的版本选择合适的方法。如果你使用的是Oracle 12c或更高版本,建议使用第二种方法。如果你使用的是更早的版本,那么第一种方法仍然是一个可行的选择。
2025-02-11 11:34:23
219
原创 Oracle ORA-00054
错误 ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired 是 Oracle 数据库中常见的一个错误,通常发生在尝试获取一个已经被其他会话占用的资源时。这个错误有两种常见情况:使用 NOWAIT 选项: 在尝试锁定一个已经被其他会话持有的资源时,如果使用了 NOWAIT 选项,Oracle 将立即返回这个错误,因为不会等待资源变得可用。
2025-02-11 11:28:58
999
原创 Mybatis-plus缓存
MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上提供了更多的便利性和强大的功能,包括但不限于分页、条件构造器、通用 Mapper、代码生成器等。MyBatis-Plus 也内置了基础的缓存功能,但需要注意的是,MyBatis-Plus 本身并不提供复杂的缓存机制,例如二级缓存。不过,你可以通过集成第三方缓存框架或者使用 MyBatis-Plus 提供的简单缓存机制来实现缓存功能。
2025-01-27 19:38:32
1081
原创 Mybaties缓存机制
在 MyBatis 中,缓存机制是用来提高查询效率的一种方式。MyBatis 提供了两种内置的缓存机制:一级缓存和二级缓存。
2025-01-27 19:31:10
576
原创 Java yyyy-MM-dd HH:mm:ss.SSS转成yyyy-MM-dd HH:mm:ss
在Java中,如果你想要将日期时间格式从yyyy-MM-dd HH:mm:ss.SSS转换成yyyy-MM-dd HH:mm:ss,你可以使用SimpleDateFormat类。
2025-01-22 14:04:55
340
原创 Linux开放端口命令
在Linux系统中,开放端口通常意味着配置防火墙规则以允许特定的网络流量通过。这个过程涉及到两个步骤:首先是在服务器上配置服务监听指定的端口,其次是在防火墙中开放这些端口以允许外部访问。
2025-01-20 19:48:04
617
原创 Oracle FLOOR函数的用法
Oracle 的 FLOOR 函数用于返回小于或等于给定数字的最大整数。换句话说,它将数字向下取整到最接近的整数。这个函数在处理数值数据时非常有用,尤其是在需要进行数值舍入或分段计算的场景中。
2025-01-14 19:45:16
799
原创 Java集合根据字段排序
在这个例子中,我们创建了一个Person对象列表,并使用Collections.sort()方法和匿名内部类Comparator来根据age字段升序排序。在Java中,可以使用Collections.sort()方法和Comparator接口来根据对象的某个字段对集合进行排序。以下是一个简单的例子,演示了如何根据对象的一个int类型字段进行排序。假设有一个Person类,它有一个名为age的字段,我们将根据age字段对Person对象的列表进行排序。同样的方法可以应用于其他类型的字段和对象。
2025-01-07 12:41:12
384
原创 newInstance()方法是Java反射API中的一个重要方法
用于动态地创建一个类的实例(对象)。这个方法属于java.lang.reflect.Class类,当需要动态创建类的实例时,可以使用newInstance()方法。需要注意的是,从Java 9开始,newInstance()方法已被标记为过时(deprecated),因为它可能抛出异常,更好的替代方法是使用Class.getDeclaredConstructor().newInstance()。
2024-12-31 14:50:53
238
原创 Eclipse取消默认工作空间
在“General”->“Startup and Shutdown”->“Workspaces”中,勾选“Prompt for workspace on startup”选项。如果之前设置了默认工作空间并且不再询问,可以通过上述方法重新勾选“Prompt for workspace on startup”选项来恢复提示选择工作空间的设置。启动Eclipse后,选择菜单栏中的“Window”->“Preferences”。保存文件后重启Eclipse,将会弹出选择工作空间的对话框。
2024-12-30 10:00:20
347
原创 maven配置本地仓库,不从镜像下载jar包
在左侧菜单中选择“Build, Execution, Deployment” -> “Build Tools” -> “Maven”。在“Maven project”部分,选择你的项目使用的Maven配置文件,确保它指向你修改过的settings.xml文件。找到Maven的配置文件settings.xml,通常位于{Maven安装目录}/conf或用户目录下的.m2文件夹中。在右侧的“Runner”选项中,选择“Maven home directory”并指向你的Maven安装目录。
2024-12-11 10:56:44
692
原创 @SaCheckPermission注解
SaCheckPermission注解是一种用于权限校验的自定义注解,主要用于Sa-Token权限认证框架中。Sa-Token是一个轻量级的Java权限认证框架,主要用于解决登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权等一系列权限相关问题。
2024-11-27 11:23:50
1313
原创 pkill命令详解
pkill命令是一个非常强大的工具,用于根据进程名称或其他属性来终止进程。它是procps软件包的一部分,几乎所有的Linux发行版都预装了该软件包。如果未预装,可以通过包管理器进行安装。在Ubuntu/Debian上,可以使用sudo apt-get install procps命令安装;在CentOS/Fedora/RHEL上,可以使用sudo yum install procps命令安装。12。
2024-11-27 11:11:24
408
原创 Oracle 分组排序函数详解
在Oracle数据库中,GROUP BY语句用于将结果集中的数据进行分组,并对每个分组应用聚合函数。Oracle还提供了一些特殊的函数,可以在分组的基础上进行更复杂的操作,如ROW_NUMBER()、RANK()、DENSE_RANK()和FIRST/LAST等。
2024-11-25 16:32:15
1026
原创 Js字符串转驼峰命名
以上是三种不同实现方法,都可以将下划线分隔的字符串转换为驼峰命名。第一种方法使用 split() 函数和循环来处理字符串。第二种方法也使用循环,但是使用了字符串的一些内建函数来处理每个单词的转换。第三种方法使用 replace() 函数和正则表达式来替换下划线,并转换为大写字母。
2024-11-21 19:14:46
473
原创 如何优雅地处理NoSuchElementException异常
优雅地处理NoSuchElementException异常通常意味着在程序中预期到这种异常可能会发生,并编写代码来捕获、处理和记录该异常,而不是让程序崩溃或产生不友好的用户体验。在catch块中,记录一个有意义的错误信息,说明为什么会出现这个异常,以及可能的解决方案。在捕获异常时,记录详细的日志信息,包括异常类型、消息、堆栈跟踪以及任何相关的上下文信息。如果这个异常是在用户界面中抛出的,确保给用户提供一个友好的错误消息和可能的解决步骤。这可以通过编写一个返回默认值的方法或在捕获异常时设置默认值来实现。
2024-11-13 21:55:34
484
原创 Linux连接SFTP报ssh_exchange_identification: read: Connection reset by peer
Connection reset by peer” 是一个常见的网络错误消息,通常出现在使用TCP协议进行网络通信时。这个错误表明在尝试读写数据时,远程主机(peer)强制关闭了连接。
2024-11-13 10:30:18
1447
原创 Linux定时重启jar包
另外,需要注意的是,如果你的JAR包是以服务的形式运行的(例如使用了systemd或init.d),你可能需要使用不同的方法来重启服务,而不是直接杀死进程和重新启动JAR包。在Linux系统中,如果你想要定时重启一个正在运行的Java JAR包,你可以结合cron定时任务和简单的shell脚本来实现。你可以使用crontab -l命令来查看当前用户的cron任务列表,确保你的定时任务已经被正确添加。确保将/path/to/myapp.jar和/path/to/myapp.log替换为实际的路径。
2024-11-11 16:50:37
565
原创 linux杀死进程命令脚本
另外,脚本中的wait命令和相关的检查是可选的,它们用于确保进程确实被终止,并且可以处理任何由于尝试杀死一个已经不存在的进程而产生的错误。这将杀死所有名为myprocess的进程。请注意,脚本使用了pgrep来查找进程ID,然后使用kill命令来终止这些进程。如果你想要更强制地杀死进程,可以将kill替换为kill -9。在Linux中,如果你想要编写一个脚本来杀死特定的进程,你可以使用Bash脚本并结合kill命令。以下是一个简单的脚本示例,该脚本接受进程名作为参数,并杀死与该进程名匹配的所有进程。
2024-11-11 15:15:08
529
原创 Java集合Map之containsKey方法
参数key: 需要检查是否存在于Map中的键。返回值如果Map包含指定的键,则返回true。否则,返回false。示例// 创建一个HashMap// 向map中添加一些键值对// 检查是否包含某个键} else {// 检查另一个键} else {在这个例子中,我们首先创建了一个HashMap的实例ageOfFriends,并向其中添加了一些朋友的姓名和年龄。
2024-11-07 15:55:46
838
原创 Java判断文件或者文件夹是否存在,不存在创建,存在删除
在Java中,要判断文件或文件夹是否存在,并根据判断结果来执行创建或删除操作,你可以使用java.io.File类或者java.nio.file包中的类。以下是分别使用这两个类实现这个功能的示例代码。
2024-11-06 12:02:20
1444
原创 Java判断文件或者文件夹是否存在的方法
在这两种方法中,你首先需要创建一个表示文件或文件夹路径的对象(Path或File),然后使用exists()方法来检查路径是否存在。如果你正在使用Java 7或更高版本,并且想要更现代、更强大的文件I/O操作,那么java.nio.file包是更好的选择。否则,java.io.File类将是一个可行的替代方案。在Java中,判断文件或文件夹是否存在可以通过java.nio.file包或java.io包中的类来实现。这是自Java 7起引入的方法,它提供了更加现代和强大的文件I/O操作。
2024-11-06 11:33:34
999
原创 fastjson判断是否JSON字符串
在这个例子中,isJSONValid 方法尝试将输入字符串解析为一个JSONObject。如果解析成功,则返回true表明输入是一个合法的JSON字符串;如果解析过程中抛出异常,则捕获异常并返回false。在Java中,使用fastjson库判断一个字符串是否为JSON格式的字符串,可以通过尝试解析这个字符串为JSON对象来实现。如果解析成功,则说明字符串是一个合法的JSON格式。
2024-11-04 15:18:07
954
原创 任务调度报java.io.EOFException: readObject: unexpected end of file问题解决
应用启动报java.io.EOFException: readObject: unexpected end of file;估计有以前回退日志造成。
2024-11-04 11:59:48
411
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人