自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

https://github.com/hakusai22

https://github.com/hakusai22

  • 博客(567)
  • 资源 (1)
  • 收藏
  • 关注

原创 JVM总结(自用)

JVM笔记(自用)二. 性能监控和调优①. JVM监控工具_Jprofiler1. 数据采集方式2. 遥感监控3.内存视图4. 堆遍历(heap walker)5. cpu视图6. 线程视图②. Arthas(阿尔萨斯)二. 性能监控和调优①. JVM监控工具_Jprofiler1. 数据采集方式2. 遥感监控3.内存视图4. 堆遍历(heap walker)5. cpu视图6. 线程视图②. Arthas(阿尔萨斯)/

2021-12-08 16:02:19 486 1

原创 大厂学院JUC整理(自用)

11111

2021-11-10 16:42:33 1470

原创 Elasticsearch进阶笔记(自用)

ES笔记整理(自用)

2021-10-30 15:02:54 1001

原创 RocketMQ学习——RocketMQ应用

RocketMQ应用一、普通消息二、顺序消息三、延时消息四、事务消息五、批量消息六、消息过滤七、消息发送重试机制八、消息消费重试机制一、普通消息二、顺序消息三、延时消息四、事务消息五、批量消息六、消息过滤七、消息发送重试机制八、消息消费重试机制...

2021-10-05 17:23:44 618

原创 Netty总结

Netty面经1. Netty 是什么?2. 为什么要用 Netty?3. Netty 应用场景了解么?4. Netty 高性能表现在哪些方面?5. BIO、NIO和AIO的区别?6. Netty 核心组件有哪些?分别有什么作用?7. Netty 发送消息有几种方式?8. NioEventLoopGroup 默认的构造函数会起多少线程?8. EventloopGroup 了解么?和 EventLoop 啥关系?9. Bootstrap 和 ServerBootstrap 了解么?8. Netty 线程模型了

2021-08-30 21:08:40 315

原创 秒杀商城项目----Sentinel实现接口限流

Sentinel实现系统限流和服务降级一. pom.xml导入依赖二. 配置Sentinel访问地址三. 接口上进行注解配置Sentinel来服务降级,限流四. 访问控制面板进行接口服务的限流和降级SpringCloud_Alibaba微服务学习—sentinel—流量卫兵(以前写的入门教程)一. pom.xml导入依赖二. 配置Sentinel访问地址三. 接口上进行注解配置Sentinel来服务降级,限流四. 访问控制面板进行接口服务的限流和降级...

2021-08-27 12:06:07 441

原创 操作系统总结

操作系统面经1. 进程和线程的区别?2. 协程与线程的区别?3. 并发和并行有什么区别?4. 进程与线程的切换流程?5. 为什么虚拟地址空间切换会比较耗时?6. 进程间通信方式有哪些?7. 进程间同步的方式有哪些?8. 线程同步的方式有哪些?9. 线程的分类?10. 什么是临界区,如何解决冲突?11. 什么是死锁?死锁产生的条件?12. 进程调度策略有哪几种?13. 进程有哪些状态?14. 什么是分页?15. 什么是分段?16. 分页和分段有什区别?17. 什么是交换空间?16. 页面替换算法有哪些?18.

2021-08-13 11:58:08 388

原创 SpringSecurity+Jwt+Autho2整合(一)

SpringSecurity+JWT+Autho2整合一. SpringSecurity简介二. SpringSecurity快速入门①. 导入依赖②. 登录页面③. 访问页面④. UserDetailsService详解⑤. UserDetails详解⑥. PasswordEncoder 密码解析器详解⑦. 自定义登录逻辑_修改配置类1. 登录页面配置2. 失败跳转3. 添加控制器的方法4. 设置请求账户和密码的参数名5. 自定义登录成功处理器6. 自定义登录失败处理器7. 访问控制url匹配8. 内置访

2021-08-08 18:04:49 900 1

原创 Seata----分布式事务框架

Seata 是阿里开源的一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。单体应用中,一个业务操作需要调用三个模块完成,此时数据的一致性由本地事务来保证。我们可以把一个分布式事务理解成一个包含了若干分支事务的全局事务,全局事务的职责是协调其下管辖的分支事务达成一致,要么一起成功提交,要么一起失败回滚。此外,通常分支事务本身就是一个满足ACID的本地事务。

2021-08-07 18:06:19 517

原创 JVM基础知识---Class文件结构总结

