自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chuxue1989的专栏

自己学习历程的记录,每天记录一点点

  • 博客(190)
  • 资源 (3)
  • 收藏
  • 关注

原创 【第十章】引入参数对象

Introduce parameter Object介绍如果函数的参数基本上会同时出现,那么你应该讲这些参数封装到一个对象中。例子经常使用,不介绍了

2020-06-07 13:09:55 242

原创 【第十章】将查询函数和修改函数分离

Separate Query from Modifier介绍这个是非常重要的,查询就会有返回结果,你如果在查询中还有修改动作,那么这个动作就被称为副作用。这种坏处非常多例子不介绍了,这个使用较多

2020-06-07 13:03:40 281

原创 【第八章】以状态或者策略取代类型码

Replace Type Code with State/Strategy介绍这个是针对ReplaceTypeCodeWithSubclasses的优化版本例子package com.gupao.reorganizedata_8;/** * * 这个是针对ReplaceTypeCodeWithSubclasses的优化版本。 * 如果类型码会改变,或者员工类已经有子类了,那么使用子类来代替类型码就不合适了。 * 比如在此例子中类型码发生了改变(升职加薪)就非常适合ReplaceTyp.

2020-06-05 09:43:55 645

原创 【第八章】以子类取代类型码

Replace Type Code with Subclass介绍这个其实是为了多态做准备的,也是为了消除if-then-else的【replace conditional with polymorphism】例子package com.gupao.reorganizedata_8;/** * * ENGINEER SALESMAN MANAGER都是类型码,不同的类型码会有不同的行为产生, * 比如任务的分配和薪水的计算 * * 下面是一个员工和薪水的例子,每个员工都有个类型码,.

2020-06-05 09:41:57 493

原创 【第九章】引入断言

Introduce Assertion这个需要和卫语句进行区分,卫语句一般会给出一个默认值,或者直接返回,断言是不满足条件直接返回异常所以断言适合,检查参数例子 public static void main(String[] args) { Integer i = null; Assert.notNull(i,"param i can't be null"); //normal logic }...

2020-06-05 09:17:08 259

原创 【第九章】卫语句

解释卫语句就是可以单独检查的语句,一般这种语句都是很少执行的分支,一旦遇到这类分支应该直接返回,或者特殊处理。在前面博客中移除控制语句中,用return来消除其实就是卫语句的应用。条件语句所有分支都是正常行为,那么适合if-then-else只有一种情况是正常行为,其他都是不常见的情况,这些不常见的情况就应该用卫语句来检查...

2020-06-04 22:01:42 309

原创 【第九章】移除控制标记

这个其实也很好理解,我最喜欢用return进行替换移除。至于书上说的cotinue 和break 感觉新手才会犯这种错误public isXX(){ if(start == null){ return false; } if( start = 0){ return true } //normal logic}

2020-06-04 21:26:43 192

原创 【第九章】分解条件表达式

这个很简单,但是很多人却不做。每次看到一个复杂的条件,就会很难理解这个条件表达的是什么,如果将条件换成一个函数,并且将函数起一个很好的名字,那么别人看了会很舒服例子1protected static final Object[] DO_NOT_PROXY = null;if (specificInterceptors != DO_NOT_PROXY) { this.advisedBeans.put(cacheKey, Boolean.TRUE); O

2020-06-04 21:22:53 256

原创 AQS(AbstractQueuedSynchronizer)源码分析

一、LockSupport这个是AQS底层调用最频繁的类,这个类有两个重要的方法park:出于线程调度的考虑,禁用(暂停)当前线程,只要有许可可用unpark:为给定的线程提供许可证,这样给定线程就会变得可用。这两个方法都是调用的本地方法来实现的public static void park() { UNSAFE.park(false, 0L);}public static void unpark(Thread thread) { if (thread != n

2020-05-27 16:30:04 204

原创 二、subscribeOn和publishOn源码解析

一、subcribeOn1.1 测试代码CountDownLatch countDownLatch = new CountDownLatch(1);//模拟Io阻塞private String ioBlockOperator(){ try { TimeUnit.SECONDS.sleep(5); } catch (Interrupt...

2020-03-29 18:27:40 2185

原创 一、Reactor3 创建源码分析

一、代码示例Flux<String> flux = Flux.just("foo", "bar", "foobar");flux.subscribe(System.out::println);二、Flux.just方法源码追踪首先接受一下订阅者类的基本方法public interface Subscriber<T> { public void onSubsc...

2020-03-22 19:57:07 392

翻译 第七章 虚拟机类加载机制

11

2020-03-08 21:26:30 141

翻译 逻辑英语公式R1+R2

一、主谓宾1.1、主语一般是名词,一般是动作的发出者,或者是被描述的对象1.2、宾语一般也是名词,一般是主语作用到的对象。1.3、谓语如果没有谓语那么这个世界就是静态,谓语就是来让这个主语和谓语产生关系。常见的是动词1.4、定语定语一般形容词比较多,比如 “我喜欢美丽的她”。 这个美丽的就是定语,用来形容主语和宾语的。1.5、状语比如时间状语,条件状语“在今天晚上,我打游戏...

2020-02-20 09:44:55 6052 1

原创 【Spring源码分析】六、Spirng transaction分析

一、tx的解析和bean的Aop代理<tx:annotation-driven transaction-manager="transactionManager"/>针对namespace就行判断,判断是bean标签还是自定义标签(除了bean的其他标签)protected void parseBeanDefinitions(Element root, BeanDefinit...

2020-01-05 21:45:10 159

原创 【Spring源码分析】五、Spirng aop分析

一、介绍Aop肯定是通过动态代理实现的,如果有接口是通过JDK的动态代理实现,如果没有接口是通过CGLIB来实现的。二 详细分析步骤核心类AnotationAwareAspectJAutoProxyCreator他实现了BeanPostProcessor,也就是说在类的初始化前和初始化后会做一些动作,其实创建代理就是在postProcessAfterInitialization后开始创建...

2020-01-04 17:49:38 139

原创 动态代理源码分析

一、JDK动态代理//首先定义一个接口public interface IUserSave { void save();}//被代理的类public class UserSave implements IUserSave { @Override public void save() { System.out.println("save met...

2020-01-03 23:05:29 140

原创 【Spring源码分析】三、Bean的加载和循环依赖解析

一、切入点 bf = new XmlBeanFactory(new ClassPathResource("bean.xml")); User user = bf.getBean("user", User.class); user = bf.getBean("user", User.class);User.javapublic class User implements BeanF...

2020-01-02 21:12:23 135

原创 【Spring源码分析】四、ClassPathXmlApplicationContext的Bean的加载

一、介绍ClassPathXmlApplicationContext具有XmlBeanFactory的所有功能,自我感觉他就是XmlBeanFactory扩展。二、代码切入点 @Test public void testApplicationContext(){ applicationContext = new ClassPathXmlApplicationConte...

2020-01-02 21:10:32 350

原创 【Spring源码分析】二、解析及注册BeanDifinitions

上一篇文章中,大致分析了,Spring BeanFactory的类结构图,本篇文章分析如何解析配置文件和注册Bean的配置一、源码切入点private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);public XmlBeanFactory(Resource resource, BeanFa...

2019-12-12 16:16:53 240

原创 【Spring源码分析】一、BeanFactory之XmlBeanFactory

一、源码切入点 bf = new XmlBeanFactory(new ClassPathResource("bean.xml")); User user = bf.getBean("user", User.class); user = bf.getBean("user", User.class);bean.xml定义<?xml version="1.0" encoding="U...

2019-12-05 22:12:57 261

原创 第六章 类文件结构

Write Once,Run Anywhere平台无关性语言无关性(since JDK1.7)一、class文件结构1.1、源代码package com.cisco.learn.classstructure;/** * @authher: hongwzh2 * @Date: 11/26/19 * @Description: //TODO */public class T...

