软考-必须要背的内容

news2025/3/16 19:34:02

一、设计模式

1、创建型

抽象工厂提供一个接口,创建一系列的相关相互依赖的对象,无需指定具体的类;

eg:系统软件,支持多种数据库

生成器:将一个复杂类的表示与构造分离,使得相同的构建过程能够得到不同表示

eg:同样制作方法,不同种类披萨

工厂方法:定义一个创建对象的接口,但由子类决定需要实例化哪一个类

eg:产品选择用哪个子类产品

原型Prototype:用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象;

eg:自动生成求职简历,工作经验不同(clone)

单例:保证一个类只有一个实例,并且提供一个访问他的全局访问点、、、1855

2、结构型设计模式

适配器:将一个类的接口转换成用户希望得到的另一种接口。使得原本不兼容的接口得以协同工作;eg:USB,Type-c,语言适配?

桥接:将类的抽象部分和它的实现部分分离,使得可以独立变化; 继承树拆分

eg:不同Linux,win系统显示不同后缀图片gif,bmp,jpeg

组合(composite):将对象组合成树型结构以表示“整体-部分”层次结构,使用户对单个对象和组合对象的使用具有一致性

eg:公司,子公司;文件夹,文件,菜单?

装饰器:动态给一个对象添加一些额外职责,子类扩展功能;

eg:operation,super.print()调用父类方法,super(t)表示父类的,发票头尾

person lisi = new Decorator(new A(new student("lisi")))

外观(Facade):定义一个高层接口,为子系统中的一组接口提供一个一致的外观,简化该系统的使用;eg:对外统一接口

享元(Flyweight):提供支持大量细粒度对象共享的有效方法

eg:黑子,白子,位置

代理:其他对象提供一种代理以控制这个对象的访问

3、行为型设计模式

责任链:多个处理器依次处理同一个请求。一个请求先经过 A 处理器处理,然后再把请求传递给 B 处理器,B 处理器处理完后再传递给 C 处理器,以此类推,形成一个条。链条上的每个处理器各自承担各自的处理职责。

命令:将一个请求封装为一个对象,从而使得可以用不同的请求进行参数化,对请求排队或者记录请求日志以及支持可撤销的操作。

eg:遥控器开关机,开关灯;

解释器:有一个语言需要解释执行,并且你可以将该语言中的句子表示为一个抽象语法树时,可以使用解释器模式

迭代器:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。常用于遍历一个集合对象

中介者:中介模式定义了一个单独的(中介)对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。

eg:支付接口

备忘录:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。多用于数据备份和恢复的场景。

观察者对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知

eg:关注up,关注某个事情

状态:当一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为时就可以考虑状态模式

eg:自动贩卖机,会员等级调整。

策略策略模式会定义一系列算法,从概念上来看,所有这些算法完全的都是相同的工作相互替换,只是实现不同,它可以以相同的方式调用所有的算法,

eg:飞机模拟飞行。购物中心打折,满减,原价

模板方法:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算的结构即使重定义该算法的某些特定步骤。

访问者:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作

eg:统计馆藏文献页数?

二、数据结构----图

1、邻接矩阵:n*n

有向图: 行:出度,列:入度;

无向图:对称,第 i 行非0元素个数为顶点 i 的度;

稠密图:O(n2)

2、邻接表:

有向图:空间:n+e,

无向图:n+2e,

稀疏图

3、十字链表:有向图,易

4、广度优先:

队列,不唯一,BFS,层序遍历

空间复杂度:O(n),时间复杂度:O(e);

5、深度优先:

栈,不唯一,BFS,先序遍历

空间复杂度:O(n),时间复杂度:O(e);

6、最小生成树

带权连通无向图

(1)prim:O(v2)边稠密;从顶点开始,找集合边最小;

