JAVA
文章平均质量分 53
veminhe
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
东方通TongWeb安装与使用
2、在bin目录下找到startserver.bat,点击后启动TongWeb。默认系统管理员用户名及初始密码为:thanos/thanos123.com。首次登录要修改密码。5、部署应用,在应用管理里部署。4、启动成功后,本地访问。原创 2025-10-27 11:02:06 · 410 阅读 · 0 评论 -
Java异步编程实战:CompletableFuture的线程池配置与性能优
通过精细控制资源:4, // 核心线程数 (IO密集型建议调高)20, // 最大线程数 (根据压测结果调整)60, TimeUnit.SECONDS, // 非核心线程空闲存活时间newLinkedBlockingQueue<>(1000), // 任务队列 (避免无界队列导致OOM)newCustomizableThreadFactory("biz-thread-"), // 命名线程(日志可追溯)原创 2025-09-25 09:20:40 · 369 阅读 · 0 评论 -
面试官高频问:线程池原理,这篇讲透了(附代码案例)
标准回答:默认不会。maximumPoolSize是 “最大线程数”,当核心线程满、队列满时,线程池会创建 “非核心线程”(数量 = maximumPoolSize - corePoolSize),非核心线程空闲到keepAliveTime会被销毁。线程池的作用,就是提前创建一批线程 “待命”,任务来了直接用现成线程执行,任务结束后线程不销毁,放回池里等下一个任务。若 “活跃线程数” 长期等于 “最大线程数”,说明线程不够用,需检查是否 “任务执行耗时过长”(如 IO 阻塞),或适当调大 “最大线程数”。原创 2025-09-25 09:13:09 · 800 阅读 · 0 评论 -
什么是并发?什么又是并行?别再傻傻分不清!
你以为你起了二十个线程,就等于你有二十个CPU帮你干活,结果你把程序卡死了还在纳闷:怎么我人这么努力,系统还不感动?你电脑一个核,能干一件事,但你非要它干仨,它就只能左一下右一下,像老母亲照仨娃——这个哭了过去哄哄,那个饿了过去喂喂,轮着来。你说你理解了,结果一上代码全写死锁,JVM都崩。还有个坑,写代码的时候你以为你在写“并行”,结果你每个线程都在等数据库回包,CPU根本没在干活。而“并行”,就是仨保姆各看一个娃,互相谁也不碍着谁,谁也不用管谁是不是饿了,是不是哭了,各自干各自的,真正的同时发生。原创 2025-09-23 09:24:48 · 264 阅读 · 0 评论 -
java对map数据排序
【代码】java对map数据排序。原创 2025-09-17 08:38:30 · 223 阅读 · 0 评论 -
解决java.lang.SecurityException: JCE cannot authenticate the provider BC问题
仔细核对了我本地环境和其他同事本地环境的差别后,发现还有JDK的版本虽然都是1.8但是小版本不一致的差别,我把我本地的JDK从jdk-8u371-windows-x64换成了jdk-8u152-windows-x64后,启动服务后,能正常登录系统了。原创 2025-09-15 11:37:57 · 391 阅读 · 0 评论 -
线程的生命周期和状态控制
使用sleep方法之后,线程是进入阻塞状态的,只有当睡眠的时间结束,才会重新进入到就绪状态,而就绪状态进入到运行状态,是由系统控制的,我们不可能精准的去干涉它,所以如果调用Thread.sleep(1000)使得线程睡眠1秒,可能结果会大于1秒。与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。实际上,当某个线程调用了yield()方法暂停之后,优先级与当前线程相同,或者优先级比当前线程更高的就绪状态的线程更有可能获得执行的机会,当然,只是有可能,因为我们不可能精确的干涉CPU调度线程。原创 2025-08-20 09:15:50 · 185 阅读 · 0 评论 -
@RepeatSubmit()防止重复提交专题讲解
是一个用于防止表单重复提交的自定义注解,通过 AOP(面向切面编程)和拦截器模式实现,支持线程安全和分布式环境。。原创 2025-08-07 09:55:37 · 473 阅读 · 0 评论 -
Thymeleaf教程
参考:Thymeleaf教程(10分钟入门)-优快云博客参考2:Thymeleaf一篇就够了-腾讯云开发者社区-腾讯云参考3:https://juejin.cn/post/7376514713742147634Spring Boot 的视图(Thymeleaf)参考:Spring Boot 的视图(Thymeleaf)-优快云博客原创 2025-05-27 11:56:55 · 248 阅读 · 0 评论 -
java中线程安全的集合
在Java中,线程安全的集合通常是通过包中的类实现的。这些类提供了线程安全的集合,可以安全地在多线程环境中使用,而不需要额外的同步措施。原创 2025-04-29 19:55:44 · 345 阅读 · 0 评论 -
调用多线程的代码怎么捕获多线程的异常
系统会检查线程专有版本,如果没有发现,则检查线程组是否有专有的uncaughtException()方法,如果也没有,才会调用defaultUncaughtExceptionHandler.在出现问题的时候,打印线程栈 (jstack -pid) 一眼就可以看出是哪个线程出的问题,这个线程是干什么的。一旦异常逃出任务的run()方法它就会向外传播到控制台,除非你采取特殊的步骤捕获这种错误的异常。可以看到,线程池中有2个线程,当一个线程发生异常时,该异常被捕捉了。这将产生于前面示例相同的结果:未捕获的异常。原创 2025-04-18 16:46:13 · 551 阅读 · 0 评论 -
UNION和UNION ALL的主要区别
2、对排序的处理:UNION会按照字段的顺序进行排序,而UNION ALL只是简单的将两个结果合并后就返回,不会对结果进行排序。根据以上区别,在选择使用UNION还是UNION ALL时,应根据实际需求权衡是否需要去重和排序,以及考虑对查询性能的影响。1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,而UNION ALL不会去除重复记录。UNION和UNION ALL的主要区别在于处理重复数据和排序的方式。原创 2025-04-18 10:31:53 · 1106 阅读 · 0 评论 -
调用垃圾回收函数是否会立即执行
参考:原创 2025-04-18 10:29:50 · 245 阅读 · 0 评论 -
详解ConcurrentHashMap
1、ConcurrentHashMap是什么。原创 2025-03-12 18:32:55 · 155 阅读 · 0 评论 -
ubuntu安装JDK11(二)
【代码】ubuntu安装JDK11(二)原创 2025-02-24 13:58:40 · 718 阅读 · 0 评论 -
maven使用默认settings.xml配置时,Idea基于pom.xml更新依赖时报错,有些组件下载时连接超时
1、问题背景:maven使用默认settings.xml配置时,Idea基于pom.xml更新依赖时报错,有些组件下载时连接超时,2、解决办法:使用国外镜像有时候会这样,换用国内镜像后,刷新依赖正常了,项目能启动了。在用到的settings.xml文件,换用阿里云的mirror,配置如下图所示。通过日志发下,去连接maven.org网站下载依赖,有时候肯定会超时。原创 2025-02-14 11:30:31 · 522 阅读 · 0 评论 -
分布式任务调度框架:XXL-JOB(入门篇)
在数据库中建立相应的库和表、初始化数据,脚本放在doc中。2、下载到本地后,在Idea中打开,原创 2025-01-21 17:30:00 · 288 阅读 · 0 评论 -
Java中实现定时任务的方法
2.3、使用JDK自带的ScheduledExecutorService。既要能实现定时任务,也要方便维护,有页面可以用来维护。2.4、使用SpringTask实现定时任务。2.2、使用java.util.Timer。2.1、Thread线程等待。原创 2025-01-21 10:36:00 · 276 阅读 · 0 评论 -
java怎么启动定时任务
1、需求背景2、技术选型3、项目实战。原创 2025-01-20 18:21:29 · 166 阅读 · 0 评论 -
什么是接口的幂等性,如何实现接口幂等性?
1、发到。原创 2024-10-11 13:34:37 · 53 阅读 · 0 评论 -
认识 MySQL 和 Redis 的数据一致性问题
而当线程B从数据库读取完数据、更新了缓存后,线程A才开始更新数据库,此时,会导致缓存中的数据是旧值,而数据库中的是最新值,产生“数据不一致”。无并发请求下,在更新数据库和删除缓存值的过程中,因为操作被拆分成两步,那么就很有可能存在“步骤1成功,步骤2失败”的情况发生(由于单线程中步骤1和步骤2是串行执行的,不太可能会发生“步骤2成功,步骤1失败”的情况)。更新(修改/删除)数据时,先删除缓存。“数据一致”一般指的是:缓存中有数据,缓存的数据值=数据库中的值。原创 2025-01-17 18:41:06 · 1109 阅读 · 0 评论 -
Java实现求两个数的最大公约数和最小公倍数
【代码】Java实现求两个数的最大公约数和最小公倍数。原创 2024-12-04 18:02:59 · 335 阅读 · 0 评论 -
spring boot学习第二十一篇:实现电子文件签字盖章+合同系统
1、文档参考:2、实际使用过程。原创 2024-11-21 12:01:47 · 216 阅读 · 0 评论 -
Spring AI入门
1、原创 2024-10-23 15:46:28 · 149 阅读 · 0 评论 -
ThreadLocal实践
1、原创 2024-10-09 16:11:39 · 335 阅读 · 0 评论 -
PowerJob入门
1、原创 2024-09-27 18:39:14 · 145 阅读 · 0 评论 -
逻辑长路短路“且“运算
2、短路且运算的特点:当运算符号左边的关系运算结果是false时,不再进行右边的关系运算,直接得出false的结果。2、长路且运算在两边都是整数时,是逐位且运算;步骤3、计算 false & true ,逻辑运算结果是false。步骤1、计算 4<3,结果是false,直接得到结果false.3、长路且运算会将两边的关系运算结果都计算出来。步骤2、计算5*3 >12 ,结果是true。【示例】 4<3 && 5*3>12。【示例】4<3 & 5*3>12。步骤1、计算4<3,结果是false。原创 2024-08-29 11:07:29 · 369 阅读 · 0 评论 -
逻辑长路短路“或“运算
2、短路或运算的特点:当运算符号左边的关系运算结果是true时,不再进行右边的关系运算,直接得出true的结果。为了方便的验证第3点,我将4<3改成方法,方法里面返回false,但是返回false之前会打印相关内容作为标记。2、长路或运算在两边都是整数时,是逐位或运算;步骤3、计算true | false,逻辑运算结果是true。步骤1、计算 5*3 > 12,结果是true。步骤1、计算5*3 >12 ,结果是true。【示例】 5*3>12 || 4<3。步骤2、计算4<3,结果是false。原创 2024-08-29 10:53:52 · 389 阅读 · 0 评论 -
java多线程(八)深入解析Java中的synchronized关键字:用法、原理与最佳实践
待补充。原创 2024-08-22 18:55:39 · 352 阅读 · 0 评论 -
java多线程(七)AQS(AbstractQueuedSynchronizer)技术解析:以赛跑起跑场景为例
AQS作为一个通用的同步框架,为Java并发编程提供了极大的便利。通过继承AQS并重写相应的方法,开发者可以轻松地实现自定义的同步逻辑,而无需深入了解底层的同步机制。这使得Java并发编程变得更加简单、高效。此外,AQS还提供了丰富的同步特性,如可重入性、可中断性、超时等,这些特性使得基于AQS实现的同步工具更加灵活、强大。原创 2024-08-22 18:50:53 · 724 阅读 · 0 评论 -
java多线程(六)关键字Volatile可见性、有序性以及单个变量的原子性
Volatile是Java多线程编程中的一个重要关键字,它确保了变量的可见性、有序性和部分原子性。正确使用volatile关键字可以避免多线程中的一些问题,如数据不一致和指令重排序等。然而,需要注意的是,volatile并不能保证复合操作的原子性,对于这类操作,需要使用synchronized或原子类来保证线程安全。原创 2024-08-22 18:16:52 · 870 阅读 · 0 评论 -
Java多线程(四):线程与线程组
Java多线程编程是构建高效、响应迅速的应用程序的关键技术。通过合理利用线程与线程组,以及掌握同步与互斥锁的机制,开发者可以在实际项目中充分发挥多线程的优势,提升程序的性能和用户体验。原创 2024-08-22 17:11:43 · 410 阅读 · 0 评论 -
java多线程(三)重排序与Happens-Before
定义:重排序是指编译器和处理器为了提高程序执行效率,在不改变单线程程序执行结果的前提下,对指令执行顺序进行重新排列的一种优化手段。重排序可以发生在编译器优化阶段,也可以发生在处理器执行指令阶段。含义编译器优化的重排序:编译器在将高级语言代码转换成机器代码时,会进行各种优化,包括指令调度,即根据数据依赖关系分析哪些指令可以互换顺序而不影响最终执行结果。指令级并行的重排序:现代处理器普遍采用指令级并行技术(ILP),允许多条无数据依赖性的指令同时执行,这实际上也是一种重排序。内存系统的重排序。原创 2024-08-22 16:53:56 · 611 阅读 · 0 评论 -
Java多线程(二) - Java对象结构与对象锁的升级
如果持有锁的线程能在很短时间内释放锁,那么等待的线程就可以立即获得锁,从而避免了线程阻塞和唤醒的开销。:如果轻量级锁自旋尝试获取锁失败,或者持有锁的线程执行时间较长,超过了自旋等待的最大时间,那么轻量级锁会膨胀为重量级锁。通过引入偏向锁和轻量级锁,JVM 能够在多线程竞争不激烈的情况下,以较低的开销实现同步,从而提高程序的性能。其中,对象头是一个非常关键的部分,因为它包含了对象运行时的关键信息,如锁状态、哈希码等。,Java 对象锁的升级是为了提高多线程同步的效率,减少锁的获取和释放的开销。转载 2024-08-22 15:39:52 · 616 阅读 · 0 评论 -
Java多线程(一)Thread、Runnable、Callable、Future、ExecutorService接口
Java通过提供一系列的类和接口来支持多线程编程,主要包括Thread类、Runnable接口、Callable接口、Future接口以及ExecutorService接口等。在Java中,多线程编程是一项非常重要的技能,它允许程序同时执行多个任务,从而提高程序的执行效率和响应速度。: 提交一个Callable任务用于执行,并返回一个表示该任务等待完成的Future。: 尝试停止所有正在执行的任务,停止处理正在等待的任务,并返回等待执行的任务列表。可能由于新任务的到达而在线程池的任何线程中异步执行。转载 2024-08-22 15:23:32 · 957 阅读 · 0 评论 -
java多线程(五)线程间通信
线程间通信是并发编程中的一个重要概念,它允许多个线程之间交换信息或共享数据。原创 2024-08-22 15:00:37 · 626 阅读 · 0 评论 -
学习使用线程池
,现在进一步学习学习。原创 2024-08-22 14:08:42 · 879 阅读 · 0 评论 -
JVM找出导致CPU使用率过高的Java代码
1、2、3、4、原创 2024-08-15 18:48:32 · 937 阅读 · 0 评论 -
JWT入门
参考:参考:原创 2024-08-13 14:52:22 · 373 阅读 · 0 评论 -
Java生成图形验证码
5、开发页面,使用的是vue的ref来控制页面图形验证码区域显示,点击图片区域则会换一个图形验证码。2、写接口,这块不需要登录成功才能操作的,所以写controller就行了,不涉及服务。查看redis的缓存,和页面看到的一致。点击图形区域,发现又调用了该接口。4、对应的配置文件的配置。页面加载时,有调用该接口。原创 2024-08-12 17:12:03 · 564 阅读 · 0 评论
分享