<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_45873533的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_45873533</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_45873533]]></copyright><item><title><![CDATA[2月20离职，开始新的生活和工作，工作的第二站，会是在哪里呢]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/113849158</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/113849158</guid><author>qq_45873533</author><pubDate>Thu, 18 Feb 2021 16:39:24 +0800</pubDate><description><![CDATA[摸鱼中

]]></description><category></category></item><item><title><![CDATA[switch 语句能否作用在 byte 上，能否作用在 long 上，能否作用在 String 上?]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/108089011</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/108089011</guid><author>qq_45873533</author><pubDate>Tue, 18 Aug 2020 22:09:47 +0800</pubDate><description><![CDATA[在 switch（expr1）中，expr1 只能是一个整数表达式或者枚举常量（更大字体），整数表达 式可以是 int 基本类型或 Integer 包装类型。
由于byte,short,char 都可以隐含转换为 int，所 以，这些类型以及这些类型的包装类型也是可以的。显然， long 和 String 类型都不符合 switch 的语法规定，并且不能被隐式转换成 int 类型，所以，它们不能作用于 swtich 语句中。

...]]></description><category></category></item><item><title><![CDATA[JVM GC（垃圾回收机制）]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107923393</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107923393</guid><author>qq_45873533</author><pubDate>Mon, 10 Aug 2020 22:09:20 +0800</pubDate><description><![CDATA[在学习Java GC 之前，我们需要记住一个单词：stop-the-world 。它会在任何一种GC算法中发生。stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行。当stop-the-world 发生时，除GC所需的线程外，所有的线程都进入等待状态，直到GC任务完成。GC优化很多时候就是减少stop-the-world 的发生。

...]]></description><category></category></item><item><title><![CDATA[什么是线程安全？]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107872163</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107872163</guid><author>qq_45873533</author><pubDate>Fri, 07 Aug 2020 22:59:37 +0800</pubDate><description><![CDATA[如果你的代码所在的进程中有多个线程在同时运行，而这些线程可能会同时运行这段代码；如果每次运行结果和单线程运行的结果是一样的，而且其他的变量的值也和的是一样的，就是线程安全的。或者说：一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性，也就是说我们不用考虑同步的问题。
线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作，而无写操作，一般来说，这个全局变量是线程安全的；若有多个线程同时执行写操作，一般都需要考虑线程同步，否]]></description><category></category></item><item><title><![CDATA[二叉树的特点]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107851328</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107851328</guid><author>qq_45873533</author><pubDate>Thu, 06 Aug 2020 22:31:41 +0800</pubDate><description><![CDATA[1）树执行查找、删除、插入的时间复杂度都是O(logN)
2）遍历二叉树的方法包括前序、中序、后序
3）非平衡树指的是根的左右两边的子节点的数量不一致
4） 在非空二叉树中，第i层的结点总数不超过 , i&gt;=1；
5）深度为h的二叉树最多有个结点(h&gt;=1)，最少有h个结点；
6）对于任意一棵二叉树，如果其叶结点数为N0，而度数为2的结点总数为N2，则N0=N2+1；

...]]></description><category></category></item><item><title><![CDATA[二叉树概念]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107851281</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107851281</guid><author>qq_45873533</author><pubDate>Thu, 06 Aug 2020 22:30:45 +0800</pubDate><description><![CDATA[1.树有很多种，每个节点最多只能有两个子节点的一种形式为二叉树。
2.二叉树的字节点分为左节点和右节点。
3.如果该二叉树的所有叶子节点都在最后一层，并且节点总数=2^n-1,n为层数，则我们称为满二叉树。
4.如果该节点的所有叶子节点都在最后一层或者倒数第二层，而且最后一层的叶子节点在左边连续，倒数第二层的叶子节点在右边连续，则我们称为完全二叉树。

...]]></description><category></category></item><item><title><![CDATA[冒泡排序 时间复杂度 O(n^2) 空间复杂度O(1)]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107803236</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107803236</guid><author>qq_45873533</author><pubDate>Tue, 04 Aug 2020 23:04:32 +0800</pubDate><description><![CDATA[*/
public class BubbleSort {
public static void bubbleSort(int[] data) {
  System.out.println("开始排序");
  int arrayLength = data.length;

  for (int i = 0; i &lt; arrayLength - 1; i++) {

     boolean flag = false;

     for (int j = 0; j &lt; arrayLength -]]></description><category></category></item><item><title><![CDATA[FileChannel优化]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107774787</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107774787</guid><author>qq_45873533</author><pubDate>Mon, 03 Aug 2020 22:16:02 +0800</pubDate><description><![CDATA[通过配置dataDirs指向多个路径，每个路径对应不同的硬盘，增大Flume吞吐量。
官方说明如下：
Comma separated list of directories for storing log files. Using multiple directories on separate disks can improve file channel peformance
checkpointDir和backupCheckpointDir也尽量配置在不同硬盘对应的目录中，保证checkpoint坏掉后]]></description><category></category></item><item><title><![CDATA[RDD 五大特性]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107602034</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107602034</guid><author>qq_45873533</author><pubDate>Sun, 26 Jul 2020 23:23:11 +0800</pubDate><description><![CDATA[1、RDD 是由一系列的分区组成。
2、操作一个 RDD 实际上操作的是 RDD 的所有分区。
3、RDD 之间存在各种依赖关系。
4、可选的特性，key-value 型的 RDD 是通过 hash 进行分区。
5、RDD 的每一个分区在计算时会选择最佳的计算位置。

...]]></description><category></category></item><item><title><![CDATA[Spark 的特点]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107586495</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107586495</guid><author>qq_45873533</author><pubDate>Sat, 25 Jul 2020 22:44:55 +0800</pubDate><description><![CDATA[1）快速：基于内存的计算比 MapReduce 快 100 倍，基于磁盘快 10 倍。
2）易用：编写一个 spark 的应用程序可以使用  Java, Scala, Python, R，这就使得我们的开发非常地灵活。并且，对比MapReduce,spark 内置了 80 多个高级操作，这使得开发十分高效和简单。
3）运行范围广：spark 可以运行在 local、yarn、mesos、standalone、kubernetes 等多种平台之上。它可以访问诸如 HDFS, Cassandra, HBase,]]></description><category></category></item><item><title><![CDATA[fsimage 和 edit 的区别]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107570803</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107570803</guid><author>qq_45873533</author><pubDate>Fri, 24 Jul 2020 22:20:10 +0800</pubDate><description><![CDATA[当 NN,SN 要进行数据同步时叫做 checkpoint 时就用到了 fsimage 与 edit，fsimage 是保存最新的元数据的信息，当 fsimage 数据到一定的大小事会去生成一个新的文件来保存元数据的信息，这个新的文件就是 edit，edit 会回滚最新的数据。

...]]></description><category></category></item><item><title><![CDATA[zookeeper 是如何保证事务的顺序一致性的？]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107549665</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107549665</guid><author>qq_45873533</author><pubDate>Thu, 23 Jul 2020 22:29:59 +0800</pubDate><description><![CDATA[zookeeper 采用了递增的事务 Id 来标识，所有的 proposal（提议）都在被提出的时候加上了 zxid， zxid 实际上是一个 64 位的数字，高 32 位是 epoch （时期;  纪元;  世;  新时代）用来标识 leader 是否发生改变，如果有新的 leader 产生出来，epoch 会自增，低 32 位用来递增计数。当新产生 proposal 的时候，会依据数据库的两阶段过程，首先会向其他的 server 发出事务执行请求，如果超过半数的机器都能执行并且能够成功，那么就会开始执行]]></description><category></category></item><item><title><![CDATA[Zookeeper 同步流程]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107525634</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107525634</guid><author>qq_45873533</author><pubDate>Wed, 22 Jul 2020 22:59:42 +0800</pubDate><description><![CDATA[1、Leader 等待 server 连接；
2、Follower 连接 leader，将最大的 zxid 发送给 leader；
3、Leader 根据 follower 的 zxid 确定同步点；
4、完成同步后通知 follower  已经成为 uptodate 状态；
5、Follower 收到 uptodate 消息后，又可以重新接受 client 的请求进行服务了。

...]]></description><category></category></item><item><title><![CDATA[zookeeper 是如何保证事务的顺序一致性的？]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107510244</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107510244</guid><author>qq_45873533</author><pubDate>Wed, 22 Jul 2020 12:02:06 +0800</pubDate><description><![CDATA[zookeeper 采用了递增的事务 Id 来标识，所有的 proposal（提议）都在被提出的时候加上了 zxid， zxid 实际上是一个 64 位的数字，高 32 位是 epoch （时期;  纪元;  世;  新时代）用来标识 leader 是否发生改变，如果有新的 leader 产生出来，epoch 会自增，低 32 位用来递增计数。当新产生 proposal 的时候，会依据数据库的两阶段过程，首先会向其他的 server 发出事务执行请求，如果超过半数的机器都能执行并且能够成功，那么就会开始执行]]></description><category></category></item><item><title><![CDATA[Zookeeper 工作原理]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107510180</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107510180</guid><author>qq_45873533</author><pubDate>Wed, 22 Jul 2020 12:00:05 +0800</pubDate><description><![CDATA[Zookeeper  的核心是原子广播，这个机制保证了各个 Server 之间的同步。实现这个机制的协议叫做 Zab 协议。Zab 协议有两种模式，它们分别是恢复模式（选主）和广播模式（同步） 。当服务启动或者在领导者崩溃后， Zab 就进入了恢复模式，当领导者被选举出来，且大多数 Server 完成了和  leader 的状态同步以后，恢复模式就结束了。状态同步保证了 leader 和 Server 具有相同的系统状态。

...]]></description><category></category></item><item><title><![CDATA[hadoop 的 TextInputFormat 作用是什么，如何自定义实现]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107476133</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107476133</guid><author>qq_45873533</author><pubDate>Mon, 20 Jul 2020 22:31:33 +0800</pubDate><description><![CDATA[InputFormat 会在 map 操作之前对数据进行两方面的预处理。
1.是 getSplits，返回的是 InputSplit 数组，对数据进行 Split 分片，每片交给 map 操作一次。
2.是 getRecordReader，返回的是 RecordReader 对象，对每个 Split 分片进行转换为 keyvalue 键值对格式传递给 map 常用的 InputFormat 是 TextInputFormat ，使用的是LineRecordReader 对每个分片进行键值对的转换，以行偏移量]]></description><category></category></item><item><title><![CDATA[Storm和Spark Streaming的区别]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107443502</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107443502</guid><author>qq_45873533</author><pubDate>Sun, 19 Jul 2020 12:28:37 +0800</pubDate><description><![CDATA[1.Spark  Streaming 最低可在 0.5 秒~2 秒内做一次处理，而 Storm 最快可达到 0.1 秒，在实时性和容错性上，Spark Streaming 不如Strom
2.Spark Streaming 的集成性优于 Storm,可以通过 RDD 无缝对Spark 上的所有组件，还可以很容易的与 kafka,flume 等分布式框架进行集成。
3.在数据吞吐量上，Spark Streaming 要远远优于 Storm。
综上所诉，Spark Streaming 更适用于大数据流式处理。
]]></description><category></category></item><item><title><![CDATA[hbase中scan和get的功能以及实现的异同]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107436061</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107436061</guid><author>qq_45873533</author><pubDate>Sat, 18 Jul 2020 22:01:35 +0800</pubDate><description><![CDATA[HBase 的查询实现只提供两种方式：
1、按指定 RowKey  获取唯一一条记录，get 方法（org.apache.hadoop.hbase.client.Get）
Get  的方法处理分两种  :  设置了 ClosestRowBefore  和没有设置的 rowlock .主要是用来保证行的事务性，即每个 get  是以一个 row  来标记的.一个 row 中可以有很多 family  和column.
2、按指定的条件获取一批记录， scan 方法(org.apache.Hadoop.hbas]]></description><category></category></item><item><title><![CDATA[hbase的rowkey设计原则]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107419953</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107419953</guid><author>qq_45873533</author><pubDate>Fri, 17 Jul 2020 23:09:20 +0800</pubDate><description><![CDATA[Rowkey 长度原则
Rowkey  是一个二进制码流，Rowkey  的长度被很多开发者建议说设计在 10~100  个字节，不过建议是越短越好，不要超过 16  个字节。
原因如下：
（1）数据的持久化文件 HFile  中是按照 KeyValue  存储的，如果 Rowkey  过长比如 100 个字节，1000  万列数据光 Rowkey  就要占用 100*1000  万=10  亿个字节，将近 1G  数据，这会极大影响 HFile  的存储效率；
（2）MemStore  将缓存部分数据到内]]></description><category></category></item><item><title><![CDATA[hbase 的特点]]></title><link>https://blog.youkuaiyun.com/qq_45873533/article/details/107396331</link><guid>https://blog.youkuaiyun.com/qq_45873533/article/details/107396331</guid><author>qq_45873533</author><pubDate>Thu, 16 Jul 2020 22:45:02 +0800</pubDate><description><![CDATA[(1) Hbase 一个分布式的基于列式存储的数据库,基于 Hadoop 的 hdfs 存储， zookeeper 进行管理。
(2)  Hbase 适合存储半结构化或非结构化数据，对于数据结构字段不够确定或者杂乱无章很难按一个概念去抽取的数据。
(3) Hbase 为 null 的记录不会被存储.
(4)基于的表包含 rowkey，时间戳，和列族。新写入数据时，时间戳更新，同时可以查询到以前的版本.
(5) hbase 是主从架构。hmaster 作为主节点，hregionserver 作为从节点。

.]]></description><category></category></item></channel></rss>