- 博客(314)
- 资源 (13)
- 收藏
- 关注
原创 Java并发编程(十八):线程安全的单例模式
Java中实现线程安全的单例模式有多种方法,每种方法都有其优缺点。在选择实现方式时,需要根据具体的需求和场景来决定。
2025-03-23 08:30:00
295
原创 Java String(二):字符串操作编译期优化剖析
了解 Java 字符串编译期优化的条件、原理以及不进行优化的情况,有助于我们编写更高效的代码,提升程序的性能和内存使用效率。在实际开发中,我们应尽量利用编译期优化的特性,避免不必要的运行时开销。
2025-03-22 21:55:56
969
原创 Java String(一):intern()方法深度解析
Java6及以前,intern()方法在常量池不存在对应字符串时,会在方法区复制新的字符串对象。java7及以后,intern()方法在常量池不存在对应字符串时,会将堆中字符串对应的引用添加到常量池。
2025-03-20 09:46:18
476
原创 Spring Boot2.x教程:(十八)与MyBatis-Plus结合实现事务管理
Spring Boot 结合 MyBatis-Plus 实现事务管理,先阐述事务概念及 Spring 引入事务管理的原因。接着通过转账案例,从创建库表、配置 pom 文件到编写各层代码展示完整实现过程,还提及测试示例及异常回滚情况,最后说明事务相关注意事项及 @EnableTransactionManagement 注解的使用情形
2025-03-18 18:45:00
767
原创 docker(四):search与pull命令的行为差异
理解docker search和docker pull的行为差异对于高效使用Docker至关重要。
2025-03-05 22:27:58
259
原创 PostgreSQL(四):代码层面解决pg共享内存报错问题
前端在打开页面时一次性请求这些接口,导致 PostgreSQL 数据库报错,提示无法调整共享内存段大小,原因是设备空间不足。由于数据库由统一管理,修改相关参数难以推进,只能从代码层面寻找解决方案。
2025-02-20 14:30:00
795
原创 Java IO(一): Java 中的 IO
Java IO 为开发者提供了强大而灵活的数据处理能力,深入理解和掌握 Java IO 对于编写高效、可靠的 Java 程序至关重要
2025-02-19 21:00:00
800
原创 postgresql(三):巧用 array_agg 保留明细数据解决分组查询重复计数问题
为解决该问题,建议使用 array_agg 函数在分组时保留明细数据,如此在第二次聚合数据时,可将明细数据合并并去重,从而得到准确的机构数。
2025-02-18 18:00:00
952
原创 RabbitMQ(一):分布式系统中的消息队列解决方案
RabbitMQ 是一种强大的消息队列解决方案,能够帮助系统实现高效的解耦、弹性伸缩和可靠的消息传递。通过合理地使用 RabbitMQ,开发者可以构建出更具弹性和可靠性的分布式系统。
2025-01-22 18:30:00
767
原创 Java并发编程(十七):死锁
本文围绕 Java 死锁展开,介绍其概念为多线程争资源致互相等待,阐述产生死锁的互斥、请求与保持、不可剥夺、循环等待四个条件,并给出示例。还详述预防死锁方法,如锁顺序一致、用 tryLock 设置超时机制及减少锁持有时间,且分别展示了相应的代码改造示例以有效避免死锁情况。
2025-01-03 14:30:00
1627
原创 MySQL(七):前缀索引及PostgreSQL中类似功能实现
阐述了 MySQL 中创建索引时指定列字符长度(length)的语法及作用,如节省空间、提高性能等,还提及不指定 length 的情况。同时,指出 PostgreSQL 虽无直接 “前缀索引” 概念,但可通过表达式索引等变通方法,利用函数对字符串前缀创建索引来实现类似功能。
2025-01-02 17:22:38
469
原创 Java并发编程(十六):synchronized公平吗
synchronized作为Java中的内置同步机制,其默认实现为非公平锁。这一设计基于性能考虑和避免饥饿现象,是多线程编程中的一种折中方案。在大多数场景下,其性能优势足以弥补不公平性带来的潜在问题。然而,在需要严格控制执行顺序和资源分配的场合,使用ReentrantLock等其他工具可能更为合适。
2025-01-01 18:30:15
549
原创 Java并发编程(十五):读操作是否需要加锁的考虑因素
在多线程环境中,即使是读取操作,也需要通过适当的同步机制(如读写锁)来确保数据的一致性和安全性。ReentrantReadWriteLock 提供了一种高效的方式来处理这种情况,允许多个线程并发读取,同时保证在写入时的独占性。因此,虽然读取操作本身不修改数据,但在并发环境中,为了确保数据的一致性和完整性,仍然需要获取适当的锁。
2024-12-30 13:36:36
363
1
原创 Java并发编程(十四):JDK1.8中的StampedLock
StampedLock是一种灵活且高效的同步机制,特别适合于读多写少的场景。通过结合乐观和悲观策略,它能够有效地提高并发性能,同时避免传统读写锁可能出现的问题,如写饥饿等。在设计多线程程序时,合理运用StampedLock可以显著提升程序效率。
2024-12-29 20:48:02
622
原创 Java并发编程(十三):显式锁之ReentrantLock与ReentrantReadWriteLock
本文介绍了 Java 中的显式锁,包括 ReentrantLock 与 ReentrantReadWriteLock。对比了显式锁和 synchronized 的不同,阐述了 ReentrantLock 的特点、使用示例及优势,还介绍了公平锁和非公平锁的区别,最后详细讲解了 ReentrantReadWriteLock 的读写锁机制、使用场景及示例,对多线程同步机制进行了全面阐释。
2024-12-28 11:30:00
1014
原创 Spring Boot2.x教程:(十七)从奶茶店说起:轻松理解Spring Boot的Service默认单例与多线程
Spring Boot中的Service采用单例模式是一种优秀的设计,因为它可以做到节省系统资源、提高性能、方便共享状态、便于资源复用,关键是要正确处理线程安全问题,区分好什么资源可以共享,什么数据需要隔离。就像一个高效的奶茶店,一个制作间可以供多个店员使用,但每个店员都要管理好自己的订单,不能混乱。
2024-12-26 22:15:00
775
原创 JWT(二):拦截风险分析与应对措施
JWT 从后端传至前端存在被拦截风险,可通过多种措施应对。如设置合理有效期、用 HTTPS 协议传输、结合刷新令牌机制、进行权限细分与严格验证、监控及异常检测、采用多因素身份验证等,这些方法能有效减轻因 JWT 被拦截而导致的安全风险。
2024-12-23 22:15:00
1708
原创 MySQL(六):联合索引的最左原则、回表、覆盖索引
本文主要讲解 SQL 联合索引的最左原则,包括其概念、示例解释及使用场景和注意事项,同时阐述回表和覆盖索引。最左原则影响联合索引使用,回表是二级索引查完整记录的过程,聚集索引与表物理存储同序,非聚集索引结构分离,覆盖索引可避免回表提升性能。
2024-12-21 08:30:00
662
原创 Java并发编程(十二):只谈blocked、waiting和timed_waiting
Java 线程的 blocked、waiting、timed_waiting 状态各有触发条件与特性。sleep、wait、yield 虽都可让 CPU,但在状态变化、锁处理、调用位置、唤醒方式及使用场景上均有差异,合理运用可优化多线程程序的同步、协作与资源利用。
2024-12-20 22:30:00
1248
原创 JWT(一):JWT(JSON Web Token)原理
JWT 是开放标准,由 Header、Payload、Signature 组成,用于安全传递信息,适用于身份验证与信息交换等场景。JJWT 是其 Java 实现库,可便捷创建、解析和验证 JWT,如通过特定方法生成并验证,遵循相关规范且开源,在 Java 开发中有重要应用。
2024-12-18 12:00:00
927
原创 SSpring Boot2.x教程:(十六)只给接口开启https
本文介绍在 SpringBoot 中通过自签名证书开启 https 访问。先利用 JDK 的 keytool 命令生成密钥库与自签名证书,再将证书文件置于项目 resources 目录,于 application.yml 中配置相关参数,最后启动应用即可启用 https 访问。
2024-12-17 19:45:00
399
原创 docker(三):为Spring Boot构建Docker 镜像及容器运行全流程
本文介绍了将 Spring Boot 工程打为 Docker 镜像及创建容器执行的流程。先构建项目生成 jar 文件,创建 Dockerfile 并设置基础镜像、工作目录等,构建镜像后运行容器,还阐述了 yml 配置、Dockerfile 暴露端口与 docker run 端口映射的作用及关系
2024-12-13 11:56:54
1120
原创 Java 泛型(一):特性、语法、优势与类型擦除全解析
泛型是 Java 重要特性,提供编译期类型安全机制。可用于定义类、接口与方法,有特定语法和命名规则。其优势包括类型安全、代码复用、免强制类型转换,而类型擦除则出于兼容性、简化 JVM 实现及性能考虑,让 Java 泛型得以有效运行。
2024-12-12 14:00:00
610
原创 Spring Boot2.x教程:(十五)关于RestTemplate和@Bean的一些遐想
理解 Spring Boot 中RedisTemplate的自定义配置与注入机制,我们能更好地在项目中运用 Redis 进行高效的数据处理与缓存管理,提升应用的性能与功能扩展性。
2024-12-10 19:30:00
1382
原创 MyBatis-Plus(五):动态数据源下分页查询的疑难剖析与化解之道
通过这次在动态数据源分页查询过程中遇到的问题及解决过程,深刻认识到在处理多数据源和分页插件结合时,需要充分考虑到不同数据库的语法差异以及框架内部的运行机制,才能确保系统的稳定性和正确性。
2024-12-09 08:30:00
882
原创 Spring Boot2.x教程:(十四)Spring Security新线程为什么获取不到用户信息-续1
通过创建DelegatingSecurityContextExecutorService Bean 并在CompletableFuture中使用它,能够优雅地解决CompletableFuture异步任务中SecurityContext的传递问题。这种自动传递机制与手动传递方式相比,大大简化了代码逻辑,减少了因手动处理不当而导致安全漏洞的风险,提高了应用的安全性和可维护性。
2024-12-08 21:30:00
768
原创 Spring Boot2.x教程:(十三)Spring Security新线程为什么获取不到用户信息
为了确保在多线程环境中能够正确获取到用户 ID需要保证新启用的线程拥有当前线程的SecurityContext,本文介绍的手动传递SecurityContext可以做到这一点。
2024-12-07 12:15:00
395
原创 Java并发编程(十一):monitor中entry set和wait set协作解析
本文介绍了 Java 中的 monitor 概念,包括其定义、与对象关联等。还阐述了 entry set、wait set 的作用、工作流程及与 monitor 的关系,最后给出三者关系图及线程状态转换情况,整体呈现了 Java 线程同步协作机制。
2024-12-06 21:45:00
857
原创 Java并发编程(十):synchronized 与 Lock 接口的奥秘
在 Java 多线程编程中,同步机制至关重要。synchronized 关键字是早期实现同步的主要方式,基于对象的监视器锁,其原理是线程在执行被其修饰的方法或代码块时需先获取对应对象的内置锁,执行完毕后自动释放,且提供了等待与唤醒机制来处理线程间协作。
2024-12-05 22:15:00
728
原创 swagger/knife4j小事记录(三):Spring Security集成Knife4j访问授权问题及解决方案
增加了 favicon.ico 的访问许可,通过以上配置和调整,应该能够解决Spring Security环境下Knife4j的访问授权问题。
2024-12-04 21:00:00
732
原创 MyBatis-Plus(四):解决 Mybatis-Plus 中 “Invalid bound statement (not found)” 错误新情况
在使用 Mybatis-Plus 开发过程中,必须留意这些容易被忽视的配置差异。不能单纯照搬以往 Mybatis 开发经验,而应深入领会 Mybatis-Plus 的独特之处与要求。
2024-12-03 18:30:00
1004
原创 Java并发编程(九):CountDownLatch 的介绍和使用
CountDownLatch是Java并发编程中一个非常实用的同步工具,它通过简单的计数机制有效地协调多个线程之间的执行顺序
2024-11-27 21:45:00
938
原创 Java并发编程(八):HashMap非线程安全问题解析与应对
通过示例展示了HashMap的非线程安全性,为确保线程安全,介绍了ConcurrentHashMap和Collections工具类两种同步机制,更推荐使用 ConcurrentHashMap,因为它通常是处理 Java 中并发操作的最佳实践
2024-11-25 22:30:00
1608
原创 Java并发编程(七):深浅拷贝
在Java中,选择使用深拷贝还是浅拷贝取决于具体需求。如果需要共享某些数据,可以使用浅拷贝;如果希望确保对象之间完全独立,则应使用深拷贝。理解这两种机制对于有效管理内存和避免意外的数据修改至关重要。
2024-11-21 20:30:00
877
原创 Java并发编程(六):不可变类与线程安全
介绍创建不可变类需要遵守的原则,通过详细示例介绍了在使用深度拷贝的前提下,不可变类天然具备线程安全性,最后介绍了不可变类的使用场景并介绍其优劣势。
2024-11-20 12:15:00
1054
原创 Java并发编程(五):前文示例中加锁与不加锁的解释
介绍了,为什么模拟订单验证无需加锁、模拟订单价格计算无需加锁、模拟发送确认邮件无需加锁,而扣减库存需要加锁。
2024-11-19 12:15:00
349
原创 Java并发编程(四):多线程带来的性能飞跃
本文通过一个订单处理的示例,演示了使用多线程能够带来显著的性能飞跃。在实际项目中,通过将任务分解为多个并行执行的线程,能够更好地利用多核处理器的优势,提高系统并发处理能力。
2024-11-16 15:00:00
940
原创 Java并发编程(三):让问题暴漏-线程安全问题
介绍了只使用多线程不引入同步机制时可能会出现的数据不一致问题,并展示了通过使用synchronized解决多线程带来的数据不一致问题,synchronized关键字是解决同步问题的最基本手段,后面是陆续介绍,本篇先将线程安全问题暴露出来,毕竟先暴露出问题才能解决问题。
2024-11-16 08:30:00
1711
原创 Java并发编程(二):同步机制与多线程是否矛盾
既然引入同步机制后,也只能有一个线程执行同步代码块或方法,那这跟只使用一个线程执行任务有什么区别
2024-11-12 18:30:00
640
原创 Spring Boot2.x教程:(十二)日志分割后续
通过添加 ConsoleAppender,成功解决了在IDE 中无法打印日志的问题。确保同时配置文件和控制台输出是保证日志功能正常工作的关键。至于上次为什么没有发现日志没有往IDE的控制台中打印呢,因为着急上线,根本没在IDE中启动测试……
2024-11-11 21:30:00
378
mysql-5.7.30-1.el6.x86_64.rpm-bundle.tar
2021-11-28
mysql-5.7.36-1.el7.x86_64.rpm-bundle.tar
2021-11-28
jenkins.war
2021-06-12
commons-collections4-4.4-bin.zip
2020-06-07
jd_gui_windows_1.6.6.zip
2020-04-30
jetty-distribution-9.4.28.v20200408.zip
2020-04-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人