自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis主从+哨兵+集群分片

Redis哨兵(Sentinel)是Redis的高可用性解决方案,用于监控和管理Redis主从复制集群。哨兵系统可以自动检测主节点的故障,并在主节点不可用时,自动将一个从节点提升为新的主节点,确保系统的持续可用性。对上面的定义进行解析:他就是监控主节时候发生故障,如果发生故障,从节点通过投票选举的方式将一个从库变为主库,继续服务于系统Redis 集群是 Redis 提供的分布式解决方案,用于解决单机 Redis 容量有限、吞吐量瓶颈以及高可用性问题。

2025-05-23 17:22:41 773

原创 适合java程序员的Kafka消息中间件实战

我们在学习kafka时,都是基于大数据的开发而进行的讲解,这篇文章为java程序员为核心,助力大家掌握kafka实现。

2025-05-07 20:47:39 1541

原创 Redis持久化:

Redis 持久化是指将 Redis 内存中的数据保存到硬盘等持久化存储介质中,以便在 Redis 服务器重启或出现故障时能够恢复数据,保证数据的可靠性和持续性。Redis 提供了两种主要的持久化方式:RDB(Redis Database)持久化和 AOF(Append Only File)持久化。

2025-05-03 19:45:32 725 1

原创 Redis基础知识:

我们在项目中使用String时,使用这种方式我们在redis视图工具中看见的就是层级结构我们在新增数据时可以直接使用setnx:如果存在就插入,失败就是返回0。

2025-04-13 14:28:27 628

原创 两小时拿下RocketMQ实战

本篇文章使用的是RecketMQ4.8.0。为了在开始学习是,我们可以更加关注与产品的本身,我们采用原生的依赖:在学习基础之后我们再结合实际开发来学习这个MQ产品。

2025-03-03 11:03:37 1332

原创 MybatisPlus实战:

假设我们现在的条件是将我们现在表中,id值为1,2,11 的人的年龄增加iint add(一个变量)岁,这样的话是不是是还是没有办法直接使用我们的mp自带的函数了,所以需要自定义SQL片段。06.核心功能-自定义SQL_哔哩哔哩_bilibili首先是创建我们的where条件,使用我们的MybatisPlus:自定义Sql//测试自定义SQL@Testids.add(1);ids.add(2);//使用框架设置查询的条件int age=10;//使用自定义的sql。

2025-02-28 17:40:49 726

原创 Git常见命令--助力开发

现在我们每次的push操作因为再windows系统中因为是有这个凭据管理器,所以不需要每次都输入密码,但是如果是别的系统的话,每次的提交都是需要输入密码的,这个其实是很不方便的。这里会出现选项,让开发者选择是选择你的还是选择别人的,这个具体的选择的方式就是自己做主了。如果是B公司与A公司合作,首先是将A公司的数据放到自己的远程库中,如果是B的员工提交代码的话,休要A的项目负责人审核。如果不是团队中的人,是不可以直接提交代码的,需要项目负责人的拉取,现在拉取的方式还在查找。这是你自己的远程库的地址。

2025-02-22 22:02:53 1158

原创 MySQL核心应用

主键约束是一种数据库约束,它指定表中的一列或多列组合的值在整个表中必须是唯一的,并且不能为NULL。包含主键约束的列称为主键列,当使用多列组合作为主键时,这些列的组合值必须唯一。我们再次创建表t_students,但是这次设置我们的student_id为主键。student_id BIGINT primary key COMMENT '学生编号',student_name VARCHAR(32) COMMENT '学生名称', -- 我们使用的编码格式是utf-8。

2025-02-12 10:24:40 937

原创 自定义线程池应用加源码分析

/核心线程数//最大线程数//非核心线程无任务时等待时间//时间单位//阻塞队列BlockingQueue<Runnable> workQueue, //线程池工程ThreadFactory threadFactory, //拒绝策略//校验我们的参数是否合法。

2025-02-06 23:56:35 736

原创 java——io流

文件:文件就是保存数据的地方,而文件在程序中是以流的形式来操作的。输入输出概念:输入输出是以我们的java程序(内存)来定义的。

2025-01-16 09:53:26 1108

