YI's Blog

Postgis:距离计算和排序优化

Postgis:距离计算和排序优化场景和数据使用场景:使用Postgis寻找距离某个圆心一定距离内的所有企业,按照离圆心的距离排序。 地理数据说明:来自于高德地图地理编码api的经纬度,数据量40w,在Postgresql中使用geometry存储。注:高德地图采用GCJ20坐标系。 实现和优化思路 采用Postgis提供的函数st_dwithin圈选出范围 Postgis St_Dwith......

Flink01:编译源码并在IDEA中运行Standalone模式

Flink01:编译源码并在IDEA中运行Standalone模式简述 本系列是个人以参与Flink开源、为社区贡献代码为目标进行研究的笔记心得 Flink版本以及后续更新 记录此笔记时,Flink社区的最新版本是v.1.17-SNAPSHOT 本项目将紧跟社区代码的更新 源码下载和环境搭建 fork和clone代码 为了方便后续为社区贡献代码,需要将flink fork到个人githu......

从美团实时数仓方案看OLAP的重要性

统计结果实时更新问题在年初的实时数仓调研过程中,我遇到一个统计结果实时更新的问题,即当业务数据的更新操作通过binlog实时同步到flink后,如何对统计结果做同步更新。 简单的统计如sum、count,还可以基于flink实时统计的结果状态进行更新,比如数据从10更新为20,sum对之前的统计结果+10即可。但稍复杂些的计算,比如avg就无法基于历史结果去实时更新了,因为avg的结果更新是......

从Leetcode120思考满映射的处理方法

思考一些小事情

三角形最小路径和Leetcode120 三角形最小路径和 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。 示例 1: 输入:triangl......

成为数据工程师

成为数据工程师去年10月左右,高管对我们BI团队的定位有所转变,团队不再需要过多的Java工程师,我们开始被定位成数据工程师。 过去第一阶段 Apache Nifi早在实习期间,部门就让我潜心投入到Apache Nifi的功能和源码研究中去。这个大数据交换平台的数据模型、流式处理、容错、背压等技术都有自己的一套理论,高度组件化和可定制化非常吸引人,但对高速磁盘的依赖和cdc组件挥之不去的OO......

一个自定义NiFi组件开发日志

"不成熟的改进"

CaptureChangeMySQL的风险这两周都在对Apache NiFi的CaptureChangeMySQL组件做优化,因为我们在用NiFi做数据同步的过程中,发现它的CDC组件存在一些OOM问题。 NiFi的CDC组件启动时有两个线程在运行:Binlog监听线程和NiFi组件线程。Binlog监听用的是开源工具mysql-binlog-connector-java,这个工具会启动一个......

HashMap实现:除留余数法的性能提高

HashMap散列函数的设计 HashMap是什么 HashMap是存放键值对的数据结构,使用散列表的物理存储方式提高查找速率。线程不安全。 实现思路是使用Key的HashCode值进行一次hash操作,散列其结果作为数组中的位置,也就是哈希查找过程。 哈希查找需要考虑的问题 + Hash函数的设计 采用除留余数法,即对哈希表长度取余,能够使对象在散列表中分布较均匀。很......

弗洛伊德算法——动态规划思想的实践

弗洛伊德算法——动态规划思想的实践 最短路径问题 弗洛伊德算法解决的问题是求图中所有顶点间最短路径。 首先该问题具有最优子结构性质,这意味着当路径的全部子路径最优时,整条路径的长度最优。 则该问题可用动态规划求解。假设得到A->B的最短路径L,若A->D需要途经B,根据最优子结构性质,L一定是A->D最短路径的一段。 因此我们可以从简单的情况开始,计算出一部分......

数据结构——思考稀疏矩阵转置

稀疏矩阵的快速转置算法三元组表示法有矩阵A 2 0 0 1 0 0 0 3 0 三元组表示为 Element row col value Elem[0] 0 0 2 Elem[1] 1 0 1 Elem[2] 2 1 3 转置在讨论转置之前,应注意到三元组Elem对元素的存储顺序有要求:按照行序存储,同一行按列序存储。 这也跟元素在内存中的......

新的开始

"Hello Github, Hello Blog"

“开始才是解决焦虑最好的办法” 开始期待开通博客很久了。 学习计算机两年,学艺不精,脑子里留下许多知识碎片,模糊的,稍清晰但太过细碎的… 很久以前我就想,也许该开始写作了,把那些碎片整理整理。于是在个人电脑上记录了许多的文本、思维导图,后来我发现,这些文本完成以来,就很少被再次打开。我想,也许该找个地方好好写东西了。 Github Pages挺适合我这种懒人。 在探寻个人学习方法的过程中......