2019-12-02 15:02:58 148

转载 创建型模式--工厂方法

1、介绍工厂方法就是对简单工厂的补充,因为简单工厂在创建类的时候,是根据传递的参数来进行创建的,如果参数是class反射来创建还好,如果不是那么会产生大量的if else if elseif 这样的语句,设计模式一个最重要的功能就是减少这个if else。 所以工厂方法应运而生,他就是将属于相同分类的类创建封装到一个工厂接口的子类中去创建。...

2019-12-02 10:39:36 105

转载 创建型模式--简单工厂

装载一篇写的非常好的文章点这里1、介绍简单工厂最主要的就是解耦,不是通过自己去new,而是通过工厂类去new。2、代码结构那个转载的文章写得很详细了。3、好处解耦需要大量需要某个类的时候(比如100处),如果那个类需要修改构造方法,那么就需要修改100处。用工厂就很方便。基本上框架都会用这个设计模式...

2019-12-02 10:29:25 114

原创 行为型模式--状态模式

一、介绍状态模式和策略模式从UML图上看是非常相似的,但是他们之间的差别确实巨大的,状态模式强调的是我现在处于什么状态,我这个状态之后我可以做什么。我不可以做什么,而且状态之间的切换至在具体状态子类中进行切换的。他不像策略模式,具体策略是平行的,没有关系的。状态模式中各个状态是有关系的。二、代码结构介绍列举一个简单的电风扇开关例子2.1、抽象状态角色public interface St...

