自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 资源 (1)
  • 收藏
  • 关注

原创 怎么看懂注解代码

一个注解的实现过程。首先编写注解,使用注解,实现注解的逻辑。:存在于字节码中,但运行时不可见。:运行时可见,可通过反射读取。:类型参数(Java 8+):类型使用(Java 8+):指定注解可以应用的目标。:包含在Javadoc中。:允许子类继承父类的注解。:指定注解的保留策略。

2025-09-14 18:37:38 189

原创 mysql面试题集

层级很少,通常只需要 3-4 次 IO 就能从上亿条数据中找到目标,效率极高。

2025-09-12 09:29:04 563

原创 Centos9安装rocketmq

RocketMQ 默认配置的 JVM 堆内存较大(例如 4GB),如果你的服务器内存资源不充足,:如果 Broker 无法连接到 NameServer 或客户端无法连接 Broker,:RocketMQ 需要 Java 运行环境(JDK 1.8 或更高版本)。:如果系统防火墙开启,需开放 RocketMQ 相关端口。: RocketMQ 提供了简单的测试工具。中的相关参数,以避免内存不足无法启动。获取最新的二进制包下载链接。

2025-09-08 12:35:55 386

原创 centos9安装sentinel

Sentinel 控制台是一个 Java 应用,因此需要先安装 Java 环境。OpenJDK 1.8 或更高版本通常都是兼容的。

2025-09-07 17:54:12 696

原创 Centos安装mysql8

