<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u014733604的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u014733604</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u014733604]]></copyright><item><title><![CDATA[设计模式回顾]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/95803510</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/95803510</guid><author>u014733604</author><pubDate>Sat, 13 Jul 2019 23:39:10 +0800</pubDate><description><![CDATA[设计模式本人比较倾向于敏捷开发的时候最好用（大神请忽略），总体设计比较倾向于自顶向下的设计。

设计模式主要是根据设计原则在不同场景的使用经验的出来的，我们站在巨人的肩膀上来看看吧。

http://c.biancheng.net/design_pattern/

本人面试问的最多的是：什么是面向对象，讲讲你的理解？往往很少人能说好，只能说面向对象有三大特征：封装、继承、多态。背过无数次深入...]]></description><category></category></item><item><title><![CDATA[多线程设计模式之两阶段停止]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/92434560</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/92434560</guid><author>u014733604</author><pubDate>Sun, 16 Jun 2019 23:30:50 +0800</pubDate><description><![CDATA[本人来自《java多线程实战指南》一书的内容

java多线程停止实际上是一个很复杂的任务，有各种各样的情况，比如：线程还有没有进行完的任务，比如还有处于阻塞状态的任务等等。那么怎么实现有效的停止呢？

 就像现实中的跑步一样，飞奔的过程中突然停止总是很难的，总需要一个准备阶段和一个打断的阶段。

我们先来看看线程的运行情况：

 

那么准备阶段我们需要做什么呢？

1.我们应该告诉线程...]]></description><category></category></item><item><title><![CDATA[领域驱动设计（二）]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/90552729</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/90552729</guid><author>u014733604</author><pubDate>Fri, 31 May 2019 00:40:58 +0800</pubDate><description><![CDATA[1.在分析模型中最难做的就是分离领域，如何分离领域？每层之间如何联系？每层做什么？我们为什么使用框架？

 只有分离领域才能将分而治之的思想用到，才能模块化具体化。从抽象概念到领域设计必经之路。

2.基本的模型划分：用户界面层=》应用层=》领域层=》基础设施层

3.面向对象的程序中，常常将业务对象直接写入用户界面、数据库访问等支持代码。而一些业务逻辑则会被嵌入到用户界面组件和数据库脚本中...]]></description><category></category></item><item><title><![CDATA[领域驱动设计]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/90416261</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/90416261</guid><author>u014733604</author><pubDate>Sat, 25 May 2019 22:48:45 +0800</pubDate><description><![CDATA[领域设计随着微服务的越来越火，领域设计也越来越火。

什么是领域设计？

一、了解领域设计，如何通过模型来吸收知识

 一些设计因素是技术上的。大批开发人员很注意培养自己的技能，并紧跟每一次技术进步。很多的应用程序主要的复杂性不在于技术上，而来自于领域本身、用户的活动或者业务。

领域设计注重领域模型的建立。模型：用来描绘人们所关注的现实或想法的某个方面，模型是一种简化。它是对现实的解释...]]></description><category></category></item><item><title><![CDATA[骚操作系列(一)]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/90140769</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/90140769</guid><author>u014733604</author><pubDate>Sun, 12 May 2019 21:11:37 +0800</pubDate><description><![CDATA[1.每当看到一些好的操作总会记录下来。这次看看hbase源码中的骚操作吧：

 一、创建对象：

     如何灵活增加删除接口的实现类呢？保证使用的时候只加载一次呢？看看hbase源码如何做的

     1.1


@InterfaceAudience.Private
public class CompatibilitySingletonFactory extend...]]></description><category></category></item><item><title><![CDATA[python爬取hbase信息]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/89600801</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/89600801</guid><author>u014733604</author><pubDate>Tue, 07 May 2019 22:44:11 +0800</pubDate><description><![CDATA[1.随着业务系统的越来越庞大，hbase的表越来越多，分区规则，TLL时间等需要时刻去维护。所以从0到1学会用python爬取hbase信息。

第一步下载hbase：https://mirrors.cnnic.cn/apache/hbase/1.3.3/

第二步解压：tar -zxvf hbase-1.3.3-bin.tar.gz

第三步下载hadoop :http://mirrors.ad...]]></description><category></category></item><item><title><![CDATA[python的日志]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/89438796</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/89438796</guid><author>u014733604</author><pubDate>Sun, 21 Apr 2019 22:01:22 +0800</pubDate><description><![CDATA[官方文档如下：

This module defines functions and classes which implement a flexible event logging system for applications and libraries.

这个模块定义函数和类可以用于应用程序和类库去实现灵活的日志系统。
The key benefit of having the loggi...]]></description><category></category></item><item><title><![CDATA[Kafka之生产者 笔记二]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/88959711</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/88959711</guid><author>u014733604</author><pubDate>Mon, 08 Apr 2019 21:15:27 +0800</pubDate><description><![CDATA[1.客户端请求分为响应式的请求和非响应式的请求：

 不需要响应的流程：

 开始发送请求-&gt;添加客户端请求到队列-&gt;发送请求-&gt;请求发送成功-&gt;从队列中删除请求-&gt;构造客户端响应。

需要响应的流程:
 开始发送请求-&gt;添加客户端请求到队列-&gt;发送请求-&gt;请求发送成功-&gt;等待接收响应-&gt;接收响应-&gt;...]]></description><category></category></item><item><title><![CDATA[Kafka之生产者 笔记一]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/88784368</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/88784368</guid><author>u014733604</author><pubDate>Sun, 31 Mar 2019 22:32:20 +0800</pubDate><description><![CDATA[文章内容选自《Kafka技术内幕图解》

1.消息系统通常是由三大块组成：生产者、消费者、消息代理。

 功能：生产者会将消息写入消息代理中，消费者会从消息代理中读取消息。对于消息代理而言，消费者和生产者都是客户端。

2.通信步骤：

 1.生产者客户端应用产生消息。

 2.生产者包装消息到请求头中，发送到客户端。

 3.服务端对象负责接收请求，并将消息以文件形式...]]></description><category></category></item><item><title><![CDATA[谈谈设计模式之观察者模式]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/88360391</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/88360391</guid><author>u014733604</author><pubDate>Sun, 17 Mar 2019 21:44:21 +0800</pubDate><description><![CDATA[观察者模式场景是什么？设计的本质是什么？

首次很多场景中都有观察者，观察者的功能是【发现和通知】。发现如何设计，通知又如何设计？

选自《大话设计模式》的场景。前台服务去观察老板是否回来，回来的话就通知同事不要玩游戏了。



对场景中的对象进行抽象



最终的模式图：



看一篇关于这个的博文：

https://www.cnblogs.com/fingerboy/p/6393644....]]></description><category></category></item><item><title><![CDATA[Structured Streaming之StateStoreProvider]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/88381517</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/88381517</guid><author>u014733604</author><pubDate>Sun, 10 Mar 2019 21:46:49 +0800</pubDate><description><![CDATA[这个类主要作用是状态更新，描述如下：

 An implementation of [[StateStoreProvider]] and [[StateStore]] in which all the data is backed by files in a HDFS-compatible file system.All updates to the store has to be don...]]></description><category></category></item><item><title><![CDATA[Java面试之JVM（一）]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/88069141</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/88069141</guid><author>u014733604</author><pubDate>Sun, 03 Mar 2019 16:08:09 +0800</pubDate><description><![CDATA[（JVM）请介绍类的加载过程，什么是父类委托机制（双亲委派模型不准确的叫法）？
加载过程有哪些？这些过程有什么作用？各个过程有问题又会怎么样？为什么叫做双亲委派模型？好处是什么？坏处是什么？有什么解决方式吗？

类加载：JVM将编译好的.class文件（字节码文件）以二进制流的方式加载到我们内存中，并且将二进制流中静态的数据结构转换成我们方法区中动态运行数据结构，并且在对堆内存生成一个java.l...]]></description><category></category></item><item><title><![CDATA[Hadoop全局排序报错]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/87523336</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/87523336</guid><author>u014733604</author><pubDate>Sun, 17 Feb 2019 12:26:32 +0800</pubDate><description><![CDATA[1.在多个reducetask的并且进行全局排序的时候报出错误：

 java.io.IOException:wrong key class: org.apache.hadoop.io.Text is not class org.apache.hadoop.io.LongWritable

这个问题原因是输入的Key和输出的key不一致导致的。为什么会导致这个问题呢？

Hadoop 全局排...]]></description><category></category></item><item><title><![CDATA[Spark之MetricsSystem]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/86727893</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/86727893</guid><author>u014733604</author><pubDate>Tue, 12 Feb 2019 23:24:41 +0800</pubDate><description><![CDATA[1.看启动start方法，spark中有哪些类调用了MetricsSystem类的start方法

  SparkEnv,Master,SparkContext,Worker,ExternalShuffleService,主要讲ExternalShuffleService

  ExternalShuffleService:这个类的作用是提供一个服务来读取shuffle程序，可以防止executo...]]></description><category></category></item><item><title><![CDATA[Spark源码之SparkListener]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/86670752</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/86670752</guid><author>u014733604</author><pubDate>Tue, 29 Jan 2019 23:57:33 +0800</pubDate><description><![CDATA[1.看看SparkListener提交的过程，如何提交的？


LiveListenerBus类中大小和存储结构，存储通过LinkedBlockingQueue来管理的，里面存放事件类型的数据。



private lazy val EVENT_QUEUE_CAPACITY = validateAndGetQueueSize()
private lazy val eventQueue...]]></description><category></category></item><item><title><![CDATA[sparkLauncher源码之LauncherServer]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/86653095</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/86653095</guid><author>u014733604</author><pubDate>Sat, 26 Jan 2019 23:41:38 +0800</pubDate><description><![CDATA[
1.这个类主要作用是接受消息然后调用listener监听


 *
 *         -----------------------                       -----------------------
 *         |      User App       |     spark-submit      |      Spark App      |
 * ...]]></description><category></category></item><item><title><![CDATA[SparkStreaming随笔之Receivcer]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/86557761</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/86557761</guid><author>u014733604</author><pubDate>Sat, 19 Jan 2019 23:20:36 +0800</pubDate><description><![CDATA[1.sparkstreaming的receiver启动流程。

     首先是:StreamingContext的start方法。

    然后到JobScheduler的start方法，这个时候已经产生了ReceiverTracker对象。

  ReceiverTracker对象调用了start方法。start方法中核心代码如下:

         if (!receiverInputS...]]></description><category></category></item><item><title><![CDATA[Sparkstreaming之JobScheduler]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/86514534</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/86514534</guid><author>u014733604</author><pubDate>Wed, 16 Jan 2019 22:56:41 +0800</pubDate><description><![CDATA[1.processEvent方法


//接口继承关系
private[scheduler] sealed trait JobSchedulerEvent
private[scheduler] case class JobStarted(job: Job, startTime: Long) extends JobSchedulerEvent
private[scheduler] case clas...]]></description><category></category></item><item><title><![CDATA[SparkStreaming之StreamingContext]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/86500033</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/86500033</guid><author>u014733604</author><pubDate>Tue, 15 Jan 2019 23:29:36 +0800</pubDate><description><![CDATA[ 

1.start


SparkStreaming 入口类，提供了大量根据不同数据源创建DStream的方法。
def start(): Unit = synchronized {
  state match {
  //INITIALIZED表示context被创建，但是并不没有开始它。输入流，转换，和输出操作都被创建。
    case INITIALIZED =&amp;gt;
//设置代表用户...]]></description><category></category></item><item><title><![CDATA[sparkSQL入数据库源码解析]]></title><link>https://blog.youkuaiyun.com/u014733604/article/details/86410032</link><guid>https://blog.youkuaiyun.com/u014733604/article/details/86410032</guid><author>u014733604</author><pubDate>Sun, 13 Jan 2019 11:24:33 +0800</pubDate><description><![CDATA[1.用sparkSQL入mysql和sparkcore入mysql有啥区别呢？我们看看sparksql源码:

写入:


df.write.jdbc(url1, "TEST.TRUNCATETEST", properties)

转化一下配置信息:


def jdbc(url: String, table: String, connectionProperties: Properties): ...]]></description><category></category></item></channel></rss>