- 博客(30)
- 收藏
- 关注
原创 软设-下午题六
学习整理自:zst_2001接口实现用implements,继承用extends,两个单词要会写,并且记得都要s,定义接口用interface,注意都是小写抽象类中的抽象方法前面要写abstract注意强制类型转换的情况类图中的圆圈是接口类图中 “#”表示protected,“-”表示private,“+”表示public,“~”表示package一般属性是对象的话,会在前面加protected,让本类和子类可以访问该对象super.方法名()是调用父类的方法!!!状态模式要注意看状态转换图来写
2023-06-16 12:38:53
108
原创 软设-下午题三
例如学生和班级就是聚合关系,聚合用空心的菱形表示,并且班级消失了(毕业了)学生是不会消失的,而且学生可以独立存在,在这个例子里班级是整体,学生是部分。问题1一般是要求用例图中的参与者和用例,参与者一般比较容易看出来,但是用例有的可能不好看出来,就要进行分析,例如人和大脑是组合关系,其中人是整体,大脑是部分,人去世了,大脑也就没了,大脑不能脱离人独立存在。,找说明里有哪些是父类和子类的关系,例如支付方式是父类,微信支付和支付宝支付是子类。,B是A的特殊情况或拓展情况,A为基本用例,B为特殊用例。
2023-06-16 12:36:04
123
原创 软设-下午题二
问题3一般是增加新的实体,然后指定这个实体和另外一个实体的关系,**这个时候要搞清楚两个实体是什么?他们直接连接的动词是什么?动词是用来作为联系的,分析他们的关系是哪种?**最后在对应的图找到对应的实体类新增一个关系进去。,根据题目给出的题意很容易得出,但是有时候会要求补充E-R图,要会画实体、属性、联系,一般问题1都是要求对应的实体类之间的联系,主要就三种联系,一般采用第二种方式,即。一般采用第二种方式,即。
2023-06-16 12:22:39
103
原创 软设-下午题一
先把问题1和问题2的结果写到图上,然后按照方法一、二、三依次来查找排除。注意“并”字,一般也是一个数据流的动作;“根据”一般是从数据存储里面拿的,可能加工是个中间商。
2023-06-16 12:13:38
143
原创 软设-数据结构
也就相当于一个数组,可以直接通过下标快速查询到表中的元素,所以查询效率高;但是插入和删除会批量移动,所以插入和删除效率低,简称查询高效率,插删低效率插入元素的代码和时间复杂度最好的情况就是直接在顺序表后面插入一个元素,时间复杂度为O(1)最坏的情况是在插入一个元素到原来第一个元素的位置,时间复杂度为O(n)平均复杂度为O(n)最好的情况就是直接在删除最后一个元素,时间复杂度为O(1)最坏的情况是删除第一个元素,时间复杂度为O(n)平均复杂度为O(n)
2023-06-16 12:06:40
111
原创 有哪些常见的AQS锁?
此后,其他线程再 tryAcquire() 时就会失败,直到 A 线程 unlock() 到 state=0(即释放锁)为止,其它线程才有机会获取该锁。:设定一个信号量,当调用acquire()时判断是否还有信号,有就获取一个信号量,没有就阻塞等待其他线程释放信号量,当调用release()时释放一个信号量,唤醒阻塞线程。:给计数器设置一个初始值,当调用countDown()时计数器减1,当调用await() 时判断计数器是否归0,不为0就阻塞,直到计数器为0。
2023-06-15 18:34:00
222
原创 AQS简述
这个虚拟的队列是通过一些节点来实现的,会将暂时获取不到锁的线程封装成节点加入到该队列当中,也就是说当一个线程需要获取锁时,它会尝试进行CAS操作修改AQS内部的状态变量state,如果成功获取到锁,线程就可以正常执行。AQS是一个抽象类,主要用来构建锁和同步器,如ReentrantLock,Semaphore(信号量),CountDownLatch(倒计时器),CyclicBarrier(循环栅栏)等等都是基于AQS。1、独占,只有一个线程能执行,如ReentrantLock)
2023-06-15 17:41:11
52
原创 CAS简述
(3)存在ABA问题:假设线程 A 首先读取共享变量的值为 A,然后线程 B 修改了这个共享变量的值成为 B,并把它又改回了 A,然后线程 A 再次使用 CAS 操作时,发现当前共享变量的值仍为 A,就会误认为没有其他线程对共享变量进行过操作,从而继续执行后续的操作,这就是ABA问题。CAS 的全称是 Compare And Swap(比较与交换) ,可以保证原子性,常用于实现乐观锁。它的思想很简单,就是用一个预期值和要更新的变量值进行比较,两值相等才会进行更新。(1)只能保证一个共享变量的原子操作。
2023-06-15 17:20:51
82
原创 软设-设计模式
抽象工厂是工厂模式的升级,工厂模式的确是可以通过多个工厂来生产不同的东西,但是它每个工厂只能生产一种商品。例如海尔电视机工厂只能生产电视机,不能生产其他的,所以就出现了抽象工厂,抽象工厂就是定义了个抽象的工厂,这个抽象工厂能够生产不同商品,然后器具体实现工厂来实现它这些产品,例如有个抽象工厂能够生产电视机和洗衣机,然后有个海尔工厂继承这个抽象工厂,它可以生产海尔电视机和海尔洗衣机,这就实现了一个工厂生产多种产品。
2023-06-15 12:50:12
137
原创 软设-软件工程
沟通路径无主程序员的公式【(n-1)(2)可重复级跟跟踪费用相关。(4)已管理级跟产品质量相关。(3)已定义级跟标准相关。(5)优化级跟改进相关。n】/2,就是求和公式。
2023-06-15 12:50:11
60
原创 索引失效的情况分析
需要注意的是,如果查询语句中的条件包含了索引的最左前缀,但后面还有不符合最左前缀匹配原则的条件,那么 MySQL 可能仍然会扫描整张表,而不是利用该索引。MySQL 选择进行全表扫描而不是使用索引的情况有:数据表中的数据太少,或者使用索引需要访问的数据页过多而不如直接全表扫描更快。这样的查询语句中,以 % 开头的通配符意味着必须遍历整个索引列才能匹配成功,而无法使用到索引的优势。如果同时存在 name 和 age 的索引,MySQL 可以使用这两个索引来优化查询,从而提高查询性能。
2023-06-14 12:41:37
82
原创 软设-操作系统
这里S1理解为缓冲区的空间,S2理解为缓冲区产品的数量,例如上面是单缓冲区,所以S1为1,就是缓冲区中每次只能存放一个,V(S2)是指商品数量新增一个,所以上面图的整个理解就是生产一个商品放缓冲区,P(S1)这是把S1的值减1这样S1就为0,如果后面生产者又生产了一个产品这个时候S1还是0的话那就会堵塞在那里,可以把S1为0理解为缓冲区满了,然后V(S2)是把S2的值加1,表示生产了一个产品在缓冲区,然后消费者去消费产品就是通过P(S2)来实现的,消费完后就释放缓冲区也就是V(S1)来实现。
2023-06-13 17:47:00
68
原创 软设-结构化开发
其实就是根据父图去子图里一个个找看看有没有是父图里有的数据流但是子图没有。发现(3)生产中描述的生产计划在图中没有出现,需要加一条D3->3。在子图中看每一个加工是不是既有输入数据流也有输出数据流。加工至少有一个输入数据流和一个输出数据流!2、加工最少要有一个输入数据流和一个输出数据流。数据流的起点或终点必须有一个是加工!例如图中维修情况这条数据流在子图找不到。发现图中加工3–完成维修没有输入数据流。1、数据流的两端必须有一个是加工。3、数据流名称在上午题中不能重名。
2023-06-13 17:46:41
41
原创 软设-计算机系统
将发送的明文进行Hash算法后得到摘要放在密文后一起发送过去,与接收方解密后的明文进行相同的Hash算法得到的摘要进行对比,如果一致,则没有篡改,否则有篡改。数字签名:发送方用自己的私钥对摘要进行签名(加密),得到数字签名放在密文后一起发送过去接收方用发送方的公钥对数字签名进行验证(解密),如果验证成功则该消息没有被假冒且不能否认,否则该消息的真实性为假冒发生数字证书:用户向CA(权威机构)机构申请数字证书将个人信息和公钥发给CA机构CA机构颁给用户数字证书。
2023-06-13 17:44:06
211
原创 软设-UML
关联是参与者和用例之间的关系包含是用例和用例之间的关系扩展是用例和用例之间的关系泛化是参与者和参与者之间的关系,也是用例和用例之间的关系类图、对象图、用例图都是静态的可以用以下两种方式来使用用例图:1、对系统的语境建模。2、对系统的需求建模。
2023-06-13 17:25:23
132
原创 软设-面向对象
共同封闭原则:一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不产生影响。封装是一种信息隐蔽技术,它的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。当类中的属性或方法被设计为private时,只有(此类)当前类可以对其进行访问。不同的对象收到同一消息可以产生完全不同的结果,这一现象称为多态。共同重用原则:重用了包中的一个类,就要重用包中所有的类。单一责任原则:对一个类而言,仅有一个引起它变化的原因。类是对象的抽象,对象是类的具体化、实例。子类可以有自己额外的属性和方法。
2023-06-13 17:23:20
102
原创 软设-数据库
1、一般软考中的相关题目是都符合第一范式的,不需要考虑2、判断非主属性是否对候选码存在部分函数依赖,说白了就是看非主属性能不能只靠候选码的一部分就可以推理出来(靠候选码组合中任意一个主属性就可以推出那个非主属性的就不是第二范式,但是如果是组合中其中一个和其他非主属性组合在一起推出非主属性的那就没问题)3、看非主属性对候选码有没有传递依赖,存在传递依赖不符合第三范式4、看主属性对候选码有没有传递依赖或部分依赖,也就是主属性可以由候选码中任意一个就推出来那就不符合BCNF范式。
2023-06-13 17:21:05
305
原创 软设-知识产权
我国商标权的保护期限自核准注册之日起10年内有效,但可以根据其所有人的需要无限地延长权利期限,在期限届满前6个月内申请续展注册,每次续展注册的有效期为10年,续展注册的次数不限。计算机软件著作权的客体是指著作权法保护的计算机软件著作权的范围(受保护的对象)。一类是软件著作权的人身权(精神权力);著作权(也称为版权)是指作者对其创作的作品享有的人身权和财产权。(2)开发的软件作品与开发者在单位中从事的工作内容无直接联系。(3)开发的软件作品未使用单位的物质技术条件。计算机软件著作权的主体是指享有著作权的人。
2023-06-13 17:16:53
53
原创 软设-算法
回溯法:深度优先的方式搜索分治法:原问题分解为若干子问题,分别求解子问题,再合并起来继续求解原问题动态规划:问题具有最优子结构,而且求解过程中子问题被重复求解贪心法:局部最优,不能保证全局最优解,可以得到近似最优解。
2023-06-13 17:04:11
42
原创 软设-程序设计语言
词法分析阶段的主要作用是分析构成程序的字符及由字符按照构造规则构成的符号是否符合程序语言的规定。因为与具体的机器无关,使用中间代码有利于进行与机器无关的优化处理和提高编译程序的可移植性。机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的运行过程。可以实现形参和实参间双向传递数据的效果,即改变形参的值同时也改变了实参的值。编译方式:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。不确定的有限自动机(NFA):对每一个状态来说识别字符后转移的状态是不确定的。
2023-06-13 16:59:38
70
原创 LeetCode:汉明距离
题目来源:https://leetcode-cn.com/problems/hamming-distance/两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。通过异或相同为0不同为1的特性可以得到temp,temp中位置为1的代表是他们不同的位置,通过判断temp中1的个数即可知道两个数字对应二进制位不同的位置的数目class Solution { public static int hammingDistance(int
2021-04-10 22:05:19
63
原创 解决Tomcat乱码
解决Tomcat乱码1.在32位的idea.exe.vmoptions和64位的idea64.exe.vmoptions启动项配置文件下添加了下面-Dfile.encoding=UTF-8` `-Dconsole.encoding=UTF-82.tomcat目录下conf目录下的自己的server.xml文件中添加了一个配置3.修改 tomcat 下的 logging.properties这个文件 为 GBK 就好了。 #java.util.logging.ConsoleHandler.enc
2021-03-21 11:07:55
84
原创 freemarker嵌套
<#include "/inc/header.ftl" />直接引进inc下header.ftl的内容<#macro layout title> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>${title}</title> <meta name="view
2021-02-19 17:48:36
736
原创 SpringBoot解决跨域问题
/** * 解决跨域问题 */@Configurationpublic class WebMvcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { // SpringBoot2.4.0以上使用[allowedOriginPatterns]代替[allowedOrigins] registry.addMapp
2021-01-26 01:00:51
576
2
原创 springbootboot2.x结合thymeleaf使用delete请求
...... <main role="main" class="col-md-9 ml-sm-auto col-lg-10 pt-3 px-4"> <h2><a class="btn btn-sm btn-success" th:href="@{/emp}">添加员工</a></h2> <div class="table-responsive"> <table class="table ta
2020-12-06 22:12:27
387
原创 springboot 2.x的put提交表单方式
举例说明:html页面<form th:action="@{/updateEmp}" method="post"><!--发送put请求修改数据,由于form表单不支持put请求,所以需要加下面这句--><input type="hidden" name="_method" value="put"><input type="hidden" name="id" th:value="${employee.id}">controller层 @PutM
2020-12-06 21:35:32
199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人