原创 java基础——继承

当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器。假设父类没有提供无参构造,则必须使用super()指名使用父类的那个构造器初始化父类。super() this() 都只能放在构造器的第一行,因此两个方法不能共存在一个构造器,如图,现在this()是在第二行,直接出现错误。它允许创建一个新的类(子类或派生类),这个新类可以继承现有类(父类或超类)的成员(包括属性和方法)。因为是公有化的,所以没有出现错误,至于结果是null,是因为都是通过无参构造函数创建,值都是默认值。

2025-01-13 15:53:03 807

原创 MySQL索引

数组在使用非聚簇索引查找数据时,因为非聚簇索引在叶子节点处存放的是聚簇索引的值,他会获取叶子节点上面聚簇索引的值,再根据获取的值在聚簇索引的上获取到查询的值。这就是回表。构建索引的完全可以是多个字段。所以,将表上的多个列组合起来进行索引我们称之为联合索引或者复合索引,比如index(a,b)就是将a,b两个列组合起来构成一个索引。但是这是叶子节点上面存储的数据就不再仅仅只是聚簇索引的值,而是:a这个列,b这个列,和聚簇索引的值(多数情况下就是主键)

2024-12-15 09:39:01 1418

原创 RabbitMQ的几个概念

注:这篇文章会随时添加新的内容,就是将RabbtiMQ中的概念添加到这里。助力大家的学习。

2024-12-12 19:48:29 748

原创 阻塞队列系列-ArrayBlockingQueue和LinkedBlockingQueue

阻塞队列(BlockingQueue)是一种特殊的队列,它在插入和移除元素时支持阻塞操作。具体来说,当队列为空时,尝试从队列中获取元素的线程会被阻塞,直到队列中有元素为止;而当队列满时,尝试向队列中添加元素的线程也会被阻塞,直到队列中有空位为止。

2024-12-11 16:56:18 1940

原创 MVCC讲解:

全称是多版本并发控制.他是为了提升并发能力的技术,解决了数据库操作是的读写和写读问题,注意他不能解决写写问题。如果是写写问题就还是互斥的形式。在MVCC内部是给予InnoDB存储引擎的undo log 记录的信息实现的,每个事务读到的数据的版本可能是不一样的。在这个过程中,事务只能是看到自己创建事务时酷照的数据,和事务本身操作的数据。MVCC 只是在RC(读已提交)和RR(读未提交)的隔离级别时使用。

2024-12-08 19:16:08 1043

原创 牛客面试必刷-单链表题解

这是一个链表常见的题的集合:小编的代码可能并不是优秀的,但是还是便于理解的,很直观,希望能带给大家一个新的角度看待链表问题。

2024-12-08 17:22:48 990

原创 InnoDB的重点内容

在MySQL的存储引中,最常见的就是InnoDB和MyISAM在这两个引擎中,功能最为强大的就是InnoDB。在这一专题里面为大家讲解一下InnoDB的重点内容。

2024-11-27 16:40:50 1024

原创 MySQL数据类型与存储结构

补充知识,事务隔离的等级:READ UNCOMMITTED(读未提交) :这是最低的隔离级别,允许事务读取其他事务未提交的数据,可能导致脏读、不可重复读和幻读问题。​READ COMMITTED(读已提交) :该级别确保事务只能读取到已经提交的数据,可以避免脏读,但仍然可能出现不可重复读和幻读问题。​REPEATABLE READ(可重复读) :这是MySQL的默认隔离级别,它保证在同一事务中多次读取同一数据时,看到的是相同的数据版本,即使其他事务在此期间修改了这些数据。

2024-11-26 00:15:00 1270

原创 详解ConditionObject

通俗的语言,入门级的讲解,小编带你一篇文章彻底掌握ConditionObject。

2024-11-12 20:37:31 739

原创 并发编程三大特性--可见性和有序性

