<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Abysscarry的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Abysscarry</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Abysscarry]]></copyright><item><title><![CDATA[Soul 网关探索（一）基本介绍 & 环境配置]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/112646464</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/112646464</guid><author>Abysscarry</author><pubDate>Fri, 15 Jan 2021 02:46:19 +0800</pubDate><description><![CDATA[背景：
自从上次立了一个flag（以后要如何更好地输出博客）后，到今天居然快整整一年没写过博客了！这flag实在威力太大…[捂脸]
2020年我们经历了新冠病毒这个黑天鹅事件，我也离开了呆了两年半的前东家，跳槽到了一家我还比较满意的互联网公司，对自己的职业生涯规划有了新的思考，同时也更深刻认识到了自己的不足，需要我去弥补追赶的还有好多好多…（针对这个我有空可以写一篇博客分享 ~）
作为曾经萌生过转产品念头的佛系技术人，我越发坚定了在技术道路上继续探索下去的决心，从今天开始我准备重操旧业，开始输出博客！最近在]]></description><category></category></item><item><title><![CDATA[以后，要如何更好地输出博客？]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/104930960</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/104930960</guid><author>Abysscarry</author><pubDate>Wed, 18 Mar 2020 00:46:39 +0800</pubDate><description><![CDATA[背景：
2020魔幻开局。从1月21号起到现在，接近两个月的时间了，我实在没想到这个假期能如此漫长，这或许是退休前最后一个如此长的假期了吧（别再搞了）？年前还和同事们开玩笑，说要想放寒暑假这么长的假期，只能裸辞…实在是没想到。
之前我总盼望着能有一段长假，来充分涉猎提升自己，但是，就像读书时期寒暑假书包里塞的一堆书籍，最后返校时只会嫌自己想太多。
我在疫情待家的这段时间，学习效率确实非常一般，但要...]]></description><category></category></item><item><title><![CDATA[深入一点谈谈进程和线程的区别]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/103844087</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/103844087</guid><author>Abysscarry</author><pubDate>Sun, 05 Jan 2020 16:14:48 +0800</pubDate><description><![CDATA[背景：
这个问题虽然常见，但想说清楚还真不容易，在这整理下思路聊聊吧。

文章目录1.什么是进程？为什么要有进程？2.什么是线程？为什么要有线程？3.它们在Linux内核中实现方式有何不同？4.所以它们到底有哪些区别？附：我们通常所说的上下文切换具体指什么？

1.什么是进程？为什么要有进程？
进程有一个相当精简的解释：进程是对操作系统上正在运行程序的一个抽象。
这个概念确实挺抽象，仔细想想却也挺...]]></description><category></category></item><item><title><![CDATA[http升级为https全过程（通过nginx安装SSL证书）]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/102965579</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/102965579</guid><author>Abysscarry</author><pubDate>Fri, 08 Nov 2019 01:37:35 +0800</pubDate><description><![CDATA[背景：
之前项目都是为集团内部提供服务的，很多接口都是内网访问，网络安全方面考虑不多。但是随着业务发展，可能要对外提供互联网服务了，一些安全方面的因素也要逐步考虑计划。
这次，就从最基本的域名安装SSL证书开始，将http协议升级为https协议。

文章目录一、购买申请SSL证书二、通过nginx配置SSL证书三、将以前的http请求重定向到https四、要考虑的还有很多

一、购买申请SSL证...]]></description><category></category></item><item><title><![CDATA[多项目写入同一Logback日志文件导致的滚动混乱问题（修改Logback源码）]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/102847754</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/102847754</guid><author>Abysscarry</author><pubDate>Fri, 01 Nov 2019 01:28:42 +0800</pubDate><description><![CDATA[背景：
最近打算将主要几个项目配置负载均衡策略，由于当前业务用户不多，不存在并发流量问题，我们目的只是为了实现不停机部署以及进程级别的故障转移而已。
通过Jenkins动态传入端口选项参数，启动多实例项目，配合nginx的upstream策略将对应域名请求分发到不同端口。当然，首先我们得考虑项目中的服务状态以及资源共享问题，确保多实例部署不会对业务流程造成影响。
这些操作配置不难，重点还是在于要充...]]></description><category></category></item><item><title><![CDATA[为什么要学习汇编语言？]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/102010138</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/102010138</guid><author>Abysscarry</author><pubDate>Fri, 04 Oct 2019 01:47:33 +0800</pubDate><description><![CDATA[一、我学习汇编的缘由
工作两年后，我为什么突然决定要学习汇编呢？在我的一些朋友看来很奇怪，确实，这个选择在我的技术学习生涯里，有点突兀。
我在上篇文章 《计算机非科班工作后如何爬出技术的绝望之谷，走向开悟之路》 中聊了下目前学习的瓶颈，决定要学习计算机科班的专业课程，打破认知差距。那么我应该如何选择重点课程，设置这些课程的学习顺序呢？
其实我最开始是学习了《数据结构算法》和《网络技术》的，这两者比...]]></description><category></category></item><item><title><![CDATA[计算机非科班工作后如何爬出技术的绝望之谷，走向开悟之路]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/101929104</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/101929104</guid><author>Abysscarry</author><pubDate>Thu, 03 Oct 2019 01:56:55 +0800</pubDate><description><![CDATA[emm，几个月没写博客了，究其原因，还是觉得自己太菜了吧。
我从17年底开始写博客，最初只是为了记录一下自己技术生涯的一些学习细节，将某些知识，以文章的形式记录下来，内容比较随意，主要是方便以后自己回顾，查漏补缺。但两年过去了，越来越多的读者看到了我的博客，这也许能对他们产生一些帮助，我很开心，但也很惶恐，我很怕因为自己水平不足、认识有限而误导了某些读者。
作为非科班转行计算机后端开发，工作这两年...]]></description><category></category></item><item><title><![CDATA[安装kafka-manager监控Kafka集群状态（搭配kafka tool使用）]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/90454127</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/90454127</guid><author>Abysscarry</author><pubDate>Wed, 22 May 2019 23:04:41 +0800</pubDate><description><![CDATA[背景：
CDH集群管理界面不提供Kafka具体的状态监控，需要自己安装相关工具，我们选择比较经典的yahoo开源工具 kafka-manager，搭配 kafka tool客户端工具使用。这里简单介绍下安装过程 ~

一、下载
直接在GitHub官网下载即可：https://github.com/yahoo/kafka-manager

需要注意的一点：

由于我们集群是0.11版本，完美支持。如...]]></description><category></category></item><item><title><![CDATA[关于Flume断点续传（防止重复消费）的解决方案]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/89420560</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/89420560</guid><author>Abysscarry</author><pubDate>Sat, 20 Apr 2019 17:26:10 +0800</pubDate><description><![CDATA[背景：
前段时间写了个 Flume实时采集日志到 Kafka（极简版），其中我们是使用 exec source执行 tail命令来监控采集日志的，但这样做会存在一些问题：如果agent进程突然挂了，下次重启采集任务，会导致日志文件内容重复采集，虽然进程挂了这种事情不常发生，当我们还是要尽量避免因此带来的负面影响！

一、方案选择
和一些朋友交流过Flume断点续传问题，他们往往是自己修改sourc...]]></description><category></category></item><item><title><![CDATA[金额操作中的并发事务问题]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/89167096</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/89167096</guid><author>Abysscarry</author><pubDate>Wed, 10 Apr 2019 00:22:42 +0800</pubDate><description><![CDATA[背景：
关于金额操作的并发事务如何处理是个经典问题，相信很多人都会遇到类似的需求，这里讨论下如何解决此类需求 ~

一、需求
一个用户查询请求过来，首先需要数据库查询用户余额是否足够，如果不足则返回余额不足，如果足够则调用第三方接口查询（预计花费2s），如果第三方接口返回true则正常扣费，update用户余额，如果第三方接口返回false或者代码发生异常，则本次查询不扣费。
伪代码如下：
pub...]]></description><category></category></item><item><title><![CDATA[公众号开发需要注意的几个小问题]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/89071667</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/89071667</guid><author>Abysscarry</author><pubDate>Sun, 07 Apr 2019 16:57:02 +0800</pubDate><description><![CDATA[背景：
上一篇博客回忆了下公众号开发的基本流程，这篇博客记录下遇到的几个小问题吧。ps：实际开发当然不止这点问题。。

1.通过code获取openid时报错
{"errcode":40163,"errmsg":"code been used, hints: [ req_id: WiCbHFyFe-A5w7CA ]"}

经检测，发现code只能用一次，获取之后直接将其作为参数调用获取openid...]]></description><category></category></item><item><title><![CDATA[微信公众号开发基本流程]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/89071469</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/89071469</guid><author>Abysscarry</author><pubDate>Sun, 07 Apr 2019 16:46:18 +0800</pubDate><description><![CDATA[背景：
过年前后做了个微信公众号项目，已经过去一段时间了，抽空回忆总结下基本流程吧，不然很快估计自己就忘了。。
微信公众平台官网：https://mp.weixin.qq.com

文章目录一、注册公众号二、了解公众号管理页面三、必备开发者工具的使用1.开发者文档2.在线接口调试工具3.web开发者工具4.公众平台测试账号四、细读开发者文档五、开发流程重点解析1.开发环境准备2.服务器基本配置3....]]></description><category></category></item><item><title><![CDATA[Flume实时采集日志到Kafka（极简版）]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/88958628</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/88958628</guid><author>Abysscarry</author><pubDate>Mon, 01 Apr 2019 22:04:34 +0800</pubDate><description><![CDATA[背景：
由于项目采用微服务架构，业务日志文件数量较多，我做了个简单的日志监控服务，先在此分享下日志采集的简单步骤，没有任何花里胡哨 ~（ps：一切数据到了 kafka就非常好解决了！）

一、Flume安装
Flume的安装使用可以说非常简单，直接进官网：http://flume.apache.org/

最新是1.9.0版本，我们选择1.8.0版本下载。


然后在Linux下解压：


配置用...]]></description><category></category></item><item><title><![CDATA[Java内部类相关注意点]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/88832837</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/88832837</guid><author>Abysscarry</author><pubDate>Tue, 26 Mar 2019 22:57:25 +0800</pubDate><description><![CDATA[背景：
无论是看分布式、多线程相关源码，还是 Java编写 Spark、Flink相关大数据框架代码，都会遇到各种各样的内部类，今天复习下内部类相关注意点吧 ~

一、分类
静态内部类：定义在类内部的静态类
成员内部类：定义在类内部的非静态类
局部内部类：定义在方法中的类
匿名内部类：继承一个父类或者实现一个接口，没有class关键字，直接使用new来生成一个对象的引用

二、注意点汇总
1.对于...]]></description><category></category></item><item><title><![CDATA[Arrays.copyOf() 是深克隆还是浅克隆（jdk1.8）]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/88653500</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/88653500</guid><author>Abysscarry</author><pubDate>Tue, 19 Mar 2019 00:30:58 +0800</pubDate><description><![CDATA[背景：
我们在看JDK源码时经常看到数组复制方法，如 Arrays.copyOf() 或 System.arraycopy()，今天我们研究下数组复制到底是浅克隆还是深克隆？

一、源码
public static &lt;T&gt; T[] copyOf(T[] original, int newLength) {
    return (T[]) copyOf(original, newLen...]]></description><category></category></item><item><title><![CDATA[SpringBoot项目中Redis配置多数据库]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/87495631</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/87495631</guid><author>Abysscarry</author><pubDate>Sun, 17 Feb 2019 03:46:03 +0800</pubDate><description><![CDATA[背景：
一个小需求，单Redis服务实例下根据业务配置多个数据库，需要自定义Redis配置稍作改动才能实现，此时就不能RedisTemplate一步就位了~
注： Redis使用 单线程-多路复用 IO模型 ，别把多业务的并发全加在一个redis实例上，最好多实例或者集群处理！

基本的配置我就不多说了，可以参考我之前的博客：SpringBoot 整合 Redis 使用详解
直接上步骤：
在 ap...]]></description><category></category></item><item><title><![CDATA[SpringBoot自定义配置Redis连接需要注意的地方（结合JedisConnectionFactory源码）]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/87487891</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/87487891</guid><author>Abysscarry</author><pubDate>Sun, 17 Feb 2019 03:27:11 +0800</pubDate><description><![CDATA[背景：
今天测试redis自定义配置时出现了连接空指针的问题，并且同样代码在不同版本下表现不同，让我们来结合源码详细分析下问题所在。

一、问题起因
起初我们SpringBoot使用的是1.5.9版本，在自定义RedisTemplate各种参数配置时出现了问题：
	@Bean(name = &quot;foreRedisTemplate&quot;)
    public RedisTemplate getForeR...]]></description><category></category></item><item><title><![CDATA[二分查找算法及其变种详解]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/87388195</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/87388195</guid><author>Abysscarry</author><pubDate>Fri, 15 Feb 2019 21:11:47 +0800</pubDate><description><![CDATA[背景：
春节已过，开工大吉！让我们回顾下一些经典的算法吧 ~

一、思想介绍
二分查找（Binary Search）算法，也叫折半查找算法，它的思想非常简单，在生活中随处可见（比如：猜字游戏），但这看似简单的算法，实际却没那么容易掌握透彻。
二分查找针对的是一个有序的数据集合，查找思想有点类似分治思想。每次都通过跟区间的中间元素对比，将待查找的区间缩小为之前的一半，直到找到要查找的元素，或者区间被...]]></description><category></category></item><item><title><![CDATA[测试volatile变量和普通变量区别]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/84997022</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/84997022</guid><author>Abysscarry</author><pubDate>Fri, 14 Dec 2018 00:26:59 +0800</pubDate><description><![CDATA[背景：
volatile变量在多线程环境中经常使用，我们利用其线程可见性和禁止指令重排的特性，实现比synchronized更轻量级的变量同步共享；
虽然我们经常使用或看见volatile关键字，但是 很多人却不一定测试过加volatile和不加到底有什么区别！ 在此我们测试经典应用场景下volatile关键字具体会产生什么影响！
环境：win10 -  jdk1.8

测试过程：

1.前言
J...]]></description><category></category></item><item><title><![CDATA[CDH集群安装Phoenix服务]]></title><link>https://blog.youkuaiyun.com/Abysscarry/article/details/84929908</link><guid>https://blog.youkuaiyun.com/Abysscarry/article/details/84929908</guid><author>Abysscarry</author><pubDate>Sun, 09 Dec 2018 17:34:27 +0800</pubDate><description><![CDATA[背景：
之前我们都是通过原生的 hbase-java api根据业务需求来查询hbase，每有一个查询需求都需要定制化开发相关的查询代码，较为麻烦，而且在性能优化等方面优化也是需要着重注意；
目前业界使用 Phoenix操作HBase比较普遍，该方案无论是开发效率还是性能提升都能得到不错的保证，在这篇博客中记录下CDH集群如何安装Phoenix服务~
集群信息：
版本：CDH 5.13.0
四台机...]]></description><category></category></item></channel></rss>