自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 JDK11新特性

在了解新特性之前,需要说明Java 11带来的一些重要变更:- 自Java 11起,Oracle JDK不再免费用于商业用途,需要购买许可证- 如需免费使用,可以选择OpenJDK版本(由Oracle或其他提供商如AdoptOpenJDK、Azul等提供)- Java 8的免费支持在2019年1月结束,后续安全更新需要付费- JavaFX已从JDK中移除,作为独立模块提供

2025-05-19 10:05:11 770

原创 Docker编排工具详解:Docker Compose与Docker Swarm

随着容器技术的普及,单个容器已经无法满足复杂应用部署的需求。在实际应用场景中,我们通常需要协调多个容器共同工作,这就是容器编排的概念。Docker提供了两个强大的编排工具:Docker Compose和Docker Swarm。本文将深入探讨这两个工具的特性、使用方法以及最佳实践。

2025-05-12 10:18:00 1092

原创 Docker组件详解:核心技术与架构分析

Docker作为一种容器化技术,已经彻底改变了软件的开发、交付和部署方式。要充分理解和利用Docker的强大功能,我们需要深入了解其核心组件以及它们如何协同工作。本文将详细介绍Docker的主要组件、架构设计以及它们之间的关系。

2025-05-09 17:57:37 1306

原创 Docker基础入门:容器化技术详解

Docker是一个开源的容器化平台,它允许开发者将应用及其依赖打包到一个可移植的容器中,从而确保应用在不同环境中的一致运行。Docker于2013年发布,迅速成为软件开发领域的革命性工具,解决了传统开发中"在我的机器上能运行"的经典问题。

2025-05-09 17:46:02 774

原创 设计模式(构建者模式)

建造者模式(Builder Pattern)是一种创建型设计模式,它允许我们分步骤创建复杂对象。这种模式特别适合那些需要多个步骤才能构建出来的、有很多配置选项的对象。

2025-04-30 16:42:18 559

原创 设计模式(工厂模式)

工厂设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,而是通过使用一个共同的接口来指向新创建的对象。简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)工厂设计模式是一种非常实用的创建型设计模式,它通过封装对象的创建过程,使客户端代码与具体产品的实现细节解耦。根据不同的需求和场景,我们可以选择使用简单工厂、工厂方法或抽象工厂。

2025-04-29 17:42:50 1071

原创 MCP,看这一篇就够

MCP(模型上下文协议)是一个开放标准,用于规范化应用程序如何向大型语言模型(LLM)提供上下文信息。简单来说,MCP就像AI应用的USB-C接口 —— 正如USB-C为设备提供了与各种外设连接的标准方式,MCP为AI模型提供了与不同数据源和工具连接的标准方式。MCP由Anthropic公司于2024年底推出并开源,旨在解决AI助手与数据源集成的问题。无论你是在开发AI驱动的IDE、增强聊天界面,还是创建自定义AI工作流,MCP都提供了一种标准化的方式,将LLM与它们所需的上下文连接起来。

2025-04-29 11:38:20 851

原创 Open Manus源码分析-Tool

OpenManus的工具系统采用了一种高度模块化的设计,它为AI代理提供了一组结构化的"工具"接口,使代理能够执行诸如网络搜索、命令执行、文件操作等超出纯语言模型能力范围的任务。抽象统一:所有工具遵循相同的接口规范功能隔离:工具之间相互独立,职责明确可组合性:工具可以被灵活组合使用安全边界:工具执行受到权限控制和错误处理保护。

2025-04-28 11:17:49 967

原创 设计模式(状态模式)

在实际的软件开发中,状态模式并不是很常用,但是在能够用到的场景里,它可以发挥很大的作用。从这一点上来看,它有点像我们之前讲到的组合模式。状态模式一般用来实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。不过,状态机的实现方式有多种,除了状态模式,比较常用的还有分支逻辑法和查表法。今天,我们就详细讲讲这几种实现方式,并且对比一下它们的优劣和应用场景。有限状态机,英文翻译是Finite State Machine,缩写为FSM,简称为状态机。

