- 博客(183)
- 收藏
- 关注
原创 工号不够用了怎么办?
注意:新工号不能全为字母或者数字,允许数字部分有前导0或者全为0。但是过长的工号会增加同事们的记忆成本,现在给出新工号至少需要分配的人数X和新工号中字母的长度Y,求新工号中数字的最短长度Z。3020年,空间通信集团的员工人数突破20亿人,即将遇到现有工号不够用的窘境。现在,请你负责调研新工号系统。新工号由一段英文字母开头,之后跟随一段数字,比如"aaahw0001",“a12345”,“abcd1”,“a00”。一行两个非负整数 X Y,用数字用单个空格分隔。输出新工号中数字的最短长度Z。
2022-09-07 20:54:40
573
1
原创 最长的顺子
斗地主起源于湖北十堰房县,据说是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑得快”改编的,如今已风靡整个中国,并流行于互联网上。可用的牌 3
2022-09-07 20:07:18
2147
1
原创 Java集合和数组的区别
数组和集合都是java中的容器。数组 大小固定,只能存储相同数据类型的数据集合 大小可动态扩展,可以存储各种类型的数据1、类型声明:数组声明了它容纳的元素的类型,而集合不声明。数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了,而且生命周期也是不能改变的,还有数组会做边界检查,如果发现有越界现象,会报RuntimeException异常错误,当然检查边界会以效率为代价。集合的长度是可变的,可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
2022-09-05 22:34:25
4407
原创 hashMap
在jdk1.8里,对数据结构做了进一步优化,引入了红黑树,当链表长度大于8的时候,链表就会转成红黑树,利用红黑树快速增删改查的特点提高HashMap的性能,其中会用到红黑树的插入、删除、查找等算法。作为不可变类天生是线程安全的,当然Java里的数组是无法自动扩容的,方法是使用一个新的数组代替已有的容量小的数组,就像我们用一个小桶装水,如果想装更多的水,就得换大水桶。向HashMap对象里不停的添加元素,而HashMap对象内部的数组无法装载更多的元素时,对象就需要扩大数组的长度,以便能装入更多的元素。
2022-09-04 22:24:24
557
原创 大数据调优总结
基于输出键的背景知识,进行自定义分区。例如,如果map输出键的单词来源于一本书。其中大部分必然是省略词(stopword)。那么就可以将自定义分区将这部分省略词发送给固定的一部分reduce实例。而将其他的都发送给剩余的reduce实例。.........
2022-08-12 15:59:26
2393
原创 Hbase
2) 查询时,指定列族,start/endRow,尽量通过rowkey查询过滤数据,减少filllter的使用。2)用http动作表示对资源的操作: get 查询;hbase用于保存设备采集的数据,一个租户一个表,查询也是直接自从hbase中取数据。(3) 将scan缓存从100增大到500或者1000,用以减少RPC次数。1)用URI表示1种资源,只用名词表示资源,不要动作;查询场景为,查询某设备多测点某时间范围数据。Spring boot 版本 2.5.1。3)用http状态码表示结果。...
2022-08-11 12:58:43
1217
转载 Spark SQL 底层实现原理(部分)
这个阶段的优化器主要是基于规则的(Rule-based Optimizer,简称 RBO),而绝大部分的规则都是启发式规则,也就是基于直观或经验而得出的规则。从上面的查询计划我们可以看得出来,我们编写的sql语句,经过多次转换,最终进行编译成为字节码文件进行执行,(注意,图是从下往上看的)其中包括以下几个重要步骤。直接使用SQL的方式实现大数据的开发,它同时支持DSL以及SQL的语法风格,目前在spark的整个架构设计当中,所有的spark模块,例如。,通过这个对 SQL 进行词法分析并构建语法树。...
2022-08-11 12:13:22
439
原创 五、业--分
前期将业务库中数据全部都落地到了Hbase当中的四张表里面去了,针对以上订单表,司机表,用户表,司管方表等,我们可以针对以上存储在Hbase当中的数据进行统计分析,通过sparkSQL读取Hbase当中的数据,实现数据的统计分析,然后将统计分析的结果,通过sparkSQL自定义输出源,保存到Hbase里面去。这里涉及到技术点;(1)自定义sparkSQL数据源来实现读取Hbase的数据,(2)自定义sparkSQL的数据保存,将统计的结果保存到Hbase里面去sql语句指标的统计:面试时候需要给别人说
2022-08-07 17:02:34
276
原创 四、业-解
maxwell是一款专业解析mysql的binlog的数据同步的工具,功能与canal类似(canal是阿里开源的一款数据实时同步工具),我们可以通过maxwell或者canal来实现binlog的实时解析,实现数据的实时同步。官方网址:http://maxwells-daemon.io/maxwell与canal的比较1、虽然Maxwell不能直接支持HA,但是它支持断点还原,即错误解决后重启继续上次点儿读取数据。2、Canal是服务端,数据过来了并不能直接写出去,需要一个客户端。............
2022-08-07 17:02:02
229
原创 一、用--仓
为什么要自定义UDF/UDTF,因为自定义函数,可以自己埋点Log打印日志,出错或者数据异常,方便调试。自定义UDF函数(解析公共字段,一进一出)自定义UDTF函数(解析具体事件字段,一进多出)自定义UDF:继承UDF,重写evaluate方法自定义UDTF:继承自GenericUDTF,重写3个方法:initialize(自定义输出的列名和类型),process(将结果返回forward(result)),close自定义UDF:继承UDF,重写evaluate方法。...................
2022-08-07 16:55:36
437
1
原创 三、轨--监
自主维护offset司机端APP每隔一定时间上报日志数据,经纬度坐标信息,以日志数据的形式进行打印到日志服务器。分为:轨迹日志数据,订单日志数据1)轨迹数据格式说明:一共5个字段司机ID、订单ID、时间戳、经度、纬度2)订单数据格式说明:一共24个字段订单ID、城市ID、订单类型、起终点经纬度 、出行品类、乘车人数的订单属性数据。zk + hadoop + hbase + flume +kafka +redis1)flume:日志数据采集,使用avro source avro sink ..
2022-08-06 16:28:53
231
原创 Flink CDC
Flink 社区开发了 flink-cdc-connectors 组件,这是一个可以直接从 MySQL、PostgreSQL 等数据库直接读取全量数据和增量变更数据的 source 组件。
2022-08-06 11:19:43
1148
原创 一、flink
动态根据mysql中租户表的数据开通状态,根据租户名,存入数据到相应hbase表。MapState存储每个设备的规则,key 为sysID + deviceID,value为没规则
2022-08-05 19:11:45
2766
原创 3查找算法
插值查找算法类似于二分查找,不同的是插值查找每次从自适应mid处开始查找。将二分查找中的求mid索引的公式,low表示左边索引left,high表示右边索引right.key就是前面我们讲的findVal/插值索引/对应前面的代码公式。...
2022-07-29 15:53:42
104
原创 2.6基数排序(桶排序)
1)基数排序(radixsort)属于“分配式排序”(distributionsort),又称“桶子法”(bucketsort)或binsort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用;2)基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法;3)基数排序(RadixSort)是桶排序的扩展;4)基数排序是1887年赫尔曼·何乐礼发明的。它是这样实现的将整数按位数切割成不同的数字,然后按每个位数分别比较。[注;...
2022-07-29 14:57:04
346
原创 2.6归并排序
归并排序(MERGE-SORT)是利用归并的思想,实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法,将问题分成一些小的问题然后递归求解,而治的阶段,则将分的阶段得到的各答案"修补"在一起,即分而治之)。归并排序思想示意图再来看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7.8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,6,7,8],来看下实现步骤。...
2022-07-29 14:10:36
87
原创 2.5快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。...
2022-07-29 13:43:35
118
原创 2.4希尔排序
希尔排序是希尔(DonaldShell))于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。...
2022-07-29 13:14:16
128
原创 2.3插入排序
插入排序(InsertionSorting属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。...
2022-07-29 10:32:42
88
原创 2.2选择排序
选择排序(selectsorting)也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换;第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换;第三次从arr[2]~arr[n-1]中选取最小值,与arr[2l交换;…,第i次从arr[i-1]~arr[n-1]中选取最小值,与arr[i-1]交换;…,...
2022-07-29 10:27:52
99
原创 2.1冒泡排序(Bubble Sorting)
通过对待排序序列从前向后,依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。小结上面的图解过程(1)一共进行数组的大小-1次大的循环;(2)每一趟排序的次数在逐渐的减少;(3)如果我们发现在某趟排序中,没有发生一次交换,可以提前结束冒泡排序。这个就是优化因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。...
2022-07-29 10:19:45
113
原创 递归-八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法(92)。...
2022-07-29 09:40:37
115
原创 1.4、栈
1)栈的英文为(stack)2)栈是一个先入后出(FILO-FirstInLastOut)的有序列表。3)栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。4)根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。5)图解方式说明**出栈(pop)和入栈(push)**的概念。...
2022-07-28 19:49:06
169
原创 1.3、链表
链表是有序的列表,但是它在内存中是存储如下1)链表是以节点的方式来存储,是链式存储;2)每个节点包含data域,next域指向下一个节点;3)如图发现链表的各个节点不一定是连续存储;
2022-07-27 23:38:53
102
原创 1.2、队列
1)队列是一个有序列表,可以用数组或是链表来实现。2)遵循先入先出的原则。即先存入队列的数据,要先取出。后存入的要后取出3)示意图(使用数组模拟队列示意图)
2022-07-27 22:51:01
78
原创 1.1、稀疏数组
当一个数组中大部分元素为0,或者为同一个值的数组时,可以用稀疏数组来保存该数组。1)记录数组一共有几行几列,有多少个不同的值2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。......
2022-07-27 22:37:31
96
转载 Java8 stream
Java 8 中的 Stream 是**对集合(Collection)对象功能的增强**,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。
2022-07-04 18:42:25
116
原创 相关shell脚本
1、 重启服务#/!bin/bashecho "start..."export LANG=en_US.UTF-8export PACKAGE_NAME=com.cserver.HbaseDataScan.jarexport LOGFILE_NAME=hbase.logkill -9 $(ps -ef | grep $PACKAGE_NAME |grep -v grep |awk '{print $2}')rm -rf $LOGFILE_NAMEnohup java -jar -Xms
2022-05-17 14:09:26
341
转载 Linux 常用命令全拼
https://www.runoob.com/w3cnote/linux-command-full-fight.htmlpwd: print work directory 打印当前目录 显示出当前工作目录的绝对路径ps: process status(进程状态,类似于windows的任务管理器)常用参数:-auxfps -auxf 显示进程状态df: disk free 其功能是显示磁盘可用空间数目信息及空间结点信息。换句话说,就是报告在任何安装的设备或目录中,还剩多少自由的空间。du:
2022-03-21 11:04:52
267
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人