- 博客(201)
- 资源 (7)
- 收藏
- 关注
原创 JAVA8 Stream
Stream和IO流(InputStream/OutputStream)没有任何关系,请暂时忘记对传统IO流的固有印象!Stream流式思想类似于工厂车间的“生产流水线”,Stream流不是一种数据结构,不保存数据,而是对数据进行加工处理。Stream可以看作是流水线上的一个工序。在流水线上,通过多个工序让一个原材料加工成一个商品。Stream API能让我们快速完成许多复杂的操作,如筛选、切片、映射、查找、去除重复,统计,匹配和归约。
2023-05-22 15:14:18
1662
1
原创 Go Channel
单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问题。为了保证数据交换的正确性,必须使用互斥量对内存进行加锁,这种做法势必造成性能问题。Go语言的并发模型是CSP(Communicating Sequential Processes),提倡通过通信共享内存而不是通过共享内存而实现通信。如果说goroutine是Go程序并发的执行体,channel就是它们之间的连接。
2023-03-31 10:22:48
360
原创 Hive 存储格式详解
Hive支持的存储数的格式主要有:TEXTFILE(行式存储) 、SEQUENCEFILE(行式存储)、ORC(列式存储)、PARQUET(列式存储)。
2023-03-15 17:46:14
1104
原创 Hive3 安装方式详解,datagrid自定义驱动连接hive
hive的安装一共有三种方式:内嵌模式、本地模式、远程模式。元数据服务(metastore)作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。内嵌模式使用的是内嵌的Derby数据库来存储元数据,也不需要额外起Metastore服务。数据库和Metastore服务都嵌入在主Hive Server进程中。这个是默认
2023-02-20 16:02:22
891
原创 Flink 连接流详解
最简单的合流操作,就是直接将多条流合在一起,叫作流的“联合”(union)。联合操作要求必须流中的数据类型必须相同,合并之后的新流会包括所有流中的元素,数据类型不变。这种合流方式非常简单粗暴,就像公路上多个车道汇在一起一样。在代码中,我们只要基于 DataStream 直接调用.union()方法,传入其他 DataStream 作为参数,就可以实现流的联合了;union()的参数可以是多个 DataStream,所以联合操作可以实现多条流的合并。这里需要考虑一个问题。
2023-02-14 10:29:12
1046
原创 Flink 滚动窗口、滑动窗口详解
滚动窗口有固定的大小,是一种对数据进行“均匀切片”的划分方式。窗口之间没有重叠,也不会有间隔,是“首尾相接”的状态。如果我们把多个窗口的创建,看作一个窗口的运动,那就好像它在不停地向前“翻滚”一样。这是最简单的窗口形式,我们之前所举的例子都是滚动窗口。也正是因为滚动窗口是“无缝衔接”,所以每个数据都会被分配到一个窗口,而且只会属于一个窗口。滚动窗口可以基于时间定义,也可以基于数据个数定义;需要的参数只有一个,就是窗口的大小(window size)。比如我们可以定义一个长度为 1 小时的滚动时间窗口,那么
2023-02-10 15:39:28
12473
原创 Flink 归约聚合(reduce)
其实,reduce 的语义是针对列表进行规约操作,运算规则由 ReduceFunction 中的 reduce方法来定义,而在 ReduceFunction 内部会维护一个初始值为空的累加器,注意累加器的类型。将合并的结果看作一个数据、再跟后面的数据合并,最终会将它“简化”成唯一的一个数据,这也就是 reduce“归约”的含义。和输入元素的类型相同,当第一条元素到来时,累加器的值更新为第一条元素的值,当新的元素到来时,新元素会和累加器进行累加操作,这里的累加操作就是 reduce 函数定义的运算规。
2023-02-07 16:47:32
1952
原创 flume kafka channel 应用详解
Kafka Source 是一个 Apache Kafka 消费者,它从 Kafka 主题中读取消息。如果您有多个 Kafka 源正在运行,您可以使用相同的消费者组配置它们,这样每个源都将读取一组唯一的主题分区。测试已完成至 2.0.1,这是发布时的最高可用版本。这是一个可以将数据发布到 Kafka 主题的 Flume Sink 实现。目标之一是将 Flume 与 Kafka 集成,以便基于拉取的处理系统可以处理来自各种 Flume 源的数据。测试已完成至 2.0.1,这是发布时的最高可用版本。
2023-02-03 09:39:10
991
原创 Flink 实时计算DIM层实现方案
DIM层设计要点:(1)DIM层的设计依据是维度建模理论,该层存储维度模型的维度表。(2)DIM层的数据存储在 HBase 表中DIM 层表是用于维度关联的,要通过主键去获取相关维度信息,这种场景下 K-V 类型数据库的效率较高。常见的 K-V 类型数据库有 Redis、HBase,而 Redis 的数据常驻内存,会给内存造成较大压力,因而选用 HBase 存储维度数据。(3)DIM层表名的命名规范为dim_表名本层的任务是将业务数据直接写入到不同的 HBase 表中。那么如何让程序知道流中的哪些数据
2023-01-18 16:56:28
972
1
原创 Flink 运行架构
Flink 运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作:作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher)。因为 Flink 是用 Java 和 Scala 实现的,所以所有组件都会运行在Java 虚拟机上。
2023-01-07 13:52:59
376
原创 ElasticSearch8.4.3 Springboot 复杂查询
查询十月份手机类型数据:统计10月手机,不同类型,不同级别,平均价格统计10月手机,不同类型,不同级别,平均价格最低的手机以及价格
2022-11-11 15:03:39
1563
原创 SpringBoot + ElasticSearch8.4.3 实现简单CRUD、批量操作
【代码】SpringBoot + ElasticSearch8.4.3 实现简单CRUD、批量操作。
2022-11-09 16:27:28
2069
原创 Docker 安装 Elasticsearch 8.4.3 + Kibana 8.4.3 (账号密码模式)
【代码】Docker 安装 Elasticsearch 8.4.3 + Kibana 8.4.3 (账号密码模式)
2022-11-08 14:56:06
1612
1
原创 ElasticSearch最新版(8.4.3) IK分词器基于mysql实现热更新词库
阅读Dictionary类下的initial方法,基于该方法进行改造。
2022-10-28 11:09:31
1675
1
原创 Elasticsearch 查询详解
term的查询是代表完全匹配,搜索之前不会对你搜索的关键字进行分词,如关键字手机,不会分成手和机,再根据关键字去文档分词库中去匹配内容。match查询属于高层查询,会根据你查询的字段的类型不一致,采用不同的查询方式。,而且filter会对经常被过滤的数据进行缓存,方便下次快速定位查询;由于filter不计算分数,所以性能优于计算分数的查询。filter,根据你的查询条件去查询文档,
2022-10-25 15:44:37
1353
原创 Elasticsearch Mapping 详解
ES 中的 Mapping 相当于传统数据库中的表定义,它有以下作用:1 定义索引中的字段的名字。2 定义索引中的字段的类型,比如字符串,数字等。3 定义索引中的字段是否建立倒排索引。
2022-10-25 11:46:51
1280
原创 Go Template 用法详解
在一些前后端不分离的Web架构中,我们通常需要在后端将一些数据渲染到HTML文档中,从而实现动态的网页(网页的布局和样式大致一样,但展示的内容并不一样)效果。我们这里说的模板可以理解为事先定义好的HTML文档文件,模板渲染的作用机制可以简单理解为文本替换操作–使用相应的数据去替换HTML文档中事先准备好的标记。Go语言内置了文本模板引擎text/template和用于HTML文档的html/template。
2022-10-10 16:37:33
2560
原创 Kafka 索引查找、文件存储、清除策略
Topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是Producer生产的数据。Producer生产的数据会被不断 追加到该log文件末端,为防止log文件过大导致数据定位效率低下,Kafka采取了分片和索引机制,将每个partition分为多个segment。这些文件位于一个文件夹下,该文件夹的命名规则为:topic名称+分区序号,例如:hello_world_topic-0。那么日志一旦超过了设置的时间,怎么处理呢?
2022-09-23 14:30:45
871
原创 【java】【布式锁实战多节点】【多节点定时任务只执行一次】
需求,由于现在定时任务较多,bash项目单机部署压力过大、效率太低,现需要多机部署,并且当前时刻只能有一个定时任务成功执行。3 JAVA demo环境概述启3个springboot项目,端口不一致,定时任务代码一致。当前任务获取锁,如果获取到锁,则执行任务,如果获取不到,则什么都不干。Code:检测任务:日志:检测结果:问题: 由于任务执行的时间很短,A节点抢到锁释放锁完成了,B节点抢锁去发现就没有锁,导致上报任务重复执行。检测任务:日志:检测结果:没有重复任务缺陷: 如果节点A抢到锁,
2022-08-25 15:23:03
2782
原创 Spring Boot 大文件上传(断点上传)、服务端分片下载、客户端分片下载(断点下载)
Spring Boot 大文件上传(断点上传)、服务端分片下载、客户端分片下载(断点下载)
2022-07-15 14:34:36
1907
原创 shell 运算符
expr 是 evaluate expressions 的缩写,译为“求值表达式”。Shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串进行处理,例如计算字符串长度、字符串比较、字符串匹配、字符串提取等, 后续讲解。计算语法获取计算结果赋值给新变量语法1.3 demo算术运算符介绍下表列出了常用的算术运算符,假定变量 a 为 1,变量 b 为 2:下表列出了常用的比较运算符,假定变量 a 为 1,变量 b 为 2:注意:整数比较运算符只支
2022-06-24 16:36:57
190
原创 shell 内置命令
read 是 Shell 内置命令,用于从标准输入中读取数据并赋值给变量。如果没有进行重定向,默认就是从终端控制台读取用户输入的数据;如果进行了重定向,那么可以从文件中读取数据。options支持的参数:1 使用 read 命令给多个变量赋值2 读取一个字符3 校验密码5秒校验密码是否一致 用于退出当前Shell环境进程结束运行, 并且可以返回一个状态码.一般使用 可以获取退出状态码2.3 demodeclare命令用于声明 shell 变量,实现关联数组变量。关联数组也称为“键值对(
2022-06-24 15:10:11
969
原创 shell 数组
Shell 支持数组(Array), 数组是若干数据的集合,其中的每一份数据都称为数组的元素。只支持一维数组,不支持多维数组。在 Shell 中,用括号来表示数组,数组元素之间用空格来分隔. 语法为:3 数组的获取1 通过下标获取元素值,index从0开始2 .获取值同时复制给其他变量3 使用 或 可以获取数组中的所有元素4 获取数组的长度或个数5 获取数组指定元素的字符长度demo:所谓 Shell 数组拼接(数组合并),就是将两个数组连接成一个数组使用 和 获取数组所有元素之
2022-06-24 11:05:27
141
原创 shell 字符串变量
字符串(String)就是一系列字符的组合。字符串是 Shell 编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了)1 单引号方式2 双引号方式, 推荐3 不用引号方式1 使用单引号’'的字符串任何字符都会原样输出,在拼接字符串中使用变量是无效的。2 由双引号包围的字符串其中包含了变量,那么该变量会被解析得到值,而不是原样输出。3 不被引号包围的字符串不被引号包围的字符串中出现变量时也会被解析,这一点和双引号包围的字符串一样。字符串中不能出现空格,否则空格后边的字符串会作为其
2022-06-24 10:02:02
3358
淘宝技术这十年 高清PDF
2017-11-20
spring4.3核心jar包
2017-09-09
SSM核心包,SSM核心包
2017-09-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人