<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pengchengqing的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/pengchengqing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; pengchengqing]]></copyright><item><title><![CDATA[Spark 和 kafka 集成  Spark Streaming + Kafka Integration Guide (Kafka broker version 0.10.0 or higher)]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/79068609</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/79068609</guid><author>pengchengqing</author><pubDate>Tue, 16 Jan 2018 09:52:40 +0800</pubDate><description><![CDATA[Kafka 0.10 与 Spark Streaming 流集成在设计上与0.8 Direct Stream 方法类似。它提供了简单的并行性，Kafka分区和Spark分区之间的1:1对应，以及对偏移量和元数据的访问。然而，由于新的集成使用了新的  Kafka consumer API 而不是简单的API，所以在使用方面有显著的差异。这个版本的集成被标记为实验性的，因此API有可能发生变化。
链]]></description><category></category></item><item><title><![CDATA[spark streaming  kafka offset commit]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/79035234</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/79035234</guid><author>pengchengqing</author><pubDate>Thu, 11 Jan 2018 15:59:54 +0800</pubDate><description><![CDATA[由于spark的
  rdd.asInstanceOf[HasOffsetRanges].offsetRanges

这个操作：
stream.foreachRDD { rdd =>
  val offsetRanges = rdd.asInstanceOf[HasOffsetRanges].offsetRanges
  rdd.foreachPartition { iter =>
   ]]></description><category></category></item><item><title><![CDATA[HBase delete 删除不掉 排查]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/79033370</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/79033370</guid><author>pengchengqing</author><pubDate>Thu, 11 Jan 2018 13:56:42 +0800</pubDate><description><![CDATA[hbase delete 踩坑

今日问题：
看如下的解释

删除指定的所有版本以及删除指定列删除指定列的最新版本,意思就是：如果删除了最新的版本，查询的时候就会返回第二新的版本了
/**
 * Delete all versions of the specified column.
 * @param family family name
 * @param qualifier co]]></description><category></category></item><item><title><![CDATA[关于Spark Streaming 如何进行commit kafka的offset]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/79033171</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/79033171</guid><author>pengchengqing</author><pubDate>Thu, 11 Jan 2018 13:40:28 +0800</pubDate><description><![CDATA[收到就提交提交方式 记为 X：接收到数据就会直接commit，假如某个batch失败，重启job，则消费会从上次commit的offset消费，所以会导致失败的那个batch的部分数据丢失。

batch结束才commit的方式 记为 Y:  会有消息重复消费的问题。如果要保证消费的逻辑的正确性，则需要做处理逻辑是幂等的。

举例：假设三个batch,每个batch有三条消息

 t1]]></description><category></category></item><item><title><![CDATA[Spark Streaming 和kafka 集成指导（kafka 0.8.2.1 或以上版本）]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/79020593</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/79020593</guid><author>pengchengqing</author><pubDate>Wed, 10 Jan 2018 10:28:14 +0800</pubDate><description><![CDATA[本节介绍一下如何配置Spark Streaming 来接收kafka的数据。有两个方法：
1、老的方法 -使用Receivers 和kafka的高级API
2、新的方法（ Spark 1.3 开始引入）-不适用Receivers。这两个方式拥有不同的编程模型，性能特征和语义保证，为了获得更多细节，继续往下读。对于目前的版本的spark。这两个方式都是稳定的。

方法1 基于Receiver]]></description><category></category></item><item><title><![CDATA[maven deploy return code is :401]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/76151756</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/76151756</guid><author>pengchengqing</author><pubDate>Wed, 26 Jul 2017 16:17:00 +0800</pubDate><description><![CDATA[入职新公司，mvn  deploy提示 以下错误。
Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy (default-deploy) on project wand: Failed to deploy artifacts: Could not transfer artifact com]]></description><category></category></item><item><title><![CDATA[spring-boot mybatis 集成]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/75099842</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/75099842</guid><author>pengchengqing</author><pubDate>Fri, 14 Jul 2017 11:15:35 +0800</pubDate><description><![CDATA[mybatis的集成有两种 一个是基于注解的 一种是基于xml的，我这使用的是基于xml的
1、maven 配置
		
		
    		mysql
    		mysql-connector-java
    		5.1.21
		
		
		
			org.mybatis.spring.boot
			mybatis-spring-boot-starter
			1.3.0
		
2、直]]></description><category></category></item><item><title><![CDATA[spring boot 添加自定义配置文件并读取属性]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/75098397</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/75098397</guid><author>pengchengqing</author><pubDate>Fri, 14 Jul 2017 11:01:28 +0800</pubDate><description><![CDATA[spring 属性文件默认配置文件是从application.properties读取的,
但是我想把配置文件分开，比如 业务的我想放在biz.properties, 客户端配置的放在client.properties ，
但是注入呢，经过测试可以这么做
比如]]></description><category></category></item><item><title><![CDATA[io对比分析]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/73332456</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/73332456</guid><author>pengchengqing</author><pubDate>Fri, 16 Jun 2017 16:08:21 +0800</pubDate><description><![CDATA[1 同步阻塞IO


用户线程通过系统调用read发起IO读操作，由用户空间转到内核空间。内核等到数据包到达后，然后将接收的数据拷贝到用户空间，完成read操作。

用户线程使用同步阻塞IO模型的伪代码描述为：

{

read(socket, buffer);

process(buffer);

}
2同步非阻塞IO
用户线程系统系统调用read 后直接返回，然后]]></description><category></category></item><item><title><![CDATA[concurrentHashMap 实现]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/72998415</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/72998415</guid><author>pengchengqing</author><pubDate>Sat, 10 Jun 2017 17:59:50 +0800</pubDate><description><![CDATA[【转】

并发编程实践中，ConcurrentHashMap是一个经常被使用的数据结构，相比于Hashtable以及Collections.synchronizedMap()，ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力，但同时降低了对读一致性的要求（这点好像CAP理论啊O(∩_∩)O）。ConcurrentHashMap的设计与实现非常精巧，大量的利用了vola]]></description><category></category></item><item><title><![CDATA[自动装箱拆箱]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/72972846</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/72972846</guid><author>pengchengqing</author><pubDate>Fri, 09 Jun 2017 23:27:36 +0800</pubDate><description><![CDATA[public static void main(String[] args) {
        Integer a=1;
        Integer b=2;
        Integer c=3;
        Integer d=3;
        Integer e=321;
        Integer f=321;
        Long g=3l;
        Sy]]></description><category></category></item><item><title><![CDATA[聚簇索引]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/72934865</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/72934865</guid><author>pengchengqing</author><pubDate>Thu, 08 Jun 2017 21:01:08 +0800</pubDate><description><![CDATA[聚簇索引 数据行和索引存储在一起，数据行存储在索引的叶子节点上，每个叶子节点不仅函数索引项还有其他数据列，非叶节点只保存索引值]]></description><category></category></item><item><title><![CDATA[jvm工具]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/72934390</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/72934390</guid><author>pengchengqing</author><pubDate>Thu, 08 Jun 2017 20:24:46 +0800</pubDate><description><![CDATA[1 打印 堆快照 heapdump
jmap -dump:format=b,file=123.bin pid(进程)
jmap -heap 打印内存信息


2 打印 线程快照 threaddump
jstack -l pid]]></description><category></category></item><item><title><![CDATA[CMS 收集器过程]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/72934090</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/72934090</guid><author>pengchengqing</author><pubDate>Thu, 08 Jun 2017 19:25:51 +0800</pubDate><description><![CDATA[1 初始标记（STW）
  标记GC Roots 直接关联对象
2 并发标记
 
3 重新标记 STW
 修正产生变动的对象的标记
4 并发清除
5 重置线程]]></description><category></category></item><item><title><![CDATA[parallel scavenge 与parnew 区别]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/72934069</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/72934069</guid><author>pengchengqing</author><pubDate>Thu, 08 Jun 2017 19:18:21 +0800</pubDate><description><![CDATA[两者都是复制算法，都是并行处理，但是不同的是，paralel scavenge 可以设置最大gc停顿时间（-XX:MaxGCPauseMills）以及gc时间占比(-XX:GCTimeRatio)，]]></description><category></category></item><item><title><![CDATA[功能平台化思考]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/72900355</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/72900355</guid><author>pengchengqing</author><pubDate>Wed, 07 Jun 2017 15:34:26 +0800</pubDate><description><![CDATA[将一些通用的功能组合成统一的功能结构，创建新的应用和平台]]></description><category></category></item><item><title><![CDATA[jvm 新生代]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/60874072</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/60874072</guid><author>pengchengqing</author><pubDate>Wed, 08 Mar 2017 15:56:24 +0800</pubDate><description><![CDATA[前言 
JVM GC是JVM的内存回收算法，调整JVM GC(Garbage Collection)，可以极大的减少由于GC工作，而导致的程序运行中断方面的问题，进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程，所以我们要了解JVM内存组成，回收算法，对象分配机制。
 
JVM 堆内存组成
Java堆由Perm区和Heap区组成，Heap区由Old区和New区（也叫Y]]></description><category></category></item><item><title><![CDATA[垃圾收集与内存分配策略]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/53704906</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/53704906</guid><author>pengchengqing</author><pubDate>Sat, 17 Dec 2016 11:10:38 +0800</pubDate><description><![CDATA[一、判断对象是否已经不会被使用
      1、引用计数算法
 对象每被引用一次，对象的引用计数器加1，反之减1 问题 ：循环应用不能解决
       2、可达性分析算法
 GC Roots到该对象否有引用链 
二、垃圾收集算法
     1、标记清除算法
      2、复制算法
新生代都采用这个算法，参数-XX:ServiorRatio
                Ed]]></description><category></category></item><item><title><![CDATA[java虚拟机运行数据区笔记]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/53704596</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/53704596</guid><author>pengchengqing</author><pubDate>Sat, 17 Dec 2016 10:28:43 +0800</pubDate><description><![CDATA[方法区：类的信息，常量池，静态变量
堆：
本地方法栈：执行native方法提供服务
虚拟机栈：执行java方法提供服务
程序计数器：保存执行指令的行数]]></description><category></category></item><item><title><![CDATA[java堆详解]]></title><link>https://blog.youkuaiyun.com/pengchengqing/article/details/53613016</link><guid>https://blog.youkuaiyun.com/pengchengqing/article/details/53613016</guid><author>pengchengqing</author><pubDate>Tue, 13 Dec 2016 20:26:21 +0800</pubDate><description><![CDATA[摘要: 堆设置 -Xms :初始堆大小 -Xmx :最大堆大小 -XX:NewSize=n :设置年轻代大小 -XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3，表示年轻代与年老代比值为1：3，年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如：3，表示Eden：Survi]]></description><category></category></item></channel></rss>