自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

代码蒋的博客

欢迎各位一起交流

  • 博客(61)
  • 收藏
  • 关注

原创 nacos 服务发现失败的问题

后面查找发现是依赖版本不对,spring-cloud-alibaba-dependencies在spring cloud官网上的最新版本不匹配spring boot 和 spring cloud的最新版本,解决方案俩种。2:找了下spring-cloud-alibaba-dependencies的版本,找到有个2022.0.0.0-RC1的版本,试了下可行,同样附可用版本​​​​​​。之后整合gateway也出现问题访问不了,解决方法像之前一样导入loadbalance的依赖就好了。检查发现没有缺少依赖。

2024-07-01 22:12:39 319

原创 数据库三大范式(详解)

范式是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。

2024-07-01 22:09:29 653

原创 Mysql--B+树--数据结构

在修改树的结构时,可能需要进行节点的分裂和合并操作,以保持树的平衡性。而在B+树中,叶子节点只存储关键字和指向数据的指针,而内部节点存储关键字和指向子节点的指针。通过树的平衡和有序性,B+树的查询操作可以在最坏情况下以O(log N)的时间复杂度完成,这意味着即使对于大量数据,查询也可以很快完成。例如,对于给定的范围条件,可以直接定位到范围内的第一个叶子节点,并沿着链表顺序遍历到最后一个满足条件的叶子节点,从而减少了搜索的次数。非叶子节点的指针:B+树的非叶子节点包含指向子节点的指针,并形成链表结构。

2024-06-30 20:55:11 607

原创 mysql默认存储引擎--innodb存储引擎(详解)

InnoDB是一个支持ACID事务、行级锁定和高并发的事务型数据库引擎,它与MySQL服务器紧密集成。以下是有关InnoDB存储引擎的要点总结:数据存储和索引:InnoDB将表和索引存储在一个表空间中,而不是像MyISAM表那样分别存储在不同的文件中。这个表空间可以由多个文件组成,并且在操作系统上没有2GB文件大小限制。事务支持:InnoDB支持完整的事务处理,符合ACID(原子性、一致性、隔离性和持久性)属性。它允许在事务中包含多个SQL语句,并提供回滚和提交功能。

2024-06-30 20:51:59 702

原创 Mysql--悲观锁、乐观锁

首先在谈到并发控制机制的时候,我们通常会提及两种重要的锁策略。悲观锁(Pessimistic Locking)和乐观锁(Optimistic Locking)。这两个是在处理并发的时候采取的不同思路。

2024-06-29 09:36:33 821

原创 Linux-如何查看服务器中的硬件配置信息

2.hdparm -I /dev/sda(替换 /dev/sda 为你的磁盘设备名):获取SATA硬盘的详细参数。3.smartctl -a /dev/sda(适用于S.M.A.R.T.支持的磁盘):获取硬盘健康状况和详细信息。在Linux服务器上查看硬件配置信息,可以使用一系列命令行工具。1.fdisk -l 或 lsblk -f:列出所有磁盘及其分区情况。

2024-06-29 09:32:58 595

原创 Gateway 路由(详解)

Gateway网关的路由功能可不是简简单单的“转发”请求,在请求到达网关再流转到指定服务之间发生了很多事儿,它不光可以拒绝请求,甚至可以“篡改”请求的参数,我们接下来就去看看路由这里面的门道。

2024-06-28 14:25:30 557

原创 Java基础知识(入门级开发必看)

数组是数据的集合,一个容器,用来存储任何类型的数据,包括原始数据类型和引用数据类型,但是一旦指定了数组的类型之后,就只能用来存储指定类型的数据。语法:数组名 = new 数据类型[外长度][内长度];,如:num = new int[4][3];语法:数据类型[][] 数组名;,如:int[][] num;语法:数组名[外下标][内下标] = 数据;,如:num[0][0]= 3;语法:数组名[外下标][内下标],获取指定下标是数据。语法:数组名[下标],获取指定下标是数据。

2024-06-28 14:22:46 961

原创 Redis缓存--热key 问题解决方案

