自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 收藏
  • 关注

原创 Java-基于注解修改代码,处理响应前端数据字典及关联对象

ast(抽象语法树), JSR-269,插入式注解处理API,数据字典处理,关联字段处理

2022-12-27 11:30:36 367 1

原创 jar包字节码加密

java 字节码加密插件

2021-12-22 10:51:29 631

原创 springBoot集成spring-security 自定义token实现

spring-security基于session实现当用户登录后会在session中存储认证信息当用户访问接口时会从session中取出认证信息,放入SecurityContext中。放入SecurityContext 由 ThreadLocal 持有然后进行认证处理程序而我们要基于token实现就要抛弃session的实现登录成功后将 token和认证信息另找地方存储当访问需要认证访问的接口时,根据token找到认证信息,将认证信息塞到SecurityContext中,Securi

2021-08-06 09:05:09 2407

原创 springBoot集成spring-security-oauth2实现基于token的登录 退出 及 权限控制

引入开发包 <dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.3.5.RELEASE</version> </d.

2021-07-31 12:27:19 2919 3

原创 多租户方案设计

独立数据库 独立服务实例 优点:独立部署,数据服务隔离度高,业务定制扩展性高,如果出现故障,恢复数据比较简单 缺点:运维成本高独立数据库 共享服务实例 优点:数据隔离度高,服务共享减少维护成本,扩展性中等 缺点:数据库独立部署成本高,服务实例共享对高可用性要求高共享数据库 共享服务实例 优点: 维护和购置成本最低,允许每个数据库支持的租户数量最多。 缺点: 隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量 数据备份和恢复最困

2021-02-03 15:14:15 2372 1

原创 使用 AbstractRoutingDataSource 实现 动态切换数据源

源码参考文献思路: 使用AbstractRoutingDataSource数据源(路由数据源),为多数据源切换存在。AbstractRoutingDataSource 会管理一个map {路由键: 数据源}。调用determineCurrentLookupKey方法。根据路由键切换数据源。创建一个静态Map来保存 所有的数据源key为租户id val为数据源 /** * 租户id, 数据源 */ public static final Map<Objec

2021-02-02 14:17:14 525 1

原创 springboot集成拦截器,过滤器,监听器 (拦截器和reids实现单设备登录)

springboot官方文档本项目地址项目目录│ pom.xml└─src └─main ├─java │ └─com │ └─base │ │ Application.java # 启动类 │ │ │ ├─config │ │ │ WebMvcConfig.java mvc配置类,配置拦截器

2021-01-07 17:21:22 246

原创 springboot + mybatis + druid 多数据源管理

引入 mysql mybatis druid 开发包<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ht.

2020-11-30 11:29:46 269

原创 09--seata搭建 AT模式 及 springcloudAlibaba集成seata

