-
首先生成RSA密钥对,再用私钥对数据摘要签名,最后用公钥验证签名有效性。具体步骤:1.使用KeyPairGenerator生成2048位RSA密钥对;2.利用Signature.getInstance("SHA256withRSA")初始化签名对象,调用initSign(privateKey)并update数据后生成签名字节;3.验证时调用initVerify(publicKey),update相同数据后调用verify()返回布尔结果。可扩展至文件签名,需注意字符编码与异常处理,私钥应安全存储。
-
静态方法属于类而非实例,可通过类名直接调用。使用static修饰,用于工具功能或与类相关的操作,如Math类的abs、sqrt等;主方法main也是静态方法。静态方法不能访问非静态成员,除非创建对象。示例中MathUtils类定义了add和max两个静态方法,可在不创建对象的情况下通过MathUtils.add(5,7)等方式调用。常见用途包括工具类、工厂方法(如Integer.valueOf())和辅助功能。
-
LinkedBlockingQueue是Java中线程安全的阻塞队列,基于链表实现,支持可选容量限制,默认为无界队列。它使用ReentrantLock和Condition保证线程同步,提供put()和take()等阻塞方法,适用于生产者-消费者模型。通过两个独立锁提升并发性能,常用场景包括任务调度与数据缓冲。示例中生产者每100ms生产任务,消费者每200ms消费任务,自动实现线程协调。使用时应合理设置容量、处理中断、避免内存泄漏,并监控队列大小。
-
最常用且推荐的方式是使用entrySet()配合增强for循环,它避免重复查表、性能好、语义清晰;也可用Lambda+forEach实现简洁函数式遍历;keySet()+get()方式不推荐用于键值同时获取场景。
-
finalize方法不可靠,不建议用于资源清理。其调用时机不确定,可能永不执行,导致资源泄漏;且带来性能开销,影响GC效率。推荐使用AutoCloseable、try-with-resources或Cleaner类进行显式资源管理。Java9起已将其标记为@Deprecated。
-
对象生命周期管理应通过构造方法、AutoCloseable接口、try-with-resources语句及框架注解实现;优先使用try-with-resources确保资源及时释放,避免finalize,推荐静态工厂方法和依赖注入提升可维护性。
-
synchronizedMap通过包装非线程安全Map实现单操作线程安全,但复合操作需手动加锁,遍历时必须显式同步,且因全局锁性能较低,高并发应选用ConcurrentHashMap。
-
Java对象序列化依赖java.io.Serializable标记接口,JVM通过ObjectOutputStream.writeObject()检查该接口并默认序列化非transient非static字段;需显式声明serialVersionUID保障版本兼容,transient和static字段因安全或语义原因不参与默认序列化;现代项目更推荐JSON、Protobuf等跨语言方案。
-
volatile仅保证可见性、禁止指令重排序和happens-before关系,不保证原子性;如count++因读-改-写非原子仍线程不安全,适用状态标志、一次性发布等场景,复杂操作需synchronized或原子类。
-
Java8允许接口定义默认和静态方法。1.默认方法用default修饰,可提供实现且不强制子类重写,支持接口演进与多继承行为;2.静态方法用static修饰,通过接口名调用,用于工具函数;3.类实现多个含相同默认方法的接口时需显式重写以解决冲突;4.默认方法可被重写并能访问抽象方法,静态方法不可重写也不能访问实例成员。这一改进使接口更具扩展性,便于集合框架等大型API升级,同时促进函数式编程支持,提升代码复用与维护性。
-
多态不是语法糖,是运行时通过虚方法表动态绑定:编译看引用类型,运行看实际对象类型;static方法、字段、private/final方法不参与动态绑定。
-
Java变量定义须满足类型明确、命名合规、作用域清晰、初始化充分四点要求:必须显式声明类型;变量名符合标识符规则并推荐小驼峰命名;成员变量有默认值,局部变量须显式初始化;禁止不安全的隐式类型转换和非法引用赋值。
-
Java只有值传递,传递对象时实际是引用的副本,副本与原引用指向同一对象,因此可修改对象状态但无法改变原引用本身。
-
BigInteger用于处理超大整数,位于java.math包,需通过字符串或数组创建,支持高精度运算,适用于密码学等领域。
-
锁粗化是JVM由JIT编译器在热点代码编译阶段自动触发的优化,将同一锁对象、同一线程连续执行、无共享状态干扰的多次相邻加锁/解锁合并为一次更大范围加锁。