热key问题是指:突然有几十万甚至更大的请求去访问redis上的某个特定key。这样会造成流量过于集中,达到Redis单实例瓶颈(一般是10W QPS级别),或者物理网卡上限,从而导致这台redis的服务器Hold不住,直到缓存服务器垮掉。要解决缓存中的热key问题也简单,主要分两步:监控热key和处理热key。上面的热key问题是面对高并发情况下,不得已的办法,涉及到两级缓存架构有点复杂了,实际情况主要看业务场景是否确实需要。

2024-06-27 08:58:18 969

原创 Spring框架中的单例Bean是不是线程安全的

ThreadLocal,底层使用map,当前线程的对象作为key,value则是你想让变成私有属性的变量,或实例对象。Dao层会操作数据库,但是每一个和数据库连接的connection,都会被数据库的事务机制管理,如果开启了Spring事务机制,那么也会被其管理。每一个线程到来后,都会去创建map,如果是线程池中的核心线程,这个线程不死亡,它每次执行到这里都会往map中存对象,可能导致内存溢出。,那么这个数就是不安全的,每次线程到来都会被执行一次,count值加一。,那么我们可以有以下几种办法,保证安全。

2024-06-27 08:52:55 237

原创 如何避免C++中的内存泄漏

C++11引入了智能指针(如std::unique_ptr、std::shared_ptr等),它们可以自动管理内存,当智能指针离开其作用域时,会自动释放所指向的内存,这大大降低了内存泄漏的风险。尽量使用C++标准库中的容器(如std::vector、std::string等),它们内部已经实现了复杂的内存管理逻辑,可以大大降低内存泄漏的风险。在极端情况下,内存泄漏可能导致程序崩溃。使用new或malloc等函数分配的内存,在不再需要时,如果没有使用delete或free释放,就会发生内存泄漏。

2024-06-26 15:32:38 807

原创 Java中的@AllArgsConstructor注解(详解)

简化构造函数的编写:通常情况下,Java 类中需要手动编写。注解可以自动生成一个包含所有实例变量的构造函数,减少编码量。提供的一个注解,用于自动生成一个包含所有参数的构造函数。对于@Service注解中也可使用。来初始化类的实例变量。

2024-06-26 14:13:51 380

原创 @AllArgsConstructor、@NoArgsConstructor、@RequiredArgsConstructor的区别以及在springboot常用地方

只要记得,那些字段需要赋值,就把它列进构造方法的参数里面即可。

2024-06-26 14:11:15 678

原创 Spring Event实现以及使用场景

1、SpringEvent 介绍 Spring事件(Spring Event)是Spring框架的一项功能,它允许不同组件之间通过发布-订阅机制进行解耦的通信。对应的设计模式是观察者模式。2、实现过程2.1 、发布事件定义 Spring Event 根类为org.springframework.context,ApplicationEvent。应用系统定义业务事件时继承ApplicationEvent,扩展业务属性。2.2、 事件发布 在sprin

2024-06-25 09:38:02 767

原创 SpringEvent (详解)

数据同步更新:可以使用 Spring Event 来实现数据的同步更新,例如,在分布式系统中,当某个节点的数据发生变化时,可以触发事件并将事件传递给其他节点,从而实现数据的同步更新。领域事件处理:可以使用 Spring Event 来实现领域事件的处理,例如,在订单管理系统中,可以使用 Spring Event 来处理订单状态的变化,从而触发相关的业务逻辑。总之,Spring Event 可以在应用程序中实现事件的传递和处理,提高应用程序的性能、并发能力和灵活性,同时也能够实现一些复杂的业务逻辑和功能。

2024-06-25 09:36:26 629

原创 Mybatis中BaseEntity作用

新建各种对象的时候,一般来说,有几个属性是所有对象共有的,比如说id,is_del,is_enable这些,然后设置一个基础对象,以后新建所有对象的时候都继承它,就省的每次都要写这些共有的属性了。

2024-06-20 21:32:49 436

原创 Mybatis配置(详解)

