自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql进阶篇(mysqlcheck - 表维护程序)

(1)分析的作用是查看表的关键字分布,能够让 sql 生成正确的执行计划(支持 InnoDB,MyISAM, NDB)(3)优化的作用是回收空间、减少碎片、提高I/O(⽀持 InnoDB,MyISAM,ARCHIVE)(2)检查的作用是检查表完整性以及数据库表和索引是否损坏(支持 InnoDB,MyISAM,(4)修复的作⽤是修复可能已经损坏的表(⽀持 MyISAM,ARCHIVE,CSV)(3)并不是所有的存储引擎都支持以上四种操作,如果遇到不支持的引擎会报出相应的错误。

2025-02-13 21:39:48 389

原创 Redis的哨兵机制

Redis 的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工进行主从切换,同时大量的客户端需要被通知切换到新的主节点上,对于上了⼀定规模的应用来说,这种方案是无法接受的,于是 Redis 从 2.8 开始提供了 Redis Sentinel(哨兵)加个来解决这个问题。这步主要是预防该情况:出故障的不是主节点,而是发现故障的哨兵节点,该情况经常发生于哨兵节点的网络被孤立的场景下。第⼆,从节点可以分担主节点上的读压力,让主节点只承担写请求的处理,将所有的读请求负载均衡到各个从节点上。

2025-01-13 10:43:05 497

原创 主从复制(Redis的特性)

在redis若干个节点中,有的是主节点,有的是从节点。这里如果,我们部署了3个 redis-server,其中有一个主节点,有2个从节点。这里从节点必须听主节点的,从节点只允许进行读操作,主节点进行写操作。从节点上的数据会根据主节点上的数据变化而变化,从节点的数据要和主节点上的数据保持一直。如果,我们从节点挂了一个,那么对于我们的服务影响是很小的,从其他从节点或者是主节点上读取数据即可,那么我们的主节点如果挂了,那么真就不能写数据了。

2025-01-04 16:50:41 531

原创 Spring Cloud LoadBalancer (负载均衡)

负载均衡(Load Balance,简称 LB) , 是高并发, 高可用系统必不可少的关键组件。当服务流量增大时,通常会采用增加机器的方式进行扩容,负载均衡就是用来在多个机器或者其他资源中,,按照⼀定的规则合理分配负载。负载均衡分为服务端负载均衡和客户端负载均衡。Spring Cloud LoadBalancer 默认负载均衡策略是轮询策略,实现是 RoundRobinLoadBalancer,如果服务的消费者如果想采用随机的负载均衡策略,也非常简单。

2024-12-29 22:18:15 1503

原创 Nacos的下载和启动(如何快速稳定下载在github中)

这里我们需要点击,startup.cmd 文件,这里他会报错和闪退,因为这里默认的是集群运行的,我们需要改成单机运行。在上面的链接中,我们可以自行的选择,nacos的版本。上图可能会和你自己下载好的不一样,因为我这里运行过了nacos了,生成了一些文件。如上图中,有4个压缩包,这里我们只需要选择上面两个的其中一个就可以了。首先,我们需要进入githup中,我们直接访问,肯定是访问不到的。注意这里我们在这里下载的话是很容易失败的,下载的还非常的慢。这里我的也和你不一样,还是因为运行过后生成了一些文件。

2024-12-24 22:34:28 426

原创 Redis的持久化机制

在这里我们知道,redis存储的数据是存储在缓存中的,重启服务器数据就不存在了。要想持久化存储我们这里就需要把数据存储在硬盘上。Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成数据丢失问题, 当下次重启时利用之前持久化的文件即可实现数据恢复。

2024-12-23 22:33:15 1166

原创 JVM的垃圾回收机制GC

垃圾回收机制,是java对于内存自动回收的机制。但是呢,这不是java独创的。

2024-12-19 17:37:21 896

原创 SpringCloud组件Eureka(服务注册/服务发现)详解 + 案例的实现

在最初的架构体系中,集群的概念还不那么流行,且机器数量也比较少,此时直接用DNS+Nginx就可以满足几乎所有服务的发现。相关的注册信息直接配置在Nginx。但是随着微服务的流行与流量的激增,机器规模逐渐变大,并且机器会有频繁的上下线行为,这种时候需要运维手动地去维护这个配置信息是⼀个很麻烦的操作。所以开发者们开始希望有这么⼀个东西,它能维护⼀个服务列表,哪个机器上线了,哪个机器宕机了,这些信息都会自动更新到服务列表上,客户端拿到这个列表,直接进行服务调用即可。这个就是注册中心。

2024-12-06 13:15:24 1495

原创 RabbitMq死信队列(详解)

当消息在⼀个队列中变成死信之后,它能被重新被发送到另⼀个交换器中,这个交换器就是DLX( Dead Letter Exchange ),绑定DLX的队列,就称为死信队列(Dead Letter Queue,简称DLQ)。它可以处理异常情况下,消息不能够被消费者正确消费而被置入死信队列中的情况,应用程序可以通过消费这个死信队列中的内容来分析当时所遇到的异常情况,进而可以改善和优化系统。当这个队列中存在死信时,RabbitMQ会自动的把这个消息重新发布到设置的DLX上,进而被路由到另一个队列,即死信队列。

2024-11-30 23:14:59 975

原创 Spring项目中RabbitMq的使用(工作队列模式)

RabbitListener 是Spring框架中用于监听RabbitMQ队列的注解,通过使用这个注解,可以定 义⼀个方法,以便从RabbitMQ队列中接收消息。该注解支持多种参数类型,这些参数类型代表了从 RabbitMQ接收到的消息和相关信息.如上述代码所示,通过依赖注入的rabbitTemplate,通过这个对象我们可以直接调用,spring内部封装好的方法,直接发送消息。注意上面的host一定要改成自己云服务器的主机IP。在这里我们也可以直接在创建项目的直接引入。在常量类中声明队列模式。

2024-11-26 22:51:07 584

原创 认识RabbitMq和RabbitMq的使用

在RabbitMQ中,⼀个TCP连接可以有多个Channel,每个Channel都是独⽴的虚拟连接。消息的发送和接收都是基于Channel的,通道的主要作用是将消息的读写操作复用到同⼀个TCP连接上,这样可以减少建立和关闭连接的开销,提高性能。Exchange:交换机,message到达broker的第⼀站,它负责接收生产者发送的消息,并根据特定的规则把这些消息路由到⼀个或多个Queue列中。Producer:生产者,是RabbitMQServer的客户端,向RabbitMQ发送消息。

2024-11-25 22:31:07 527

原创 如何在Spring项目中连接redis客户端并使用redis

我们知道我们在自己的云服务中下载好的redis的端口号呢,是6379,在云服务器中是受到防火墙保护的。但是我们可以通过ssh的隧道来映射到我们的redis客户端。我们这里通过注入redisTemplate对象口,就可以调用操作redis的方法了。这里我们需要注意第一次连接,是运行不成功的,我们需要重启一下服务器和客户端才行。在这里我们添加我们的配置文件,就可以连接到我们的redis客户端。这里的host我们需要改一下,改成自己云服务器的主机号。这里我们还需要添加依赖,在pom.xml文件中。

2024-11-24 22:34:48 349

原创 Redis基本的全局命令

在学习redis基本的全局命令之前呢,我们必须先进入redis-cli客户端才行。

2024-11-20 15:48:45 655

原创 Redis的特性

(1)redis的所有数据都是存储在内存中的,这是redis速度快的主要原因。(2)redis使用C语言来实现的,C语言实现的程序和系统更接近,因此速度比较快。(3)redis使用单线程,预防了使用多线程产生的竞争问题。

2024-11-20 10:47:59 742

原创 将自己写好的项目部署在自己的云服务器上

这里呢我要下载的终端软件是Xshell如图:自己准备好服务器,我这里的是阿里云的服务器,如图:这两个准备好之后呢,然后对我们的项目进行打包。如图:这里双击打包就行了。找到自己打成jar包的文件位置。新建一个会话如图:这里的主机号一定要是自己的服务器的IP。端口这里不用问,其他也不用管,直接新建。连接上主机之后,需要下载mysql和jdk17。在会话中输入命令:安装jdk:安装jdk一直选择Y下一步即可。安装mysql:安装mysql也是一直Y下一步即可。输入命令:然后提示的信息,按照如下图

2024-10-07 23:27:04 500

原创 Spring 事务和事务传播机制

事务是⼀组操作的集合。是⼀个不可分割的操作。事务会把所有的操作作为⼀个整体,一起向数据库提交或者是撤销操作请求,所以这组操作要么同时成功,要么同时失败。事务的应用场景是非常多的,例如我们的支付系统,A向B转账,这个过程B只有收到A的转账才会结束,若B没有收到转账,则会发生回滚。

2024-08-24 16:08:44 2062

原创 Spring IOC 和 DI 详解(面试常考)

控制反转:以ioc为例子,我们在写java项目的时候,创建对象需要自己手动new()一个出来,这是的控制权在你自己手里,而通过注解的方式,使对象交给Spring管理,此时呢这种就是控制反转。在写项目的时候,我们可以避免大量创建对象的操作,直接用注解的方式交给Spring管理,再通过注解将对象取出。使项目管理更加的方便。

2024-08-23 10:58:03 559

原创 简单使用SpringMVC写一个图书管理系统的登入功能和图书展示功能

这里我们主要是和前端响应数据用的,controller层调用service层,service层是用于处理业务数据的,这里我们用到了,依赖注入的属性注入来获取service层的对象,如代码中的@Autowired注解。这里的代码是和后端做交互的,后端的url为/user/login ,请求的类型为post请求,然后传递数据,后端再返回结果,如果登入成功就跳转到,“book_list.html”的界面,展示图书。上述代码,不做介绍了,我是主要写后端的代码的,关于这篇文章,仅仅展示图书即可,没涉及到增删改查。

2024-07-23 17:51:06 641

原创 Spring MVC 的常用注解

上面两个注解,是Spring MCV最常用的注解。@RequestMapping , 他是用来注册接口的路由映射。路由映射:当一个用户访问url时,将用户的请求对应到某个方法或类的过程叫做路由映射。@RequestMapping 注解的使用:它既可以又是类,也可以修饰方法,访问的地址是类的路径和方法路径。但是在这里我们只通过@RequestMapping 是不足以访问网页的,还要通过@RestController注解。

2024-07-17 22:06:57 706

原创 植物大战僵尸杂交版全新版v2.2解决无法打开问题和全屏问题

如我的电脑是windows11的系统。然后就可以打开了。

2024-07-09 18:16:57 4601 4

原创 网络中数据链路层详解

上述的目的地址和源地址,称作为mac地址或物理地址,当生产商刚生产出网卡的时候,电脑的物理地址就被确认好了,而且是补重复的。还有第一幅图中的,ARP和RARP这两个都不携带任何的业务数据,只在转发数据的时候起到辅助的作用。DNS服务器的具体的原理:当我们输入一组的字符串的时候,DNS服务器,会对应的搜索响应的ip地址,进而就得到了。2)作用不一样,ip协议,支持的是整个传输过程的转发,而mac协议,是支持两个相邻节点的传输。这里还有一个问题,就是当今越来越多的人,DNS服务器是否可以支撑嫩模大的请求。

