自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 秋招Day16 - RocketMQ - 原理

Topic 路由信息负载均衡Producer 会在所有可用的 MQ 中进行选择,以实现消息的均匀分散。

2025-07-13 06:19:14 922

原创 秋招Day16 - RocketMQ - 进阶

消息丢失的三个阶段:生产阶段、存储阶段、消费阶段。

2025-07-13 03:14:55 575

原创 秋招Day16 - RocketMQ - 基础

过滤,也可以设置。

2025-07-12 01:42:48 895

原创 秋招Day15 - Redis - 场景题

我会用命令配合参数来解决。SCAN 的优势在于它是,每次服务器。可以从游标 0 开始,每次处理返回的 key 列表,然后用,直到游标回到。不能用KEYS命令,会阻塞整个Redis服务器直到遍历完所有key。

2025-07-06 03:38:29 779

原创 秋招Day15 - Redis - 底层结构

Redis的LinkedList是一个双向无环结构,类似于java的LinkedList。节点由listNode表示,每个节点都有指向其前置节点和后置节点的指针,头节点的前置和尾节点的后置均指向 null。本质上是一个多层链表最底层是一个包含所有元素的有序链表,之上的每一层作为索引链表,包含了下一层的部分节点,层数通过随机算法确定,理论上可以无限高。跳表节点包含分值score、成员对象obj、一个后退指针backward,以及一个层级数组level。每个层级数组里有前进指针forward。

2025-07-05 05:12:39 1007

原创 秋招Day15 - Redis - 应用

配合和。另外就是用 Redis 的来实现简单的消息广播和订阅。但是这两种方式都的,因为没有 ACK 机制所以不能保证订阅者一定能收到消息,也不支持消息持久化。

2025-07-04 00:45:20 812

原创 秋招Day15 - Redis - 运维

使用查看内存使用情况,看看是否达到了最大的内存使用限制。如果服务器还有可用内存的话,修改redis.conf中的限制也可以修改maxmemory-policy修改,比如策略,淘汰最近最久未使用。

2025-07-02 19:03:31 243

原创 秋招Day15 - Redis - 缓存设计

缓存击穿是特指数据虽然在缓存中过期了,但是在数据库中一定能查到,大量请求落库。但是缓存穿透是指数据压根就不存在,永远也查不到结果,仍然会有大量请求落库,也无法重建缓存。布隆过滤器和缓存空值。大范围的缓存失效或者缓存服务器宕机,导致大量请求落入数据库短时间内被频繁访问的key,比如618期间被频繁访问的爆款商品的详情信息由于Redis是单线程模型(Redis6.0之后的网络IO是多线程),大量请求集中到同一个键会导致对应Redis节点的CPU使用率飙升,响应时间变长,而其他节点相对空闲。

2025-07-02 02:50:55 864

原创 秋招Day15 - Redis - 高可用

主从复制允许从节点维护主节点的数据副本,主节点的。主节点负责处理写请求,从节点负责读请求。读写分离。

2025-07-01 00:32:03 1056

原创 秋招Day15 - Redis - 持久化

主要有两种:RDB(创建时间点的快照)和AOF(追加记录每个写操作命令到文件)保证Redis服务器重启后数据不至于全部丢失。

2025-06-27 04:27:07 605

原创 秋招Day15 - Redis - 基础

最常见的数据类型,存储文本、数字或二进制数据,最大容量是512MB适合存储单个对象,比如验证码、token、计数等。列表是一个有序的元素集合,支持从头部/尾部插入/删除元素,常见于消息队列或任务列表。LRANGE key start end范围查询key value的集合,适合存储对象,比如商品信息,用户信息。集合是无序且不重复的,支持交集并集操作,查询效率能达到O(1)级别,主要用于去重、标签、共同好友等场景。按照score排序的有序集合,支持范围查询,适合排行榜或优先级队列BitMap可以把一组。

2025-06-27 03:04:36 867

原创 秋招Day14 - MySQL - 场景题

深分页是指随着页号越来越大,比较靠后的页面的offset也随之变大,导致需要从头扫描并跳过的数据行越来越多,有严重的性能问题。延迟关联:可以先在子查询中借助主键索引查出页面的开头,然后开始查找页面中的元素或者可以用书签,记住上一次分页的最大主键id。

2025-06-24 19:43:47 449 1

原创 秋招Day14 - MySQL - 运维

这么大量的DELETE操作可能会导致长时间锁表可以进行,把要删除的数据分为多个小批次处理。也可以采用,把不需要删除的数据迁移过来,然后废弃旧表。需要检查新表空间是否足够、分批导入数据、验证数据一致性等步骤。

2025-06-24 02:41:24 210

原创 秋招Day14 - MySQL - 高可用

把处理,处理通过中间件实现,比如,将INSERT/DELETE/UPDATE请求发给主库,将SELECT请求发给从库。主库将数据变更通过同步到从库,从而保证数据一致性。主库线程通过TCP将binlog推送给从库,从库到线程接受主库的binlog,写入,从库线程读取relay log并按顺序语句,从而更新从库数据。

