java
-
如何实现对象克隆?
对象克隆分为浅拷贝和深拷贝,浅拷贝仅复制字段值,引用类型共享对象,可能导致修改相互影响;深拷贝递归复制所有引用对象,实现完全独立,但性能开销大。Python用copy模块,Java实现Cloneable接口,C#用MemberwiseClone或序列化。避免浅拷贝问题可用深拷贝、不可变对象、防御性拷…
-
如何做 mysql 的性能优化?
优化MySQL性能需先分析慢查询日志,通过EXPLAIN定位未走索引的SQL,为WHERE、ORDER BY等字段建立合适索引,避免全表扫描和函数操作;选择紧凑数据类型,拆分大表,使用自增主键;调整innodb_buffer_pool_size等参数;结合Redis缓存热点数据,主从分离读写,连接池…
-
mysql什么是数据库分区?
数据库分区类型包括范围、列表、哈希、键分区及子分区,适用于不同场景如时间序列、枚举值、数据均匀分布等,合理使用可提升查询效率与维护便利性。 数据库分区,简单来说,就是把一个大表拆分成更小、更易管理的部分。这就像把一个大仓库分成几个小仓库,方便查找和管理货物。 数据库分区能显著提升查询效率、简化维护工…
-
java 中 IO 流分为几种?
Java IO流分为字节流和字符流,按流向分输入输出流,四大基类为InputStream、OutputStream、Reader、Writer,辅以缓冲、数据、对象、转换等处理流,适用于不同数据类型与操作需求。 Java 中的 IO 流主要按照数据流向和处理方式分为两大类:字节流和字符流,每类又分为…
-
集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗?
3节点Z%ignore_a_1%okeeper宕机1个仍可正常使用,因剩余2节点满足过半原则,可处理读写请求并完成Leader选举,但再故障1个将导致服务不可用,需及时恢复或扩容。 可以,Zookeeper 在这种情况下仍然可以正常使用。 Zookeeper 的容错机制 Zookeeper 是一个高…
-
java 中普通类和抽象类有哪些区别?
普通类可实例化,包含具体方法,用于直接使用;2. 抽象类用abstract定义,不能实例化,含抽象方法需子类重写;3. 抽象类作模板强制结构,普通类实现完整功能;4. 抽象类必须被继承,且Java单继承限制下只能继承一个抽象类。 普通类和抽象类在 Java 中有明显%ignore_a_1%,主要体现…
-
java 中怎么防止死锁?
答案:破坏死锁的循环等待和持有并等待条件可有效防止死锁。1. 按序获取锁避免循环等待;2. 使用tryLock破坏持有并等待;3. 减少锁嵌套;4. 使用定时锁超时机制,提升并发安全性。 在 Java 中防止死锁,关键在于破坏死锁产生的四个必要条件之一:互斥、持有并等待、不可抢占、循环等待。我们通常…
-
说一下 jvm 有哪些垃圾回收器?
JVM%ign%ignore_a_1%re_a_1%包括Serial、ParNew、Parallel Scavenge等新生代收集器,Serial Old、Parallel Old、CMS等老年代收集器,以及G1、ZGC、Shenandoah等整堆收集器,适用于不同场景;其中G1和ZGC因兼顾低延迟…
-
如何获取当前数据库版本?
答案:获取数据库版本需使用特定命令或函数,如MySQL用SELECT VERSION(),PostgreSQL用SELECT VERSION(),SQL Server用SELECT @@VERSION,Oracle查V$VERSION视图,SQLite用SELECT sqlite_version()…
-
throw 和 throws 的区别?
throw用于抛出异常,throws用于声明异常;throw在方法内抛出异常对象,throws在方法签名中声明可能抛出的异常类型,二者结合try-catch可实现完整的异常处理机制。 throw 和 throws 都是 Java 中处理异常的关键部分,但它们扮演着不同的角色。简单来说,throw 用…