自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

葩_的博客

分析日常学习源码内容

  • 博客(43)
  • 收藏
  • 关注

原创 005-构建菜单与权限的关系

根据权限对象中的菜单key 和 菜单对象中的菜单key,构建菜单与权限的关系。

2023-08-11 13:46:09 97

原创 004-构建Auth集合

读取标注了@Controller的类的所有方法,如果方法上标注了@SourceAuth注解,则解析成为AuthVO对象。

2023-08-11 13:45:39 76

原创 003-读取menu.json文件

一个基于注解生成菜单、权限,并且基于注解校验权限的框架

2023-08-11 11:32:30 142

原创 002-框架使用案例

一个基于注解生成菜单、权限,并且基于注解校验权限的框架

2023-08-11 11:14:54 47

原创 001-权限框架介绍及设计

一个基于注解实现自动生成菜单、权限;并且基于注解校验权限的框架

2023-08-11 10:50:40 106

原创 Eureka 学习笔记(七)EurekaServerContext初始化(6)- EurekaClient创建过程精读

EurekaClient创建过程精读    承接上一篇,我们来到了DiscoveryClient(ApplicationInfoManager applicationInfoManager, EurekaClientConfig config, AbstractDiscoveryClientOptionalArgs args, Provider<BackupRegistry> backupRegistryProvider, EndpointRandomi

2020-08-27 16:24:09 300

原创 Eureka 学习笔记(七)EurekaServerContext初始化(5)- EurekaClient创建过程概览

一、创建EurekaClientConfig    这里也是很之前一样,去读取eureka.client.properties文件里面的配置,加载到EurekaClientConfig内部。EurekaClientConfig eurekaClientConfig = new DefaultEurekaClientConfig();public DefaultEurekaClientConfig() { this(CommonConstants.DEF

2020-08-27 16:22:26 328

原创 Eureka 学习笔记(七)EurekaServerContext初始化(4)- ApplicationInfoManager创建过程

零、前言    有几个步骤比较简单,且和主流程关系不大,就一起看了。一、注册JSON、XML数据流转换器    这里的代码很简单,就是创建了两个转换器,然后保存到了一个底层的PrioritizedList数据结构中。JsonXStream.getInstance().registerConverter(new V1AwareInstanceInfoConverter(), XStream.PRIORITY_VERY_HI

2020-08-27 11:23:51 250

原创 Eureka 学习笔记(七)EurekaServerContext初始化(3)- EurekaServerConfig创建过程

EurekaServerConfig创建过程    这一篇我们来看看EurekaServerConfig是如何创建的。只看重点~EurekaServerConfig eurekaServerConfig = new DefaultEurekaServerConfig();    这里创建了一个DefaultEurekaServerConfig实现类,点进去看看~private static final String

2020-08-27 11:22:22 356

原创 Eureka 学习笔记(七)EurekaServerContext初始化(2)- initEurekaServerContext流程大体观察

initEurekaServerContext流程大体观察    这里用原生的Eureka来讲解,毕竟Spring-Cloud的分散的到处都是,不好观察。    步骤就写在代码里面了,注意观察哟。protected void initEurekaServerContext() throws Exception { // 第一步:读取EurekaServer的配置文件 EurekaServerConfig e

2020-08-26 17:53:12 349

原创 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 160

原创 Eureka 学习笔记(六)Eureka初始化环境

一、前言    无论是原生Eureka还是SpringCloud中对Eureka的整合,逻辑是一样的,只是在SpringCloud中将很多组件的创建移到AutoConfiguration中去了,如果有设计到的地方,笔者在以后的学习笔记中会提到。二、contextInitialized方法    承接我们发现的contextInitialized方法,我们来看看其内部做了什么。大致可以发现,它是从ConfigurationM

2020-08-26 13:35:23 282 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 558

原创 Eureka 学习笔记(四)原生Eureka-Server启动入口寻找

一、先去GitHub上下载源码,瞄一眼目录结构。    根据笔者小学的英文水平加上百度大概看出来,分为code核心模块、client客户端模块、server服务端模块、resource资源模块、examples用例、utils工具包几个模块吧。。    接着又发现了有这么几个三级项目名archaius2、jersey2、governator。经过再一次的百度查询,发现governator是一个用来增强 Google Gui

2020-08-26 10:39:29 235

原创 Eureka 学习笔记(三)Spring-Cloud-Netfix-Eureka监听器

一、Spring-Cloud-Netfix-Eureka的5大监听器EurekaRegistryAvailableEvent 服务器可用时触发EurekaServerStartedEvent 服务器启动时触发EurekaInstanceRegisteredEvent 服务注册时触发EurekaInstanceRenewedEvent 服务续约时触发EurekaInstanceCanceledEvent 服务下线时触发二、笔者是怎么找到这5个监听器的,以及是怎么去寻找他们调用的方法。首先

2020-08-26 10:36:35 264

原创 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 283

原创 Eureka 学习笔记(一)Eureka简介

零、前言本次记录的Spring-Cloud-Eureka版本为2.2.3,Eureka版本为1.9.21。都是看到什么地方写到什么地方,不要在意目录顺序- -!所有文章都有可能不定期更新。一、什么是EurekaEureka是一个支持分布式的、AP模型的、使用http请求通讯的注册中心。二、为什么要用注册中心当你的项目微服务化以后,并且数量很多的时候,你不可能手动来管理每个服务器的IP地址,这个时候就需要一个注册中心统一来管理。...

2020-08-26 10:32:59 159

原创 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 1905 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 1197

原创 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 317

原创 maven深入学习笔记_008maven生命周期

一、默认生命周期    清理、编译、测试、打包、验证、部署,文档生成二、maven三大生命周期与其对应的phaseclean:清理生命周期,用于清理项目;default:默认生命周期,用于编译、打包、测试、部署等;site:站点文档生成,用于构建站点文档。    每个周期对应的phase:(从官网截图的http://maven.apache.org/guides/introduction/introduction

2020-07-20 16:19:07 108

原创 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 607

原创 maven深入学习笔记_006maven私服_权限介绍

一、所有权限查看    在Security->Privileges菜单可以查看所有权限,看不懂英文的用浏览器自带的翻译插件。。二、角色查看    在Security->Roles菜单可以查看所有角色,自带两个,一个admin角色,一个匿名角色。当然你也可以自己创建角色,分配对应的权限。这里就不演示怎么创建角色了,给个创建页面的图吧~三、用户查看    在Secu

2020-07-17 10:18:18 203

原创 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 1495

原创 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 110

原创 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 110

原创 maven深入学习笔记_002maven依赖

一、标签dependencyManagement:只是声明有那些依赖,并不实际引入。子模块引入对应的包时可以不写version版本。dependencies:依赖管理 dependencie: groupId:groupId artifactId:artifactId version:version type:项目类型 scope:作用域~ test:仅在编译和运行测试代码时才有效。

2020-07-17 09:11:28 149

原创 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 82

原创 maven深入学习笔记_000maven能干什么

零、前言    记录一下学习笔记,特别是配置相关的,以后方便查查一、maven能干什么可以管理jar包,解决N久以前传统项目jar包管理困难的局面。一键编译、测试、打包,管理项目的整个生命周期。...

2020-07-17 09:07:54 105

原创 面试题-讨论一下线程数设计的问题

    起源是这样的,一问朋友(super冰)让我回答下上次面试阿里的一道题目。问题是这样的:给你一台8核16g服务器,你会给你的应用程序设计多少个线程,为什么这么设计。如果是io密集型的呢?如果是cpu密集型的呢?这里就讲讲自己的理解吧,有可能全网打脸(*▽*)。    这里就直接将io密集型和cpu密集型吧。鉴于笔者看过的源码中,比如netty之类的,默认都是给CPU核数的两倍。这里就借鉴这个经验吧。在IO密集型的机器中,

2020-06-20 14:41:49 249

原创 BoringMQ 1.0.0-设计思路及开发心得~

一、业务流程图    这里展示了Queue的创建和监听:    上图介绍了Queue消息的创建过程,和监听消费过程。但是没有画消息发送的流程(笔者忘了,不想补,懒- -!),这里文字补充一下吧。生产者发送消息以后,服务端保存成功以后,会告知生产者消息是否保存成功,生产者根据服务器返回的结果做对应的处理。    至于Topic消息的流程,大致上和Queue消息的差不多,这里就教给大家

2020-06-20 14:05:49 1285

原创 BoringMQ 1.0.0-RELEASE 介绍

零、最后更新时间    2020-06-15一、BoringMQ 码云地址    BoringMQ码云链接二、BoringMQ使用到的技术jdk8mavenniojuchutool工具包:hutool官网三、BoringMQ 一期预期功能  2.1客户端功能支持心跳检查、重连机制(可配置心跳检查时间)(已完成)支持发送同步or异步消息(可配置异步等待超时时间)(未完成)仅支持

2020-06-15 17:15:40 280

原创 分布式_分布式事务_强事务(CP)_两阶段提交协议

一、两阶段提交协议  第一阶段:提交请求阶段/投票阶段    两阶段协议就是通过两次协商来完成一个事务操作。一般第一个事务的发起方叫做 协调者(Coordinator)。第一步,协调者会通知其他系统,我们要执行一个事务啦。其他系统这时会通知协调者自己是否准备好执行事务。如果都可以执行,则进入第二步。如果有一个系统说自己不能执行事务,则整个分布式事务回滚。上图:    上图表示了投票阶段所有系统的操作过

2020-06-12 15:49:39 646

原创 分布式_单机事务_ACID理论

一、ACID原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)二、原子性(Atomicity)    原子性:同一个事务中,多个操作要么同时成功,num等于0;要么只要有一个操作失败,那么整个事务回滚,num回到等于10的状态。三、 一致性(Consistency)    一致性:指的是数据的一致性,如上图,如果事务执行成功,那么num最后

2020-06-12 14:31:29 246

原创 分布式_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 210

原创 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 277

原创 jvm_垃圾回收学习笔记_3_常见垃圾回收器

1

2020-06-03 15:57:27 128

原创 jvm_垃圾回收学习笔记_2_垃圾收集算法(附面试题)

一、扯扯我们所了解JVM堆中的内存区域划分    废话不多说,先上图:如图可知,堆中有着两个大的区域,分别是新生代和老年代。新生代中又分为一个较大的Eden区和两个较小的Survivor区(也有人叫s0和s1)。那么为什么要这样划分呢?经查资料得知,在目前的垃圾回收器中,大多数都是基于两个假说。弱分带假说:绝大多数对象都是朝生朝灭; 强分带假说:熬过越多垃圾收集过程的对象就越难消亡。正是基于这两个假说,堆中的区域才划分新生代和老年代。其中新生代和老年的比例默认为

2020-06-03 13:55:52 163

原创 jvm_垃圾回收学习笔记_1_如何判断对象已死?(附面试题)

一、引用计数法    引用计数法顾名思义就是在对象中添加一个引用计数器,每当有其他对象引用它时计数器就+1。大概就是下图这个结构:在线画图工具:ProcessOn那么引用计数法有什么优点和缺点呢?我想着就是用一小部分空间换时间吧,这样他的效率高,只要计时器为0就可以回收了。但是仔细想想它也有缺点,就是无法解决循环依赖的问题,如下图所示:此时A与B互相引用着,就算已经没有其他地方引用着A和B类,但是他们之间互相有引用,垃圾回收器就不能回收它们。 &

2020-06-03 13:55:08 175

原创 分布式_分布式ID生成方案(阿里面试题,实时思考出来的)

一、前言    刚好前段时间面试阿里被问到了这个问题,这里就聊聊吧~~二、雪花(SnowFlake)算法    记得当时被面试官问到这个问题的时候,还不知道有雪花算法这个东西。就说了下自己的想法。首先想到了肯定要有一个时间戳,为了确保精度,决定使用纳秒。然后想到肯定是多台服务器一起产生id,为了区分机器,想到了用机器编码区分。接着在一想,如果和阿里一样有多个机房,每个机房的机器编码可能重复,那就在加一个机房号吧。有

2020-06-03 13:54:14 486

空空如也

空空如也

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

TA关注的人

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