加载中

Java

文章分类

浏览该分类下的所有文章

237 篇文章 20

消息队列 & 搜索引擎

消息队列的核心价值在于解耦、异步和削峰。生产者‑消费者模式通过共享队列实现安全的生产消费,可用 wait/notify、Lock 或 BlockingQueue 实现。为保证顺序消费:RabbitMQ 将同一订单号的消息路由至同一队列;Kafka 通过相同 key 落到同一分区并在单线程处理;RocketMQ 让同一订单进入同一 MessageQueue。防止消息丢失需开启持久化、ACK/confirm 机制并配置副本、acks=all、重试等参数;避免重复消费则依赖幂等设计或唯一 ID 校验。消费失败时常采用核心业务队列+死信队列重试。推模式适用于实时广播,拉模式适合按需获取。RabbitMQ 强实时性与可靠性,Kafka 具高吞吐量但可能出现重复。

分布式(一)

CAP 原则指出分布式系统只能同时满足一致性、可用性、分区容错三者中的两项。高并发是大流量场景,需要兼顾高性能、高可用和高扩展,并通过响应时间、可用率、扩展比例等指标评估。实现方式包括纵向提升单机性能、横向分层集群、缓存、分库分表、异步化、限流、容错与降级、监控与灰度发布等。分布式存储常见架构有中心化的 HDFS、无中心的 Ceph(计算定位)和 Swift(一致性哈希)。分布式事务常用 2PC(两阶段提交)和 TCC(Try‑Confirm‑Cancel)两种方案,各有优缺点。

分布式(二)

分布式系统实现最终一致性主要依赖DTS模型衍生的2PC、3PC和TCC协议。2PC保证强一致但会阻塞、单点故障;3PC加入询问阶段和超时降低阻塞风险;TCC将事务拆为Try‑Confirm‑Cancel,借补偿实现自恢复。实际高并发场景更倾向使用查询、补偿、异步保证、定期校对、可靠消息和缓存一致性等轻量模式。文中还阐述了无状态/有状态服务的单点问题及主备选举方案,并比较了HTTP与RPC在协议、性能、负载均衡和治理上的差异。

计算机网络(一)

本文系统介绍了计算机网络的分层模型及其功能,包括OSI七层、TCP/IP四层和简化的五层结构,阐述各层任务和常用协议;说明客户端通过URL确定使用的协议,指出TCP属传输层、HTTP/FTP属应用层;简要解析TCP、HTTP、FTP的工作原理、报文结构及常见状态码;概述传输层的复用、可靠传输、流量与拥塞控制;介绍应用层常见协议(DNS、SMTP、HTTP等);最后说明ARP在网络层如何将IP映射到MAC并维护缓存。

计算机网络(二)

本文系统阐述了TCP连接的四次挥手过程及其必要性:客户端FIN→服务器ACK→服务器FIN→客户端ACK,分别关闭双向数据通道,最后一次ACK用于确保对方已收到关闭请求。随后说明TCP的粘包、拆包现象来源于流式传输的无边界特性,并给出基于报文头长度或分隔符的拆包、关闭Nagle算法或应用层循环读取等处理方案。对比TCP和UDP,指出前者面向连接、可靠、具拥塞控制,适用于对完整性和网络稳定性要求高的场景;后者无连接、快速但不保证可靠,适合实时或容忍丢包的业务。进一步讨论在弱网环境下通过超时重传、序号确认等机制提升UDP可靠性。最后简要说明TCP报文头中序号字段占4字节,以及发送、接收缓冲区在数据缓存、流控和重传中的作用。

计算机网络(三)

本文概述了网络协议中的关键概念与实现细节。首先解释了TCP的RST报文及其在异常终止、端口未监听、超时等场景中的作用;随后介绍了在应用层实现可靠UDP的机制及常见协议(RUDP、RTP、UDT)。接着分析了TCP报文乱序的处理方式及其对RTT、重传的影响。随后阐述了IP地址的A、B、C、D、E五类划分及分类目的,比较了IPv4与IPv6在地址长度、报文结构、功能等方面的差异。最后对HTTP与HTTPS的区别、HTTPS的混合加密流程以及支持的对称、非对称和Hash算法进行说明,突出HTTPS通过非对称加密安全分发对称密钥、再使用对称加密提升效率的原理。

计算机网络(四)

本文系统阐述了HTTPS 的八步握手流程,说明服务器公私钥与客户端随机对称密钥的加解密过程;详细列举了 HTTP 4xx、5xx 错误码及其含义,并概括了常见状态码的分类与典型示例。进一步比较了 301 与 302、302 与 304 的区别,解释了永久重定向和临时重定向对搜索引擎的影响。随后描述了完整的 HTTP 请求链路,包括 DNS 解析的层层查询与缓存机制。最后区分了服务器端的请求转发与客户端的重定向在请求次数、地址栏变化、数据共享及适用范围等方面的差异。

操作系统(一)

文章列举了Linux常用命令的查询与管理方法,包括使用ps、top查看进程和内存,cat+grep或grep本身进行日志搜索并介绍正则用法,hostname/hostnamectl修改主机名,cron @reboot或rc.local实现开机自启,free及其多种选项查看内存状态,以及tar、gzip、bzip2、compress、zip等压缩解压指令及其常用参数,均配以简明示例说明基本语法和常用用法。

操作系统(二)

进程切换需保存完整上下文并刷新TLB,开销远大于仅切换硬件上下文的线程切换。进程间通信方式包括匿名管道、命名管道、信号、消息队列、共享内存、信号量和Socket,并分别阐述原理与示例代码。信号量用于进程/线程同步,提供P/V操作实现资源的互斥和计数控制。

操作系统(三)

文章介绍了并发控制的悲观锁和乐观锁概念及CAS实现原理,随后阐述了IO多路复用技术及select、poll、epoll的实现、性能差异和LT/ET模式;说明了epoll的工作流程及O(1)查询特性。随后详细描述了域名解析的缓存、递归查询过程以及Linux下IP配置、IP、子网掩码和网关的含义。

操作系统(四)

Linux 内存管理涉及多层次存储、虚拟内存与页表、多页机制、内存区域(ZONE_DMA、ZONE_HIGHMEM 等)以及 NUMA 节点。内核通过 page cache、匿名内存、回收、compact 与 OOM killer 维持内存使用效率。内存映射文件(mmap)把磁盘文件直接映射到进程虚拟地址,实现一次拷贝读写,区别于传统的分页缓存。虚拟内存模型将进程地址空间划分为代码、常量、全局、堆、栈等区,借助分段与分页机制实现地址隔离、部分换入换出和不连续分配,从而提升安全性和利用率。

操作系统(五)

本文围绕 Linux 操作系统的关键概念展开,首先介绍了 I/O 的基本概念及文件描述符,随后系统性阐述了五大 I/O 模型——阻塞、同步非阻塞、I/O 多路复用、信号驱动和异步 I/O,比较了它们的工作方式与适用场景。接着说明了软链接与硬链接的区别,包括 inode、跨文件系统、对文件/目录的支持以及使用场景。随后解析了缺页中断的触发条件、处理流程及其与普通中断的差异。再者,对软中断和硬中断的产生机制、响应过程及可屏蔽性进行对比。最后介绍了写时拷贝(Copy‑On‑Write)技术在 fork、vfork 等场景中的实现原理、优势及局限。