可见性是指在数据在收到一个线程的修改时,其他的线程也可以得知并获取修改后的值的属性。这是并发编程的三大特性之一。为了提高cpu的利用率,cpu在获取数据时,不是直接在主内存读取数据,而是在告诉缓存里面,但是在多核CPU下,每个CPU的高速缓存是独立的,也就造成了如果CPU修改自己高速缓存的内容,但是数据没有同步给主内存或这是其他缓存,就造成了数据的不一致。大家都知道我们的java是乱序执行的。但是在多线程的时候,乱序执行就会造成数据的问题。

2024-11-03 22:23:12 737

原创 详解ReentrantLock--三种加锁方式

全程为AbstractQueuedSynchronizerAQS中文被称为队列同步器AQS是一个抽象的接口。他是JUC包下的基类。JUC包下的很多功能都是基于AQS实现的。AQS里面维护了一个由volitile修饰的state变量和内置的FIFO队列完成线程的排队和加锁操作。volitile维护的state保证了可见性和有序性,在设置state是,里面提供了compareAndSetState()方法。CAS方式保证了原子性。

2024-11-02 22:03:35 840

原创 idea连接数据库出现错误的解决方式

The server has terminated the handshake. The protocol list option (`enabledTLSProtocols`) is set, this option might cause connection issues with some versions of MySQL. Consider removing the protocol list option in the JDBC driver.

2024-10-30 22:38:23 1861 1

原创 大厂高频算法考点--单调栈

单调栈就是借助一个栈,在仅仅使用当前栈的条件下,时间复杂度是N(n),将每个节点最有离这他最近的大于或者是小于的数据返回,将已知数组的元素放到栈里。再自我实现的代码里面我们使用数组实现栈结构,将我们的运算时间再次优化。739. 每日温度 - 力扣(LeetCode)给定一个整数数组,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。

2024-10-19 19:26:11 909

原创 第二章:Nacos的快速入门

这一专栏是应用专栏,对于原理性的不过多赘述,源码的部分小编也会逐渐更新,敬请期待。Nacos/nɑ:kəʊs/是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

2024-10-19 14:46:31 930

原创 并发编程三大特性--原子性

原子性是指一个操作或者是一系列操作是不可以分割或者是被打断的,这些操作必须全部成功,不然就全部失败,在并发编程里,原子性保证了一个线程的操作是不收到另一个线程的影响的。CAS的全程是compare and set /swap 比较并放置/交换 他在替换内存中某一个位置的值是先去比较是否与期望的值相同,如果相同则交换,如果不同就不交换CAS是cpu层面的原语,它保证了并发编程的原子性,在java种,为我们提供Unsafe类去操作他。JVM将方法实现为CAS的汇编指令。

2024-10-17 16:00:45 1446

原创 大厂高频算法考点--双指针

数指针是一个很常见的技巧,为大家提供了leetcode的练习题和答案。

2024-10-14 16:45:09 421

原创 设计模式一--单例设计模式

其核心思想是确保一个类在整个系统中只有一个实例,并提供一个全局访问点来访问这个唯一实例。这种模式的主要目的是控制类的实例化过程,确保在整个应用程序中,一个类只有一个实例存在。

2024-10-14 14:35:21 337

原创 Mybatis框架参数传递

对于基本数据类型(如 int, float, double 等)和它们的包装类(如 Integer, Float, Double 等),MyBatis 会直接获取它们的值。//如果不同的话 在得到值得时候,将获取值的#{}之中放入的是map的键的值。使用对象传入时如果里面有内置对象,那么内置对象的属性需要进行下面的处理。如果方法有多个参数,可以通过参数的索引或@param注解来获取值。对于 Map 类型,MyBatis 会根据提供的键名来获取值。//还是注意的点就是map键的值必须与属性的值相同。

2024-10-13 23:00:49 848

原创 大厂高频算法考点--滑动窗口

一.滑动窗口的使用结论:这是一个保持不回退的方式,类似与贪心的。下面为大家准备六道类型题,为大家准备了答案和测试连接。

2024-10-12 16:00:46 1103

原创 RabbitMQ--死信队列

以上的内容就是说明死信队列是为了解决死信的问题,什么是死信呢:就是消息在发送之后可能因为种种原因没有被消费的消息就变成了死信。我们为了不将死信直接删除,就设置了死信队列。1.消息被消费者拒绝2.发送的消息带有时间,时间到了还是没有被消费3.队列有生存时间,队列生存时间到了,它里面未来得及被消费的消息4.队列到达最大长度之后,进入的消息小编使用的是java8 + SpringBoot2.4.2 2.2消息被消费者拒绝2.3:为消息设置过期时间2.4为队列设置有效期ttl2

