Java基础
文章平均质量分 78
mantdos
干!!!!!!!!!!!!!!!
展开
-
rocketmq学习及其内部实现原理
什么是rocketmqmq: message queue,中文翻译为消息队列,是一种为两个或多个不同分布式系统间提供的异步的消息传递的中间件,常用于大数据量下的应用解耦、流量削峰、数据分发等场景。而RocketMQ是阿里巴巴2016年开源的一款MQ中间件,使用Java语言开发,在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理万亿级别的消息。rocketmq的组织构架在rocketmq中总共存在着4个角色,分别是生产消息的生产者provider、消费消息的消费者cons原创 2021-07-18 11:33:36 · 382 阅读 · 0 评论 -
如何实现一个精简版的key-center-starter
一、说明该starter在被项目依赖后会在Springboot启动之初自动完成加密属性的解密并将解密后的内容替换到springboot配置容器中。加密的属性在以固定的格式开头,例如:key = encryptionencryptionencryptionabcdefg可以在配置文件中指定自定义的解密类的全限定名,调用格式如下:decrypt.class = com.zxl.decrypt.noOpDecrypt使用方式:直接依赖启动即可二、starter创建过程1、在IDEA中建立一个空原创 2021-07-18 11:16:08 · 504 阅读 · 0 评论 -
基于tair的分布式锁实现原理
分布式锁概述分布式锁的实现主要分为三种方式:1、基于Mysql的行锁实现优点:实现简单,不需要额外的中间件来协助实现缺点:增大了数据库的读写压力可能增大数据库的死锁的产生。例如:如果琐是数据库中的行A,然后甲获得A的锁后执行操作,然后请求资源B,而乙当前正持有B的资源却在请求分布式锁A,那么引起死锁。2、基于Zookeeper的实现(可以设计为公平锁、也可以设计为非公平锁)基本原理其实是基于Zookeeper的强一致性和顺序一致性特点,实现方式如下:在Zookeeper中建立一个路径r原创 2021-07-18 11:08:10 · 1161 阅读 · 0 评论 -
ClassLoader和UrlClassLoader源码分析
1、一切的基类:ClassLoader在java中存在4种类加载器,分别是启动类加载器、扩展类加载器、系统类加载器和自定义加载器,而AppClassLoader就是其中的系统类加载器。AppClassLoader系统类加载器中包含一个parent指针指向扩展类加载器ExtClassLoader,ExtClassLoader中的parent指针指向为空,因为其上一层为启动类加载器,启动类加载器是用C++写的,因此在java中没有启动类加载器。在我们一般代码中默认的类加载器就是系统类加载器AppClassLo原创 2021-07-18 11:06:54 · 603 阅读 · 0 评论 -
一种新的思路:如何判断环形链表(leetcode 141)
ps:本文是笔者在刷leetcode第141题环形链表时想到的一种新的解题思路,与大家进行分享:首先看题:给定一个链表,判断链表中是否有环。进阶:你能用 O(1)(即,常量)内存解决此问题吗?1、hash遍历:这个题刚一看到最容易想到的就是hash表的方法,遍历所有节点,每次遍历到一个节点时,判断该节点此前是否被访问过。具体地,使用哈希表来存储所有已经访问过的节点。每次我们到达一个节点,如果该节点已经存在于哈希表中,则说明该链表是环形链表,否则就将该节点加入哈希表中。重复这一过程,直到我们原创 2021-05-07 12:10:01 · 85 阅读 · 0 评论 -
java继承体系下的类加载顺序与过程详解
我们知道,java是一种单继承语言,那么,在继承结构下类的加载顺序是怎么样的呢?本文详细介绍了继承体系下类的加载顺序与过程详解。首先,根据java的JVM虚拟机类加载机制,一个类在使用时如果引用或使用了另一个尚未加载的类,此时JVM首先会加载被引用的那个类。然后,假设类Son继承类Father时,我们通过三种情况来考虑在继承关系下JVM的类加载顺序如何:假设当前有两个类,第一个是父类Father,Father中有静态变量j、静态代码块、构造器、成员变量、成员代码块等,代码如下:class Father原创 2021-04-20 17:39:28 · 594 阅读 · 0 评论 -
static、静态内部类、匿名内部类的关系与区别
static是java中常用的一个关键字,本文总结了static关键字修饰的方法、成员变量、类等的特点。并介绍了static与静态内部类的关系、静态内部类和匿名内部类的区别一、static关键字static关键子可以修饰方法、成员变量、和类,分别对应:静态方法:静态方法不依赖于任何对象就可以进行访问,对于静态方法来说,是没有this的。由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法。静态变量:静态变量是类的属性,被所有对象共享,在内存中只有一个副本,它当且仅当在类初次加载时会原创 2021-04-20 17:34:36 · 546 阅读 · 0 评论