2019-11-28 13:54:25 117

原创 结构型模式-适配器模式

一、介绍这个模式使用场景是代码重构,有时候你需要一个类的部分功能,它不完全满足你的需求,而且你无法修改一个类(比如这个类是在jar包中),或者你不想动别人的源代码(改了后有背锅的可能),但是你又需要那个有缺陷类,这个时候适配器就闪亮登场了。二、代码结构演示2.1 接口适配器主要思想:把需要的类组合进来2.1.1、目标接口class TargetInterface { void me...

2019-11-26 15:53:57 93

原创 行为型模式-迭代模式

一、介绍某些类具有相同的行为,那么这个时候就是迭代模式的使用场景了。比如典型的集合类都需要遍历,这个时候为了做的通俗易懂,集合类中都有个方法iterator(),这个方法返回一个接口,利用这个接口就可以实现遍历。而且接口的子类最好是集合类的内部类,去实现该集合的具体遍历逻辑。二、代码结构演示2.1 抽象接口public interface Iterator<E> { ...

2019-11-26 15:32:30 141

原创 二、hive客户端命令

一、数据库1.1、查看数据库show databases;1.2、创建数据库create database if not exists myhive;//使用数据库use myhive;1.3、删除数据库drop database myhive;二、表2.1、查看表show tables;2.2、创建表CREATE TABLE IF NOT EXISTS emp...

2019-09-03 23:35:04 416

原创 一、hive介绍和安装

如果能用Sql语句操作hadoop的MR,这是多么酷的一件事版本介绍:hadoop 2.7.2hive 2.1.0centos7一、hive介绍基于hadoop的mr,就是对hadoop的job 的封装使用二、hive安装下载和配置环境变量下载.tar.gz,然后tar开#hiveexport HIVE_HOME=/opt/hive/hive-currentexport...

2019-09-03 17:22:54 118

原创 五、第一个Map Reduce例子

hadoop version 2.7.2(linux 完全集群模式)jdk 1.8maven 3.3.9运行在win10该例子来源于网络,需求:统计字母出现的次数文本文件类似这样: a b c d 字母之间有一个空格 <properties> <hadoop.version>2.7.2</hadoop.version> ...

2019-09-02 22:43:42 139

翻译 四、java api操作HDFS

hadoop版本2.7.2 ,安装在linux上运行环境idea+window10一、代码示例maven配置 <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> ...

2019-09-02 14:53:36 148

原创 三、Hadoop常用配置

一、更改本地目录<property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop-${user.name}</value> <description>A base for other temporary directories.</description&g...

2019-09-01 21:08:35 202

翻译 二、HDFS常见操作

一、hdfs ui界面默认端口是50070点击Utilities—>Browse the file system二、常用命令大部分是和linux非常相似2.1 mkdirhdfs dfs -mkdir -p /apps/xxx/document/2.2 put存放/更新文件//hdfs dfs -put -f 如果存在文件强制重写hdfs dfs -put noh...

2019-09-01 21:05:20 159

原创 三、垃圾收集器和内存分配策略

java和c++之间有一堵由内存动态分配和垃圾回收技术所围成的高墙,墙外的人想进去,墙里面的人想出来

2019-08-31 13:36:37 123

原创 一、Hadoop 安装

hadoop version 2.7.2java version jdk1.8一、下载和配置环境变量官网下载地址,hadoop是基于java的,所以需要安装JDK。1.1、配置环境变量下载后直接tar到一个文件中比如我的/opt/hadoopexport HADOOP_HOME=/opt/hadoop/hadoop-currentexport PATH=$PATH:$HADOOP...

2019-08-30 21:53:57 111

原创 Kafka partition和replication

这里集群broker:s1 s 2 s3topic:test6partition:3replication:2分区分区的概念很好理解,就是数据的水平切分,比如上面的配置中把一个主题的数据分成3分进行存储,而且不同分区一般都是在不同的broker中。这个就是kafka的高扩展性。比如上面s1、s2、s3各有一个分区。副本副本的概念就是kafka的高可用性,比如s1节点宕机了,那么...

2019-07-23 22:03:37 1259

原创 Kafka在zookeeper中的存储情况

目录机构通过zkCli.sh ls命令查看[cluster, controller_epoch, controller, storm, brokers, zookeeper, admin, isr_change_notification, consumers, log_dir_event_notification, latest_producer_id_block, config]co...

2019-07-21 22:35:03 354

原创 Kafka入门

我之前用过activemq,这新公司大量使用kafka,所以我也开始学习kafka安装点击这里,我在学习storm的时候,也需要安装kafka,所以这里就省略安装了。核心概念zookeeper:类似spring cloud的eureka,zookeeper也是很多第三方工具常用的集成部分。broker:这个就是一个kafka节点producer:生产者consumer group:...

2019-07-18 20:32:11 160

原创 【Akka】入门Demo分析

最近公司用到spary+akak,然后从官网找了一个入门的例子,现在分析一下1.简单demo首先akka给我的感觉就是一个异步的发送消息的机制,如果我用java来解释,那就是重新起一个新线程,然后调用一个类的方法。//简单定义一些用到的消息类object Greeter { //#greeter-messages def props(message: String, printer...

2019-07-16 09:50:34 936

翻译 四、elasticsearch的mapping

一、介绍就像mysql,定义字段的时候,会定义类型,是否索引等信息,mapping就像mysql的scheme。二、字段类型参考文章点这里三、字段额外属性

2019-06-30 17:59:51 149

翻译 三、elasticsearch增删改查

一、新建索引put http://{{host}}:9200/liarbry二、增加document指定idput http://{{host}}:9200/liarbry/books/1{ "title":"spring boot program idea3", "user":{ "first":"hongwei", "last":"zhang" }, "pri...

2019-06-30 07:20:08 179

kafka-manager-2.0.0.2.zip

kafka-manager 是一个开源的 kafka 管理工具,挺好用的,且目前找不到更好用的了。 然而一个头疼的问题是,项目的 release 页并没有提供现成的编译结果供下载,想用的话还得自行编译。编译过程既耗时又耗资源,时不时还受墙的影响,有时候我终于编好了,一段时间后要用又不记得放哪儿了。为了给广大群众以及我自己提供方便。

2019-07-23

java 实现tr069,包含文档介绍,很详细

java 实现tr069,包含文档介绍,很详细,利于新手了解,对项目有启发。

2015-11-10

spring 2.5。6 适合2.5.6以前的 以后的也推荐

这个是 英文版本的 spring API 其实开发中英文版本的才是最出色的 原汁原味, 实在不行的同学配合 有道词典完美解决

2013-05-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除