AND
享元模式 Flyweight
一、定义 提供了减少对象数量从而改善应用所需对象创建的方式 运用共享技术有效地支持大量细粒度的对象 二、使用场景 常用于系统底层的开发,以便继绝系统的性能问题 系统有大量相似的对象、需要缓冲池的场景 三、优缺点 1、优点 减少对象的创建,从而降低内存中对象的数量,降低系统的内存,提高效率 减少内存之 ......
适配器 Adapter
一、定义 讲一个类的接口转换成客户期望的另一个接口 使原本接口不兼容的类可以一起工作 二、适用场景 已经存在的类,它的方法和需求不匹配时 方法结果相同或相似 不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品,不同厂家造成功能类似而接口不相同情况下的解决方案 三、优缺点 1、优点 能提高类 ......
装饰者模式 Decorator
一、定义 在不改变原有对象的基础上,将功能附加到对象上 提供了比继承更有弹性的替代方案(扩展原有对象) 类似于游戏中的Buff,当一个英雄获得了红/蓝Buff时,原英雄能力不变,又额外增加了Buff相应属性 二、适用场景 扩展一个类的功能或给一个类添加附加的职责 动态的给一个对象添加功能,这些功能可 ......
外观模式 Facade
又称:门面模式 一、定义 提供了一个统一的接口(高层接口),用来访问子系统中的一群接口 二、适用场景 子系统越来越复杂,增加外观模式提供简单调用接口 构建多层系统结构,利用外观对象作为每层的入口,简化层间调用 三、优缺点 1、优点 简化了调用过程,无需了解或深入子系统,防止带来风险 减少系统依赖、松 ......
原型模式 Prototype
一、定义 指原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象 二、特点 不需要知道任何创建细节,不调用构造函数 实现Clonable接口 三、适用场景 累出实话消耗资源较多 new产生一个对象需要非常繁琐的过程(如:数据准备、访问权限等) 构造函数比较复杂 循环体中产生大量对象时 四、优 ......
单例模式 Singleton
一、定义 保证一个类仅有一个实例,并提供一个全局访问点 二、使用场景 希望确保任何情况下只有一个实例 三、优缺点 1、优点 在内存里只有一个实例,减少内存开销 可以避免资源的多重占用 设置全局的访问点,严格控制访问 2、缺点 没有接口,扩展困难 四、代码实现 1、懒汉式 在被客户端首次调用的时候才会 ......
抽象工厂模式 Abstract Factory
一、定义 提供一个创建一系列相关或相互依赖对象的接口 抽象工厂模式侧重的是同一产品族,而抽象工厂侧重的是同一产品等级 二、适用场景 客户端(应用层)不依赖于产品类实例如何被创建、实现等细节 强调一些列相关的产品对象(属于同一产品族)一起使用,创建对象需要大量复杂代码 提供一个产品类的库,所有的产品以 ......
工厂模式 Factory Method
一、简单工厂 定义一个工厂类,根据传入的参数的值的不同返回不同是实例 1、特点 被创建的实例具有共同的父类或接口 2、适用场景 需要创建的对象较少 客户端(应用层)只知道传入工厂的参数,对如何创建对象(逻辑)不关心 3、优缺点 优点:可以对创建的对象进行“加工”,对客户端隐藏相关细节缺点: 因创建逻 ......
递归与分治
一、初步递归 1、递归特点 函数自己调用自己 存在直接递归和间接递归 一定有退出条件 2、递归三要素 退出条件 递归函数的定义 最后的解 3、递归优化 记录重复的值(存在重复的值才记录) ......
TOgatherDO--一起打卡
与相同目标周期的小伙伴自动组队 众筹打卡奖金池 全部打卡不会造成损失 全部打卡瓜分奖金池剩余奖金 微信公众号提醒 添加打卡照片记录 打卡周期完成,根据打卡照片生成vlog ......
WenDao问道--AI人工助理
基于OpenAI提供的embedding能力,提供定制化的人工助理服务 考虑如何智能提取上下文,获取更精准的语义 考虑记录用户对话信息 兼容第三方接口(如查询天气信息) 接入语音功能 本地部署LLM大模型langchain-ChatGLM ......
DamnBlog--弹幕博客
评论应紧跟文章对应内容才能有针对性的引起讨论 用户应该通过写博客获得收益 博客的核心是文字,但是输出的方式应该是短视频。提供文字视频相互转换的服务 文字生成PPT-->视频 我:我想漫画风格(分格图片)的短视频,结合现在的热点事件或电影等,给我提供几个创作的方向和思路 AI:当然,以下是一些创作漫画 ......
Diamond--需求接口文档管理
背景 市面上通用的接口文档工具如swagger和yapi都是只针对接口的管理,对于版本和需求的管理少 对于需求文档与需求及接口的对应管理工具市面稀缺 缺少从需求产生到最后产品上线一站式服务工具 目的 管理需求文档与接口版本及接口字段的对应关系 自动化测试、mock数据等功能 可视化前台页面 后续可以 ......
注册中心
Nacos 和 Zookeeper 一.注册中心是ap模式还是cp模式 数据一致性(不是硬性要求可以不一致) 数据可用性是必备条件所以是注册中心是AP模式 二.服务规模,容量和连通性 zookeeper写操作是不可水平扩展的 zookeeper的ZAB协议保证每次请求都会写日志到每个节点 定期将内存 ......
《2022雷军年度演讲全文:穿越人生低谷的感悟》
参考:2022雷军年度演讲全文:穿越人生低谷的感悟首先,本次演讲我认为是相比以往很不一样的。雷军讲述了自己职业生涯三次低谷,以及面对人生挫折的复盘,可谓是干货满满。另外演讲的过程中不难看出,他的心中永远保持着梦想和热爱,即使过程并不顺利但依然坚持思考,乐观面对,这种力量是直击人心的,瞬间感觉被圈粉。 ......
51单片机
51单片机 1、51单片机初始知识 在51单片机里,int为16位。 给单片机写程序的意义就是让输入/输出的高低电平可以动起来。(不写代码的高电平就一直是高电平了,除非拿开关等期间让它改变。) 51有自己的编译器,有些语法和C语言并不相通。 51单片机有256位寻址。即256Byte空间可用。但高1 ......
2023年10月16日
上周一成功回答建民老师课上问题: 对于不同分数对应的优秀程度,如何减少对比次数: 二分查找(也叫折半查找算法):二分查找针对的是一个有序的数据集合 时间复杂度:O(logn) 但是二分查找的应用场景比较有限:底层必须依赖数组,并且要求数据有序;对于较小规模的数据查找,直接使用顺序遍历就可以了,二分查 ......
在golang中如何实现 WebSocket 的双向通信
在golang中如何实现 WebSocket 的双向通信 ? 原创 磊丰 Go语言圈 2023-12-21 08:30 发表于广东 听全文 Go语言圈 Go语言开发者的学习好助手,分享Go语言知识,技术技巧,学习与交流Go语言开发经验,互动才有助于技术的提升,每天5分钟,助你GO语言技术快乐成长 1 ......
内部裸奔改进优化方案
{"format":"lakeboard","type":"Board","version":"1.0","diagramData":{"head":{"version":"2.0.0"},"body":[{"type":"geometry","html":"<div style="text- ......
Cannot install in Homebrew on ARM processor in Intel default prefix (/usr/local)!
一、现象 二、思路 下载两个版本的Homebrew并存 三、解决 brew bundle dump 下载homebrew,参考Mac装机软件 vi ~/.zshrc 添加 export PATH=/opt/homebrew/bin:$PATH source使配置生效 ......
Conda虚拟环境的安装和卸载
一、创建环境 conda create -n test_env python=3.10 二、激活环境 conda activate test_env 三、退出环境 conda deactivate 四、删除环境 # 优先退出环境 conda remove -n test_env --all ......
依赖倒置原则 Dependence Inversion
一、定义 高层模块不应该依赖底层模块 二者都应该依赖其抽象 二、特点 抽象不应该依赖细节,而细节应该依赖抽象 针对接口编程,而不要针对实现编程 尽量每个类都实现自接口或继承父类 三、优点 减少类间的耦合性 提高系统稳定性 提高代码可读性和可维护性 降低修改程序所造成的风险 四、举例 ......
开闭原则 OpenClose
一、定义 一个软件实体(如类、模块和函数),应该对扩展开放,对修改关闭 二、特点 用抽象构建框架,用实现扩展细节 面向抽象编程,抽象相对稳定 三、优点 提高软件系统的可复用性和可维护性 四、举例 ......
状态模式 State
一、定义 一个对象存在多个状态(不同状态下行为不同),且状态可相互转换 二、适用场景 如:播放器,播放/暂停都是状态,不同状态下行为不同 三、优缺点 1、优点 将不同的状态隔离 把各种状态的转换逻辑,分不到State的子类中,减少相互间依赖 增加新的状态非常简单 2、缺点 状态多的业务场景会导致类数 ......
访问者模式 Visitor
一、定义 封装作用域某数据结构(如List/Set/Map等)中的各元素的操作 可以在不改变各元素类的前提下,定义作用于这些元素的操作 二、适用场景 一个数据结构(如List/Set/Map等)包含很多类型的对象 数据结构和数据操作分离 三、优缺点 1、优点 增加新的操作很容易,即增加一个新的访问者 ......
责任链模式 Chain Of Responsibility
一、定义 为请求创建一个接收此次请求对象的链 特点:类中包含一个和自己同类型类的对象 二、适用场景 一个请求的处理需要多个对象当中的一个或几个协作处理 三、优缺点 1、优点 请求的发送者和接收者(请求的处理)解耦 责任链可以动态组合 2、缺点 责任链太长或者处理时间过长,影响性能 责任链有可能过多 ......
中介者模式 Mediator
一、定义 定义一个封装一组对象如何交互的对象 通过使对象明确的相互饮用来促进松散耦合,并允许独立地改变他们的交互】 二、适用场景 系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解 交互的公共行为,如果需要改变行为则可以增加新的中介者类 类似于聊天室(群组) 使用观察者模式负责中 ......
命令模式 Command
一、定义 将“请求”封装成对象,以便使用不同的请求 命令模式解决了应用程序中对象的职责以及他们之间的通信方式 二、适用场景 请求调用者和请求接收者需要解耦,使得调用者和接收者不直接交互 需要抽象出等待执行的行为 三、优缺点 1、优点 降低耦合 容易扩展新命令或一组命令 2、缺点 命令的无限扩展会增加 ......