- 博客(70)
- 资源 (5)
- 问答 (18)
- 收藏
- 关注

原创 spring security+jwt 登录认证
Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案( 用户认证与用户授权)。idea2022maven3.6+jdk1.8security 5.7.25.2新建工具类JwtUtilAuthUtil5.2新建组件类CustomAccessDeniedHandlerCustomAuthenticationEntryP
2022-06-11 01:10:57
803
原创 开源导出html表格项目-easyHtml
功能支持自定义表格标题支持自定义标题样式支持自定义列样式支持自定义行样式支持自定义文件名地址案例//默认样式@TestList column = List.of("姓名", "性别", "年龄","城市");i
2024-03-13 09:17:17
669
1
原创 这一年,再次出发
周末业余时间,自己喜欢上逛github,看一些自己比较感兴趣的开源项目,从路人,到第一次提交PR,参与开源项目,认识了很多开源社区的朋友们,让自己认识了一个更大的世界。看了一些书,明白了一些道理,没有完美的人生,不完美才是人生,接受自己的普通,要知行合一,知中行,行中知。
2024-01-03 12:17:14
481
原创 第三章 java内存模型与并发三大特性
JMM(java内存模型Java Memory Model)本身是一种抽象的概念,描述的是一组规则或规范。通过这组规范定义了程序中各个变量的访问方式。Java本身的运行是基于虚拟机的,在虚拟机的规范中,Java定义了一种内存模型,来屏蔽掉硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。Java 线程之间的通信由 Java 内存模型控制的,下图就是java内存模型的抽象结构。
2023-12-31 23:00:03
622
原创 第六章 事务
假设A与B账号都有10元,A账号转给B账号5元,这时A账号还剩5元,服务器忽然停电或者其他问题导致系统崩溃,B账号却没有成功收到转来的5元。(我们都知道,在对页进行读写时,不会立即刷到磁盘,而是加载到buffer pool,在某个时间点,才会刷新到磁盘)我们要保证数据库每个操作都要符合原子性、隔离性、一致性、持久性,这些操作称为事务。如何解决这个事情呢?
2023-12-30 14:17:13
415
原创 第二章 java并发机制的底层实现原理
monitorenter 指令是在编译后插入到同步代码块的开始位置,而monitorexit是插入到方法结束和异常处,jvm要保证每个monitorenter必须有对应的monitorexit与之配对,任何对象都有一个monitor关联,当且一个monitor被持有后,它将处于锁定状态,线程执行到monitorenter指令是,将会尝试获取对象锁对应monitor的所有权,即尝试获取锁。如果遇到线程的竞争,偏向锁就会释放,变为轻量级锁,当出现有自旋,长时间获取不到,就变为重量级锁。
2023-12-29 11:18:56
915
原创 第五章 B+树索引
数据量多,不知道从那个页开始查询,我们建个目录不就是可以解决这个没问题了,目录里面有主键与页映射关系,根据主键就能找到那个页,然后再页中通过二分法进行快速到某个记录了,如果条件不是主键 是其他列,同理,建一个其他列与页的映射关系,那么建立映射,也称为目录,也就是我们所说的索引。在很多页中查找,记录数据比较多,可能分布在多个页中,无论是以哪种条件进行查询,都无法定位到某个页,只从第一页开始遍历数据,如果表里面有1千多万,甚至过亿,查询效率就明显很低。无论我们创建多少索引,都是用的同一个索引树?
2023-12-28 20:55:53
1084
原创 第四章 InnoDB记录存储结构
innodb是一个将表中数据存储到磁盘上的存储引擎,而真正处理数据的过程是发生在内存中,因为读取硬盘太慢,所以需要把硬盘的数据加载到内存,会一条条记录进行读取吗?答案肯定不会,那样效率很低,会把这些记录放到一个载体,加载到内存,这个载体就称为页,页的一般大小是16KB。
2023-12-26 00:48:23
1294
原创 第一章 并发编程挑战
并发的目的是为了程序运行的更快,并不是启动更多的线程就能让程序最大限度地并发执行,但是做好并发编程,需要面临一下问题需要去解决,例如:上下文切换、死锁、资源限制问题。避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。使用最少得线程:比如任务很少,但是还是创建很多线程来处理。无锁并发编程:意思就是让不同的线程处理不同端的数据。尝试使用定时锁,使用lock.tryLock。CAS算法:根据进行数据比对,进行更新。协程:在单线程实现多任务的调度。避免一个线程同时获取多个锁。资源循环利用(线程池)
2023-12-25 15:10:04
431
原创 第三章 mysql字符集
我们知道计算机实际上存储的二进制数据,那么是如何存储字符串数据呢,是不是应该二进制与字符串之间有个映射关系,那么这个映射关系可以称为字符集将字符映射成二进制数据过程叫做,编码,反之称为解码UTF-8几乎收集当今世界各个国家、地区使用字符,通常编码一个字符需要1-4个字节GB2312主要是收集了汉字以及拉丁字母等注意UTF-8字符集对中文汉字,占用3个字节,对于GB2312字符集只占用2个字节,对于一些交互场景(比如:asr与华为语音平台进行交互),为了节省空间,可以改变字符集实现。
2023-12-25 11:36:02
462
原创 第二章 mysql配置
4.$MYSQL_HOME/my.cnf MYSQL_HOME 表示 我们设置环境变量, 如果没有设置,默认安装目录。日常生活中,我们学习一个新事物,该事物都有一些默认配置,如果我们改变原有配置,需要进行配置覆盖。只有版本号为5.7的mysqld程序才能使用这个配置选项组的配置。显示服务器程序运行状态,不能人为设置,同时具有全局与局部作用范围。启动mysqld_safe服务器配置。启动mysqladmin客户端配置。mysqld服务端程序配置。mysql客户端程序配置。
2023-12-25 09:44:09
424
原创 第一章 mysql相识
用于存储数据可以理解为一个存取数据的容器是客户端与服务端架构我们在客户端输入操作数据命令,通过某种方式发送到服务端,进行解析查询,返回数据给客户端。
2023-12-24 22:54:32
567
原创 flowable
定义为开发人员、系统管理员和业务用户提供紧凑且高效的工作流程和业务流程管理 (BPM) 平台。一个用 Java 编写的闪电般快速、经过尝试和测试的 BPMN 2 流程引擎。它是 Apache 2.0 许可的开源软件,拥有忠诚的社区。可以嵌入在 Java 应用程序中运行,也可以作为服务器、集群和云中的服务运行。它与 Spring 完美结合。凭借丰富的 Java 和 REST API,它是编排人类或系统活动的理想引擎其它文档:https: //www.flowable.org/jdk:支持java8-1
2023-11-06 22:55:11
1287
原创 消息队列解决方案
什么是消息队列消息队列是在消息的传输过程中保存消息的容器,简单点理解就是传递消息的队列,具备先进先出的特点,一般用于异步、解耦、流量 削锋等问题,实现高性能、高可用、高扩展的架构主要概念Producer:消息生产者,负责产生和发送消息到 Broker。Broker:消息处理中心,负责消息存储、确认、重试等,一般其中会包含多个 Queue。Consumer:消息消费者,负责从 Broker中获取消息,并进行相应处理应用场景。
2023-08-30 10:19:10
218
原创 redis缓存雪崩、穿透、击穿解决方案
关于缓存异常,我们常见的有三个问题:缓存雪崩、缓存击穿、缓存穿透。这三个问题一旦发生,会导致大量请求直接落到数据库层面。如果请求的并发量很大,会影响数据库的运行,严重的会导致数据库宕机。为了避免缓存异常带来的损失,我们需要了解每种异常的原因以及解决方案,提高系统的可靠性总结
2023-08-29 00:28:03
423
原创 限流解决方案
如果我们的接口设置了时间窗口内访问上限是20,那么当时间到第六秒的时候,这个时间窗口内的计数总和就变成了10,因为1秒的格子已经退出了时间窗口,因此在第六秒内可以接收的访问量就是20-10=10个;我们将窗口内的时间划分为五个小格子,每个格子代表1秒钟,同时这个格子还包含一个计数器,用来计算在当前时间内访问的请求数量。打个比方,如果当前时间窗口只有两秒,而访问请求全部集中在第一秒的时候,当时间向后滑动一秒后,当前窗口的计数量将发生较大的变化,拉长时间窗口可以降低这种情况的发生概率。
2023-08-25 14:51:05
266
原创 分布式定时任务
13、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等;14、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务;7、触发策略:提供丰富的任务触发策略,包括:Cron触发、固定间隔触发、固定延时触发、API(事件)触发、人工触发、父子任务触发;以及调度报表,如调度日期分布图,调度成功分布图等;
2023-08-25 14:29:56
635
原创 缓存解决方案
本地缓存: 指的是在应用中的缓存组件,其最大的优点是应用和cache是在同一个进程内部,请求缓存非常快速,没有过多的网络开销等,在单应用部需要集群支持或者集群情况下各节点无需互相通知的场景下使用本地缓存较合适,同时,它的缺点也是应为缓存跟应用程序耦合,多个应用程序无法直接的共享缓存,各个应用或集群的各节点都需要维护自己的单独缓存,对内存是一种浪费。分布式缓存:指的是与应用分离的缓存组件或服务,其最大的优点是自身就是一个独立的应用,与本地应用隔离,多个应用可直接的共享缓存。
2023-08-23 15:16:48
1150
原创 分库分表解决方案
由用户方配置的分片策略则更加灵活,常用的使用行表达式配置分片策略,它采用Groovy表达式表示,如: t_user_$->{u_id % 8} 表示t_user 表根据u_id模8,而分成8张表,表名称为 t_user_0 到 t_user_7。包含分片键和分片算法,由于分片算法的独立性,将其独立抽离。真正可用于分片操作的是分片键 + 分片算法,也 就是分片策略。分成如下三张表:t_order_1,t_order_2,t_order_3。将采用范围分片算 法,复合分片算法用于分片键有多个复杂情况。
2023-08-22 22:55:29
194
原创 分布式事务
面向微服务架构的高性能、易用的分布式事务解决方案概念事务协调员(TC):维护全局和分支事务的状态,驱动全局提交或回滚。事务管理器(TM):定义全局事务的范围:开始全局事务、提交或回滚全局事务。资源管理器(RM):管理分支事务工作的资源,与 TC 通信以注册分支事务和报告分支事务的状态,并驱动分支事务的提交或回滚。生命周期TM 要求 TC 开始一项新的全局交易。TC 生成一个代表全局事务的 XID。XID 通过微服务的调用链传播。
2023-08-22 15:06:26
605
原创 分布式ID
3.工作机器id 占用10bit,其中高位5bit是数据中心ID,低位5bit是工作节点ID,做多可以容纳1024个节点。4.序列号 占用12bit,每个节点每毫秒0开始不断累加,最多可以累加到4095,一共可以产生4096个ID。这个对雪花算法进行改造,其实我们一般系统,要不那么高的并发,可以减少位数,这样就能达到前端19位以内的条件。2.时间戳 占用41bit,精确到毫秒,总共可以容纳约69年的时间。第一位 占用1bit,其值始终是0,没有实际作用。分布式系统,用什么做为主键呢?
2023-08-20 00:04:45
684
原创 分布式锁解决方案
但是这个过程中一旦发生。这时客户端2 来尝试加锁的时候,在新的master节点上也能加锁,此时就会导致多个客户端对同一个分布式锁完成了加锁。如果把房子比作资源,通俗的来讲,我无论在那个城市生活,这个房子我先租的,再没有退房的前提下,别人都不能用。缺陷在哨兵模式或者主从模式下,如果 master实例宕机的时候,可能导致多个客户端同时完成加锁。判断该锁是否存在,存在则返回锁的租约时间,不存在设置过期时间,锁加1(就是锁重入)master节点宕机,主备切换,slave节点从变为了 master节点。
2023-08-19 21:32:42
477
原创 springcloud gateway 介绍与使用
该项目提供了一个用于在 Spring WebFlux 之上构建 API 网关的库。旨在提供一种简单而有效的方法来路由到 API,并为它们提供横切关注点,例如:安全性、监控/指标和弹性。
2023-04-26 15:44:07
476
原创 C++基础入门
所谓数组,就是一个集合,里面存放了相同类型的数据元素**特点1:**数组中的每个数据元素都是相同的数据类型**特点2:**数组是由连续的内存位置组成的数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};数据类型 数组名[ ] = { 值1,值2 ...};示例//定义方式1//数据类型 数组名[元素个数];//利用下标赋值//利用下标输出//第二种定义方式//数据类型 数组名[元素个数] = {值1,值2 ,值3 ...};
2023-04-14 13:36:57
458
原创 nacos源码服务注册
这次版本是一次重大升级优化,由原来(临时服务)服务注册tcp改成grpc方式,减少资源消耗,服务推送由udp也改为grpc。springboot自动装载,是不是引入nacos依赖,就可以实现服务注册功能。这时,你需要clean 再install 最后reimport,就不会问题。首先让我去实现一个服务注册,我们如何去做?按照上面的思路去分析注册大概过程就很清晰了。启动时nacos没有以单例模式启动也会报错。本文章是分析的是nacos版本2.2。是不是项目启动的时候进行服务注册。idea 运行源码找不到类。
2023-04-10 15:41:50
1223
原创 nacos学习
欢迎来到 Nacos 的世界!Nacos /nɑ:kəʊs/ 是 Dynamic Naming and ConfigurationService的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构。
2023-04-10 09:28:26
439
原创 springboot +websocket 不同的实现方案
介绍了 netty方式 stomp方式netty-socketio等方式使用websocket协议文章结尾还有在线客服案例
2023-03-29 11:18:35
2472
原创 xxl-job介绍与使用
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
2023-03-02 09:51:40
803
原创 架构模式介绍
高性能数据库集群的第一种方式是“读写分离”,其本质是将访问压力分散到集群中的多个节点,但是没有分散存储压力;第二种方式是“分库分表”,既可以分散访问压力,又可以分散存储压力。背景读写分离分散了数据库读写操作的压力,但没有分散存储压力,当数据量达到千万甚至上亿条的时候,单台数据库服务器的存储能力会成为系统的瓶颈,主要体现在这几个方面:数据量太大,读写的性能会下降,即使有索引,索引也会变得很大,性能同样会下降。数据文件会变得很大,数据库备份和恢复需要耗费很长时间。
2023-02-28 00:05:29
113
原创 elasticsearch介绍与快速应用
我们选择最新操作elasticsearch方法,通过java api client 操作java 8 或者更新版本elasticsearch版本7.17支持jackson 或者JSON-B库。
2023-01-12 09:58:55
452
原创 grpc 介绍与整合springboot
grpc是谷歌的一种高性能、开源的通用型RPC框架;支持多达十几种常用语言,它的原理是通过 IDL(Interface Definition Language)文件定义服务接口的参数和返回值类型,然后通过代码生成程序生成服务端和客户端的具体实现代码,这样在 gRPC 里,客户端应用可以像调用本地对象一样调用另一台服务器上对应的方法。
2022-12-09 14:29:49
525
登录jira ,导航栏找不到创建项目这个选项
2024-03-12
rubyMine debug报错
2023-12-05
rubyMine 在sdk 中找不到rails
2023-12-04
spring security 退出会删除redis 保存的session?
2023-10-25
easyEcexl 导出,并且显示进度条
2023-10-10
单点登录 spring-authorization-server
2023-08-11
Spring Authorization Server 实现单点登录
2023-08-07
浏览器作为oauth2 客户端与服务器应用程序作为oauth2客户端
2023-08-04
security+oauth2
2023-08-04
security+oauth2
2023-07-30
token被截获,如何防止
2023-05-11
session-id是放在cookies中还是放在header中更安全
2023-05-07
websocket服务器支持多大并发
2023-04-28
pgAdmin4 sql可视化窗口,新增列无法编辑
2023-04-03
stomp客户端连接报400
2023-03-30
redisson 序列化
2023-03-29
springboot 集成 netty-socketio实现IM系统
2023-03-27
实现在线客服聊天使用websocket协议
2023-03-23
springboot websocket session 超时触发 推送客户端
2023-03-09
websocket实现对话
2023-03-08
多线程执行代码逻辑。不能同时
2023-03-02
采用rocketMq消息中间件去延迟消费处理
2023-03-01
elasticsearch新建索引库问题
2023-02-28
tomcat线程与java自定义线程
2023-02-27
rocketmq消息积压,能处理实时消息传递消费吗
2023-02-27
nacos 剔除服务A与重新注册服务A会同时出现吗
2023-02-09
resttemplate 调用服务,入参为null,会被过滤掉
2023-01-29
amazonS3支持批量上传吗
2023-01-04
idea 提交部分代码无反应,
2022-10-31
异常处理,是自己处理,还是抛出去
2022-10-31
极光推送与websocket
2022-10-18
amazonS3批量上传图片
2022-09-16
.sbt 报错,下载失败
2022-09-06
如何调用长连接http接口
2022-09-03
rabbitmq什么时候发送的ack
2022-09-02
nacos注册原理,心跳机制时怎么实现的
2022-07-25
修改密码成功后,如何让token失效
2022-04-13
多个系统共用一个登录账号问题
2022-04-13
hmily解决分布式事务问题
2022-01-03
naven依赖问题,依赖jar已导入,import进不来了
2021-12-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人