自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Executor和AQS学习收藏】

【代码】【Executor和AQS学习】

2023-02-23 21:04:49 401

原创 框架源码学习收藏汇总

Springsecurity过滤器和方法拦截器 https://www.processon.com/view/link/61fe51221efad479c07aa7b7WebSecurity&HttpSecurity&AuthenticationManager三大构建者 https://www.processon.com/view/link/61ffe49f6376890390cf9e28SecurityConfigurer配置类继承体系(创建HttpSecurity) https://

2022-02-27 09:35:06 472

原创 security实现单点登录

文章目录学习链接auth-server引入依赖application.ymlAuthServerConfigSecurityConfigUserControllerlogin.htmlclient1引入依赖application.yml配置文件SecurityConfigClient1ApplicationHaloControllerindex.htmlclient2引入依赖application.yml配置文件SecurityConfigClient2ApplicationHaloControllerin

2024-05-20 22:13:20 946

原创 Spring Security整合Gitee第三方登录

当前==我们系统是有自己的一套用户体系==的,在前面通过security搭建了1个非常简单的登录示例。可是,用户要登录我们的系统,需要先注册账号,然后填写一大堆表单,包括:用户名、密码、验证码、性别、年龄、上传头像、绑定邮箱、绑定手机号等等一大堆,这就增加了用户使用我们系统的成本。因此可以使用比较可靠的第三方系统的用户身份登录我们的系统,但==用户仍然是第三方系统的用户==,==只是用户可以授权他在第三方系统的权限给我们系统,让我们系统可以访问这个用户在第三方系统中的用户信息、用户资源等==。这样用

2024-05-19 14:53:10 638

原创 父子级分类统计分类下数量sql

【代码】父子级分类统计分类下数量sql。

2024-05-19 13:01:37 124

原创 exists和case when使用

【代码】exists和case when。

2024-05-11 09:27:30 101

原创 vue3 + ts 快速入门(全)

vue3 + ts 快速入门

2024-05-03 20:59:02 1303

原创 webrtcP2P音视频通话(二)

文章目录webrtc实现视频会议示例客户端代码client.html服务端代码SignalWsServerWsConfig效果webrtc实现视频会议学习链接:webrtc实现视频会议,web多人视频通话,websocket通信,全部的代码:包括java的后端,vue的webrtc客户端前端代码,放在了微信收藏中vite配置https、nginx配置ssl、openssl本地搭建示例客户端代码client.html<!DOCTYPE html><html lang="en

2024-04-27 16:48:43 563

原创 netty继承类图

2024-04-21 12:14:47 111

原创 ByteToMessageDecoder&MessageToMessageDecoder&MessageToByteEncoder&MessageToMessageEncoder

ByteToMessageDecoder、MessageToMessageDecoder、MessageToByteEncoder、MessageToMessageEncoder

2024-04-20 20:23:51 198

原创 slice/retainedSlice/readRetainedSlice

【代码】slice/retainedSlice/readRetainedSlice。

2024-04-17 22:58:42 129

原创 mysql使用逗号分隔的一行数据转多行数据

【代码】mysql使用逗号分隔的一行数据转多行数据。

2024-04-15 20:53:22 1334

原创 kafka学习记录

在local文件夹下创建data目录,然后修改local下的config目录下的zookeeper.properties文件。编写zk.cmd和kafka.cmd,然后就可以双击启动zookeeper和kafka了。修改config目录中的server.properties文件。将文件夹名改为local。启动zookeeper。

2024-04-13 10:22:06 1447

原创 netty实现mqtt(IOT)

springboot+netty+mqtt服务端实现springboot+netty+mqtt客户端实现IOT云平台 simple(6)springboot netty实现IOT云平台基本的架构(mqtt、Rabbitmq)Springboot结合Netty对接硬件,实现主动发送报文和接受硬件报文(ModbusRTU或者TCP以及DTU)

2024-04-11 22:18:15 568

原创 im-system 第十一章

需求一:需要实时的更新好友的状态,有一个标识可以辨别在线和离线,在线和离线可以实时得到感知,手动修改忙碌啥的状态可以实时通知到好友需求二:打开群组等,可以获取到这一批人的在线状态,在线的会有一个在线的标识,和好友一样可以实时感知到用户下线了,可以实时的将在线修改为离线。

2024-04-05 21:43:13 262

原创 webrtcP2P音视频通话(一)

webrtcP2P通话流程webrtc多对多 mesh方案

