自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 资源 (1)
  • 收藏
  • 关注

原创 Soul 网关探索(一)基本介绍 & 环境配置

背景:自从上次立了一个flag(以后要如何更好地输出博客)后,到今天居然快整整一年没写过博客了!这flag实在威力太大…[捂脸]2020年我们经历了新冠病毒这个黑天鹅事件,我也离开了呆了两年半的前东家,跳槽到了一家我还比较满意的互联网公司,对自己的职业生涯规划有了新的思考,同时也更深刻认识到了自己的不足,需要我去弥补追赶的还有好多好多…(针对这个我有空可以写一篇博客分享 ~)作为曾经萌生过转产品念头的佛系技术人,我越发坚定了在技术道路上继续探索下去的决心,从今天开始我准备重操旧业,开始输出博客!最近在

2021-01-15 02:46:19 1881 5

原创 以后,要如何更好地输出博客?

背景:2020魔幻开局。从1月21号起到现在,接近两个月的时间了,我实在没想到这个假期能如此漫长,这或许是退休前最后一个如此长的假期了吧(别再搞了)?年前还和同事们开玩笑,说要想放寒暑假这么长的假期,只能裸辞…实在是没想到。之前我总盼望着能有一段长假,来充分涉猎提升自己,但是,就像读书时期寒暑假书包里塞的一堆书籍,最后返校时只会嫌自己想太多。我在疫情待家的这段时间,学习效率确实非常一般,但要...

2020-03-18 00:46:39 1756 6

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

背景:这个问题虽然常见,但想说清楚还真不容易,在这整理下思路聊聊吧。文章目录1.什么是进程?为什么要有进程?2.什么是线程?为什么要有线程?3.它们在Linux内核中实现方式有何不同?4.所以它们到底有哪些区别?附:我们通常所说的上下文切换具体指什么?1.什么是进程?为什么要有进程?进程有一个相当精简的解释:进程是对操作系统上正在运行程序的一个抽象。这个概念确实挺抽象,仔细想想却也挺...

2020-01-05 16:14:48 5085 1

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

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

2019-11-08 01:37:35 7740

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

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

2019-11-01 01:28:42 8498 4

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

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

2019-10-04 01:47:33 9921 3

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

emm,几个月没写博客了,究其原因,还是觉得自己太菜了吧。我从17年底开始写博客,最初只是为了记录一下自己技术生涯的一些学习细节,将某些知识,以文章的形式记录下来,内容比较随意,主要是方便以后自己回顾,查漏补缺。但两年过去了,越来越多的读者看到了我的博客,这也许能对他们产生一些帮助,我很开心,但也很惶恐,我很怕因为自己水平不足、认识有限而误导了某些读者。作为非科班转行计算机后端开发,工作这两年...

2019-10-03 01:56:55 7979 25

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

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

2019-05-22 23:04:41 2729 1

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

背景:前段时间写了个 Flume实时采集日志到 Kafka(极简版),其中我们是使用 exec source执行 tail命令来监控采集日志的,但这样做会存在一些问题:如果agent进程突然挂了,下次重启采集任务,会导致日志文件内容重复采集,虽然进程挂了这种事情不常发生,当我们还是要尽量避免因此带来的负面影响!一、方案选择和一些朋友交流过Flume断点续传问题,他们往往是自己修改sourc...

2019-04-20 17:26:10 8501 6

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

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

2019-04-10 00:22:42 4003

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

背景:上一篇博客回忆了下公众号开发的基本流程,这篇博客记录下遇到的几个小问题吧。ps:实际开发当然不止这点问题。。1.通过code获取openid时报错{"errcode":40163,"errmsg":"code been used, hints: [ req_id: WiCbHFyFe-A5w7CA ]"}经检测,发现code只能用一次,获取之后直接将其作为参数调用获取openid...

2019-04-07 16:57:02 1734

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

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

2019-04-07 16:46:18 148067 44

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

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

2019-04-01 22:04:34 14623 5

原创 Java内部类相关注意点

背景:无论是看分布式、多线程相关源码,还是 Java编写 Spark、Flink相关大数据框架代码,都会遇到各种各样的内部类,今天复习下内部类相关注意点吧 ~一、分类静态内部类:定义在类内部的静态类成员内部类:定义在类内部的非静态类局部内部类:定义在方法中的类匿名内部类:继承一个父类或者实现一个接口,没有class关键字,直接使用new来生成一个对象的引用二、注意点汇总1.对于...

2019-03-26 22:57:25 399

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

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

2019-03-19 00:30:58 4483 2

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

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

2019-02-17 03:46:03 12862 6

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

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

2019-02-17 03:27:11 14340 3

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

背景:春节已过,开工大吉!让我们回顾下一些经典的算法吧 ~一、思想介绍二分查找(Binary Search)算法,也叫折半查找算法,它的思想非常简单,在生活中随处可见(比如:猜字游戏),但这看似简单的算法,实际却没那么容易掌握透彻。二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被...

