自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 深入一点谈谈进程和线程的区别

背景: 这个问题虽然常见,但想说清楚还真不容易,在这整理下思路聊聊吧。 文章目录1.什么是进程?为什么要有进程?2.什么是线程?为什么要有线程?3.它们在Linux内核中实现方式有何不同?4.所以它们到底有哪些区别?附:我们通常所说的上下文切换具体指什么? 1.什么是进程?为什么要有进程? 进...

2020-01-05 16:14:48

阅读数 43

评论数 0

原创 http升级为https全过程(通过nginx安装SSL证书)

背景: 之前项目都是为集团内部提供服务的,很多接口都是内网访问,网络安全方面考虑不多。但是随着业务发展,可能要对外提供互联网服务了,一些安全方面的因素也要逐步考虑计划。 这次,就从最基本的域名安装SSL证书开始,将http协议升级为https协议。 文章目录一、购买申请SSL证书二、通过ngin...

2019-11-08 01:37:35

阅读数 114

评论数 0

原创 多项目写入同一Logback日志文件导致的滚动混乱问题(修改Logback源码)

背景: 最近打算将主要几个项目配置负载均衡策略,由于当前业务用户不多,不存在并发流量问题,我们目的只是为了实现不停机部署以及进程级别的故障转移而已。 通过Jenkins动态传入端口选项参数,启动多实例项目,配合nginx的upstream策略将对应域名请求分发到不同端口。当然,首先我们得考虑项目中...

2019-11-01 01:28:42

阅读数 67

评论数 0

原创 为什么要学习汇编语言?

一、我学习汇编的缘由 工作两年后,我为什么突然决定要学习汇编呢?在我的一些朋友看来很奇怪,确实,这个选择在我的技术学习生涯里,有点突兀。 我在上篇文章 《计算机非科班工作后如何爬出技术的绝望之谷,走向开悟之路》 中聊了下目前学习的瓶颈,决定要学习计算机科班的专业课程,打破认知差距。那么我应该如何选...

2019-10-04 01:47:33

阅读数 555

评论数 3

原创 计算机非科班工作后如何爬出技术的绝望之谷,走向开悟之路

emm,几个月没写博客了,究其原因,还是觉得自己太菜了吧。 我从17年底开始写博客,最初只是为了记录一下自己技术生涯的一些学习细节,将某些知识,以文章的形式记录下来,内容比较随意,主要是方便以后自己回顾,查漏补缺。但两年过去了,越来越多的读者看到了我的博客,这也许能对他们产生一些帮助,我很开心,但...

2019-10-03 01:56:55

阅读数 5014

评论数 18

原创 安装kafka-manager监控Kafka集群状态(搭配kafka tool使用)

背景: CDH集群管理界面不提供Kafka具体的状态监控,需要自己安装相关工具,我们选择比较经典的yahoo开源工具 kafka-manager,搭配 kafka tool客户端工具使用。这里简单介绍下安装过程 ~ 一、下载 直接在GitHub官网下载即可:https://github.com/...

2019-05-22 23:04:41

阅读数 578

评论数 0

原创 关于Flume断点续传(防止重复消费)的解决方案

背景: 前段时间写了个 Flume实时采集日志到 Kafka(极简版),其中我们是使用 exec source执行 tail命令来监控采集日志的,但这样做会存在一些问题:如果agent进程突然挂了,下次重启采集任务,会导致日志文件内容重复采集,虽然进程挂了这种事情不常发生,当我们还是要尽量避免因此...

2019-04-20 17:26:10

阅读数 1388

评论数 1

原创 金额操作中的并发事务问题

背景: 关于金额操作的并发事务如何处理是个经典问题,相信很多人都会遇到类似的需求,这里讨论下如何解决此类需求 ~ 一、需求 一个用户查询请求过来,首先需要数据库查询用户余额是否足够,如果不足则返回余额不足,如果足够则调用第三方接口查询(预计花费2s),如果第三方接口返回true则正常扣费,upd...

2019-04-10 00:22:42

阅读数 507

评论数 0

原创 公众号开发需要注意的几个小问题

