自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (2)
  • 收藏
  • 关注

原创 HTTP长连接解析

HTTP长连接解析

2022-07-09 19:05:42 727

原创 Flink On Yarn HA模式搭建问题

Flink ON Yarn HA搭建无法启动分析

2022-07-06 10:12:21 1129

原创 Volatile最终解释

java中volatile的最终解释,从HotSpot源码到CPU缓存StoreBuffer

2022-06-19 16:41:09 1434

原创 RocketMQ

官方文档:https://github.com/apache/rocketmq/blob/master/docs/cn 中文的很爽1.AKF拆分和Kafka一样,broker,topic拆分模式是一样的2.元数据模型1. HDFS RocketMQ 汇报模型,每个部分维护自己的元数据,最终汇报给一个主Master 在HDFS中为NameNode,最后对外提供一个可用的元数据列表 2. Kafka 元数据统一维护,所有节点一致,ZK有元数据,每个节点有M..

2022-05-13 16:35:02 536

原创 一.SpringBoot源码

正在上传…重新上传取消1.自动装配原理1.@Import@Import注解有三种用法我们知道,使用@Import是一种很好的导入Bean定义信息的方式弊端: 但是使用这个@Import三种用法导入的,无法保证顺序,比如整合Mybatis时,我们有SqlSessionFactory,那么如果我们自己个性化配置的SqlSessionFactory就无法在这个默认的前面加载​Spring中使用了 DeferredImportSelector接口的方式,实现这个接口并标识@Import的类..

2022-03-29 15:36:01 1988

原创 Spring整合Dubbo源码

1. Dubbo中propertie文件解析以及处理原理2. Dubbo中@Service注解解析以及处理原理3. Dubbo中@Reference注解解析以及处理原理这三个是Dubbo和Spring整合的核心原理1.整体流程1. propertie文件解析以后,创建多个对象,生成protocolConfig等存储配置文件中信息的对象2. 处理@Service时,会创建两个对象,ServiceBean和SpringBean,并且SpringBean为ServiceBean的re...

2022-03-25 15:44:31 670

原创 Netty源码

黄色块是方法名白色块是类名线上的是具体调用的代码

2022-03-23 20:51:36 311

原创 HTTPS协议原理(通道安全)

1.通道安全1.参数安全除了上诉两个问题,其实还有更严重的问的,中间人攻击2.中间人攻击3.CA认证CA本身就是一个非对称加密,CA私钥在服务端生成好,CA的公钥由第三方CA机构托管,内置在浏览器,或者给浏览器提供一个下载的链接主流生成CA的有两种方式: OpenSSL和JKShttps ca的公钥私钥: 公钥要存在浏览器 私钥存储在服务器 公私钥不传递避免第三方拦截请求,篡改伪造一个公钥私钥向浏...

2022-03-01 22:23:30 168

原创 MVCC多版本并发控制

1.MVCC的意义锁的意义在于并发操作数据时,权限的控制例如: 一行记录在有一个client访问时加锁,其他客户端能否操作,能进行怎么操作的权限控制​MVCC的意义在于并发操作数据时,能获取到什么样数据的控制例如: 可重复读情况下,其他client修改以后,能否获取到最新数据的​这两个一个是控制能否操作,一个是控制操作以后什么结果,mvcc主要是针对select …from…普通查询数据结果的控制select …from…这种普通查询语句是不会收到锁的影响的,都可以执行成功2.R

2022-03-01 22:17:20 180

原创 HashCode,内存地址和HashMap