2024-04-05 11:00:41 695

原创 im-system 第十章

章节介绍基本保证实时性有序性可靠性幂等性(保证消息不重复)消息已读&离线消息消息已读离线消息

2024-03-30 16:20:39 276

原创 im-system 第九章(下)

读扩散:举一个微博大V的例子,如果大V发一条消息,那么关注了大V的用户,就会从大V的队列中倒序拉取就可以获取到大V的消息了写扩散:也举一个微博大V的例子,如果大V发一条消息,每个用户都有自己的一个队列,大V会将消息写到所有订阅他的用户的队列中

2024-03-30 11:12:52 199

原创 im-system 第九章(上)

逻辑层需要接收到im tcp接入层发送过来的消息,逻辑层监听使用ChatOperateReceiver,tcp层收到来自sdk的消息后,将消息发送到mq,逻辑层接收到该消息。

2024-03-27 22:33:04 209

原创 im-system 第八章(下)

由于im服务支持用户在多个客户端登录,那么就会存在一个用户在多个端的数据同步问题。

2024-03-24 09:01:02 477

原创 im-system 第八章(上)

tcp服务实例注册到了zk,现在sdk需要获取到tcp服务的地址。

2024-03-23 12:10:09 1322 1

原创 im-system学习

【代码】im-system学习。

2024-03-19 22:52:30 332

原创 ByteToMessageDecoder & 简单实现netty文件传输

但是,注意:HeadContext中读取的数据可能包含了完整消息,也可能包含不完整的消息,这是不确定的,由底层网络传输决定,我们要做的就是区分出消息边界,然后将完整的消息交给后面的入站处理器,不然的话,入站处理器后面的业务拿到的不是1个完整的消息,就会出问题。而ByteToMessageDecoder就是其中1个比较重要的解码器,也叫一次解码器。因为tcp协议将数据以流的方式传输,但这样就需要自己在应用层手动解决字节数据边界的问题,即拆包和粘包的问题。将流式数据按照商定的协议规则区分的1个完整数据称为。

2024-03-17 20:47:42 423

原创 telnet命令使用

启动netty服务端后,使用如下cmd命令连接服务端,按enter,将连接到netty服务端。发送消息,再断开连接,再退出,netty服务端都能正常响应。

2024-03-17 10:19:28 397

原创 OGNL表达式

OGNL(Object-Graph Navigation Language的简称),对象图导航语言,通过表达式来实现:许多常用框架都集成了ognl,如mybatis、struts、spring、arthas等。这里仅以java环境下的代码进行演示。

2024-03-12 22:32:09 772

原创 netty草图笔记

【代码】netty草图笔记。

2024-03-09 17:14:38 396

原创 Spring EL表达式官方文档学习

SpEL(Spring Expression Language)是Spring框架中用于表达式语言的一种方式。它类似于其他编程语言中的表达式语言,用于在运行时计算值或执行特定任务。SpEL提供了一种简单且强大的方式来访问和操作对象的属性、调用对象的方法,以及实现运算、条件判断等操作。它可以被用于XML和注解配置中,可以用于许多Spring框架中的特性,如依赖注入、AOP、配置文件等。SpEL表达式可以在字符串中进行定义,使用特殊的语法和符号来表示特定的操作。

2024-03-03 10:43:47 1303 1

原创 Spring Cloud OpenFeign官方文档学习

Feign是一个声明式的web服务客户端,让编写web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡(也可以配合Spring Cloud CircuitBreaker、Spring Cloud LoadBalancer一起使用)。

2024-02-25 20:35:39 1284 1

原创 Spring Cloud Gateway官方文档学习

Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是用的Zuul作为网关。但是在2.x版本中,zuul的升级维护变得困难,SpringCloud最后自己研发了一个网关替代Zuul,那就是SpringCloud Gateway,使用gateway替代了zuul。Gateway是在Spring生态系统之上构建的API网关服务,基于Spring5、SpringBoot2.0和Project Reactor等技术。

2024-02-24 15:49:51 1403

原创 redis实现消息队列&redis发布订阅&redis监听key

消息队列MessageQueue),字面意思就是存放消息的队列。消息队列:存储和管理消息,也被称为消息代理(Message Broker)生产者:发送消息到消息队列消费者:从消息队列获取消息并处理消息(正常下单,我们需要将订单消息写入数据库。但由于秒杀并发访问量大,数据库本身并发处理能力不强,因此,在处理秒杀业务时,可以将部分业务在生产者这边做校验,然后将消息写入消息队列,而消费者处理该消息队列中的消息,从而实现双方解耦,更快的处理秒杀业务)