类索引用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名,由于 Java 语言的单继承,所以父类索引只有一个,除了 java.lang.Object 之外,所有的 java 类都有父类,因此除了 java.lang.Object 外,所有 Java 类的父类索引都不为 0。高版本的 Java 虚拟机可以执行低版本编译器生成的 Class 文件,但是低版本的 Java 虚拟机不能执行高版本编译器生成的 Class 文件。

2021-08-07 11:29:54 188

原创 JVM总结

JVM面经1. 介绍下 Java 内存区域(运行时数据区)?2. Java 对象的创建过程(五步)?3. 内存分配并发问题?4. 对象的访问定位的两种方式(句柄和直接指针两种方式)5. 对象的内存布局?6. 如何判断对象是否死亡(两种方法)?1. 介绍下 Java 内存区域(运行时数据区)?前面博客记录了Java 内存区域(运行时数据区)2. Java 对象的创建过程(五步)?3. 内存分配并发问题?前面博客记录了Java 对象的创建过程(五步)4. 对象的访问定位的两种方式(句柄和直接

2021-08-05 11:04:45 275

原创 MySQL面经

MySQL 是一种关系型数据库,主要用于持久化存储我们的系统中的一些数据比如用户信息。由于 MySQL 是开源免费并且比较成熟的数据库,因此,MySQL 被大量使用在各种系统中。MySQL 的默认端口号是3306。索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。更通俗的说,索引就相当于目录。

2021-08-05 09:14:09 669

原创 Dubbo+Zookeeper总结

注册中心引入远程服务,这个就是重点了,Consumer 通过注册中心得知 Provider 的相关信息,然后进行服务的引入,这里还包括多注册中心,同一个服务多个提供者的情况,如何抉择如何封装,如何进行负载均衡、容错并且让使用者无感知,这就是个技术活。比如这个时候 所有的参与者 都返回了准备好了的消息,这个时候就进行事务的提交,协调者此时会给所有的参与者发送 Commit 请求 ,当参与者收到 Commit 请求的时候会执行前面执行的事务的 提交操作 ,提交完毕之后将给协调者发送提交成功的响应。

2021-08-04 18:05:03 501

原创 Spring全家桶面经

Spring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性。Spring Core: 基础,可以说 Spring 其他所有的功能都需要依赖于该类库。Spring Aspects : 该模块为与AspectJ的集成提供支持。Spring AOP :提供了面向切面的编程实现。Spring JDBC : Java数据库连接。Spring JMS :Java消息服务。Spring ORM : 用于支持Hibernate等ORM工具。

2021-08-04 10:13:23 684 1

原创 秒杀商城项目----Dubbo+Zookeeper分布式秒杀系统模块分析

优化为分布式秒杀系统一. Seckill-cache——缓存模块①. RedisConfig_redis配置信息②. RedisPoolFactory_jedis连接池③. RedisLockImpl_Redis分布式锁服务实现(注册服务到Dubbo)④. RedisServiceImpl_redis服务实现(注册服务到Dubbo)⑤. application.properties配置二. Seckill-commons——公共模块①. 服务接口1. DLockApi——分布式锁接口2. RedisServ

2021-07-28 23:15:24 1039

原创 Spring源码——IOC容器创建

IOC容器创建一. Spring容器的refresh()【创建刷新】①. prepareRefresh()刷新前的预处理②. obtainFreshBeanFactory(),获取BeanFactory③. prepareBeanFactory(beanFactory),BeanFactory的预准备工作(BeanFactory进行一些设置)④. postProcessBeanFactory(beanFactory);BeanFactory准备工作完成后进行的后置处理工作⑤. invokeBeanFacto

2021-07-27 21:34:31 305

原创 Spring注解驱动开发——扩展原理

扩展原理一. BeanFactoryPostProcessor二. BeanDefinitionRegistryPostProcessor三. ApplicationListener用法和原理四. @EventListener与SmartInitializingSingleton一. BeanFactoryPostProcessorBeanPostProcessor:bean的后置处理器,bean创建对象初始化前后进行拦截工作的BeanFactoryPostProcessor:BeanFact

2021-07-27 21:16:05 287

原创 Spring注解驱动开发——声明式事务

声明式事务一. 声明式事务_环境搭建①. pom.xml依赖导入②. 配置数据源、JdbcTemplate操作数据③. 数据库中创建一张表④. 创建UserService类⑤. 创建UserDao⑥. 不加事务注解测试⑦. 加入@Transactional这个注解测试⑧. @EnableTransactionManagement 开启基于注解的事务管理功能⑨. 配置事务管理器来控制事务二. 声明式事务-源码分析①. @EnableTransactionManagement②. 导入两个组件AutoProxy

2021-07-27 20:52:08 327

原创 Spring注解驱动开发——AOP原理

AOP原理一. AOP功能测试①. pom.xml 依赖导入②. 目标类③. 切面类④. 配置类⑤. 测试类二. AOP原理-@EnableAspectJAutoProxy①. 给容器中导入AspectJAutoProxyRegistrar②. 利用AspectJAutoProxyRegistrar自定义给容器中注册bean;BeanDefinetion③. 给容器中注册一个AnnotationAwareAspectJAutoProxyCreator④. AnnotationAwareAspectJAuto

2021-07-26 23:24:18 950 25

原创 Zookeeper学习----客户端初始化源码解析

客户端初始化源码解析一. 客户端初始化源码解析①. ZkCli.sh②. 创建 ZookeeperMain③. 连接 zk④. 创建 ZooKeeperAdmin 对象⑤. 初始化监听器+解析连接地址+创建通信⑥. 客户端与服务器端通信的终端⑦. 创建两个线程⑧. 启动连接服务端⑨. 建立连接⑩. 接收服务端响应,并处理十一. 执行run十二. executeLine(line)一行一行读取命令十三. 处理客户端命令processCmd()十四. 解析命令processZKCmd()一. 客户端初始化源码

2021-07-26 22:25:43 534 2

原创 Zookeeper学习----服务端 Leader和Follower 启动

服务端 Leader和Follower 启动一. 服务端Leader启动二. 服务端 Follower 启动一. 服务端Leader启动二. 服务端 Follower 启动

2021-07-26 22:18:30 172

原创 Zookeeper学习----Follower 和 Leader 状态同步源码

Follower 和 Leader 状态同步源码一. Follower 和 Leader 状态同步总结二. Follower和Leader状态同步源码解析①. Leader操作1. Leader.lead()等待接收 follower 的状态同步申请2. 等待其他 follower 节点向 leader 节点发送同步状态3. 创建 LearnerHandler4. 从网络中接收消息,并反序列化为 packet5. Leader 根据从 Follower 获取 sid 和旧的 epoch,构建新的 epo

2021-07-26 22:14:15 903 5

原创 Zookeeper学习----Zookeeper选举源码解析

Zookeeper选举源码解析一. Zookeeper选举机制——第一次启动二. Zookeeper选举机制——非第一次启动三. Zookeeper选举源码解析①. 选举准备1. startLeaderElection()选举准备2. createElectionAlgorithm()创建选举算法实例3. 创建 QuorumCnxnManager,负责选举过程中的所有网络通信4. 启动监听线程listener.start()5. 准备开始选举6. 创建各种队列②. 选举执行1. super.start()

2021-07-26 22:00:09 748 4

原创 Zookeeper学习----Zookeeper服务端加载数据源码解析

Zookeeper服务端加载数据源码解析一. Zookeeper服务端加载数据源码解析①. quorumPeer.start();②. loadDataBase()③. loadDataBase()④. restore()⑤. deserialize()⑥. deserializeSnapshot⑦. 数据恢复编辑日志⑧. txnLog.read()⑨. processTransaction()⑩. processTxn()一. Zookeeper服务端加载数据源码解析①. quorumPeer

2021-07-26 21:45:02 162

原创 Zookeeper学习----Zookeeper服务端初始化源码解析

Zookeeper服务端初始化源码解析一. Zookeeper服务端初始化源码解析①. ZK 服务端启动脚本分析②. ZK 服务端启动入口③. 解析参数1. initializeAndRun() 初始化节点并运行2. parse()解析参数,zoo.cfg 和 myid3. parseProperties(cfg)解析配置文件4. setupQuorumPeerConfig()6. setupMyId() 设置myid④. 过期快照删除1. new QuorumPeerConfig()2. getSnap

2021-07-26 21:36:09 220

原创 Zookeeper学习----Zookeeper持久化+序列化源码

Zookeeper持久化源码一. 持久化源码①. 快照②. 操作日志二. 序列化源码①. 序列化和反序列化支持的数据类型②. 序列化和反序列化方法一. 持久化源码Leader 和 Follower 中的数据会在内存和磁盘中各保存一份。所以需要将内存中的数据持久化到磁盘中。①. 快照②. 操作日志二. 序列化源码①. 序列化和反序列化支持的数据类型②. 序列化和反序列化方法...

2021-07-26 21:20:44 162

原创 Zookeeper学习----Zookeeper 是如何保证数据一致性

Zookeeper 是如何保证数据一致性一. Paxos 算法①. Paxos介绍②. Paxos算法描述③. Paxos算法流程二. ZAB 协议①. ZAB 算法介绍②. Zab 协议模式:消息广播③. Zab 协议模式:崩溃恢复_异常假设④. Zab 协议模式:崩溃恢复_Leader选举④. Zab 协议模式:崩溃恢复_数据恢复三. CAP理论一. Paxos 算法①. Paxos介绍Paxos算法:一种基于消息传递且具有高度容错特性的一致性算法。Paxos算法解决的问题:就是如何快速

2021-07-26 21:15:33 245

原创 RocketMQ学习——RocketMQ基本概念和系统架构

RocketMQ系统架构一. Producer二. Consumer三. Name Server①. 功能介绍②. 路由注册③. 路由剔除④. 路由发现⑤. 客户端NameServer选择策略四. Broker①. 功能介绍②. 模块构成③. 集群部署五. 工作流程①. 具体流程②. Topic的创建模式③. 读/写队列一. Producer二. Consumer三. Name Server①. 功能介绍②. 路由注册③. 路由剔除④. 路由发现⑤. 客户端NameServer选择策略四.

2021-07-23 22:06:53 227 1

原创 RocketMQ学习——RocketMQ的安装与启动

RocketMQ的安装与启动一. RocketMQ的安装与启动①.下载RocketMQ安装包②. 修改初始内存③. 启动④. 发送/接收消息测试⑤. 关闭Server二. 控制台的安装与启动①. 下载②. 修改配置③. 添加依赖④. 打包⑤. 启动⑥. 访问一. RocketMQ的安装与启动①.下载RocketMQ安装包②. 修改初始内存③. 启动④. 发送/接收消息测试⑤. 关闭Server二. 控制台的安装与启动①. 下载②. 修改配置③. 添加依赖④. 打包⑤. 启动⑥.

2021-07-23 21:16:53 586

原创 Spring注解驱动开发——属性赋值+自动装配

属性赋值一. 属性赋值-@Value赋值二. 属性赋值-@PropertySource加载外部配置文件三. 自动装配-@Autowired&@Qualifier&@Primary四. 自动装配-@Resource&@Inject五. 自动装配-方法、构造器位置的自动装配六. 自动装配-Aware注入Spring底层组件&原理七. 自动装配-@Profile环境搭建八. 自动装配-@Profile根据环境注册bean一. 属性赋值-@Value赋值二. 属性赋值-@Prop

2021-07-23 20:54:24 186

原创 Spring注解驱动开发——Bean的生命周期

Bean的生命周期一. 生命周期-@Bean指定初始化和销毁方法二. 生命周期-InitializingBean和DisposableBean三. 生命周期- @PostConstruct&@PreDestroy注解四. 生命周期-BeanPostProcessor原理五. 生命周期- BeanPostProcessor在Spring底层的使用一. 生命周期-@Bean指定初始化和销毁方法二. 生命周期-InitializingBean和DisposableBean三. 生命周期- @Post

2021-07-23 20:29:59 151 1

原创 Spring注解驱动开发——Bean的组件注册

组件注册一. 组件注册-XML文件配置的方式注册组件二. 组件注册-@Configuration&@Bean给容器中注册组件三. 组件注册-@ComponentScan-自动扫描组件&指定扫描规则四. 组件注册-自定义TypeFilter指定过滤规则.五. 组件注册-@Scope-设置组件作用域六. 组件注册-@Lazy-bean懒加载七. 组件注册-@Conditional-按照条件注册bean八. 组件注册-@Import-给容器中快速导入一个组件九. 组件注册-@Import-使用Im

2021-07-23 20:22:03 149

原创 Java8新特性学习——-Optional 类+接口中的默认方法和静态方法

Optional 类一. Optional 类二. 常用方法①. Optional of(T value)②. Optional.ofNullable(T t)和Optional.empty()③. isPresent(),orElse(T t)和orElseGet(Supplier s)④. map()和flatMap()一. Optional 类Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Option

2021-07-22 10:25:25 365

原创 Java8新特性学习——-Stream流

Stream流一. Stream流介绍二. Stream的 3 个操作步骤三. Stream的创建①. stream() : 返回一个顺序流②. parallelStream() : 返回一个并行流③. Arrays 的静态方法 stream()④. 静态方法 Stream.of()⑤. 用静态方法 Stream.iterate() 和Stream.generate(),创建无限流四. Stream的中间操作①. 筛选和切片②. 映射③. 排序五. Stream的终止操作①. 查找与匹配②. 归约③. 收

2021-07-22 10:12:38 138

原创 Java8新特性学习——-函数式接口+方法引用与构造器引用

函数式接口一. Java8 内置的四大核心函数式接口①. 消费型接口:Consumer②. 供给型接口:Supplier③. 函数型接口:Function④. 断言型接口:Predicate⑤. 其他接口二. 方法引用①. 类名 :: 实例方法名②. 类名 :: 静态方法名③. 对象的引用 :: 实例方法名三. 构造器引用四. 数组引用一. Java8 内置的四大核心函数式接口 函数式接口:只有一个抽象方法的接口,可用@FunctionalInterface我们可以在任意函数式接口上使用 @F

2021-07-22 09:43:46 172

原创 Java8新特性学习——-Lambda表达式

Lambda表达式一. 匿名内部类二. Lambda 表达式三. Lambda语法①. 语法格式一:无参数,无返回值②. 语法格式二:有一个参数,并且无返回值③. 语法格式三:若只有一个参数,小括号可以省略不写④. 语法格式四:有两个以上的参数,有返回值,并且 Lambda 体中有多条语句⑤. 语法格式五:若 Lambda 体中只有一条语句, return 和 大括号都可以省略不写⑥. 语法格式六:Lambda 表达式的参数列表的数据类型可以省略不写,因为JVM编译器通过上下文推断出,数据类型,即“类型推断

2021-07-22 09:07:07 230 1

原创 Dubbo学习——Dubbo源码分析_服务调用

Dubbo源码分析_服务调用一. Dubbo服务调用流程图二. Dubbo源码分析_服务调用①. 服务调用处下断点,源码入口分析②. Proxy代理类的invoke() 方法③. invoker代理链调用④. LoadBalance负载均衡机制⑤. 继续invoker调用链⑥. 当前客户端发送请求⑦. 调用结束一. Dubbo服务调用流程图二. Dubbo源码分析_服务调用①. 服务调用处下断点,源码入口分析②. Proxy代理类的invoke() 方法③. invoker代理链调用

2021-07-21 23:21:36 157

原创 Dubbo学习——Dubbo源码分析_服务引用

Dubbo服务引用一. Dubbo服务引用流程图二. Dubbo源码分析_服务引用①. dubbo:reference配置②. 服务引用源码入口分析③. ReferenceBean的getObject()方法——获取invoker④. ProxyFactory代理工厂,创建代理对象——获取invoker⑤. Protocol的refer()方法引用远程服务——获取invoker⑥. RegistryProtocol注册协议——refer引用远程服务⑦. DubboProtocol——connect/getC

2021-07-21 23:09:16 142 2

原创 Dubbo学习——Dubbo源码分析_服务暴露

Dubbo启动解析、加载配置信息一. 先看个dubbo构架图二. dubbo原理 -启动解析、加载配置信息①. provider.xml配置解析源码入口②. BeanDefinitionParser入口③. DubboBeanDefinitionParser的parse()方法④. 解析配置类中所有的标签三. Dubbo源码分析_服务暴露①. 解析配置文件,创建dubbo标签解析器②. ServiceBean类实现服务暴露export()③. ServiceConfig类服务暴露_doExport()④.

2021-07-21 22:48:19 197 1

原创 Dubbo学习——SpringBoot上手整合Dubbo

SpringBoot上手整合Dubbo一. Dubbo架构图二. 搭建一个Common模块存放接口+实体类①. UserAddress 实体类②. 用户和订单接口三. 搭建一个生产者Provider模块①. pom.xml依赖导入②. 用户实现类UserServiceImpl③. 启动类上注解添加④. 配置文件修改application.yml或者provider.xml配置文件⑤. 启动provider服务进行测试四. 搭建消费者Consumer模块①. pom.xml配置文件②. 订单的实现类Order

2021-07-21 22:14:59 270 4

avator.png

头像

2021-01-21

空空如也

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

TA关注的人

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