- 博客(372)
- 资源 (1)
- 收藏
- 关注
原创 apache beam 入门之beam-sql
目录:apache beam 个人使用经验总结目录和入门指导(Java)就像spark-sql 一样,apache beam也有beam-sql, 就是能够输入1张模拟数据表, 然后通过sql语句来实现计算。举个例子,我们不希望在数据源端执行 select * from tableA left join talbeB on tableA.id = tableB.id where tableA.id < 10 这句话, 因为这样很占用数据源端的计算资源(尤其是hive这类数仓), 所以会希望把tab
2020-06-05 23:49:29
1358
原创 apache beam入门之编码Coder相关
目录:apache beam 个人使用经验总结目录和入门指导(Java)为什么需要Coderapache beam在做计算时, 会对数据进行序列化和反序列化,以方便进行分布式节点间的传输。因此任何PCollection都会指定1个Coder编码,来确定当前数据集里的数据类型,以便在计算时进行正确的序列化操作。当我们通过apply组装好1个PCollection后,其coder也就需要被指定了。beam默认识别编码正常情况下,beam能够自动识别编码,如下例子,我们生成1个字符串的数据集,并转成整
2020-06-04 21:30:32
832
原创 apache beam入门之旁路输入
目录:apache beam 个人使用经验总结目录和入门指导(Java)如果我们希望给某个PCollection数据集输入1个 计算后 的结果,则就需要用到旁路输入。例如要计算某个数据集的方差,其公式为这个计算过程就需要用到旁路输入,来将平均值u传递给数据集中的每个数字进行计算。我们下面这个数据集为例PCollection<Integer> numbers = pipeline.apply(Create.of(10,20,40,70,80));创建旁路输入视窗数据集的平均值就是
2020-06-04 20:22:47
701
原创 apache beam入门之group分组操作
目录:apache beam 个人使用经验总结目录和入门指导(Java)如果我们希望将相同的元素进行分组,则可以用Group的转化方法进行操作首先我们生成1个单词数据集List<String> strLists = new ArrayList<>();strLists.add("cat");strLists.add("cat");strLists.add("cat");strLists.add("dog");strLists.add("dog");strLists.
2020-06-04 00:20:06
712
原创 apache beam 入门之数据集PCollection的拆分和合并
有时候我们会需要对PCollection数据集进行拆分, 分别进行不同的计算后,再合并成1个数据集。拆分数据集拆分数据集有2种方式,1种是使用PartitionFn。假设我们要将1个整数的数据集分成2份,奇数和偶数分别处理,则可以如下: PCollection<Integer> numbers = pipeline.apply(Create.of(1,2,3,4,5)); PCollectionList<Integer> numbersList
2020-06-04 00:18:19
1050
原创 apache beam 入门之数据聚合
聚合元素(多个元素合并成1个)操作(类似于reduce操作)如果要将数据集里的所有元素聚合成1个元素,在beam里称为combine操作。假设现在我们有1个PCollection数据集 pInt则我们以计算整数求和的方式,展示3种聚合方式:用beam提供的sdkPCollection<Integer> pSum = pInt.apply(Sum.integersGlobally());用Combine.globally(SerializableFunction类)PCollect
2020-06-02 21:07:06
759
原创 apache beam入门之组装数据变换过程
目录:apache beam 个人使用经验总结目录和入门指导(Java)当我们通过option新建的pipeline后,需要进行一系列组装过程,最后再通过pipeline.run()启动计算。Pipeline pipeline = Pipeline.create(option);/***组装计算过程*/pipeline.run();因此编写beam程序时最核心的部分就是组装计算过程,其中包含1对1转换、聚合等操作。1对1转换(类似于map操作)该部分通过apply函数进行装饰器模式组装,
2020-06-02 20:55:48
590
原创 apache beam入门之输入输出SDK调用(批处理)
目录:apache beam 个人使用经验总结目录和入门指导(Java)众所周知数据处理分批处理和流处理,beam是基于底层计算引擎并支持2者的。 这一章先只介绍批处理的几种数据输入方式,即一次性全部输入全部数据的方式。内存输入数据内存输入方式之前介绍过了,可以通过组装Create类进行内存输入PCollection<String> pcStart = pipeline.apply( Create.of( "HELLO!",
2020-05-30 17:53:45
954
原创 apache beam 入门之pipeline管道
目录:apache beam 个人使用经验总结目录和入门指导(Java)编写beam程序的本质就是对pipeline管道进行创建和组装,最后再运行。pipeline的创建pipeline可以通过option创建。Pipeline pipeline = Pipeline.create(option);也可以先创建无option的管道, 之后再用不同赋值的option去运行Pipeline pipeline = Pipeline.create();........pipeline.run(o
2020-05-30 17:49:57
932
原创 apache beam 个人使用经验总结目录和入门指导(Java)
根据个人一年来使用apache beam的经验, 简单写了一批apache beam的入门文章,以便提供给希望快速上手的同事们使用, 范围暂时只基于自己所接触过的部分, 如果需要更详细地了解apache beam, 需要去beam的官网以及官方文档中去探索。以下使用指导基于java,同时范围只涉及本人一年来的使用经历,并不全面,希望全面深入了解的话请参考官方使用手册和源码注释apache beam介绍初识 apache beamapache beam 入门使用apache beam入门之初次使用
2020-05-30 17:48:41
2863
6
原创 apache beam入门之程序入口——PipelineOption
前置章节apache beam入门宝典之初次使用从第一章里我们看到最开始需要生成1个PipelineOption,然后才能生成1个Pipeline, 而这个所谓的option用处是将可以将程序输入的args数组转成1个PipelineOption对象, 然后就能直接从里面进行get和set操作了,不需要自己再去编写输入参数转化相关的实体类。简单应用例子我们直接先以例子入手,先自定义1个MyTestOption类public interface MyTestOption extends Pipelin
2020-05-28 19:43:15
1059
原创 动态规划到底是怎么想到的?
以后不定期更新一些算法方便自己的思考和总结。相信大家练习可信上机题时,经常会发现题解里写着“动态规划”,里面一上来就是一个复杂的dp公式,对于新人来说除了说声剩下就是疑惑,他是怎么想到这个公式的?我能想到吗?这玩意工作中有用吗?加上“动态规划”这高端的名字,然后就劝退了不少试图去理解他的人。动态规划听起来太吓人,可以换个说法我在内心更喜欢叫他“状态缓存”如果是服务开发,相信很熟悉这个词语, 利用缓存来加快一些重复的请求的响应速度。而这个缓存的特点是 和其他缓存有所关联。比如我们的服务要
2020-05-28 19:34:16
610
1
原创 apache beam入门之初次使用
beam入门宝典之初次使用咱们不多废话,先直接来如何简单使用beam框架。这里我不使用常见的wordCount做例子,而是一个大写转小写的例子,语言选用java语言这个例子里我们会初步学到:如何建立管道如何手动生成数据如何转换如何查看输出首先我们要新建1个maven工程,然后在pom.xml中加入如下依赖:<dependency> <groupId>org.apache.beam</groupId> <artifactId>beam-
2020-05-27 22:51:46
2002
原创 初始apache beam
apache beam的使用背景大数据项目一定会涉及数据处理和计算, 就会涉及到选用哪种计算工具, 摆在面前的有spark、flink、mapreduce、Google Cloud Dataflow等等诸多选择, 如果以同一种计算逻辑去切换计算引擎,就要重新修改里面的API,并调整使用细节,非常不方便。因此就出现了1个整合这些计算资源的解决方案:apache beamBeam是1个统一的编程框架,支持批处理和流处理, 并可以将用beam写出来的程序,在多个计算引擎上去运行。以下是bema当前可支持的
2020-05-27 22:46:27
524
原创 图解java虚拟机之内存分配和垃圾收集
根据《深入理解java虚拟机》一书所作的笔记和图。绘图不易,转载请注明出处引用计数法的缺陷可能存在循环引用, 例如A = B 和B =A , 实际上已经没有再使用他们这2个了,但是依然不会被认为已死可达性分析算法:给定1个GC ROOT对象, 然后判断某个对象能否到达gcRoot这个顶点 ,达不到则认为时可回收。GC ROOT对象: 虚拟机栈引用的对象、 类静态属性引用方法区的回收4种垃圾收集的方法垃圾收集的运行流程多种垃圾收集器的演变图对象在新生代和老生代的之前的转
2020-05-19 01:09:57
144
原创 重新开始
回到满尘的房屋自从工作后没什么时间再像大学那样写博客了,等回来时发现已经满屋子的蜘蛛网和灰尘了。之所以之前不想再写博客,是因为除了oj题,其他都只是读书笔记,没有什么有价值的东西,看我的笔记,他们不如自己去看书,同知识类型也有比我写得更好的博主。重新开始但这2年发现还是有人陆续光顾并留言,说明还是有人看的。曾经考虑过是否换地方,但我是恋旧的人, 不太舍得以前自己写的那些东西,那么就在这里打扫下屋子,重新开始吧规划初步先把自己everNote里的笔记逐步 同步到博客,后续再考虑一些原创性质的文
2020-05-18 00:02:12
159
原创 leetcode 1162. 地图分析
题意:就是求 每个海洋到陆地的最短距离中的最长距离最先想到的O(n^2*m)的方法:把每一列的陆地纵坐标存到列表中先从第一行开始每次从左往右扫, 先计算自己这一点x到这一列所有陆地的距离d然后再拿前面计算过的点x'到陆地的距离d', 再加上x- x',即min(d, d' + x - x')同理计算各行还有从右往左再扫一遍即可class Sol...
2019-11-02 21:13:15
257
原创 leetcode 1190. 反转每对括号间的子串
用栈解决就行, 遇到右括号,就反转再塞回去。class Solution { public String reverseParentheses(String s) { Stack<Character> stack = new Stack<>(); int top = 0; List<Character&...
2019-11-02 19:59:35
1251
原创 【读书笔记】《少有人走的路》之自律
正如书中所说,人生遇到的问题太多了,所以逃避的人也很多,他们无法控制自己去面对这些问题和痛苦。有的选择拖延,有的选择放弃,并持续地延长了下去。要解决的办法就是自律。而作者所说的自律,不仅仅是常见意义上的那种自律,更是心理层面的一种自律。要简单总结的话,就是:推迟满足感,能够让我们拥有解决问题的时间。承担责任,能够让我们拥有解决问题的勇气。忠于事实,能够让我们拥有解决问题的正确思路。保持平衡,能够让...
2018-04-30 17:14:39
553
原创 《C++ Primer》读书笔记第五章——语句
语句大部分都了解,所以摘录的点不多switch 的case标签必须是 “整型常量表达式”2个case标签不能相同几个标签执行相同操作: case 1: case 2: case 3: fun(); break;或者 case 1:case 2:case 3:fun();break;不允许出现这种情况case 1: 定义并“...
2018-04-19 00:06:26
318
原创 《C++ Primer》 读书笔记第3章——字符串、vector、迭代器和数组
string:★不要在头文件中使用using namespace std★getline中不会存入换行符,但会在遇到换行符结束★string的size()函数返回值是size_type类型,无符号的所以如果size()<-5, 则-5被转换成无符号,则是一个很大的数字★“abc”+"def"是错的, string类型的 s + “def”是对的★cctype头文件中有一堆函数,能够判断一个字...
2018-04-17 00:11:43
231
原创 《C++ Primer》读书笔记 第二章——变量、引用、指针、常量和类型
(写在前面:该读书笔记摘录C++ primer中需要注意的知识点,是普通大学课程里或者常见面试题里比较少提到的知识点)数据类型:★long double 是96或128比特★char与 signed char不一样, 实际上char表示为有符号还是无符号取决于编译器因此不要用char去做运算,而应该做比较★执行浮点数计算一般直接用double, 速度不比float慢,而且尽量不要用long do...
2018-04-17 00:09:51
249
原创 LeetCode 37. Sudoku Solver 数独游戏,DFS应用
设置3个数组, 两个二维数组行数组和 列数组, 用来判断该行或该列内, 该值是否可标记一个三维数组group数组,用来标记某个组内该值是否可标记然后用dfs去搜即可注意如果是数字则直接进入下一层记得设置退出标志class Solution {public: int endflag = 0,m,n; vector<vector<int>> cflag,...
2018-03-25 21:08:20
190
原创 练手项目:用openresty + lua + jqurey 制作一个随机发牌网页
项目要求:制作一个可随机发牌的网页,并:用openresty里的nginx搭建web server用lua写后台逻辑,用redis存储卡牌数据,用jqurey写一个前端界面。首先展示下我做出来的成品:展示制作的很垃圾,但好歹了解了怎么前端和后端的一些联系。具体项目的地址这里简要记录一下制作的过程吧。第一步:搭建web server服务器下载Xshell,登录linux服务器,下载openresty...
2018-03-13 21:15:11
1050
原创 Select、poll、epoll区别
相同点: 都是多路IO复用。 什么是多路IO复用? 即通过一种机制,监视多个描述符,一旦描述符就绪,能够通知程序进行相应的读写操作。 但多路IO复用属于同步IO,需要在读写事件就绪后,自己进行阻塞式的读写。 异步IO:内核负责把数据拷贝到用户空间,不需要调用一个recv在那等待。select的优点: ...
2018-03-11 13:55:58
266
原创 4种常用网络命令(ping, tcpdump, netstat, lsof)
ping命令发送ICMP请请求,希望获得ICMP echo, 用ping检查连通的过程 ipconfig/all ,查看本地网络设置 ping 127.0.0.1 ,查看本地TCPIP是否设置正确 ping 本机IP, 查看本地的IP地址设置是否正确 ping 本网网关或本网IP地址,为了检查硬件设备, ping本地DNS ping远程IP地址tcpdump...
2018-03-10 20:59:26
1053
原创 编译过程和makefile
预编译 g++ -E test.c -o test.i则做了以下处理: 删除所有#define,并展开所有宏定义 处理所有条件预编译指令,如#ifdef等 处理#include 预编译指令, 把#include 头文件中的函数都声明都扔进来 去掉所有的注释 添加行号,编译gdb调试 保留¥pragma编译: g++ -S test.i -o test.s...
2018-03-09 16:32:19
1123
原创 gdb调试
想要调试,首先需要加上-g g++ -g hello.c -o hello 或者g++ -g -o hello hello.c启动gdb方法: gdb 可执行文件名 gdb core.xxx gdb program 进程IDgdb断点调试:gdb hello, 则进入hello程序的gdb调试界面输入l(list), 即(gdb):> l则会列出源码, 每...
2018-03-09 15:33:53
229
原创 LeetCode 77. Combinations DFS应用
求1-n的 k位数字的全排列用dfs即可注意剪枝, 当剩下的数字数量 小于 所需数量时,则return。class Solution {public: vector<vector<int>> ans; vector<int> nowv; void dfs(int s,int level,int n){ int i; ...
2018-03-05 19:22:20
207
原创 LeetCode 75. Sort Colors 交换排序
题意: 有1数组为 02210210201012, 我们要把他排序成000011112222这样要求不能用STL排序函数,空间复杂度为O(1)思路: 交换法设定左右两个指针每次把 左边的非0 和 右边的0 进行交换, 换完后继续找左边的非0和右边的0知道左右两个指针相遇,那么0都被换到最左边了。接着再同样处理1(不过要注意,此时不要牵扯到0,因为0已经排好序了)这样子的时间复杂度为O(n),...
2018-03-04 20:10:40
187
原创 Lua笔记——迭代器、协程、面向对象
迭代器pairs 和 ipairs区别pairs: 迭代 table,可以遍历表中所有的 key 可以返回 nilipairs: 迭代数组,不能返回 nil,如果遇到 nil 则退出代码示例:local tab= {[1] = "a",[3] = "b",[4] = "c"}for i,v in pairs(tab) do -- 输出 "a" ,"b", "c" ,
2018-03-04 20:05:10
309
原创 Lua笔记——表和元表
当有一个表为a我们让b = a,则b指向和a相同的表的内存我们修改b[1],则a[1]也变了我们令a=nil,则仅仅是说a指向空但那个表还在,故b仍然可用。当b =nil时, 则已经找不到这个表了但是其内存依然占用着(因为已经无变量指向,故该内存属于泄露内存可以用collectgarbage("collect") 进行回收用collectgarbage("count")检查内存占用率实际上,可以...
2018-03-04 20:02:05
1381
原创 Lua笔记——模块、错误处理、文件IO
模块模块是用表来实现的。会有点像类的概念例子:modul={} 初始化modul. 索引= 值 即声明了模块中的成员function modul.func1() 即声明和定义了modul中的func1函数,有点像成员函数。如果加了local,则外界无法访问。加载:使用require函数来加载模块。require("<模块名>")也可以给模块一个别名,即local...
2018-03-04 20:01:15
509
原创 Lua笔记——基本概念
该文用于快速回顾Lua的知识。基本概念和数据类型注释:单行 --多行--[[ --]]变量:默认为全局无需声明未初始化变量为nil删除变量:令变量=nil数据类型:用type(变量)查看数据类型任何数字都是number类型(双精度)字符串形式:[[字符串]] 或“字符串”"12"+"34" 将会转换成1234(number)#字符串 =字符串长度字符串连接用..表:local t1 = {...
2018-03-04 19:59:07
245
原创 UNP读书笔记之 非阻塞connect
下文实现的程序内容是一个web客户端这个客户端向web一次性请求多个图片这些图片并非串行传输,而是同时建立多个连接,在进行传输。这里利用了非负责的connect, 每次connect并进行三次握手时,先直接返回, 然后一系列设置。在main的for循环中, 用select检测那个链接是否可写或可读, 可写时三次握手结束,需要发送“GET HTTP”请求。可读时,指需要读该文件。而且每次只读一次,...
2018-03-03 16:57:35
308
原创 LeetCode 74. Search a 2D Matrix 二维有序数组中找数字
剑指offer上的原题要点就是从右上角开始查找如果target比该值小说明该值往下都大于target, 故该值往下所有元素舍弃如果target比该值大说明该值往左的元素都小于target,故该值往左的所有元素舍弃直到找到该值或者越界不存在。class Solution {public: bool searchMatrix(vector<vector<int>>&a...
2018-02-26 21:00:14
227
原创 73. Set Matrix Zeroes 尽可能小的空间复杂度问题
题意:如果二维数组中有1个0, 则把那一行和那一列都变为0要求空间复杂度小于O(m + n)于是我的方法是O(m)空间复杂度每次遍历1行,如果发现是0,就把 列清零flag[列号] 置1如果那一行发现过0,则整行清0全部行都这样处理后,再对列进行处理,如果flag为1,就清零class Solution {public: void setZeroes(vector<vector...
2018-02-26 20:47:47
281
unp.h源码(CentOS上可无错编译)
2018-01-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