Java基础
文章平均质量分 67
没脑袋的喵
软件工程专业在读研究生
展开
-
订单超时取消如何实现
DelayQueue:超时作为排序条件,轮询订单头部,若超市,出队进行超时处理。方法四:定时调度(什么是任务调度)缺点:不能持久化,并发量低。原创 2024-03-04 22:35:40 · 172 阅读 · 0 评论 -
熔断&降级 && spring事务
如果有事务处理,会先把事务的自动提交给关闭。原创 2024-03-04 08:24:49 · 122 阅读 · 0 评论 -
Java-动态代理 JDK&cgLib
2.自定义 MethodInterceptor 并重写 intercept 方法,intercept 用于拦截增强被代理类的方法,和 JDK 动态代3.理中的 invoke 方法类似;2.自定义 InvocationHandler 并重写invoke方法,在 invoke 方法中我们会调用原生方法(被代理类的方法)并自定义一些处理逻辑;被代理类,当代理类调用方法的时候,实际调用的是 MethodInterceptor 中的 intercept 方法。: 被代理类实现的一些接口;1.定义一个接口及其实现类;原创 2024-03-04 07:26:08 · 542 阅读 · 0 评论 -
ConcurrentHashMap源码分析
Java7 中 ConcurrentHashMap 使用的分段锁,也就是每一个 Segment 上同时只有一个线程可以操作,每一个 Segment 都是一个类似 HashMap 数组的结构,它可以扩容,它的冲突会转化为链表。3.即为当前 key 定位出的 Node,如果为空表示当前位置可以写入数据,利用 CAS 尝试写入,失败则自旋保证成功。里面需要注意的是变量 sizeCtl (sizeControl 的缩写),它的值决定着当前的初始化状态。当冲突链表达到一定长度时,链表会转换成红黑树。原创 2024-01-30 08:40:06 · 376 阅读 · 0 评论 -
Java-语法糖详解
语法糖的存在主要是方便开发人员使用。但Java 虚拟机并不支持这些语法糖。这些语法糖在编译阶段就会被还原成简单的基础语法结构,这个过程就是解语法糖。原创 2024-01-24 00:06:07 · 754 阅读 · 0 评论 -
Java-SPI机制
SLF4J (Simple Logging Facade for Java)是 Java 的一个日志门面(接口),其具体实现有几种,比如:Logback、Log4j、Log4j2 等等,而且还可以切换,在切换日志具体实现的时候我们是不需要更改项目代码的,只需要在 Maven 依赖里面修改一些 pom 依赖就好了。4.根据获取到的全类名,先判断跟 spi 接口是否为同一类型,如果是的,那么就通过反射的机制构造对应的实例对象,将构造出来的实例对象添加到服务提供者的Providers 的列表中。原创 2024-01-23 22:53:10 · 965 阅读 · 0 评论 -
Java-泛型与通配符
2中数组不能初始化是因为不知道要开辟多大的空间3 类加载是会加载静态方法 此时泛型的具体类型并没有被确定 因为对象没有被 声明或实例化1)接口中的属性都是静态的2)原创 2024-01-23 00:47:51 · 313 阅读 · 0 评论 -
java-HashMap&LinkedHashMap 源码分析
LinkedHashMap 是在 HashMap 的基础上为 bucket 上的每一个节点建立一条双向链表,这就使得转为红黑树的树节点也需要具备双向链表节点的特性,即每一个树节点都需要拥有两个引用存储前驱节点和后继节点的地址,尝试将前驱节点指向后继节点,若前驱节点为空,则说明当前节点 p 就是链表首节点,故直接将后继节点 a 设置为首节点,随后我们再将 p 追加到 a 的末尾。这一步则是将当前节点 p 追加到链表末端,如果链表末端为空,则说明当前链表只有一个节点 p,所以直接让 head 指向 p 即可。原创 2024-01-22 23:39:03 · 766 阅读 · 0 评论 -
java-BigDecimal
使用 divide 方法的时候尽量使用 3 个参数版本,并且RoundingMode 不要选择 UNNECESSARY,否则很可能会遇到 ArithmeticException(无法除尽出现无限循环小数的时候),其中 scale 表示要保留几位小数,roundingMode 代表保留规则。我们知道计算机是二进制的,而且计算机在表示一个数字时,宽度是有限的,无限循环的小数存储在计算机时,只能被截断,所以就会导致小数精度发生损失的情况。DOWN(BigDecimal.ROUND_DOWN) 向接近0的方向。原创 2024-01-22 08:15:53 · 343 阅读 · 0 评论 -
Java面试基础|数据结构 -实时更新
核心是一个Node数组,数据结构与hashMap相似使用CAS操作来实现无锁的更新,提高了并发性。当更新节点时,它会使用CAS来替换节点的值或链接,如果CAS失败,表明有其他线程也在进行修改,当前线程可以重试或锁定节点对于复杂的结构修改操作 ConcurrentHashMap 使用synchronized关键字来锁定特定的节点。1)正确实现 hashCode()、equals()方法。原创 2024-01-13 10:31:31 · 536 阅读 · 0 评论 -
java基础-反射
当一个类加载器试图加载某个类时,它首先会委托给其父类加载器去尝试加载这个类,这样一来,最终所有的加载请求都会传递到顶层的启动类加载器。因此,静态方法可以在没有任何对象实例的情况下调用,即它们可以通过类本身来调用,而不是通过类的实例。初始化阶段是执行类构造器()方法的过程,这个方法是由编译器自动收集类中所有类变量的赋值动作和静态语句块(static{}块)中的语句合并产生的。3.通过cls得到对应的类(被反射的)的实例的方法对象(在反射中,可以把方法视为对象)4.通过类加载器来获取到类的Class对象。原创 2024-01-05 17:17:47 · 858 阅读 · 0 评论 -
Java基础-代码块及其细节
好处与使用场景将构造器的冗余部分提取到代码块 每个构造器执行时都会先执行代码块。原创 2023-12-07 00:17:50 · 421 阅读 · 0 评论