2024-06-19 21:45:00 384

原创 IP协议的相关特性

开始,我自己的电脑会发送一个ip数据包,里面包含源IP地址(自己电脑的IP地址),源端口(自己的应用程序的端口号),还有目的IP和目的端口(都是cctalk)服务器的,在中间发送的过程中,NAT会进行转换,将源IP改变。IP自身实现了拆包组包这样的功能,如果携带的载荷超出了长度上线,IP就会自动拆分成多个数据包每个数据包携带一部分,发送对方后再拼好。这两个是最核心的部分,一个IP地址其实就是一个32位的整数,用点分十进制来表示,表示范围0~42亿9000万。和运营商的路由器会进行转换,返回的响应也是一样。

2024-06-18 21:55:40 364

原创 TCP协议详解及其相关的10个核心机制(面试重点)

TCP协议有连接,可靠性传输,面向字节流,全双工。他的数据格式如图:根据他的数据格式,在这里我们只知道 16位源端口号(表示客户端这里的端口号),16位目的端口号(服务器这边的端口号),还有16位校验和(这里在UDP中的校验和是一样的)。这里的选项其实就是 “可选” 或 “不选”,没有更加深层的含义。在这里学习之前我们只能了解到这几个,在后面介绍10大机制的时候会一一介绍。

