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

2020年06月的内容

其它技术

死锁全详解

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

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

Java技术

HashMap 原理介绍

HashMap 原理介绍
HashMap 概述 如果你没有时间细抠本文,可以直接看 HashMap 概述,能让你对 HashMap 有个大致的了解。 HashMap 是 Map 接口的实现,HashMap 允许空的 key-value 键值对,HashMap 被认为是 Hashtable 的增强版,HashMap 是一个非线程安全的容器,如果想构造线程安全的 Map 考虑使用 C……继续阅读 »

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

MySQL

用 explain 命令分析 MySQL 的 SQL 执行

用 explain 命令分析 MySQL 的 SQL 执行
在上一篇文章《MySQL常见加锁场景分析》中,我们聊到行锁是加在索引上的,但是复杂的 SQL 往往包含多个条件,涉及多个索引,找出 SQL 执行时使用了哪些索引对分析加锁场景至关重要。 比如下面这样的 SQL: mysql> delete from t1 where id = 1 or val = 1 其中 id 和 val 都是索引,那么执行时使……继续阅读 »

winrains 1周前 (06-28) 13浏览 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) 22浏览 0个赞

消息队列

RocketMq之Consumer原理浅析

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

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

未分类

RocketMq之Producer原理浅析

RocketMq之Producer原理浅析
生产者是怎么发消息的? MessageQueue 首先在理解生产者发消息之前,必须要明白一个概念:MessageQueue是什么? 其实MessageQueue是RocketMq的一种数据分片+物理存储机制。 我们一般在创建 Topic 的时候会指定 MessageQueue 的数量。如上图,一个 Topic 中有4个 MessageQueue,每个 ……继续阅读 »

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) 12浏览 0个赞

Netty

Netty 中的内存分配浅析

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

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