MyBatis将执行SQL语句的相关操作都封装成接口方法,用户通过Mapper文件或注解来配置对应的SQL语句,消除了样板式代码,使得代码更加简洁易懂。1.数据库连接管理:使用JDBC进行数据库操作时,需要手动获取数据库连接、释放数据库连接等操作,在高并发的情况下还需要面对连接池的问题。MyBatis采用了不同的架构和设计理念,封装了JDBC底层操作,并提供了更方便、高效的CRUD编程接口以及自动参数映射和结果集处理,大大简化了数据库开发。2、接口文件中定义方法,方法名与映射文件中的id一致,返回。

2024-06-20 15:13:50 805

原创 C/S、B/S架构(详解)

CS架构(Client-Server Architecture)是一种分布式计算模型,其中客户端和服务器之间通过网络进行通信。在这种架构中,客户端负责向服务器发送请求,并接收服务器返回的响应。服务器则负责处理客户端的请求,并返回相应的结果。CS架构通常用于构建大型的网络应用程序,如Web应用程序、电子邮件系统、数据库管理系统等。BS架构(Browser-Server Architecture)是一种基于Web的分布式计算模型,其中浏览器作为客户端,服务器作为服务端。

2024-06-19 11:27:43 1154

原创 什么是Linux挂载

当 U 盘插入 Linux 后,系统给 U 盘分配一个目录文件(比如 sdb1),就位于 /dev/ 目录下(/dev/sdb1),但无法通过 /dev/sdb1/ 直接访问 U 盘数据,访问此目录只会提供给你此设备的一些基本信息(比如容量)-n:在默认情况下,系统会将实际挂载的情况实时写入 /etc/mtab 文件中,但在某些场景下(例如单人维护模式),为了避免出现问题,会刻意不写入,此时就需要使用这个选项;想通过命令行的方式访问某个U盘中的数据,如图所示为Linux系统文件目录和U盘的文件系统目录,

2024-06-19 11:23:13 1034 1

原创 数据库引擎有哪些?

数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。 使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库。这包括创建用于存储数据的表和用于查看、管理和保护数据安全的数据库对象(如索引、视图和存储过程)。可以使用 SQL Server Management Studio 管理数据库对象,使用 SQL Server Profiler 捕获服务器事件。这是MySQL 5.5或更高版本的默认存储引擎。它提供了

2024-06-18 10:32:22 917

原创 索引(如何创建、如何用)

索引是一种数据结构,它保存了数据列的值和指向它们所在行的指针,以便在查询时快速定位匹配的行。索引可以理解为一本书的目录。当你需要查找一本书中的某一页内容时,你可以先查找目录,找到相关的章节和页码,然后直接翻到对应的页码。在数据库中,索引就是一张包含了列名和对应数据位置的表格。当你查询数据时,系统会先查找索引,然后根据索引指向的位置查找数据。

2024-06-18 10:06:29 1034

原创 Spring中Bean的作用域

singleton 是 Spring 容器默认的作用域,当一个 Bean 的作用域为 singleton 时,Spring 容器中只会存在一个共享的 Bean 实例,并且所有对 Bean 的请求,只要 id 与该 Bean 定义相匹配,就只会返回 Bean 的同一个实例。从图 2 的输出结果中可以看到,两次输出的结果并不相同,这说明在 prototype 作用域下,Spring 容器创建了两个不同的 Person 实例。Spring 容器在初始化一个 Bean 的实例时,同时会指定该实例的作用域。

2024-06-17 09:56:28 521

原创 Bean生命周期

xml与@Bean方式一样System.out.println("初始化方法");System.out.println("销毁方法");实例化后置处理器-实例化前实例化实例化后置处理器-实例化后属性填充(扫描@Autowired @Value @Resource 注解,完成自动注入)处理Awar接口初始化后置处理器-初始化前三种方式初始化初始化后置处理器-初始化后(会根据情况包装为代理类,即AOP)销毁。

2024-06-17 09:52:26 647

原创 kafka常用命令(详细)

