- 博客(697)
- 资源 (8)
- 收藏
- 关注
原创 权限管理框架之Shiro 的使用和原理(二)
今天分析Shiro的源码,承接上一篇://核心登录源码Subject userSubject=SecurityUtils.getSubject();//取得用户唯一userSubjectAuthenticationToken shiroToken=new UsernamePasswordToken(userName,clientId);//存储信息subject.login(shiroToken);//shiro登录1、点击这个方法SecurityUtils.getSubject().
2020-09-14 11:02:42 567 2
原创 权限管理框架之Shiro 的使用和原理(一)
Apache Shiro做用户权限管理非常流行的一款框架:下面先进入实战1、引入jar:<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.5.0</version></dependency>2、一种登录的思路,核心实例代码:.
2020-09-14 10:39:56 435 1
原创 JVM之GC 调优工具 Arthas 实战使用(二)
Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。Arthas 支持 JDK 6以上版本,支持 Linux/Mac/Windows,而且这些环境的命令都一样,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进行问题的定位和诊断 官方文档参考 https://alibaba.github.io/arthas/一、下载和安装 不需要安装,就是一个 jar 包 curl -O https://alibaba.github.io/arthas/arthas-bo
2020-09-13 18:02:04 8474 1
原创 JVM之GC 调优基础知识(一)
关于JVM的理论知识,大家都略知一二,从今天开始这里咱们只分析JVM实战使用,第一篇就从GC调优开始,首先介绍JDK为我们提供的工具:1、这些工具在 windows 上,就是这些 exe,其他的平台不同。在 linux 中,一般自带了 OpenJdk,一般情况下 JPS 等命令不能用,要么选择去安装 JPS 等插件,要么把 OpenJdk 卸载,去重新安装 Oracle 的 JDK,我推荐后者。二、命令行工具 1、JSP: 14024是java进程列出当前机器上正...
2020-09-13 16:26:09 830 1
原创 分布式事务之 Seata框架的原理和实战使用(三)
Seata分并式事务是阿里去年三月开源的框架,虽然还不太成熟,但是现在很多企业正在逐步使用,成熟稳定只是时间的问题。特点是:效率高;原因是:生成反SQL(事务回滚时执行)、以空间换时间的思路。seata 的 AT 模式,采用的是大量运用在数据库软件的 Write Ahead Log 思想,即把事务的信息以事务日志的方式记录下来。 这种处理方式,实际上是对传统两阶段提交的一种改进和优化。1、主要有几个关键点: 传统两阶段提交协议是阻塞协议,性能差;传统两阶段提交协议高可用性不好 ;传统两阶
2020-09-12 17:16:29 582 1
原创 分布式事务之 LCN框架的原理和使用(二)
今天介绍分布式事务LCN框架:它属于三段提交3PC 是对2PC的优化,原理如图:1、LCN 并不生产事务,LCN 只是本地事务的协调工 TX-LCN 定位于一款事务协调性框架,框架其本身并不操作事务,而是基于对事务的协调从而达到事务一致性的效果。TX-LCN 由两大模块组成, TxClient、TxManager, TxClient 作为模块的依赖框架,提供 TX-LCN 的标准支持,TxManager 作为分布式事务的控制方。事务发起方或者参与反都由 TxClient 端来控制。 原理图如下.
2020-09-12 16:27:24 666 1
原创 分布式事务之 Atomikos 原理和使用(一)
今天介绍分布式事务XA协议,单个服务操作多个数据源,引入Atomikos 相关jar,进行实站演示,先说XA协议规范原理:XA是由X/Open组织提出的分布式事务的规范。 XA规范主要定义了(全局)事务管理器(TM)和(局部)资源管理器(RM)之间的接口。主流的关系型数据库产品都是实现了XA接口的。 XA接口是双向的系统接口,在事务管理器(TM)以及一个或多个资源管理器(RM)之间形成通信桥梁。 XA之所以需要引入事务管理器是因为,在分布式系统中,从理论上讲两台机器理论上无法达成一致的状态,需要引入..
2020-09-12 15:08:48 7709 3
原创 springcloud 微服务配置中心组件 Config 之源码分析(十八)
今天分析微服务配置中心源码Config ,老规矩从jar包开始:一、首先看配置中心的服务端:1、核心启动类加注解:此注解主要起到标识作用:2、找依赖jar:从这入口:3、点击来到环境相关的Controll,配置中心必备的4、点击此类进入,发现相关的方法名,佐证了postman调的方法:服务端启动后调用配置中心的配置信息;证明是有这样一个接口存在:进行调用:5、拿配置中心信息,如果本地有从本地拿,否则从配置中心拿。..
2020-09-12 11:31:14 265 1
原创 springcloud 微服务网关组件 Zuul 之源码分析(十七)
今天和大家一起分析Zuul 源码,网关服务路由的功能,1、从启动类注解开始:创建一个对象起到一个标识过滤作用2、找到相关jar包:两个很重要的类:进入 ZuulServerAutoConfiguration,创建 controller和Maping、核心处理类ZuulServet等多个过滤器ZuulController继承特殊的controller接口,返回来继续:点击进入:三个核心方法依次调用,zuulServlet 中就...
2020-09-12 10:10:24 177 1
原创 postman 请求 post 调用 传 复合 json数据
好多小伙伴用postman调接口,不清楚参数怎么写,今天手把手分享:1、格式化参数为attributeContent的json数据:{\"id\":\"3\",\"key\":\"attributes\",\"type\":\"JSONObject\",\"required\":false,\"desc\":\"\",\"name\":\"属性\",\"default\":\"\",\"children\":[{\"id\":\"4\",\"key\":\"attr1\",\"type\":.
2020-09-11 20:32:34 1541
原创 spring 中 Response 异步返回 接口
springMVC或者SpringBoot业务代码开发时,有时候接到请求需要立刻返回数据,然后在继续业务;现在有一种方案可以实现同时不丢失用户信息,核心代码如下:ServletOutputStream out = response.getOutputStream(); JSONObject resultmap = new JSONObject(); resultmap.put("result", "1212"); byte[] resultBytes =...
2020-09-11 20:12:51 1078 2
原创 springcloud 微服务组件 Fegin 之源码分析(十六)
今天分析Fegin 组件源码及原理,首先,Fegin是对Hystrix和Rebbon的封装:开始,fegin只有接口没有实现类,实现原理类似Mybatis,运行时生成了代理类,相当于实现类。1、从启动类入口:2、点击 FeignClientsRegistrar 里面有创建beanDefinition对象,点击 registerFeignClients 方法:扫描FeignClient 注解,并遍历相关的包和类,封装成对象对应的业务代码注解和注册对象方法:...
2020-09-10 22:13:01 335
原创 springcloud 微服务组件 Hystrix 之源码分析(十五)
今天我们分析Hystrix的源码:1、2、3、4、5、6、7、8、Hystrix源码分析结束,明天我们分析Fegin的源码,敬请期待。
2020-09-09 22:13:17 239
原创 springcloud 微服务组件 ribbon 之源码分析(十四)
今天我们分析ribbon的源码:1、2、3、44、5、6、7、8、分析结束,不明白的小伙伴欢迎留言!
2020-09-06 16:50:20 213
原创 springcloud 微服务组件eureka 之源码分析(十三)
从这篇我们开始分析springcloud组件源码,相关组件有:eureka、ribbon、hystrix、feign、zuul、config、actuator等。今天分析eureka源码。1、通过SPI 加载 spring.factories如图:重点看这里:看该类的父类 DiscoveryClient 接着看下面一个方法:2、1、服务拉取 3、refreshRegistry 里面的 fetchRegistry ...
2020-09-06 00:14:53 246
原创 springcloud 微服务权限校验JWT模式获取 token 实战(十二)
JWT:json web token 是一种无状态的权限认证方式,token信息不需要存到数据库,下游服务通过网关拿到token后,不在请求认证服务器做验证,减少了一次交互请求;一般用于前后端分离,时效性比较端的权限校验,防止恶意攻击者拿到token之后进行恶意请求,当然采用Https的方式也可以避免,jwt 模式获取 token 跟前面的,客户端,密码,授权码模式是一样的,只是需要配置秘钥。下面我们分析一下JWT的整个流程:1、jar 包引入:JWT模式依赖此jar<dependency.
2020-09-05 13:43:33 1539
原创 springcloud 微服务权限校验获取 token 实战之Oauth2 解决方案(十一)
传统的单体架构或者是多台服务器,一般都是采用session来进行权限校验,这种方案是有弊端的:和用户信息强关联、用户多的情况下占用内存、有csrf网络攻击的风险等。而在微服务环境下通常采用 token 认证的方式校验是否有接口调用权限,然后在下游系统设置访问白名单只允许zuul 服务器访问。理论上 zuul 服务器是不需要进行权限校验的,因为 zuul 服务器没有接口,不需要从 zuul 调用业务接口,zuul 只做简单的路由工作。下游系统在获取到 token 后,通过过滤器把 t...
2020-09-05 11:51:57 2996
原创 idea 编译protobuf 文件的设置使用
protobuf是一种数据格式,文件是.proto格式的,有时需要编译成java文件 ,目前流行idea工具开发并编译。那么应该怎么准备环境呢?我这有两种方案:下载idea插件编译和通过maven编译:二者相同的步骤如下:idea 下载插件一、下载idea插件编译:1、安装成功后重启:出现以下按钮说明安装成功。2、官网下载protobuf编译工具:protoc-3.11.8-win64.rar,解压打开后显示:例如: D:\Program Files\prot...
2020-09-01 20:24:05 8149
原创 springcloud 微服务管理之 admin 实战使用(九)
Springcloud admin 是基于spring-boot-starter-actuator 实现的,admin 是根据统计出来的数据来进行展示的,可以很好的监控整个微服务系统中的实例运行情况信息,前提结合注册中心才能拿到数据。1、actuator 负责统计数据,引入jar:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-s...
2020-08-31 22:51:01 895
原创 springcloud 服务网关之 zuul 实战使用(八)
Zuul 是分布式 springcloud 项目的流量入口,理论上所有进入到微服务系统的请求都要经过zuul 来过滤和路由。1、服务端jar包引入<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency>.
2020-08-30 22:25:41 471
原创 springcloud 分布式配置 加密 之 Config 实战使用(七)
有小伙伴反应上一篇分布式加密配置,有小伙伴加密报错,我查了一下原因和jdk 版本相关,先贴报错日志:1、调用加密接口时http://localhost:8085/encrypt/status 报错的核心日志:java.security.InvalidKeyException: Illegal key size2、原因是jdk里的jar包问题DK8的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce8-do...
2020-08-30 12:31:34 220
原创 springcloud 分布式配置中心 之 Config 实战使用(六)
分布式配置中心解决了什么问题 ?A、抽取出各模块公共的部分,做到一处修改处处生效的目标,方便了配置管理B、做到系统的高可用,修改了配置文件后可用在个模块动态刷新,不需要重启服务器,配置实时生效1、springcloud 配置中心服务端搭建(nandao-config-server),jar包 引入:<dependency> <groupId>org.springframework.cloud</groupId> <artifact...
2020-08-23 18:38:07 253
原创 springcloud 组件之 Feign 实战使用(五)
Feign 组件是对 Hystrix 和Ribbon 两个组件的再封装,同时把公用的接口提取出来 简化了代码量,便于统一管理。使用流程如下:一、使用流程:1、jar 包引入<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></depe..
2020-08-23 13:40:06 864
原创 springcloud 组件之 Hystrix 实战使用(四)
今天和大家分享Hystrix组件的使用,其功能主要包含:服务隔离策略、服务降级、数据监控、熔断等作用。下面我们以此介绍其使用方法。一、服务隔离策略:二、服务降级:三、数据监控:四、熔断:......
2020-08-22 23:48:30 345
原创 springcloud微服务链路追踪组件之zipkin实战(十)
多个微服务之间的调用关系记录,称为服务链路追踪,这样可以很清楚的查看到,各服务之间的相互调用。比较流行的技术有 springcloud 的zipkin组件,skywalking,logstash等,今天主要讲解zipkin 的实战使用。1、zipkin 服务端在springcloud 的F版本之后,官方给提供标准的服务jar包,下载地址是:启动命令:java -jar XXXXXXXX.jar这里重点强调一下 以上启动命令是没有连接数据库的,zipkin 默认是不连接数据库的,数据默认是存在内.
2020-08-22 11:55:53 478
原创 springcloud 组件之 ribbon 实战使用(三)
Ribbon是springcloud主要组件之一,起到服务调用和负载均衡的作用,其底层封装在 eureka的客户端和feign组件中,今天只讲使用,后续会讲源码和原理。1、jar包的引入:其jar包包含于eureka客户端包里:在上几篇的基础上这里就不需要重复引入了。2、引入RestTemplate配置类里面注入RestTemplate的方法上面添加注解@LoadBalanced ,@Bean @Bean @LoadBalanced //起到负载均衡作用...
2020-08-18 11:38:04 742
原创 springcloud 之组件 eureka 实战使用(二)
今天继续讲解 eureka 使用,重点功能 :用户认证、续约保活、健康监测、服务下线、高可用 等五个功能点。一、eureka 用户认证:1、eureka 服务端 pom文件中加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></depen
2020-08-17 22:50:41 252
原创 springcloud 之组件 eureka 使用(一)
从今天开始我们讲解 springcloud 专题,前部分我们讲解各组件的使用,后部分讲解各组件的原理及源码。此篇我们分析eureka的使用流程。首先我们知道eureka 是微服务的注册中心,分为服务端和客户端,服务端通常有一个或多个eureka 服务,客户端一般为多个不同或相同功能的微服务。下面我们用idea工具演示一下服务端和客户端的配置。1、先创建一个springboot 项目 ,一种方式如下图:右键总目录名点击Module,然后依次操作,然后继续点击next进入下一步,
2020-08-16 22:44:57 343
原创 SpringMVC 源码之 DispatcherServlet 启动初始化解析
上篇我们详解了ContextLoaderListener启动过程,这次我们详解DispatcherServlet,先看web.xml 中的相关配置<!-- 加载springMVC配置文件 --><servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</.
2020-07-05 00:07:38 574
原创 Spring 源码之 ContextLoaderListener 解析
我们平日采用spring 框架 开发项目时,配置文件web.xml 中总是有这样一些配置,比如:<!-- 加载spring配置文件--><context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:config/spring-config.xml classpath:config/spring-
2020-07-04 19:57:26 526
原创 spring AOP 代理实例调用(功能增强)的源码解析(十)
看这一篇前最好先看上一篇,具有连续性:https://blog.csdn.net/nandao158/article/details/105873916这篇解析代理实例调用的核心方法:1、接着上篇://如果该方法没有执行链,则说明这个方法不需要被拦截,则直接反射调用if (chain.isEmpty()) { // We can skip creating a MethodI............
2020-05-01 11:09:02 542
原创 spring 源码解析之 AOP(八)
上一篇分享了,spring 中bean实例的循环依赖,今天开始分享解析AOP 源码。1、首先从源码中AOP 的入口方法开始
2020-05-01 00:27:40 589
原创 用 spring中的 redis 模板类(StringRedisTemplate)设计分布式锁(三)
package com.jy.crossor.utils;import io.lettuce.core.RedisException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.data.redis.core.StringRedisTemplate;import o...
2020-04-30 22:30:41 415 1
原创 采用 redis 设计分布式锁 (二)
上一篇我们介绍了一种redis 分布式锁,介绍了其应用场景和一些存在的问题,而今天我们介绍 redis 第二种分布式锁的使用;这种锁同时采用lua脚本保证原子性能很好解决以上问题。实例如下:1、代码如下:package com.jy.utils;import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger...
2020-04-30 17:55:18 637
原创 用 redis 设计 分布式锁 (一)
项目开发中我们经常需要用到分布式锁,尤其是在集群环境多台服务器情况下,比如 接口请求、定时任务等业务环境中;今天 我们先介绍一种 redis 分布式锁,在普通项目中就可以使用,代码如下:1、redis 加锁和释放锁代码如下:package com.jy.utils;import org.apache.commons.lang3.StringUtils;import org.sl...
2020-04-30 15:25:26 928
原创 用 mybatis-generator 通过 main 方法 自动生成代码 并 在字段上加注释
mybatis-generator 是我们常用的生成代码的工具,一般都是在开发工具上配置启动生成,这种方法比较麻烦;而今天我们通过一个工具类自动生成,方便、快捷,不会因为开发环境差异,而影响使用。1、generatorConfig.xml 配置文件处理<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorCo...
2020-04-28 15:27:56 1131 1
原创 java 代码 用 wkHtmlToPdf 工具生成 pdf 文档 并 设置自定义 字体
wkHtmlToPdf 的简单使用我在这里就不说了,今天主要说一下 设置 自定义字体问题,我经过很多次的测试,终于成功。1、上代码import java.io.File;import java.io.IOException;public class WkHtmlToPdf {private static final String toPdfTool = "D:\\Progra...
2020-04-28 14:47:40 2961 7
原创 spring 单实例循环依赖之源码解析(七)
spring依赖注入的主干核心源码我们上篇已经分析过了,今天我们重点解析 spring 单实例循环依赖问题,为啥强调单实例呢?因为在spring 中 多实例和有参构造函数上带注解的是无法循环依赖的(这块内容以后也会细讲)。首先说一下单实例循环依赖整体流程,然后再去分析源码。1、假如有m、n两个类相互依赖注入;package com.nandao.bean;import org.spr............
2020-04-26 23:37:39 273 1
原创 spring 源码核心方法之 finishBeanFactoryInitialization(beanFactory)解析(六)
今天我们讲解spring 启动过程中最核心方法,我们计划分多篇讲解,今天解析该方法的主干核心,后几篇我们解析该方法相关的分支方法(为啥啊?因为这个方法太重要了!),废话少说,看源码!1、来到 AbstractApplicationContext extends DefaultResourceLoader implements ConfigurableApplicationContext ............
2020-04-19 11:56:17 449
原创 spring 源码 refresh() 中的方法 invokeBeanFactoryPostProcessors(beanFactory) 解析(五)
前面已经通过ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); 方法解析了,spring各种标签 、创建工厂、注解扫描等,现在我们接着往下介绍其他方法1、先来到refresh 方法@Overridepublic void refresh() throws BeansExceptio......
2020-04-18 15:06:02 253
wkhtmltox-0.12.5-1.msvc2020-win64.zip
2020-04-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人