自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 如何用Docker部署Spring Boot,随手再搭一个Kong作为API网关

虽然文章的标题只是信手拈来,但是把这个小环境跑通,委实是费了一大番周折啊,不管是Docker还是API网关Kong,对自己来说还是稍显陌生,不过这么多年来,对自己培养最大的收获,是解决问题的思路和方法,所以一点点的把问题分解之后,再一项项的攻克。整个的思路流程大概是这样的:微服务需要连接数据库,需要安装MySQL利用Docker安装MySQL,调试微服务为微服务收敛出一个API网关,...

2019-08-02 16:52:52 2416

原创 精确去重和Roaring BitMap

Roaring BitMap的简单分析BitMap概述互联网行业求UV的精确去重算法主要通过BitMap实现,它本质上是定义了一个很大的 bit 数组,每个元素对应到 bit 数组的其中一位对于基础的Bitmap来说,一个Integer是32-bit, 一共有Integer.MAX_VALUE=2 ^ 32个值,这就需要2 ^ 32长度的bit数组通过计算可以发现(2 ^ 32 / 8...

2019-07-11 11:14:04 4200

原创 如何在CRUD时自动完成枚举和数值的类型转换

在设计业务数据库的时候,为了减少存储,通常会将一些可列举值的字段,设置成数字(tinyint)型,比如应用的角色(学生、教师),性别(男,女)等在Java代码中,使用枚举类型(enum)来声明这些数据域,这就涉及到了一个转换的过程: 插入数据时把枚举类型转换数字,而读取数据时把数字转换成枚举类型最简单的方法当然是手动写每一个域的转换,但是这么一来,随着Bean的数量和枚举的proper...

2019-08-30 13:48:57 952 3

原创 如何用Swagger生成API文档

随着前后端分离的态势越演越烈,API文档是后端和前端交互(撕逼)的神器,古人通常在“纸上”写就一篇篇的API八股。随着自动化时代的来临,有了Swagger这样自动生成API文档的工具存在,后端的开发哥哥就再也不用挥汗如雨地书写API文档了。关于Swagger的介绍网上已经数不胜数了,所以再班门弄斧的介绍就有点无聊了,所以这里还是直接介绍一下快速实践的流程,至于更高级的玩法,就交给列为看官自行...

2019-07-31 14:45:32 1829

原创 通过Hive JDBC提交的查询, 如何获取其在Yarn上的Application ID

数据平台上需要封装Hive查询,只提供API给业务方使用,代码中通过Hive JDBC完成将查询语句向Hive提交,等待执行完成,结果解析的功能.用户提交查询之后意识到查询语句错误(非语法错误),不想等待错误的语句执行完成后再次提交. 由于用户没有yarn client的权限,kill task的操作也需要通过API提供,因此在提交查询语句时需要获取其在Yarn上的Application I...

2019-07-22 17:13:36 7469 8

原创 HTTP的响应状态码

HTTP的响应状态码 HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作HTTP状态码的类别 类别 原因短语 1XX Informational(信息性状态码) 2XX Success(成功状态码) 3XX Redirection(重定向状态码) 4XX Clien...

2018-07-20 10:13:18 185

原创 Kylin Cube Build(二):构造任务链

Kylin Cube Build的任务链构造 以MR_V2为例 构建过程的时序单位为step,在代码中有些step也称做task 初始化操作构建cube的程序入口: new BatchCubingJobBuilder2(newSegment, submitter).build()日志输出: logger.info("MR_V2 new job to BUI...

2018-07-06 16:42:28 1269 1

原创 Cube的其他优化

Cube的其他优化并发粒度控制 当Segment中某一个Cuboid的大小超过一定的阈值时, 系统会将该Cuboid的数据分片到多个分区中, 以实现Cuboid数据读取的并行化, 从而优化Cube的查询速度 每个Cube可以单独进行配置 参数设置: kylin.hbase.region.cut: 默认值5.0, 单位GB, 指定了每个分区的大小kyl...

2018-07-04 10:15:16 421

原创 Cube的维度优化

Cube的维度优化Cube的优化目的始终为: 空间优化和查询时间优化 随着维度数目的增加, Cuboid 的数量会爆炸式地增长 为了缓解Cube的构建压力, Apache Kylin引入了一系列的高级设置, 帮助用户筛选出真正需要的Cuboid 这些高级设置包括聚合组(Aggregation Group)、联合维度(Joint Dimension)、层级维度(Hierac...

2018-07-04 10:14:38 801

原创 Druid平台搭建手册

Druid平台搭建手册机器和系统的标准规划机器初始化, 创建用户druid程序安装在/home/druid/software目录下数据存放在SSD盘上, 挂载目录为/data, 新建一个名为druid的文件夹权限授予, druid的用户仅能访问/home/druid和/data/druid机器角色划分和配置Druid集群不同类型的节点从功能上可以分为3个部分:...

2018-07-03 15:39:13 1367

原创 Chips交互操作和集合论

产品的PRD画的原型图有这么一种操作,网上搜了半天不知道叫什么名字,后来在AngularJS Material的DEMO上找到了这种交互方式,分类在Chips下,中文的意思大概是木屑,纸片之类的,就姑且叫做Chips交互

2017-12-14 19:50:57 448

原创 服务端实现分页效果的几种思路

对于通过列表展示的数据来说,分页是一个不择不扣的需求,毕竟人类肉眼目所能及的极限摆在那里 如果把分页交给前端搞了话,那么就需要一次性把数据全量查出来,交给前端,浏览器能Hold住多大的数据,会吃掉多少内存,都是一个需要衡量的问题分页的效果分页的页面效果如下图所示,效果取自Ant Design Pro从图中可以看出分页UI的几种交互动作: 点击指定页数显示该页数据点击上一页显示上一页数据

2017-12-12 20:58:00 3918

原创 Spring学习笔记之二: Spring MVC

Spring学习笔记之二: Spring MVCSpring MVC的请求路线 在Spring MVC中,DispatcherServlet就是前端控制器DispatcherServlet的任务是将请求(包含URL)发送给Spring MVC控制器(controller)DispatcherServlet会查询一个或多个处理器映射(handler mapping), 选择合适的控制器请求到达

2017-10-27 17:07:23 376

原创 用Storm处理实时日志

之前写过一篇用MapReduce清洗数据,比起MR,在工作中更早使用了Storm进行实时的日志清理Storm的输入和输出相当灵活,我处理的主要输入流都是Kafka,输出流有Kafka和Scribe

2017-04-25 18:18:46 3171

原创 根据IP判断地理位置

根据IP判断地理位置 首先,当然是要有IP数据库,指明某一段IP代表哪个地方,本文采用的是txt格式的数据文件 IP数据库中的IP全部转换成了Long型,并且经过排序,这是为了方便二分查找 初始化操作: 载入IP数据文件将数据文件按行读入内存,IP数据文件的格式如下: 起始IP 结束IP 国家 省 市 区 未知 运营商 10000000 20

2017-04-24 18:31:03 1635

原创 Log4j2的简要使用

刚好这周的一项任务是把Druid平台的Log4j2的xml配置文件翻译成properties,原因是xml格式的配置文件看着不舒服 在网上查了下资料,Log4j进入2.x版本后,一开始就抛弃了properties格式的配置文件,到2.4版本的时候才又重新支持,猜测是Log4j1.x时代养成了用户的习惯,不好改了,所以发觉这任务还有点意义 本文写作的时候Log4j2已经发布到2.8.2的版

2017-04-17 16:17:28 4425

原创 Java集合学习之HashMap 一(JDK1.8)

既然走上了研发这条路, 首选的语言又是Java, 吃饭的家伙就需要了解的透彻一些 要想深入使用Java, 集合一定是绕不过的坎儿, 从初级到高级甚至资深的水平, 反正是都要过一遍JDK中集合的源代码 下载JDK源码的时候已经是Java1.8了, 所以和网上的博客们和教程们可能会有一点冲突

2017-04-09 23:01:39 438

原创 用MapReduce清洗数据

用MapReduce清洗数据 接触Hadoop平台大半年了,还从来没写过一次MapReduce的业务代码,刚好赶上清洗数据的业务需求,写了一个简单的MapReduce类,用来清洗数据,顺手把一个简单的MapReduce工作流的代码框架记录下来 第一个MapReduce程序不是流行的WordCount 类的整个框架如下:public class DataCleaner extend

2017-03-26 20:06:00 13966

原创 用Java处理JSON 二

在实际应用的过程中,对JSON的处理,除了简单地通过字符串输出之外,还会需要将一个JSON数据转换成一个JAVA对象,这就涉及所谓的序列化和反序

2017-03-26 15:40:26 474

原创 用Java处理JSON 一

刚好最近又一次做到JSON格式日志的解析,就把关于JSON的知识整理一下

2017-03-22 17:37:44 556

原创 Calcite初识

Calcite初识一言以蔽之 As a database without a storage layer Calcite doesn’t know about any file formats 基本使用步骤在一个model文件中定义schemaSchema Factory类创建该schema该schema创建tables,每个table都知道自己该如何扫描数据Calcit

2016-12-14 17:50:48 1510

原创 Storm集群搭建

Storm集群搭建安装Storm的依赖Storm的安装需要依赖JDK、ZooKeeper0.9版本之前的Storm需要安装ZMQ和JZMQ作为消息传递机制Storm组件Storm集群分为Nimbus节点和Supervisor节点Nimbus节点用于提交应用Topology管理整个Storm节点: 将Topology的Task分配给Worker监控各个Supervisor节点的状态, 从而

2016-11-08 17:09:34 366

原创 Kylin资源加载的方式 一

Kylin资源加载的方式 一在Core Common Module中, persistence包下有一个抽象类ResourceStore,它有两个子类,分别是FileResourceStore和HBaseResourceStore

2016-10-26 21:32:53 1272

原创 二叉树的遍历操作

二叉树的遍历操作 二叉树的一项主要操作是对所有节点的遍历,包括前序遍历、中序遍历、后序遍历以及层序遍历,可以通过递归或是迭代的方式实现

2016-10-25 19:08:27 321

原创 回溯法的基本框架

回溯法通过枚举所有可能性来确保解答的正确回溯法不会访问一种状态超过一次,从而保证了解法的效率

2016-10-25 17:54:07 730

原创 通过MapReduce使用HBase解决第三方jar包依赖的方式

通过MapReduce使用HBase解决第三方jar包依赖的方式 用户在使用HBase作为数据源、目标库,或者同时作为两者使用来处理数据时,需要先准备好可用的Hadoop 当运行 MR作业所需库中的类不是绑定在Hadoop或MapReduce框架中时,用户必须确保这些库在作业执行之前已经可用 为MR作业解决jar包依赖的方式从广义上看,可以分为静态配置和动态配置两种静态配置对于经

2016-10-20 11:20:53 4148 1

原创 Kylin Cube Build(一):接口说明

Kylin Job Build流程Cube的三种构建类型在CubeBuildTypeEnum中定义了三种类型的build job

2016-08-23 19:04:24 2526 1

原创 Web应用程序基础知识

Web应用程序基础知识

2015-11-23 17:10:16 443 2

空空如也

空空如也

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

TA关注的人

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