自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM 垃圾回收器

对象通常在Eden区诞生,如果经理过一次Yong GC之后,并且能被 Survivor 区容纳的话,该对象就会被移到Survivor 空间中,并将其年龄设置为 1 岁,对象在Survivor 区每存活一次其年龄增加一岁,当前年龄增加到一定程度(默认为15)就会进入老年代。大对象需要大量来连续内存空间的Java对象,在分配空间时,它容易导致内存明明还有不少空间时就提前触发垃圾收集,以获取足够的连续空间才能安置它们,且当复制对象时,大对象就意味着高额的内存复制开销。当一个对象它不可达的时候它是非死不可吗?

2023-02-21 21:40:23 111

原创 Spring Cloud GateWay路由信息的获取

它里面定义了一个全局路由Id、断言列表、过滤器链和要转发的目的URI。Spring Cloud GateWay 是基于SpringBoot的自动装配来完成加载所需要的Bean信息的。由于我们今天只关注路由信息的加载,所以我们只需关注如下几个方法。3、响应同样的经过一系列的Filter链过滤,最后响应给客户端。1、当客户端发送一个请求的时候,首先它通过请求的路由匹配(2、持内置到Spring Handler映射中的路由匹配。4、过滤器链作用于路由匹配。3、支持HTTP路由匹配。2、然后通过一系列的。

2022-12-08 14:18:42 4022 1

原创 RocketMQ 之 NameServer

正如我们所知道在RocketMQ 中NameServer 其主要的作用是负责管理Broker节点信息。那我们为什么需要NameServer呢?在实际的生产过程中对于Broker节点来说我们肯定是以集群的方式进行部署的。那对于Producer 来说他们怎么知道要把消息发送到那个Broker 节点上面去呢?当新增一个Broker 节点的时候 Producer 它又是怎么感知的呢?这就引入了NameServer。

2022-11-30 18:50:00 362

原创 RocketMQ OS内核参数JVM调优

就是os会把一部分磁盘空间作为swap区域,然后如果有的进程现在可能不是太活跃,就会被操作系统把进程调整为睡眠状态,把进程中的数据放入磁盘上的swap区域,然后让这个进程把原来占用的内存空间腾出来,交给其他活跃运行的进程来使用。因为我们在大量频繁的读写磁盘文件的时候,或者是进行网络通信的时候多和这参数有关。其实大家综合思考一下这几个参数,会发现到最后要调整的东西,无非都是跟磁盘文件IO、网络通信、内存管理、线程数量有关系的 ,因为我们的中间件系统在运行的时候无非就是跟这些打交道。

2022-08-19 10:22:54 657

原创 Spring事务失效的场景、及事务传播机制

Spring 事务编程式事务 声明式事务 事务的传播机制

2022-08-19 10:21:51 76

原创 Spring 之 AOP

AOP面向切面编程,其目的是为了解决重复代码和类耦合问题。AOP说明白了就是将重复代码抽象到一个切面中,然后我们哪里需要的时候就将这个切面切入到指定位置。AOP的本质是通过代理模式来实现的。在Spring中实现代理模式的方法有两种Jdk动态代理和cglib动态代理。其中jdk动态代理是基于接口来实现的,cglib的基于类来实现的、AOP动态代理实在初始化之后来实现的。...

2022-07-29 16:56:09 80

原创 Spring @Autowire 源码分析

Autowire注解是由AutowiredAnnotationBeanPostProcessor处理器来实现的。@Autowired注解正是通过这个方法实现注入类型的预解析,将需要依赖注入的属性信息封装到InjectionMetadata类中。,InjectionMetadata类中包含了需要注入的元素(injectedElements)及元素要注入的目标类(tagetClass)。然后其最终会调用doCreateBean方法中,其中会执行populateBean方法实现对属性的注入。...

2022-07-29 15:50:28 217

原创 Spring IOC 容器初始化过程

我们通过ClassPathXmlApplicationContext容器来探究IOC容器初始化的过程。如以下代码通过ApplicationContext创建Spring容器,该容器会读取配置文件"/bean.xml",并统一管理由文件中定义好的bean实例对象。。

2022-07-29 11:45:17 255

原创 RocketMQ 之 Broker Server

Broker其主要是负责存储消息和转发消息。是RocketMQ的核心,现在让我们介绍一下其核心功能部分。

2022-07-28 18:01:52 678

转载 RocketMQ 的基本概念

RocketMQ

2022-07-27 15:42:56 475

原创 Docker 的安装和介绍

Docker(一种轻量级的虚拟化方式) 简单来说就是可以打包程序和运行环境的容器,并可以将程序和环境一起发布。就如码头里面的集装箱。其优势更快的交付与部署高效的资源利用更轻松的迁移和扩展更简单的更新和管理Docker 常用命令启动docker :systemctl start docker停止docker :systemctl start docker重启docker :systemctl restart docker查看版本 :docker version查看docker信息 :

2022-07-19 17:39:30 64

原创 Spring 循环依赖解决方案(只对 setter 注入有效)

Spring 循环依赖

2022-07-05 15:42:13 320

原创 Redis 的介绍

传统的关系形数据库和非关系型数据库的区别关系形数据库结构化数据、结构化查询语句数据和关系都存储在表中数据操作语言、数据定义语言基础事务非关系形数据库没有固定的查询语句CAP定理和BASE理论键值对存储、列存储、文档存储、图关系数据库高可用、高性能、高扩展Reids 概叙Redis是一个Key-Value 的数据库,且其操作都是原子性的。为了保证效率其数据都是存储在内存中的Redis会周期性的把更新的数据写入到磁盘或者把修改操作写入追加的记录文件,并且在此基础山提供了主从同步。

2022-05-05 21:58:56 50

原创 spring cloud alibaba Nacos 整合 OpenFeign

Feign 的简单介绍Feign 框架进行RPC调用,会按照http协议来封装请求数据,数据格式都是按照http协议里的请求来做的,底层通过tcp连接发送。其基本原理是服务B向注册中心注册自己,服务A通过Ribbon发现服务。然后Feign通过封装好的代码发送http请求给服务B,从而进行两服务之间的通讯。简而言之Feign是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求。Nacos 整合 OpenFeign...

2022-04-22 22:40:25 553 1

原创 JVM 堆的内存划分

JVM 堆内存的划分老年代对象会优先分配到新生代内存中,每次GC后没有回收的对象年龄加1,年龄到15还没被回收对象就会被放到老年代中。如果对象较大,超过新生代的一半也会被放到老年代。老年代区域的垃圾回收称为OldGC,OldGC非常浪费性能(老年代不像新生代这样划分区域,故会存在空间碎片),所以我们要尽量减少OldGC。OldGC往往伴随YongGC。Yong GC + Old GC = Full GC新生代新生代分为Eden区和两个Survivor区,且始终有一个Survivor区保持闲置。对象会

2022-04-21 22:48:59 687

原创 HashMap源码分析

HashMap 底层在JDK1.7 之前是数组 + 链表,但在JDK1.8 之后变成了数组 + 链表 + 红黑树。当单链表的长度大于8,且HashMap的capacity大于64的时候才将链表转红黑树,如果单链表长度大于8但capactiy小于64这时只做扩容。HashMap 中默认数组的长度为16。hash 优化hash算法优化:对每个hash值的让其高低16位进行异或操作,让其同时保留了高低16为的特性。避免hash冲突。寻址算法的优化:用与运算替代取模运算。 static final int

2022-04-21 19:42:10 472

原创 搭建高可用的nacos服务

前提条件1、准备三台虚拟机,且三台虚拟机都安装了JDK2、准备一台数据库服务器我这准备了三台虚拟机,且数据库安装在192.168.98.30上192.168.98.30192.168.98.31192.168.98.32开始安装1、下载nacos 安装包,并上传到虚拟机的 /usr/local/nacos 目录下面,且解压。nacos 下载地址2、在自己准备好的数据库服务器上创建nacos数据库,然后执行nacos的conf目录下nacos-mysql.sql3、重命名/usr/loca

2022-04-18 23:57:50 974

原创 Java类加载的过程

Java 类加载过程包括加载,链接、初始化三个阶段。1、加载获取类的全限定类名,把class文件转为二进制流将二进制信息存入方法区中将java.lang.Class对象存入堆中(Java 中的每一个类都会创建一个类对象)简而言之就是将 Java 类的字节码文件加载到机器内存中,并在内存中构建出 Java 类的原型——类模板对象。所谓类模板对象,其实就是 Java 类在 JVM 内存中的一个快照,JVM 将从字节码文件中解析出的常量池、类字段、类方法等信息存储到模板中,这样 JVM 在运行期

2022-04-05 22:54:13 385

原创 JVM 内存区域与内存溢出异常

程序计数器程序计数器是一块较小的内存,它可以当作当前线程所执行的字节码的指示器,程序计数器是程序的控制流。程序的循环,跳转,异常,线程恢复等都由它控制。程序计数器它是线程私有的不存在OutOfMemoryError的情况,其生命周期也和线程一样。Java 虚拟机栈Java虚拟机栈也是线程私有的,它的生命周期和线程一样。其描叙的是Java方法的线程内存模型,每个方法被执行时Java虚拟机栈都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接方法出口等信息,每一个方法执行完成就代表一个栈帧从Java虚.

2022-03-18 23:44:52 434

原创 Servlet 入门,以及tomcat的简单介绍

Servlet 介绍Servlet 是 Server Applet 的简称,称为服务端小程序。是JavaEE平台下的技术标兵,基于Java语言编写的服务端程序。Web容器或者应用服务器中实现了Servlet标准,所以Servlet 需要运行在Web容器或者服务器中。Servlet主要功能在于能够在服务器中执行并生成数据。Servlet 技术特点Servlet 使用单进程多线程的方式运行。Servlet 在程序中的位置(web Browser(浏览器) —> Http Server(Http

2022-02-17 22:09:07 232

原创 Spring Cloud简介及Eureka 环境搭建

微服务简介微服务是由单一的应用程序构成的小服务,拥有自己的进程和轻量化处理。服务依业务功能设计,以全自动方式部署,与其他服务使用HTTP API 的通讯。同时同时服务使用最小规模的集中管理技术,服务可以使用不同的编程语言和数据库实现。单体应用的特点部署成本高(每次代码的修改都要全量替换)改动影响大,风险高(不论代码改动多小,成本都想同)无法快速满足扩容,弹性伸缩,无法适应云环境特点等问题微服务的特点优点:针对特定服务发布,影响小,风险小,成本低,低成本扩容缺点:部署,测试,监控的成本问

2022-02-13 15:34:07 337

原创 MyBatis 配置文件详解

MyBatis配置文件详解配置名称配置介绍configuration整个配置文件的顶级标签properties该标签可以引入外部配置文件的属性,并用${}读取配置属性setting用来配置一些改变运行时的行为信息,如是否使用缓存,延迟加载等typeAliases用于设置一些别名用来替代冗长的类型声明environments数据环境集合属性对象environment数据环境子属性对象transactionManagerMyBatis的事务

2022-01-28 19:27:35 339

原创 MyBatis介绍

MyBatis的基本介绍,以及MyBatis和传统JDBC的区别

2022-01-25 16:24:03 1133

空空如也

空空如也

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

TA关注的人

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