自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 netty实现webSocket握手处理并添加响应头

webSocket. Sec-WebSocket-Protocol 的鉴权

2023-09-08 11:15:38 1431 5

原创 Springboot+netty+websocket 实现单聊群聊及用户鉴权

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、配置二、Netty服务1. WsServer构建2. ChannelInitializer构建3. 自定义消息处理器4. 全局用户Session管理5. 客户端与服务端消息实体6. 消息构建工具类7. 鉴权处理器三, 整合spring前言技术栈: SpringBoot+netty+websocket+mybatis-plus一、配置Maven<parent> <groupId.

2022-04-05 13:18:20 2772 3

原创 网络协议总结(TCP,UDP,HTTP,HTTPS)

TCP/IP总结一. 网络模型1. OSI七层2. TCP/IP五层OSI是参考标准TCP/IP是事实标准二. TCP/UDP1. TCP头部结构TCP端口号序列号: 它是TCP报文段的一数字编号,为保证TCP可靠连接,每一个发送的数据段都要加上序列号。建立连接时,两端都会随机生成一个初始序列号。而确认号是和序列号配合使用的,应答某次请求,则返回一个确认号,它的值=对方请求序列号+1标志位:SYN: 建立连接消息标志FIN: 关闭通知消息ACK: 应答消息窗口: 窗口大

2021-12-22 22:24:23 1131

原创 RocketMQ(双主双从集群搭建+DashBorad搭建)

RocketMQ(双主双从集群搭建+DashBorad搭建)文章目录RocketMQ(双主双从集群搭建+DashBorad搭建)1 环境准备1.1 两台虚拟机1.2 配置环境变量1.3 修改Host1.4 创建存储位置1.5 配置文件修改1.6 IP配置2 启动2.1 启动namesrv集群2.2 启动broker集群1 环境准备1.1 两台虚拟机先准备两台虚拟机,我这里使用的是一台阿里云的服务器,一台腾讯云的服务器将rocketMQ进行安装解压,不会的朋友可以参考之前的文章RocketMq的安装

2021-12-14 20:52:45 2352

原创 RocketMQ安装

RocketMQ安装文章目录RocketMQ安装一、安装1.1官网下载1.2 解压缩二、启动1.1启动namesrv1.2 修改JVM启动参数1.3 启动broker三、测试生产者推送消息消费者拉取消息四、关闭命令一、安装1.1官网下载官网地址1.2 解压缩-d 指定解压到那个文件夹下unzip -d /home/xzq/software/ rocketmq-all-4.9.2-bin-release.zip二、启动1.1启动namesrvnohup sh bin/mqnamesr

2021-12-10 00:05:11 1490

原创 redis数据结构详解(基本数据结构,位图,HyperLogLog,GeoHash,布隆过滤器)

redis基础数据结构文章目录redis基础数据结构1. 五种基本数据结构1.1 String1.2 list1.3 hash1.4 set1.5 zset二、使用步骤1.引入库2.读入数据总结参考书籍: 老钱的redis深度历险1. 五种基本数据结构1.1 StringString是Redis最简单得数据结构,它的内部表示就是一个字符数组。字符串结构使用比较广泛,一个常见得用途就是用来缓存用户信息,我们将用户信息使用序列化技术转换成字符串,然后将序列后得字符串放进redis来缓存。Redis

2021-12-06 22:55:43 153

原创 DDD架构简单介绍

DDD架构文章目录DDD架构1. DDD分层架构2. 四层模型总结1. DDD分层架构 DDD(领域驱动设计)由Eric Evans最先提出,目的是对软件所涉及到的领域进行建模,以应对系统规模过大时引起的软件复杂性的问题。从领域知识中提取和划分一个一个的子领域(核心子域,通用子域,支撑子域)并在子领域上建立模型,再重复以上步骤,这样周而复始,构建出一套符合当前领域的模型。 依靠领域驱动设计的思想,通过事件风暴建立领域模型,合理划分领域逻辑和物理边界,建立领域对象及服务矩阵和服务架构图,定义符合DD