2024-10-11 20:11:15 937 2

原创 SpringBoot操作RabbitMQ

test

2024-10-10 21:48:57 672

原创 第一章:基本概念

微服务(Microservices)是一种现代软件架构模式,旨在将大型应用程序分解为一组小型、独立的服务。每个服务都围绕特定的业务功能进行设计、开发、部署和扩展,并通过轻量级的通信机制(如HTTP、gRPC等)进行交互。Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务解决方案,旨在简化分布式应用的开发过程。它基于Spring Cloud编程模型,融合了阿里巴巴的开源中间件产品,如Nacos、Sentinel、Seata等,为Java开发者提供了一整套微服务架构的工具和框架。

2024-10-09 23:03:49 1062

原创 RabbitMQ通讯方式第四讲:Routing 和Topic

Routing方式和Topic方式两种方式的区别只是在routingKey的上,所以我们的第四讲将讲解着两个内容;

2024-09-27 20:57:38 715

原创 RabbitMQ通讯方式第三讲:Publish/Subscribe

In the在上一个教程中,我们创建了一个工作队列。工作队列背后的假设是,每个任务只交付给一个工作者。在本部分中,我们将做一些完全不同的事情——我们将向多个消费者传递消息。这种模式称为“发布/订阅”。在介绍中我们可以发现,这次我们将要向多个队列去发送消息,一个发送者将绑定多个队列。​"").在这里我们需要创建的交换机的类型是:fanout创建的java语句://3. 构建交换机BuiltinExchangeType.FANOUT指定了交换机的类型。

2024-09-24 22:53:00 831

原创 RabbitMQ通讯方式第二讲:Work Queues

1.1官网中的图片:通过官网里的图片,我们可以看到Word Queues 与Hello World 的区别,这里的消费者增加,但是时多个消费者消费单个队列,在这里我们依然要注意,这里面使用的是默认的交换机,并不是直接连接的队列。在消费者二的代码里面,线程休眠了1000ms 显然一的速度更快。RabbitMQ是AMQP协议的一个实现者,它是一个开源的消息队列系统,基于AMQP协议实现。注意这里面的交换机是默认的,与队列连接的方式式直接连接。更好的理解每次的连接都是需要交换机的,对于后续的学习是有帮助的。

2024-09-24 13:05:59 1220

原创 一段代码帮你搞定大厂输入输出:

一.我们在牛客上或者是力扣中常见的方式都是直接填写核心的逻辑代码,但是在求职时以ACM风格为主:小编在这里为大家准备了一种方式,助力大家学习这里面运用到了IO的知识:有时间的时候可以去补充一下,在这里小编也会将用到的知识给大家讲解一下。输入包括两个正整数a,b(1

2024-09-23 18:42:39 336

原创 java语言实现反转链表

【代码】java语言实现反转链表。

2024-09-23 14:08:41 185

原创 RabbitMQ通讯方式第一讲:Hello World

从官方文档出发,了解RabbitMQ的通讯方式

2024-09-22 21:32:39 605

原创 经典排序算法(一)————选择排序

对已知的需要排序的数组再索引位置为零的位置开始,与在其后面的数进行一对一的比较,找到数组中的最小值,将最小值放在数组索引位置为0处。首先将最小值的索引位置设置为0;在比较后,将最小值放到位置索引位置为0处。经过几次比较和交换后就会排序完毕。

2024-05-13 16:21:39 238 1

原创 java反射>>如何利用反射调用指定的属性,方法,构造器

/********************调用指定的构造器*************************//******************调用指定的方法*********************//调用静态的属性(特殊在于静态属性不属于对象,生命周期长,不需找对象)//使用Constructor替换使用newInstance()的方式。//调用这种方式可以访问任何的元素,不需要关注访问权限。

2024-04-19 20:13:28 444 1

空空如也

空空如也

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

TA关注的人

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