自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Manus AI Agent 技术解读:架构、机制与竞品对比

在分析股票相关性的案例中,Manus 调用了雅虎财经API获取股票历史数据,并进行数据清洗、相关系数计算和可视化,把三支科技股三年来的联动关系用图表和详尽文字说明呈现出来,简直就像一个尽职的金融分析师完成了全部工作。这种模块化、多Agent分工的架构,能够发挥各模型所长,避免单一模型在某些任务上的弱点。Monica.im 的创始团队在 AI 助手领域有深厚积累,此前推出的 Monica AI 浏览器插件整合了 GPT-4、Claude 3 等多个模型,为全球超过千万用户提供服务,并实现盈利。

2025-03-07 10:56:56 3301

原创 手脑革命:中国AI黑马Manus如何用‘数字员工’引爆千亿市场?

Manus是由中国团队研发的全球首款通用型AI Agent(自主智能体),其名称源自拉丁语“Mens et Manus”(意为“手脑并用”),核心能力在于自主思考、任务分解与全流程执行,而非仅停留在建议生成阶段。作为一个能够自主决策并执行任务的 AI 代理,Manus 为我们展示了人工智能技术的无限潜力,未来的人工智能应用将不再是简单的工具,而是更为智能、独立的助理。Manus的爆发标志着AI从“辅助工具”向“生产力中枢”的跨越。未来,人与AI的关系将从“主仆”转向“协作伙伴”,而这场变革,才刚刚开始。

2025-03-06 13:11:14 1655

原创 使用VS Code远程开发OpenAI API

由于OpenAI的API在国内不可用,我们要针对API进行开发困难比较大。如果你有一个能使用OpenAI API的Linux服务器,我们可以方便地使用VS Code的远程开发功能来解决这个问题。

2025-02-24 10:41:01 1219

原创 使用php调用openai api

使用php调用openai api

2025-02-19 12:55:38 689

原创 使用PHP 调用Deepseek API

本文将介绍如何通过 PHP 调用 Deepseek API,并通过简易代码展示如何与 Deepseek 的 AI 模型进行交互,帮助开发者更好地在自己的项目中应用这一强大的工具。我们将提供一个基本的 PHP 示例,帮助你快速了解如何通过 Deepseek API 进行调用。

2025-02-12 16:41:02 1102

原创 DeepSeek服务突发访问故障的快速诊断与DNS解决方案

2025年04月08日,使用中的DeepSeek相关服务突然无法访问。发现返回"127.0.0.1"或超时错误,表明DNS解析环节存在问题。检查代理服务器和防火墙 ERR_CONNECTION_REFUSED。右键当前网络 → 属性 → IPv4 → 使用以下DNS服务器地址。114.114.114.114或者114.114.115.115。chat.deepseek.com 拒绝了我们的连接请求。打开"网络和共享中心" → "更改适配器设置"请试试以下办法: 检查网络连接。

2025-04-08 11:39:54 185

原创 13.支持 RESTful

首先,需要在路由器中定义 RESTful 路由。这些路由通常对应于资源的 CRUD 操作:GET /resources:获取资源列表(Index)GET /resources/{id}:获取单个资源详情(Show)POST /resources:创建新资源(Store)PUT/PATCH /resources/{id}:更新资源(Update)DELETE /resources/{id}:删除资源(Destroy)在index.phpphp// ... 之前的代码 ...

2025-04-08 10:03:37 632

原创 12.实现一个简单的依赖注入容器

通过实现一个简单的依赖注入容器,可以实现以下优势:松散耦合:组件之间不直接依赖具体实现,而是通过接口或容器进行协作。可测试性:更容易为组件编写单元测试,因为依赖项可以被轻松替换或模拟。可维护性:集中管理依赖关系,使得代码更易于维护和扩展。灵活性:更容易更换或升级依赖项,无需大规模修改代码。关键步骤回顾:实现 Container 类:管理服务的注册和解析。注册服务:在容器配置文件中定义所有需要的服务及其依赖关系。

2025-04-07 10:19:40 694

原创 11.使用依赖注入容器实现松耦合

