myepicure888
码龄18年
关注
提问 私信
  • 博客:59,289
    社区:347
    59,636
    总访问量
  • 73
    原创
  • 27,376
    排名
  • 203
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2006-08-31
博客简介:

myepicure的专栏

查看详细资料
  • 原力等级
    当前等级
    4
    当前总分
    643
    当月
    29
个人成就
  • 获得271次点赞
  • 内容获得9次评论
  • 获得320次收藏
  • 代码片获得2,639次分享
创作历程
  • 2篇
    2025年
  • 2篇
    2024年
  • 56篇
    2023年
  • 2篇
    2022年
  • 4篇
    2021年
  • 3篇
    2017年
  • 1篇
    2015年
  • 4篇
    2014年
  • 2篇
    2013年
  • 3篇
    2012年
成就勋章
TA的专栏
  • LLM
    3篇
  • STL
    3篇
  • 设计模式
    24篇
  • C++
    14篇
  • 算法
    1篇
  • Java
    11篇
  • VisualStudio
    1篇
  • 微服务
    1篇
  • ChromeDriver
    3篇
  • Database
    1篇
  • Spark
    1篇
  • PHP
    1篇
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Windows下调试Dify相关组件(2)--后端Api

1.1 将middleware.env.example复制,并改名为middleware.env。1.2 查看docker-compose.middleware.yaml,有5个服务。一开始用的Python3.11+PyCharm社区2023,调试的时候出现下面警告。终端运行命令 poetry env info 可以查看python环境情况。已安装python 3.12.2,系统识别python命令。1.1 将.env.example复制,并改名为.env。sandbox:沙盒,组件运行环境。
原创
发布博客 2025.01.11 ·
995 阅读 ·
21 点赞 ·
0 评论 ·
16 收藏

Windows下调试Dify相关组件(1)--前端Web

官方介绍:Dify是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和LLMOps的理念,使开发者可以快速搭建生产级的生成式 AI 应用。这是个组件式框架,即使是非技术人员,只要会提示词编写,就可以参与到 AI 应用的开发。欢迎使用 Dify | Dify。
原创
发布博客 2025.01.09 ·
509 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

AnythingLLM 的 Docker 使用

AnythingLLM是使用大语言模型LLM的一站式简便框架。
原创
发布博客 2024.06.12 ·
7579 阅读 ·
12 点赞 ·
1 评论 ·
37 收藏

C++ STL(2)--算法(2)

保证对指定区域内数据完成分组的同时,不改变各组内元素的相对位置。用法和partition一样。根据用户自定义的筛选规则,重新排列指定区域内存储的数据,使其分为 2 组,第一组为符合。stable_sort函数是基于归并排序实现的,属于稳定排序。如果容器中存储的是自定义的对象,则该类必须提供移动构造函数和移动赋值运算符。筛选条件的数据,另一组为不符合筛选条件的数据。返回第二组的第一个元素。同时使所有比此元素小的元素在左侧,比它大的元素在右侧。sort函数是基于快速排序实现的,属于不稳定排序。
原创
发布博客 2024.01.06 ·
538 阅读 ·
7 点赞 ·
0 评论 ·
5 收藏

设计模式(4)--对象行为(11)--访问者

抽象访问者(Visitor)、具体访问者(Concrete Visitor)、抽象元素(Element)、6.4 增加新的ElementC,所有Visitor类和ObjectStructure都要修改(4.1)6.2 增加新的ConcreteVisitor3就可以定义一个新的操作(3.1)使你可以在不改变各元素的类的前提下定义于作用于这些元素的新操作。6.3 抽象Visitor里的接口集中了相关的操作(3.2)表示一个作用于某对象结构中的各元素的操作。3.2 集中相关的操作,而分离无关的操作。
原创
发布博客 2023.12.31 ·
673 阅读 ·
8 点赞 ·
1 评论 ·
5 收藏

设计模式(4)--类行为(10)--模板方法

6.2 ConcreteClass可以改变中间的两个步骤Operation1、Operation2。工厂方法是延迟到子类创建对象,模板方法是延迟到子类改变部分算法(行为)。6.1 AbstractClass::TemplateMethod定义了操作框架(步骤)。模板方法使子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。提取公共行为,父类调用子类操作。5.2 策略模式是改变整个算法,而模板方法是改变算法的一部分。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
原创
发布博客 2023.12.31 ·
646 阅读 ·
9 点赞 ·
0 评论 ·
5 收藏

设计模式(4)--对象行为(9)--策略