说明:在${KAFKA_HOME}/config/server.properties中配置 delete.topic.enable 为 true,这样才能生效,删除指定的 topic主题。参数 --topic 指定 Topic 名,–partitions 指定分区数,–replication-factor 指定备份(副本)数。# LOG-END-OFFSET: 当前最高水位偏移量,也就是最近一个读取消息的偏移量,同时也是最近一个提交到集群的偏移量。–from-beginning:表示从头开始接收数据。

2024-06-16 10:41:46 983

原创 使用SpringBoot对接Kafka

不难看出,在Springboot中,使用kafka的关键在于, 它是 Spring 提供的 Kafka 生产者模版,用于向 Kafka 集群发送消息。并且把 Kafka 的生产者客户端封装成了一个 Spring Bean,提供更加方便易用的 API。它有三个主要属性::生产者工厂类,用于创建 KafkaProducer 实例。:默认主题名称,如果在发送消息时没有指定主题名称,则使用该默认主题。

2024-06-16 10:33:56 1691 1

原创 神仙级编程神器

IDE相对于编辑器来说,集成了编译、调试、语法高亮等软件开发工具和环境,这些功能都极其适用于开发者的日常工作中,而这些在Vim中都可以通过强大丰富的插件扩展完成,自由度极高,不仅装的一手好逼,还真真切切地用着爽。Atom兼容所有平台,拥有时尚的界面、 文件系统浏览器和扩展插件市场,这让都是它的表象,而它的核心优势,就是能够兼容Vim模式,这让一大批Vim的忠实用户直呼过瘾。作为文本编辑器,Vim最大的优势是速度和效率,这是其它编辑器难以企及的。最重要的是,它是免费的,光是这点就很吸引人了。

2024-06-14 09:33:29 350

原创 怎样设计一个消息队列?

对于来说,不管是 RocketMQ、Kafka 还是其他消息队列,**它们的本质都是:一发一存一消费。**下面我们以这个本质作为根,一起由浅入深地聊聊 MQ。

2024-06-14 09:11:22 789

原创 SpringBoot集成slf4j日志配置

-定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->首先,定义日志的名称:LOG_HOME;其次,设置输出value定义为日志的存储路径,日志都会存储在该路径下。这里勿在logback文件中使用相对路径,不管是 windows 系统还是 Linux 系统,日志存储的路径必须要是绝对路径。5.2 定义日志的输出格式-- 定义日志格式 -->首先,定义日志格式的名称:LOG_PATTERN其次,设置日志的具体格式value。"%d" 表示日期(也可以使用"%date");

2024-06-13 10:59:26 1224 3

原创 消息队列常见的使用场景

通过一个 MQ,Pub/Sub 发布订阅消息这么一个模型,A 系统就跟其它系统彻底解耦了。因此,我们需要去考虑一下我们的业务系统中是否有类似的场景,就是一个系统或者一个模块,调用了多个系统或者模块,互相之间的调用很复杂,维护起来很麻烦。但是其实这个调用是不需要直接同步调用接口的,如果用 MQ 给它异步化解耦,也是可以的,你就需要去考虑在你的项目里,是不是可以运用这个 MQ 去进行系统的解耦。

2024-06-13 10:49:31 831

原创 消息队列(完整版)

发送进程仍然无条件把消息写入队列的尾部,但接收进程却可以有选择地读取某个特定类型的消息中最接近队列头的一个,即使该消息不在队列头。相应消息一旦被读取,就从队列中删除,其它消息维持不变。发送进程把消息发送到队列尾部,接受进程从消息队列头部读取消息,消息一旦被读出就从队列中删除。消息被顺序插入队列中,其中发送进程将消息添加到队列末尾,接受进程从队列头读取消息。4、实例:以阻塞方式不断从消息队列(关键字为0x1234)中读取消息,并打印接收到的消息类型、长度和数据等,当接收到内容为“exit”的消息时程序结束。

2024-06-13 10:43:31 888

原创 MQTT和HTTP区别

今天突然想起来当时面试的时候被问了mqtt和http,自我感觉mqtt答的还行,http则是答的一团糟,所以打算整理一下,用来记录。它们都是属于应用层的协议,且都是基于tcp/ip协议栈。