在容器配置文件中,可以定义所有需要的服务及其依赖关系。例如:控制器:通过自动装配,控制器的依赖项(如 Logger、Twig)将自动注入。中间件:定义中间件的依赖项,确保它们也通过容器进行管理。通过集成 依赖注入容器,可以实现以下优势:松散耦合:组件之间不直接依赖具体实现,而是通过接口或依赖注入容器进行协作。可测试性:更容易为组件编写单元测试,因为依赖项可以被轻松替换或模拟。可维护性:集中管理依赖关系,使得代码更易于维护和扩展。灵活性:更容易更换或升级依赖项,无需大规模修改代码。

2025-04-05 16:37:49 859

原创 10.使用路由缓存提升性能

通过集成路由缓存,可以显著提升自定义 PHP 框架的性能和响应速度。以下是关键步骤的回顾:理解路由缓存:明确路由缓存的概念及其带来的性能优势。选择缓存存储方式:根据项目需求选择合适的缓存存储方式,文件缓存通常是最简单的选择。修改 Router 类:实现缓存的加载和保存逻辑。在路由添加和请求分发过程中集成缓存机制。管理路由缓存的更新:通过手动或自动方式确保缓存与路由定义保持同步。遵循最佳实践:确保缓存的安全性、性能优化和错误处理。保持缓存机制的可扩展性和一致性。

2025-04-02 09:35:57 1449

原创 9.常用模板引擎

PHP 生态中有多种模板引擎可供选择,每种引擎都有其独特的优势和适用场景。以下是关键点的回顾:Twig:功能强大,安全性高,适用于各种 PHP 项目,尤其是大型和复杂项目。Blade:与 Laravel 框架紧密集成,提供丰富的功能和高开发效率。Smarty:历史悠久,功能全面,适合需要复杂模板逻辑的项目。Mustache:逻辑无关,语法简洁,适用于简单模板需求和前后端分离项目。Plates:轻量级,使用原生 PHP,适合对性能有高要求的项目。

2025-04-01 09:34:03 1399

原创 8.集成模板引擎

通过以上步骤,已经成功在自定义的 PHP 框架中集成了 Twig 模板引擎,实现了视图与业务逻辑的分离,提升了代码的可维护性和扩展性。以下是关键点的回顾:选择合适的模板引擎:Twig 作为一个现代且强大的模板引擎,适合与自定义框架集成。通过 Composer 安装:使用 Composer 轻松管理模板引擎的依赖。配置模板目录:组织模板文件,确保项目结构清晰。更新 Controller 类:在基础控制器中集成模板渲染功能,简化控制器方法中的视图渲染。

2025-03-31 10:02:03 942

原创 7. 实现命名路由和反向路由

首先,需要在路由定义中引入路由名称的概念。可以通过扩展add方法来接受一个可选的路由名称参数。通过实现 命名路由 和 反向路由,可以显著提升 PHP 框架的灵活性和可维护性。以下是关键点的回顾:命名路由:为每个路由分配一个唯一的名称。通过名称引用路由,避免硬编码 URL。反向路由:根据路由名称和参数生成对应的 URL。简化 URL 生成过程,确保与路由定义一致。Router 类增强:修改add方法以接受路由名称。维护命名路由与路由定义的映射。实现方法,根据名称和参数生成 URL。

2025-03-28 09:43:56 1305

原创 1、SQL注入攻击的防范

虚拟站点使用的数据库用户一定不要使用root等最高权限用户,必须针对每个虚拟站点单独设置一个用户,这个用户只能允许虚拟站点所在的ip登录,只能访问当前虚拟站点所使用的数据库,并且只有有限的少数几个权限。php提供了mysql_real_escape_string方法,用于转义 SQL 语句中使用的字符串中的特殊字符,可以安全用于 mysql_query()。SQL注入攻击,指的是通过构建特殊的输入作为参数,传入后台处理程序(比如PHP代码),通过执行SQL语句,来执行攻击者所要的操作,从而达到攻击的目的。

2025-03-27 13:50:12 1058

原创 6. 理解中间件与认证中间件

确保在路由中正确指定中间件。php// ... 之前的代码 ...// 定义认证路由// 定义受保护的 RESTful 用户路由// 处理请求?通过实现一个简单的并支持 Bearer Token 认证(尤其是基于 JWT 的认证),可以显著提升自定义 PHP 框架的安全性和灵活性。以下是关键步骤的回顾:理解中间件与认证中间件:中间件在请求处理流程中扮演关键角色,认证中间件确保请求的合法性和安全性。

2025-03-26 09:27:27 1306