抽象策略(Strategy)、具体策略(Concrete Strategy)、上下文环境(Context)定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。6.4 使用模板类时,具体策略可以不继承自抽象Strategy。3.2 一个替代继承的方法,算法独立于Context。6.3 相同的接口,但可得到不同的结果(3.4)本模式使得算法可独立于使用它的客户而变化。5.1 策略对象经常的轻量级的享元对象。3.4 提供了相同行为的不同实现。4.1 客户必须了解不同的策略。4.2 增加了对象的数目。
原创
发布博客 2023.12.30 ·
758 阅读 ·
9 点赞 ·
0 评论 ·
5 收藏

设计模式(4)--对象行为(8)--状态

上下文环境(Context)、抽象状态(State)、具体状态(Concrete State)3.1 将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。6.1 不同的ConcreteState,对应不同的处理方法(3.1)6.2 状态对象比多个一般变量更明确,更容易理解和管理(3.2)6.4 一个ConcreteState需要知道下一个状态是谁。允许一个对象在其内部状态改变时改变它的行为。6.3 代码里的状态对象是单例共享的(3.3)3.2 使得状态转换显式化。5.2 状态对象通常是单件。
原创
发布博客 2023.12.29 ·
618 阅读 ·
7 点赞 ·
0 评论 ·
7 收藏

设计模式(4)--对象行为(7)--观察者

抽象目标(Subject)、具体目标(Concrete Subject)、抽象观察者(Observer)、6.2 Subject::Notify里的循环就是广播,观察者自己决定是否处理某一通知(3.2)。5.1 ChangeManager可使用单例模式来保证它是唯一的并且是可全局访问的。当一个对象的状态改变时,所有依赖于它的对象都得到通知并被自动更新。当目标和观察者间的依赖关系特别复杂时,需要一个维护这些关系的对象,3.1 目标和观察者之间的耦合是抽象的。定义对象间的一种一对多的依赖关系,
原创
发布博客 2023.12.28 ·
612 阅读 ·
9 点赞 ·
0 评论 ·
6 收藏

设计模式(4)--对象行为(6)--备忘录

6.1 Originator通过Mememto来保存真实的内部状态,不保留历史状态(3.2)。6.2 Caretaker持有有历史状态的Mememto指针,但不关注其内部状态(3.1)。当生成备忘录必须拷贝并存储大量信息时,或非常频繁地创建备忘录和恢复原发器状态。在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。4.2 在一些语言中可能难于保证只有原发器可访问备忘录的状态。4.3 维护备忘录的潜在代价。5.1 命令模式可使用备忘录来为可撤销的操作维护状态。屏蔽了原发器的内部信息。
原创
发布博客 2023.12.27 ·
484 阅读 ·
7 点赞 ·
0 评论 ·
8 收藏

设计模式(4)--对象行为(5)--中介者

抽象中介者(Mediator)、具体中介者(Concrete Mediator)、抽象同事(Colleague)、5.1 Mediator的协议是多向的,提供了Colleague对象间的协作行为;而Façade的协议是单向的,只能Façade对子系统提出请求。6.2 将多对多的关系变成了一对多(一个中介对多个同事)的关系(3.3)。4.1 使控制集中化,可能使中介者自身称为一个难于维护的庞然大物。中介者使各对象不需要显式地相互引用,从而使其耦合松散,用一个中介对象来封装一系列的对象交互。
原创
发布博客 2023.12.26 ·
598 阅读 ·
8 点赞 ·
1 评论 ·
10 收藏

设计模式(4)--对象行为(4)--迭代器

抽象集合(Aggregate)、具体集合(Concrete Aggregate)、抽象迭代器(Iterator)、具体迭代器(Concrete Iterator)提供一种方法顺序访问一个聚合对象中的各个元素,而又不需暴露该对象的内部表示。6.2 使用方法一,可以得到多个迭代器,但用户需要负责删除迭代器指针(3.3);5.3 迭代器内部存储一个memento,用来捕获一个迭代的状态。6.1 可以很容易实现Iterator的子类以支持不同的遍历方式(3.1)3.1 支持以不同的方式遍历一个聚合。
原创
发布博客 2023.12.25 ·
502 阅读 ·
7 点赞 ·
0 评论 ·
11 收藏

设计模式(4)--类行为(3)--解释器

抽象表达式(AbstractExpression)、终结表达式(TerminalExpression)、非终结表达式(NonterminalExpression)、上下文(Context)给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语。6.1 可以很容易地改变解释器或增加新的终端解释器来实现新文法(3.1、3.2)。5.4 访问者可用来在一个类中维护抽象语法树中的各节点的行为。6.2 非终端解释器是组合模式,很容易实现新的“计算”(3.3)。3.2 易于实现文法。
原创
发布博客 2023.12.24 ·
429 阅读 ·
7 点赞 ·
0 评论 ·
6 收藏

