- 博客(45)
- 资源 (2)
- 收藏
- 关注
原创 常用镜像 工具网站 地址
hadoophttps://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/hbasehttps://mirrors.tuna.tsinghua.edu.cn/apache/hbase/hivehttps://mirrors.tuna.tsinghua.edu.cn/apache/hive/
2022-05-26 13:13:29
1575
原创 Netty AbstractNioChannel源码深度剖析:NIO Channel的抽象实现
AbstractNioChannel是Netty框架中基于Java NIO的Channel抽象基类,它在AbstractChannel的基础上进一步封装了NIO特有的功能和行为。该类通过聚合Java NIO的SelectableChannel,将NIO的非阻塞特性与Netty的事件驱动模型完美融合。
2026-04-08 17:35:02
411
原创 Netty AbstractChannel源码深度剖析:网络通信的基石设计
AbstractChannel是Netty框架中Channel接口的核心抽象实现,作为所有具体Channel实现的公共基类,它在Netty的网络通信架构中扮演着承上启下的关键角色。该类通过Facade模式统一封装了网络I/O操作及其相关功能,为SocketChannel和ServerSocketChannel提供了统一的视图接口。
2026-04-08 17:33:02
400
原创 Netty NioEventLoop源码深度解析:单线程事件循环的极致艺术
NioEventLoop是Netty框架中最为核心的执行引擎,它基于单线程事件循环模型实现了高效的I/O多路复用和任务调度机制。作为Netty Reactor线程模型的实现主体,每个NioEventLoop都封装了一个Selector、一个任务队列和一个独立的执行线程,负责处理多个Channel的I/O事件和非I/O任务。
2026-04-07 16:37:38
276
原创 Netty NioEventLoopGroup源码深度剖析:高性能网络编程的核心引擎
NioEventLoopGroup是Netty框架中实现高性能网络编程的核心组件,它既是线程池又是Selector管理器,负责协调和管理多个NioEventLoop实例。作为Netty Reactor线程模型的具体实现,NioEventLoopGroup通过单线程事件循环机制实现了海量连接的并发处理能力。
2026-04-07 16:36:20
255
原创 Netty ChannelPipeline 线程安全机制的深度解析
ChannelPipeline 作为 Netty 事件处理管道的核心抽象,其线程安全性的实现是 Netty 高性能、高并发架构的关键基础。Netty 通过精心设计的机制确保了 ChannelPipeline 所有公共方法的线程安全,主要包括三个方面:第一,事件循环绑定机制确保每个 Channel 的操作都在其绑定的 EventLoop 单线程中顺序执行;第二,内部状态保护通过同步块和原子操作保护关键数据结构;第三,线程上下文切换优化减少不必要的同步开销。
2026-03-31 17:07:18
320
原创 Netty 4.2核心类解析:ChannelPromise的设计哲学与异步编程模型
ChannelPromise是Netty异步编程模型中的核心抽象,它巧妙地将ChannelFuture的只读视图与Promise的可写能力结合在一起,形成了Netty异步操作结果的统一表示。作为ChannelFuture和Promise的双重子接口,ChannelPromise不仅提供了异步操作完成状态的监控能力,还赋予了操作发起方设置结果的权利。
2026-03-31 17:06:04
364
原创 Netty 4.2核心类解析:SingleThreadIoEventLoop的设计哲学与实现
SingleThreadIoEventLoop是Netty 4.2版本中引入的关键抽象类,它代表了Netty框架在架构设计上的重大革新。作为事件循环的核心实现,该类通过引入IoHandler抽象层,成功实现了EventLoop与Channel的解耦,遵循了单一职责原则的设计理念。
2026-03-31 16:33:26
461
原创 加密狗(客户端证书)状态检测与实时验证机制详解
通过智能轮询机制,我们可以有效解决加密狗拔出后系统仍可访问的安全问题。前端智能轮询:合理设置轮询间隔,避免过度请求服务器端验证:每次请求都重新验证证书状态会话管理:及时更新会话状态,确保安全用户体验:提供友好的提示和过渡这种方案虽然不能实现真正的实时检测,但在不依赖客户端守护进程和WebSocket的情况下,提供了相对平衡的解决方案。在实际应用中,可以根据具体的安全需求和性能要求,调整轮询频率和验证策略。
2026-03-31 09:57:46
484
原创 Netty ChannelPipeline 深度解析:网络编程中的拦截过滤器模式实践
本文将深入解析Netty框架的核心组件——ChannelPipeline。ChannelPipeline通过拦截过滤器模式,为网络事件处理构建了一条可插拔的双向处理链,如同数据流动的“高速公路”。文章详细剖析了其基于双向链表的底层结构、入站与出站处理器的分工、事件传播机制以及线程安全的动态管理。同时,提供了从异常处理、性能优化到调试监控的完整实战指南,并总结了保持处理器轻量、正确传播事件、合理排序等最佳实践,帮助开发者构建高性能、可扩展且易维护的网络应用。
2026-03-31 09:49:39
277
原创 【Flink源码分析】6. Flink1.19源码分析-Flink底层的异步通信
仅摘取了 Flink RPC 进行通信的时候一段代码,也是异步通信的典型代码。
2025-02-10 15:28:07
542
原创 【Flink源码分析】5. Flink1.19源码分析-异步编程(CompletableFuture)
runAfterEither与runAfterBoth的主要区别在于,它不需要两个CompletableFuture都完成;只需要其中一个完成就会执行Runnable。
2025-02-10 14:37:24
1425
原创 【Flink源码分析】3. Flink1.19源码分析-精通动态代理
定义一个接口定义接口实现类定义 InvocationHandler定义服务,在服务中调用 Proxy.newProxyInstance() 方法创建动态代理。
2025-02-07 16:54:10
1209
原创 【Flink系列】10. Flink SQL
10. Flink SQLTable API和SQL是最上层的API,在Flink中这两种API被集成在一起,SQL执行的对象也是Flink中的表(Table),所以我们一般会认为它们是一体的。Flink是批流统一的处理框架,无论是批处理(DataSet API)还是流处理(DataStream API),在上层应用中都可以直接使用Table API或者SQL来实现;这两种API对于一张表执行相同的查询操作,得到的结果是完全一样的。我们主要还是以流处理应用为例进行讲解。需要说明的是,Table API
2025-01-16 16:12:36
1544
原创 【Flink系列】9. Flink容错机制
在Flink中,有一套完整的容错机制来保证故障后的恢复,其中最重要的就是检查点。“随时存档”确实恢复起来方便,可是需要我们不停地做存档操作。如果每处理一条数据就进行检查点的保存,当大量数据同时到来时,就会耗费很多资源来频繁做检查点,数据处理的速度就会受到影响。所以在Flink中,检查点的保存是周期性触发的,间隔时间可以进行设置。我们应该在所有任务(算子)都恰好处理完一个相同的输入数据的时候,将它们的状态保存下来。这样做可以实现一个数据被所有任务(算子)完整地处理完,状态得到了保存。如果出现故障,我们恢复
2025-01-16 15:21:55
1378
原创 【Flink系列】8. 状态管理
Flink的状态有两种:托管状态(Managed State)和原始状态(Raw State)。托管状态就是由Flink统一管理的,状态的存储访问、故障恢复和重组等一系列问题都由Flink实现,我们只要调接口就可以;而原始状态则是自定义的,相当于就是开辟了一块内存,需要我们自己管理,实现状态的序列化和故障恢复。通常我们采用Flink托管状态来实现需求。
2025-01-16 15:05:11
1306
原创 【Flink系列】7. 处理函数
之前所介绍的流处理API,无论是基本的转换、聚合,还是更为复杂的窗口操作,其实都是基于DataStream进行转换的,所以可以统称为DataStream API。在Flink更底层,我们可以不定义任何具体的算子(比如map,filter,或者window),而只是提炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作“处理函数”(process function)。
2025-01-16 14:32:02
1175
原创 【Flink系列】6. Flink中的时间和窗口
在Flink中,用来衡量事件时间进展的标记,就被称作“水位线”(Watermark)。具体实现上,水位线可以看作一条特殊的数据记录,它是插入到数据流中的一个标记点,主要内容就是一个时间戳,用来指示当前的事件时间。而它插入流中的位置,就应该是在某个数据到来之后;这样就可以从这个数据中提取时间戳,作为当前水位线的时间戳了。周期性生成器一般是通过onEvent()观察判断输入的事件,而在onPeriodicEmit()里发出水位线。
2025-01-16 14:20:35
1782
原创 【Flink系列】5. DataStream API
5. DataStream APIDataStream API是Flink的核心层API。一个Flink程序,其实就是对DataStream的各种转换。具体来说,代码基本上都由以下几部分构成:5.1 执行环境(Execution Environment)Flink程序可以在各种上下文环境中运行:我们可以在本地JVM中执行程序,也可以提交到远程集群上运行。不同的环境,代码的提交运行的过程会有所不同。这就要求我们在提交作业执行计算时,首先必须获取当前Flink的运行环境,从而建立起与Flink框架之间
2025-01-16 11:46:29
1272
原创 【Flink系列】3. Flink部署
打包完成后,在target目录下即可找到所需JAR包,JAR包会有两个,FlinkTutorial-1.0-SNAPSHOT.jar和FlinkTutorial-1.0-SNAPSHOT-jar-with-dependencies.jar,因为集群中已经具备任务运行所需的所有依赖,所以。这里我们所讲到的部署模式,相对是比较抽象的概念。主要配置程序入口主类的全类名,任务运行的并行度,任务运行所需的配置参数和保存点路径等,如下图所示,配置完成后,即可点击按钮“Submit”,将任务提交到集群运行。
2025-01-16 11:01:07
1660
原创 【Flink系列】2. Flink快速上手
在准备好所有的开发环境之后,我们就可以开始开发自己的第一个Flink程序了。首先我们要做的,就是在IDEA中搭建一个Flink项目的骨架。我们会使用Java项目中常见的Maven来进行依赖管理。
2025-01-16 10:37:35
1468
原创 PostgreSQL 数据库修改wal_level级别
在 PostgreSQL 数据库中,wal_level 是一个关键的配置参数,它决定了预写式日志(Write - Ahead Logging,WAL)的详细程度。常用级别有以下三个:minimal、replica、logical,三个级别的区别与对比如下:选型建议:如果应用需要基于数据库的变更进行实时数据处理(如实时数据同步、ETL 操作等),则需要使用 logical 级别来支持逻辑解码功能获取详细的变更信息。
2024-10-29 14:11:09
2237
原创 oracle 创建用户 ,只赋予查询权限(ChatGPT)
在Oracle数据库中,要创建一个用户并仅赋予查询权限,你可以按照以下步骤进行操作。请注意,执行这些步骤需要具有足够权限的用户(通常是具有。此外,请确保按照你的安全最佳实践来设置用户密码,并仔细考虑授予的权限以确保安全性。或者,如果你希望用户在整个数据库中都有查询权限,可以使用。如果你希望该用户对所有表都具有查询权限,可以使用通配符。完成用户创建和权限授予后,你可以退出当前用户的会话。在此语句中,你可以指定用户名和密码。通常,查询权限是通过。权限的用户登录到Oracle数据库。
2023-11-27 16:43:50
3814
原创 查询 oracle数据库 哪些表有索引
请注意,上述查询可能需要特定的权限来执行。确保你使用的账户具有正确的权限,或者请数据库管理员协助。在Oracle数据库中,你可以使用数据字典来查找相关的信息。
2023-09-15 10:11:44
988
原创 单点登录 cas4.1 怎样设置当前session有效时间
单点登录(Single Sign-On,SSO)的一个流行实现是 CAS (Central Authentication Service)。您可能还需要根据您的具体环境和需求进行其他配置。票据是主要的认证票据,具有一个长的有效期(默认是8小时),并且是CAS用来给用户发放服务票据的票据。服务票据是一个较短的有效期(默认是10分钟),并且是CAS用来允许应用程序访问的票据。除了票据有效期外,您可能还想调整Web应用的 session 超时时间。在对配置文件进行更改后,确保重启CAS服务器以使更改生效。
2023-08-22 14:23:16
2110
原创 修改MongoDB中现有用户的密码
使用mongo shell连接到MongoDB。注意:请确保使用强密码,并定期更改密码以增强安全性。要修改MongoDB中现有用户的密码,您可以使用。切换到该用户所在的数据库。例如,如果您的用户在。替换为您想要更改密码的用户的用户名,并将。完成这些步骤后,用户密码将被更新。如果该用户位于另一个数据库(例如。替换为您想要设置的新密码。
2023-08-10 19:40:15
7005
原创 常用框架介绍
https://layui.gitee.io/v2/docs/https://v3.bootcss.com/http://618cj.com/ys/547/form_basic.html
2023-03-17 16:24:52
147
hibernate自动映射字段类型对照表
2024-12-12
基于Tomcat的代码class加密技术 可实现加密的Tomcat
2023-05-30
java pdf处理 PDF的内容替换 切割 提取 拼接 等等操作
2023-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1