avatar
文章
224
标签
10
分类
10
首页
归档
标签
分类
关于
Logo技术博客
搜索
首页
归档
标签
分类
关于

技术博客

Pekko快速入门:基于`ask`的异步消息通信
发表于2025-08-04|大数据|大数据
欢迎来到 Pekko 的世界!本教程将通过一个具体的示例,向您展示如何使用 Pekko 构建一个简单的分布式应用程序。我们将创建两个独立的 Java 应用:一个”远程系统”(服务端),它会等待请求;以及一个”客户端”,它会向远程系统发送一个问候请求,并异步地等待回复。 这个过程主要利用了 Pekko 中非常重要的 Ask 模式 (Ask Pattern)。 源码: github, gitee 核心概念简介在深入代码之前,我们先了解几个 Pekko 的核心概念: Actor (演员): Actor 是 Pekko 的基本计算单元。它是一个对象,封装了状态(State)和行为(Behavior)。Actor 之间通过发送异步消息进行通信,这是它们唯一的通信方式。每个 Actor 都有一个”邮箱”(Mailbox)用来接收消息。 ActorSystem (演员系统): 这是一个重量级的结构,是所有 Actor 的家。它管理着 Actor 的生命周期、调度、配置和线程池等资源。一个应用程序通常只有一个 ActorSystem。 Message (消息): Actor...
Pekko快速入门:基于`tell`的异步消息通信
发表于2025-08-04|大数据|大数据
前言欢迎来到 Pekko 的世界!Pekko 是 Akka 的一个社区驱动的分支,它继承了 Akka 强大的 Actor 模型,为构建高并发、分布式和弹性系统提供了坚实的基础。在 Actor 模型中,所有通信都是通过消息传递完成的。 本篇博文将作为 Pekko 入门系列的第一篇,重点介绍最核心、最常用的消息传递模式:tell。我们将通过构建一个简单的客户端-服务端(Client-Server)应用,一步步向您展示如何使用 tell 方法进行异步、非阻塞的“发射后不管”(Fire-and-Forget)通信。 源码:github, gitee 项目准备在开始编码之前,我们需要在 Maven 项目中添加 Pekko 相关的依赖。 pom.xml 我们主要需要以下几个核心依赖: pekko-actor: Pekko 的核心 Actor 模块。 pekko-remote: 用于实现 Actor 之间的远程通信。 pekko-serialization-jackson: 一个高效且安全的序列化模块,我们将用它替代 Java 原生序列化。 pekko-slf4j:...
解密 Flink 核心:为何有些算子带 UDF,有些却不带?
发表于2025-08-02|大数据|大数据
如果你是一位 Flink 开发者,你一定对这样的代码非常熟悉:我们使用 .map() 来转换数据,用 .filter() 来过滤,同时又用 .keyBy() 来分区。你是否曾停下来思考过:为什么像 map 和 filter 这样的操作需要我们传入一个函数,而像 keyBy 和 shuffle 这样的操作却不需要? 这个看似微小差异的背后,其实隐藏了 Flink 框架设计的核心理念之一。理解这一点,能帮助我们更深刻地把握 Flink 的工作原理。今天,就让我们一起来揭开这个谜底,探索 Flink 中那个无处不在却又至关重要的概念——UDF。 一、UDF 是什么?Flink 的“可编程插件”UDF 是 User-Defined Function(用户自定义函数) 的缩写。 想象一下 Flink 是一个功能强大的全自动厨房。它提供了顶级的厨具和食材处理流水线(数据流),但它并不知道你今天想做什么菜。你想把土豆切成丝(map 操作),还是想挑出不新鲜的蔬菜(filter 操作)? 这些具体的“菜谱”和“处理指令”,就是通过 UDF 来告诉 Flink 的。UDF...
Centos部署Hexo个人博客实战指南
发表于2025-08-01|环境搭建|环境搭建
笔者一直以来都习惯于在稀土掘金平台进行技术博文的分享和记录。掘金作为一个独立运营的第三方平台,确实提供了优质的技术交流环境和丰富的资源,对技术人来说是一片很好的内容创作天地。然而,随着使用时间的增加,笔者开始意识到自己在数据安全方面的隐患以及平台依赖的问题。 首先,掘金目前并没有提供历史文章的导出功能,这意味着用户的所有创作内容都被深深绑定在平台之上,一旦平台无法正常运行或出现类似删库跑路这样的极端情况,用户可能就会面临失去所有文章的风险。此外,如果管理员误删数据、服务器故障导致数据丢失等问题出现,则笔者之前所有的心血可能会付之东流。这种“不受控制”的内容存储方式让我感到缺乏安全感和预见性。 因此,笔者回忆起自己之前曾研究过的个人博客搭建方式,并决定重新捡起基于 Hexo 的博客搭建工具,来构建一个完全属于自己的内容创作和存储空间。在拥有个人博客的基础上,不仅可以保持创作自由,同时也能确保数据的安全和持久性。接下来,本文将详细记录 Hexo 博客的搭建过程,希望对有相同需求的朋友有所帮助。 环境推荐 本地环境:Windows11 服务器环境:RockyLinux...
Nginx 开启 HTTPS:SSL 证书配置指南
发表于2025-07-28|运维手册|运维手册
在当今的互联网环境中,为你的网站启用 HTTPS 不再是“可选项”,而是“必选项”。HTTPS 不仅能保障数据传输安全、防止内容被篡改,还能提升用户信任度和搜索引擎排名。本文将为你提供一份清晰、精简的 Nginx 配置 SSL 证书的操作指南,让你能快速为自己的网站部署 HTTPS。 准备工作在开始配置之前,请确保你已准备好以下内容: 一台已安装 Nginx 的服务器:本文所有操作基于 Nginx。 一个域名:例如 your_domain.com,并已解析到你的服务器 IP。 SSL 证书文件: 证书文件(通常是 .pem 或 .crt 格式),这是公钥证书。 私钥文件(通常是 .key 格式),请务必妥善保管此文件。 你可以从 Let’s Encrypt 获取免费证书,或从其他商业证书颁发机构(CA)购买。 操作步骤第一步:上传证书文件到服务器为了方便管理,我们建议将证书和私钥文件存放在一个统一的目录中。一个常见的做法是在 Nginx 配置目录下创建一个 ssl 文件夹。 12345678910# 创建 SSL 证书存放目录sudo mkdir -p...
修复Nginx请求体临时文件Permission denied错误指南
发表于2025-07-26|运维手册|运维手册
问题背景在Nginx错误日志中发现如下关键报错: 12025/07/26 18:18:10 [crit] 3257334#0: *183982 open() "/var/lib/nginx/tmp/client_body/0000000301" failed (13: Permission denied) 此错误表明Nginx进程在尝试处理POST请求(本例中为/graphql)时,因权限不足无法在/var/lib/nginx/tmp/client_body/目录创建临时文件。 原因分析 临时文件写入机制: 当客户端提交较大请求体(如图片上传、API调用)时,Nginx会先将数据写入client_body_temp_path指定的临时目录 默认路径通常为/var/lib/nginx/tmp/client_body/ 权限问题根源: Nginx工作进程(通常以nginx或www-data用户运行)对目标目录缺乏写权限 目录所有权配置错误(如属主为root) SELinux/AppArmor安全策略限制 解决方案✅...
LeetCode42-接雨水
发表于2025-07-21|算法|算法
题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2: 输入:height = [4,2,0,3,2,5] 输出:9 提示: n == height.length 1 <= n <= 2 * 104 0 <= height[i] <= 105 分析题目要求我们计算一个由非负整数数组表示的高度图能接多少雨水。我们可以把数组的每个元素想象成一个宽度为 1 的柱子。 要计算能接多少雨水,关键在于找出每个位置上方能够蓄水的高度。对于数组中的任意一个位置 i,其上方能蓄水的高度取决于它左边的最高柱子和右边的最高柱子中较矮的那个。 我们用 max_left[i] 表示位置 i 左边(包括 i)的最高柱子高度,用 max_right[i] 表示位置 i...
LeetCode15-三数之和
发表于2025-07-20|算法|算法
题目给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1: 输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]] 解释: 123nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。 不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。 注意,输出的顺序和三元组的顺序并不重要。 示例 2: 输入:nums = [0,1,1] 输出:[] 解释:唯一可能的三元组和不为 0 。 示例...
LeetCode11-盛最多水的容器
发表于2025-07-19|算法|算法
题目给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例 1: 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。 示例 2: 输入:height = [1,1] 输出:1 提示 n == height.length 2 <= n <= 105 0 <= height[i] <= 104 分析1. 理解问题题目的目标是,在给定的代表垂直线高度的数组 height 中,找出两条线,使其与 x 轴共同构成的容器能容纳的水量最大。 容器的容量由两个因素决定: 宽度 (width):两条线在 x 轴上的距离,即它们索引的差 j - i。 高度...
LeetCode283-移动零
发表于2025-07-19|算法|算法
题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums = [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums = [0] 输出: [0] 提示: 1 <= nums.length <= 104 -231 <= nums[i] <= 231 - 1 进阶:你能尽量减少完成的操作次数吗? 分析问题描述给定一个数组 nums,你需要编写一个函数,将数组中的所有 0 元素移动到数组的末尾。这个过程必须满足两个条件: 非零元素的相对顺序必须保持不变。 必须在原数组上直接进行修改(原地操作),不能创建新的数组副本。 解题思路分析这道题的核心在于如何在移动 0 的同时,不打乱其他非零元素的原始顺序。一个直观但错误的想法是遍历数组,每当遇到一个 0,就将它与数组末尾的元素交换。这种方法的问题在于,无法保证非零元素的相对顺序。例如,[0, 1, 0, 3, 12],如果将第一个 0 与...
1…456…23
avatar
李博帅
文章
224
标签
10
分类
10
Follow Me
公告
记录自己的学习成长
最新文章
Debian 13 安装 Docker 与最佳配置2026-01-27
Java并发-为什么要区分不同线程池而不使用统一的大线程池2026-01-26
Java并发-彻底搞懂 CompletableFuture 的线程切换规则2026-01-26
Debian 13 开发环境系统优化指南2026-01-23
Flink1.18.1本地idea源码调试环境搭建2026-01-23
分类
  • java51
  • 前端1
  • 大数据24
  • 容器化43
  • 杂货小铺18
  • 环境搭建15
  • 监控预警7
  • 算法8
标签
容器化 杂货小铺 java 监控预警 大数据 前端 计科基础 算法 运维手册 环境搭建
归档
  • 一月 2026 14
  • 十二月 2025 3
  • 十一月 2025 10
  • 十月 2025 1
  • 八月 2025 16
  • 七月 2025 19
  • 六月 2025 22
  • 五月 2025 11
网站信息
文章数目 :
224
运行时间 :
本站总字数 :
388.6k
最后更新时间 :
©2022 - 2026 By 李博帅
框架 Hexo 7.3.0|主题 Butterfly 5.3.5

豫ICP备2025118913号

搜索
数据加载中