seata官方文档下载seata镜像docker pull seataio/seata-server创建宿主机映射目录及文件mkdir /mnt/seata/configmkdir registryvim registry.confregistry.conf 配置(使用nacos做为配置,并将seata注册至nacos)registry { type = "nacos" nacos { application = "serverAddr" se

2020-11-25 16:45:16 366

原创 08--gateway 集成sentinel

前面我们已经说了WebFlux集成sentinel,此集成在gateway中同样适用.gateway集成sentinel开发包 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId> </d.

2020-11-21 14:54:15 1415

原创 07--springCloudAlibab gateway 网关

在spring-cloud-alibaba项目中像创建gateway-example模块引入gateway开发包<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:.

2020-11-19 15:49:00 370 1

原创 06--springCloudAlibab WebFlux集成sentinel

在spring-cloud-alibaba项目中像创建webflux-example模块引入gateway开发包,这里我还是使用nacos做注册配置服务<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s.

2020-11-19 14:34:43 1234 5

原创 05--springCloudAlibab SpringMVC集成sentinel

sentinel手册第三章 创建了生产者。以生产者为例集成sentinel引入sentinel开发包 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency&gt

2020-11-19 09:24:34 382

原创 04--sentinel 环境部署

docker run --name sentinel -d -p 8858:8858 -p 8719:8719 -d bladex/sentinel-dashboard访问 http://xxx.xx.xxx.xxx:8858/账号:sentinel 密码: sentinelsentinel手册

2020-11-19 09:23:04 568

原创 03--springCloudAlibaba 集成 dubbo及springcloud(feign) RPC框架

上一章 创建一个工程并将其注册至nacos,并使用nacos配置上一章 我们创建了一个生产者服务(producer-example) 并将其注册至了nacos和使用可nacos配置。 本章我们将创建一个消费者服务。并使用dubbo和feign进行rpc通信在spring-cloud-alibaba项目中像创建producer-example 一样 创建 consumer-example模块pom.xml<?xml version="1.0" encoding="UTF-8"?>&l

2020-11-17 15:47:57 1427 4

原创 02--创建一个工程并将其注册至nacos,并使用nacos配置

nacos 环境搭建请参考新建一maven项目spring-cloud-alibaba删除 spring-cloud-alibaba 项目中的 src文件pom.xml中引入springboot及springcloudalibab依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.

2020-11-17 14:20:52 457 1

原创 01--NaCos环境搭建

NaCos文档准备工具Centos 操作系统1. 安装gitCentos/RedHat如果你使用的系统是 Centos/RedHat 安装命令为:$ yum install curl-devel expat-devel gettext-devel \ openssl-devel zlib-devel$ yum -y install git-core$ git --versiongit version 1.7.12. docker 安装使用官方安装脚本自动安装curl -

2020-11-16 15:12:20 356

原创 docker安装mysql

下载镜像 mysql:5.7docker pull mysql:5.7创建映射目录mkdir /mnt/mysql运行镜像创建容器docker run -p 3306:3306 --name mysql -v /mnt/mysql/mysql-config:/etc/mysql/conf.d -v /mnt/mysql/mysql-logs:/logs -v /mnt/mysql/mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=lz.

2020-11-16 14:54:21 95

原创 关于Integer 为什么除了 -128到127。用==号比较返回false问题

Integer a = 128 等价于 Integer a = new Integer(128) // 自动装箱if (a == 128) 等价于 if (a.intValue() == 128) // 自动拆箱if (new Integer(128) == new Integer(128)) // falseif (new Integer(127) == new Integer(127)) // ture // -128 到 127 被Integer 静态内部类缓存Integer 内.

2020-11-13 10:56:21 181

原创 mycat 读写分离, 写分片 (docker)

创建连个数据库服务 设置主从123.206.1.217:3306 主(写库)123.206.1.217:3307 从(读库)主库建立base_data和base_data2库,库中分别建立item表 只有一个id字段就行1. docker pull mycatdocker pull longhronshens/mycat-docker2. 配置mycat文件server.xml : 是Mycat服务器参数调整和用户授权的配置文件schema.xml : 是逻辑库定义和表以及分.

2020-11-13 10:53:31 126

原创 类加载生命周期

1. 加载1. 通过一个类的全限定名获取定义此类的二进制字节流2. 将这个字节流所代表的的静态存储结构转化为方法区的数据结构3. 在内存中生成一个代表这个类的class对象,作为方法区这个类的各种数据访问入口2. 验证1. 验证class文件的字节流中包含的信息符合《java虚拟机规范》的全部约束,保证这些信息被当做代码运行时不会危害虚拟机本身2. 文件格式验证。元数据验证。字节码验证。符号引用验证3. 准备1. 准备阶段是为类的定义的静态变量分配内存并设置类静态变量初始值的阶段pu

2020-11-13 10:51:25 106

原创 使用seata 处理分布式事务

文章目录seata服务端SEATA服务端 创建配置文件夹registry和文件registry.confregistry.conf 内容config.txt nacos 配置使用脚本上传至nacosnacos-config.shseata 表1. docker 启动 seata服务客户端创建 消费者 和 生产者服务引入maven包生产和消费服务registry.conf文件 配置yml文件配置 生产者yml文件配置 消费者生产者和消费者数据库分别增加undo_log表消费者 业务方法上增加 @GlobalT

2020-11-13 10:50:22 351

原创 分布式事务 各种模式解释[粗略]

文章目录TCC (Try-Confirm-Cancel) 模式Try 尝试阶段Confirm 确认阶段Cancel 撤销阶段SAGA模式Seata AT 模式两段提交角色事务协调者事务参与者事务执行的流程准备阶段提交阶段三段提交CanCommit阶段 询问阶段PreCommit阶段 准备提交阶段doCommit阶段 事务提交阶段三段提交和二段提交比较TCC (Try-Confirm-Cancel) 模式Try 尝试阶段1. 尝试执行,确保所有参与事务的服务都能正常执行,所有的数据库,缓存等参与的中间件

2020-11-13 10:39:48 139

原创 java反应式编程 解释 及 示例

名词说明Publisher出版商(发布者)Subscriber订阅人Subscription订阅管理Processor订阅者和出版商的组合出版商(Publisher)接口声明了一个方法subscribe()(订阅)。订阅人(Subscriber)可以通过此方法向出版商(Publisher)发起订阅。出版商(Publisher)创建数据,并将数据发送给订阅的订阅人(Subscriber)。public interface Publisher<...

2020-10-22 12:36:44 784

原创 java函数式编程 示例

/** * @author 刘志强 * @date 2020/8/29 14:30 */public class FunctionalTest { public static void main(String[] a) { // 不带参数的 test(FunctionalTest::aaa); test(() -> "bbb"); // 带参数的 FunctionalTest.testTwo(Fu..

2020-10-22 12:35:42 540

原创 sentinel集成 自定义 origin (ip限流)限流 IP 黑白名单 熔断降级

sentinel手册spring: cloud: sentinel: # 取消控制台懒加载 eager: true # sentinel 地址 transport: dashboard: 192.168.1.22:8858 port: 8719 #将sentinel配置信息持久化到nacos 熔断规则 datasource: ds1: nacos:

2020-09-27 13:59:24 5371 2

原创 代理模式--静态代理--动态代理

在谈aop实现原理前,我们先说一下设计模式中的代理模式1. 代理: 由代理类代理目标类执行目标类的方法。与装饰器模式的区别是 代理模式主要是控制对目标象的访问也可以增强对象的方法。但装饰器模式主要是对被装饰对象的扩展。优点:在执行目标对象创建及目标方法前后过程中 增加扩展代码 增加扩展性(aop切面)决定对象的创建与方法的执行。智能化2. 静态代理提前创建代理对象抽象接口(定义公共方法) 2 目标对象 3 代理对象目标对象和代理对象都实现抽象接口。代理对象掌握目标对象的引用//

2020-08-30 09:31:04 146

原创 springboot 集成 security

springboot技术栈pxm.xml 引用开发包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>...

2020-08-11 11:11:24 158

原创 springboot + mysql多数据源 + 跨库事务处理

第一步 上源码Demo地址首先查看我们mysql是否开启了xa事务的支持,innodb_support_xa 为 ON 则开启了show variables like 'innodb_support_xa';springBoot 引入 spring-boot-starter-jta-atomikos 开发包 <dependency> <groupId>org.springframework.boot</groupId>

2020-05-23 11:11:40 4290 1

原创 快速理解 脏读(未提交读),提交读(不可重复读), 可重复读, 可串行化 和 幻读

脏读: 正在执行的事务 读取到其他事物未提交的数据提交读:正在执行的事务 读取到其他事务已提交的数据 读取到其他事务已提交的修改 造成了不可重读, 读取到其他事务的插入 造成了幻读可重复读: 正在执行的事务 读取不到其他事务已提交或未提交的修改,但能读到其他事务已提交的插入 所以造成幻读可串行化: 最高的默认级别,强制事务串行执行(即一个事务一个事务执行)。效率极其低下。幻读: 正在执行的事务 读取倒了其他事务已提交的插入不可重复读: 正在执行的事务 读取到了其他事务的修改...

2020-05-20 16:45:57 5718 3

原创 springboot + dubbo + zookeeper 技术框架

先附上github地址创建一个springBoot项目, 并在springBoot中创建三个工程1. dubbo_consumer(服务消费者)2. dubbo_provider(服务提供者)3. dubbo_api(api接口工程,存放统一接口)目录结构如下├─dubbo_api ## api接口工程,存放统一接口│ └─src│ └─main│ ...

2020-05-04 12:40:28 276

原创 java aop实现自定义注解

目的1. 日志打印2. 接口权限实现方式 aop + 自定义注解1. 首先是aoppackage com.ydfx.app.config.aop;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;...

2020-04-27 18:19:03 1809

原创 微信扫码关注公众号 并实现pc端登录 微信扫码关注公众号登录

流程如下服务端获取accessToken服务端生成带参数的二维码 并将 ticket 抛给前端,前端拿ticket轮询请求服务器用户扫码关注后,微信服务器会通知 微信接口配置的url服务器拿到openId和ticket 将 ticket作为key,openId作为value 存储至redis当前端拿ticket 请求服务器,服务端拿ticket去redis中查询。如果存在即扫码或关注成...

2020-04-16 18:17:05 6950 1

原创 springcloud 实现原理

服务注册发现1. 所有的实例 注册至服务注册中心(Erueak),由Erueak管理所有注册的实例。2. Erueak会每隔一段时间 发起心跳检测,检测所有注册的实例是否还处于运行状态,以及运行情况(压力情况之类)。根据不同的压力情况对所有的实例分配权重等级网关服务器Zuul1. 请求发送至网关服务器,网关服务器根据配置信息,在注册服务中心找到要转发的地址。(在此实现负载均衡。由于服务注册...

2020-04-08 21:06:48 374

原创 initBinder 日期转换 字符串转换(在入参前转化传输参数,自定义数据转换)

package com.ydfx.app.controller;import com.google.common.escape.Escaper;import com.google.common.html.HtmlEscapers;import org.springframework.util.StringUtils;import org.springframework.web.bind....

2020-04-03 13:33:52 319

原创 react 生命周期

挂载卸载过程constructor()componentWillMount() 组件渲染前componentDidMount() 组件渲染后componentWillUnmount () 组件销毁前更新过程componentWillReceiveProps (nextProps) props改变前shouldComponentUpdate(nextProps,nextS...

2020-03-08 11:00:22 80

原创 java设计模式之单例模式

1. 单例模式单例模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。单例类的特点单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点;单例模式的结构与实现单例模式是设计模式中最简单的模式之一。通常,普通类的构造函数是公有的,外部类可以通过“new 构造函数()”来生成多个实例。但是,如果将类的构造函数设为私有的,外...

2020-03-08 10:55:10 116

转载 java 常用工具方法

文章目录工具类文档使用对象转换使用fastjson1. 引入fastjson开发包2. json字符串转Map 或 对象3. json数组字符串转List 或 List<对象>4. JSONObject 转 对象5. Map 转 对象6. 对象转JSON 或 Map7. dto 和 实体baen转换日期处理Date 和 Calendar 转换1. Date转Calendar2. Cal...

2020-03-08 10:53:17 162

原创 微信支付 jsApi 微信浏览器内支付

1. 调起微信支付的域名要和微信支付配置的一致,导致无法本地测试解决方案: 修改本地host文件将配置的域名指向本机, 手机wifi使用本机代理上网。IJPay-All文档地址1. maven中引入开发包<dependency> <groupId>com.github.javen205</groupId> <artifactId&g...

2020-03-08 10:47:40 1021

原创 支付宝 手机h5支付

引入开发包<dependency> <groupId>com.github.javen205</groupId> <artifactId>IJPay-AliPay</artifactId> <version>2.4.0</version></dependency>实例...

2020-03-08 10:46:26 3061

空空如也

空空如也

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

TA关注的人

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