自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot 集成 RocketMQ

在现代的微服务架构中,消息队列已经成为一种常见的异步处理模式,它能解决服务间的同步调用、耦合度高、流量高峰等问题。RocketMQ是阿里巴巴开源的一款消息中间件,性能优秀,功能齐全,被广泛应用在各种业务场景。

2023-11-20 00:07:30 1277

原创 docker安装RocketMQ

RocketMQ主要由Producer、Broker、Consumer三部分组成,其中Producer负责生产消息,Consumer负责消费消息,Broker负责存储消息。Broker在实际部署过程中对应一台服务器,每个Broker可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的Broker。

2023-11-12 23:18:28 915

原创 深入了解 RocketMQ:高性能消息中间件

RocketMQ主要由Producer、Broker、Consumer三部分组成,其中Producer负责生产消息,Consumer负责消费消息,Broker负责存储消息。Broker在实际部署过程中对应一台服务器,每个Broker可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的Broker。MessageQueue用于存储消息的物理地址,每个Topic中的消息地址存储于多个MessageQueue中。ConsumerGroup由多个Consumer实例构成。

2023-11-01 00:04:39 944

原创 Linux用户和权限

什么是root用户(超级管理员)无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。使用chown命令,可以修改文件、文件夹的所属用户和用户组

2023-10-18 17:53:19 255

原创 常用消息中间件

AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。

2023-10-12 14:49:10 261

原创 RabbitMQ常见的交换机类型

配置文件消息中的路由键(routing key)如果和 Binding中的binding key 一致,交换器就将消息发到对应的队列中。路由键与队列名完全匹配,如果一个队列绑定到交换机要求路由键为“dog”,则只转发routing key 标记为“dog”的消息,不会转发 “dog.puppy”,也不会转发“dog.guard” 等等。它是。接着我们先使用下(直连型交换机),创建然后写个简单的接口进行消息推送。

2023-10-11 00:12:07 909

原创 深入了解 RabbitMQ:高性能消息中间件

消息队列消息指的是两个应用间传递的数据。数据的类型有很多种形式,可能只包含文本字符串,也可能包含嵌入对象。“消息队列(Message Queue)”是在消息的传输过程中保存消息的容器。在消息队列中,通常有生产者和消费者两个角色。生产者只负责发送数据到消息队列,谁从消息队列中取出数据处理,他不管。消费者只负责从消息队列中取出数据处理,他不管这是谁发送的数据。二、为什么使用消息队列主要有三个作用异步处理场景说明: 用户注册后,需要发注册邮件和注册短信,传统的做法串行的应用解耦。

2023-10-05 21:56:16 922

原创 minio分布式文件存储

基本介绍什么是MinIOMinIO 是一款基于 Go 语言的高性能、可扩展、云原生支持、操作简单、开源的分布式对象存储产品。基于 Apache License v2.0 开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如 NodeJS、Redis、MySQL 等。MinIO特点。

2023-10-04 20:38:05 3232 3

原创 阿里云OSS图片存储

阿里云对象存储 OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供最高可达 99.995 % 的服务可用性。多种存储类型供选择,全面优化存储成本。这样可以节省很多资源,不需要把文件发送到controller层,直接发送给OSS就可以。将配置数据放在application.yml中。项目中OSS的使用可以改进为。上传文件demo (微改)对应的java代码(简写)

2023-10-02 23:55:07 262

原创 nginx 反向代理 负载均衡 动静分离

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,在微服务架构中,Nginx作为客户端请求的第一层中间件,通常将请求转发代理给网关。一般Nginx运用的主要场景有反向代理、负载均衡、动静分离等,在微服务架构如下:其特点是占用内存少,并发能力强,运行还很文档,几乎可以做到7x24h不间断运行,即使运行数个月也不需要重启。而且,还能在服务不间断的情况下进行软件版本的升级。Nginx代码完全用C语言编写,官方数据测试表明能够支持高达50000个并发连接数的响应。

2023-09-26 11:58:11 674

原创 全局异常处理+JSR303验证

我们在日常开发中,避不开的就是参数校验,有人说前端不是会在表单中进行校验的吗?在后端中,我们可以直接不管前端怎么样判断过滤,我们后端都需要进行再次判断,为了安全。因为前端很容易拜托,当测试使用PostMan来测试,如果后端没有校验,不就乱了吗?肯定会有很多异常的。今天小编和大家一起学习一下JSR303专门用于参数校验的,算是一个工具吧!JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator。

2023-09-18 16:24:12 174

原创 正则表达式

可以设置返回 0-9 a-z A-Z。表示前面的字符出现0次或者一次。*表示前面的字符出现任意次。是定义匹配的字符的范围。

2023-04-03 11:50:25 260

原创 分布式session问题

session 共享问题

2023-02-18 21:38:16 97

原创 git命令

git命令入门

2022-12-27 21:08:12 1382

原创 linux 虚拟机网络配置

NAT模式 (network address transfer) 虚拟机和主机构建一个专用网络,并通过虚拟网络地址转换(NAT)设备对IP进行转换。虚拟机通过共享主机IP可以访问外部网络,但外部网络无法访问虚拟机。

