- 博客(98)
- 资源 (1)
- 收藏
- 关注
原创 Java动态语言标准JSR-223
JSR223规范最初在Java6平台被提出,旨在提供一种统一的方式,使Java应用程序能够嵌入和执行多种脚本语言,可以用一致的形式在JVM上执行一些脚本语言。通过JSR223,开发者可以在Java应用程序中灵活地引入脚本语言,从而增强应用程序的功能和灵活性。ScriptEngine是Java中用于解释脚本的接口,它可以通过javax.script包来使用。
2024-10-08 19:26:07
1288
4
原创 防火墙工具iptables应用详解
iptables是Linux系统中一款强大的防火墙工具,它基于Netfilter内核模块,允许管理员定义数据包的转发、过滤和NAT(网络地址转换)规则,以保护网络安全,限制网络流量。
2024-08-05 16:56:53
1128
34
原创 java通过poi解析word入门
Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。可以使用POI在Java程序中对Miscrosoft Office各种文件进行读写操作。
2024-07-26 16:03:13
3524
29
原创 Flink NoSuchFileException: /tmp/flink-netty-shuffle-xxxx/xxxx.channel.shuffle.data异常处理
Fllink 批任务运行一段时间后出现如下错误:java.nio.file.NoSuchFileException: /tmp/flink-netty-shuffle-c5222ebc-a7bb-4fa1-bfd2-c7b5c9bd9b67/3740ddaa0f56ec8bcce80927e4a05443.channel.shuffle.data详细信息如下:Flink任务按Batch模式执行时,配置taskmanager.tmp.dirs 不要使用/tmp目录
2024-07-17 16:06:39
959
10
原创 使用Flink CDC实现 Oracle数据库数据同步(非SQL)
Flink CDC 是一个基于流的数据集成工具,旨在为用户提供一套功能更加全面的编程接口(API)。该工具使得用户能够以 YAML 配置文件的形式实现数据库同步,同时也提供了Flink CDC Source Connector API。
2024-06-28 10:21:26
3545
9
原创 C++基础-编程练习题和答案(数组2)
在C++中,数组是一种数据结构,它允许在内存中连续存储相同类型的元素。 数组是通过索引来访问的,索引从0开始。本文考察C++数组的使用,数组的定义和初始化、数组元素的查找、数组的插入、删除等。植树,校门外的树、排除第一个异形基因、比身高、supercell做核酸
2024-06-06 08:32:40
1093
12
原创 Spring RequestMappingHandlerMapping详解
RequestMappingHandlerMapping是Spring MVC中的一个请求映射处理器,它负责将HTTP请求映射到特定的@RequestMapping注解的方法上。
2024-05-17 14:43:29
2419
18
原创 Spring MVC核心组件之HandlerMapping详解
当一个web请求到来时,DispatcherServlet负责接收请求并响应结果。DispatcherServlet首先需要找到当前请求对应的handler(处理器)来处理请求,流程如下图所示。DispatcherServlet中有一个成员变量叫做handlerMappings,是一个HandlerMapping的集合,当请求到来时,DispatcherServlet遍历handlerMappings中的每一个HandlerMapping以获取对应的handler。
2024-05-16 13:59:28
1421
7
原创 C++基础-编程练习题和答案
查找插入有序数组的位置、最高分、不与最大数相同的数字之和、最大值和最小值的差、数字放大、多余的数、数字接力、幸运大抽奖
2024-05-08 14:23:43
1351
13
原创 C++基础-编程练习题1
哥德巴赫猜想 质数是指除了 1 和本身之外没有其他约数的数, 如 2 和 11 都是质数,而 6 不是质数,因为 6 除了约数 1 和 6 之外还有约数 2 和 3。求出哥德巴赫猜想的所有解(将一个大于 9 的奇数拆分成三个素数之和),并按从小到大的顺序写出。n 行, 包括所有同学的成绩, 每行包括学号和成绩, 之间用一个“: ” 分隔, 成绩保留一。
2024-05-07 15:23:07
898
5
原创 动态规划入门和应用示例
动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的数学方法。它主要用于解决一类具有重叠子问题和最优子结构性质的问题。通过把原问题分解为相对简单的子问题的方式,动态规划可以求得复杂问题的最优解。动态规划的基本思想是将一个复杂的问题分解为若干个相对简单的子问题,通过求解这些子问题,并将它们的解存储起来,以便在求解更大的问题时能够重复利用这些解,从而避免大量的重复计算,提高算法的效率。核心思想动态规划的核心思想是利用过去的数据解决现在的问题。
2024-04-29 11:27:13
3192
61
原创 java.net.BindException: Address already in use: no further information
基于Netty实现的文件管理,对客户端windows系统上的大量中小文件进行上传,并回调rest接口记录文件上传状态。在运行了一段时间后,文件传输过程中出现如下异常:原因分析:错误信息Address already in use: no further information: /10.168.18.170:8345,具有迷惑性,貌似8345端口被占用,实际上是因为短时大量连接占用了过多的端口。Windows的默认最大TCP连接端口数(MaxUserPort)是5000,默认240秒释放之前的操作完的连
2024-04-25 13:45:18
1416
14
原创 Netty Future-Listener 机制
Netty的机制是一种异步编程模型,通过该模型Netty在执行 Bind、Write、Connect等操作时会返回一个 ChannelFuture,调用者并不能立刻获得结果,而是通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。在Netty中,Future和Listener是处理异步I/O操作的重要组件。flush0();if (!1、writeAndFlush操作后返回Future
2024-04-19 09:32:43
1141
7
原创 Netty实现大文件分块传输详解
在Netty中,切分大文件进行传输主要利用以及它的实现类,如。这种机制允许你将大文件切分成多个小块(chunks),并通过Netty的pipeline进行异步发送。设置Netty的ServerBootstrap或Bootstrap首先,你需要配置你的ServerBootstrap或Bootstrap,并添加到你的pipeline中。会处理所有或的写入。创建ChunkedFile对象使用类来创建一个代表大文件的对象。你需要提供文件的路径,以及每个chunk的大小(或者默认使用的默认chunk大小)。
2024-04-16 14:59:14
1789
12
原创 Netty源码解析-服务启动过程
Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。它的服务启动过程涉及多个组件和步骤,下面我将对Netty的服务启动过程进行详细的源码解析。
2024-04-11 18:59:29
866
10
原创 Netty NioEventLoop详解
Netty通过事件循环机制(EventLoop)处理IO事件和异步任务,简单来说,就是通过一个死循环,不断处理当前已发生的IO事件和待处理的异步任务。① NioEventLoop是一个基于JDK NIO的异步事件循环类,它负责处理一个Channel的所有事件在这个Channel的生命周期期间。② NioEventLoop的整个生命周期只会依赖于一个单一的线程来完成。
2024-04-05 19:53:09
1949
20
原创 Netty的线程模型
Netty的线程模型采用了Reactor模式,这是一种高性能的IO设计模式,它基于NIO多路复用。Netty支持多种线程模型,包括单线程模型、多线程模型和混合线程模型。
2024-04-05 10:37:20
1018
15
原创 Java NIO Selector选择器源码分析
Java NIO(New I/O)的Selector选择器是一个用于多路复用(Multiplexing)的I/O操作的关键组件。它允许一个单独的线程监视多个通道(Channel)的可读性和可写性,从而有效地管理大量并发连接。AbstractSelector主要实现了Selector的打开关闭的状态维护,支持异步关闭和中断的begin和end方法,cancelledKeys等。// 是否打开// 三大key集合之一cancelledKeysif (!
2024-04-03 08:40:42
1380
19
原创 Java NIO Selector选择器简介
Selector是Java NIO(New I/O)中的核心组件之一,用于检查一个或多个NIO Channel(通道)的状态是否处于可读、可写、可连接或可接收等。通过Selector,可以实现单线程管理多个Channel对应的网络连接,从而避免多线程的线程上下文切换带来的额外开销。Selector与Channel之间的关系是通过注册的方式完成的。只有SelectableChannel才能被Selector管理,例如所有的Socket通道。
2024-04-02 11:31:09
1235
9
原创 设计模式之观察者模式
观察者模式(Observer Pattern)也被称为发布订阅模式(Publish-Subscribe Design Pattern)。它是一种行为设计模式,允许对象之间建立一种一对多的依赖关系,这样当一个对象状态改变时,它的所有依赖者(观察者)都会收到通知并自动更新。
2024-04-02 08:25:17
1713
8
原创 openLooKeng开发环境搭建
airbase 是 Airlift 公司提供的一个基础构建工具集,它包含了一系列 Maven 插件、依赖管理和其他配置,旨在帮助 Java 开发者更容易地创建、维护和发布 Maven 项目。当您构建或安装您的 Maven 项目时,Maven 会首先解析父 POM,并将父 POM 中的配置应用到当前项目中。在搭建OpenLooKeng开发环境之前,需要确保你的机器上安装了Java Development Kit (JDK) 8以上版本,因为OpenLooKeng是用Java编写的。
2024-03-30 09:45:20
1492
20
原创 Netty空闲检测&Keepalive
Netty的心跳检测和Keepalive机制都是为了确保客户端和服务器之间的连接仍然有效,防止连接断开。但它们在实现方式和原理上有所不同。Netty的心跳检测机制是一种自定义的、基于应用层的机制。它主要通过定时发送和接收特定的消息(心跳包)来检测连接是否仍然处于活动状态。具体来说,Netty提供了IdleStateHandler类来实现心跳检测。在初始化ChannelPipeline时,我们可以添加IdleStateHandler实例,并设置读、写超时时间。
2024-03-26 19:50:54
1921
22
原创 设计模式-工厂模式
工厂设计模式是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建对象的方法。工厂模式将对象的创建与使用分离,使得代码更加灵活和可维护。工厂模式主要分为三种类型:简单工厂模式、工厂方法模式和抽象工厂模式。不过,在 GoF 的《设计模式》一书中,它将简单工厂模式看作是工厂方法模式的一种特例,所以工厂模式只被分成了工厂方法和抽象工厂两类。抽象工厂模式是一种创建型设计模式,它提供了一种方式来封装一组具有共同主题的单个工厂,而不需要指定它们的具体类。
2024-03-26 10:11:12
899
6
原创 Nginx Socket代理
Nginx 的 socket 代理通常指的是 Nginx 通过 stream 模块来处理非 HTTP 的 TCP 流量,比如数据库连接、SSH 连接或其他 TCP 协议的流量。stream 模块允许 Nginx 作为一个反向代理来处理这些连接。stream {server {# Nginx 监听的端口# 后端服务器的地址和端口在这个示例中,Nginx 在本地监听 12345 端口,并将所有到达这个端口的连接代理到的 12345 端口。stream 模块。
2024-03-25 17:03:39
3639
6
原创 设计模式-访问者(Visitor)模式详解和应用
最近在做一个根据数学表达式生成java执行代码的功能,其中用到了访问者模式。使我对访问者模式有了更深入的理解。故写下此篇文章分享出来,不足之处请大家指正。访问者模式(Visitor Pattern)是GoF提出的23种设计模式中的一种,属于行为模式。GoF《Design Pattern》中的定义 :表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。
2024-03-21 14:40:39
2302
12
原创 Java组合式异步编程CompletableFuture
CompletableFuture是Java 8中引入的一个功能强大的Future实现类,它的字面翻译是“可完成的Future”。CompletableFuture对并发编程进行了增强,可以方便地将多个有一定依赖关系的异步任务以流水线的方式组合在一起,大大简化多异步任务的开发。
2024-03-19 14:29:02
1626
12
原创 Java 动态代理Proxy应用和底层源码分析
Java Proxy主要用于创建动态代理实例,这些实例实现了指定的一组接口,并在调用方法时将调用转发给指定的调用处理器(InvocationHandler)。这种机制常用于实现AOP(面向切面编程)框架、RPC(远程过程调用)框架等,以及任何需要动态改变对象行为的场景。
2024-03-18 10:50:03
1057
12
原创 Flink 集群部署模式
Flink支持多种集群部署模式,以满足不同场景和需求。会话模式(Session Mode)在会话模式下,用户首先启动一个长期运行的Flink集群,然后在这个会话中提交多个作业。集群资源在启动时就已经确定,提交的作业会竞争集群中的资源,直到作业运行完毕释放资源。会话模式适合执行大量规模小、执行时间短的作业。由于集群资源是共享的,因此可能存在资源争用的问题。单作业模式(Per-Job Mode)在单作业模式下,每个作业都会启动一个独立的Flink集群,作业完成后集群也会关闭。
2024-03-16 11:50:28
2234
8
原创 Flink广播流 BroadcastStream
Flink中的广播流(BroadcastStream)是一种特殊的流处理方式,它允许将一个流(通常是一个较小的流)广播到所有的并行任务中,从而实现在不同任务间共享数据的目的。广播流在处理配置信息、小数据集或者全局变量等场景下特别有用,因为这些数据需要在所有任务中保持一致且实时更新。定义MapStateDescriptor:首先需要定义一个MapStateDescriptor来描述要广播的数据的格式。这个描述器指定了数据的键值对类型。创建广播流:然后,需要将一个普通的流转换为广播流。这通常通过调用流的。
2024-03-14 17:21:00
4480
8
原创 Flink实战之 MySQL CDC
Flink CDC主要关注于从源数据库(如MySQL、PostgreSQL等)捕获数据变更,并将这些变更实时地提供给Flink作业进行处理。Flink CDC的核心优势在于其实时性和一致性。通过捕获数据库的增量变动记录,Flink CDC能够实时地将这些变更数据同步到Flink流处理作业中,从而实现低延迟的数据处理和分析。同时,Flink CDC还保证了数据的一致性,确保在数据处理过程中数据的准确性和完整性。为了实现这一功能,Flink社区开发了flink-cdc-connectors组件。
2024-03-13 08:28:49
2157
6
原创 Flink StreamTask启动和执行源码分析
Flink的StreamTask的启动和执行是一个复杂的过程,涉及多个关键步骤。初始化:StreamTask的初始化阶段涉及多个任务,包括Operator的配置、task特定的初始化以及初始化算子的State等。在这个阶段,Flink将业务处理函数抽象为operator,并通过operatorChain将业务代码串起来执行,以完成业务逻辑的处理。同时,还会调用具体task的init方法进行初始化。读取数据和事件:StreamTask通过mailboxProcessor读取数据和事件。运行业务逻辑。
2024-03-10 20:50:22
1371
13
原创 Flink 资源管理
在Flink中,资源管理是一个核心组件,它负责分配和管理计算资源,以确保任务能够高效、稳定地运行。资源管理的目标高效性:确保任务能够充分利用可用的计算资源,达到最佳的处理性能。稳定性:在资源不足或任务失败时,能够优雅地处理并恢复任务,保持系统的稳定运行。资源管理的组件:由Flink Master(也称为JobManager)和多个Task Managers组成。Master负责整个集群的协调和资源分配,而Task Managers负责执行具体的任务。
2024-03-09 21:06:14
1524
5
原创 Flink 物理执行图
JobManager根据ExecutionGraph对作业进行调度,并在各个TaskManager上部署任务。这些任务在TaskManager上的实际执行过程就形成了物理执行图。物理执行图并不是一个具体的数据结构,而是描述了流处理任务在集群中的实际执行情况。
2024-03-08 16:19:48
1603
6
原创 Flink ExecuteGraph构建源码解析
JobManager(JobMaster) 根据 JobGraph 生成 ExecutionGraph。ExecutionGraph是JobGraph 的并行化版本,是调度层最核心的数据结构。
2024-03-07 17:33:25
1585
8
原创 Flink JobGraph构建过程
在StreamGraph构建过程中分析了StreamGraph的构建过程,在StreamGraph构建完毕之后会对StreamGraph进行优化构建JobGraph,然后再提交JobGraph。优化过程中,Flink会尝试将尽可能多的StreamNode聚合在一个JobGraph节点中,通过合并创建JobVertex,并生成JobEdge,以减少数据在不同节点之间流动所产生的序列化、反序列化、网络传输的开销。
2024-03-06 12:32:19
1232
6
原创 Flink StreamGraph生成过程
在 Flink 中,StreamGraph 是数据流的逻辑表示,它描述了如何在 Flink 作业中执行数据流转换。StreamGraph 是 Flink 运行时生成执行计划的基础。使用DataStream API开发的应用程序,首先被转换为 Transformation,再被映射为StreamGraph,在客户端进行StreamGraph、JobGraph的转换,提交JobGraph到Flink集群后,Flink集群负责将JobGraph转换为ExecutionGraph,之后进入调度执行阶段。Stre
2024-03-03 21:12:24
1581
8
原创 Flink状态存储-StateBackend
Flink是一个流处理框架,它需要对数据流进行状态管理以支持复杂的计算逻辑。在Flink中,状态存储是指如何和在哪里存储这些状态数据。Flink提供了多种状态后端(State Backend)来实现这种存储,以满足不同的应用场景和性能需求。StateBackend需要具备如下两种能力:1、在计算过程中提供访问 State 的能力,开发者在编写业务逻辑中能够使用 StateBackend 的接口读写数据。2、能够将 State 持久化到外部存储,提供容错能力。
2024-03-02 21:06:33
2167
5
Flink CDC Kingbase插件
2025-01-23
这几天的访问量怎么都是零
2024-05-05
Flink批任务的定时调度大家是如何实现的?
2024-02-07
大家有多少使用Flink处理批数据的?
2024-02-04
原力等级中的综合贡献分除了做任务还与哪些因素有关?
2024-01-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人