当前位置: 首页 > news >正文

【算法与设计模式】

一、数据结构与算法

1、算法性能评估

时间复杂度、空间复杂度

2、数据结构

数组与列表
队列
堆栈
链表
二叉树
多叉树
递归算法

二、设计模式

1、单例

(1)GIL:线程互斥锁。保证同一时刻只有一个线程在进行。
(2)多进程与多线程
1)计算密集型
假如一个计算密集型的任务需要10s的执行时间,总共有4个这样的任务,求运行总时长。
在 4核及以上的情况下:
多进程:4个CPU开启4个进程,进程并行,执行时间10s多。
多线程:1个CPU(进程)同时开启4个线程,开启线程消耗的资源很少,但实际运行CPU只有1个,所有执行时间40s多。
计算密集型考虑多进程,多个CPU同时跑,比如计算圆周率。
2)IO密集型
IO密集型,IO操作需要花费很长的时间(或者网络请求time.sleep(),多个CPU并不能提效,反而进程切换也需要花费时间)远大于CPU。此时,多个CPU跑反而时间更长。

2、工厂模式

3、其他设计模式

(1)代理模式定义
为其他对象提供一种代理以控制整个对象的访问
(2)代理模式uml图
在这里插入图片描述
Subject类:函数的定义
Proxy代理类:函数的调用
RealSubject类:函数的具体实现
例:
在这里插入图片描述
代理伪代码:

class Proxy(GiveGift):Proxy(SchoolGirl mm):gg = new Pursuit(mm)}GiveLipstick():gg.GiveLipstick()

客户端调用伪代码:

SchoolGirl jiaojiao = new SchoolGirl()
jiaojiao.name = "李娇娇"
Proxy xiaohong = new Proxy(jiaojiao)xiaohong.GiveLipstick()
xiaohong.GiveBracelet()
xiaohong.GivenNecklace()

(2)代理模式的应用
1)远程代理:最经典的是web service。想在本地访问另一台主机的代码,实现方式:在本地开启代理,通过web service发送远程请求,再拿到这个请求供本地调用。在本地调用代理代码,就根本不会知道调用的是远程web应用。可以隐藏这些细节。
2)虚拟代理:存放实例化需要很久的对象,比如网页先看到文字,后看到图片,很多浏览器都是用的这种方式
3)安全代理:控制真实对象的访问权限
4)智能指引:调用真实对象时,处理另外一些事,比如计算知识对象的引用次数。

4、设计模式基本原则

http://www.lryc.cn/news/227461.html

相关文章:

  • Javaweb之javascript的小案例的详细解析
  • Vant 移动端UI 组件自动引入
  • 敏捷开发是什么?敏捷开发流程是怎么样的?
  • 【CASS精品教程】cass3d 11.0加载超大影像、三维模型、点云数据
  • Unity Input System最简单使用
  • 3.前端调式(断点调式)
  • 拓扑排序软件设计——ToplogicalSort_app(含有源码、需求分析、可行性分析、概要设计、用户使用手册)
  • ESP32网络开发实例-将数据保存到InfluxDB时序数据库
  • NestJS——基于Node.js 服务器端应用程序的开发框架
  • EXCEL中将UTC时间戳转为日期格式(精确到秒)
  • 2023年【起重机械指挥】考试试卷及起重机械指挥操作证考试
  • 组件的设计原则
  • 安卓编译命令mm和mmm的区别(mm编译当前工作目录,mmm可编译指定目录)
  • 计算机毕业设计 基于Springboot的影院购票管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 使用.net 构建 Elsa Workflow
  • open clip论文阅读摘要
  • Vue3像Vue2一样在prototype(原型)上挂载数据
  • API接口自动化测试
  • 基于springboot实现驾校管理系统项目【项目源码】
  • 稀疏数组的保存优化(java版本)
  • Git GUI、SSH协议和IDEA中的Git使用详解
  • Linux下C++调用python脚本实现LDAP协议通过TNLM认证连接到AD服务器
  • 计算机毕业设计选题推荐-校园交流平台微信小程序/安卓APP-项目实战
  • FlinK之检查点与保存点机制
  • UE5 新特性 Nanite 开启
  • 仿写知乎日报第四周
  • MySQL join原理及优化
  • js案例:打地鼠游戏(打灰太狼)
  • 删除杀软回调 bypass EDR 研究
  • Ansible自动化部署工具-组件及语法介绍