
源码分析
文章平均质量分 60
深入源码,源码级别理解现象问题、常见的问题刨根问底到源码
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
杨鑫newlfe
算法就是我的灵魂
展开
-
Kafka学习笔记 --- Kafka的TimingWheel时间轮/调度笔记
概念介绍在kafka中,有许多请求并不是立即返回,而且处理完一些异步操作或者等待某些条件达成后才返回,这些请求一般都会带有timeout参数,表示如果timeout时间后服务端还不满足返回的条件,就判定此次请求为超时,这时候kafka同样要返回超时的响应给客户端,这样客户端才知道此次请求超时了。比如ack=-1的producer请求,就需要等待所有的isr备份完成了才可以返回给客户端,或者到达timeout时间了返回超时响应给客户端。上面的场景,可以用延迟任务来实现。也就是定义一个任务,在t原创 2022-03-02 08:27:36 · 1773 阅读 · 1 评论 -
py2 和 py3 使用map时的差别
Python2中map结果返回的是List,一个列表,例如下图:Python3中map结果返回是一个对象,例如下图:Python3中map源码如下:可以看出里面是有一个迭代器的,我们使用的时候需要用迭代器返回每个结果,或者直接list(map)强制转化为python2中实现的效果。class map(object): """ map(func, *iterables) --> map object Make an iterat..原创 2021-10-31 00:14:37 · 297 阅读 · 0 评论 -
源码分析 --- Java中ConcurrentHashMap
理解ConcurrentHashMap 一、CAS Compare And Swap 比较并替换,也是用的乐观锁的机制; CAS中有三个基本的操作元素 内存地址 V; 旧的预期值 A; 新的值 B; 更新一个值的时候,只有当变量的预期值A和内存地址V当中的实际值相同时,才会将内存地址V对应的值修改为B; 如果更新失败,则...原创 2020-07-14 00:35:51 · 404 阅读 · 0 评论 -
源码分析 --- Java中HashMap、HashTable、ConcurrentHashMap
零、先聊聊HashMap和HashTable以及ConcurrentHashMap HashTable 哈希表,是根据关键码值(key, Value)而直接进行访问的数据结构; 通过key,value映射到表中的一个位置来访问记录,加快查找速度。映射的函数叫做散列函数,存放的数组叫做散列表; HashTable继承了Directory,实现了Map、Cloneable、java.io.Serializable接口; H..原创 2020-07-09 00:05:16 · 415 阅读 · 0 评论 -
源码分析 --- Spark如何确定Splits和分区数
一、结论: 默认情况下Splits和Task和Partition数是一一对应的,数量是一样的; 1.如果在没有指定分区数的时候,默认的是sc.defaultMinPartitions=min(sc.defaultParallelism,2)。也就是sc.defaultMinPartitions只有两个值1和2,当sc.defaultParallelism>1时值为2,当sc.defaultParallelism=1时,值为1; 2.如果是读取HDFS的文件的话,分区是当我们计原创 2020-05-29 16:27:33 · 1402 阅读 · 0 评论 -
源码分析 --- 谈谈Java中的线程安全集合
首先集合中线程安全的有如下: Vector Stack HashTable Enumeration 一、为什么Vector线程安全? Vector的所有操作都被同步了,既然被同步了,多线程就不可能同时访问Vector中的数据,只能一个一个地方问,所以不会出现数据混乱的情况,线程是安全的。 下图是Vector源码的部分,其中Vector is synchronized,表示Vector的操作是同步的; ...原创 2020-05-20 10:39:03 · 440 阅读 · 0 评论 -
源码分析 --- Kafka的幂等性机制和幂等性过程源码分析
一、什么是消息队列的幂等性? Kafka这里的幂等性指的是一般Producer发送了多少消息,consumer就消费了多少消息,保证了消费的唯一性,也是符合exactly-once语义的操作; 不会发生消息丢失或者消息重复的情况; 二、首先看一下Kafka的消息传输中的三种语义: 消息最多发送一次(At-Most-Once) 消息已经发出,不管收没收到,会存在消息丢失的情况; 通过配置实现 ..原创 2020-05-20 17:55:54 · 704 阅读 · 0 评论 -
源码分析 --- HDFS 数据读、写操作流程和用户指令交互
一、这里首先介绍源码中的四个主要关键类(主要用于用户的hdfs dfs...命令交互实现、数据的读取、数据的写入) DFSClient: HDFS 客户端(如下是源码DFSClient类中的客户端说明信息,这里简述了使用ClientProtocol去访问NameNode线程以及连接DataNode数据目录去读写数据块); DFSClient can connect to a Hadoop Filesystem and perform..原创 2020-05-25 17:58:13 · 514 阅读 · 0 评论 -
源码分析 --- Java中为什么重写equals()方法的时候一定要重写hashCode()方法?
小朋友,是否有很多问号??? 零、读这里这里之前,我一定要说的一个观点。重写equals()方法一定要重写hashCode()方法吗? 我的回答是不一定,也是比较片面的,当我们需求只用到了equals方法去判断对象是否相同的时候,则就没必要考虑hashCode()是否一致; 因此这里的一定?或者不一定?完全看需求,但是整体上为了代码专业度、健壮性、balabal来说建议重写; 与此同时Java的源码中有相应的结论,要hashCode与equals..原创 2020-05-26 01:10:09 · 588 阅读 · 0 评论 -
源码分析 --- MapReduce如何确定任务的SplitSize、Splits、Map、Reduce
一、结论: 1.SplitsSize = Math.max(minSize, Math.min(maxSize, blockSize)) = 默认的Maxth.Max(minSize=1, Math.min(maxSize=Long的最大值,64或者128或者256M)) = 64M/128M/256M; 参数一:其中 minSize:long minSize = Math.max(getFormatMinSplitSize(), getMinSplitSize(...原创 2020-05-28 23:43:59 · 594 阅读 · 0 评论