自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 乐观锁重试注解

【代码】乐观锁重试注解。

2023-08-18 10:33:04 118

原创 list对象去重

else{

2023-08-15 16:02:03 81

原创 面试题总结

🍒(1)最左前缀原则就是最左优先,在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。MySQL会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4🍒(2) 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。

2023-08-14 11:59:36 448

原创 Java实现二叉树 增 删 查

二叉树实现

2022-07-17 23:51:33 371 1

原创 递归(菜单树型结构)

@Data@NoArgsConstructorpublic class Menu { private String menuId; private String parentId; private String menuDescribe; private String url; private List<Menu> children; public Menu(String menuId, String parentId, String menu

2022-03-10 23:57:05 366

原创 WebSocket实现后台向前端推送信息

什么是WebSocket?因为 HTTP 协议有一个缺陷:通信只能由客户端发起,HTTP 协议做不到服务器主动向客户端推送信息。WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端快速上手 <!-- websocket --> <dependency> <groupId>org.springframework.boot</g

2022-01-04 21:04:00 8433 3

原创 MySQL中的锁(表锁、行锁,共享锁,排它锁,间隙锁)

MySQL锁概述InnoDB支持表、行(默认)级锁,而MyISAM支持表级锁表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般表锁MySQL的表级锁有两种模式:表共享读锁(Table Read Lock)和表独占写锁(Table Write Lock)。对MyISAM表的读操作,不会阻

2021-12-08 23:25:22 1431

原创 Springcloud+security+oauth2+网关

网关整合 OAuth2.0 有两种思路,一种是授权服务器生成令牌, 所有请求统一在网关层验证,判断权限等操作;另一种是由各资源服务处理,网关只做请求转发。 比较常用的是第一种,把API网关作为OAuth2.0的资源服务器角色,实现接入客户端权限拦截、令牌解析并转发当前登录用户信息给微服务,这样下游微服务就不需要关心令牌格式解析以及OAuth2.0相关机制了。网关在认证授权体系里主要负责两件事:(1)作为OAuth2.0的资源服务器角色,实现接入方权限拦截。(2)令牌解析并转发当前登录用户信息(明

2021-11-25 22:15:07 2211

原创 oauth2整合security(密码模式)

oauth2 password 密码模式获取access_token流程密码模式(Resource Owner Password Credentials Grant)中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向"服务商提供商"索要授权。在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码。这通常用在用户对客户端高度信任的情况下,比如客户端是操作系统的一部分,或者由一个著名公司出品。而认证服务器只有在其他授权模式无法执行的情况下,才能考虑使用这种模式。(A)用户向客户端提

2021-11-21 15:26:29 1150

原创 oauth2整合security

什么是oauth2OAuth 2.0 是一个授权协议,它允许软件应用代表(而不是充当)资源拥有者去访问资源拥有者的资源。应用向资源拥有者请求授权,然后取得令牌(token),并用它来访问资源,并且资源拥有者不用向应用提供用户名和密码等敏感数据。当前有一个开放接口 该接口会被非常多的商户端来调用管理商户端开放接口平台设计第三方支付接口 或者 第三方知名平台接口微信 支付宝 等。流程1.申请一个appid 和 秘钥Appid=QQ账户—终生无法变化Apppwd改===QQ密码2.appi

2021-10-22 23:14:04 2856

原创 Mysql 调优总结

索引索引的目的在于提高查询效率,IO是非常高昂的操作,计算机操作系统做了一些优化,当一次IO时,不光把当前磁盘地址的数据,而是把相邻的数据也都读取到内存缓冲区内,因为局部预读性原理告诉我们,当计算机访问一个地址的数据的时候,与其相邻的数据也会很快被访问到。每一次IO读取的数据我们称之为一页(page)。具体一页有多大数据跟操作系统有关,一般为4k或8k,也就是我们读取一页内的数据时候,实际上才发生了一次IO,这个理论对于索引的数据结构设计非常有帮助。任何一种数据结构都不是凭空产生的,一定会有它的背景和使

2021-09-27 21:53:25 106

原创 Obect,对象,map,Json互相转换

加入依赖fastjson <!-- fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency>

2021-07-22 23:24:50 165

原创 SpringCloud分布式链路追踪Slenth和Zipkin集成

Sleuth介绍SpringCloud Sleuth主要功能就是在分布式系统中提供追踪解决方案。它大量借用了GoogleDapper的设计, 先来了解一下Sleuth中的术语和相关概念。Trace由一组Trace Id 相同的 Span 串联形成一个树状结构。为了实现请求跟踪,当请求到达分布式系统的入口端点时,只需要服务跟踪框架为该请求创建一个唯一的标识(即TraceId),同时在分布式系统内部流转的时候,框架始终保持传递该唯一值,直到整个请求的返回。那么我们就可以使用该唯一标识将所有的请求串联起来,

2021-07-19 23:05:54 258 1

原创 Mycat权限控制和监控工具

权限配置1、 user 标签权限控制目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。#server.xml配置文件添加新的用户user密码user,只有读的权限<user name="mycat"> <property name="password">123456</property> <property name="schemas">T

2021-07-18 23:43:45 355 2

原创 Mycat集群用 HAProxy + Keepalived

我们可以使用 HAProxy + Keepalived 配合两台 Mycat 搭起 Mycat 集群,实现高可用性。HAProxy 实现了 MyCat 多节点的集群高可用和负载均衡,而 HAProxy 自身的高可用则可以通过 Keepalived 来实现。安装配置 HAProxy#1准备好HAProxy安装包,传到/opt目录下#2解压到/usr/local/srctar -zxvf haproxy-1.5.18.tar.gz -C /usr/local/src#3进入解压后的目录,查看内核版

2021-07-18 22:46:42 337 1

原创 Mycat常用分片规则和全局序列

取模分片以 orders 表为例,分片键为customer_id,根据customer_id取模分别将数据插入dn1和dn2节点。修改schema.xml#为 orders 表设置数据节点为 dn1、dn2,并指定分片规则为 mod_rule(自定义的名字)<table name="orders" dataNode="dn1,dn2" rule="mod_rule" ></table>修改rule.xml#在 rule 配置文件里新增分片规则 mod_rule,并指定

2021-07-15 22:33:33 304 1

原创 Mycat中间件水平垂直切分,ER表,全局表

垂直拆分——分库一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布到不同 的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图:系统被切分成了,用户,订单交易,支付几个模块。如何划分表节点dn1建立customer表节点dn2建立orders, orders_detail dict_order_type 3张表建表语句#客户表 rows:20万CREATE TABLE customer( id INT AUTO_INCREMENT,

2021-07-13 00:03:59 183 1

原创 RocetMQ整合SpringBoot

前提本地已经安装RocketMQ安装RocketMQ的版本需要和springboot的版本一致本章演示springboot生产者和消费者demo## 生产者引入依赖 <!--rocketmq--> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-s

2021-07-06 22:53:18 143

原创 Mycat关于mysql数据库读写分离和主从复制

Mycat 是数据库中间件。1、数据库中间件中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的沟通。例子:Tomcat,web中间件。数据库中间件:连接java应用程序和数据库1.mycat安装 启动下载mycat 地址:http://dl.mycat.org.cn/解压到 /usr/local/目录下conf目录下三个重要配置文件①schema.xml:定义逻辑库,表、分片节点等内容②rule.xml:定义分片规则③server.xml:定义用户以及系

2021-07-05 22:18:50 198 1

原创 RocketMQ几种消费模式和RockertMQ事务处理机制

消息发送者步骤1.创建消费生产者producer,并制定生产者组名2.制定nameserver地址4.启动producer5.创建消费对象,制定主题topic、Tag和消息体6.发送消息7.关闭生产者producer发送同步消息发送同步消息 这种可靠性同步的发送方式使用的比较广泛,比如:重要的消息通知,短信通知。public class Producter { //发送同步消息 这种可靠性同步的发送方式使用的比较广泛,比如:重要的消息通知,短信通知。 public

2021-06-20 22:18:40 1211 1

翻译 RocketMQ集群搭建

1.RocketMQ角色集群特点NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。每个Broker与NameServer集群中的所有节点建

2021-06-09 22:45:35 113

原创 rocketMQ搭建

下载地址官网下载地址:http://rocketmq.apache.org/release_notes/release-notes-4.4.0/安装步骤1.将压缩包放在新建文件夹rocetmq中通过unzip 命令解压2.修改配置文件bin目录下的两个文件runbroker.sh和runserver.sh因为默认启动内存为8g这边修改小一点runbroker.shJAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"runse

2021-06-06 21:54:55 357

原创 Sentinel持久化 (本地和nacos)两种方法

简介每次微服务重新启动,在Sentinel设置的各种规则都会消失,所以需要进行持久化,本文介绍两种方法一种是持久化到本地,另外一种是持久化的nacos。持久化到本地这个很简单总共只有两步添加依赖,创建 SentinelPerFile在resource文件下创建META_INF/services文件夹,然后创建文档com.alibaba.csp.sentinel.init.InitFunc,在上面写上SentinelPerFile 的绝对路径<!--添加sentinel持久化到本地

2021-06-01 22:42:14 2271 2

原创 lamda8表达式总结

1. Steam流list转换mapList<User> userList = new ArrayList<User>();User user1 = new User(1L, "admin", 12, null, null, null, null, null, null);User user2 = new User(2L, "admin2", 13, null, null, null, null, null, null);User user3 = new User(3L,

2021-05-19 23:10:10 332

原创 SpringBoot异步线程使用

一. 什么是异步调用?异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行。二. 如何实现异步调用?多线程,这是很多人第一眼想到的关键词,没错,多线程就是一种实现异步调用的方式。在非spring目项目中我们要实现异步调用的就是使用多线程方式,可以自己实现Runable接口或者集成Thread类,或者使用jdk1.5以上提供了的Executors线程池。在spring 3.x之后,就已经内置了@Async来

2021-03-21 23:26:16 313

原创 Springboot+Spring-Security+JWT实现restful Api的权限管理以及token管理

前言其实挺早就想写一篇关于jwt的博文去好好总结一下之前踩过的坑了,但是事情有点太多了,一直没抽出时间来写,刚好现在有点时间可以好好静下来写一遍(可能)有点质量的博文吧,毕竟一直都是看别人的博文去学习,我也好好写一遍吧哈哈。看完这篇文章之后你可以知道如何使用springboot,springSecurity,jwt实现基于token的权限管理统一处理无权限请求的结果整理一下思路创建一个新工程时,我们需要思考一下我们接下来需要的一些步骤,需要做什么,怎么做。搭建springboot工程导入sp

2021-03-08 23:12:18 776

原创 Spring Security

一、spring security 简介spring security 的核心功能主要包括:认证 (你是谁)授权 (你能干什么)攻击防护 (防止伪造身份)其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户的身份,一个在spring security中一种过滤器处理一种认证方式。二、入门项目依赖 <!--security--> <dependency>

2021-02-21 23:59:36 229

原创 Java 反射和注解

1.获取反射的三种方法User user = new User();Class<User> c = User.class;Class<? extends User> aClass = user.getClass();Class<?> user1 = Class.forName("com.atguigu.huawei.entity.User");2.实体属性DeclaredFields // 获取实体所有属性 Class<User>

2021-02-11 01:03:05 129 1

原创 关于@Transactional事务注解的那些坑

1.@Transactional 注解只能应用到 public 可见度的方法上。 如果应用在protected、private或者 package可见度的方法上,也不会报错,不过事务设置不会起作用。2.自调也不会回滚3.对运行时异常进行事务回滚;如果要对非运行异常回滚则要用@Transactional(rollbackFor=Exception.class)。4.如果使用try catch的时候不会进行异常回滚,则需要收到回滚TransactionAspectSupport.currentTrans

2021-01-31 23:31:36 159

原创 通过反射注解实现数据脱敏

项目说明进行一个简单的脱敏实际业务中可能会考虑list map等@Desensitization:标记到需要脱敏的接口上@Target(value = {ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Desensitization {}@FiledDesensitization:标记到实体属性上//作用域 作用于方法和类上@Target(value = {Eleme

2021-01-31 23:14:21 726

原创 seata分布式事务解决方案

seata简介Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。seata官网:http://seata.io/zh-cn/下载地址:http://seata.io/zh-cn/blog/download.htmlSeata术语TC (Transaction Coordinator) - 事务协调者维护全局和分支事务的状态,驱动全局事务提交或回滚。TM

2021-01-24 22:06:11 221

原创 Alibaba Sentinel介绍

安装运行下载地址:https://github.com/alibaba/Sentinel/releases运行环境:java 8 ;8080端口号不能被占用通过java -jar ***.jar命令启动访问http://localhost:8080(用户名密码都是sentinel)初始化监控搭建sentinel8401工程<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache

2021-01-17 22:46:20 593

原创 Nacos集群部署

将nacos数据写入数据库在nacos/conf安装目录下找到nacos-mysql脚本,在数据库执行(安装数据库,版本要求:5.6.5+,但是8就会报错,解决办法https://www.cnblogs.com/ningwuyu/p/12923892.html)修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。spring.datasource.platform=mysqldb.num

2021-01-13 23:06:01 70

原创 Nacos注册中心和配置中心

Nacos相关官网springclpudalibaba官网:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.mdnacos下载地址:https://github.com/alibaba/nacos/releases官方网址:http://nacos.io什么是nacosNacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态

2021-01-09 23:29:58 592 3

原创 ElaticSearch工具类

import org.apache.http.HttpHost;import org.elasticsearch.client.RestClient;import org.elasticsearch.client.RestHighLevelClient;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurati

2021-01-08 00:46:21 196

原创 Spring Cloud Stream介绍

概念Spring Cloud Stream是构建消息驱动的微服务应用程序的框架。Spring Cloud Stream基于Spring Boot建立独立的生产级Spring应用程序,并使用Spring Integration提供与消息代理的连接。它提供了来自几家供应商的中间件的意见配置,介绍了持久发布订阅语义,消费者组和分区的概念。常用注解快速使用1. 生产者 <dependency> <groupId>org.springframework

2021-01-05 21:28:37 369

原创 多线程

1.Thread自定义线程类继承Thread类重写run()方法,编写线程执行体创建线程对象,调用start()方法启动线程写法一:public class ThreadDemo01 extends Thread { @Override public void run() {//run方法线程体 for (int i = 0; i <100; i++) { System.out.println("多线程被执行了"); }

2020-12-16 22:22:39 38

原创 SpringCloud网关GateWay过滤器

过滤器类型Spring Cloud Gateway 的 Filter 从作用范围可分为另外两种GatewayFilter 与 GlobalFilter。GatewayFilter :应用到单个路由或者一个分组的路由上。GlobalFilter :应用到所有的路由上。(优先级比上面一个高)局部过滤器局部过滤器(GatewayFilter),是针对单个路由的过滤器。可以对访问的URL过滤,进行切面处理。在Spring Cloud Gateway中通过GatewayFilter的形式内置了很多不同类型

2020-12-14 00:14:45 303

原创 SpringCloud:网关getway 路由转发

Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,

2020-12-10 23:29:44 3104 1

原创 springBoot整合fastdfs 上传下载

目录结构pom <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.26.7</version> </dependency>ymlserver: port:.

2020-12-07 23:45:55 190

空空如也

空空如也

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

TA关注的人

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