一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Java

单例模式的七种写法

什么意思呢?就是当前进程确保一个类全局只有一个实例。

那单例模式有什么好处呢?[1]

单例模式在内存中只有一个实例,减少了内存开支
单例模式只生成一个实例,所以减少了系统的性能开销
单例模式可以避免对资源的多重占用
单例模式可以在系统设置全局的访问点
那单例模式是银弹吗?它有没有什么缺点?

单例模式一般没有接口,扩展很困难
单例模式不利于测试
单例模式与单一职责原则有冲突
那什么情况下要用单例模式呢?

要求生成唯一序列号的环境
在整个项目中需要一个共享访问点或共享数据
创建一个对象需要消耗的资源过多
需要定义大量的静态常量和静态方法(如工具类)的环境

龙生   27 Sep 2025
View Details

Java volatile关键字最全总结:原理剖析与实例讲解(简单易懂)

volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度。但是volatile 变量的同步性较差(有时它更简单并且开销更低),而且其使用也更容易出错。

龙生   27 Sep 2025
View Details

jsp、freemarker、velocity、thymeleaf页面方案分析

在java领域,表现层技术主要有三种,
(1)jsp;
(2)freemarker;
(3)velocity;
(4)thymeleaf;

龙生   12 Sep 2025
View Details

Kafka 内存池MemoryPool 设计

GarbageCollectedMemoryPool 是一个非常巧妙的调试工具。它通过继承 SimpleMemoryPool 复用了内存额度控制的逻辑,然后通过重写钩子方法和结合Java的引用机制,增加了一层“内存泄漏”的监控。

正常流程:tryAllocate() -> bufferToBeReturned (登记) -> 使用 -> release() -> bufferToBeReleased (注销) -> ByteBuffer 失去引用 -> 被GC。
泄漏流程:tryAllocate() -> bufferToBeReturned (登记) -> 使用 -> 忘记调用 release() -> ByteBuffer 失去引用 -> 被GC -> BufferReference 进入队列 -> 后台线程检测到,并从 buffersInFlight 中找到了登记信息 -> 报告错误。

龙生   09 Sep 2025
View Details

Java中Redis的ValueOperations.set后,Key乱码的解决方法

 

龙生   03 Sep 2025
View Details

Java进阶(JVM调优)——JVM调优参数 & JDK自带工具使用 & 内存溢出和死锁问题案例 & GC垃圾回收

1.JVM调优的相关知识,给出了一个demo案例;
2.JVM调优的主要参数;
3.jdk自带的jvm分析工具的使用;
3.内存溢出的调优场景,逐步分析定位问题;
4.发生死锁的分析案例

龙生   23 Aug 2025
View Details

JVM参数设置

-Xms设置堆的最小空间大小。
-Xmx设置堆的最大空间大小。
-XX:NewSize设置新生代最小空间大小。
-XX:MaxNewSize设置新生代最大空间大小。
-XX:PermSize设置永久代最小空间大小。
-XX:MaxPermSize设置永久代最大空间大小。
-Xss设置每个线程的堆栈大小。

龙生   23 Aug 2025
View Details

java -XX参数主要有3种:行为参数,调优参数,调试参数

 

龙生   23 Aug 2025
View Details

java应用之openfire入门篇

openfire是一个聊天服务端,好比qq服务端.本质是个socker server.

openfire通讯协议是 xmpp ,什么是xmpp参考百科 https://baike.baidu.com/item/XMPP/3430617?fr=aladdin

龙生   11 Aug 2025
View Details
1 2 64