2025-06-24 02:22:47 703

原创 秋招Day14 - MySQL - 事务

原子性,隔离性(并发执行的事务之间不会相互干扰,解决脏读、不可重复读、幻读),一致性(数据库从一个一致性状态转变到另一个一致性状态,比如转帐后银行的总金额不变),持久性(一旦提交或回滚,对数据库造成的影响是永久的)。

2025-06-23 21:46:16 685

原创 秋招Day14 - MySQL - 锁

来分,有表锁、页锁和行锁。划分,有乐观锁和悲观锁。按划分,有共享锁和排他锁。按划分,有记录锁,间隙锁,next-key锁,意向锁、插入意向锁。

2025-06-23 00:36:58 685

原创 秋招Day14 - MySQL - 索引

索引可以理解为目录,通过索引可以快速定位数据,避免全表扫描一般是B+树结构,查找效率是。索引还能等操作。

2025-06-22 01:46:48 873

原创 秋招Day14 - MySQL - SQL优化

当不能利用索引的天然有序性生成排序结果的时候,MySQL需要自己进行排序,如果数据量比较小,会在内存中进行,但是如果数据量比较大就需要写临时文件到磁盘再排序,这叫filesort。

2025-06-21 21:56:21 776 1

原创 秋招Day14 - MySQL - 日志

有6大类,错误日志用于问题诊断,慢查询日志用于SQL 性能分析,general log用于记录所有的SQL语句的明文格式,binlog用于记录MySQL服务器的所有逻辑更改,二进制格式,用于主从复制和数据恢复,redo log用来保证持久性,记录物理更改,防止数据页还没刷盘就崩溃丢失,undo log用来保证原子性,事务失败回滚和MVCC。

2025-06-19 02:13:59 660

原创 秋招Day14 - MySQL - 存储引擎

最大表空间。

2025-06-18 23:28:34 782

原创 秋招Day14 - MySQL - 数据库架构

包括连接层、服务层和存储引擎层。

2025-06-18 02:28:44 481

原创 秋招Day14 - MySQL - 基础

内连接用于合并两个表中有匹配关系的部分,相当于两个数据集的交集。FROM users//两个表中有相同的use_id的记录才会被合并INNER JOIN满足交换律就算是没有匹配成功的部分也会被合并到最终结果中,并用null填充,比如left join和right join。left join就是遍历左表的每一行,按照ON条件匹配右表中每一条符合条件的记录合并,如果没有找到则保留左表字段,右表字段填null。right join反之。A left join B 等价于 B right join A。

2025-06-17 01:09:09 810

原创 秋招Day13 - 操作系统

内核就是操作系统的核心组件,提供了操作系统最核心的能力,可以控制操作系统中的所有内容。操作系统将内存分为两大区域:用户空间和内核空间,用户态(受限特权级别)和内核态(最高特权级别)是CPU的两种运行状态,这种划分用于保护系统的安全性和稳定性。内核空间是操作系统内核代码及其运行时的数据结构所在的区域,拥有对系统的所有资源的完全访问权限,比如进程管理、内存管理、文件系统管理、网络堆栈等。用户空间是应用程序运行时分配的内存空间,用户空间中的进程不能直接访问硬件或操作系统内核,只能通过系统调用和内核通信。

2025-06-06 03:05:35 631

原创 秋招Day12 - 计算机网络 - 网络安全

跨站请求伪造,挟持用户在当前已登陆的Web应用程序上执行非本意的操作。如何避免?检查请求头中规定Referer字段,Referer字段记录了HTTP请求的来源地址。在HTTP的请求参数中加入一个服务器随机生成的token,并在服务器端建立一个拦截器验证这个token,如果请求中没有token或者token内容不正确,就可能是CSRF攻击敏感操作多重校验,比如邮箱确认、验证码DoS就是Denial of Service,意思是拒绝服务。

2025-06-04 00:57:48 837

原创 秋招Day12 - 计算机网络 - IP