2021-12-04 19:10:12 5254

原创 Nacos使用手册

Nacos入门文章目录Nacos入门1. Nacos介绍1.1 Nacos是什么?1.2 安装1.3 更换外围数据库1.4 启动服务1.5 namespace and dataId and Group二 Java使用1.1 nacos-client 使用1.1.1 配置管理1.1.2 服务注册及发现1.2 springboot 整合使用1.3 springCloud 整合使用1.4 dubbo整合使用1. Nacos介绍1.1 Nacos是什么?分布式服务中间件其核心功能:服务注册与发现服务

2021-12-01 21:43:06 1762

原创 常用算法总结(二分,冒泡,选择,插入,快排)

排序算法总结(二分,冒泡,选择,插入,希尔,快排)文章内容均来自bilibili黑马视频,本文仅记录于总结。文章目录排序算法总结(二分,冒泡,选择,插入,希尔,快排)1. 二分查找1.1 实现步骤1.2 代码实现1.3 优化1.4 面试题2. 冒泡排序2.1 v1版本2.1 v2 版本 减少比较次数2.1 v3 版本 减少不必要的冒泡2.1 最终版本 减少比较次数PLUS3. 选择排序3.1 冒泡VS 选择4. 插入排序4.1 插入VS 选择5. 快速排序5.1 单边循环 lomuto 洛

2021-11-27 21:06:18 310

原创 redis分布式锁实践 并实现看门狗锁续期机制

redis分布式锁最佳实践(并实现锁续期机制)文章目录redis分布式锁最佳实践(并实现锁续期机制)1. 分布式锁是什么?2. setnx 和 AQS state3. jedis完成分布式锁得设计#3.1 v1版本3.2 v2版本3.3 v3版本4. 测试1. 分布式锁是什么?在单体项目进入分布式项目之后,各个业务被拆分成多个微型服务,核心微服务还可以搭建集群,那么搭建集群之后问题就来了,以前是单体项目,如果涉及共享资源得一些操作我们可以使用ReentrantLock来进行加锁,那么如今微服务集群项目

2021-11-27 13:06:44 2251

原创 Jedis使用lua脚本完成令牌桶限流

Jedis使用lua脚本完成令牌桶限流文章目录Jedis使用lua脚本完成令牌桶限流一、lua脚本的简单语法二、令牌桶限流1. 构思2. 实现三、Jemeter压测工具测试一、lua脚本的简单语法KEYS[1]ARGV[1]这两个参数分别代表了我们传入的key数组的一号元素和arg数组的一号元素下面来看一个简单的使用eval “return redis.call(‘get’,KEYS[1])” 1 one首先eval 是解析Lua脚本的关键字,字符串中的就是写的lua脚本,其中redis

2021-11-26 21:55:43 1151 2

原创 reids 发布订阅模型实践

reids 发布订阅模型实践及Stream实践文章目录reids 发布订阅模型实践及Stream实践1. pub/sub2. pub/sub Java代码实践1. pub/subredis支持发布订阅模型 订阅者订阅通道,发布者朝通道发布消息,订阅者从通道中接受消息。下面演示一个简单的案例:消费者订阅通道 channelOne生产者推送消息消费者获取到信息2. pub/sub Java代码实践订阅者package com.xzq;import redis.clients.

2021-11-24 22:17:25 406

原创 手撸Spring系列一IOC搭建

手撸Spring系列一IOC搭建文章目录手撸Spring系列一IOC搭建前言1. IOC的核心之BeanFactory1.1 BeanFactory初体验1.2 Bean定义,注册,获取二、使用步骤1.引入库2.读入数据总结前言 该项目从bugstack 小傅哥哪里学的。 本文只是记录编写过程和自己的一些心得体会。1. IOC的核心之BeanFactory1.1 BeanFactory初体验首先我们需要思考spring的IOC容器的核心在哪里,先不管它的设计是多么的复杂,代码是怎样的

2021-11-24 21:16:37 337

原创 SpringBoot整合Netty