2024-05-30 21:04:54 975

原创 UDP的报文结构和注意事项

对于UDP来说,应用层的数据到达,UDP之后,就会给应用层的数据报前面拼装,UDP的报头。因为在数据传输的过程中,会受到外界的干扰,此时会发生“比特翻转”。UDP数据报 = UDP报头 + UDP的载荷。一个UDP数据报的长度,最长就是64kb,不能再长了。UDP无连接,不可靠传输,面向数据报,全双工。此时,我们就需要校验和对UDP进行校验。学习网络协议,最主要的就是报文格式。数据在网络通信中有可能会出现错误的。UDP协议是在传输层的协议。

2024-05-25 21:22:33 411 1

原创 用UDP写一个回显服务器和一个字典服务器

操作系统提供了一些网络通信的api(socket)。1. 读取请求并解析。2. 根据请求计算响应。3. 把响应写回给客户端。

2024-05-21 22:59:12 610

原创 网络中的基本概念

局域网:把若干个电脑组成在一起,通过路由器进行组网。广域网:把局域网进一步的连接,构成更复杂的网络体系。IP地址:区分主机。端口号:区分主机上不同的程序。协议:是一种约定,通信双方,对于通信规则的约定,一定是通信双方都得认可。

2024-05-14 22:58:21 611 2