2025-04-28 10:44:12 897

原创 OpenManus源码分析-Flow

在前两篇文章中,我们分析了OpenManus的整体架构和核心Agent模块。今天我们深入探讨OpenManus的Flow模块,这是整个框架中负责编排工作流的关键组件。通过本文,你将了解OpenManus如何组织复杂的任务流程,以及如何利用其灵活的流程设计构建智能应用。

2025-04-27 10:57:26 1073

原创 OpenManus源码分析-Agent

本文基于OpenManus源码架构分析,着重讲解OpenManus Agent模块和核心实现。

2025-04-21 10:14:55 668

原创 OpenManus源码架构分析

总览介绍OpenManus总体架构,后续文章继续拆分核心模块的讲解

2025-04-17 17:37:47 843

原创 设计模式(责任链模式)

设计模式责任链模式的原理和实现,以及框架中使用责任链模型的例子

2025-04-16 11:39:05 633

原创 AI Agent基本概念

AI Agent一些基本概念的介绍

2025-04-15 14:18:59 844

原创 大模型应用评测

大模型分类应用,多分类应用以及RAG应用的测评方法

2025-04-14 10:51:30 1133

原创 用好AI大模型-提示词工程

提示词工程

2025-04-10 16:28:39 744

原创 设计模式(观察者模式)

观察者模式(Observer Design Pattern)也被称为发布订阅模式。模式定义:在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有的依赖对象都会自动收到通知。一般情况下,被依赖的对象叫做被观察者(Observeable),依赖的对象叫作观察者(Observer)。

2025-01-10 16:48:36 755

原创 ThreadLocal、ITL、TTL的区别和使用

本文章简单介绍ThreadLocal、InheritableThreadLocal(ITL)、TransmittableThreadLocal(TTL)的区别和使用。

2024-11-06 10:13:10 1018 1

原创 React新人小白上手教程(适合后端选手食用)

本文适合前端新手以及需要进行前端开发的后端开发者阅读。所涉及的知识点覆盖全面,即使没有前端基础的读者也可以轻松理解。部分内容参考了 React 官方文档(Link),官方文档详细且易于理解,建议有兴趣深入学习的同学查阅。作为一名刚开始接触 React 前端开发的学习者,如果文中存在不足或错误之处,欢迎大家给予批评和指正。下面开始我们的React上手之旅。HTML是一种用于创建网页的标准标记语言。它是一种标记语言,用于描述网页的结构。CSS是一种样式表语言,用于描述HTML文档的展示。

2024-11-06 10:11:32 1176

原创 Flink中任务(Tasks)和任务槽(Task Slots)详解

在之前不做共享的时候,每个任务都平等地占据了一个slot,但其实不同的任务对资源的占用是不同的。所以对于第一个任务节点source→map,它的6个并行子任务必须分到不同的slot上(如果在同一slot就没法数据并行了),而第二个任务节点keyBy/window/apply的并行子任务却可以和第一个任务节点共享slot。另外,同一个任务节点的并行子任务是不能共享slot的,所以允许slot共享之后,运行作业所需的slot数量正好就是作业中所有算子并行度的最大值。而不同的任务节点的子任务可以共享slot。

2024-03-19 16:46:25 1632

原创 Flink中JobManager与TaskManage的运行架构以及原理详解

TaskManager是Flink中的工作进程,数据流的具体计算就是它来做的,所以也被称为“Worker”。当然由于分布式计算的考虑,通常会有多个TaskManager运行,每一个TaskManager都包含了一定数量的任务槽(task slots)。TaskManager启动之后,JobManager会与它建立连接,并将作业图(JobGraph)转换成可执行的“执行图”(ExecutionGraph)分发给可用的TaskManager,然后就由TaskManager具体执行任务。

2024-03-19 15:32:30 2894 1

原创 [leetcode 274][H指数]

leetcode H指数

