随笔分类 -  源码

源码阅读心得,提升的路径。
摘要:用hive来做数仓类操作,或者大数据的运算,是没有疑问的,至少在你没有更多选择之前。 当我们要hive来做类似于大批量数据的select时,也许问题就会发生了变化。 1. 通用解决方案:分页拉取 首先,我们要基于一个事实,就是没有哪个数据库可以无限制的提供我们select任意数据量的数据。比如常用的 阅读全文
posted @ 2020-11-01 15:17 阿牛20 阅读(3305) 评论(1) 推荐(2) 编辑
摘要:知识图谱听起来很高大上,而且也应用广泛,如用于血缘关系查询,知识链展示,异动分析。而图数据库,你可以到网上搜搜,基本就是像 neo4j, janusgraph, HugeGraph,还有像阿里闭源提供的graphcompute服务... 如果有个图谱类似的需求,你会怎么办呢?一来就上真的图谱真的好吗 阅读全文
posted @ 2020-10-24 22:39 阿牛20 阅读(654) 评论(0) 推荐(1) 编辑
摘要:在很多应用场景中,我们都会面临着排序需求,可以说是见怪不怪。我们也看过许多的排序算法:从最简单的冒泡排序、选择排序,到稍微好点的插入排序、希尔排序,再到有点理论的堆排序、快速排序,再到高级的归并排序、桶排序、基数排序。 而实际工作中我们可能用到的排序有哪些呢?而且,大部分时序,相信大家都是使用一个现 阅读全文
posted @ 2020-10-12 13:39 阿牛20 阅读(1660) 评论(0) 推荐(0) 编辑
摘要:上一篇nginx的文章中,我们理解了整个http正向代理的运行流程原理,主要就是事件机制接入,header解析,body解析,然后遍历各种checker,以及详细讲解了其正向代理的具体实现过程。这已经让我们对整个nginx有了较深入的了解,但nginx核心固然重要,但其扩展功能才是其吸引大家的地方。 阅读全文
posted @ 2020-10-08 20:05 阿牛20 阅读(2823) 评论(0) 推荐(1) 编辑
摘要:上一篇nginx的文章中,我们理解了整个http正向代理的运行流程原理,主要就是事件机制接入,header解析,body解析,然后遍历各种checker,直到处理成功为止。 我们以访问一个普通文件为例,nginx到底是如何找到这个文件并返回信息的呢?它会不会有些什么限制呢? 按我们自己的理解,它应该 阅读全文
posted @ 2020-10-07 17:25 阿牛20 阅读(1355) 评论(0) 推荐(0) 编辑
摘要:有时候,我们为了屏蔽一些底层的差异,我们会要求上游系统按照某种约定进行传参。而在我们自己的系统层则会按照具体的底层协议进行适配,这是通用的做法。但当我们要求上游系统传入的参数非常复杂时,也许我们会有一套自己的语法定义,用以减轻所有参数的不停变化。比如sql协议,就是一个一级棒的语法,同样是调用底层功 阅读全文
posted @ 2020-10-06 19:28 阿牛20 阅读(1560) 评论(0) 推荐(2) 编辑
摘要:无疑,在nginx的核心服务中,http服务占据了相当大的份量。那么,要想多了解nginx多一点,则必须要了解其http模块的工作机制。 而在上一篇文章中,我们已完全了解了nginx的worker工作机制,以及它是如何接入http服务的,但很明显那很粗,我们需要更深入点理解http模块的工作原理。 阅读全文
posted @ 2020-09-27 22:27 阿牛20 阅读(996) 评论(0) 推荐(0) 编辑
摘要:prometheus 是一个非常好的监控组件,尤其是其与grafana配合之后,更是如虎添翼。而prometheus的监控有两种实现方式。1. server端主动拉取应用监控数据;2. 主动推送监控数据到prometheus网关。这两种方式各有优劣,server端主动拉取实现可以让应用专心做自己的事 阅读全文
posted @ 2020-09-20 09:50 阿牛20 阅读(3158) 评论(0) 推荐(0) 编辑
摘要:Nginx 启动起来之后,会有几个进程运行:1. master 进程接收用户命令并做出响应; 2. worker 进程负责处理各网络事件,并同时接收来自master的处理协调命令; master 主要是一控制命令,我们后面再说,而worker则是处理的nginx的核心任务,请求转发、反向代理、负载均 阅读全文
posted @ 2020-09-13 07:51 阿牛20 阅读(1389) 评论(0) 推荐(1) 编辑
摘要:针对有些耗时比较长的任务,我们一般会想到使用异步化的方式来进行优化逻辑。即客户端先发起一次任务请求并携带回调地址callbackUrl,然后服务端收到请求后立即返回成功,然后在后台处理具体事务,等任务完成后再回调客户端,通知完成。 首先这个方案是值得肯定的,但是我们得注意几点:1. 客户端回调是否可 阅读全文
posted @ 2020-09-05 12:43 阿牛20 阅读(805) 评论(0) 推荐(0) 编辑
摘要:如果我们使用文件来存储数据,那么如何考虑它们的性能呢?假设我们只会按照行来读取数据,该如何分布文件,才能达到一个比较好的性能呢? 需求: 1. 需要支持通过行号定位数据;2. 需要支持任意多行连续数据的读取;(类似于sql中的 limit offset, size;) 功能实际很简单,只要把数据按照 阅读全文
posted @ 2020-08-23 15:36 阿牛20 阅读(677) 评论(0) 推荐(0) 编辑
摘要:在实际工作中,很进行列表查询的场景,我们往往都需要做两个步骤:1. 查询所需页数对应数据;2. 统计符合条件的数据总数;而这,又会导致我们必然至少要写2个sql进行操作。这无形中增加了我们的工作量,另外,当发生需要变动时,我们又需要同时改动这两个sql,否则必然导致结果的不一致。 因此,我们需要一个 阅读全文
posted @ 2020-08-22 16:06 阿牛20 阅读(15211) 评论(0) 推荐(1) 编辑
摘要:文接上一篇。上篇讲到netty暴露一个端口出来,acceptor, handler, pipeline, eventloop 都已准备好。但是并没体现其如何处理接入新的网络请求,今天我们就一起来看看吧。 1. eventloop主循环 上篇讲到,netty启动起来之后,就会有很多个eventloop 阅读全文
posted @ 2020-08-08 21:12 阿牛20 阅读(1699) 评论(0) 推荐(0) 编辑
摘要:netty作为一个被广泛应用的通信框架,有必要我们多了解一点。 实际上netty的几个重要的技术亮点: 1. reactor的线程模型; 2. 安全有效的nio非阻塞io模型应用; 3. pipeline流水线式的灵活处理过程; 4. channelHandler的灵活实现; 5. 提供许多开箱即用 阅读全文
posted @ 2020-08-01 17:15 阿牛20 阅读(1896) 评论(0) 推荐(0) 编辑
摘要:Hive sql与我们普通使用的sql基本差异不大,但在大数据领域往往存在很多未知的需求,所以往往都有一个支持自定义功能函数编写的口子,让用户实现其特定的需求。(这往往并非hive独有,几乎都是标配) 而要写udf往往也是比较简单,看几个例子,依葫芦画瓢总能搞几个。 今天我们就来简单写一个“自然周差 阅读全文
posted @ 2020-07-31 13:15 阿牛20 阅读(1346) 评论(0) 推荐(0) 编辑
摘要:日志文件自动删除功能必不可少,当然你可以让运维去做这事,只是这不地道。而日志组件是一个必备组件,让其多做一件删除的工作,无可厚非。本文就来探讨下 log4j 的日志文件自动删除实现吧。 0. 自动删除配置参考样例: (log4j2.xml) <?xml version="1.0" encoding= 阅读全文
posted @ 2020-07-31 09:10 阿牛20 阅读(14394) 评论(0) 推荐(1) 编辑
摘要:本文讨论java集合容器中的几种元素数量获取的方式,命题很小,但是也足以让我们思考一些东西。 所谓计数:即是给出所在容器的元素总数的方式。一般能想到的就是两种方式:一是使用某个字段直接存储该计数值,二是在请求计数值时临时去计算所有元素数量。貌似本文的答案已经出来了。好吧,那我们还是从源码的角度来验证 阅读全文
posted @ 2020-07-05 10:55 阿牛20 阅读(1581) 评论(0) 推荐(0) 编辑
摘要:zuul 作为springCloud 的全家桶组件之一,有着不可或缺的分量。它作为一个普通java API网关,自有网关的好处: 避免将内部信息暴露给外部; 统一服务端应用入口; 为微服务添加额外的安全层; 支持混合通信协议; 降低构建微服务的复杂性; 微服务模拟与虚拟化; zuul 基本上已经被s 阅读全文
posted @ 2020-06-07 22:01 阿牛20 阅读(1655) 评论(0) 推荐(1) 编辑
摘要:我们现在用得非常多互联网下载文件,非常直观。有一个下载按钮,然后我点击了下载,然后文件慢慢就下载到本地了。就好像是一个复制的过程。 而既然是互联网,那么必然会是使用网络进行传输的。那么到底是怎样传输的呢? 当然,下载文件有两种方式:一是直接针对某个文件资源进行下载,无需应用开发代码;二是应用代码临时 阅读全文
posted @ 2020-05-19 12:18 阿牛20 阅读(18012) 评论(0) 推荐(2) 编辑
摘要:本文所说的session是单机版本的session, 事实上在当前的互联网实践中已经不太存在这种定义了。我们主要讨论的是其安全共享的实现,只从理论上来讨论,不必太过在意实用性问题。 1. session 的意义简说 大概就是一个会话的的定义,客户端有cookie记录,服务端session定义。用于确 阅读全文
posted @ 2020-05-16 22:16 阿牛20 阅读(1111) 评论(1) 推荐(0) 编辑