HashCode问题HashCode是一个数,如何得到这个数? 默认调用一个对象的HashCode是调用public native int hashCode();这个本地方法由下面C++返回的值​static inline intptr_t get_next_hash(Thread * Self, oop obj) { intptr_t value = 0 ; if (hashCode == 0) { // This form uses an unguarded gl...

2022-02-16 15:48:28 601

原创 ScheduledThreadPoolExecutor源码和误区详解

1.ScheduledThreadPoolExecutor1.概述ScheduledThreadPoolExecutor继承了ThreadPoolExecutor,在很多方法的实现上和ThreadPoolExecutor是一致或者相似的​同时还实现了ScheduledExecutorService接口,这个接口中的四个方法,才是ScheduledThreadPoolExecutor的意义,包含四个延时任务相关的方法​ScheduledThreadPoolExecutor就是一..

2022-02-13 18:55:03 814

原创 Semaphore,CountDownLatch使用和浅谈源码

1.如何使用Smaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目,底层依赖AQS的状态State,是在生产当中比较常用的一个工具类。创建Smaphore时,给定一个数量参数,表示同一时刻许可线程的数量//1. 构造方法public Semaphore(int permits)public Semaphore(int permits, boolean fair) //2. 主要方法public void acquire() throws Inter..

2022-02-04 12:09:09 642

原创 ReentrantLock的公平与非公平核心区别

先看类图,NonfairSync和FairSync共同构成了ReentrantLock,他们是ReentrantLock的内部类ReentrantLock只是对外的一个壳,具体实现都是由这两个内部类完成的那么这两个内部类的共同特点现在看来都是继承自Sync这个类1.核心区别直接上源码static final class NonfairSync extends Sync { private static final long serialVersionUID = ...

2022-01-30 21:48:47 731

原创 浅谈框架中xml文件格式的含义

1. XML的标签必须自定义,但是在写标签名的时候一定要有含义 标签不能交叉编写 特殊字符需要使用实体转义2. XML必须有一个根结点,也就是其他的标签都涵盖在里面 Spring的为<Beans> pom的为<project>3. XML还应该有头声明 不为硬性要求,但是里面涵盖了编码格式,很有必要定义,一般也都定义 <?xml version="1.0" encoding="UTF-8"?>4. XML...

2022-01-29 18:36:54 756

原创 JAVA相关的一些底层知识

1.计算机五大核心组成部分1. 控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。​2. 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。 CPU​3. 存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。内存​4. 输入(Input system):输入设备是计算机

2022-01-21 16:34:23 1072

原创 MySql锁机制

1.MySQL锁的基本介绍锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。 MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。 比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking); InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。 表级锁:

2022-01-19 16:32:23 850

原创 Java 枚举类

1.定义 枚举类也是一个类,既然是类,那么就会有构造器,对象,属性,方法 有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便 2.枚举类和普通类的不同既然是用于类的对象是有限且固定的,我们自然可以使用私有化构造器的方式,在内部创建好静态对象,一样能达到类的对象是有限且固定的枚举类岂不是很鸡肋? 难道只是为了使用方便?​但是,我们还要考虑到java中的反射,反射是可以拿到私有的构造器,并且通过这个私有的构造器创建对象普通类: 在被反射以后,可以创建多个对

2022-01-11 14:41:11 728

原创 Java Stream流处理

1.Stream的概念Stream是一组用来处理数组.集合的API​好处:1. 代码简洁 意图明确 使用Stream接口让你从此告别for循环2. 多核友好,函数式编程使得并行程序如此简单 你需要的全部就是调用一下parallel()方法处理集合非常方便2.Stream的特点1. 不是数据结构,没有内部存储 在一套执行操作中,中间的某个操作不会存储数据 2. 不支持索引访问 例如一个int[] i = {1,2,3,4}; 的数组,在操作中不.

2022-01-08 19:13:11 1758

原创 通俗讲Cookie,Session,Token区别

1.Cookie保存在浏览器​第一阶段: Cookie里面保存用户的原始用户名密码,每次访问服务器时,浏览器携带已经保存用户名密码的Cookie,有服务器解析验证用户名密码是否匹配,如果匹配无需再次登录 但是非常安全,如果黑客得到完整Cookie就能得到完整的用户名密码​第二阶段: Cookie里面保存用户的原始用户名密码非常不安全,而恰好服务器生成了唯一的SessionID并且还要返回给浏览器,那么浏览器的Cookie就可以保存SessionID并且通过Session的有效期设置成..

2022-01-06 16:21:57 1239

原创 JVM对象创建和内存分配机制

上一篇类加载机制中,将.class文件加载到内存中,根据.class二进制文件将不同的信息放入到运行时数据区的不同部分,其中关于new的对象分配在运行时的数据区的哪里在这一篇详解1.对象的创建以new Math(); 为例1.类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。new指令对应到语言层面上讲是,new关键词、对象克隆、对象

2022-01-02 11:54:30 474

原创 JVM 类加载机制

由上一篇JVM工作的整体逻辑,这一篇讲一下其中的类加载机制回顾一些工作模型: 一个我们自己编写的.java文件,编译生成.class文件,将.class文件加载到JVM中,JVM根据.class二进制文件的不同数据信息分配到运行时数据区的不同位置,根据栈的信息一步一步的交给java执行器执行代码,在执行的过程中动态的再生成信息等放入到运行时数据区由类加载系统,运行时数据区,java执行器三部分协作执行这一篇主要写一下类加载系统自己的一些理解1.整体流程1. 编译文件2....

2021-12-28 11:30:19 308

原创 JVM整体结构

1.Java语言的跨平台特性2.JVM整体结构及内存模型JVM是由类装载子系统,运行时数据区,java执行引擎三部分组成的这三部分是相辅相成共同工作了,不能单纯的说只有执行完某一个部分才由下一个部分来工作,从JVM运行开始,三个类加载器就要开始创建,并且类加载器的一些信息也要放在运行时数据区1.类装载子系统.class文件通过类装载系统进行加载,验证等一系列操作,在这个过程中将需要存储到内存的数据放到运行时数据区类装载子系统也是之前的类加载机制介绍的2.运行时数据区

2021-12-23 20:29:52 1026

原创 mysql键和索引

索引的分类数据库默认会创建索引: 并不是给主键建立的索引,是给唯一键键的 [主键索引, 唯一索引 , 6字节row_id]主键索引: 是唯一且非空的列创建的索引 比唯一键多一个非空唯一索引: 可以有一个空值 是数据库用来创建索引的普通索引: 给普通的一个列创建索引 可以空也可以不唯一全文索引: varchar char text 用于全文检索组合索引: 由多个列一起形成的索引索引和键的误区键和索引是两个不同的概念:键...

2021-12-09 17:29:42 880

原创 NIO和BIO以及传统IO

首先明白这三个概念1.NIO是非阻塞.基于网络的IO,即从网络上传过来的数据读取2.BIO是阻塞.基于网络的IO,同上3.传统IO,传统IO是和硬盘打交道,即读写硬盘,和网络没有关系下文描述的是基于网络的NIO和BIO,耐心看完,前面是对网络的阐述,只有明白网络才能理解IO1.计算机体系在linux系统中,一切皆文件,例如:摄像头,打印机,将他们两个抽象成文件,就是读取和输出文件文件描述符: 在linux没有面向对象的概念,把一切抽象成文件了,当想操作一个输入输出设备,Soc

2021-07-31 23:20:25 227

原创 Git上传

git个人经验:1.首先下载git2.idea绑定git软件3.git需要一个本地仓库和gitee仓库git的远程仓库想要git上传代码,必须要 1.本机安装git软件, 2.git绑定idea,3.有一个gitee远程仓库git的本地仓库的创建方法一:1.1创建一个文件夹1.2.右键运Git Bash Here链接为远程仓库的地址通过这样就会拉取远程仓库的git配置,会生成.git隐藏文件,指向远程仓库这样就是一个本地仓库,可以把这些

2021-06-14 19:33:59 2278

原创 java学习历程常用pom依赖

常用pom数据库连接信息spring.datasource.username=rootspring.datasource.password=123456spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8spring.datasource.driver

2021-06-14 17:53:03 707

Netty源码核心流程

1. 蓝色方框为某一分支或者某一块的详细作用 2. 白色长条为类名 3.黄色长条为方法名 4. 线上的为进入到下一环节的源码 按步骤走都能找到对应的类方法.包括重载等都进行了标注

2022-02-03

Map-Reduce源码.png

Map-Reduce源码.png

2022-03-13

空空如也

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

TA关注的人

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