(2)(贪心算法kruskal:不断选择未被选小权值边,O(eloge),边稀疏;

7、最短路径:

(1)(贪心算法Dijkstra:某一顶点到其他顶点的最短路径(单源),O(v2);

(2)(动态规划Floyed:适用所有顶点间最短路径和带权无向图,

时间复杂度:O(v3)空间复杂度:O(n2)

拓扑排序:AOV网,关键路径--AOE网

二、数据结构----排序

1、查找

顺序查找:ASL=(n+1)/2

二分查找:ASL=O(logn)

2、排序

归并排序:动态规划

不稳定:快些选堆 朋友来

时间快(nlogn):快些归队

一趟确定一个位置:快,选,堆,冒(帽子)

再就是:

正规式:有限自动机的另外一种表达形式

|:表示或

()*:表示循环多次,*可以是0到无穷

计算机网络

dhcp分到的ip是169和0,说明有问题,是错误的

DHCP动态分配ip时候:若没有获取到,Windows是169.254.0.0,linux是0.0.0.0

DHCP客户端可以从DHCP服务端获得本机IP地址、DNS服务器地址、DHCP服务器地址、默认网关的地址(没有web服务器地址和邮件服务器地址)

软件工程:

瀑布模型

每个阶段末尾都会有评审,评审上一阶段的工作是否达标

缺点:初期分析需求无法把控,开发末期的结果和客户要求不一致,全盘推翻==(不能适应变化的需求)==

适用场景需求明确/二次开发/有过经验,用新技术重构也用瀑布

原型:

定义在需求不明确的情况,初期构建一个简易系统让用户发现问题,探索用户的需求==(只应用于需求分析阶段)==,也可以探索出特殊的软件解决方案

能够迅速开发出一个让用户看得见的系统框架,可以用来支持用户界面设计

不能指导代码优化

原型模型最不适合大规模软件开发

增量:

先做出核心好处在核心模块尽早和用户接触了==(逐步理解需求)==,但是这种模式如何进行模块划分是难点

演化(迭代)模型

相比原型,适用于需求清楚,尽早投入使用,要不断改善的时候

螺旋模型

开发活动和风险管理结合起来,求将风险降到最小并控制风险

有多个模型的特点:瀑布+快速原型

包含维护周期,所以开发和维护之间没有本质区别

喷泉模型与RAD

面向对象

用户需求为动力,对象作为驱动,客服了瀑布模型不支持软件重用和多项开发活动集成的局限性

迭代、无间隙(开发活动之间不存在明显边界)

RAD:快速开发模型,SDLC(瀑布模型)+CBSD(构件化开发模型);可以快速构建应用系统

统一过程UP

也称RUP,用例和风险为驱动,以架构为中心,迭代并增量开发

用于大型项目

五个阶段:起始、精化、构建、移交、产生

敏捷开发方法

给开发减轻负担、适合小型项目、随时对接客户

自适应方法ASD==(6个基本原则)、水晶方法Crystal(每个项目用不同方法)、特征驱动开发、并列争球法SCRUM(30天一迭代的冲刺,按需求优先级实现)、极限编程XP(激发创造性、管理负担小,测试先行)

内聚是一个模块内部各个元素彼此结合的紧密程度

巧合内聚(偶然内聚):两个程序块放在一起,但是没有任何关系

逻辑内聚:两个放在一起的程序块有逻辑上的关系(比如根据参数选择调用哪个程序块)

时间内聚:需要同时执行的几个任务放在一起

过程内聚:放在一起的程序块处理的元素是相关的,并且按一定次序

通信内聚(信息内聚):模块内处理的对象都是同一个数据结构

顺序内聚:放在一起的程序块处理的元素是相关的,并且顺序执行

功能内聚:模块内所有元素完成单一功能(不可再分,缺一不可)

耦合是模块之间相互独立性的度量,连接越紧密,耦合性越高,独立性越弱

数据耦合:两个模块之间通过简单数据交换信息

标记耦合:两个模块通过数据结构传递

公共耦合:访问同一个公共的数据环境

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1694892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PX4使用yolo仿真环境搭建

文章目录 前言一、修改机架sdf文件二、安装yolo三、运行 前言 ubuntu20.04 PX4 1.13.3 已配置好PX4 ROS gazebo环境 一、修改机架sdf文件 将双目相机加到仿真的iris机架上 修改下图文件 添加如下&#xff1a; <include><uri>model://stereo_camera</uri>…

D - AtCoder Wallpaper(abc)

思路&#xff1a;f(c, d) f(a, b) - f(a, d) - f(c, b) 代码&#xff1a; int f(int x, int y){if(y % 2 0){y y / 2;int ans y * (x / 4) * 8;x % 4;if(x 1){ans y * 3;}else if(x 2){ans y * 6;}else if(x 3){ans y * 7;}return ans;}else{y / 2;int ans y * (x…

从零开始搭建Springboot项目脚手架4:保存操作日志

目的&#xff1a;通过AOP切面&#xff0c;统一记录接口的访问日志 1、加maven依赖 2、 增加日志类RequestLog 3、 配置AOP切面&#xff0c;把请求前的request、返回的response一起记录 package com.template.common.config;import cn.hutool.core.util.ArrayUtil; import cn.hu…

Go语言的内存泄漏如何检测和避免?

文章目录 Go语言内存泄漏的检测与避免一、内存泄漏的检测1. 使用性能分析工具2. 使用内存泄漏检测工具3. 代码审查与测试 二、内存泄漏的避免1. 使用defer关键字2. 使用垃圾回收机制3. 避免循环引用4. 使用缓冲池 Go语言内存泄漏的检测与避免 在Go语言开发中&#xff0c;内存泄…

SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?

尼恩&#xff1a;LLM大模型学习圣经PDF的起源 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;经常性的指导小伙伴们改造简历。 经过尼恩的改造之后&#xff0c;很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会&#x…

力扣刷题---961. 在长度 2N 的数组中找出重复 N 次的元素【简单】

题目描述&#x1f357; 给你一个整数数组 nums &#xff0c;该数组具有以下属性&#xff1a; nums.length 2 * n. nums 包含 n 1 个 不同的 元素 nums 中恰有一个元素重复 n 次 找出并返回重复了 n 次的那个元素。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,3] 输…

智能猫眼锁核心解决方案以及芯片简介SSD222

书接上回&#xff0c;前篇文章我们诠释了IP 网络摄像系统的定义以及组成部分的功能&#xff0c;也大概的讲了一下所针对的市场以及举例介绍了一款相关芯片&#xff0c;详情可点击下面卡片浏览高集成IP摄像SOC处理方案简介https://blog.csdn.net/Chipsupply/article/details/139…

XILINX FPGA DDR 学习笔记(一)

DDR 内存的本质是数据的存储器&#xff0c;首先回到数据的存储上&#xff0c;数据在最底层的表现是地址。为了给每个数据进行存放并且在需要的时候读取这个数据&#xff0c;需要对数据在哪这个抽象的概念进行表述&#xff0c;我们科技树发展过程中把数据在哪用地址表示。一个数…

【C++】<知识点> 标准模板库STL(上)

文章目录 一、STL---string类 1. 常用构造函数 2. 常用操作 3. 字符串流处理 二、STL---容器 1. STL及基本概念 2. 顺序容器简介 3. 关联容器简介 4. 容器适配器简介 5. 常用成员函数 三、STL---迭代器 1. 普通迭代器 2. 双向、随机访问迭代器 3. 不同容器的迭代器…

项目思考-编辑器

1、文本生成编辑器 2、图片合成编辑器&#xff08;未完待续&#xff09; 3、文字和图像版本的技术要点&#xff0c;区别&#xff08;未完待续&#xff09; 4、编辑器的人员配置考虑&#xff0c;技术难点分析&#xff08;未完待续&#xff09; 1、文本生成编辑器

AI爆文写作:如何找对标账号的文章?告诉你一个秘密:找低粉爆款的抄!这样风险最小!

一、注册新号来训练推荐爆款的素材 首先第一点:强烈推荐注册一个专用个人微信号,通过阅读,点赞和在看等动作,训练算法为我们推荐爆款素材。 二、为什么要对标低分爆款? 2.1 什么是低粉爆款? 就是粉丝量很少,但却有很高阅读量,甚至10万+阅读的文章。 对标账号的文章…

从零开始学逆向,js逆向启蒙:有道翻译

语言&#xff1a;js、python 工具&#xff1a;pycharm、chrome浏览器F12调试、chatgpt&#xff08;补充js第三方库&#xff0c;转python&#xff09;、node.js(js运行)&#xff08;必须&#xff09; 目标&#xff1a;学习掌握基本js逆向知识。 对象&#xff1a; 有道翻译 &a…

Nginx - 安全基线配置与操作指南

文章目录 概述中间件安全基线配置手册1. 概述1.1 目的1.2 适用范围 2. Nginx基线配置2.1 版本说明2.2 安装目录2.3 用户创建2.4 二进制文件权限2.5 关闭服务器标记2.6 设置 timeout2.7 设置 NGINX 缓冲区2.8 日志配置2.9 日志切割2.10 限制访问 IP2.11 限制仅允许域名访问2.12 …

移动硬盘难题:不显示容量与无法访问的解决策略

在使用移动硬盘的过程中&#xff0c;有时会遇到一些棘手的问题&#xff0c;比如移动硬盘不显示容量且无法访问。这种情况让人十分头疼&#xff0c;因为它不仅影响了数据的正常使用&#xff0c;还可能导致重要数据的丢失。接下来&#xff0c;我们就来详细探讨一下这个问题及其解…

java 子类继承父类

为什么需要继承 我现在要有两个类一个 一个是小学生&#xff0c;一个是大学生 代码 小学生 package b; public class encapsulatio{public String name;public int age;public double score;public void setscore (double score) {this.scorescore;}public void testing() {S…

AI预测福彩3D采取888=3策略+和值012路一缩定乾坤测试5月25日预测第1弹

上一套算法采用了88723的容差策略&#xff0c;关于容差策略相信大家都比较清楚&#xff1a;容差可以最大限度的保证初始大底中包含中奖号码&#xff0c;然后再通过设置一些杀号条件进行缩水。比如&#xff0c;我对我的各种模型算法近30期的预测结果进行了统计&#xff0c;如果采…

行车安全:UWB模块的智能化在车辆安全系统中的作用

随着交通车辆数量的不断增加和道路交通拥堵的加剧&#xff0c;车辆安全问题日益引起人们的关注。在这种背景下&#xff0c;超宽带&#xff08;UWB&#xff09;技术作为一种新兴的定位技术&#xff0c;正逐渐应用于车辆安全系统中&#xff0c;为提高车辆行车安全性提供了新的解决…

ClickHouse实战处理(一):MergeTree表引擎

MergeTree作为家族系列最基础的表引擎&#xff0c;主要有以下特点&#xff1a; 存储的数据按照主键排序&#xff1a;创建稀疏索引加快数据查询速度。支持数据分区&#xff0c;可以通过PARTITION BY语句指定分区字段。支持数据副本。支持数据采样。 一、MergeTree分类和建表参…

02. Flink 快速上手

02. Flink 快速上手 1、创建项目导入依赖 pom文件&#xff1a; <properties><flink.version>1.17.0</flink.version> </properties><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java<…

算法打卡 Day10(栈与队列)-用栈实现队列 + 用队列实现栈

今天开始进入栈与队列啦&#xff01; 文章目录 栈与队列理论基础栈 Leetcode 232-用栈实现队列题目描述解题思路 Leetcode 225-用队列实现栈题目描述解题思路 首先我们来学习一下栈与队列的基础知识~ 栈与队列理论基础 栈与队列的区别是&#xff1a;栈是先进后出&#xff0c…