- 博客(290)
- 资源 (2)
- 收藏
- 关注
原创 重学Java基础篇—Java11字符串处理增强详解
方法功能Unicode 支持替代旧方法isBlank()检测空或全空白字符串是手动正则检查strip()去除首尾空白(含 Unicode)是trim()lines()分割多行文本为流是split("\\r?\\n")repeat(n)重复字符串不适用手动循环拼接最佳实践优先使用新方法:替代繁琐的正则或手动处理。注意性能场景:大文本处理用lines()避免内存溢出。处理国际化内容:使用strip()确保兼容多语言空白字符。
2025-04-14 00:45:00
578
原创 重学Java基础篇—Java11新特性详解
Java 11 的核心优势开发效率:单文件运行、字符串处理、HTTP Client 简化代码。性能优化:ZGC 降低延迟,TLS 1.3 提升安全传输效率。现代化工具链:JFR 监控、Epsilon GC 调试支持。升级建议评估兼容性:检查依赖库是否适配 Java 11。性能基准测试:对比 ZGC 和 G1 GC 在真实场景的表现。逐步迁移:从工具类模块开始覆盖核心业务。通过合理运用 Java 11 的新特性,开发者可显著提升代码质量、系统性能和开发效率。
2025-04-13 02:30:00
305
原创 重学Java基础篇—Java8新特性详解
场景推荐方案集合操作优先使用 Stream API,避免显式循环空值处理用Optional替代null检查日期时间处理全面迁移至java.time,弃用并发编程使用替代传统Future接口扩展用默认方法保持向后兼容性性能敏感代码谨慎使用并行流,避免过度装箱拆箱性能监控工具JVM 参数查看 JIT 编译。Profiling 工具:VisualVM、Async-Profiler 分析 Stream 和 Lambda 性能。
2025-04-13 01:45:00
1774
原创 重学Java基础篇—for-each与常规for循环的使用和效率区别
维度for-each循环常规for循环代码简洁性高(无需手动管理索引)低(需处理索引和条件)安全性高(避免索引越界)低(需手动控制索引范围)灵活性低(无法直接操作索引或修改集合)高(支持索引操作和集合修改)效率对集合遍历更优(尤其是LinkedList对数组和ArrayList更优(直接索引访问)最终建议无特殊需求时,优先使用for-each循环。需要索引、修改集合或处理多维数据时,使用常规for循环。
2025-04-12 02:15:00
852
原创 重学Java基础篇—了解 Integer 缓存机制
对象的复用,但需要特别注意其范围限制和对象比较的陷阱。的缓存机制是为了优化性能和减少内存消耗而设计的。它主要涉及自动装箱(Auto-Boxing)和。
2025-04-12 00:30:00
1333
原创 重学Java基础篇—拦截器(Interceptor)使用指南
场景拦截器实现权限验证在preHandle中检查 Session 或 Token日志记录记录请求路径、耗时,在中统计全局参数添加在postHandle中修改 ModelAndView异常统一处理在中捕获并跳转错误页拦截器是 Spring MVC 中强大的工具,适用于需要与业务逻辑紧密集成的横切关注点(Cross-Cutting Concerns)。合理使用拦截器,能让代码更简洁、可维护性更高。
2025-04-11 02:15:00
952
原创 重学Java基础篇—过滤器(Filter)使用指南
场景实现方式编码设置在过滤器中统一设置和权限控制检查 Session 或 Token,未登录则重定向或返回 401日志记录记录请求信息、处理时间内容压缩使用 GZIP 压缩响应内容XSS/SQL 注入防护包装请求对象,过滤危险字符核心价值统一处理:避免在每个 Servlet 中重复相同逻辑。解耦:将横切关注点(如日志、安全)与业务逻辑分离。灵活性:通过配置动态启用/禁用过滤器。掌握过滤器的使用能显著提升 Web 应用的可维护性和安全性,是 Java Web 开发中的必备技能。
2025-04-11 01:30:00
1456
原创 重学Java基础篇—Stream的使用技巧
掌握 Stream 的使用技巧能显著提升代码简洁性和性能,但需根据场景权衡其优缺点。合理利用链式调用、短路操作和并行流,可让代码既优雅又高效。是一种高效处理集合数据的函数式编程工具,能够简化集合操作并提升代码可读性。:数据量大且处理耗时(如复杂计算)。在 Java 8 中,减少后续处理数据量。
2025-04-10 01:30:00
1102
原创 重学Java基础篇—Optional的使用技巧
在 Java 中,Optional是用于优雅处理null的容器类,其核心目标是,避免。以下是Optional。
2025-04-10 01:00:00
4148
2
原创 重学Java基础篇—Java 反射机制及其用途
反射是一把双刃剑,合理使用能极大提升代码灵活性,但滥用会导致性能问题和维护困难。框架通过反射统一处理不同类型的对象,减少重复代码(如 JSON 序列化库)。允许程序在运行时动态加载类、调用方法,适应不确定的类结构(如插件化架构)。:JVM 无法优化反射调用,涉及动态方法查找和权限检查。从配置文件中读取类名和方法名,动态创建对象并调用方法。反射调用目标方法,实现日志、事务等横切逻辑。:运行时解析类名、方法、字段、注解等元数据。:修改或读取对象的字段值(包括私有字段)。:运行时调用任意方法(包括私有方法)。
2025-04-09 15:32:13
807
原创 重学Java基础篇—final 在 java 中有什么作用
应用场景作用示例类禁止继承方法禁止重写变量(实例/静态)仅能赋值一次局部变量/参数值不可变线程安全确保构造函数完成后的 final 字段可见性不可变对象设计常量定义结合定义全局常量核心价值•约束性:明确代码的不可变性,防止意外修改。•安全性:通过不可变类和线程安全设计减少并发风险。•可读性:通过命名和修饰符传递设计意图。合理使用final可以提升代码的健壮性和可维护性,尤其在大型项目和多线程环境中效果显著。
2025-04-09 10:57:50
588
原创 重学Java基础篇—Java 命名规范详解
通过合理的包组织,能够极大地提高类的定位和查找效率,同时避免类名冲突,实现访问控制,从而提升代码的可维护性。为了与普通类和接口进行区分,提高代码的可读性,抽象类的命名有其特定的规范。接口(Interface)是一种特殊的抽象类型,它定义了一组方法的签名,但不包含方法的实现。类(Class)是 Java 面向对象编程的基本构建单元,其命名应具有明确的语义,能够准确描述该类所代表的事物或概念。常量(Constant)是在程序运行过程中值不会发生改变的变量,其命名有特定的规范以提高代码的可读性。
2025-04-09 02:15:00
1288
原创 重学Java基础篇—String、StringBuilder、StringBuffer 的区别?
是用于处理字符串的三个核心类,它们在。,但在循环中仍需显式使用。:Java 编译器会将。
2025-04-08 10:41:03
352
原创 重学Java基础篇—String为什么要设计为不可变类?
String安全性:防止关键数据被篡改。线程安全:无需同步即可共享。性能优化:哈希缓存、字符串常量池复用。架构简洁性:减少副作用,支持函数式编程。尽管在某些场景下需要额外使用等工具类,但不可变性带来的稳定性、安全性和性能优化远大于其代价。这一设计体现了 Java 在可靠性和效率之间的平衡。
2025-04-08 10:34:33
580
原创 重学Java基础篇—HashMap在多线程下会有这些问题
JDK 1.8 改为尾插法,减少了死循环风险,但并发修改仍会导致数据丢失或损坏。)时,链表节点会重新计算索引并倒序插入新数组。多线程并发扩容可能导致链表成环。触发快速失败(fail-fast)机制。操作时,可能导致键值对覆盖或丢失。可能导致数据不一致、死循环、在多线程环境下直接使用。线程B修改了结构(如。
2025-03-28 01:45:00
816
原创 重学Java基础篇—CopyOnWriteArrayList 详细分析
通过牺牲写操作的性能,换取了无锁读的高并发能力,是典型的。它通过在写操作时复制底层数组来实现线程安全,适合。需根据具体业务需求权衡其优缺点,合理使用。且对数据实时性要求不高的场合。)均需先获取锁,确保线程安全。包下的一个线程安全的。
2025-03-28 01:15:00
811
原创 重学Java基础篇—什么是快速失败(fail-fast)和安全失败(fail-safe)?
即使集合在遍历过程中被修改,迭代器也不会抛出异常,而是基于原始数据或快照继续遍历。当集合在遍历过程中被修改(如添加、删除元素),迭代器会立即抛出。是两种不同的迭代器设计策略,主要用于处理集合(如。它们的核心区别在于对并发修改的容忍度和实现机制。)在遍历过程中被修改的场景。
2025-03-27 17:13:54
556
原创 重学Java基础篇—什么是指针碰撞和空闲列表?
的(例如使用复制算法或标记-整理算法的垃圾收集器,如Serial、ParNew、G1的年轻代)。是两种用于分配对象内存的核心策略,它们的实现方式与内存空间的碎片化程度密切相关。在JVM的内存管理中,
2025-03-27 15:20:22
430
原创 重学Java基础篇—Java集合框架适用于不同的数据存储场景
Java 集合框架的核心接口分别适用于不同的数据存储场景,选择正确的集合类型能显著提升代码性能和可维护性。
2025-03-25 02:45:00
593
原创 重学Java基础篇—使用BigDecimal一定要避开这几个坑
是处理高精度计算的利器,但使用不当会导致隐蔽的精度丢失、性能问题甚至逻辑错误。对高并发场景,考虑对象池化(如 Apache Commons Pool)。掌握这些技巧后,可确保金融计算、科学运算等高精度场景的数据可靠性。是不可变类,所有操作返回新对象,原对象不变。:频繁创建大数或复杂运算会导致性能下降。本身有精度丢失风险,直接用它构造。会同时比较值和精度(scale)。:先设置精度再舍入会导致意外截断。避免在循环内重复创建临时对象。时,若商为无限小数,会抛。的小数位在可表示范围内。构造,避免隐式转换风险。
2025-03-24 21:43:51
574
原创 重学Java基础篇—如何优雅的删除HashMap元素
删除键对应的条目,适用于需要基于键的条件删除。元素需要注意遍历时的安全性和代码的简洁性。根据场景选择最适合的方式,推荐优先使用。直接过滤并删除元素,代码更简洁。• 对于大数据量的Map,若需在多线程中操作,使用。在Java中优雅地删除。和迭代器方式性能接近。在遍历时通过迭代器的。
2025-03-24 21:37:21
240
原创 重学Java基础篇—对比动态代理JDK与CGLIB
建议在项目初期明确代理需求,对于Spring项目推荐优先使用CGLIB以保证灵活性,同时注意代理对象的内存管理。测试环境:MacBook Pro M1/16GB,测试循环10000次。调用Proxy.newProxyInstance。设置superclass和callback。实现InvocationHandler。生成$Proxy0.class。生成FastClass信息。创建Enhancer实例。通过反射调用目标方法。通过方法索引直接调用。
2025-03-19 18:14:21
783
原创 重学Java基础篇—ThreadLocal深度解析与最佳实践
线程级别的变量隔离:为每个线程创建独立的变量副本,实现线程封闭(Thread Confinement)2. 关键实现机制线程持有专属Map:每个Thread维护自己的ThreadLocalMap哈希冲突解决:开放地址法(线性探测)键的特殊性:ThreadLocal实例作为弱引用键初始容量:16(类似HashMap)扩容阈值:2/3容量3. 数据存取流程#mermaid-svg-nNnkIUT0WJOn6aQH {font-family:"trebuchet ms",verdana,ari
2025-03-19 14:41:18
823
原创 重学Java基础篇—逃逸分析技术深度解析
最佳实践代码审查重点高频方法内的对象创建局部同步块的使用自动装箱操作性能测试方法# 内存分配压力测试# 锁竞争测试调优路线图fill:#333;color:#333;color:#333;fill:none;是否识别热点方法分析对象逃逸状态是否可优化?代码重构内存池优化验证优化效果核心价值平均降低20%-40%的Young GC次数减少5%-15%的堆内存占用提升高并发场景下30%+的吞吐量进阶方向分析escape.hpp实现。
2025-03-18 15:28:00
999
原创 重学Java基础篇—类的生命周期深度解析
安全优先:通过严格验证保障运行时安全延迟加载:按需加载提升内存使用效率动态扩展:类加载器机制支持灵活扩展开发建议使用监控类加载行为在Web容器中合理规划war包结构避免在静态初始化块中创建不可逆资源进阶方向研究ClassLoader源码实现(JDK src.zip)分析Tomcat类加载器体系掌握Java Agent字节码增强技术性能调优(减少类加载开销)内存泄漏排查动态编程实现框架设计(如Spring的Bean加载机制)
2025-03-18 13:06:42
647
原创 重学Java基础篇—Java双亲委派机制深度解析
Override// 从文件系统读取.class文件双亲委派机制通过层级委派和缓存复用核心类库的安全性防护类加载的高效性保障系统稳定性提升自定义类加载器开发热部署功能实现框架源码分析(如Spring、Tomcat)模块化编程实践建议通过JDK源码(ClassLoader.loadClass())深入理解实现细节,并结合实际项目需求灵活应用。
2025-03-18 01:15:00
676
原创 重学Java基础篇—Java类加载顺序深度解析
开始↓父类静态变量/块(按代码顺序)↓子类静态变量/块(按代码顺序)↓父类实例变量/块(按代码顺序)↓父类构造器↓子类实例变量/块(按代码顺序)↓子类构造器结束。
2025-03-18 00:45:00
1069
原创 重学Java基础篇—Java泛型深度使用指南
/ 标准容器类示例// 使用示例// 无需强制转型命名规范:使用有意义的类型参数名称(如<K, V>优于<T, U>边界控制:尽可能使用最严格的类型约束通配符策略•PECS原则• 返回值不使用通配符类型安全• 优先使用泛型方法而非原生类型• 利用时添加明确注释文档规范:在复杂泛型类中增加类型参数说明。
2025-03-17 14:50:45
248
原创 重学Java基础篇—Java Object类常用方法深度解析
强制重写组合:当重写equals时必须同时重写hashCodetoString规范:生产环境避免输出敏感信息线程协作:使用Condition替代原生wait/notify对象复制:优先采用序列化或工具类实现深拷贝空安全处理:使用Optional替代null检查通过合理运用Object类方法,可以显著提升代码的健壮性和可维护性。建议结合具体业务场景选择最合适的实现方式,并使用静态代码分析工具(如SonarQube)进行规则检查。
2025-03-17 13:59:39
993
原创 DeepSeek-R1两种不同模型变体(deepseek-llm-7b-chat 和 deepseek-llm-7b-base)之间的区别
deepseek-llm-7b-chat 和 deepseek-llm-7b-base 是基于同一参数量级(7B)的两种不同模型变体,主要区别在于训练目标、适用场景和性能表现。
2025-02-10 18:08:29
922
原创 DeepSeek-R1模型不同参数规模(1.5B、7B、8B、14B、32B、70B、671B)之间的区别
DeepSeek-R1 系列模型的不同参数规模(如1.5B、7B、14B、70B等)代表了模型的参数量级,直接影响模型的。例如,用7B模型验证业务流程,再迁移到14B提升效果。建议先从小规模模型实验,再根据实际需求逐步升级。
2025-02-10 17:32:37
8151
原创 DeepSeek本地部署-2025简易教程
最近,国产大模型 DeepSeek 非常火爆,但由于访问人数过多,常常出现反应迟缓甚至宕机的情况。万幸的是,DeepSeek 本身是开源模型。这意味着我们可以将其部署到本地终端,随时使用,不受网络限制。一旦部署完成,它无需联网即可直接运行,这不仅提高了使用的灵活性,还保障了数据的安全性和隐私性。
2025-02-10 15:48:24
1177
原创 springboot集成h2数据库并使用多数据源
为了满足客户的需求,我们计划将项目中使用的MySQL数据库迁移至H2数据库。虽然项目已经集成了多数据源,理论上可以正常运作,但在实际操作过程中,我们发现项目启动时无法自动创建表。我们将对此问题进行深入分析,并寻找合适的解决方案以确保项目的顺利运行。
2024-12-13 16:37:57
806
原创 解决UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 297: illegal multibyte sequence
解决上述问题的方案:只需要把Popen的字符集设置成utf-8即可,但这个必须在引入execjs库之前就锁定Popen的字符集。当我们安装好nodejs环境,想在python代码中去调用JavaScript代码,常常会出现编码的问题。,让Popen的encoding参数锁定为utf-8。注意:解决execjs执行js时产生的乱码报错,这里了解一下execjs库的执行逻辑。
2024-12-05 14:06:03
362
原创 解决docker: Error response from daemon: Get “https://registry-1.docker.io/v2/“
我们可以多添加几个国内的镜像,如果有不能使用的,会切换到可以使用的镜像来拉取。
2024-11-27 10:00:03
2462
5
原创 解决使用poi-tl时与easyexcel或easypoi产生依赖冲突
遇到这种问题一般都是依赖包版本冲突造成的。,由于新需求需要生成word模板,故引入。,但出现依赖冲突问题,需要一个个排查。还有不成功的,欢迎留言问题一起探讨!解决思路:先移除,后按需补依赖。调用生成word接口,提示异常。
2024-11-20 10:50:44
788
1
原创 解决io.github.linpeilie.ConvertException: cannot find converter from Car to CarDto
打开MapStructPlus的正确使用方式
2024-11-01 14:51:44
1953
1
原创 解决PostgreSQL类型为json, 但表达式的类型为 character varying
解决SpringBoot开发过程中使用PostgreSQL操作复杂对象,如Json、Array等数据的处理
2022-10-19 14:27:08
6222
1
String AOP所需的jar包
2018-03-02
spring-aop-5.0.3.RELEASE.jar
2018-02-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人