【软考】上午题10-信息安全-中级软件设计师备考笔记
防火墙 内部网络是安全的、可信赖的,外部网络是不安全、不可信赖的 安全处理:控制、审计、报警和反应等 发展阶段: 包过滤防火墙,在网络层和数据链路层之间,检查网络层包的源地址、目的地址、协议和端口等logseq.order-list-type:: number 对应用、用户完全透明,速度较快,实行低水平控制 缺点,不能防范黑客攻击、不能处理新的安全威胁 应用代理网关防火墙,彻底隔绝直接通信,必须经应用层代理软件转发logseq.order-list-type:: number 缺点,难以配置,处理速度非常慢 网络攻击 拒绝服务攻击(Dos攻击) 不断向计算机发起请求来实现,使计算机或网络无法提供正常服务 重放攻击 盗取认证凭据,重新发送认证服务器,破坏认证正确性 Sql注入攻击 对数据库进行攻击的常用手段,获取权限 网络安全 SSL 安全协议,端口号443,传输层 TLS SSL 3.0 后续版本 SSH 终端设备和远程站点建立安全连接的协议,防止信息泄露 HTTPS 使用 SSL 的 HTTP,安全通道(用...
【软考】上午题9-软件工程-中级软件设计师备考笔记
软件过程 能力成熟度模型 CMM 五个成熟度级别: 初始级,杂乱无章,混乱,靠英雄式核心人物 2.可重复级,基本项目管理过程和实践跟踪,有必要的过程准则3.已定义级,软件过程文档化、标准化,标准软件过程4.已管理级,软件过程的产品质量被理解和控制5.优化级,加强定量分析,通过过程质量反馈、新观念、新技术持续改进 能力成熟度模型集成 CMMI 阶段式模型,类似 CMM 连续式模型,有六个等级,0-5 CL0,未完成的,未执行或未得到 已执行的,共性目标:可标识输入转换可标识输出工作产品logseq.order-list-type:: number 已管理的,共性目标:已管理过程的制度化logseq.order-list-type:: number 已定义级的,共性目标:已定义过程的制度化logseq.order-list-type:: number 定量管理的,共性目标:可定量管理的制度化logseq.order-list-type:: number 优化的,使用量化手段改变和优化过程域logseq.order-list-type::...
【Weekly Algorithm】算法周记之《代码随想录》二叉树(三)
学习小结本周跟随《代码随想录》学习二叉树和二叉搜索树的算法题目,比如完全二叉树的节点个数,平衡二叉树,二叉树的路径、二叉树的合并,二叉搜索树的检索和验证等。 二叉树 完全二叉树的节点个数 代码随想录 222. 完全二叉树的节点个数 - 力扣(LeetCode) 题意就是让你求一个完全二叉树的节点个数 方法有大致两种,一种是把这个当普通二叉树求,直接先序、中序、后序遍历都行,统计节点,时间复杂度 O(n);第二种是利用完全二叉树的特性,由于完全二叉树可视作是满二叉树组成的二叉树,满二叉树的节点由深度 n,经 2^n - 1 计算得出。 陆爻齐的先序求法123456789101112131415161718192021222324252627/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr),...
【软考】上午题8-结构化开发-中级软件设计师备考笔记
模块独立 衡量模块独立程度标准:耦合性、内聚性 尽量高内聚,低耦合,提高模块独立性 耦合(与模块独立性反比) 无直接耦合:无直接关系,耦合性最弱,独立性最高 数据耦合,两个模块有调用关系,传递简单数据 标记模块,传递数据结构 控制耦合,调用另一模块时,传递控制变量 外部耦合,通过软件外部环境连接 公共耦合,公共数据环境 内容耦合,直接用另一模块内的数据,或通过非正常入口转入另一模块内 内聚(与模块独立性正比) 偶然内聚(巧合内聚),模块内元素之间无联系 逻辑内聚,有若干逻辑相似功能,用参数决定哪个 时间内聚,把同时执行动作组合 过程内聚,按执行过程 通信内聚,各元素在同一个数据结构操作 顺序内聚,必须顺序执行 功能内聚,所用元素共同完成一个功能,缺一不可 系统结构设计原则(有个印象) 分解协调原则logseq.order-list-type:: number 自顶向下的原则logseq.order-list-type:: number 信息隐蔽、抽象的原则logseq.order-list-type::...
【软考】上午题7-设计模式-中级软件设计师备考笔记
为复用成功的设计采用设计模式 创建型设计模式 工厂方法模式(类模式) 意图,定义使类的实例化延迟到子表 抽象工厂模式 意图,创造一系列接口,无需执行他们具体的类,以便让一系列对象联合使用 系统独立于产品创建、组成和表示 建造者模式 Builder 意图,将复杂对象的构建和表示分离,同样的构建过程创建不同表示 原型模式 Prototype 让对象复制自身 系统独立于对象创建、构成和表示 单例模式 Singleton 保证类仅有一个实例,提供一个全局访问点 结构型设计模式 适配器模式(可能有类模式,会用的多重继承,但很少) Adapter 意图,把一个类接口转换成客户希望的例外一个接口 想使用一个已有类的接口,但接口不符合要求 桥接模式 Bridge 意图,将抽象部分与实现部分分离 组合模式 Composite 意图,把对象组合成树型结构表现部分-整体的层次结构,使用具有一致性(一个方法处理不同对象) 装饰模式 Decorator 意图,动态给对象添加一些额外职责 不影响其他对象,动态、透明地给对象添加职责 外观模式...
【软考】上午题6-UML-中级软件设计师备考笔记
事物(少) 四种:结构事物(静态)、行为事物(动态)、分组事物(其他食物可以放成包)、注释事物(解释部分) 关系(中) 依赖关系,虚线箭头 — > ,若 A依赖B,则A为依赖事物,B为独立事物,A调用 func(B),也就是独立事物的变化影响依赖事物的语义, 比较偶然一点,比如人依赖食物,吃完就暂时不依赖了 关联关系,实线箭头 —>,是链,可以标注多重度(0..*)和角色,比依赖更强的关系,比如人关联氧气聚集关系,描述了整体和部分的结构关系,整体和部分生命周期不一致,空心菱形箭头表示组合关系,更强的聚合,整体和部分生命周期一致,实心菱形实线箭头表示 泛化关系,父类泛化子类,有带空心箭头的实线,子类指向父类 实现关系,实现内容实现接口,带空心箭头的虚线 图(多) 类图 最常见,静态设计视图 +:public-:private#:protected~:package 支持系统功能建模,对词汇、协作、逻辑数据库模式建模 对象图 类图的实例的静态快照 用例图 用例、参与者和她们之间关系,静态,对系统语境/需求建模 ...
【软考】上午题5-面向对象-中级软件设计师备考笔记
类 实体类:核心类,储存信息接口类(边界类):媒介控制类:控制活动流,协调者 一组对象的抽象定义 对象 通常由对象名,属性(状态)、方法(行为)组成 从属一个类的对象,共享属性与行为 消息 对象之间通信的构造(用 set 之类设置对象中的属性也算吧) 封装 是一种信息隐藏技术 对象是封装数据与行为的整体 继承 父类和子类之间共享非私有化数据和方法的机制 多重继承可能使成员产生二义性,即父母同时有的属性和方法不知调用哪个 多态 父类指针指子类对象,编译时视作父类,运行时视为子类(继承支持) 调用时发通用消息,调用不同方法 参数多态:最纯的多态包含多态:很多语言存在,最常见的是子类型化(一个类型是另一个类型的子类型)过载多态:同一个名字在不同的上下文中代表的含义不同强制多态 ...
【软考】上午题4-数据库-中级软件设计师备考笔记
结构数据模型 层次模型,用树结构 网状模型,用图结构 关系模型,用二维表格结构 三级模式结构 概念模式(模式) 基本表 外模式(用户模式,子模式) 视图 内模式 存储文件 表示层、业务层、数据层 两级映像 模式/内模式映像,与物理有关,改物理改映像 外模式/模式映像,与逻辑有关,改逻辑改映像 保证逻辑独立性和物理独立性 关系模式基本知识 {:height 338, :width 597} 重点是:什么是候选码、主码、主属性 完整性 实体完整性:主码不能为空或部分为空 参照完整性:外码在主码对应,要么找到,要么为空值 连接 西塔连接,也就是在笛卡尔积的基础上有比较的筛选 等值连接,也就是西塔连接中,= 自然连接,去除重复属性的等值连接(相同属性相等) 外连接:左外连接,沙漏左边有长横,左边信息必须有留,对应右侧若无信息可留空右外连接和全外连接同理 答案 SQL 数据定义语言 DDL 数据操纵语言 DML 数据查询语言 DQL 数据控制语言 DCL 一堆 SQL...
【软考】上午题3-知识产权-中级软件设计师备考笔记
著作权 有人身权和财产权 人身权:署名权、修改权和保护作品完整权等(永久) 发表权(时间限制:作者终身及其死亡后五十年) 专利地域性 知识产权只在本国领域受法律保护 计算机软件著作权 基本法律文件《中华人民共和国著作权法》...
【软考】上午题2-程序设计语言-中级软件设计师备考笔记
低级语言和高级语言 汇编和机器语言是低级语言 编译程序和解释程序 解释器:解释源程序不产生独立的目标程序,解释程序和源程序要参与到程序运行过程中编译器:解释源程序产生独立的目标程序,解释程序和源程序不参与到程序运行过程中 基本成分 结构:顺序结构、选择结构、循环结构 编译器 词法分析语法分析语义分析中间代码生成代码优化目标代码生成 ...
【Weekly Algorithm】算法周记之《代码随想录》二叉树(二)
学习小结本周跟随《代码随想录》学习二叉树的层序遍历,以及对于二叉树的翻转、对称,深度问题等。 二叉树 二叉树的层序遍历 代码随想录 (programmercarl.com) 102. 二叉树的层序遍历 - 力扣(LeetCode) 题意就是一层层地从左到右遍历二叉树 方法就是利用队列,把一层层排进去,一层层遍历,陆爻齐用两个队列实现这个操作,不过通过 for 循环,其实只要一个队列就行 陆爻齐的解法123456789101112131415161718192021222324252627282930313233343536373839/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) :...
【软考】上午题1_计算机系统_中级软件设计师备考笔记
计算机系统硬件 由运算器,控制器,存储器,和输入输出设备五大部件组成 CPU 是硬件系统核心 运算器 *算术逻辑单元(ALU),可以算术运算和逻辑运算*累加寄存器(AC),简称累加器,暂存运算中的数字数据缓冲寄存器(DR)作为 CPU 和内存、外部设备的中转站,也可兼做寄存器状态条件寄存器(PSW),保存运算结果建立各种条件码内容 控制器 不仅保证程序(指令)的正确执行,也要能够处理异常事件 指令寄存器(IR)暂存正在执行指令,指令从内存先到 DR,再到 IR (对用户完全透明,不能访问)(注意所存的是指令,不是指令地址)*程序计数器(PC)有寄存信息和计数两个功能,保存要执行下一条指令地址地址寄存器(AR)保存 CPU 正在访问内存地址指令译码器(ID)翻译指令的操作码来执行 答案 计算机基本单位 位(比特) bit b 字节 byte B 1B = 8b 最小数据单位 bit 最小存储单位 byte 进制 十(D) 二(B) 八(O) 十六(H) 计算区域时,记得求其大小,要大数减小数加一 {:height...
【Weekly Algorithm】算法周记之《代码随想录》栈与队列与二叉树(一)
学习小结本周跟随《代码随想录》学习栈与队列和二叉树遍历的一部分,学到了栈和队列在算法中的应用,以及优先级队列的使用;此外还有二叉树的前中后序的递归、迭代、统一迭代方法。 栈与队列用栈实现队列 代码随想录 (programmercarl.com) 题意就是用栈实现队列的一部分功能 核心就是通过两栈,一个管输入,一个管输出,输出空了时,执行输出操作需从输入中把数字倒入输出的栈中 陆爻齐参考代码随想录思路的解法1234567891011121314151617181920212223242526272829303132333435363738394041424344class MyQueue {public: stack<int> in; stack<int> out; MyQueue() { } void push(int x) { in.push(x); } int pop() { int num...
【Weekly Algorithm】 算法周记之《代码随想录》字符串
学习小结本周跟随《代码随想录》学习字符串部分,较深入地了解了字符串的相关算法题,除了双指针,还有 KMP 算法。 字符串简评究其本质而言,就是数组,只不过内容换成了字母。 反转字符串 代码随想录 (programmercarl.com) 就是把字符串前后翻转,和[[翻转链表]]相似 由于字符串可以随机读取,可以简单很多,直接 swap i 和 str.size()-1-i 的字符即可 陆爻齐参照代码随想录的解法123456789class Solution {public: void reverseString(vector<char>& s) { int size = s.size(); for (int i = 0; i < size / 2; i++) { swap(s[i],s[size - 1 - i]); } }}; 反转字符串|| 代码随想录 (programmercarl.com) 与...
【Weekly Algorithm】 算法周记之《代码随想录》哈希表
学习小结本周跟随《代码随想录》学习哈希表部分,较深入地了解了哈希表的相关算法题,结合数组、set、map完成题目,并利用双指针解决部分题目。 哈希表简评究其本质而言,就是数组,但可以通过给元素编码得其索引,以 O(1) 的效率访存,最适合检测该元素是否存在。 有效的字母异位词 代码随想录 (programmercarl.com) 即检测一个字符串是否为另一个字符串的字母打散重组的单词 字符可以通过 ASCII 码表来存储,遍历某个字符串,对应字符++,再遍历另一个对应字符–,最后所有字符都为 0 即为字母异位词 1234567891011121314151617181920212223242526class Solution {public: bool isAnagram(string s, string t) { // 记录每个字符对应次数,相当于哈希表 int word_rec[26] = {0}; // 遍历某个字符串,记录对应字符出现次数 for (auto c :...
【Weekly Algorithm】 算法周记之《代码随想录》链表
学习小结本周跟随《代码随想录》学习链表部分,较深入地了解了链表的相关算法题,并利用双指针解决部分题目。 链表移除链表元素 代码随想录 (programmercarl.com) 由于链表结构特殊,移除操作需要对指针操作,稍微复杂点 比较方便的方法是,用一个虚拟的指针头,将这个链表的删除操作转化为统一的链表中元素的移除 参考代码随想录思路的解法1234567891011121314151617181920212223242526272829303132333435/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x),...