SpringBoot整合Netty文章目录SpringBoot整合Netty1 搭建项目1.1 项目目录1.2 pom文件2. 构建Netty服务2.1 NettyServer2.1 NettyHandler3. 整合springboot3.1 application.yml3.2 启动类4. 测试1 搭建项目1.1 项目目录1.2 pom文件 <dependencies> <dependency> <groupId

2021-11-22 09:51:35 3352

原创 计算机网络笔记二

计算机网络笔记二bilibili王道考研笔记文章目录计算机网络笔记二1. 物理层1.1 基本概念1.2 数据通信1.3 数据通信相关术语1.4 三种通信方式1.5 数据传输方式2. 码元,波特,速率,带宽2.1 码元2.2 速率 和 波特2.3 带宽3. 奈氏准则与香农定理3.1 失真3.2 奈氏准则3.3 香农定理4. 编码与调制4.1 基带信号与宽带信号4.2 基带信号与宽带信号5. 物理层传输介质5.1 传输介质及分类5.2 双绞线5.3 同轴电缆5.4 光纤5.5 非导向性传输介质6. 物理层设

2021-11-18 23:01:02 1293

原创 Netty网络编程系列一(I/O模型,BIO,NIO.AIO)

Netty网络编程系列提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录Netty网络编程系列前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文

2021-11-18 18:05:28 269

原创 计算机网络笔记一

系列文章目录bilibili王道考研笔记一、速率相关性能指标1.1 速率速率即数据率或称数据传输率或比特率。连接在计算机网络上的主机在数字信道上传送数据位数的速率单位:b/s,kb/s,Mb/s,Gb/s,Tb/s与存储容量的不同例如手机电脑使用64GB,128GB,1TB这里的大写B是字节 1byte=8 bit1.2 带宽带宽原本指某个信号具有的频带宽度,即最高频率与最高频率之差,单位是赫兹(HZ)计算机网络中,带宽用来表示网络的通信线路传送数据的能力,通常是指单位时间内从网

2021-11-17 15:25:23 230

原创 事务详解+Spring事务失效场景

事务详解文章目录事务详解前言一、事务概念二、本地事务二、Spring事务1,JDBC事务2,事务的传播行为3,编程式事务4,声明式事务5,Spring事务失效的场景及解决办法1,抛出检查异常导致事务不能回滚2,业务方法内自己try-catch异常导致事务不能正确回滚3,Aop切面顺序导致事务不能正常回滚4,非public方法导致的事务失效5,父子容器导致的事务失效6,调用本类方法导致传播行为失效7,多线程并发下@Transactional三、分布式事务SeataAT模式总结前言提示:这里可以

2021-11-16 13:43:40 340

原创 手撸一个动态数据源的Starter 完整编写一个Starter及融合项目的过程 保姆级教程

手撸一个动态数据源的Starter!文章目录手撸一个动态数据源的Starter!前言一、准备工作1,项目目录结构2,POM文件二、思路三、编写代码1,定义核心注解 Ds2,定义切面3,定义DataSourceContextHolder4,定义抽象动态数据源模板类及其实现子类5,定义application.yml配置类6,定义AutoConfiguration6,定义DataSourceCreator创建器四 实测准备1,数据库准备2,表准备3,项目准备五 实测总结前言该项目借鉴于苞米豆的开源项目d

2021-11-13 19:36:55 932

原创 设计模式之委派模式

文章目录前言案例一案例二总结前言委派模式(Delegate Pattern) 不属于Gof23种设计模式,委派模式的基本作用就是负责任务的调度和分配,跟代理模式很像,可以看做是一种特殊情况下的静态的全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式在Spring中应用的非常多,最常见的DispatcherServlet就用到了委派模式。生活中常见的委派场景也有很多,例如老板(Boss)给项目经理(Leader)下达任务,项目经理会根据实际情况给每个员工派发任务,待员工把任务完成,再有项目

2021-04-23 10:03:21 107

原创 使用工厂模式+单例模式实现[连接池]应用