原创 InputStream,OutputStream的用法以及相应的案例

1. 文件系统的操作:File类。2. 文件内容的操作:Stream流。字符流:IntputStream , OutputStream。字节流:read , write。

2024-05-11 15:45:38 677

原创 java中对文件的基本操作

文件IO。啥叫文件的IO?他就是指:1.Input(输入)2.Output(输出)。比如,我们的电脑可以从网络中下载文件,也可以通过网络上传文件等等很多的例子,都体现了输入和输出。文件的输入和输出遵循一套规则:如图:基本都是通过这套规则进行输入输出的。

2024-05-03 23:26:48 357

原创 HashTable ,HashMap,和ConcurrentHashMap的区别

这里呢,在我们学习多线程之前,HashMap,在数据结构中我们都已经非常熟悉了,HashMap,有key和value,key和value都是一一对应的关系。key允许为null。而当我们学习过线程之后呢,HashMap是线程不安全的。而HashTable是线程安全的,在创建的时候,他会给 this加锁,使线程安全,但是这样的加锁,在我们多个线程对数据进行读写操作的时候,会发生阻塞,效率非常低,他的key不能为null。

2024-04-23 20:55:42 359

原创 线程池详解

如图:如图所示,上面的7个参数就是线程池的参数。1. int corePoolSize 和 int maximumPoolSize 这两个参数分别为,核心线程数和最大线程数。这里的maximumPoolSize,其实就是核心线程数 + 非核心线程数。2. long keepAliveTime 和 TimeUnit unit 分别表示,非核心线程的最大存活时间 和 单位时间。

2024-04-15 10:45:56 260

原创 单例模式(饿汉模型,懒汉模型)

在着里我们先了解什么是单例模式。就是某个类在进程中只能有单个实例,这里的单例模式需要一定的编程技巧,做出限制,一旦程序写的有问题,创建了多个实例,编程就会报错。如果我们学会了单例模式,这种模式会提高我们的下限。其中单例模式包含了两种模型,一种是饿汉模型,另一种是懒汉模型,这里的懒汉模型尤为重要,面试也会考。

2024-04-09 21:27:14 515 2

原创 线程安全性问题的原因

