JAVA进阶笔记整理
文章平均质量分 85
JAVA进阶笔记整理
enterpc
这个作者很懒,什么都没留下…
展开
-
基于Zookeeper实现简易版服务的注册与发现机制
一. 题目要求(一)需求一在基于Netty的自定义RPC的案例基础上,进行改造。基于Zookeeper实现简易版服务的注册与发现机制要求完成改造版本:\1. 启动2个服务端,可以将IP及端口信息自动注册到Zookeeper\2. 客户端启动时,从Zookeeper中获取所有服务提供端节点信息,客户端与每一个服务端都建立连接\3. 某个服务端下线后,Zookeeper注册列表会自动剔除下线的服务端节点,客户端与下线的服务端断开连接\4. 服务端重新上线,客户端能感知到,并且与重新上原创 2022-02-10 18:22:30 · 1241 阅读 · 0 评论 -
Dubbo进阶(二)Dubbo高级实战
一. SPI(一)SPI简介SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现,简单来说,它就是一种动态替换发现的机制。使用SPI机制的优势是实现解耦, 使得第三方服务模块的装配控制逻辑与调用者的业务代码分离。(二)JDK中的SPIJava中如果想要使用SPI功能,先提供标准服务接口,然后再提供相关接口实现和调用者。这样就可以通过SPI机制中约定好的信息进行查询相应的接口实现。 .原创 2022-02-10 18:16:23 · 847 阅读 · 0 评论 -
Dubbo进阶(一)之Dubbo基础回顾
一.Dubbo架构概述分布式系统架构解决方案—Dubbo(介绍)_舞鹤白沙编码日志-CSDN博客二. Dubbo入门案例Dubbo快速入门_舞鹤白沙编码日志-CSDN博客Dubbo综合实战演练_舞鹤白沙编码日志-CSDN博客(一)简单入门案例完整代码查看代码(请点击)(二)最接近官方的入门案例注解形式完整代码查看代码(请点击)(三)最接近官方的入门案例XML形式完整代码查看代码(请点击)(四)整合MyBatis实现用户注册的Dubbo入门案例完整代码查看代码(原创 2022-02-08 15:07:00 · 1081 阅读 · 0 评论 -
Zookeeper源码分析
一. 源码环境搭建(一)源码下载1. 官方下载网址:zookeeper-release-3.5.4下载地址::https://github.com/apache/zookeeper/tree/release-3.5.4apache-ant-1.10.6-bin下载地址:https://ant.apache.org/bindownload.cgi2. 百度网盘下载地址zookeeper-release-3.5.4下载地址:zookeeper-release-3.5.4.原创 2022-02-05 15:48:21 · 1891 阅读 · 0 评论 -
zookeeper源码分析之单机模式服务端启动
一. 源码分析前的准备1. 在idea中打开Run/Debug Configurations,2. 添加一个Application3.运⾏主类 org.apache.zookeeper.server.QuorumPeerMain ,将zoo.cfg的完整路径配置在Program arguments。 4. 在VM options配置,即指定到conf⽬录下的log4j.properties:-Dlog4j.configuration=file:/javawork/zooke..原创 2022-02-05 10:06:25 · 1158 阅读 · 1 评论 -
Zookeeper应用场景及深入进阶
一. Zookeeper应⽤场景ZooKeeper是⼀个典型的发布/订阅模式的分布式数据管理与协调框架,我们可以使⽤它来进⾏分布式数据的发布与订阅。另⼀⽅⾯,通过对ZooKeeper中丰富的数据节点类型进⾏交叉使⽤,配合Watcher 事件通知机制,可以⾮常⽅便地构建⼀系列分布式应⽤中都会涉及的核⼼功能,如数据发布/订阅、命名 服务、集群管理、Master选举、分布式锁和分布式队列等。那接下来就针对这些典型的分布式应⽤场景 来做下介绍。(二)数据发布/订阅数据发布/订阅(Publish/Su原创 2022-02-03 22:17:25 · 144 阅读 · 0 评论 -
Zookeeper环境搭建和基本使用回顾
目录一. Zookeeper简介(一)分布式系统定义及⾯临的问题(二)zookeeper的基本概念二. Zookeeper环境搭建(一)单机模式(二)伪集群模式:(三)集群模式:三. Zookeeper基本使⽤(一)ZooKeeper系统模型1. ZooKeeper数据模型Znode2. ZNode 的类型3. 事务ID4. ZNode 的状态信息5. Watcher--数据变更通知6. ACL--保障数据的安全7. 权限模式:Schem.原创 2022-02-03 13:50:06 · 912 阅读 · 0 评论 -
分布式理论与分布式架构设计理论
目录一. 分布式架构介绍(一)什么是分布式系统(二)分布式与集群的区别(三)分布式系统特性(四)分布式系统面临的问题二.分布式理论(一)数据一致性1.什么是分布式数据一致性2. 副本一致性3. 一致性分类(二)CAP定理1.CAP定理介绍2. CAP三者不可能同时满足论证3. CAP三者如何权衡(三)BASE理论三. 分布式一致性协议(一)两阶段提交协议(2PC)1.两阶段提交协议2.2PC执行流程...转载 2022-02-02 02:29:33 · 148 阅读 · 0 评论 -
RPC框架设计
一. Socket回顾与I/0模型(一)Socket网络编程回顾 1. Socket概述Socket,套接字就是两台主机之间逻辑连接的端点。TCP/IP协议是传输层协议,主要解决数据如何 在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信 息:连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址、远程进程的协议端口。2原创 2022-02-02 01:05:05 · 2071 阅读 · 0 评论 -
分布式集群架构场景化解决⽅案(五)Session共享问题
Session共享及Session保持或者叫做Session⼀致性一. Session问题原因分析出现这个问题的原因,从根本上来说是因为Http协议是⽆状态的协议。客户端和服务端在某次会话中产⽣的数据不会被保留下来,所以第⼆次请求服务端⽆法认识到你曾经来过, Http为什么要设计为⽆状态 协议?早期都是静态⻚⾯⽆所谓有⽆状态,后来有动态的内容更丰富,就需要有状态,出现了两种⽤于 保持Http状态的技术,那就是Cookie和Session。⽽出现上述不停让登录的问题,分析如下图: 场景:.转载 2022-01-26 10:50:17 · 85 阅读 · 0 评论 -
分布式集群架构场景化解决⽅案(四)分布式调度问题
调度—>定时任务,分布式调度—>在分布式集群环境下定时任务这件事 Elastic-job(当当⽹开源的分布式调度框架)一. 定时任务的场景定时任务形式:每隔⼀定时间/特定某⼀时刻执⾏ 例如:订单审核、出库 订单超时⾃动取消、⽀付退款 礼券同步、⽣成、发放作业 物流信息推送、抓取作业、退换货处理作业 数据积压监控、⽇志监控、服务可⽤性探测作业 定时备份数据 ⾦融系统每天的定时结算 数据归档、清理作业 报表、离线数据分析作业二. 什么是分转载 2022-01-26 10:40:43 · 223 阅读 · 0 评论 -
分布式集群架构场景化解决⽅案(三)分布式ID解决⽅案
目录一. UUID(可以⽤) 二. 独⽴数据库的⾃增ID(不推荐)三. SnowFlake 雪花算法(可以⽤,推荐)四. 借助Redis的Incr命令获取全局唯⼀ID(首选)(一)Redis安装:(二)Java代码中使⽤Jedis客户端调⽤Reids的incr命令获得⼀个全局的id1. 引⼊jedis客户端jar2. Java代码(此处我们就是连接单节点,也不使⽤连接池)为什么需要分布式ID(分布式集群环境下的全局唯⼀ID)一. UUID(可以...转载 2022-01-24 10:43:19 · 249 阅读 · 0 评论 -
分布式集群架构场景化解决⽅案(一)集群时钟同步配置
一.集群时钟同步思路(一)分布式集群中各个服务器节点都可以连接互联⽹1. 思路:2. 操作方式#使⽤ ntpdate ⽹络时间同步命令 ntpdate -u ntp.api.bz #从⼀个时间服务器同步时间windows有计划任务 Linux也有定时任务,crond,可以使⽤linux的定时任务,每隔10分钟执⾏⼀次ntpdate命令(二)分布式集群中某⼀个服务器节点可以访问互联⽹或者所有节点都不能够访问互联⽹1. 思路: 2. 操作方式 :.转载 2022-01-24 08:25:14 · 53 阅读 · 0 评论 -
分布式集群架构场景化解决⽅案(一)一致性Hash问题及解决方案
目录一. 分布式与集群概念回顾二. Hash算法介绍三. Hash算法应⽤场景(一)请求的负载均衡(⽐如nginx的ip_hash策略)(二)分布式存储三. 普通Hash算法存在的问题四. ⼀致性Hash算法五. 手写实现一致性Hash算法(一)普通Hash算法实现(二)⼀致性Hash算法实现(不含虚拟节点)(三)⼀致性Hash算法实现(含虚拟节点)六. Nginx 配置⼀致性Hash负载均衡策略一. 分布式与集群概念回顾参考:分布式系统架构解决.转载 2022-01-24 00:19:56 · 168 阅读 · 0 评论 -
Tomcat(二)Tomcat源码剖析及调优
一. ⼿写实现迷你版 Tomcat 准备工作(一)需求Minicat要做的事情:作为⼀个服务器软件提供服务的,也即我们可以通过浏览器客户端发送http请求,Minicat可以接收到请求进⾏处理,处理之后的结果可以返回浏览器客户端。 1. 提供服务,接收请求(Socket通信) 2. 请求信息封装成Request对象(Response对象) 3. 客户端请求资源,资源分为静态资源(html)和动态资源(Servlet) 4. 资源返回给客户端浏览器 (二)实现计划递进式完成以上原创 2022-01-21 14:59:14 · 626 阅读 · 0 评论 -
Tomcat进阶(一)Tomcat高级使用及其原理剖析
目录一. Tomcat 系统架构与原理剖析(一)浏览器访问服务器的流程(二)Tomcat 系统总体架构1. Tomcat 请求处理⼤致过程2. Tomcat Servlet容器处理流程3. Tomcat 系统总体架构(三)Tomcat 连接器组件 Coyote1. Coyote 简介2. Coyote 的内部组件及流程(四)Tomcat Servlet 容器 Catalina1. Tomcat 模块分层结构图及Catalina位置2. Servlet...原创 2022-01-19 21:32:40 · 396 阅读 · 0 评论 -
Spring Boot进阶(二)SpringBoot源码剖析
一. SpringBoot源码环境构建 (一)下载源码1. 官网下载spring-boot-2.2.9.RELEASE2. 百度网盘下载链接:https://pan.baidu.com/s/1mhJJlP4ZezggIL_Z2bvizQ提取码:8888(二)环境准备1、JDK1.8以上2、Maven3.5以上(三)编译源码进⼊spring-boot源码根⽬录 执⾏mvn命令: mvn clean install -DskipTests -Pf原创 2022-01-15 22:59:22 · 407 阅读 · 0 评论 -
Spring Boot进阶(一)SpringBoot基础回顾
一. SpringBoot介绍SpringBoot介绍及基础回顾_舞鹤白沙编码日志-CSDN博客二. SpringBoot案例实现(一)使用Spring Initializr方式构建Spring Boot项目本质上说,Spring Initializr是一个Web应用,它提供了一个基本的项目结构,能够帮助我们快速 构建一个基础的Spring Boot项目1. 使用官网链接创建 2. 使用阿里云链接创建官网链接创建,经常连不上,可改用阿里云链接速度更快,ht..原创 2022-01-12 16:56:29 · 181 阅读 · 0 评论 -
SpringMVC进阶(四) SpringData高级应用及其源码剖析
一. Spring Data JPA 概述(一)什么是 Spring Data JPASpring Data JPA 是 Spring 基于JPA 规范的基础上封装的⼀套 JPA 应⽤框架,可使开发者⽤极简的代码即可实现对数据库的访问和操作。它提供了包括增删改查等在内的常⽤功能!学习并使⽤ Spring Data JPA 可以极⼤提⾼开发效率。 说明:Spring Data JPA 极⼤简化了数据访问层代码。 如何简化呢?使⽤了Spring Data JPA,我们Dao层中只需.原创 2022-01-10 11:37:18 · 355 阅读 · 0 评论 -
SpringMVC进阶(三) SpringMVC框架源码深度剖析
一. SpringMVC框架源码剖析准备工作(一)前段控制器DispatcherServlet继承结构图(二)SpringMVC源码剖析准备工作1. 下载并在IDEA中导入spring-5.1x_ch源码,工程使用Gradle管理2. 在上述工程中新建一个SpringMVC测试模块3. 在测试模块的handle方法中打断点,做为SpringMVC请求处理流程的开始Debug模式启动Tomcat,在前端发申请,并观察调用栈根据上图得知:doDispathch⽅法中的1.原创 2022-01-08 11:15:01 · 605 阅读 · 0 评论 -
SpringMVC进阶(二)手写MVC框架
一.手写MVC框架实现功能(一)SpringMVC请求处理流程回顾(二)手写MVC框架主要实现功能二. 准备阶段(一)自定义注解package com.lagou.edu.mvcframework.annotations;import java.lang.annotation.*;@Documented@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface原创 2022-01-07 08:57:13 · 274 阅读 · 0 评论 -
SpringMVC进阶(一)基础回顾及其高级应用
一. SpringMVC基础回顾(一)Spring MVC 简介Spring MVC 简介_舞鹤白沙编码日志-CSDN博客(二)Spring Web MVC ⼯作流程Spring Web MVC ⼯作流程_舞鹤白沙编码日志-CSDN博客(三)请求参数绑定SpringMVC如何接收请求参数_舞鹤白沙编码日志-CSDN博客(四)对 Restful ⻛格请求⽀持Springmvc对rest⻛格请求的支持_舞鹤白沙编码日志-CSDN博客(五)Ajax Json交互Spring原创 2022-01-06 02:55:47 · 207 阅读 · 0 评论 -
Spring进阶(三) AOP高级应用与源码剖析
一. Spring AOP基础回顾AOP本质:在不改变原有业务逻辑的情况下增强横切逻辑,横切逻辑代码往往是权限校验代码、⽇志代码、事务控制代码、性能监控代码。下⾯这两张图,它们就是第三部分案例需求的扩展(针对这些扩展的需求,我们只进⾏分析,在此基础上去进⼀步回顾AOP,不进⾏实现)上图描述的就是未采⽤AOP思想设计的程序,当我们红⾊框中圈定的⽅法时,会带来⼤量的重复劳动。程序中充斥着⼤量的重复代码,使我们程序的独⽴性很差。⽽下图中是采⽤了AOP思想设计的程序,它 把红..原创 2022-01-05 01:58:48 · 189 阅读 · 0 评论 -
Spring进阶(二)IOC高级应用及源码深度剖析
一. Spring IOC基础知识Spring核心之IOC--快速入门_舞鹤白沙编码日志-CSDN博客Spring核心之IOC--相关API_舞鹤白沙编码日志-CSDN博客Spring核心之IOC--配置文件开发_舞鹤白沙编码日志-CSDN博客Spring核心之IOC--注解开发_舞鹤白沙编码日志-CSDN博客(一)BeanFactory与ApplicationContext区别 BeanFactory是Spring框架中IoC容器的顶层接⼝,它只是⽤来定义⼀些基础功能...原创 2022-01-03 21:07:18 · 494 阅读 · 0 评论 -
Spring进阶(一)自定义IOC&AOP框架
一. Spring概述Spring概述_舞鹤白沙编码日志-CSDN博客Spring集成web环境_舞鹤白沙编码日志-CSDN博客Spring的事务_舞鹤白沙编码日志-CSDN博客Spring JDBCTemplate & 声明式事务_舞鹤白沙编码日志-CSDN博客二.Spring核心思想 IOC&AOPAOP概述_舞鹤白沙编码日志-CSDN博客初识IOC_舞鹤白沙编码日志-CSDN博客三. 手写实现IOC-银行转账案例(一)案例介绍1. 银行转账案例界原创 2021-12-31 21:19:57 · 1092 阅读 · 0 评论 -
MyBatis进阶(三)MyBatis源码剖析
一.Mybatis架构原理(一)架构设计我们把Mybatis的功能架构分为三层:(1) API接⼝层:提供给外部使⽤的接⼝ API,开发⼈员通过这些本地API来操纵数据库。接⼝层⼀接收到 调⽤请求就会调⽤数据处理层来完成具体的数据处理。 MyBatis和数据库的交互有两种⽅式: a. 使⽤传统的MyBati s提供的API ; b. 使⽤Mapper代理的⽅式 (2) 数据处理层:负责具体的SQL查找、SQL解析、SQL执⾏和执⾏结果映射处理等。它主要的⽬的是根 据调⽤.原创 2021-12-28 10:06:41 · 195 阅读 · 0 评论 -
MyBatis进阶(二)基础总结及高级应用
一. MyBatis基础总结(一)MyBatis简介Mybatis简介_舞鹤白沙编码日志-CSDN博客(二)MyBatis基本应用1. Mybatis快速入门_舞鹤白沙编码日志-CSDN博客2. Mybatis增删改查_舞鹤白沙编码日志-CSDN博客3.MyBatis基础应用_舞鹤白沙编码日志-CSDN博客二. MyBatis高级应用(一)MyBatis深入1. Mybatis配置⽂件深⼊_舞鹤白沙编码日志-CSDN博客2.Mybatis复杂映射开发_舞鹤白沙编码日志原创 2021-12-26 10:34:46 · 217 阅读 · 0 评论 -
MyBatis进阶(一)自定义持久层框架
一.自定义框架设计(一)使用设计1. 创建数据库及user表2. 创建pojo.User类,代码示例请点击3. 创建核心配置文件resources.sqlMapConfig.xml: 配置数据源信息,链接UserMapper.xml。 代码示例请点击resources.UserMapper.xml: 配置要执行的SQL语句。代码示例请点击4.创建dao层IUserDao接口,代码示例请点击(二)框架设计1.加载读取使用端配置文件-准备阶段使用Resourc..原创 2021-12-25 14:59:48 · 738 阅读 · 0 评论