java教程技术文章
-
Double-CheckedLocking中的instance=newSingleton()为什么不是原子操作很多人以为newSingleton()就是“创建一个对象”,但JVM实际执行时拆成三步:分配内存→调用构造函数初始化字段→将引用赋值给instance变量。这三步在单线程下顺序执行没问题,但在多线程+JIT优化下,第2步和第3步可能被重排序为分配内存→赋值引用→初始化字段。后果是:线程A刚执行完第3步(instance已非null),线程B立刻206 收藏 -
requiresstatic实现编译期可选、运行时强制满足的依赖策略,适用于日志适配器等插件式能力;它使编译器忽略缺失模块,但运行时若存在则必须版本匹配,并需配合uses声明服务查找及主动降级逻辑。206 收藏 -
Java接口继承通过extends实现垂直整合、implements支持水平扩展,default方法增强复用性;核心是表达业务语义契约,而非模拟类继承或复用代码。206 收藏 -
PrintStream的println不格式化,仅拼接字符串并换行;需格式化时用printf/format;写文件须用FileOutputStream包装并指定UTF-8编码、追加模式和自动刷新;生产日志应选slf4j等专业框架。206 收藏 -
核心是将相似异常堆栈归为一类,通过清洗、提取调用链骨架、标准化异常类型、生成确定性哈希四步生成轻量级指纹,实现秒级分类与告警收敛。206 收藏 -
synchronized锁的是对象而非变量,关键在于对象头MarkWord中的锁状态标志位;通过JOL可验证其从无锁(001)→偏向锁(101)→轻量级锁(00)→重量级锁(10)的动态升级过程。206 收藏 -
封装是将数据与操作打包为类并私有化成员变量,通过publicgetter/setter方法控制访问;目的是防止非法状态、隔离变化和降低耦合,体现为默认private属性、按需提供带校验的存取方法。206 收藏 -
文章 · java教程 | 2星期前 | 数据库连接池 · Spring Boot · 生产实践 · Java教程 · HikariCP · java 性能优化 连接池 spring boot HikariCP
一次 Java/Spring Boot 生产故障复盘:HikariCP 连接池耗尽时不要只调 maximumPoolSize,而要用 Hikari 指标、线程堆栈、慢 SQL、事务边界和泄漏检测找到连接为什么没有及时归还。206 收藏 -
Nacos配置项必须写在spring.cloud.nacos.config下,而非spring.nacos或spring.cloud.nacos;server-addr必填且不带http://,namespace和group需显式指定,依赖、@RefreshScope、鉴权等缺一不可,多环境需对齐dataId命名规则。205 收藏 -
本文详解为何向List<?>添加元素会编译失败,并提供类型安全、可维护的替代方案,包括具体代码示例和关键注意事项。205 收藏 -
通过配置别名或使用jEnv实现MacOS下多JDK版本快速切换,提升Java开发效率。205 收藏 -
使用JSON序列化与文件IO实现日记持久化,通过BufferedReader/Writer读写文本文件,每篇日记以JSON格式存储并逐行解析;程序启动时加载文件内容反序列化为对象列表,结合Gson库完成数据转换;为提升可读性,设计标题居中、日期右对齐、正文自动换行及分隔线的格式化输出方案,确保信息清晰美观。205 收藏 -
数组的物理连续性决定缓存行利用效率:连续布局使多个元素共存于同一64字节缓存行,顺序访问时前16个int可一次加载、高命中;链表则因节点分散导致频繁跨行加载、命中率骤降;二维数组须行优先遍历以匹配内存布局,列优先易引发大量cachemiss;结构体应alignas(64)对齐避免跨行和伪共享。205 收藏 -
Java中类使用class定义,首字母大写,包含属性和方法;2.成员变量封装数据,构造方法初始化对象;3.方法包括普通成员方法和静态方法,前者通过对象调用,后者通过类名直接调用;4.使用getter/setter实现数据封装,建议字段私有化以增强安全性。205 收藏 -
Collections.checkedCollection()提供运行时类型安全包装,仅对写操作检查元素类型,不验证已有元素或读操作返回值;需传入非空原始集合和具体类型Class,适用于API边界防护等场景。205 收藏