2022-09-10 14:32:39 923

原创 String Table

字符串常量池中不会存储相同内容的字符串String 的String Pool 是一个固定大小的Hashtable,默认值大小长度是1009。如果放进String Pool 的String非常多,就会造成Hash冲突严重,从而导致链表会很长,而链表长了直接会造成的影响是当调用String.intern时性能会大幅下降。......

2022-08-10 17:50:12 378

原创 ElasticSearch 基础概念

ElasticSearch 基础概念

2022-08-10 17:47:28 432

原创 网关解决跨域问题

什么是跨域问题:跨域: 指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。同源策略: 是指协议,域名,端口都要相同,其中有一个不同都会产生跨域;跨源资源共享(CORS) - HTTP | MDN解决跨域 方法一使用nginx 部署为同一域解决跨域方法二 配置当次请求允许跨域...

2022-05-09 15:45:44 1551

原创 Java8新特性

1.概述1.1为什么学? ●能够看懂公司里的代码 ●大数量下处理集合效率高(并行流) ●代码可读性高 ●消灭嵌套地狱 例如: java8之前代码: //查询未成年作家的评分在70以上的书籍由于洋流影响所以作家和书籍可能出现重复,需要进行去重 List<Book> bookList = new ArrayList<>(); Set<Book> uniqueBookValues = new Hashset&lt...

2022-04-29 01:16:52 644

原创 JWT安全认证原理,执行流程,结合Springboot项目