2024-06-12 20:41:03 567

原创 MQTT详细讲解

MQTTMQTT(Message Queuing Telemetry Transport)是一种轻量级的通信协议,用于在设备之间传输消息。它通常用于物联网(IoT)和传感器网络中,可以在不同设备之间进行可靠的通信,而且资源消耗相对较低。MQTT基于发布/订阅模型,允许设备发布消息到特定主题(topic),并让订阅了相同主题的设备接收这些消息。这使得MQTT成为了在资源受限或需要实时通信的环境中非常有用的协议,比如监控系统、传感器网络、智能家居等领域。

2024-06-12 20:38:47 884

原创 RabbitMQ、RocketMQ、Kafka(详解三大MQ)

Kafka是由LinkedIn开发的一款高吞吐量、分布式的消息队列系统,它采用类似于发布/订阅的消息模型,将生产者产生的消息写入到日志文件中,消费者则通过拉取方式获取消息。总体来说,RabbitMQ、RocketMQ和Kafka都是非常优秀的消息队列系统,它们都具有高可靠性、高吞吐量、易于部署等特点。RabbitMQ提供了多种消息传递模式,如点对点、订阅和发布/订阅等,同时也支持多种编程语言,如Java、Python、Ruby等,可以轻松集成到不同的应用程序中。

2024-06-11 08:49:53 322

原创 RocketMq和RabbitMq的对比【主流消息队列】

首先整理这个文章是因为我正好有机会实战了一下rocketmq,的一个开源消息中间件。所以就与以往中rabbitmq进行小小的比较一下。这里主线的根据常见面试问题进行整理。

2024-06-11 08:46:59 657

原创 RabbitMq的五种工作模式

​ 这五种工作模式,可以归为三类:生产者,消息队列,一个消费者;生产者,消息队列,多个消费者;生产者,交换机,多个消息队列,多个消费者;

2024-06-10 09:26:09 649 1

原创 Linux系统下安装RabbitMQ超详细教程,建议收藏

官网RabbitMQ是一个开源的遵循AMQP协议实现的基于Erlang语言编写,支持多种客户端(语言),用于在分布式系统中存储消息,转发消息,具有高可用高可扩性,易用性等特征。

2024-06-10 09:19:03 928

原创 HTTP 协议详解(史上最全)

基本介绍:全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP 是一种应用层协议,是基于TCP/IP 通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。

2024-06-09 10:30:22 1099

原创 HTTP中响应状态码含义:200、302、304、404和500等

此代码与响应 GET 和 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉 Googlebot 某个网页或网站已经移动,因为 Googlebot 会继续抓取原有位置并编制索引。如果您在 Googlebot 尝试抓取您网站上的有效网页时看到此状态码(您可以在 Google 网站管理员工具诊断下的网络抓取页面上看到此信息),可能是您的服务器或主机拒绝了 Googlebot 访问。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,以及两个请求的差异列表。

2024-06-09 09:40:45 696

原创 SpringBoot自动装配原理(简易版)

自动装配就是把别人(官方)写好的config配置类加载到spring容器,然后根据这个配置类生成一些项目需要的bean对象。(小声逼逼:就像我们自己在项目了写的config配置类一样的,只不过这个是别人写好的,你什么都不用管)

2024-06-09 09:29:27 994

原创 MySQL数据库(详解)

数据库概述前置:LAMP LNMP企业架构,服务定位示例前言:数据:图片、视频、关系、音频、字符、字符串等等。数据的作用:持久化保存(磁盘)、高可靠(宕机不会丢失,安全性保障),高可用(HA冗余、备份),数据的快速提取( 目录、索引)。(1)面向Windows操作系统(2)简单、易用1.一款深受欢迎的开源关系型数据库2.Oracle旗下的产品3.遵守GPD协议,可以免费使用与修改4.特点(1)性能良好、服务稳定(2)开源、无版权限制、成本低(3)多线程、多用户。

2024-06-07 16:52:11 839

空空如也

空空如也

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

TA关注的人

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