这里的意思就是,当两个线程同时启动的时候,两个线程会同时进行,并且是抢占式执行的。而且是随机调度资源的。如打印结果:以上我们可以看到,线程是同时进行的。

2024-04-07 21:08:45 308

原创 进程和线程,线程实现的几种基本方法

我们这里学习进程是为了后面的线程做铺垫的。一个程序运行起来,在操作系统中,就会出现对应的进程。简单的来说,一个进程就是跑起来的应用程序。在电脑上我们可以通过任务管理器可以看到,跑起来的应用程序有哪些,同时也是每一个的进程。在操作系统中,我们常常使用PCB这样的结构体来描述进程,pcb中包含了许多重要的信息,此处不做过多的讨论。在pcb中最核心的就是,其中包括了很多的内存指针,该指针,会根据操作系统的操作来指向所要进行的资源。如图:上图就是,关于操作系统的流程(cpu,pcb,硬件等)。

2024-03-24 22:31:04 499 1

原创 mysql驱动的下载和JDBC的使用(在idea上)

在这里我们需要进入中央仓库中去下载mysql驱动的下载。上面就是中央仓库的网址。如图:上面就是中央仓库的网址首页。1.在上面搜索框内输入mysql如图:这里呢,上面的mysql 是8.0以上版本的,下面的是老版本的mysql。2.如果是新版本点击第一个我这里使用的是新版本的,8.0.31/32/33 这里选一个就行了。3.我这里选中了8.0.31如图我上面标记的部分就是下载。点击就行了。

2024-03-17 21:59:01 2222 3

原创 Mysql增删改查(详解)

insert into + 表名 + values + 新增字段。如图:这里我一共添加了三条数据。

2024-03-17 15:36:58 326 1

原创 mysql数据库和表的基本操作

查看数据库的基本操作是:show databases;

2024-03-14 16:52:23 214 1

原创 AVL树和他的旋转

AVL树分其节点有:父亲节点,val值,左孩子节点,右孩子节点,还有平衡因子。在这里的平衡因子属于int类型。AVL树的插入规则,就是左子树的val值要始终小于右子树的val值,并且其平衡因子的绝对值不能大于2,如果平衡因子大于2需要进行调节。当前节点的平衡因子=右子树高度-左子树的高度。但是,不是每棵树,都必须有平衡因子,这只是其中的一种实现 方式。一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树:1. 它的左右子树都是AVL树。

2024-03-03 17:26:16 441 1

原创 Map和Set详解及其相应的例题

关于Map和Set他们的底层分别有搜索树和哈希桶,这里我就不介绍他们底层的结构是怎样的了,这里主要是说明了关于Map和Set的功能和使用。

2024-02-20 18:18:33 964

原创 TopK算法

根放的是倒数第k大的元素,才能保证其余的元素都是比他大的,也就是整个堆中都是我们要找的元素。假如列题:求数组arr[4] = {1,2,3,4}中前k大的元素,输出打印。关与topk是建立在优先队列的基础上的,关于优先队列的底层是利用的堆。关于堆,其实也就是一颗二叉数,堆分为两种一种是小根堆另一种是大根堆。首先我们需要了解,topk算法他是解决什么问题的。简单的来说其实就是,求一个数组中前k个最大的元素。这里从堆的角度思考我们需要在这里建立一个小根堆,分别调用了优先队列中的各方法,来解决问题。

2024-01-26 13:05:19 379 1

原创 二叉树经典面试题

2. 然后还有什么条件不满足呢,就是,当有一个数遍历完了之后,但另一颗数没有遍历完此时两颗数不相等。3. 最后一个就是,当两个数相等的时候,返回true,就是当两棵数都遍历完的时候也没有找到哪个地方有什么不同的地方,其为相同的树。1. 最好想到的就是当两个节点的值不想同的时候,其两棵树不相同,p.val!这里的a和b分别为递归左和递归又的结果,其中一个不为真则两棵树不相等。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。在这我们首先要考虑到的就是关于递归的终止条件是什么。

2024-01-25 20:28:13 370 1

空空如也

空空如也

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

TA关注的人

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