背景: 上一篇博客回忆了下公众号开发的基本流程,这篇博客记录下遇到的几个小问题吧。ps:实际开发当然不止这点问题。。 1.通过code获取openid时报错 {"errcode":40163,"errmsg":"code been used, h...

2019-04-07 16:57:02

阅读数 542

评论数 0

原创 微信公众号开发基本流程

背景: 过年前后做了个微信公众号项目,已经过去一段时间了,抽空回忆总结下基本流程吧,不然很快估计自己就忘了。。 微信公众平台官网:https://mp.weixin.qq.com 文章目录一、注册公众号二、了解公众号管理页面三、必备开发者工具的使用1.开发者文档2.在线接口调试工具3.web开发...

2019-04-07 16:46:18

阅读数 10908

评论数 9

原创 Flume实时采集日志到Kafka(极简版)

背景: 由于项目采用微服务架构,业务日志文件数量较多,我做了个简单的日志监控服务,先在此分享下日志采集的简单步骤,没有任何花里胡哨 ~(ps:一切数据到了 kafka就非常好解决了!) 一、Flume安装 Flume的安装使用可以说非常简单,直接进官网:http://flume.apache.o...

2019-04-01 22:04:34

阅读数 1437

评论数 0

原创 Java内部类相关注意点

背景: 无论是看分布式、多线程相关源码,还是 Java编写 Spark、Flink相关大数据框架代码,都会遇到各种各样的内部类,今天复习下内部类相关注意点吧 ~ 一、分类 静态内部类:定义在类内部的静态类 成员内部类:定义在类内部的非静态类 局部内部类:定义在方法中的类 匿名内部类:继承一个父类...

2019-03-26 22:57:25

阅读数 133

评论数 0

原创 Arrays.copyOf() 是深克隆还是浅克隆(jdk1.8)

背景: 我们在看JDK源码时经常看到数组复制方法,如 Arrays.copyOf() 或 System.arraycopy(),今天我们研究下数组复制到底是浅克隆还是深克隆? 一、源码 public static <T> T[] copyOf(T[] original, int ne...

2019-03-19 00:30:58

阅读数 535

评论数 0

原创 SpringBoot项目中Redis配置多数据库

背景: 一个小需求,单Redis服务实例下根据业务配置多个数据库,需要自定义Redis配置稍作改动才能实现,此时就不能RedisTemplate一步就位了~ 注: Redis使用 单线程-多路复用 IO模型 ,别把多业务的并发全加在一个redis实例上,最好多实例或者集群处理! 基本的配置我就不...

2019-02-17 03:46:03

阅读数 4114

评论数 3

原创 SpringBoot自定义配置Redis连接需要注意的地方(结合JedisConnectionFactory源码)

背景: 今天测试redis自定义配置时出现了连接空指针的问题,并且同样代码在不同版本下表现不同,让我们来结合源码详细分析下问题所在。 一、问题起因 起初我们SpringBoot使用的是1.5.9版本,在自定义RedisTemplate各种参数配置时出现了问题: @Bean(name = &qu...

2019-02-17 03:27:11

阅读数 3909

评论数 1

原创 二分查找算法及其变种详解

背景: 春节已过,开工大吉!让我们回顾下一些经典的算法吧 ~ 一、思想介绍 二分查找(Binary Search)算法,也叫折半查找算法,它的思想非常简单,在生活中随处可见(比如:猜字游戏),但这看似简单的算法,实际却没那么容易掌握透彻。 二分查找针对的是一个有序的数据集合,查找思想有...

2019-02-15 21:11:47

阅读数 414

评论数 0

原创 测试volatile变量和普通变量区别

背景: volatile变量在多线程环境中经常使用,我们利用其线程可见性和禁止指令重排的特性,实现比synchronized更轻量级的变量同步共享; 虽然我们经常使用或看见volatile关键字,但是 很多人却不一定测试过加volatile和不加到底有什么区别! 在此我们测试经典应用场景下vola...

2018-12-14 00:26:59

阅读数 743

评论数 1

原创 CDH集群安装Phoenix服务

背景: 之前我们都是通过原生的 hbase-java api根据业务需求来查询hbase,每有一个查询需求都需要定制化开发相关的查询代码,较为麻烦,而且在性能优化等方面优化也是需要着重注意; 目前业界使用 Phoenix操作HBase比较普遍,该方案无论是开发效率还是性能提升都能得到不错的保证,在...

2018-12-09 17:34:27

阅读数 753

评论数 3

转载 CAS原理 进阶篇(漫画版)

背景: 最近研究并发编程,发现CAS操作贯穿其中,必须好好理解才行!特地找到一篇讲解原理很有意思的文章,转载记录下~ 注:本文转自 程序员小灰 微信公众号~ 基础篇地址:https://blog.csdn.net/Abysscarry/article/details/84798224 CAS进阶...

2018-12-04 20:43:12

阅读数 190

评论数 0

转载 CAS原理 基础篇(漫画版)

背景: 最近研究并发编程,发现CAS操作贯穿其中,必须好好理解才行!特地找到一篇讲解原理很有意思的文章,转载记录下~ 注:本文转自 程序员小灰 微信公众号~ 一、CAS基础篇 示例程序: 启动两个线程,每个线程中让静态变量co...

2018-12-04 20:29:09

阅读数 203

评论数 0

原创 《深入理解java虚拟机》volatile代码案例的一个bug?

背景: 最近在读周志明的《深入理解 java虚拟机》第二版,发现第367页的 volatile演示例子(代码清单 12-1)无法运行出相应结果,在此记录下原因及解决办法 ~ 注:代码运行环境为 win64 - jdk1.8 - IntelliJ IDEA 书中代码如下: import java....

2018-11-28 00:29:33

阅读数 254

评论数 2

原创 HBase在SpringBoot项目里的应用(含HBaseUtil工具类)

背景: 项目这两个月开始使用HBase来读写数据,网上现成的HBase工具类要么版本混杂,要么只是Demo级别的简单实现,各方面都不完善; 而且我发现HBase查询有很多种方式,首先大方向上有 Get 和 Scan两种,其次行键、列族、列名(限定符)、列值(value)、时间戳版本等多种组合...

2018-10-24 00:28:14

阅读数 7645

评论数 5

原创 不用加减号实现加减法(java实现)

背景: 好久没接触位运算符了,拿个小题来练练手吧~ 一、问题分析 不用加减号实现加减法运算,这个题目一听就知道要用位运算符了,先复习下位运算的基本操作吧: 与运算符(&amp;): 如果相对应位都是1,则结果为1,否则为0 或运算符(|): 如果相对应位都是0,则结果为0,否则为1...

2018-10-23 23:32:05

阅读数 1274

评论数 0

原创 HBase统计表行数(RowCount)的四种方法

背景: 对于其他数据存储系统来说,统计表的行数是再基本不过的操作了,一般实现都非常简单;但对于HBase这种key-value存储结构的列式数据库,统计 RowCount 的方法却有好几种不同的花样,并且执行效率差别巨大!下面来研究下吧~ 测试集群:HBase1.2.0 - CDH5.13...

2018-09-27 00:32:19

阅读数 12979

评论数 7

原创 Eureka界面EMERGENCY提示背后的保护机制

背景: SpringCloud Eureka 投入使用很久了,server界面一直有红色提示: EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS AR...

2018-09-23 23:53:58

阅读数 746

评论数 1

原创 springboot项目整合swagger全过程

背景: 最近进行项目优化,增添swagger功能方便接口测试! 一、swagger简介 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服...

2018-09-19 01:06:34

阅读数 1148

评论数 1

原创 HttpURLConnection读取全局异常拦截器所返回响应体的一个注意点

背景: 服务端项目中通过全局异常拦截器进行异常处理,但进行单元测试发现用java原生HttpURLConnection方法访问服务端时,无法读取到处理异常后的响应体中的内容,直接报错!在此记录下解决方案! 一、错误场景还原 先看看发生报错时的代码如何写的: 抛...

2018-09-13 00:14:32

阅读数 1509

评论数 0

原创 Hive on oozie以及action间参数传递

背景: 简单介绍下 hive action的使用,以及action间是如何进行参数传递的,这也是进行多job调度必备的操作~ 集群环境:CDH 5.13.0 ,其中oozie版本:4.1.0,hive版本:1.1.0 一、Hue配置 Hive action hue上创建hive任务...

2018-08-30 00:08:53

阅读数 1107

评论数 0

原创 oozie时区问题 (CDH环境)

背景: 配置oozie的 coordinator job时必然会遇到时区问题,在此记录下解决方案~ 集群环境:CDH 5.13.0 ,其中oozie版本:4.1.0 注:以下四步最好都修改 一、Hue中配置 由于我们都是通过hue对oozie进行配置,所以首先保证hue中 tim...

2018-08-29 00:07:26

阅读数 1129

评论数 0

原创 oozie调度sqoop踩坑之路(hue配置)

背景: 通过oozie来调度管理sqoop数据抽取流程,一般有两种方法:一是直接使用oozie的sqoop-action,二是将sqoop语句写在shell脚本中,通过shell-action来调度。经过测试,sqoop-action实在是坑多,故采用坑相对较少的shell-action~ 集...

2018-08-27 23:36:52

阅读数 6758

评论数 6

原创 oozie初步使用之执行MR任务(非hue配置)

背景: 此处介绍oozie简单执行一个MR任务的基本流程,采用的是官网的Example进行测试,job.properties文件是自己手动配置的,jar包 和 workflow.xml 用Example自带的配置!由于自己配置稍微有些麻烦,后面的介绍我会基于 Hue进行可视化配置~ oozie...

2018-08-26 19:05:26

阅读数 664

评论数 0

原创 Sqoop从Mysql导出到Hive的几个需要注意的地方

背景: 在此记录下使用 sqoop将数据从mysql导出到 hive过程中需要注意的几个地方,包括 NULL值处理、增量导入、parquet格式的日期类型 注:这种数据传输工具其实没必要深究所有用法,用到哪块去研究下就行了 Sqoop版本:1.4.6 - CDH5.13.0 一、NUL...

2018-08-25 22:10:48

阅读数 1765

评论数 0

原创 大数据调度工具oozie详细介绍

背景: 之前项目中的sqoop等离线数据迁移job都是利用shell脚本通过crontab进行定时执行,这样实现的话比较简单,但是随着多个job复杂度的提升,无论是协调工作还是任务监控都变得麻烦,我们选择使用oozie来对工作流进行调度监控。在此介绍一下oozie~ 注:我的 Oozie se...

2018-08-17 22:55:53

阅读数 6619

评论数 0

原创 Hive collect、explode函数详解(包括concat、Lateral View)

背景: 最近需要对业务系统数据进行ETL,供机器学习训练,我们需要对数据进行关联聚合,多行或多列数据转换为单行单列这种操作很常见;正好hive提供collect函数可以实现这种格式需求,我们在这整理下用法,顺便扩展一下~ 一、collect_set 和 collect_list 函数 ...

2018-08-08 12:05:41

阅读数 2586

评论数 3

原创 Hive开窗函数总结

背景: 平常我们使用 hive或者 mysql时,一般聚合函数用的比较多。但对于某些偏分析的需求,group by可能很费力,子查询很多,这个时候就需要使用窗口分析函数了~ 注:hive、oracle提供开窗函数,mysql不提供 版本:Hive 1.1.0 + cdh5.13.0 ...

2018-08-05 12:56:25

阅读数 15803

评论数 7

原创 Hive中使用 with as 优化SQL

背景: 当我们书写一些结构相对复杂的SQL语句时,可能某个子查询在多个层级多个地方存在重复使用的情况,这个时候我们可以使用 with as 语句将其独立出来,极大提高SQL可读性,简化SQL~ 注:目前 oracle、sql server、hive等均支持 with as 用法,但 mysql...

2018-07-31 23:29:06

阅读数 15721

评论数 1

原创 shell统计日志文件实现指定格式Top10

背景: 无论oracle、hive还是spark等都有实现该功能的函数,但我们如何利用 linux-shell命令来处理用户访问日志实现top10功能呢?这相对比较偏底层了,了解下很有好处~ 一、需求 日志文件: haha.txt 字段分隔符为:\t 字段说明: 时间 用户id 访...

2018-07-29 15:23:53

阅读数 583

评论数 0

原创 SQL子查询优化

背景: 在此研究下SQL子查询的相关知识 ~ 以下内容主要参考《数据库查询优化器的艺术》一书 一、子查询介绍 概念:当一个查询是另一个查询的子部分时,称之为子查询(查询语句中嵌套有查询语句)。 子查询出现的位置有: a)目标列位置:子查询如果位于目标列,则只能是标量子查询,否则数...

2018-07-26 23:26:36

阅读数 2321

评论数 0

原创 AWK实现两文本关联join

背景: join是数据处理领域中非常经典的技巧,绝大多数数据库都支持该用法,现在我们研究下AWK命令是如何实现 join的~ 我们先看看awk中的两个自身变量,NR 和 FNR。 awk可以指定同时读取多个文件,按照指定的先后顺序,逐个读取。 NR 指的是awk所读取到所有记录(包括...

2018-07-17 23:18:05

阅读数 1190

评论数 0

原创 Linux文本分析处理工具之awk、sort、uniq、cut

背景: 最近接手一些Linux下日志分析工作,在此整理下常用的分析工具,记录其参数命令~ 一、AWK 命令(重量级工具) 1. 介绍 AWK是一种优良的文本处理工具。它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。 AWK 提供了极其强大的功能:可以进行样式...

2018-07-17 17:09:22

阅读数 565

评论数 1

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