2024-02-18 22:21:22 1358 1

原创 redis分布式锁&redisson

利用set nx ex获取锁,并设置过期时间,保存线程标示释放锁时先判断线程标示是否与自己一致,一致则删除锁利用set nx满足互斥性利用set ex保证故障时锁依然能释放,避免死锁,提高安全性利用Redis集群保证高可用和高并发特性Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包含了各种分布式锁的实现。

2024-02-16 21:22:46 1637 1

原创 seata分布式事务

Tolerance(容错):在集群出现分区时,整个系统也要持续对外提供服务(而一旦对外提供服务的话,那么由于形成了独立分区,它并未与其它节点进行数据同步,那么如果此时它提供给外界服务,就会达不到一致性的要求,如果它阻塞外界的请求,等待网络恢复数据同步完成,又会达不到可用性的要求)在单体架构中,往往只有1个服务,1个数据库。每1个服务都是独立的,所以它们的事务也都是独立的,其中业务处理成功的服务都各自把自己的事务提交了,因此撤销不了;每1个服务都是独立的,当某个服务抛出了异常,其它服务并不能感知到;

2024-02-05 23:25:43 1163

原创 vue2学习笔记(2/2)

1. 初始化脚手架说明Vue 脚手架是 Vue 官方提供的标准化开发工具(开发平台)。最新的版本是 4.x。文档: https://cli.vuejs.org/zh/。具体步骤第一步(仅第一次执行):全局安装@vue/cli。npm install -g @vue/cli第二步:切换到你要创建项目的目录,然后使用命令创建项目vue create 项目名第三步:启动项目npm run serve 备注:如出现下载缓慢请配置 npm 淘宝镜像:npm confi

2024-02-03 11:47:29 942

原创 RabbitMq学习

然后,再次启动消费者,此消息又投递了过来,消费者方法又调用了1次,此时再以同样的配置和代码启动另外1个消费者,这个新启动的消费者没有收到这个消息(说明它不会将已投递但未确认的消息投递给这个新的消费者)。如下代码测试,当收到消息时,使用basicAck(消息投递标记,是否批量确认),批量确认指的是,将deliveryTag小于当前消息投递标记的消息一并确认,这样broker就会清理掉之前未确认的消息,这可以适用于某些情况:既然最后面的消息都确认了,之前的消息确不确认也就没啥关系的情况。

2024-01-27 23:03:03 1281 1

原创 mysql生成最近24小时整点&最近30天&最近12个月时间临时表

在统计的时候需要按时间来展示,但是数据的时间不一定是连续的,那就需要在代码里面生成连续的时间,然后按时间匹配到对应的数据,这样比较麻烦,可以在sql中使用连接查询与会话变量生成连续的时间,做成1个临时表,然后再来连接上数据表。

2024-01-22 17:06:10 723

原创 update语句中写in需要包一层

需要包1层,否则会报错。如果是select的话,就不用包,可以直接写。

2024-01-22 16:42:45 448

原创 下载csdn文章,并保存md笔记中的图片链接至本地

有的时候,拿到别人的md笔记,但是笔记中的图片又是以链接的格式给的,这个链接说不定后面就失效了,笔记也就看不到图片了。手动右键也可以保存图片,但是1个1个点太麻烦了,就练习一下正则的使用方法,把图片存下来。一行一行的读取原来的md文档,每一行使用正则拿到匹配的图片链接,并保存到本地。

2024-01-21 11:54:13 616

原创 MultipartFile上传文件异步处理时的java.io.FileNotFoundException

原因是,tomcat线程在请求完成处理后,会对临时文件进行清理,文件被清理后,自然就找不到对应的文件了,这个清理应该也是异步的,当对应的controller中的异步耗时长时,几乎必现。在接收到前端的文件上传请求时,在对应的controller方法中使用线程池异步处理文件相关的逻辑时,会。先将文件的字节数据保存下来,或者先把文件写到指定的位置,后面再从指定的位置读取。

2024-01-20 08:05:00 773

原创 Jsqlparser简单学习

【代码】Jsqlparser简单学习。

2024-01-14 10:47:31 685

原创 vue2使用Lottie

【代码】vue2使用Lottie。

2024-01-13 08:32:04 617

空空如也

空空如也

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

TA关注的人

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