2024-03-19 09:27:29 310

原创 [leetcode 55][跳跃游戏]

leetcode 55 跳跃游戏

2024-03-12 11:15:22 338

原创 [leetcode 45][跳跃游戏||]

leetcode45 跳跃游戏

2024-03-12 11:11:58 369

原创 Flink 性能优化总结(反压优化篇)

flink 性能优化 数据反压优化

2024-03-11 15:59:51 1410 1

原创 Flink 性能优化总结(内存配置篇)

flink 性能优化 内存配置

2024-03-11 15:36:51 2311

原创 [leetcode 189][轮转数组]

输入: nums = [1,2,3,4,5,6,7], k = 3。输入:nums = [-1,-100,3,99], k = 2。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]输出: [5,6,7,1,2,3,4]输出:[3,99,-1,-100]

2024-03-08 16:42:36 259

原创 设计模式(工厂模式)

设计模式 工厂模式

2024-03-08 11:27:39 762

原创 [leetcode 26][删除有序数组的重复项]

解释:函数应返回新长度 length = 7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。输入:nums = [0,0,1,1,1,1,2,3,3]输出:7, nums = [0,0,1,1,2,3,3]输出:5, nums = [1,1,2,2,3]输入:nums = [1,1,1,2,2,3]

2024-03-07 16:54:14 269 1

原创 [leetcode 169][多数元素]

如果新来到的士兵不是同一阵营,则前方阵营派一个士兵和它同归于尽。如果新来的士兵和前一个士兵是同一阵营,则集合起来占领高地,领主不变,winner 依然是当前这个士兵所属阵营,现存兵力 count++;当下一个士兵到来,发现前方阵营已经没有兵力,新士兵就成了领主,winner 变成这个士兵所属阵营的旗帜,现存兵力 count ++。第一个到来的士兵,直接插上自己阵营的旗帜占领这块高地,此时领主 winner 就是这个阵营的人,现存兵力 count = 1。输入:nums = [2,2,1,1,1,2,2]

2024-03-07 15:50:32 344

原创 设计模式(单例模式)

设计模式 单例模式

2024-03-07 10:00:19 467

原创 [leetcode 88][合并有序数组]

leetcode88 合并有序数组

2024-03-07 09:28:20 247

原创 限流算法(固定窗口、滑动窗口、漏桶算法、令牌桶算法)

限流算法(固定窗口(计数器算法)、滑动窗口、漏桶算法、令牌桶算法)

2024-03-06 14:58:18 785

原创 centos7安装docker(包含yum配置阿里云镜像源)

centos7安装docker(包含配置yum阿里云镜像源)

2024-01-05 15:10:54 2003 3

原创 设计模式(适配器模式)

设计模式 适配器模式 java

2023-02-15 16:29:36 377

原创 设计模式(迭代器模式)

设计模式(迭代器模式)

2023-02-13 15:53:53 248

原创 [leetcode 128][最长连续序列]

[leetcode 128][最长连续序列]给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9class Solution { public int longestConsecutive(int[] nums

2021-10-26 16:26:52 152

原创 [leetcode 130][被围绕的区域]

[leetcode 105][被围绕的区域]给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充示例 1:输入:board = [[“X”,“X”,“X”,“X”],[“X”,“O”,“O”,“X”],[“X”,“X”,“O”,“X”],[“X”,“O”,“X”,“X”]]输出:[[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[

2021-10-26 16:24:09 2945

原创 [leetcode 105][[从前序与中序遍历序列构造二叉树]

[leetcode 105][[从前序与中序遍历序列构造二叉树]给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]class Solution {

2021-10-25 16:57:45 101

原创 [leetcode 116][填充每个节点的下一个右侧节点指针]

[leetcode 116][填充每个节点的下一个右侧节点指针]给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。输入:root = [1,2,3,4,5,6,7]输出:[1,#,2,3,#,4,5,6,7,#]解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 n

2021-10-25 16:53:55 89

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除