首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PhxPaxos源码分析——网络

    本次的源码分析先从网络部分开始。因为在分布式系统中不可避免会涉及到不同节点以及相同节点上不同进程之间的通信。...因此网络部分也是至关重要,所以就先把网络单独拿出来看,接下来再去看Paxos算法的实现部分。 概览 源码的include/phxpaxos目录下是公共头文件。...include/phpaxos/network.h 是网络模块的抽象函数,如果用户想使用自己的网络协议,可以通过重写这些函数实现网络模块的自定义。...在PhxPaxos中,提供了一个默认的网络模块,就是继承了NetWork类。该类的名字叫DFNetWork,DF应该就是default的缩写了。...最后,附上PhxPaxos源码的地址:https://github.com/Tencent/phxpaxos 可进入我的博客查看原文 欢迎关注公众号: FullStackPlan 获取更多干货

    2K00

    【Java】HashMap源码

    Life is not a ridiculous number of life, the meaning of life lies in life itself HashMap源码 散列集 数组和链表可以保持元素插入的顺序...散列集(hash table)可以说是数组与链表的组合, 往散列集中添加元素时,通过hash函数可以得到一个该元素的一个哈希值,Java中哈希值的范围在-2147483648~2147483647之间...不能直接使用hashCode,因为它的范围将近40亿,不可能有这么大的数组空间,所以需要对hashCode值做一定的处理,使之在数组容量范围内,最简单的办法是对数组容量取余,但取余有效率问题,所以Java...就一定存在运算后得到同样索引值的情况,称为哈希碰撞,解决哈希碰撞有两种方法:开放地址法和拉链法 ,开放地址法是指如果当前的数组已经有元素了,就通过别的算法算出一个新位置插入,像python中dict的实现就使用了开放地址法;而Java...>> 4); } static int indexFor(int h, int length) { return h & (length-1); } 出于性能的考虑,在获得最终的index时,Java

    1.1K20

    Java NIO 状态守卫:AlreadyBoundException 源码深度剖析与网络通道绑定契约

    本文将基于JDK源码,对这个“机械生成”的异常类进行原子级解构。...关注我,获取更多关于Java并发、NIO源码、云原生架构与AI系统底层原理的独家干货。第一章:类型谱系与语义定位1.1为什么是IllegalStateException而非IOException?...但只要NetworkChannel仍是Java网络编程的基础抽象,AlreadyBoundException就将继续作为状态安全的守门人存在。...理解它,就是理解Java如何在托管运行时中安全地封装原生网络原语。愿这篇深度解析能帮助你穿透异常的表象,触及网络资源状态管理的真正内核。...你的支持是我继续创作万字源码解析的最大动力。关注我,让我们一起在技术的深海中,探索更多宝藏!

    29120

    java进阶|java队列源码分析

    今天我要分享的是java里面比较常见的数据结构队列的源码分析,队列,先进先出模式,即FIFO的特点,日常生活中队列的特点也随处可见,超市购物排队,餐厅排队买饭等一系列都满足了队列的先进先出的特点,java...也不是,主要是之前我自己分析了ArrayList,LinkedList以及Stack的源码文章了,到这里就理所应当的应该分析队列的这种数据结构了,满足一下学生时代心心念的数据结构吧。...关于读源码,如何进行梳理整个过程,每个人都有着自己的一套,在这里我就以自己的一套来进行分析好了。...,写到了内存空间的分配的字样,想到了自己学习c语言的模样,那个拿着大部书《C语言程序设计》前往机房的少年,由于兴趣使然,逐渐走上了javaWeb的开发了,不过这里说明一点,学习c语言对于你理解高级语言java...何况java作为一门高级语言呢,顺势而为成就了这个语言令人喜欢的特点吧。 四,队列既然有入队,想必就会想到队列出队的方法,即poll方法,接下来我们继续看下队列出队的方法时间吧。

    1.2K20

    Java网络编程--网络协议

    OSI网络七层协议 为使不同计算机厂家的计算机能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。...OSI网络七层协议就是在这个基础上制定出来的,其从最底层开始依次是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。 ?...TCP是网络中一个重要的传输层协议。...Socket编程 Socket编程是网络中应用最广泛的网络应用编程接口,实现了三种底层协议接口 数据报类型套接字SOCK_DGRAM (面向UDP接口) 流式套接字SOCK_STREAM(面向TCP接口...) 原始套接字SOCK_RAW(面向网络层协议接口IP,ICMP等) 主要Socket API及其调用过程: ?

    1.8K20

    ClickHouse源码导读:网络IO

    通常,分析服务器程序会从网络IO模块入手。 本文将试图深入浅出方式介绍ClickHouse网络IO模块,以期抛砖迎玉。...ClickHouse聚焦业务细节,将业务逻辑与网络IO细节剥离。 POCO是一个开源的C++类库,用于开发基于网络的应用程序。这个类库和C++标准库很好集成,并填补了C++标准库的功能空缺。...使用这种网络模型的典型代表为Nginx. 通过源码,发现ClickHouse的网络模型与 **1 Master线程/N Worker线程+非阻塞IO**模型类似,但有自己的特点。...需要说明的是POCO/NET 除了提供了多种网络模型的实现。对于ClickHouse并未使用的网络模型,不在本文讨论范围内。 3....分析其源码,有助于在生产环境中,更好地使用它。 本文梳理ClickHouse网络IO的设计与实现,通过关键代码片段,剖析其网络IO的内部原理。这有助于加深对ClickHouse原理的理解。

    3K157

    ClickHouse源码导读:网络IO

    通常,分析服务器程序会从网络IO模块入手。 本文将试图深入浅出方式介绍ClickHouse网络IO模块,以期抛砖迎玉。...ClickHouse聚焦业务细节,将业务逻辑与网络IO细节剥离。 POCO是一个开源的C++类库,用于开发基于网络的应用程序。这个类库和C++标准库很好集成,并填补了C++标准库的功能空缺。...使用这种网络模型的典型代表为Nginx. 通过源码,发现ClickHouse的网络模型与 **1 Master线程/N Worker线程+非阻塞IO**模型类似,但有自己的特点。...需要说明的是POCO/NET 除了提供了多种网络模型的实现。对于ClickHouse并未使用的网络模型,不在本文讨论范围内。 3....分析其源码,有助于在生产环境中,更好地使用它。 本文梳理ClickHouse网络IO的设计与实现,通过关键代码片段,剖析其网络IO的内部原理。这有助于加深对ClickHouse原理的理解。

    1.6K43

    KubeVirt网络源码分析(2)

    对上篇分析的是老版本的KubeVirt的网络源码,这篇继续上篇,对目前的最新版本v0.53再做一次源码分析,作为对上篇的补充。...实际上是不会冲突的,因为launcher Pod的eth0就是代码中的dummy网口,不参与任何网络的连接,不会影响任何网络,就是个dummy网口。...那么为什么要这么麻烦,创建一个dummy网口,原来是不这样做,当kubelet重启后,会检查所有的pod的网络,若pod的IP不是预期的,会移除pod。...这不是想要的结果,所以需要通过创建一个有预期ip的且不会影响KubeVirt网络的dummy网口来愚弄Kubernetes一下。...本篇分析的版本相对上篇分析的版本还有一个不同是,上篇版本网络部分都在virt-lancher中处理,本篇对应版本从virt-lancher中拿出来,分成phase#1和phase#2。

    1.2K11

    Dubbo源码解析—网络调用

    Dubbo网络调用 背景 我们知道Dubbo远程调用(消费过程)的大致流程如下: 从Dirctory中获取该方法的invoker列表 经过router路由的筛选,得到满足条件的invoker列表 经过Cluster...容错调用invoker 经过loadBalance筛选出最终执行的invoker 经过消费端的filter链 网络请求及序列化 .....提供者方执行请求,返回结果 用户线程获取结果 网络调用方式 Dubbo...源码 同步情况下,客户端发起请求,并通过get()方法阻塞等待服务端的响应结果: RpcContext.getContext().setFuture(null); return (Result) currentClient.request...源码 异步请求的情况下,用户线程发起请求后,放置一个Future到RpcContext中,返回立即返回一个空的结果。...源码 异步不带回调接口的调用方式,源码非常简单,就是在发起请求之后,立即返回一个空结果 boolean isSent = getUrl().getMethodParameter(methodName,

    81250

    【Java集合源码剖析】ArrayList源码剖析

    ArrayList源码剖析     ArrayList的源码如下(加入了比较详细的注释): [java] view plaincopy package java.util;    ...它有很多个重载的方法,但实现思路都是一样的,我们来看泛型版本的源码: [java] view plaincopy public static  T[] copyOf(T[] original...该方法被标记了native,调用了系统的C/C++代码,在JDK中是看不到的,但在openJDK中可以看到其源码。...该方法可以直接将ArrayList转换得到的Array进行整体向下转型(转型其实是在该方法的源码中实现的),且从该方法的源码中可以看出,参数a的大小不足时,内部会调用Arrays.copyOf方法,该方法内部创建一个新的数组返回...6、在查找给定元素索引值等的方法中,源码都将该元素的值分为null和不为null两种情况处理,ArrayList中允许元素为null。

    93430

    Java HashMap源码浅析

    之前虽然很频繁使用java的hashmap,但一直都是纯用,至于里面怎么实现的,一直都是糊里糊涂的。...今年4月份跳槽找工作,大概看了一下HashMap的源码,在面试过程中也被多位面试官问到HashMap的相关问题,有些问题也没回答出来。...本来几个月前就想着写一篇相关源码解析的博客(主要是加深自己的理解),一直拖到现在,接下来就跟我一起看下HashMap的实现(基于jdk8)。 ?   ...打开AbstractMap的源码就会发现注释第一句就告诉你,AbstractMap给Map提供了一个骨架,事实上它实现了Map的几乎所有的方法,除了entrySet()。...打开HashMap的源码,跳过一堆注释,最先看到的是几个常量,这几个常量是缺省时的默认值,非常重要,它们决定这HashMap在使用过程中内部的发生的一些行为,我们挨个看一下。

    69720
    领券