原创 5. 实现一个中间件

首先,定义一个中间件接口,确保所有中间件类都实现该接口。这有助于保持中间件的一致性和可扩展性。步骤:创建 Middleware 接口在目录下创建文件,并定义接口:php/*** 处理请求* @param array $params 路由参数* @return bool 返回 `true` 继续执行,`false` 中止执行*/?handle方法:接收路由参数,执行中间件逻辑。返回true表示请求可以继续执行,返回false则中止执行。

2025-03-25 10:05:25 1401

原创 26. 模板方法模式

模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个操作中的算法骨架,将一些步骤延迟到子类中。模板方法使得子类可以不改变算法结构的情况下,重新定义算法的某些特定步骤。关键点:算法骨架:在抽象类中定义算法的结构和步骤。步骤重定义:子类可以重写抽象类中定义的某些步骤,实现特定的行为。控制反转:抽象类控制算法的执行顺序,子类仅负责实现具体步骤。

2025-03-24 10:06:56 1178

原创 25. 策略模式

策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,将每一个算法封装起来,并使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。通过引入策略模式,可以在不修改客户端代码的情况下,动态地更改对象的行为。关键点:算法封装:将不同的算法封装到独立的策略类中。互换性:策略类可以相互替换,客户端可以根据需要选择使用哪种策略。独立性:策略类独立于使用它们的客户端,符合开闭原则。

2025-03-21 09:52:15 1358

原创 工厂方法模式、简单工厂模式与抽象工厂模式的对比

通过一系列问题的引导,我们逐步揭示了简单工厂模式、工厂方法模式和抽象工厂模式的核心概念、优缺点以及适用场景。三种工厂模式各有千秋,它们都在不同的场景下发挥着重要作用。通过以上对比,我们可以得出以下结论:简单工厂模式:通过一个工厂类根据不同的参数创建不同的对象。适合产品种类较少的场景,简单易懂,灵活性较差。工厂方法模式:通过工厂接口让子类决定实例化哪种具体产品。适合产品种类较多且每个产品的创建逻辑不同的场景,增加了灵活性和扩展性。抽象工厂模式:适用于需要创建一系列相关产品的场景。

2025-03-20 09:56:46 1004

原创 24. 状态模式

