
Agent设计模式——第 20 章:优先级排序
在复杂、动态的环境中,Agent 经常会遇到大量潜在的行动、相互冲突的目标以及有限的资源。如果没有明确的流程来确定后续行动,Agent 可能会遭遇效率降低、操作延迟或无法实现关键目标的情况。优先级排序模式通过使 Agent 能够根据重要性、...

Agent设计模式——第 1 章:提示词链
提示词链模式概述 提示词链(Prompt Chaining),有时也称为管道模式(Pipeline pattern),是利用大型语言模型(LLM)处理复杂任务时的一种强大范式。提示词链不是期望 LLM 在单一的、整体化的步骤中解决复杂问题,...

Agent设计模式——附录 D - 使用 AgentSpace 构建 Agent
概述 AgentSpace 是一个旨在通过将人工智能融入日常工作流程来推动"Agent 驱动型企业"发展的平台。其核心能力在于为组织的整个数字足迹(涵盖文档、电子邮件和数据库)提供统一搜索功能。该系统借助先进的 AI 模型(如 Google...

Agent设计模式——第 19 章:评估和监控
本章探讨了使智能 Agent 能够系统地评估其性能、监控目标进展以及检测操作异常的方法论。虽然第 11 章概述了目标设定和监控,第 17 章讨论了推理机制,但本章侧重于持续的、通常是外部的、对 Agent 有效性、效率和合规性要求的测量。这...

Agent设计模式——第 10 章:模型上下文协议 (MCP)
要使 LLM 作为 Agent 有效运作,其能力必须超越多模态生成。与外部环境的交互不可或缺,包括访问实时数据、使用外部软件以及执行特定操作任务。模型上下文协议(MCP)通过提供标准化接口满足此需求,使 LLM 能与外部资源交互。该协议是实...

Agent设计模式——第 21 章:探索和发现
本章探讨了使智能 Agent 能够主动寻求新信息、发现新可能性并识别其操作环境中未知的未知因素的模式。探索和发现不同于被动行为或在预定义解决方案空间内的优化。相反,它们侧重于 Agent 主动进入陌生领域、尝试新方法并生成新知识或理解。这种...

Agent设计模式——智能体设计模式
构建智能系统实战指南[^1],作者:Antonio Gulli 目录 - 总计 424 页 = 1+2+1+1+4+9+103+61+34+114+74+5+4 11 致谢,1 页 鸣谢,2 页 [最终版,已完成最后审阅] 前言,1 页 [...

Agent设计模式——第 11 章:目标设定和监控
要使 AI Agent 真正有效且有目的性,它们不仅需要处理信息或使用工具的能力,还需要明确的方向感和判断自身是否真正成功的方法。这就是目标设定和监控模式发挥作用的地方。该模式的核心是为 Agent 提供具体的工作目标,并为其配备跟踪进度和...

Agent设计模式——第 9 章:学习和适应
学习和适应对于增强人工智能 Agent 的能力至关重要。这些过程使 Agent 能够超越预定义参数进行演化,通过经验和环境交互实现自主改进。通过学习和适应,Agent 可以有效应对新情况并优化其性能,而无需持续的人工干预。本章将深入探讨支撑...

Agent设计模式——第 16 章:资源感知优化
资源感知优化使智能 Agent 能够在运行过程中动态监控和管理计算、时间和财务资源。这与简单的规划不同,后者主要关注动作序列的安排。资源感知优化要求 Agent 就动作执行做出决策,以在指定的资源预算内达成目标或优化效率。这涉及在更准确但昂...

Agent设计模式——附录 G - 编码 Agent
Vibe 编码:入门路径 "Vibe 编码"已发展为快速创新与创意探索的高效技术。该实践通过运用 LLM 生成初始草稿、梳理复杂逻辑或构建快速原型,显著降低启动门槛。其核心价值在于破解"空白页"困境,助力开发者从模糊概念快速过渡至具体可执行...

Agent设计模式——第 13 章:人机协同
人机协同(Human-in-the-Loop,HITL)模式在 Agent 的开发和部署中扮演着关键战略角色。它巧妙地将人类认知的独特优势——如判断力、创造力和细致入微的理解——与 AI 的计算能力和效率相结合。这种战略整合不仅是可选方案,...

Agent设计模式——第 17 章:推理技术
本章深入探讨智能 Agent 的高级推理方法,重点关注多步骤逻辑推理和问题解决。这些技术超越了简单的顺序操作,使 Agent 的内部推理过程变得明确。这使 Agent 能够分解问题、考虑中间步骤并得出更可靠和准确的结论。这些高级方法的核心原...
Agent设计模式——附录 F - 深入剖析:Agent 推理引擎的内部运作机制
智能 Agent 的崛起标志着人工智能领域的重大转折。这些系统专为规划、策略制定及复杂任务执行而设计,其认知核心均基于大语言模型。该 LLM 远非单纯的复杂文本生成器;它承担着基础推理引擎的角色,即赋予 Agent 决策能力、规划能力及环境...
Agent设计模式——章节目录
本目录用于存放翻译后的章节文件。 文件命名规范 使用格式:chapter-XX.md,其中 XX 为章节编号(01-25) 例如:chapter-01.md、chapter-02.md 等 翻译流程 从 original/ 目录获取原文 在...

Agent设计模式——
附录 A:高级提示工程技巧 提示工程简介 提示工程是与语言模型交互的主要接口,是指通过精心设计输入来引导模型生成期望输出的过程。这包括构建请求结构、提供相关上下文、指定输出格式以及展示预期的响应模式。设计精良的提示能够最大限度地发挥语言模型...
Agent设计模式——术语表
基本概念 提示词(Prompt):提示词是用户提供给 AI 模型的输入,通常以问题、指令或陈述的形式出现,用于引发响应。提示词的质量和结构极大地影响模型的输出,使提示词工程成为有效使用 AI 的关键技能。 上下文窗口(Context Win...

Agent设计模式——第 7 章:多 Agent 协作
虽然单体 Agent 架构对于定义明确的问题可能是有效的,但在面对复杂的多领域任务时,其能力往往受到限制。多 Agent 协作模式通过将系统构建为由不同专门化 Agent 组成的协作集合来解决这些限制。这种方法基于任务分解原则,其中高级目标...
Agent设计模式——附录 E - 命令行界面中的 AI Agent
引言 开发者的命令行界面,长期以来作为精确命令式指令的堡垒,正经历一场深刻变革。它正从简单的 shell 演变为由新型工具驱动的智能协作工作空间:AI Agent 命令行界面(CLI)。这些 Agent 不仅限于执行命令;它们能理解自然语言...
Agent设计模式——附录 C - Agentic 框架快速概览
LangChain LangChain 是一个用于开发由大语言模型驱动的应用程序的框架。其核心优势在于 LangChain 表达式语言(LCEL),它允许你将组件通过"管道"操作符连接成链。这种设计创建了清晰的线性序列,其中每一步的输出自动...

Agent设计模式——第 3 章:并行化
并行化模式概述 在前面的章节中,我们探讨了用于顺序工作流的提示链和用于动态决策及不同路径间转换的路由。虽然这些模式不可或缺,但许多复杂的 Agent 任务涉及多个可同时执行而非顺序执行的子任务。这正是并行化模式变得至关重要的场景。 并行化涉...
Agent设计模式——术语表
基础概念 提示词(Prompt): 提示词是用户向 AI 模型提供的输入,通常以问题、指令或陈述形式呈现,旨在激发模型生成相应输出。提示词的质量与结构深度影响模型响应效果,使提示工程成为高效运用 AI 的核心技能。 上下文窗口(Contex...
Agent设计模式——**常见问题解答:Agentic 设计模式**
什么是"Agentic 设计模式"? Agentic 设计模式是可复用的高层解决方案,用于应对构建智能自主系统(Agent)时的常见挑战。这些模式为设计 Agent 行为提供结构化框架,其作用类似于传统编程中的软件设计模式。它们助力开发者构...

Agent设计模式——第 14 章:知识检索(RAG)
LLM 在生成类人文本方面展现出了强大的能力。然而,它们的知识库通常局限于训练时使用的数据,限制了它们对实时信息、特定公司数据或高度专业化细节的访问。知识检索(RAG,即检索增强生成)解决了这一局限。RAG 使 LLM 能够访问和整合外部的...

Agent设计模式——第 18 章:Guardrails/安全模式
Guardrails(防护栏),也称为安全模式,是确保智能 Agent 安全、符合道德规范并按预期运行的关键机制,尤其是在这些 Agent 变得更加自主并集成到关键系统中时。它们作为保护层,引导 Agent 的行为和输出,防止有害、有偏见、...

Agent设计模式——第 15 章:Agent 间通信(A2A)
即便拥有先进能力,单个 AI Agent 在处理复杂、多方面问题时仍常面临局限。为克服此限制,Agent 间通信(A2A)使不同 AI Agent(可能基于不同框架构建)能够有效协作。这种协作涉及无缝协调、任务委派和信息交换。 Google...

Agent设计模式——第 8 章:内存管理
有效的内存管理对于智能 Agent 保留信息至关重要。与人类类似,Agent 需要不同类型的内存才能高效运行。本章深入探讨内存管理,特别关注 Agent 的即时(短期)和持久(长期)内存需求。 在 Agent 系统中,内存指代 Agent ...

Agent设计模式——第 12 章:异常处理和恢复
要使 AI Agent 在各种现实世界环境中可靠运行,它们必须能够管理不可预见的情况、错误和故障。正如人类能够适应意外障碍一样,智能 Agent 需要强大的系统来检测问题、启动恢复程序,或至少确保受控失败。这一基本需求构成了异常处理和恢复模...

Agent设计模式——第 4 章:反思
反思模式概述 在前面的章节中,我们探讨了基础的 Agent 模式:顺序执行的链式、动态路径选择的路由以及并发任务执行的并行化。这些模式使 Agent 能够更高效、更灵活地执行复杂任务。然而,即使采用复杂的工作流,Agent 的初始输出或计划...

Agent设计模式——附录 B - AI Agentic 交互:从图形界面到现实世界环境
AI Agent 正日益通过数字界面和物理环境的交互来执行复杂任务。它们在这些多样化环境中感知、处理和行动的能力,正在从根本上重塑自动化、人机交互和智能系统的格局。本附录深入探讨 Agent 如何与计算机及其环境交互,并重点介绍相关技术进展...

Agent设计模式——第 5 章:工具使用(函数调用)
工具使用模式概述 到目前为止,我们讨论的 Agent 模式主要涉及编排语言模型之间的交互和管理 Agent 内部工作流中的信息流(链式、路由、并行化、反思)。然而,要使 Agent 真正有用并与现实世界或外部系统交互,它们需要使用工具的能力...
Agent设计模式——结论
在本书中,我们从 Agentic AI 的基础概念出发,一路探索到复杂自主系统的实际实现。我们从这样一个前提开始:构建智能 Agent 就像在技术画布上创作一幅复杂的艺术作品——这个过程不仅需要一个强大的认知引擎(如大型语言模型),还需要一...

Agent设计模式——第 6 章:规划
智能行为通常不仅仅涉及对即时输入做出反应。它需要远见、将复杂任务分解为更小的可管理步骤,以及制定实现期望结果的策略。这就是规划模式发挥作用的地方。规划的核心是 Agent 或 Agent 系统制定一系列行动以从初始状态向目标状态移动的能力。...

Agent设计模式——第 2 章:路由
路由模式概述 虽然通过提示词链进行顺序处理是执行确定性、线性工作流的基础技术,但其适用性在需要自适应响应的场景中受到限制。现实世界的 Agent 系统必须经常根据偶然因素在多个潜在行动之间进行仲裁,例如环境状态、用户输入或前一操作的结果。这...

从经验主义到贝叶斯理论:如何排查线上问题
作为一名后端研发,排查线上问题是我们日常工作中不可或缺,也最具挑战性的一部分。如果你仔细观察周围同事排查问题的过程,你就会发现一个现象:即便是在同一团队、负责同一模块的两个人,面对同一个线上问题,其定位问题的效率也可...

我用AI为自己造了一把安全的开发者“瑞士军刀””
DevUtils:一个后端码农的AI编程奇遇 作为一名常年与服务器和数据库打交道的后端工程师,前端开发对我来说一直是个既熟悉又陌生的领域。但你有没有想过,在AI的加持下,一个前端小白能做出什么样的东西?最近,我进行了一次有趣的尝试——借...

从LLM和MCP的协同过程看如何做优化
MCP 介绍性的文章相信大家都已经看到了很多了,相信大家或多或少都有所了解了。今天我们换一个视角,从大语言模型(后统称 LLM)和 MCP 协同的整个过程来了解 MCP 的的原理,进一步了解如何更好的去配置MCP,以...

打通Dify与AI工具生态:将Workflow转为MCP工具的实践
背景 我们公司部署了自己的Dify平台,已有大量构建好的Workflow工作流。这些工作流涵盖了知识库检索、文档分析等核心业务场景,具有很高的复用价值。然而,我司的Dify平台本身并未提供直接将Workflow转换为...

一文了解知识库背后的技术RAG
我们最近在一个项目中使用了知识库技术,并通过与他人交流了解到大家对知识库的看法。我们发现大多数人都意识到通用大模型在特定领域知识和实时信息方面存在局限性。一些人知道可以用知识库解决专业领域的知识问题,用联网搜索解决实...

AI应用的五个级别:从入门到专家的进阶之路
在当今科技飞速发展的时代,人工智能(AI)已经成为推动各行业变革的核心力量。它广泛渗透于社会的各个领域,从日常生活中的智能助手到复杂工业生产中的自动化系统,AI的应用无处不在。AI技术不仅显著提高了生产效率,还极大地...

一文入门AI圈最近爆火的MCP协议
前言 今天来聊一聊claude母公司anthropic推出的mcp协议,mcp全称是model context protocol,中文可以翻译成模型上下文协议,官网地址是https://modelcontextpro...

HTTP/3:性能改进(第 2 部分)
欢迎回到关于新 HTTP/3 协议的系列文章。在第 1 部分中,我们探讨了为什么需要 HTTP/3以及底层 QUIC 协议的主要特性。 在第二部分中,我们将重点探讨 QUIC 和 HTTP/3 为网页加载带来的性能改进,同时也会客观审视这些...

deepseek-r1祛魅:从过度热捧到理性认知
最近deepseek-r1异常火爆,各大公众号纷纷推出deepseek相关文章,内容涵盖从原理介绍到部署教程,从模型评测到实践应用,分析文章层出不穷。deepseek甚至破圈进入其他领域,我在短视频中就看到外交部部长...

为什么AI智能体需要工作流
在上一篇文章《大模型原理到提示词优化》中,我介绍了几种优化LLM回答效果的方法(建议没看过的读者去看看)。这些方法运用得当,能显著提升LLM回答的质量,特别是思维链和多轮交互的方式。虽然这些优化方法可以提升单个LLM...

如何用GPT-4o解读视频
OpenAI在去年推出的GPT-4V已经支持了多模态识别,但一直仅限于图片输入,不支持视频。相比之下,Google的Gemini早已支持视频识别。最近,我司业务场景中出现了一个需要识别视频的需求,而我们只采购了GPT...

json命令行处理神器jq介绍
在当今数据驱动的世界中,处理JSON格式的数据已成为许多IT专业人士的日常任务。虽然Python等高级编程语言可以胜任这项工作,但它们往往需要编写复杂的脚本,耗时且容易出错。这就是jq命令行工具的亮点所在。 &ems...

OpenAI的结构化浅析
OpenAI于2024年8月6日在其新模型gpt-4o-2024-08-06上推出了结构化输出功能(Structured Outputs)。截至本文撰写日期(2024年8月25日),gpt-4o仍指向上一版本gpt-...

从大模型的原理到提示词优化
大语言模型(后文简称LLM)已经火热了近两年,相信大家或多或少都学习过一些Prompt技巧。但你有没有思考过:为什么使用这些Prompt能得到更好的输出结果?为什么有时你怎么试都得不到想要的结果?为什么有些任务LLM...

从经济学原理看团队分工合作
最近我接触到一个经济学概念叫"比较优势"。学过经济学的同学应该很熟悉,但为了让不了解经济学的朋友们也能明白,我们先来解释下什么是比较优势,然后再谈谈为什么我认为这个原理应当被用在团队合作的分工当中...
![[翻译]关于人工智能的30个思考-XINDOO](https://xindoo-1254046096.cos.ap-beijing.myqcloud.com/img/uPic/iShot_2024-10-13_10.55.12.jpg)
[翻译]关于人工智能的30个思考
最近看到一篇国外的文章,作者表述了自己关于人工智能的30个观点,部分观点还是很新颖的,特搬运翻译过来。 想了解AI工具的实用性,别只看新闻报道,亲自体验才能得出真知。 即便AI泡沫破裂,幸存者仍将塑造新的技术和社会文化格局。 AI不会直接夺...

从马斯洛需求层次理论谈职场激励
马斯洛需求层次理论是一个广为人知的心理学概念,它是由美国心理学家亚伯拉罕·马斯洛(Abraham Maslow)于1943年提出,常被描述为一个5层的金字塔模型,反映了人类不同需求层级和依赖关系。马斯洛认为人类只有在...

知识与智慧
前两天在medium上看到一篇文章,探讨知识(knowledge)和智慧(wisdom)之间的区别,很受启发,结合自己的经历和理解,形成此文: 何为知识 知识通常指的是信息的积累和对特定领域的...

如何使用大语言模型绘制专业图表
过去的一年里,我相信大部分人都已经看到了大语言模型(后文简称LLM)所具备的自然语言理解和文本生成的能力,还有很多人将其应用于日常工作中,比如文案写作、资料查询、代码生成……今天我要向大家介绍LLM的一种新使用方式—...

两个开源项目打造自己的大模型聚合平台
我在去年6月份就付费了Poe.com的年费会员,成为了各大模型的首批使用者,当时花了199\$,合算RMB近1.5k。你问我这钱花的值不值?我只能说开始的时候我觉得挺值的,毕竟gpt4那么贵而且api还需要排队才能使用,之后其他公司出的...

我让gpt4o给我推荐了一千多次书 得到了这些数据
事情是这样的,我们公司不是有个读书小组嘛,但是今年大家都忙于工作,忽视了读书这件事,所以我就想着搞个群机器人,让它明天定时向群里推荐一本书,用来唤起大家对读书的兴趣。但在调试的过程中就发现gpt4o老喜欢推荐同样的几本书,这可就勾起我的...

用Langchain创建一个可以总结网页内容的Agent
去年的时候我写过一篇关于OpenAi Function Call的实践文章,就是用Function Call的功能实现抓取并总结网页内容的功能,具体可以参考ChatGPT函数调用初体验:让ChatGPT具备抓取网页文...

推荐一个好用的命令行工具ShellGPT
这两天突然想到,现有的很多工具都在被大模型重构,比如诞生了像perplexity.ai 这种新交互形式的搜索引擎,就连wps也推出了AI服务,甚至都可以直接生成ppt,我就想是不是shell也有类似的工具,可以帮忙写...

关于ffmpeg height not divisible by 2的错误
在我们线上视频生产过程中,我们用ffmpeg对视频做了resize,讲原有的分辨率resize到1280p,使用了参数 -vf "scale=1280:-1",作用是将原始视频宽度缩放成1280,...

使用Certbot解决https证书自动更新的问题
除了各个第三方博客平台之外,我还一直保有一个自建的博客网站https://zxs.io/,还有几个其他的域名用做小工具之类的,之前一直使用阿里云免费https证书,一次申请可以用一年,但现在阿里云免费证书缩短到3个月...
Spring Cache简明教程
@[TOC](Spring Cache简明教程) 引言 在我上一篇文章如何正确使用缓存来提升系统性能中,我从偏理论的视角介绍了Cache在性能优化中的必要性,在这篇文章中我们介绍Spring全家桶中和cache相关S...

软件开发中的抓大放小vs极致细节思维
最近在开发过程中,遇到了好多次 “这个需求点这次要不要做?” 的问题, 主要有两方阵营,比如以研发主导的 “这次先不做、等必要的时候再做” ,另外一方是以PM主导的 “这个不做需求不完整,可能影响用户体验” 。争议主...

OpenAI Assistants-API简明教程
OpenAI在11月6号的开发者大会上,除了公布了gpt4-v、gpt-4-turbo等新模型外,还有一个assistants-api,基于assistants-api开发者可以构建自己的AI助手,目前assista...

OpenAI的多函数调用(Multiple Function Calling)简介
我在六月份写了一篇关于GPT 函数调用(Function calling) 的博客https://blog.csdn.net/xindoo/article/details/131262670,其中介绍了函数调用的方法...

如何使用ffmpeg制作透明背景的视频
最近我们尝试在网页上叠加数字人讲解的功能,发现如果直接在网页上放一个矩形的数字人视频,效果会很差,首先是会遮挡很多画面的内容,其次就是不管使用任何任务背景,画面都和后面的网页不是很协调,如图所示:\ 如果能去掉视频的背景,只展示人物...
spring-kafka中ContainerProperties.AckMode详解
近期,我们线上遇到了一个性能问题,几乎快引起线上故障,后来仅仅是修改了一行代码,性能就提升了几十倍。一行代码几十倍,数据听起来很夸张,不过这是真实的数据,线上错误的配置的确有可能导致性能有数量级上的差异,等我说完我们...

如何在地图上寻找最密集点的位置?
最近我在工作中遇到了一个小的需求点,大概是需要在地图上展示出一堆点中的点密度最密集的位置。最开始没想到好的方法,就使用了一个非常简单的策略——所有点的坐标求平均值,这个方法大部分的时候好用,因为大部分城市所有点位基本上都是围绕某个中心点...

IO密集型服务提升性能的三种方法
大部分的业务系统其实都是IO密集型的系统,比如像我们面向B端提供摄像头服务,很多的接口其实就是将各种各样的数据汇总起来,展示给用户,我们的数据来源包括Redis、Mysql、Hbase、以及依赖的一些服务方的数据,并...
职场中的基本归因错误和自利归因
今天我想和大家分享关于两个心理学概念:基本归因错误和自利归因。这两个概念描述了我们在评价他人和自身时,可能出现的两种思维偏差。不论我们处于什么场合,或许在工作中做自评和他评,或者是在日常生活中对他人行为的解读,所有人...
使用javax.validation.constraints校验参数合法性
在Java开发过程中,数据校验是一项至关重要的任务。为了确保数据的完整性和正确性,我们通常需要对输入的数据进行一系列的校验。javax.validation.constraints提供了一套基于注解的校验框架,能够让我们简洁、高效地完成数据...
Java Optional:让你的代码更优雅
在Java编程中,处理null值一直是一个棘手的问题。错误的null处理可能会导致许多难以调试的运行时异常。自Java 8引入Optional类以来,它为我们提供了一种更优雅、更安全的方式来处理可能为空的值。在Jav...
ChatGPT函数调用初体验:让ChatGPT具备抓取网页文本的能力
OpenAI在6月13号升级了ChatGPT,推出了类似其网页版插件的功能——函数调用(Function calling),13号当天我在很多微信公众号就看到了这个消息,甚至有人将函数调用称为杀手级特性,正好周末有空...

如何使用ChatGPT提升自己的“码”力?
ChatGPT是什么,我就不用再多介绍了吧!相信大家已经看到了它在文本领域所展现出来的实力,虽然目前的效果依旧无法比拟专业文字工作者,但其文字能力也超过了绝大多数普通人,主要还相当的便宜,让不少文字相关工作者瑟瑟发抖。不过今天我们不讨论...

使用ffmpeg拼接两张图片
最近在工作中遇到了一个需求,就是需要将两张图片拼接在一起,作为一个封面图。如果只是临时拼接一张,我们可以只用photoshop之类的图片编辑工具,将两张图片拼接在一起。而我们的需要是需要实现自动化,由于之前使用过ff...
ThreadPoolExecutor——高效处理并发任务的必备良器
@TOC ThreadPoolExecutor是Java concurrent中用于管理线程池的类,它是Executor框架的一个实现。线程池是一种提高应用程序性能和可靠性的技术,它将多个任务分配给多个线程执行,从而...

从CPU的视角看 多线程代码为什么那么难写!
当我们提到多线程、并发的时候,我们就会回想起各种诡异的bug,比如各种线程安全问题甚至是应用崩溃,而且这些诡异的bug还很难复现。我们不禁发出了灵魂拷问 “为什么代码测试环境运行好好的,一上线就不行了?”。 为了解决...
使用ffmpeg缩小视频体积的几种方式
随着视频制作的普及,视频文件的体积也越来越大,给存储和传输带来了很大的困扰。为了解决这个问题,我们可以使用FFmpeg这个强大的工具来缩小视频的体积。本文将介绍三种常用的方法:调整视频的分辨率、调整视频的码率和使用更...
Linux parallel 命令使用手册
引言 GNU Parallel是一个开源的命令行工具,可以将多个命令行作业并行执行。它可以用于在多个CPU或计算机上同时运行命令行作业,从而提高作业处理速度。Parallel还可以帮助您更好地利用系统资源,节省时间和...

为什么说过早优化是万恶之源?
Donald Knuth(高德纳)是一位计算机科学界的著名学者和计算机程序设计的先驱之一。他被誉为计算机科学的“圣经”《计算机程序设计艺术》的作者,提出了著名的“大O符号”来描述算法的时间复杂度和空间复杂度,开发了T...
Linux xargs命令介绍
Linux 中的 xargs 命令是一个非常有用的命令行工具,可以将一些参数集合传递给其他命令作为参数,并利用指定的命令进行处理。它可以帮助我们批量处理文件,执行一些需要多个参数的命令,并且支持并发操作。 &emsp...
深入理解Spring的事件通知机制
Spring作为一个优秀的企业级应用开发框架,不仅提供了众多的功能模块和工具,还提供了一种灵活高效的事件通知机制,用于处理组件之间的松耦合通讯。本文将详细介绍Spring的事件通知机制的原理、使用方法以及示例,希望...
Java高并发之CyclicBarrier简介
Java 中的 CyclicBarrier 是一种同步工具,它可以让多个线程在一个屏障处等待,直到所有线程都到达该屏障处后,才能继续执行。CyclicBarrier 可以用于协调多个线程的执行,以便它们可以在某个点上...

聊一聊过度设计!
新手程序员在做设计时,因为缺乏经验,很容易写出欠设计的代码,但有一些经验的程序员,尤其是在刚学习过设计模式之后,很容易写出过度设计的代码,而这种代码比新手程序员的代码更可怕,过度设计的代码不仅写出来时的成本很高,后续...

详解Redisson分布式限流的实现原理
我们目前在工作中遇到一个性能问题,我们有个定时任务需要处理大量的数据,为了提升吞吐量,所以部署了很多台机器,但这个任务在运行前需要从别的服务那拉取大量的数据,随着数据量的增大,如果同时多台机器并发拉取数据,会对下游服...

Java中使用HashMap时指定初始化容量性能一定会更好吗?
一些Java编程老手在做CodeReview时,都会告诉其他人,使用HashMap时建议指定容量大小,原因是指定容量后,代码性能会更好一些。后来随着阿里Java开发手册在业内广为传播,这一点早已深入人心,我自己也早已...

如何用ffmpeg截取视频片段&截取时间不准确的坑
之前在工作中,有遇到需要程序化截取视频片段的场景,这里使用ffmpeg命令行就可以很容易实现,这里也记录下我们使用过程中遇到的坑,希望对大家也有所帮助。 举个例子,当我们要截取视频文件中i...

XINDOO的2022年年终总结
已经好几个月没有认认真真写一篇博客了,借着年底静下心来认认真真写一篇年终总结,这也是我人生中第10篇的年终总结了。 先看下去年立的flag,不用想去年立的flag一个都没完成。首先1 算是勉强及格;2 redis的博...
使用ffmpeg将视频转成HLS(m3u8)格式
HLS (HTTP Live Streaming)是苹果推出的视频流协议,HLS格式的视频包含一个m3u8文本文件,以及众多的.ts的视频片段,而m3u8文本文件的作用就是将这些ts片段索引起来。 因为HLS协议是将...

谷歌Guava LoadingCache介绍
在工作中,加Cache是非常常见的一种性能优化手段,操作系统底层、计算机硬件层为了性能优化加了各种各样的Cache,当然大多数都是对应用层透明的。但如果你想在应用层加Cache的话,可能就需要你自己实现了。 &ems...

一万小时真的能成为专家吗?
今天不聊具体的技术问题,聊一聊个人成长的问题,大家可能对一万小时定律耳熟能详了, 作家格拉德威尔在《异类》一书中说道:“人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。一万小时的锤炼是任何人...

聊聊Redis的数据热点问题
前两天,我们使用的某云厂商服务挂了,而且一挂就是挂大半天,我们的服务强依赖于他们,所以我们也跟着一起挂。然而我们却无能为力,只能等他们恢复。事故原因中听他们提到Redis有个热key,正好我在上家公司负责过部门Red...

用Netty实现WebSocket网络聊天室
最近学习Netty,学习到WebSocket一章节,将Netty中WebSocket的样例代码做了一些简单的改造,实现了一个简易的WebSocket网络聊天室,源码并非完全自己实现,只是将一些别人的代码做了下整合改造...

Notion 程序猿必备笔记软件
我发现工作时间比较久的人,都会逐渐养成记笔记的习惯,我也是,我之前已经使用国内某云笔记8年之久,而且是多年的会员。但我今天要给大家推荐另一款笔记软件——Notion,国内可能Notion的使用还比较少,但它却在国外非...

提效小技巧——记录那些不常用的代码片段
不知道大家有没有这样的经历? 某种代码操作,之前很少写,突然要用了但想不起来怎么写了;某个工具库很久没用了,现在想用了连库名都忘记了;某个命令行,曾经用过,现在已经忘记它有哪些参数了…… 这样的经历我反正是遇到好多次...

在netty中使用protobuf并实现数据加密传输
最近学习netty,为了实践一些知识点,写了一个小demo,完成了client和server端之间的加密数据传输,并使用了protobuf对数据进行封装,代码虽然简单,但对初学者学习netty应该会有些许帮助,特此记...

如何写出高性能代码(四)优化数据访问
同一份逻辑,不同人的实现的代码性能会出现数量级的差异; 同一份代码,你可能微调几个字符或者某行代码的顺序,就会有数倍的性能提升;同一份代码,也可能在不同处理器上运行也会有几倍的性能差异;十倍程序员不是只存在于传说中,...

关于代码评审(CodeReview)那些不得不说的事儿
在一个成熟的团队中,CodeReview是整个研发流程中不可或缺的一步,而那些即将走向成熟的团队可能对CodeReview有很多的误解和问题,也不清楚CodeReview该如何去做,本文笔者将结合自己的经验和知识,谈...

如何写出高性能代码(三)优化内存回收(GC)
导语 同一份逻辑,不同人的实现的代码性能会出现数量级的差异; 同一份代码,你可能微调几个字符或者某行代码的顺序,就会有数倍的性能提升;同一份代码,也可能在不同处理器上运行也会有几倍的性能差异;十倍程序员 不是只存在于...

如何写出高性能代码(二)巧用数据特性
导语 同一份逻辑,不同人的实现的代码性能会出现数量级的差异; 同一份代码,你可能微调几个字符或者某行代码的顺序,就会有数倍的性能提升;同一份代码,也可能在不同处理器上运行也会有几倍的性能差异;十倍程序员 不是只存在于传说中,可能在我们的...

如何写出高性能代码(一)善用算法和数据结构
同一份逻辑,不同人的实现的代码性能会出现数量级的差异; 同一份代码,你可能微调几个字符或者某行代码的顺序,就会有数倍的性能提升;同一份代码,也可能在不同处理器上运行也会有几倍的性能差异;十倍程序员不是只存在于传说中,可能在我们的周围也比...

使用python实现一个日期和时间戳互转的Alfred workflow
前两天换了新款的macbook,也不知道是不是因为m1芯片的原因,系统没有自带php,导致我之前使用的时间戳转换workflow失效了。作为一个后端工程师,时间戳互转的功能还是非常常用了,于是还折腾修复了下,手动安装php后可能是因为php...