IP协议用于在计算机网络中传递数据包,定义了,确保数据能够从一个设备传递到另一个设备,中间可能经过多个不同的设备(

2025-06-03 19:43:12 1156

原创 秋招Day12 - 计算机网络 - UDP

TCP使用无边界的字节流传输,可能发生拆包和粘包,;UDP采用数据报传输,数据报之间相互独立,有边界。应用场景方面,TCP适合对数据的可靠性要求高于速率要求的场景,比如。UDP适合对速率要求高、可以容忍一定数据丢失的场景,比如。

2025-06-02 23:55:37 725

原创 秋招Day12 - 计算机网络 - TCP

你可以把发送 SYN 包理解为打电话时说:“喂,你好,我想和你通话,我们从这里开始记录对话内容吧!” 这个“开始记录对话内容”就类似于同步序列号的过程。TCP的三次握手机制是为了在两个主机之间建立可靠的连接,这个机制确保两端的通信是同步的,并且在开始传输数据前,双方都做好了要通信的准备。SYN 是 TCP 协议中用来建立连接的一个标志位,全称为 Synchronize Sequence Numbers,也就是。

2025-05-30 00:29:31 457

原创 Day12 - 计算机网络 - HTTP

无论操作执行多少次,,对服务器状态产生的影响是相同的。在正确实现的条件下,GET、HEAD、PUT 和 DELETE 等方法都是幂等的,而 POST 方法不是。

2025-05-29 00:40:19 1077

原创 秋招Day12 - 计算机网络 - 网络综合

从在浏览器地址栏输入 URL 到显示网页的完整过程,并。而是涉及到,每一次独立的交互都会经历类似的网络分层(无论是 OSI 七层还是 TCP/IP 四层)的封装与解析过程。(DNS)

2025-05-28 22:25:42 555

原创 秋招Day12 - 计算机网络 - 基础

OSI七层模型,TCP/IP四层模型和五层体系结构。

2025-05-28 18:47:21 979

原创 元空间、类文件常量池、运行时常量池、字符串常量池

元空间是JDK8之后方法区的实现,开辟在直接内存中,不直接受JVM内存大小的限制。元空间中的主要内容有各个类加载后的Klass(可以被JVM理解的类元数据信息)和运行时常量池,还存储了静态变量和JIT编译之后的代码缓存。

2025-05-28 02:23:40 216

原创 秋招Day11 - JVM - 类加载机制

加载替换的新类,并通过“

2025-05-27 23:58:24 995

原创 秋招Day11 - JVM - JVM调优

在项目运行期间,我会使用 JVisualVM 定期观察和分析 GC 日志,如果发现频繁的 Full GC,我会特意关注一下老年代的使用情况。可以使用 GC 日志进行分析,查看 GC 的频率和耗时,找到频繁 GC 的原因。频繁的 Minor GC 通常意味着新生代中的对象频繁地被垃圾回收,可能是因为。频繁的 Full GC 通常意味着老年代中的对象频繁地被垃圾回收,可能是因为。文件找到内存泄漏的对象,再找到内存泄漏的代码位置,优化引用释放机制,,找到占用内存高的对象,再找到创建该对象的。

2025-05-27 02:32:27 763

原创 秋招Day11 - JVM - 垃圾回收

Mixed GC 是G1 垃圾收集器特有的一种 GC 类型,它在一次 GC 中同时清理年轻代和部分老年代。Full GC 是最彻底的垃圾收集,涉及整个 Java 堆和方法区。它是最耗时的 GC,通常在 JVM 压力很大时发生。

2025-05-26 22:40:34 942

原创 秋招Day10 - JVM - 内存管理

如果Survivor区。

2025-05-25 23:24:04 826

原创 秋招Day9 - Java I/O - NIO

可以看出,无论是传统的 I/O 方式,还是引入了零拷贝之后,2 次 DMA(Direct Memory Access) 拷贝是都少不了的。零拷贝是指CPU在进行I/O操作时,不需要将数据从一个区域拷贝到另一个区域(主要是内核空间和用户空间之间),从而可以减少内核和用户态的上下文切换以及CPU的拷贝时间。零拷贝是提升I/O性能的一种手段,许多开源项目,比如Betty、Kafka、RoctetMQ都使用到了零拷贝。Selector允许一个线程管理多个Channel,是基于事件的I/O多路复用模型。

2025-05-21 15:11:20 642

原创 秋招Day9 - Java I/O - IO模型

一个进程的地址空间划分为 用户空间(User space) 和 内核空间(Kernel space )。像我们平常运行的应用程序都是运行在用户空间,只有内核空间才能进行系统态级别的资源有关的操作,比如文件管理、进程通信、内存管理等等。也就是说,我们想要进行 IO 操作,一定是要依赖内核空间的能力。用户空间的程序不能直接访问内核空间,只能发起系统调用请求操作系统帮忙完成。因此,用户进程想要执行 IO 操作的话,必须通过 系统调用 来间接访问内核空间。从应用程序的视角来看的话,我们的应用程序对操作系统的内核发起

2025-05-18 19:41:34 798

原创 秋招Day9 - Java I/O - 设计模式

通过组合替代继承,可以在不改变原有对象的情况下拓展其功能。对于字节流来说, FilterInputStream(对应输入流)和FilterOutputStream(对应输出流)是装饰器模式的核心,分别的功能。在 Java I/O 中,按照其设计意图,用于增强 InputStream 的装饰器类通常应是是我们常见的(字节缓冲输入流)、等等都是的子类,(字节缓冲输出流)、等等都是的子类。举个例子,我们可以通过(字节缓冲输入流)来增强的功能。装饰器模式可以对原始类嵌套使用多个装饰器。

2025-05-18 18:56:39 616

原创 秋招Day9 - Java I/O - 打印流&随机访问流

实际是用于获取一个 PrintStream对象,print方法实际调用的是对象的write方法。,与之对应的是 PrintWriter。是的子类,是Writer的子类。

2025-05-18 16:57:43 235

原创 秋招Day9 - Java I/O - 缓冲流

IO操作是很消耗性能的,缓冲流将。,从而避免频繁的IO操作。

2025-05-18 16:49:01 138

空空如也

空空如也

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

TA关注的人

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