状态模式(State Pattern)是一种行为型设计模式,它允许一个对象在其内部状态改变时改变其行为,使得该对象看起来似乎修改了其类。状态模式通过将状态的行为封装到独立的状态类中,实现了对象行为的动态切换,避免了大量的条件判断语句(如if-else或关键点:状态封装:将不同的状态及其对应的行为封装到独立的状态类中。动态切换:对象可以在运行时根据内部状态切换其行为。单一职责:每个状态类负责其特定状态下的行为,实现了职责的明确划分。避免条件判断:通过多态性替代条件判断,提升代码的可维护性和可扩展性。

2025-03-19 10:24:13 1142

原创 4. 支持多个和可选参数

为了支持多个参数和可选参数,我们需要更新路由定义的语法。例如:{id}和{post_id}是必需参数。和{page?是可选参数。在index.phpphp// ... 之前的代码 ...// 定义带有多个参数和可选参数的路由// 其他路由// 处理请求?通过以上步骤,已经成功地扩展了自定义 PHP 框架的路由系统,使其支持 多个参数 和 可选参数。具体实现包括:路由定义语法:使用{param}和{param?语法定义动态参数和可选参数。

2025-03-18 09:40:51 1299

原创 3. 增加对路由参数的支持

在index.php中,定义带参数的路由。例如,添加一个路由/user/{id},映射到php// ... 之前的代码 ...// 定义带参数的路由// 其他路由// 用户列表路由// 处理请求?/user/{id}表示/user/后面跟着一个动态参数id。这个参数会被提取并传递给的show方法。通过以上步骤,我们已经成功地在自定义的 PHP 框架中增加了路由参数支持。具体实现包括:路由器类的增强:通过正则表达式匹配路由模式,提取参数值,并将其传递给控制器方法。

2025-03-17 10:06:48 1160

原创 2. 使用Composer实现自动加载类

通过以上步骤,已经成功地将 Composer 集成到自定义 PHP 框架中,并在控制器类中使用了 Composer 安装的包(如 Monolog 和 Guzzle)。以下是关键点的回顾:Composer 初始化:使用初始化项目,并通过安装所需的包。自动加载配置:在中配置autoload,并使用 PSR-4 标准组织代码。命名空间使用:通过定义命名空间,使类的组织更为规范,并利用 Composer 的自动加载功能简化类的引入。

2025-03-14 09:33:08 1657

原创 1. 一个简单的PHP框架

一个基本的 PHP 框架通常包含以下几个部分:前端控制器(Front Controller):处理所有的 HTTP 请求,统一入口。路由器(Router):解析请求的 URI,并将其映射到相应的控制器和方法。控制器(Controller):处理具体的业务逻辑。视图(View):负责展示数据(本示例主要关注控制器部分)。通过这种结构,框架能够有效地组织代码,提高可维护性和扩展性。本文介绍了如何构建一个简单的 PHP 框架,实现将 HTTP 请求映射到类的方法中。

2025-03-13 08:45:00 1293

原创 简单工厂模式:思考与解读

假设你正在开发一个系统,需要创建不同类型的车辆(例如:汽车、卡车、摩托车等)。每个车辆类型都需要不同的初始化参数和设置。每次创建对象时,是否都需要重复相同的逻辑?你是否觉得这会让代码变得冗余且难以维护?# 定义一个车辆接口pass# 具体的车辆类print("驾驶汽车")print("驾驶卡车")print("驾驶摩托车")else:简单工厂模式的核心思想是,提供一个工厂类,通过传递不同的参数来创建不同的对象,而不需要直接在客户端代码中实例化这些对象。

2025-03-12 09:00:00 1896

原创 23. 观察者模式

观察者模式(Observer Pattern)是一种行为型设计模式,用于建立对象之间的一种一对多的依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。该模式通过 观察者(Observer) 和 被观察者(Subject) 之间的交互,实现了对象间的松散耦合。关键点:一对多关系:一个被观察者可以有多个观察者。松散耦合:被观察者不需要知道观察者的具体信息,反之亦然。自动通知:被观察者状态变化时,自动通知所有观察者。

2025-03-11 10:43:25 1399

原创 22. 备忘录模式

备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不暴露对象实现细节的情况下捕获和保存对象的内部状态,从而在未来需要时恢复对象到先前的状态。备忘录模式通过引入备忘录对象,实现了对象状态的保存与恢复,常用于实现 撤销(Undo) 功能。关键点:状态保存与恢复:在不破坏封装性的前提下,保存对象的内部状态,并在需要时恢复。封装性:备忘录对象只暴露必要的信息,确保对象内部状态的隐私性。独立性:备忘录模式将状态的保存与恢复操作与对象的核心职责分离。

2025-03-10 10:22:37 1226

原创 中介者模式

中介者模式(Mediator Pattern)是一种行为型设计模式,它通过一个中介对象来封装一系列对象的交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,并且可以独立地改变它们之间的交互。该模式的核心思想是引入一个中介者对象来管理对象之间的通信,避免对象之间的直接依赖。关键点:集中管理:所有对象的交互都通过中介者进行,集中管理对象之间的通信。降低耦合度:对象无需直接引用其他对象,降低了系统的耦合度。增强灵活性:通过修改中介者,可以轻松改变对象之间的交互方式,而无需修改各个对象。

2025-03-05 08:30:00 1175

原创 迭代器模式

迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。迭代器模式通过引入迭代器对象,实现了对聚合对象的遍历,同时保持了聚合对象的封装性和独立性。关键点:顺序访问:提供一种统一的方式顺序访问集合中的元素。无须暴露内部结构:客户端无需了解集合的内部结构即可访问其元素。支持多种遍历方式:可以实现不同的迭代器,支持多种遍历方式(如正向、反向、中断等)。实现一个自定义的集合类,并为其提供迭代器。

2025-03-04 10:04:45 1296

原创 解释器模式

解释器模式(Interpreter Pattern)是一种行为型设计模式,它定义了一个语言的文法,并建立一个解释器来解释该语言中的句子。该模式通过将语法规则封装为类,使得可以解析和执行特定格式的语言或表达式。关键点:语言的文法定义:通过类来表示语言的语法规则。解释执行:通过解释器类解析和执行语言中的句子。可扩展性:通过添加新的表达式类,可以扩展语言的功能。

2025-03-03 10:24:03 1154

原创 抽象工厂模式:思考与解读

你可能已经接触过工厂模式,它的核心思想是封装对象的创建逻辑,让客户端不需要直接与具体类打交道。你认为,为什么这种做法能够减少代码的耦合性?它对我们如何组织代码有何帮助?

2025-02-28 09:26:59 944

原创 工厂方法模式:思考与解读

假设你正在开发一个系统,需要创建不同类型的文档对象(例如:Word 文档、PDF 文档、Excel 文档等)。每个文档类型的创建过程可能不同,你是如何管理这些不同的创建过程的?是否每次都需要通过条件判断来选择使用哪个类?passprint("打开 Word 文档")print("打开 PDF 文档")print("打开 Excel 文档")通过定义一个统一的接口Document,我们能够确保所有具体的文档类都具有相同的open()方法,而不需要关心它们的具体实现。这种做法如何提高了代码的可扩展性?

2025-02-25 10:50:43 1350

原创 单例模式:思考与解读

单例模式为我们提供了一种确保类只有一个实例的方式,并且通过全局访问点来控制对该实例的访问。

2025-02-21 10:16:36 910

原创 命令模式

命令模式(Command Pattern)是一种行为型设计模式,它将一个请求封装为一个对象,从而使您可以用不同的请求对客户进行参数化、对请求排队或记录请求日志,以及支持可撤销的操作。命令模式的核心思想是将操作和操作的执行者解耦,使得操作可以独立于执行者进行管理和调用。关键点:请求封装:将请求(操作)封装为对象。解耦:将请求发送者和接收者解耦。灵活性:支持请求的参数化、队列化、日志记录和撤销操作。

2025-02-20 09:45:21 1237

原创 在 DeepSeek 驱动的编程变革中抓住机遇并脱颖而出

在 DeepSeek 引领的 AI 编程变革中,程序员需要快速适应技术变革,抓住 AI 技术带来的机遇,并克服由此带来的挑战。通过积极学习和使用 AI 工具,转型为系统设计师与创新者,强化跨职能协作和领导能力,保持对 AI 伦理的敏感性,以及积极参与开源与创业,程序员可以在新的编程时代中脱颖而出,并在快速变化的技术环境中保持竞争力。AI 不仅是工具,更是改变程序员职业发展的催化剂,未来的程序员将成为技术创新的领导者和推动者。

2025-02-19 09:14:51 1115

原创 责任链模式

责任链模式(Chain of Responsibility Pattern) 通过将请求沿着一系列处理者传递,直到有一个处理者处理它,从而降低了请求发送者与接收者之间的耦合度,增强了系统的灵活性和可扩展性。该模式适用于需要多个对象能够处理同一个请求的场景,特别是在处理者的选择需要动态确定时。

2025-02-18 09:19:40 1143

原创 结构型模式分析对比

结构型设计模式通过优化类和对象的组合方式,提升系统的灵活性、复用性和可维护性。每种结构型模式都有其特定的应用场景和优势,理解它们的意图、结构及适用场景是有效应用这些模式的关键。

2025-02-17 10:05:38 994

原创 代理模式

代理模式(Proxy Pattern) 通过为其他对象提供一个代理对象,以控制对目标对象的访问,实现了对目标对象的间接访问和管理。代理模式适用于需要控制对象访问、延迟对象创建、记录访问日志等场景,特别是在系统需要对目标对象的访问进行额外控制或优化时。

2025-02-14 09:57:36 1123

原创 享元模式

享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享大量细粒度对象以减少内存占用和提高性能。享元模式通过将对象的部分状态外部化,允许多个对象共享相同的内部状态,从而减少对象的数量。关键点:内部状态与外部状态分离:内部状态是对象可以共享的部分,外部状态是每个对象独有的部分。共享对象:通过共享内部状态,减少内存消耗。享元工厂:管理和缓存享元对象,确保共享的实现。

2025-02-13 08:15:00 964

原创 外观模式

外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。外观模式通过创建一个外观类,封装复杂的子系统,使客户端只需与外观类交互,而无需直接与子系统的各个部分打交道。关键点:简化接口:提供一个简单的接口,隐藏子系统的复杂性。解耦系统:客户端与子系统之间的依赖关系被外观类解耦。提高可维护性:修改子系统的内部实现不会影响客户端,只需修改外观类。

2025-02-12 09:59:42 1159

空空如也

空空如也

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

TA关注的人

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