- 博客(43)
- 收藏
- 关注
原创 004-构建Auth集合
读取标注了@Controller的类的所有方法,如果方法上标注了@SourceAuth注解,则解析成为AuthVO对象。
2023-08-11 13:45:39 122
原创 Eureka 学习笔记(七)EurekaServerContext初始化(6)- EurekaClient创建过程精读
EurekaClient创建过程精读 承接上一篇,我们来到了DiscoveryClient(ApplicationInfoManager applicationInfoManager, EurekaClientConfig config, AbstractDiscoveryClientOptionalArgs args, Provider<BackupRegistry> backupRegistryProvider, EndpointRandomi
2020-08-27 16:24:09 325
原创 Eureka 学习笔记(七)EurekaServerContext初始化(5)- EurekaClient创建过程概览
一、创建EurekaClientConfig 这里也是很之前一样,去读取eureka.client.properties文件里面的配置,加载到EurekaClientConfig内部。EurekaClientConfig eurekaClientConfig = new DefaultEurekaClientConfig();public DefaultEurekaClientConfig() { this(CommonConstants.DEF
2020-08-27 16:22:26 371
原创 Eureka 学习笔记(七)EurekaServerContext初始化(4)- ApplicationInfoManager创建过程
零、前言 有几个步骤比较简单,且和主流程关系不大,就一起看了。一、注册JSON、XML数据流转换器 这里的代码很简单,就是创建了两个转换器,然后保存到了一个底层的PrioritizedList数据结构中。JsonXStream.getInstance().registerConverter(new V1AwareInstanceInfoConverter(), XStream.PRIORITY_VERY_HI
2020-08-27 11:23:51 292
原创 Eureka 学习笔记(七)EurekaServerContext初始化(3)- EurekaServerConfig创建过程
EurekaServerConfig创建过程 这一篇我们来看看EurekaServerConfig是如何创建的。只看重点~EurekaServerConfig eurekaServerConfig = new DefaultEurekaServerConfig(); 这里创建了一个DefaultEurekaServerConfig实现类,点进去看看~private static final String
2020-08-27 11:22:22 378
原创 Eureka 学习笔记(七)EurekaServerContext初始化(2)- initEurekaServerContext流程大体观察
initEurekaServerContext流程大体观察 这里用原生的Eureka来讲解,毕竟Spring-Cloud的分散的到处都是,不好观察。 步骤就写在代码里面了,注意观察哟。protected void initEurekaServerContext() throws Exception { // 第一步:读取EurekaServer的配置文件 EurekaServerConfig e
2020-08-26 17:53:12 393
原创 Eureka 学习笔记(七)EurekaServerContext初始化(1)- 原生Eureka对比Spring-Cloud-Netfix-Eureka
一、原生Eurekaprotected void initEurekaServerContext() throws Exception { EurekaServerConfig eurekaServerConfig = new DefaultEurekaServerConfig(); // For backward compatibility JsonXStream.getInstance().registerConverter(new V1AwareInstanceInfoCo
2020-08-26 17:52:06 179
原创 Eureka 学习笔记(六)Eureka初始化环境
一、前言 无论是原生Eureka还是SpringCloud中对Eureka的整合,逻辑是一样的,只是在SpringCloud中将很多组件的创建移到AutoConfiguration中去了,如果有设计到的地方,笔者在以后的学习笔记中会提到。二、contextInitialized方法 承接我们发现的contextInitialized方法,我们来看看其内部做了什么。大致可以发现,它是从ConfigurationM
2020-08-26 13:35:23 329 1
原创 Eureka 学习笔记(五)Spring-Cloud-Netflix-Eureka-Server启动入口寻找
一、先看看@EnableEurekaServer注解 老规矩,用过Spring-Cloud-Netflix-Eureka的都知道,想要用Eureka,要先在启动类上加上@EnableEurekaServer注解,Spring-Cloud会自动注入Eureka-Server相关的内容。@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(EurekaS
2020-08-26 10:44:39 620
原创 Eureka 学习笔记(四)原生Eureka-Server启动入口寻找
一、先去GitHub上下载源码,瞄一眼目录结构。 根据笔者小学的英文水平加上百度大概看出来,分为code核心模块、client客户端模块、server服务端模块、resource资源模块、examples用例、utils工具包几个模块吧。。 接着又发现了有这么几个三级项目名archaius2、jersey2、governator。经过再一次的百度查询,发现governator是一个用来增强 Google Gui
2020-08-26 10:39:29 266
原创 Eureka 学习笔记(三)Spring-Cloud-Netfix-Eureka监听器
一、Spring-Cloud-Netfix-Eureka的5大监听器EurekaRegistryAvailableEvent 服务器可用时触发EurekaServerStartedEvent 服务器启动时触发EurekaInstanceRegisteredEvent 服务注册时触发EurekaInstanceRenewedEvent 服务续约时触发EurekaInstanceCanceledEvent 服务下线时触发二、笔者是怎么找到这5个监听器的,以及是怎么去寻找他们调用的方法。首先
2020-08-26 10:36:35 290
原创 Eureka 学习笔记(二)Eureka常用配置项
零、前言目前这些是笔者自己知道的一些配置,后续看到某些地方的时候,也许会加上的吧。。一、客户端配eureka.client.fetch-registry:是否去注册中心获取其他服务地址,默认true,单机版的时候配置成falseeureka.client.register-with-eureka:是否向服务器注册自己,默认true,单机版的时候配置成falseeureka.instance.hostnameeureka服务器主机名称eureka.client.service-url.de
2020-08-26 10:34:10 327
原创 Eureka 学习笔记(一)Eureka简介
零、前言本次记录的Spring-Cloud-Eureka版本为2.2.3,Eureka版本为1.9.21。都是看到什么地方写到什么地方,不要在意目录顺序- -!所有文章都有可能不定期更新。一、什么是EurekaEureka是一个支持分布式的、AP模型的、使用http请求通讯的注册中心。二、为什么要用注册中心当你的项目微服务化以后,并且数量很多的时候,你不可能手动来管理每个服务器的IP地址,这个时候就需要一个注册中心统一来管理。...
2020-08-26 10:32:59 176
原创 ribbon学习笔记(三)RibbonLoadBalancerClient的execute是怎么执行的?如何获得一个ILoadBalancer
一、先看下整体代码public <T> T execute(String serviceId, LoadBalancerRequest<T> request) throws IOException { return execute(serviceId, request, null);}public <T> T execute(String serviceId, LoadBalancerRequest<T> request, Object hint
2020-07-23 15:53:59 2016 1
原创 ribbon学习笔记(二)LoadBalancerInterceptor的处理逻辑
上一篇讲到,Ribbon与Spring-Cloud整合以后,会给RestTemplate加上一个LoadBalancerInterceptor的拦截器,那么现在就来看看LoadBalancerInterceptor里面的逻辑吧~话不多说,先上代码:package org.springframework.cloud.client.loadbalancer;import java.io.IOException;import java.net.URI;i
2020-07-23 14:37:40 1272
原创 ribbon学习笔记(一)通过@LoadBalanced查询Ribbon是如何与SpringCloud整合的
首先用过Ribbon的都知道,要想在Spring-Cloud中使用Ribbon,需要在RestTemplate Bean上加入@LoadBalanced注解。那么我们可以先看看@LoadBalanced(代码如下)。package org.springframework.cloud.client.loadbalancer;import java.lang.annotation.Documented;import java.lang.annotation
2020-07-23 10:15:57 343
原创 maven深入学习笔记_008maven生命周期
一、默认生命周期 清理、编译、测试、打包、验证、部署,文档生成二、maven三大生命周期与其对应的phaseclean:清理生命周期,用于清理项目;default:默认生命周期,用于编译、打包、测试、部署等;site:站点文档生成,用于构建站点文档。 每个周期对应的phase:(从官网截图的http://maven.apache.org/guides/introduction/introduction
2020-07-20 16:19:07 132
原创 maven深入学习笔记_007配置从私服拉取jar以及上传jar到私服
一、配置从私服拉取jar 打开maven的setting文件,配置如下 <!-- 登录远程仓库的用户名和命令 --> <servers> <server> <!-- id,对应项目里面pom.xml里面distributionManagement配置的id --> <id>nexus-releases</id> <!-- 登录nexus的用户名 -->
2020-07-17 11:19:21 653
原创 maven深入学习笔记_006maven私服_权限介绍
一、所有权限查看 在Security->Privileges菜单可以查看所有权限,看不懂英文的用浏览器自带的翻译插件。。二、角色查看 在Security->Roles菜单可以查看所有角色,自带两个,一个admin角色,一个匿名角色。当然你也可以自己创建角色,分配对应的权限。这里就不演示怎么创建角色了,给个创建页面的图吧~三、用户查看 在Secu
2020-07-17 10:18:18 242
原创 maven深入学习笔记_005maven私服_仓库类型的介绍与使用
一、私服仓库类型介绍![在这里插入图片描述](https://img-blog.csdnimg.cn/20200717092654203.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMwNzUyNDUx,size_16,color_FFFFFF,t_70)
2020-07-17 09:27:36 1606
原创 maven深入学习笔记_004maven私服安装
windos版本: 要么去官网上下载~慢的要死。要么百度下载~安装好的目录如下: nexus-3.9.0-01 应该就是它的主文件了。sonatype-work应该是它的工作空间,比如存放jar、存日志什么的吧。 如何运行呢?先进入E:\nexus\nexus-3.9.0-01\bin目录,nexus.exe是它的启
2020-07-17 09:18:45 125
原创 maven深入学习笔记_003maven仓库类型
不用maven的时候,基本上都是把所有的jar包放在lib目录下。需要注意的是maven默认的中央仓库地址是在国外,速度慢的和蜗牛一样,建议改成阿里云镜像地址,在maven的conf目录下的setting文件中修改如下代码:<mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</
2020-07-17 09:17:19 124
原创 maven深入学习笔记_002maven依赖
一、标签dependencyManagement:只是声明有那些依赖,并不实际引入。子模块引入对应的包时可以不写version版本。dependencies:依赖管理 dependencie: groupId:groupId artifactId:artifactId version:version type:项目类型 scope:作用域~ test:仅在编译和运行测试代码时才有效。
2020-07-17 09:11:28 192
原创 maven深入学习笔记_001maven坐标
parent:父模块相关信息 groupId:父模块的groupId artifactId:父模块的artifactIdgroupId:一般用的是公司域名倒着写+工程名,以点分隔。比如你在法大大上班,做一个boss后台。那么groupId就是com.fadada.bossartifactId:一般用的是工程名+服务名,以横线分隔。比如做boss后台的权限模块,那么artifactId就是boss-authversion:版本号packaging:项目类型,常见的有jar、war、po
2020-07-17 09:09:21 97
原创 maven深入学习笔记_000maven能干什么
零、前言 记录一下学习笔记,特别是配置相关的,以后方便查查一、maven能干什么可以管理jar包,解决N久以前传统项目jar包管理困难的局面。一键编译、测试、打包,管理项目的整个生命周期。...
2020-07-17 09:07:54 144
原创 面试题-讨论一下线程数设计的问题
起源是这样的,一问朋友(super冰)让我回答下上次面试阿里的一道题目。问题是这样的:给你一台8核16g服务器,你会给你的应用程序设计多少个线程,为什么这么设计。如果是io密集型的呢?如果是cpu密集型的呢?这里就讲讲自己的理解吧,有可能全网打脸(*▽*)。 这里就直接将io密集型和cpu密集型吧。鉴于笔者看过的源码中,比如netty之类的,默认都是给CPU核数的两倍。这里就借鉴这个经验吧。在IO密集型的机器中,
2020-06-20 14:41:49 274
原创 BoringMQ 1.0.0-设计思路及开发心得~
一、业务流程图 这里展示了Queue的创建和监听: 上图介绍了Queue消息的创建过程,和监听消费过程。但是没有画消息发送的流程(笔者忘了,不想补,懒- -!),这里文字补充一下吧。生产者发送消息以后,服务端保存成功以后,会告知生产者消息是否保存成功,生产者根据服务器返回的结果做对应的处理。 至于Topic消息的流程,大致上和Queue消息的差不多,这里就教给大家
2020-06-20 14:05:49 1317
原创 BoringMQ 1.0.0-RELEASE 介绍
零、最后更新时间 2020-06-15一、BoringMQ 码云地址 BoringMQ码云链接二、BoringMQ使用到的技术jdk8mavenniojuchutool工具包:hutool官网三、BoringMQ 一期预期功能 2.1客户端功能支持心跳检查、重连机制(可配置心跳检查时间)(已完成)支持发送同步or异步消息(可配置异步等待超时时间)(未完成)仅支持
2020-06-15 17:15:40 299
原创 分布式_分布式事务_强事务(CP)_两阶段提交协议
一、两阶段提交协议 第一阶段:提交请求阶段/投票阶段 两阶段协议就是通过两次协商来完成一个事务操作。一般第一个事务的发起方叫做 协调者(Coordinator)。第一步,协调者会通知其他系统,我们要执行一个事务啦。其他系统这时会通知协调者自己是否准备好执行事务。如果都可以执行,则进入第二步。如果有一个系统说自己不能执行事务,则整个分布式事务回滚。上图: 上图表示了投票阶段所有系统的操作过
2020-06-12 15:49:39 678
原创 分布式_单机事务_ACID理论
一、ACID原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)二、原子性(Atomicity) 原子性:同一个事务中,多个操作要么同时成功,num等于0;要么只要有一个操作失败,那么整个事务回滚,num回到等于10的状态。三、 一致性(Consistency) 一致性:指的是数据的一致性,如上图,如果事务执行成功,那么num最后
2020-06-12 14:31:29 265
原创 分布式_CAP理论学习
一、CAPConsistency 【kənˈsɪstənsi】 (一致性)Availability 【əˌveɪlə’bɪləti】(可用性)Partition Tolerance 【pɑːˈtɪʃn ˈtɒlərəns】(分区容错性)二、Consistency一致性 一致性说的是当一个相同的请求访问不同的节点时,要么读取到的都是最新的数据,要么读取失败。继续上图: 当然在分布式系统中是有可能发生一个或
2020-06-10 11:04:48 232
原创 java_java基础_lambda表达式双冒号用法
过于基础,就不废话了,实验代码如下:package com.demo;import java.util.Arrays;import java.util.List;import java.util.function.BiPredicate;import java.util.function.Function;public class DoubleColonTest { String str; public DoubleColonTest(String str) {
2020-06-10 09:32:08 317
原创 jvm_垃圾回收学习笔记_2_垃圾收集算法(附面试题)
一、扯扯我们所了解JVM堆中的内存区域划分 废话不多说,先上图:如图可知,堆中有着两个大的区域,分别是新生代和老年代。新生代中又分为一个较大的Eden区和两个较小的Survivor区(也有人叫s0和s1)。那么为什么要这样划分呢?经查资料得知,在目前的垃圾回收器中,大多数都是基于两个假说。弱分带假说:绝大多数对象都是朝生朝灭; 强分带假说:熬过越多垃圾收集过程的对象就越难消亡。正是基于这两个假说,堆中的区域才划分新生代和老年代。其中新生代和老年的比例默认为
2020-06-03 13:55:52 199
原创 jvm_垃圾回收学习笔记_1_如何判断对象已死?(附面试题)
一、引用计数法 引用计数法顾名思义就是在对象中添加一个引用计数器,每当有其他对象引用它时计数器就+1。大概就是下图这个结构:在线画图工具:ProcessOn那么引用计数法有什么优点和缺点呢?我想着就是用一小部分空间换时间吧,这样他的效率高,只要计时器为0就可以回收了。但是仔细想想它也有缺点,就是无法解决循环依赖的问题,如下图所示:此时A与B互相引用着,就算已经没有其他地方引用着A和B类,但是他们之间互相有引用,垃圾回收器就不能回收它们。 &
2020-06-03 13:55:08 212
原创 分布式_分布式ID生成方案(阿里面试题,实时思考出来的)
一、前言 刚好前段时间面试阿里被问到了这个问题,这里就聊聊吧~~二、雪花(SnowFlake)算法 记得当时被面试官问到这个问题的时候,还不知道有雪花算法这个东西。就说了下自己的想法。首先想到了肯定要有一个时间戳,为了确保精度,决定使用纳秒。然后想到肯定是多台服务器一起产生id,为了区分机器,想到了用机器编码区分。接着在一想,如果和阿里一样有多个机房,每个机房的机器编码可能重复,那就在加一个机房号吧。有
2020-06-03 13:54:14 510
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人