什么是JWT令牌点击:官网 JSON Web Token (JWT) 是一个开放标准 (RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以 JSON 对象的形式安全传输信息。此信息可以验证和信任,因为它是数字签名的。JWT 可以使用密钥(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。JWT能做什么1.授权 这是使用JWT的最常见方案。一旦用户登录,每个后续请求将包括JWT(Token),从而允许用户访问该令牌允许的路由,服务...

2022-03-30 19:36:49 559

转载 并查集(合并)

547. 省份数量难度中等有n个城市,其中一些彼此相连,另一些没有相连。如果城市a与城市b直接相连,且城市b与城市c直接相连,那么城市a与城市c间接相连。省份是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个n x n的矩阵isConnected,其中isConnected[i][j] = 1表示第i个城市和第j个城市直接相连,而isConnected[i][j] = 0表示二者不直接相连。返回矩阵中省份的数量。...

2022-03-24 19:28:36 159

转载 二进制枚举

2212. 射箭比赛中的最大得分难度中等18收藏分享切换为英文接收动态反馈Alice 和 Bob 是一场射箭比赛中的对手。比赛规则如下:Alice 先射numArrows支箭,然后 Bob 也射numArrows支箭。 分数按下述规则计算: 箭靶有若干整数计分区域,范围从0到11(含0和11)。 箭靶上每个区域都对应一个得分k(范围是0到11),Alice 和 Bob 分别在得分k区域射中ak和bk支箭。如果ak>= bk,那么 Al...

2022-03-23 11:39:08 99

转载 怎样去理解Linux用户态和内核态

在Linux技术讨论中经常会用户态和内核态术语脱口而出,可你们想过吗?用户态和内核态代表是什么?本片文章,就来谈一谈这个话题。我们先来看一张Linux整体架构图。从图上我们可以看出来通过系统调用将Linux整个体系分为用户态和内核态(或者说内核空间和用户空间)。那内核态到底是什么呢?其实从本质上说就是我们所说的内核,它是一种特殊的软件程序,特殊在哪儿呢?控制计算机的硬件资源,例如协调CPU资源,分配内存资源,并且提供稳定的环境供应用程序运行。用户态就是提供应用程序运行的空间,为了使应用程

2022-03-08 15:46:51 148

原创 linux安裝Docker (Centos7)

1.官网安装手册Install Docker Engine on CentOS | Docker Documentation2.确实是centos7 及以上版本查看命令: cat /etc/redhat-release3.安装c语言环境yum -y install gccyum -y install gcc++4. 删除旧版本 (看官网)yum remove docker \ docker-client \

2022-02-11 14:25:03 142

原创 滑动窗口问题

76. 最小覆盖子串难度:困难给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。注意:对于t中重复字符,我们寻找的子字符串中该字符数量必须不少于t中该字符数量。 如果s中存在这样的子串,我们保证它是唯一的答案。示例 1:输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"示例 2:输入:s = "a", t = "a...

2021-12-28 19:07:07 181

原创 二分查找需要注意点

475. 供暖器难度 中等冬季已经来临。你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。在加热器的加热半径范围内的每个房屋都可以获得供暖。现在,给出位于一条水平线上的房屋houses和供暖器heaters的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。说明:所有供暖器都遵循你的半径标准,加热的半径也一样。示例 1:输入: houses = [1,2,3], heaters = [2]输出: 1解释: 仅在位置2上有一个供暖器。如果我们将加热半...

2021-12-20 19:37:17 104

原创 堆排序(likou 912)

912. 排序数组难度中等给你一个整数数组nums,请你将该数组升序排列。示例 1:输入:nums = [5,2,3,1]输出:[1,2,3,5]示例 2:输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= nums.length <= 50000 -50000 <= nums[i] <= 50000使用堆排序的方式解决这个问题:怎么实现的呢,其实思想就是利用数组表示堆(完全...

2021-11-11 15:17:22 396

原创 双向链表+哈希表(likou146 LRU缓存机制)

146. LRU 缓存机制难度 : 中等运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value)如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当...

2021-11-10 11:46:45 194

原创 单调栈(likou84. 柱状图中最大的矩形、likou85)

84. 柱状图中最大的矩形难度 :困难给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。示例 1:输入:heights = [2,1,5,6,2,3]输出:10解释:最大的矩形为图中红色区域,面积为 10第一种暴力解法:就是向左右找大于等于自身高的最长宽度,这样求得的一定就最优解,不过时间复杂度太高,题目通过不了 public int largestRectangleAr..

2021-10-26 19:31:41 141

原创 摩尔投票法(likou229、主要元素)

以前面试度小满的时候有个面试官问我一个类似的问题​​​​​面试题 17.10. 主要元素数组中占比超过一半的元素称之为主要元素。给你一个整数数组,找出其中的主要元素。若没有,返回-1。请设计时间复杂度为O(N)、空间复杂度为O(1)的解决方案。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5由于题目要求时间复杂度 O(n)O(n) 和空间复杂度 O(1),因此符合要求的解法只有 Boyer-Moore 投票算法。Boyer-Moore 投票...

2021-10-22 16:08:33 129

原创 前缀树(likou208、likou211)

摸鱼:​​​​​​mm​​​​​​​211. 添加与搜索单词 - 数据结构设计难度 :中等请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。实现词典类WordDictionary:WordDictionary()初始化词典对象 void addWord(word)将word添加到数据结构中,之后可以对它进行匹配 bool search(word)如果数据结构中存在字符串与word匹配,则返回true;否则,返回fals...

2021-10-20 19:07:27 127

原创 正则表达式匹配(likou10题)

摸鱼:10. 正则表达式匹配难度 : 困难给你一个字符串s和一个字符规律p,请你来实现一个支持'.'和'*'的正则表达式匹配。'.'匹配任意单个字符 '*'匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例 1:输入:s = "aa" p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。示例 2:输入:s = "aa" p = "a*"输出:true解释:因为 '*' 代表可以匹配...

2021-10-19 19:06:48 276

原创 sql语句中union的用法

union联合的结果集不会有重复值,如果要有重复值,则使用union allunion会自动压缩多个结果集合中重复的结果,使结果不会有重复行,union all 会将所有的结果共全部显示出来,不管是不是重复。union:会对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序。union all:对两个结果集进行并集操作,包括重复行,不会对结果进行排序。1.sql Union用法select 字段1 from 表名1 Union select 字段2 from 表名2.....

2021-08-22 22:35:56 112764 2

转载 SQL语句中 join用法

left join 中 on 后面加条件 where 和 and 的区别1、 on条件是在生成临时表时使用的条件,它不管and中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左表的记录)了,条件不为真的就全部过滤掉。现在有表a和表b...

2021-06-14 23:11:55 326

转载 设计模式之工厂模式

工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。本文从一个具体的例子逐步深入分析,来体会三种工厂模式的应用场景和利弊。...

2021-06-06 17:09:35 207

原创 设计模式之桥接模式

手机操作问题现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图:

2021-06-02 20:15:55 67

转载 设计模式之适配器模式

现实生活中的适配器例子泰国插座用的是两孔的(欧标),可以买个多功能转换插头 (适配器) ,这样就可以使用了。

2021-06-01 11:53:56 73

原创 Redisson分布式锁

为什么使用分布式锁为了保证一个方法在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLcok或synchronized)进行互斥控制。但是,随着业务发展的需要,原单体单机部署的系统被演化成分布式系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题。使用Redis分布式锁.

2021-05-25 18:17:39 492

转载 Java泛型

1.什么是泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将原来的类型具体参数化。2.举个栗子List arrayList = new ArrayList();arrayList.add("aaaa");arrayList.add(100);for(int i = 0; i< arrayList.size();i++){ String item = (String)arrayList

2021-05-22 21:41:41 54

原创 ArrayList和LinkedList的区别

ArrayList:特点: 基于动态数组,连续内存存储,适合下标访问(随机访问),扩容机制:因为数组长度固定,超出长度存数据时需要新建数组,每次扩容为原先数组长度的1.5倍,然后将老数组的数据拷贝到新数组,如果不是尾部插入数据还会涉及到元素的移动(往后复制一份,插入新元素),使用尾插法并指定初始容量可以极大提升性能、甚至超过linkedList (需要创建大量的node对象)当创建ArrayList数组时,可以指定初始数组长度: public ArrayList(int i...

2021-05-08 18:45:40 320 1

空空如也

空空如也

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

TA关注的人

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