• 欢迎访问 winrains 的个人网站!
  • 本网站主要从互联网整理和收集了与Java、网络安全、Linux等技术相关的文章,供学习和研究使用。如有侵权,请留言告知,谢谢!

死锁全详解

死锁全详解
前言 计算机系统中有很多独占性的资源,在同一时刻只能每个资源只能由一个进程使用,我们之前经常提到过打印机,这就是一个独占性的资源,同一时刻不能有两个打印机同时输出结果,否则会引起文件系统的瘫痪。所以,操作系统具有授权一个进程单独访问资源的能力。 两个进程独占性的访问某个资源,从而等待另外一个资源的执行结果,会导致两个进程都被阻塞,并且两个进程都不会释放各……继续阅读 »

winrains 1周前 (06-28) 19浏览 0个赞

RocketMq之事务消息实现原理

RocketMq之事务消息实现原理
RocketMQ提供了事务消息的功能,采用2PC(两段式协议)+补偿机制(事务回查)的分布式事务功能,通过消息队列 RocketMQ 版事务消息能达到分布式事务的最终一致。 概览 半事务消息:暂不能投递的消息,发送方已经成功地将消息发送到了消息队列 RocketMQ 版服务端,但是服务端未收到生产者对该消息的二次确认,此时该消息被标记成“暂不能投递”状……继续阅读 »

winrains 1周前 (06-28) 15浏览 0个赞

RocketMq之Broker源码分析

RocketMq之Broker源码分析
服务器上部署的RocketMq进程一般称之为Broker,Broker会接收Producer的消息,持久化到本地,然后push给Consumer,通常使用集群部署,主从之间会有数据同步。 Broker与NameSever Broker 会向所有 NameSever 注册自己(包含topic信息),并保持心跳连接。 连接单个broker和所有namese……继续阅读 »

winrains 1周前 (06-28) 23浏览 0个赞

RocketMq之Consumer原理浅析

RocketMq之Consumer原理浅析
Consumer是怎么启动的 源码很长,这里就不仔细看了,其实主要就是初始化了三个组件,然后启动后台定时任务 RebalanceImpl 均衡消息队列服务,负责分配当前 Consumer 可消费的消息队列( MessageQueue )。当有新的 Consumer 的加入或移除,都会重新分配消息队列。 PullAPIWrapper 拉取消息组件 o……继续阅读 »

winrains 1周前 (06-28) 8浏览 0个赞

RocketMq之NameSever浅析

RocketMq之NameSever浅析
NameSever 是一种路由服务,类似于dubbo中的注册中心zk,它存储了Broker的路由信息,供Producer和Consumer使用,不然Producer怎么知道往哪个Broker发送消息。多个NameSever之间没有通信,每个NameSever都会保存所有路由信息。 NameSever的启动 NameSever 是通过命令行在服务器上启动的,通……继续阅读 »

winrains 1周前 (06-28) 11浏览 0个赞

操作系统 I/O 全流程详解

操作系统 I/O 全流程详解
我们之前的文章提到了操作系统的三个抽象,它们分别是进程、地址空间和文件,除此之外,操作系统还要控制所有的 I/O 设备。操作系统必须向设备发送命令,捕捉中断并处理错误。它还应该在设备和操作系统的其余部分之间提供一个简单易用的接口。操作系统如何管理 I/O 是我们接下来的重点。 不同的人对 I/O 硬件的理解也不同。对于电子工程师而言,I/O 硬件就是芯……继续阅读 »

winrains 1周前 (06-28) 13浏览 0个赞

Netty 中的内存分配浅析

Netty 中的内存分配浅析
Netty 出发点作为一款高性能的 RPC 框架必然涉及到频繁的内存分配销毁操作,如果是在堆上分配内存空间将会触发频繁的GC,JDK 在1.4之后提供的 NIO 也已经提供了直接直接分配堆外内存空间的能力,但是也仅仅是提供了基本的能力,创建、回收相关的功能和效率都很简陋。基于此,在堆外内存使用方面,Netty 自己实现了一套创建、回收堆外内存池的相关功能。……继续阅读 »

winrains 1周前 (06-28) 20浏览 0个赞

I/O 原理

I/O 原理
O 软件目标 设备独立性 现在让我们转向对 I/O 软件的研究,I/O 软件设计一个很重要的目标就是设备独立性(device independence)。啥意思呢?这意味着我们能够编写访问任何设备的应用程序,而不用事先指定特定的设备。比如你编写了一个能够从设备读入文件的应用程序,那么这个应用程序可以从硬盘、DVD 或者 USB 进行读入,不必再为每个设备……继续阅读 »

winrains 1个月前 (06-05) 14浏览 0个赞

Netty 中的消息解析和编解码器

Netty 中的消息解析和编解码器
本篇内容主要梳理一下 Netty 中编解码器的逻辑和编解码器在 Netty 整个链路中的位置。 前面我们在分析 ChannelPipeline 的时候说到入站和出站事件的处理都在 pipeline 中维护着,通过list的形式将处理事件的 handler 按照先后关系保存为一个列表,有对应的事件过来就按照列表顺序取出 handler 来处理事件。 如果是入……继续阅读 »

winrains 1个月前 (06-05) 27浏览 0个赞

常用数据结构(二)

常用数据结构(二)
紧接着上一篇文章常用数据结构(一),我们继续来探讨以下数据结构:HashTable、并查集、树状数组、后缀数组。 1、HashTable 1.1、什么是HashTable HashTable,哈希表,是一种数据结构,可以通过使用称为hash的技术提供从键到值的映射。 key:其中key必须是唯一的,key必须是可以hash; value:value可以重复,……继续阅读 »

winrains 2个月前 (05-19) 16浏览 0个赞