文章目录前言Pool抽象父类数据库连接池实现类前言本章介绍使用工厂模式+单例模式实现数据库连接池,基于池思想的各种实现我们接触的很多,如数据库连接池,redis连接池,线程池等等,在第三方框架下我们只需要书写好一下配置即可完成对池的使用。而我们抽象出来的池一般都是为了解决频繁创建某资源而造成的服务器压力,我们将创建某资源的步骤交给池管理,我们只需要调用即可。今天我们说的便是数据库连接池,数据库连接池中存放的都是Connection对象,所以说池对象中必然是要有一个容器来存放这些对象的,而这个容器

2021-04-19 18:42:47 529

原创 设计模式之工厂模式

什么是工厂模式?在90年代经济蓬勃发展的时候,全国起了无数个小作坊(简单工厂),再后来慢慢走上正规化之后,开始有了流水线(工厂方法),再后来产业链进行细分开始有代工厂(抽象工厂)如富士康。项目代码同样也是由简到繁一步一步迭代而来,但对于调用者来说却越来越简单了。这章讲述工厂模式下的各种分支并配合代码Demo来由浅入深探的理解。文章目录一、简单工厂模式二、工厂方法模式抽象工厂模式总结一、简单工厂模式简单工厂模式(Simple Factory Pattern)是由一个工厂对象决定创建哪一种产品类的

2021-04-16 15:47:38 71

原创 原生JDBC操作数据库

JDBC操纵数据库在各种ORM框架盛行的时代,想必我们很多都已经忘了如何在不借助框架的基础上,使用原生的JDBC来和数据库打交道了,对于初级程序员来说,使用原生的JDBC编码可以使我们更加全面的了解框架底层下的操作逻辑,在原生编码中我们也需要自己去封装一些工具类,使用一些设计模式来简化我们操纵数据库的步骤,在这一步步封装的过程中可以提高我们的编程思想,所以了解原生JDBC操控数据库也是很有必有得,接下来就让我们从一份最原始的JDBC到自己封装的工具类及模板来实现的全步骤,话不多说直接上代码!文章目录JD

2021-04-16 10:03:07 664

原创 设计模式之原型模式

文章目录原型模式的基本概念引子浅拷贝深拷贝深拷贝之成员变量的clone()深拷贝之序列化实现总结原型模式的基本概念原型模式(protoType) :指用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象原型模式是一种创建型设计模式,允许一个对象再创建另外一个可制定的对象,无需知道如何创建的细节原理: 通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝他们自己来实施创建,即对象.clone()浅拷贝和深拷贝浅拷贝: 对于基本数据类型的变量,浅拷贝

2021-04-14 13:15:29 176 1

原创 设计模式之策略模式

设计模式之策略模式前言在日常生活中我们时常会根据环境的不同选择不同的方式去解决问题,例如我们吃饭如果是吃中餐那么我们需要使用‘筷子’,如果我们吃西餐,那么我们需要使用‘刀叉’,筷子和刀叉可以抽象为我们所选择使用的策略用来解决我们的用餐问题。、在软件开发中我们也时常会根据业务的不同,环境的不同,客户的不同来进行各种各样的算法或者策略去解决问题。我们可能会进行大量的if else操作,这种硬编码的方式明显过于生硬,不符合面向对象编程,违背了开闭原则。策略模式封装算法的变化,对外提供一个上下文

2021-04-10 17:27:58 70

原创 设计模式之单例

设计模式之单例模式什么是单例模式?单例模式的优势?常见的几种单例模式什么是单例模式?单例模式,顾名思义,即全局只有一个类对象实例特点: 1,单例类只能有一个实例 2,单例类必须自己去创建自己的唯一实例 3,单例类必须对外提供获取实例的接口单例模式的优势? 单例模式确保该类只有一个实例,并自行实例化向整个系统提供这个实例,选择单例模式为了避免不一致状态, 防止政出多头,一定程度上,也解决了服务器资源紧张问题。常见的几种单例模式饿汉式即在类初始化时就创建静态实例对象,天生是线程安全

2021-04-10 10:41:59 202 6

空空如也

空空如也

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

TA关注的人

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