默认情况下,MySQL 的 root 用户可能不允许远程连接。最可能的原因是系统里的MySQL GPG密钥过期了。MySQL的GPG密钥每年都会更新。命令来进行一些额外的安全设置,例如移除匿名用户、禁止 root 远程登录等。在 MySQL 提示符下,强烈建议你立即修改 root 用户的密码(首先,下载并安装 MySQL 官方的 Yum 仓库配置包。安装完成后,启动 MySQL 服务并让它开机自动启动。首次设置root密码为简单类型时报错,不符合密码策略。先设置符合规则的密码,然后修改密码策略。

2025-09-07 16:46:35 489

原创 docker 安装配置nginx

包括已停止的、退出的、或创建但未运行的。

2025-09-05 12:25:19 389

原创 Linux常用命令总结

会保存操作历史,你可以看到什么时候安装、更新或删除了哪些软件包。用户登录的状态,他需要。组成员身份的更改在用户。

2025-09-05 11:32:01 272

原创 离线安装docker 镜像

然后把打包好的压缩文件上传到对应服务器,然后把打包文件加载到本地。就可以看到这个镜像了,之后就可以像平常一样使用。文件,打包的文件就在命令行执行的目录下。

2025-09-05 10:23:07 258

原创 微服务面试题

微服务不是银弹,选择架构时要权衡。

2025-08-11 16:45:12 1192

原创 数据库面试题集

查询的所有字段都包含在索引中,无需回表。

2025-08-10 22:59:24 418

原创 spring面试题集

动态代理 = 拦截方法调用 + 增强功能**,是AOP(面向切面编程)的底层基础。

2025-08-07 16:30:30 576

原创 Java语言基础深度面试题

JVM如何实现方法动态分派?invokevirtual指令的执行流程是什么?获取对象实际类型(Dog)在方法表中查找方法索引定位具体方法实现。

2025-08-06 17:42:54 551

原创 详解I/O,NIO的区别

核心结论传统 I/O:简单、稳定、适合小型应用NIO:高性能、高扩展、适合大型分布式系统NIO.2:简化文件操作,提供异步支持现代应用通常组合使用// 最佳实践:在NIO基础上使用传统API简化部分操作// 使用熟悉的流API= null) {// 处理文本行。

2025-07-28 09:00:00 992

原创 Java 内存操作流深度解析

内存操作流是 Java I/O 中处理内存数据的核心工具,它允许直接在内存中读写数据,避免了磁盘I/O的开销。这类流特别适合处理临时数据、数据转换和内存缓存等场景。

2025-07-27 09:15:00 693

原创 数据类型处理流讲解

/ 序列化用户对象​// 反序列化始终包装缓冲流// 正确用法处理版本兼容// 文件头写入版本号// 版本2重要数据添加校验// 写入CRC32校验处理字节顺序// 明确字节序// 小端序数据// 需要特殊处理关闭资源安全// 自动关闭所有包装流和提供了在 Java 中处理原始数据类型的高效方式,特别适合存储结构化数据、游戏存档、科学数据记录等场景。掌握它们的使用能显著提升二进制数据处理效率!

2025-07-27 09:00:00 254

原创 什么是I/O缓冲流

缓冲流 = 基础I/O流 + 内存中转站 + 批量处理引擎关键要点:🚀性能倍增器:减少物理I/O次数,加速10-100倍💾内存换速度:用少量内存换取巨大性能提升🔌即插即用:简单包装现有流即可获得加速⏱️智能管理:自动处理缓冲区的填充和刷新使用准则:几乎在所有I/O操作中都应该使用缓冲流,除非处理极小数据或特殊需求!

2025-07-26 09:30:00 656

原创 Java I/O知识归纳

始终使用缓冲流:用包装基础流明确指定缓冲区大小:根据文件大小调整(通常 8KB-64KB)使用 try-with-resources:确保资源关闭,避免泄漏二进制文件使用字节流:文本文件考虑字符流(需处理编码)大文件分块处理:避免一次性加载到内存序列化敏感字段标记 transient:防止敏感数据写入磁盘NIO 处理高性能场景:如或。

2025-07-26 09:30:00 939

原创 Java基础篇面试题3

Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。

2025-07-25 09:15:00 1277

原创 Java基础篇面试题1

定义规范,隐藏细节。

2025-07-24 09:15:00 1032

原创 Java基础篇面试题2

Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。

2025-07-24 08:30:00 1071

原创 四次挥手各报文丢失会怎样?

TCP 四次挥手过程中报文丢失的处理是 TCP 可靠性的关键体现。主动方(A)卡在FIN_WAIT_1状态被动方(B)无感知,保持(默认 0,实际重试 8 次)重传间隔:1s, 3s, 7s, 15s, 31s...(指数退避)重试超时(约)→ A 发送RST强制关闭连接主动方(A)未收到 ACK → 重传 FIN被动方(B)处于CLOSE_WAIT状态被动方收到会立即重发 ACK(RFC 793 要求):若被动方不响应重传 FIN → A 最终超时重置主动方(A)卡在FIN_WAIT_2状态。

2025-07-23 09:15:00 838

原创 除了四次挥手,还有什么方法断开连接?

除了标准的四次挥手外,TCP 连接还可以通过以下。

2025-07-23 09:15:00 1256

原创 为什么需要四次挥手?

全双工本质双向通道需独立关闭(A→B和B→A分开确认)数据完整性被动关闭方需时间处理残留数据(ACK 和 FIN 必须分开发送)可靠性兜底TIME_WAIT 状态确保连接彻底终止(重传丢失的 ACK + 清空延迟包)💡生活类比: 两人结束通话—— A:“我说完了,挂啦?” (FIN) B:“好的,但我还有句话...” →说完后→ “我也说完了” (FIN) A:“收到,再见!” (ACK双方确认无遗留,才真正结束对话。

2025-07-22 08:45:00 1343

原创 什么是 SYN Flood 攻击?如何避免?

防御层措施关键能力操作系统SYN Cookies + 参数调优无状态抵御海量 SYN网络设备防火墙 SYN Proxy + 限速过滤伪造流量云平台DDoS 清洗服务吸收超大规模攻击架构设计负载均衡 + Anycast分散攻击流量,提升系统韧性💡终极建议所有互联网暴露的服务器必须启用 SYN Cookies!这是成本最低、效果最显著的防御手段,Linux 内核已内置此能力(默认开启)。

2025-07-22 08:30:00 1043

原创 TCP 初始序列号 ISN 怎么取值?

ISN 使命唯一性→ 避免旧包干扰随机性→ 抵御网络攻击现代实现加密哈希绑定四元组(确保相同连接的 ISN 一致)叠加时间戳/计数器(避免冲突)密钥动态生成(增加预测难度)协议设计智慧ISN 的复杂性是互联网安全的基石之一—— 看似简单的随机数背后,是数十年对抗网络攻击的积累。

2025-07-21 09:15:00 571

原创 为什么每次建立连接 ISN 都要不同?

每次建立连接时分配不同的初始序列号(ISN),是为了既避免网络中滞留的旧报文对新连接造成“旧信误投”,又抵御攻击者通过预测序列号进行会话劫持。客户端与服务器建立连接 Conn1,ISN=1000Conn1 传输过程中,一个数据包(Seq=1200)因网络延迟未到达Conn1 正常关闭后,相同四元组的新连接 Conn2 建立若 Conn2 的 ISN 仍为 1000 → 延迟包(Seq=1200)到达服务器,被误认为属于 Conn2!服务器将 旧连接的延迟数据 当作新连接的有效数据 → 数据错乱可能触发协议错

2025-07-21 09:15:00 903

原创 TCP 的粘包 / 拆包机制是什么?

固定长度法(Fixed Length)规则:每条消息长度固定(如 100 字节),不足补空格。缺点:浪费带宽,灵活性差。[消息A 80B][空格20B][消息B 100B]关键点说明粘包/拆包本质TCP 流传输与应用层消息结构的冲突责任方必须由应用层协议解决最优方案长度前缀法(灵活高效,广泛用于 gRPC、Thrift 等)核心操作维护接收缓存区解析消息边界💡一句话理解TCP 是水管,只负责送水;应用层需要自己造水桶(定义协议)来接水分装。

2025-07-20 09:15:00 967

原创 说说 TCP 的三次握手

两次握手的致命缺陷(已失效的连接请求)场景: 客户端发送SYN(X)后超时重传SYN(X'),旧SYN(X)延迟到达服务器。问题服务器误认为新连接,回复SYN-ACK(Y)并分配资源。客户端忽略此包(因已建立连接),导致服务器资源空耗(SYN 洪水攻击利用此漏洞)。解决:第三次握手让客户端明确告知服务器“我已准备好”,服务器收到ACK后才分配资源。三次握手目的同步初始序列号(ISN)确认双向通信能力协商传输参数核心价值资源安全:避免服务器被无效连接耗尽资源(第三次握手后分配)可靠性基石。

2025-07-20 09:00:00 939

原创 既然 IP 层会分片,为何 TCP 层还需要 MSS?

这是一个非常经典且深入的问题!IP 分片和 TCP 的 MSS(Maximum Segment Size)看似功能重叠,实则。MSS 的存在正是为了。

2025-07-19 09:30:00 1763

原创 服务器监听一个端口,TCP “最大连接数”怎么计算?

扩展端口范围 + 增加文件描述符 + 使用异步架构 + 分布式部署。: 用多台服务器 + 负载均衡分散连接(如 LVS 集群)最大连接数 = 客户端IP数 × 单客户端最大端口数。协程/异步IO模型可突破此限制(如 Nginx 单进程。内存支持连接数 (可用内存 / 单连接内存),:海量连接时协议栈处理(中断、上下文切换)成为瓶颈。:单个客户端IP最大连接数 = 可用源端口数(约。支持连接数 ≈ 可用内存 / 单连接内存占用。:应用服务器(如 Tomcat)的。减少单连接内存占用(优化缓冲区)

2025-07-19 09:15:00 1014

原创 TCP 工作在哪一层?

核心作用是。

2025-07-18 09:30:00 1424

原创 TCP 头部格式 + 为什么需要 TCP 协议

当应用能容忍少量丢包(如视频通话),且需要极低延迟时,UDP 是更优选择。:公平共享网络带宽,防止全局崩溃(如 Wi-Fi 多人使用不卡顿)。:避免接收方被淹没,如手机与服务器速度不匹配时的自适应传输。:UDP 不保证数据按发送顺序到达(网络路径可能变化)。:UDP 发送速率可能压垮接收方(缓冲区溢出)。:应用层收到有序数据流,如视频帧按顺序播放。:UDP 不保证数据到达(可能丢包)。:UDP 无视网络拥堵(加剧丢包)。:初始低速发送,指数增长探测带宽。:接收方根据序列号重组乱序数据。

2025-07-18 09:15:00 1139

原创 spring boot项目脚手架搭建教程

│ │ ├── dto/ # 数据传输对象。│ │ ├── service/ # 服务接口。│ │ ├── impl/ # 服务实现。│ │ ├── exception/ # 异常处理。│ │ ├── config/ # 配置类。│ │ ├── controller/ # 控制器。点击"Generate"下载压缩包。

2025-07-17 09:30:00 1585

原创 UDP 头部为什么没有「首部长度」字段?

如果 UDP 支持可选字段(如 TCP 的 Options),则必须添加「首部长度」字段。UDP头部长度固定为8字节,且总长度由“Length”字段和IP层报文长度共同决定,所以无需额外的“首部长度”字段。: TCP 的「首部长度」字段(4 位)明确告知头部长度(单位是 32 位字),以便接收方正确解析变长头部。这进一步证明 UDP 传输的头部始终是固定 8 字节,无需额外长度字段。,接收方无需额外字段告知头部长度,直接按固定长度解析即可。直接算出,头部长度(固定 8 字节)已隐含在计算中。

2025-07-17 09:00:00 632

原创 UDP 和 TCP 的应用场景

视频会议(Zoom/Skype)、直播推流、在线教育。内容必须完整(缺失一个 JS 文件 → 页面功能异常)0-RTT 建连(比 TCP+TLS 快 300ms)文本内容必须 100% 准确(协议指令/邮件正文)加密通道需可靠传输(TCP + TLS 双重保障)文本资源对延迟不敏感(百毫秒级差异用户无感):MOBA(王者荣耀)、FPS(绝地求生)少量丢帧不影响整体体验(人眼/耳可容忍):传感器数据上报(温度/湿度)、智能家居。交互式协议(多轮命令-响应)依赖连接状态。

2025-07-16 09:30:00 1043

原创 TCP 与 UDP 的 10 大核心区别是什么?

Options (可选) |——必须签收、保证送达、顺序正确,但速度慢成本高。——批量撒网、不管接收、可能丢失,但速度快成本低。:未收到 ACK 时重新发送数据包。# TCP 头 (最小20字节):接收方返回已收到数据的序列号。:检测数据在传输过程中是否损坏。# UDP 头 (固定8字节)

2025-07-16 09:00:00 2869

原创 SSE(Server-Sent Events)与 WebSocket 有什么区别?

维度WebSocketSSE设计目标全功能双向实时通道轻量级服务器推送协议开销极低(自定义帧结构)较高(HTTP头冗余)开发复杂度较高(需处理协议细节)较低(标准HTTP)数据能力二进制+文本仅文本断线恢复手动实现自动重连+消息追踪适用场景强交互应用单向数据广播📌终极建议需要双向交互 → WebSocket只需服务器推送+简单实现 → SSE兼容旧系统 → SSE + Polyfill。

2025-07-15 09:45:00 2694

原创 TCP 是用来解决什么问题?

TCP(Transmission Control Protocol)诞生的使命,就是在的 IP 网络之上,构建一条的“虚拟电路”,让两端应用像写入/读取一条字节流一样简单,而不用操心丢包、乱序、重复、网络抖动等底层问题。:网络拥塞、路由器故障导致数据包丢失:接收方收到数据后返回 ACK 确认:发送方未收到 ACK 时重发数据包:网络多路径导致数据包到达顺序错乱:为每个字节编号:按序列号排序后交付应用层接收顺序:包3 → 包1 → 包2TCP 重组:包1 → 包2 → 包3。

2025-07-15 09:30:00 921

原创 WebSocket 简介 & 与 HTTP 的核心区别

WebSocket是一种全双工通信协议,专为解决HTTP在实时性上的瓶颈而设计。其核心特点包括:通过一次HTTP升级握手建立持久连接,使用二进制帧结构实现低开销数据传输(帧头仅2-14字节),支持服务端主动推送和心跳保活机制。与HTTP相比,WebSocket具有双向实时通信、低延迟、节省带宽等优势,特别适合聊天室、实时行情等场景。典型应用可减少85%的数据传输量,但需要注意代理兼容性和连接稳定性问题。现代Web应用通常采用WSS加密连接,并配合自动重连等容错机制。

2025-07-14 09:45:00 1170

原创 WebSocket 的工作过程是什么样的?

避免 HTTP 重复建连开销。

2025-07-14 09:30:00 981

iTextPDF API 5.chm

iTextPDF API 5.chm

2021-10-19

空空如也

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

TA关注的人

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