3 瓜牛呱呱

尚未进行身份认证

Hope is a good thing

等级
TA的排名 6w+

JDK源码-HashMap-resize扩容方法(JDK7和JDK8)

扩容操作可以认为是HashMap源码中最复杂的resize方法的不是public的,不能通过client触发,所以只能直接进入源码查看JDK7voidresize(intnewCapacity){ Entry[]oldTable=table; intoldCapacity=oldTable.length; if(oldCapacity==MAXIMUM_C...

2018-11-09 16:07:13

JDK源码-HashMap-remove方法(JDK7和JDK8)

测试代码/***测试remove操作的区别*/@Testpublicvoidremove(){HashMap<String,String>map=newHashMap();map.put("aa","aa");map.remove(&am

2018-11-09 11:49:21

JDK源码-HashMap-put方法(JDK7和JDK8)

下面是对HashMap中put方法的源码进行注释测试代码/***测试put操作的区别*/@Testpublicvoidput(){HashMap<String,String>map=newHashMap();map.put("aa","aa");}JDK7...

2018-11-09 10:34:53

Java实现斐波那契数列(递归、遍历、矩阵)

什么是斐波那契数列其实很简单,可以理解为:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)比如这样一个数列:1、1、2、3、5、8、13、21、34、……有兴趣可以看百度百科下面我们就来实现,给定一个n,求f(n)的值递归解法递归方法其实是对方法定义完美的一对一实现,但是时间复杂度为O(2的n次方)代码如下:/**...

2018-09-27 20:23:24

Java实现二叉树——增删改查

今天心血来潮,突然想写个二叉树的类,哈哈~功能代码如下:packagetree;/***傻逼tree*@authorlwj*@date2018/9/20*/publicclassMyTree<KextendsComparable,V>{TreeNoderoot;/***插入操作*@p...

2018-09-20 13:02:54

JDK1.8中TreeMap源码解析——红黑树删除

在看本文之前建议先看一下二叉树的删除过程,这里有一篇文章写得不错,可以看一下1、后继节点在看源码之前,先说说红黑树寻找待删除节点t的后继节点的过程:如果待删除节点t有右节点,那么后继节点为该节点右子树中最左的节点,也就是右子树中值最小的节点如果待删除节点t无右节点,那么后继节点是向上遍历过程中第一个向左拐的父节点图解过程如下:注:图片来源该过程对应的TreeMap...

2018-09-19 13:10:04

Flume中Memory Channel参数说明

参数说明capacity在channel中最多能保存多少个event。默认是100transactionCapacity在每次从source中获取数据或者将数据sink出去的一次事务操作中,最多处理的event数。默认是100byteCapacity在channel中最多能容纳所有eventbody的总字节数。默认是JVM最大可用内存(-...

2018-09-18 17:10:19

记用 SpringBoot 消费 Kafka 过程中的一次问题排查

1、现象最近在接受公司Kafka的集群,之前公司重启一台服务器的时候出现重复消费的情况,所以就跟消费端的服务一起联调查册。消费端目前有两个服务,但是在测试的过程中发现其中一个服务可以接受到数据,但是另一个服务端却接受不到数据。于是查看了一下它的日志,关键日志如下:[INFO]org.apache.kafka.clients.consumer.internals.AbstractCoord...

2018-07-04 20:35:02

Kafka Producer生产数据时数据丢失分析

今天在测试Storm程序过程中,想通过运行在idea的KafkaProducer生产一条数据来验证一下Storm程序,发现居然没有成功将数据生产到Kafka集群中,于是进行了一番测试,最终找到了原因!注:下面程序测试中使用的kafka的版本为0.10.2.0,zookeeper的版本为3.4.5一、情景再现在linux中运行如下命令来监控...

2018-05-10 15:59:05

SparkML之推荐引擎(二)—— 推荐模型评估

本文内容和代码是接着上篇文章来写的,推荐先看一下哈~我们上一篇文章是写了电影推荐的实现,但是推荐内容是否合理呢,这就需要我们对模型进行评估针对推荐模型,这里根据均方差和K值平均准确率来对模型进行评估,MLlib也对这几种评估方法都有提供内置的函数在真实情况下,是要不断地对推荐模型的三个关键参数rank、iterations、lambda分别选取不同的值,然后...

2018-05-04 10:35:24

SparkML之推荐引擎(一)—— 电影推荐

本文将使用SparkML来构建推荐引擎。推荐引擎算法大致分为基于内容的过滤、协同过滤、矩阵分解,本文将使用基于属于矩阵分解的最小二乘法算法来构建推荐引擎。对于推荐引擎模块这里将分为两篇文章,第一篇文章主要是以实现推荐功能为主,第二篇文章主要是对模型进行评估文章将按照以下章节来进行书写:需求分析、获取数据、提取特征、训练模型、使用模型(推荐)一、需求分...

2018-05-02 18:17:24

SparkStreaming Direct 方式中手动管理 Kafka Offset 的示例代码

在大数据的场景下,流式处理都会借助Kafka作为消息接入的中间件,且SparkStreaming中Direct方式的优越性,现在可以说都使用Direct方式来获取Kafka数据Direct方式是采用Kafka低级的API来获取数据,也就是说我们要自己来管理这个offsetSparkStreaming中可以用StreamingContext的chec...

2018-04-25 16:17:26

Redis SortedSet 中 score 的精度问题

一、问题发现通过jedis往sortedset中添加了个成员,并且设定了一个Double类型的分数时,精度出现了问题测试代码如下:@Testpublicvoidzadd(){jedis.zadd("test:cli",13.36,"mb1");}如果用jedis的api来获取score的话一切正常@Testpublicvo...

2018-04-23 14:39:21

【源码追踪】SparkStreaming 中用 Direct 方式每次从 Kafka 拉取多少条数据(offset取值范围)

我们知道SparkStreaming用Direct的方式拉取Kafka数据时,是根据kafka中的fromOffsets和untilOffsets来进行获取数据的,而fromOffsets一般都是需要我们自己管理的,而每批次的untilOffsets是由Driver程序自动帮我们算出来的。于是产生了一个疑问:untilOffsets是怎么算出来的?接下...

2018-04-19 16:37:12

JVM垃圾收集器(五) —— 默认的垃圾收集器

在前面的几篇文章讲述了各种垃圾收集器,但是问题来了,我们在Linux或者Windows安装的jdk默认是什么收集器呢?打开控制台,在控制台中输入一下命令:java-XX:+PrintCommandLineFlags-version32位的windows可以看到下面的输出:-XX:InitialHeapSize=16777216-XX:MaxHeapSize=2...

2018-04-18 12:00:01

JVM垃圾收集器(四) —— G1收集器

前面两篇文章主要是讲了新生代和老年代的垃圾收集器,本文就来介绍一下比较特殊的垃圾收集器——G1垃圾收集器G1是一款面向服务端应用的垃圾收集器。一、G1的特点:1、并行与并发:G1能充分利用多CPU、多核环境下的硬件优势,使用多个CPU(CPU或者CPU核心)来缩短Stop-The-World停顿的时间,部分其他收集器原本需要停顿Java线程执行的GC动作,G1收集器仍然可以...

2018-04-17 18:33:01

JVM垃圾收集器(三) —— 老年代垃圾收集器

上一篇文章讲了新生代的垃圾收集器,这篇文章我们来讲讲老年代的垃圾收集器SerialOld收集器1、说明:一个单线程收集器,使用“标记-整理”算法。其实就是Serial收集器老年代的版本2、优缺点和运行图和Serial收集器一样,所以这里就不多赘述了ParallelOld收集器1、说明:ParallelOld是ParallelScavenge收集...

2018-04-17 17:34:24

JVM垃圾收集器(二) —— 新生代垃圾收集器

在看本文之前,建议先去了解一下几个概念先再来看下文哈,大牛请忽略,哈哈~所有收集器概括图下面先给大家看一下所有收集器及其关联的示意图,然后我们再对每个回收器进行讲解:★★★注意:如果两个收集器之间存在连线,就说明它们可以搭配使用Serial收集器1、特点:一个单线程的收集器;且运行时必须暂停其他所有的工作线程,直到它收集结束2、虚拟机运行在Client模式...

2018-04-17 16:02:10

JVM垃圾收集器(一) —— 概念:新生代和老年代、并行和并发

在上篇文章中我们讲到了垃圾回收的几种算法。垃圾收集算法是内存回收的方法论,而垃圾收集器是垃圾回收的具体实现。在了解垃圾收集器之前,本篇文章先来简单的说一下新生代和老年代、并行和并发的概念。新生代和老年代从内存回收的角度来看,一般我们可以将Java堆分为:新生代和老年代。新生代再细分可以分为Eden空间、FromSurvivor空间、ToSurvivor空间1、...

2018-04-17 15:58:25

JVM垃圾回收集算法 —— 标记-清除算法、复制算法、标记-整理算法

标记-清除算法1、执行过程:如同它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象2、该算法是回收算法中最基础的算法,其他的算法都是基于该算法进行改进的3、缺点:(1)效率问题:标记和清除两个过程的效率都不高(2)空间问题:标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配...

2018-04-17 11:24:50

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!