分类: JavaSE

4 篇文章

Java 动态代理
动态代理实现: 1、JDK 动态代理 ​ 用 Java 反射包中的类和接口实现动态代理 2、CGLIB 动态代理 ​ 通过第三方库 CGLIB ,以继承类的方式实现动态代理 JDK 代理 由于底层机制的缘故,被代理的目标类必须实现至少一个接口 创建被代理的目标类以及其实现的接口创建 InvocationHandler 接口的实现类,在 invoke…
Java 手写异步调用
前言 今天在写 mirai 机器人的一个小功能时,遇到了这样一个需求:机器人需要先发出一条消息,然后间隔 3 秒钟撤回这条消息 。 当然mirai本身提供了现成的方法,支持异步调用 最朴素的想法是使用Thread.sleep(3000) public class Test { public void A() { System.out.println…
JDK8 stream处理集合的用法
之前看项目代码时经常发现操作集合时用到了stream,但是看不太懂,于是决定写一篇博客作为学习笔记以便日后查验 概念 Stream是JDK8 API引入的新特性,用于对集合、数组进行复杂的查找、过滤、映射数据等操作。 工作原理: 把数据源(集合、数组等)转化成stream流并且进行一系列中间操作,最后产生一个新流。 特点 1、stream自己不会存…
String、StringBuffer、StringBuilder, StringJoiner 的区别
之前看项目代码的时候看到了StringBuilder、StringJoiner、StringBuffer这几个类,今天打算简单整理一下。 String Java中的String对象是不可变对象,针对字符串对象的操作(例如subString、contact、replace)都会生成一个新的String对象,如果应用中有大量这样的操作,就会产生大量的临…