2019-02-15 21:11:47 5988 2

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

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

2018-12-14 00:26:59 2669 1

原创 CDH集群安装Phoenix服务

背景:之前我们都是通过原生的 hbase-java api根据业务需求来查询hbase,每有一个查询需求都需要定制化开发相关的查询代码,较为麻烦,而且在性能优化等方面优化也是需要着重注意;目前业界使用 Phoenix操作HBase比较普遍,该方案无论是开发效率还是性能提升都能得到不错的保证,在这篇博客中记录下CDH集群如何安装Phoenix服务~集群信息:版本:CDH 5.13.0四台机...

2018-12-09 17:34:27 1687 4

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

背景:最近研究并发编程,发现CAS操作贯穿其中,必须好好理解才行!特地找到一篇讲解原理很有意思的文章,转载记录下~注:本文转自 程序员小灰 微信公众号~基础篇地址:https://blog.csdn.net/Abysscarry/article/details/84798224CAS进阶篇这一期我们来深入介绍之前遗留的两个问题:1.Java当中CAS的底层实现2.CAS的ABA问题...

2018-12-04 20:43:12 670

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

背景:最近研究并发编程,发现CAS操作贯穿其中,必须好好理解才行!特地找到一篇讲解原理很有意思的文章,转载记录下~注:本文转自 程序员小灰 微信公众号~一、CAS基础篇示例程序: 启动两个线程,每个线程中让静态变量count循环累加100次。最终输出的count结果是什么呢?一定会是200吗?加了同步锁之后,count自增的操作变成了原子性操作,...

2018-12-04 20:29:09 606

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

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

2018-11-28 00:29:33 844 3

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

背景:项目这两个月开始使用HBase来读写数据,网上现成的HBase工具类要么版本混杂,要么只是Demo级别的简单实现,各方面都不完善;而且我发现HBase查询有很多种方式,首先大方向上有 Get 和 Scan两种,其次行键、列族、列名(限定符)、列值(value)、时间戳版本等多种组合条件,还有各种过滤器的选择,协处理器的应用,所以必须根据自己项目需求和HBase行列设计来自定义HBase...

2018-10-24 00:28:14 14115 9

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

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

2018-10-23 23:32:05 4210

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

背景:对于其他数据存储系统来说,统计表的行数是再基本不过的操作了,一般实现都非常简单;但对于HBase这种key-value存储结构的列式数据库,统计 RowCount 的方法却有好几种不同的花样,并且执行效率差别巨大!下面来研究下吧~测试集群:HBase1.2.0 - CDH5.13.0 四台服务器注:以下4种方法效率依次提高一、hbase-shell的count命令这是最简单直接...

2018-09-27 00:32:19 49606 7

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

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

2018-09-23 23:53:58 2320 1

原创 springboot项目整合swagger全过程

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

2018-09-19 01:06:34 3645 1

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

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

2018-09-13 00:14:32 4438 2

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

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

2018-08-30 00:08:53 2575 1

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

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

2018-08-29 00:07:26 2704

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

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

2018-08-27 23:36:52 15253 12

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

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

2018-08-26 19:05:26 1455

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

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

2018-08-25 22:10:48 5497

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

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

2018-08-17 22:55:53 20934

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

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

2018-08-08 12:05:41 22317 4

原创 Hive开窗函数总结

背景: 平常我们使用 hive或者 mysql时,一般聚合函数用的比较多。但对于某些偏分析的需求,group by可能很费力,子查询很多,这个时候就需要使用窗口分析函数了~ 注:hive、oracle提供开窗函数,mysql不提供版本:Hive 1.1.0 + cdh5.13.0一、介绍分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而...

2018-08-05 12:56:25 38040 10

原创 Hive中使用 with as 优化SQL

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

2018-07-31 23:29:06 71684 12

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

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

2018-07-29 15:23:53 1788

原创 SQL子查询优化

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

2018-07-26 23:26:36 6951

数据挖掘 你必须知识的32个经典案例

本书是为广大数据分析师量身定制的入门读物,它旨在帮助读者站在大数据时代的制高点。数据分析处于统计学、计算机信息科学、运筹学、数据库等多个领域的交叉地带,大数据时代的到来大大丰富了数据分析的内涵,数据分析师的职责与以往相比发生了巨大的改变。 本书全面介绍了经典数据分析、模式识别、机器学习、深度学习、数据挖掘、商务智能等多个领域的数据分析算法,将大数据时代的数据分析热点技术一网打尽。本书为每个数据分析算法都搭配了一个经典案例,并按照由易到难的原则构建知识框架,充分照顾了不同水平读者的阅读习惯。 通过阅读本书,读者将对大数据时代下的数据分析有一个全面的认识。无论是入门级的数据分析员还是有一定基础的数据分析师,都能通过本书完善、加深对数据分析的认识。

2017-10-27

空空如也

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

TA关注的人

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