设计模式(4)--对象行为(2)--命令

接收者(Receiver)、抽象命令(Command)、具体命令(Concrete Command)、请求者(Invoker)将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;6.2 增加新命令ConcreteCommand3,不需要修改其它类(3.4)。5.2 Memento模式可用来保持某个状态,命令用这一状态来撤消。6.1 请求者和接收者不直接打交道,而是通过命令对象(3.1)。3.1 将调用方(请求者)和操作方(接收者)解耦。3.4 容易增加新的命令,无需改变已有的类。
原创
发布博客 2023.12.23 ·
502 阅读 ·
8 点赞 ·
0 评论 ·
10 收藏

设计模式(4)--对象行为(1)--职责链

抽象处理者(Handler)、具体处理者(Concrete Handler)使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。3.1 降低耦合度。简化了对象的相互连接,仅需保持一个指向后继者的引用。6.1 每个具体处理者只需关注自己能处理的请求,其它请求丢给后继者(3.1)6.2 pHandler2只能处理一个请求,因为它在职责链的末端(4.1)4.1 不保证请求一定被处理(没有相应的处理者或使用不当)
原创
发布博客 2023.12.22 ·
410 阅读 ·
8 点赞 ·
0 评论 ·
7 收藏

设计模式(3)--对象结构(7)--代理

6.1 Proxy与RealSubject实现相同的接口,对客户隐藏了RealSubject,且可以访问权限控制。3.4 可以对用户隐藏copy-on-write的优化方式(大幅度地降低拷贝庞大实体时的开销)6.2 Proxy可以直接转发请求,也可以加一些内务处理或优化操作(3.3,3.4)。5.1 代理提供与实体相同的接口或子集接口,而适配器提供了一个不同的接口。5.2 代理控制对象的访问,而装饰器为对象添加一个或多个功能。为其它对象提供一种代理以控制对这个对象的访问。3.2 虚拟代理可以进行最优化。
原创
发布博客 2023.12.21 ·
460 阅读 ·
10 点赞 ·
0 评论 ·
10 收藏

设计模式(3)--对象结构(6)--享元

抽象享元(Flyweight)、具体享元(Concrete Flyweight)、具体不共享元(UnShared Concrete Flyweight)、享元工厂(Flyweight Factory)5.1 享元模式通常和组合模式结合,用共享叶节点的有向无环图实现一个逻辑上的层次结构。6.1 第二次使用SharedFlyweight时从map里取出,而不需要重新创建(3.1)5.2 通常,最好用享元实现State和Strategy对象。3.1 节省空间,共享越多,节省越大。4.1 增加了运行时开销。
原创
发布博客 2023.12.20 ·
433 阅读 ·
6 点赞 ·
0 评论 ·
8 收藏

设计模式(3)--对象结构(5)--外观

Façade的目的是对子系统对象的接口进行抽象,使更容易使用;5.2 Mediator的目的是对同事之间的任意通讯进行抽象,同事对象通过中介者与其他对象通信。为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得。3.1 对客户屏蔽了子系统组件,减少了客户处理的对象数目。子系统(Subsystem)、外观(Facade)3.2 实现了子系统与客户之间的松耦合关系。6.2 客户仍然可以直接使用子系统类(3.3)3.3 如果需要,仍然可以使用子系统类。这一子系统更加容易使用。
原创
发布博客 2023.12.19 ·
446 阅读 ·
7 点赞 ·
0 评论 ·
7 收藏

C++ STL(2)--算法(1)

可以传入普通函数或函数对象,作为自定义查找规则。//以函数对象的形式定义一个匹配规则public:if (it!cout << "最后一个被{2,4,6}整除的起始位置为:" << it - v1.begin() << ",*it = " << *it;return 0;
原创
发布博客 2023.12.18 ·
553 阅读 ·
12 点赞 ·
0 评论 ·
6 收藏

设计模式(3)--对象结构(4)--装饰

一个被装饰了的组件与这个组件是有差别的,使用装饰时不能依赖对象标识。5.2 可以将装饰视为一个退化的,仅有一个组件的组合,但它的目的不在于对象聚集。3.2 避免在层次结构高层的类有太多的特征。5.1 装饰仅改变对象的职责而不改变接口,而适配器给对象一个全新的接口。5.3 装饰可以改变对象的外表,而策略模式可以改变对象的内核。6.2 不同的装饰器可以添加不同的功能,也可以叠加给被装饰者(3.2)6.1 装饰不是单纯的继承,它还持有被装饰者的指针,更灵活(3.1)动态地给一个对象添加一些额外的功能。
原创
发布博客 2023.12.18 ·
531 阅读 ·
8 点赞 ·
0 评论 ·
12 收藏
加载更多