后端
文章平均质量分 52
lzq199528
从事软件开发数年,对前端后端有独特见解。
展开
-
Java-基于注解修改代码,处理响应前端数据字典及关联对象
ast(抽象语法树), JSR-269,插入式注解处理API,数据字典处理,关联字段处理原创 2022-12-27 11:30:36 · 442 阅读 · 1 评论 -
jar包字节码加密
java 字节码加密插件原创 2021-12-22 10:51:29 · 695 阅读 · 0 评论 -
springBoot集成spring-security 自定义token实现
spring-security基于session实现当用户登录后会在session中存储认证信息当用户访问接口时会从session中取出认证信息,放入SecurityContext中。放入SecurityContext 由 ThreadLocal 持有然后进行认证处理程序而我们要基于token实现就要抛弃session的实现登录成功后将 token和认证信息另找地方存储当访问需要认证访问的接口时,根据token找到认证信息,将认证信息塞到SecurityContext中,Securi原创 2021-08-06 09:05:09 · 2639 阅读 · 0 评论 -
使用 AbstractRoutingDataSource 实现 动态切换数据源
源码参考文献思路: 使用AbstractRoutingDataSource数据源(路由数据源),为多数据源切换存在。AbstractRoutingDataSource 会管理一个map {路由键: 数据源}。调用determineCurrentLookupKey方法。根据路由键切换数据源。创建一个静态Map来保存 所有的数据源key为租户id val为数据源 /** * 租户id, 数据源 */ public static final Map<Objec原创 2021-02-02 14:17:14 · 557 阅读 · 1 评论 -
springboot集成拦截器,过滤器,监听器 (拦截器和reids实现单设备登录)
springboot官方文档本项目地址项目目录│ pom.xml└─src └─main ├─java │ └─com │ └─base │ │ Application.java # 启动类 │ │ │ ├─config │ │ │ WebMvcConfig.java mvc配置类,配置拦截器原创 2021-01-07 17:21:22 · 279 阅读 · 0 评论 -
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 · 289 阅读 · 0 评论 -
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 · 118 阅读 · 0 评论 -
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 · 147 阅读 · 0 评论 -
使用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 · 383 阅读 · 0 评论 -
分布式事务 各种模式解释[粗略]
文章目录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 · 171 阅读 · 0 评论 -
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 · 5855 阅读 · 2 评论 -
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 · 4522 阅读 · 1 评论 -
快速理解 脏读(未提交读),提交读(不可重复读), 可重复读, 可串行化 和 幻读
脏读: 正在执行的事务 读取到其他事物未提交的数据提交读:正在执行的事务 读取到其他事务已提交的数据 读取到其他事务已提交的修改 造成了不可重读, 读取到其他事务的插入 造成了幻读可重复读: 正在执行的事务 读取不到其他事务已提交或未提交的修改,但能读到其他事务已提交的插入 所以造成幻读可串行化: 最高的默认级别,强制事务串行执行(即一个事务一个事务执行)。效率极其低下。幻读: 正在执行的事务 读取倒了其他事务已提交的插入不可重复读: 正在执行的事务 读取到了其他事务的修改...原创 2020-05-20 16:45:57 · 5928 阅读 · 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 · 292 阅读 · 0 评论 -
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 · 1846 阅读 · 0 评论 -
微信扫码关注公众号 并实现pc端登录 微信扫码关注公众号登录
流程如下服务端获取accessToken服务端生成带参数的二维码 并将 ticket 抛给前端,前端拿ticket轮询请求服务器用户扫码关注后,微信服务器会通知 微信接口配置的url服务器拿到openId和ticket 将 ticket作为key,openId作为value 存储至redis当前端拿ticket 请求服务器,服务端拿ticket去redis中查询。如果存在即扫码或关注成...原创 2020-04-16 18:17:05 · 7144 阅读 · 1 评论 -
springcloud 实现原理
服务注册发现1. 所有的实例 注册至服务注册中心(Erueak),由Erueak管理所有注册的实例。2. Erueak会每隔一段时间 发起心跳检测,检测所有注册的实例是否还处于运行状态,以及运行情况(压力情况之类)。根据不同的压力情况对所有的实例分配权重等级网关服务器Zuul1. 请求发送至网关服务器,网关服务器根据配置信息,在注册服务中心找到要转发的地址。(在此实现负载均衡。由于服务注册...原创 2020-04-08 21:06:48 · 427 阅读 · 0 评论 -
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 · 343 阅读 · 0 评论 -
java设计模式之单例模式
1. 单例模式单例模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。单例类的特点单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点;单例模式的结构与实现单例模式是设计模式中最简单的模式之一。通常,普通类的构造函数是公有的,外部类可以通过“new 构造函数()”来生成多个实例。但是,如果将类的构造函数设为私有的,外...原创 2020-03-08 10:55:10 · 133 阅读 · 0 评论 -
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 · 180 阅读 · 0 评论 -
微信支付 jsApi 微信浏览器内支付
1. 调起微信支付的域名要和微信支付配置的一致,导致无法本地测试解决方案: 修改本地host文件将配置的域名指向本机, 手机wifi使用本机代理上网。IJPay-All文档地址1. maven中引入开发包<dependency> <groupId>com.github.javen205</groupId> <artifactId&g...原创 2020-03-08 10:47:40 · 1060 阅读 · 0 评论 -
支付宝 手机h5支付
引入开发包<dependency> <groupId>com.github.javen205</groupId> <artifactId>IJPay-AliPay</artifactId> <version>2.4.0</version></dependency>实例...原创 2020-03-08 10:46:26 · 3167 阅读 · 0 评论 -
微信H5支付
1. 调起微信支付的域名要和微信支付配置的一致,导致无法本地测试解决方案: 修改本地host文件将配置的域名指向本机, 手机wifi使用本机代理上网。IJPay-All文档地址1. maven中引入开发包<dependency> <groupId>com.github.javen205</groupId> <artifactId&g...原创 2020-03-08 10:44:46 · 467 阅读 · 0 评论 -
IJPay-All 之 微信支付之app支付
IJPay-All文档地址1. maven中引入开发包<dependency> <groupId>com.github.javen205</groupId> <artifactId>IJPay-WxPay</artifactId> <version>2.4.0</version><...原创 2020-03-08 10:43:37 · 1736 阅读 · 0 评论 -
mybatis <if>标签中 0 等于false的问题
mybatis 标签中 0 等于false的问题1. 在if标签中 如果将 整形当做字符串比较会出现此问题 也就是 添加 != ‘’ 判断时。有问题的写法 <if test="state != null and state != ''">没有问题的写法 <if test="state != null">结论: 对于非字符串的类型无需添加 != ‘...原创 2020-02-03 10:00:22 · 1290 阅读 · 1 评论 -
excel导出
maven依赖插件 <!--工具--> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <versi...原创 2019-12-09 17:57:31 · 116 阅读 · 0 评论 -
RestTemplate 使用
1. 项目中创建单例(当然也可以使用时创建实例)@Configurationpublic class RestTemplateConfig { @Bean(name = "factory") public ClientHttpRequestFactory simpleClientHttpRequestFactory() { SimpleClientHttpReq...原创 2019-12-09 17:20:08 · 193 阅读 · 0 评论 -
java 创建二维码
maven依赖 <!--二维码--> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>...原创 2019-12-09 17:19:11 · 161 阅读 · 0 评论 -
springboot 集成 redis 分布式锁 RedisTemplate(修复)
1. 项目中增加redis依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> &...原创 2019-12-06 14:08:45 · 506 阅读 · 0 评论 -
微信支付 h5支付
1. 调起微信支付的域名要和微信支付配置的一致,导致无法本地测试解决方案: 修改本地host文件将配置的域名指向本机, 手机wifi使用本机代理上网。IJPay-All文档地址1. maven中引入开发包 <dependency> <groupId>com.github.javen205</groupId> ...原创 2019-12-05 10:17:48 · 320 阅读 · 1 评论 -
二叉树遍历(先序,中序,后续)图解 java实现
先序遍历规则: 树根 -> 左侧树 -> 右侧树中序遍历规则: 左侧树 -> 树根 -> 右侧树后序遍历规则: 左侧树 -> 右侧树 -> 树根先序遍历8,3,1,6,4,7,10,14,13,中序遍历1,3,4,6,7,8,10,13,14,后序遍历1,4,7,6,3,13,14,10,8,说明先序由树根“8”开始。找到“8”...原创 2019-10-22 15:30:10 · 728 阅读 · 0 评论 -
注册中心(eureka)搭建
项目地址springcloud 注册中心(eureka)搭建在spring-cloud项目中新建register-server (maven)模块pom.xml 引入开发包及插件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" ...原创 2019-04-30 14:49:48 · 305 阅读 · 0 评论 -
springboot集成websocket (聊天器)
springboot技术栈WebSocket(html前端)参考文档WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。springboot本身也集成了websocket 服务端开发包集成pom.xml引用 websocket开发包<dependency> <groupId>org.springframewo...原创 2019-03-02 11:42:13 · 315 阅读 · 0 评论 -
亚马逊 s3 使用
1. 设置对象共有访问权限存储桶策略{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": "s3:Get...原创 2019-10-09 14:56:04 · 1148 阅读 · 0 评论 -
springboot集成thymeleaf
springboot技术栈thymeleaf官网Thymeleaf是一个适用于Web和独立环境的现代服务器端Java模板引擎。Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 - 可以在浏览器中正确显示的HTML,也可以用作静态原型,从而在开发团队中实现更强大的协作。通过Spring Framework模块,与您喜欢的工具的大量集成,以及插入您自己的功能的能力,Thyme...原创 2019-04-30 14:53:58 · 1571 阅读 · 0 评论 -
springboot 集成 security
springboot技术栈pxm.xml 引用开发包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>...原创 2020-08-11 11:11:24 · 176 阅读 · 0 评论 -
springboot集成freemarker
# [springboot技术栈](https://github.com/2425358736/dolphin/blob/master/README.md)## [freemarke在线文档](http://freemarker.foofun.cn/index.html)### FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件...原创 2019-04-30 14:51:53 · 332 阅读 · 0 评论 -
OAuth2 + Security保护服务 基于 RedisTokenStore
antMatchers(HttpMethod.OPTIONS,"/**").permitAll()放过OPTIONS请求创建auth2-server服务配置文件spring: application: name: auth2-server #redis配置数据 redis: hostName: 117.73.8.227 port: 6379 da...原创 2019-04-29 16:34:11 · 3907 阅读 · 0 评论 -
springboot集成aop
springboot技术栈注解说明注解说明@Aspectaop类注解@Pointcut定义切面点注解@Around环绕通知,围绕方法执行,此通知可以修改返回值,ProceedingJoinPoint.proceed()@After后置通知,方法执行后执行@Before前置通知,方法执行前执行@AfterReturning返回通知,在...原创 2019-03-02 11:43:53 · 365 阅读 · 4 评论 -
springboot集成swagger
springboot技术栈swagger官网swagger注解说明注解说明@Api()用于类,表示标识这个类是swagger的资源@ApiOperation()用于方法,表示一个http请求的操作@ApiParam()用于方法,参数,字段说明,表示对参数的添加元数据(说明或是否必填等)@ApiModel()用于实体类,@RequestBody接受...原创 2019-03-02 11:43:24 · 225 阅读 · 0 评论