自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 HashMap源码解析jdk1.8&&1.7

一、HashMap概述 在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。 下图中代表jdk1.8之前的hashmap结构,左边部分即代表哈希表,也称为哈希数组,数组的每个元素都是一个单链表的头节点,链表是用来解决

2021-07-29 00:51:06 266

原创 Dubbo(八)内核解析(DubboSPI机制、Adaptive机制、Wrapper机制、Activate机制)

Dubbo 的内核解析所谓 Dubbo 的内核是指,Dubbo 中所有功能都是基于它之上完成的,都是由它作为基础的。Dubbo 内核的工作原理由四部分构成:服务发现机制 SPI、自适应机制 Adaptive、包装机制 Wrapper 与激活机制 Activate。Dubbo 通过这四种机制实现了对插件的 IoC、AOP,实现了对自动生成类的动态编译 Compile。1. JDK 的 SPI 机制1.1 简介SPI,Service Provider Interface,服务提供者接口,是一种服

2021-07-26 14:56:44 666

原创 ZooKeeper(三)客户端服务端会话空闲超时管理分桶策略源码分析

客户端连接源码分析ZKClient 客户端,Curator 客户端先下结论:Client 要创建一个连接,其首先会在本地创建一个 ZooKeeper 对象,用于表示其所连接上的 Server。连接成功后,该连接的各种临时性数据会被初始化到 zk 对象中。连接关闭后,这个代表 Server 的 zk 对象会被删除。我们知道常用的ZK客户端技术有ZKClient 客户端,Curator 客户端,而客户端在连接ZK Server的时候,会配置集群信息,而连接集群中具体哪一台服务器,采用轮询的方式,

2021-07-25 21:51:06 589 2

原创 Netty概述

1. Netty 概述1.1 Netty 简介Netty 官网上可以看到最权威的介绍:Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能服务器和客户端。Netty 是一个 NIO 客户机-服务器框架,它支持快速、简单地开发网络应用程序,如服务器和客户机。它大大简化了网络编程,如 TCP 和 UDP 套接字服务器。“快速和简单”并不意味着生成的应用程序将受到可维护性或性能问题的影响。Netty经过精心设计,并积累了许多协议(如 ftp、smtp、http)的实施经验,以及

2021-07-25 16:37:39 1344

原创 ZooKeeper Leader选举机制源码分析(二)选举核心方法 lookForLeader()

选举核心方法 lookForLeader() 业务逻辑分析知道了选举相关的重要类及成员变量的作用以后,接下来我们开始分析真正执行选举逻辑的方法lookForLeader():1) 选举前的准备工作2) 将自己作为初始leader投出去3)循环交换投票直至选出Leader,循环交换投票过程中,根据收到的投票发送者状态不同,有下面三种情况:3.1) 发送者状态为LOOKING:3.1.1) 验证自己与大家的投票谁更适合做leader3.1.2) 判断本轮选举是否可以结束了3.2) 发送者状态为

2021-07-14 20:49:46 190

原创 ZooKeeper Leader选举机制源码分析(一)

选举算法源码中的总思路Zookeeper 的 Leader 选举类是 FastLeaderElection,该类是 ZAB 协议在 Leader 选举中的工程应用,所以直接找到该类对其进行分析。该类中的最为重要的方法为 lookForLeader(),是选举 Leader 的核心方法。该方法大体思路可以划分为以下几块:1.选举前的准备工作:选举前需要做一些准备工作,例如,创建选举对象、创建选举过程中需要用到的集合、初始化选举时限等。2.将自己作为初始化 Leader 投出去:在当前 Server 第一

2021-07-14 15:35:49 168

原创 Exception in thread “main“ java.sql.SQLException: The server time zone value ‘�й���׼ʱ��‘ is unrecogn

Exception in thread “main” java.sql.SQLException: The server time zone value ‘�й���׼ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the ‘serverTimezone’ configuration property) to use a m

2020-11-19 22:29:19 200

原创 JDBC

JDBC概述JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。JDBC的四大核心对象DriverManager:用于注册驱动Connection:

2020-11-19 22:25:07 79

原创 Java中的反射机制

Java中的反射机制概念:JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。但根据我个人的总结Java中的反制简单来说就是解剖类,然后获取类中的成员执行。反射的好处:1.可以解耦,提高程序的可扩展性。2.可以在程序运行过程中,操作这些对象。获取class对象方式应用场景Class.forName(“全类名”)多用于配置文件

2020-11-19 20:12:27 103

原创 Java中类的加载器

Java中类的加载器类的加载器时机分别有以下几种情况创建类的实例。类的静态变量,或者为静态变量赋值。类的静态方法。使用反射方式来强制创建某个类或接口对应的java.lang.Class对象。初始化某个类的子类。直接使用java.exe命令来运行某个主类。 public static void main(String[] args) { /*引导类加载器Bootstrap:是C++语言编写,负责加载JDK核心类库,核心类库位置\jdk\jre\lib\下的jar包。

2020-11-18 20:40:11 109

原创 线程同步之同步机制(synchronized)

线程同步之同步机制(synchronized)1.同步代码块。线程操作的共享数据进行同步。synchronized关键字可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。synchronized(同步锁){ //需要同步操作的代码 }2.同步方法:当一个方法中的所有代码,全部是线程操作的共享数据的时候,可以将整个方法进行同步。使用synchronized修饰的方法,就叫做同步方法,保证A线程执行该方法的时候,其他线程只能在方法外等着。public sy

2020-11-02 21:45:34 271

原创 Java-Calendar日历类

1.Calendar日历类java.util.Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。Calendar是抽象类,不能创建对象,需要使用子类对象。java.util.GregorianCalendar类是Calendar的子类,但是创建日历对象需要根据本地的时区,语言环境来创建,比较困难,Calendar类提供了静态方法 getInstance()直接获取子类的对象。public

2020-10-27 21:48:51 163

原创 Java-File类

File类File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。File类将文件,文件夹和路径封装成了对象,提供大量的方法来操作这些对象。File类构造方法:package Day19;import java.io.File;public class FileTest { public static void main(String[] args) { method3(); } /** * File类构造方法

2020-10-27 21:38:32 75

原创 常用API-Object类

常用API-Object类1.1概述java.lang.Object类是Java语言中的根类,每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。如果一个类没有特别指定父类, 那么默认则继承自Object类。1.2native本地方法1.被native修饰的方法,非Java语言编写,是由C++语言编写。2.本地方法在运行时期进入本地方法栈内存,本地方法栈是一块独立内存的区域。3.本地方法的意义是和操作系统进行交互。public class Object {

2020-10-25 19:57:43 126

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除