-
Arthas启动失败:找不到java或提示NoClassDefFoundError:sun/misc/SignalArthas依赖目标JVM的运行时类,不是所有JDK版本都默认包含sun.misc.Signal(尤其JDK11+默认移除了该类)。启动报这个错,基本是JDK版本不兼容或Arthas自身版本太老。用java-version确认线上JDK是OpenJDK还是OracleJDK,以及具体版本(如17.0.2)Arthas3.6.0+才完整
-
JDBC连接MySQL最简可用配置需三步:加mysql-connector-j8.0.33+驱动、写含serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true的URL、调用DriverManager.getConnection();生产必须用HikariCP等连接池,PreparedStatement防注入关键在参数绑定而非仅用语法,资源关闭须用try-with-resources确保。
-
继承是子类自动获得父类非私有成员的机制,非代码复制而是运行时对象内存中包含父类部分;super()必须首行调用以确保父类初始化优先;@Override是重写必要契约而非可选装饰;“is-a”关系断裂时应改用组合。
-
非阻塞并发队列通过CAS实现线程安全,避免锁竞争,提升吞吐量;ConcurrentLinkedQueue基于链表,利用volatile和CAS维护head/tail指针,实现高效入队出队;虽存在ABA风险与弱一致性问题,但适合高并发场景。
-
单例模式只能有一个实例的关键在于私有化构造方法并由类内部管理唯一实例的创建与返回;常用实现有饿汉式(类加载时初始化,线程安全但可能浪费资源)和懒汉式(延迟初始化,需synchronized或DCL+volatile防重排);静态内部类方式因JVM类加载机制天然线程安全且延迟加载,更推荐;多例模式通过key映射有限实例池,用ConcurrentHashMap保证线程安全;Spring的@Scope("singleton")是容器级单例,与编码级单例模式无必然关联,二者控制权不同。
-
Java表达式计算由优先级、结合性、操作数求值顺序共同决定:优先级决定运算先后,结合性决定同级运算方向(左结合为主,赋值与一元运算符右结合),操作数严格从左到右求值。
-
SOLID原则提升Java代码质量:单一职责要求类只负责一项功能,如拆分User与UserRepository;开闭原则支持扩展而非修改,通过Shape接口实现图形面积计算的灵活扩展;里氏替换确保子类可替代父类而不改变程序行为,避免企鹅类错误实现fly方法;接口隔离主张小而专的接口,如将Worker拆分为Workable和Eatable;依赖倒置强调依赖抽象而非具体实现,如UserService依赖Database接口而非MySQL具体类。这些原则通过接口、抽象类与依赖注入促进系统解耦与可维护性。
-
本文详解如何在基于@SqsListener的SpringCloudAWS应用中,通过自定义ClientConfiguration配置客户端级重试策略,实现可配置的指数退避(exponentialbackoff),而非依赖默认线性重试或消息可见性超时循环。
-
StringBuilder因可变性避免频繁创建对象,提升字符串拼接效率;其常用方法包括append、insert、delete和reverse,且比String高效因操作基于同一对象;与StringBuffer区别在于非线程安全但性能更高;建议循环中使用并指定初始容量以优化性能。
-
LockSupport.park()为什么线程没反应?它根本不会“挂起线程”——park()只是检查当前线程的许可(permit)是否为1,是就消费掉并立即返回;否则阻塞。没有“主动挂起”的语义,只有“等待许可”。常见错误是调用park()前没确保许可可用,结果线程直接卡住。许可是二值的:0或1,不可叠加(多次unpark()只保留一次效果)park()不响应中断,但会设置线程的中断状态(Thread.interrupted()为true)如果线程已中断后调用park(
-
StackOverflowError不是-Xss越大越好,增大仅延迟崩溃且易引发OOM;应优先排查递归失控、隐式递归及循环依赖,并通过jstack和全栈日志定位问题。
-
Vaadin中Select.setValue()无法更新UI显示,通常是因为待设值对象与数据源中对象未通过equals()和hashCode()正确识别为同一逻辑实体,导致组件无法匹配并高亮选中项。
-
EnumMap底层使用数组而非哈希表,以枚举ordinal()为下标实现O(1)查表;无哈希计算、无冲突处理、无装箱,性能比HashMap高2–3倍、内存低约40%;不支持null键,且必须在编译期确定枚举类型。
-
IllegalComponentStateException主因是Swing组件未添加到容器就调用setVisible()等依赖容器上下文的方法;须先add()再setVisible()、pack()等,且所有UI操作必须在EDT中执行。
-
Collections.nCopies返回不可变视图,调用add/remove会抛UnsupportedOperationException;需用newArrayList()包装才可修改,且禁用于可变对象。