- 博客(139)
- 收藏
- 关注
原创 SpringBoot整合ssm——图书管理系统
在本机mysql中建立一个名为:ssm_db 数据库:数据库建表:tbl_book初始一下测试用的数据: 新建项目: 选择导入SpringWeb的起步依赖: 选择导入:Mysql和Mybatis的起步依赖: service :在类路径下的resources包新建application.yml文件: 在domain包下编写Book类,其属性与数据库中的book_tbl的属性一一对应,代码如下: 在dao包下编写BookDao类,其提供对数据库直接进行操作的方法,代码如下:
2025-01-20 17:21:36
889
原创 SpringBoot整合mybatis
在 com.example.domain 包下定义实体类 Book ,内容如下return id;在 com.example.dao 包下定义 BookDao 接口,内容如下@Mapper在 test/java 下定义包 com.example ,在该包下测试类,内容如下@Autowired@Test。
2025-01-19 15:03:35
446
原创 SpringBoot整合junit
在 com.example.service.impl 包写创建一个 BookServiceImpl 类,使其实现 BookService 接口,内容如下。在 test/java 下创建 com.example 包,在该包下创建测试类,将 BookService 注入到该测试类中。在 com.example.service 下创建 BookService 接口,内容如下。引导类所在包是 com.example。测试类所在包是 com.example。:这里的引导类所在包必须是测试类所在包及其子包。
2025-01-19 13:53:36
556
原创 SpringBoot多级配置文件
有这样的场景,我们开发完毕后需要测试人员进行测试,由于测试环境和开发环境的很多配置都不相同,所以测试人员在运 行我们的工程时需要临时修改很多配置,如下针对这种情况, SpringBoot 定义了配置文件不同的放置的位置;而放在不同位置的优先级时不同的。说明:级别越高优先级越高。
2025-01-18 21:49:19
563
原创 SpringBoot多环境配置
以后在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的。 来回的修改配置会很麻烦,而 SpringBoot 给开发者提供了多环境的快捷配置,需要切换环境时只需要改一个配置即可。不 同类型的配置文件多环境开发的配置都不相同,接下来对不同类型的配置文件进行说明。测试项目结构: 在 application.yml 中使用“ --- ”来
2025-01-17 22:11:27
1067
原创 yaml配置文件中数据的读取
SpringBoot 还提供了将配置文件中的数据封装到我们自定义的实体类对象中的方式。1将实体类 bean 的创建交给 Spring 管理。在类上添加@Component注解2使用注解表示加载配置文件在该注解中也可以使用prefix 属性指定只加载指定前缀的数据3在 BookController 中进行注入具体代码如下:Enterprise 实体类内容如下:@Componentreturn age;return tel;
2025-01-17 13:00:52
829
原创 yaml配置文件的语法格式
YAML(YAML Ain't Markup Language)是一种数据序列化语言,旨在以一种人类可读的方式来表示数据结构。
2025-01-17 11:52:01
363
原创 SpringBoot工程快速启动
以后我们和前端开发人员协同开发,而前端开发人员需要测试前端程序就需要后端开启服务器,这就受制于后端开发人员。为了摆脱这个受制,前端开发人员尝试着在自己电脑上安装 Tomcat 和 Idea ,在自己电脑上启动后端程序,这显然不现 实。我们后端可以将 SpringBoot 工程打成 jar 包,该 jar 包运行不依赖于 Tomcat 和 Idea 这些工具也可以正常运行,只是这个 jar 包在运行过程中连接和我们自己程序相同的 Mysql 数据库即可。
2025-01-15 21:17:48
485
原创 Spring官网构建Springboot工程
注意:基于Idea的 Spring Initializr 快速构建 SpringBoot 工程时需要联网。
2025-01-15 20:59:50
264
原创 IDEA 内置的 Spring Initializr 创建 Spring Boot 新项目时无法使用JDK8?
是因为 Spring Boot 官方不再支持 Spring Boot 的 2.x 版本了,之后全力维护 3.x;不使用官方提供的 Spring Initializr 来初始化项目,可以使用阿里云提供的脚手架镜像(https://start.aliyun.com/),依旧可以继续使用JDK8。在 IDEA 里更改 Server URL 即可:https://start.aliyun.com/可以看到IDEA在创建Springboot项目时无法使用jdk8了。
2025-01-15 20:03:12
1306
原创 4.最佳归并树——优化多路归并
上回说到通过置换选择排序通过有限的内存工作空间初始化了更长的归并段,但是这些归并段并不是等长的,那么对这些归并段进行归并时的磁盘的读写次数是什么样的呢?假设现在有四个不等长的归并段:R1R2R3R4R525162随便两两进行二路归并,画出其归并树:我们计算一下其需要读写的次数是分别都是:6+8+14+16=44次;
2024-11-21 17:49:41
684
原创 3.置换选择排序-优化初始归并段
设初始待排文件为FI,初始归并段输出文件为FO,内存工作区为WA,FO和WA的初始状态为空,WA可容纳w个记录。6)重复3)~5),直至在WA中选不出新的MINIMAX记录为止,由此得到一个初始归并段,输出一个归并段的结束标志到FO中去。5)从WA中所有关键字比MINIMAX记录的关键字大的记录中选出最小关键字记录,作为新的MINIMAX记录。在有限的内存工作空间中,通过增大初始归并段的长度来减少初始归并段的数量,从而使多路归并的趟数减少。2)从WA中选出其中关键字取最小值的记录,记为MINIMAX记录,
2024-11-21 17:47:25
229
原创 2.败者树
这大大减少了比赛的次数,败者树不像胜者树一样一眼就可以看到每场比赛的获胜者,而是当一个冠军选拔出之后,新来的队伍很轻易的可以通过结点找到上一次的败者,只需要和上次的败者打完就可以决出下一个冠军。k个叶结点分别对应 k个归并段中当前参加比较的元素,非叶子结点用来记忆左右子树中的“失败者”,而让胜者往上继续进行比较,一直到根结点。除了第一次构造败者树时需要比较k-1次,根据最小的元素根据冠军结点中存取的最小数据项所在的归并段号将最小元素输出后,决出下一个冠军只需要比较[log2k]就好。构造一棵完全二叉树。
2024-11-21 17:45:21
379
原创 1.多路归并
将磁盘块读入内存缓存区时就将磁盘块内的数据进行内部排序好,接着归并到输出缓冲区生成归并段。注:按照本节介绍的方法生成的初始归并段,若共 N 个记录,内存工作区可以容纳L个记录,读写外存时间肯定占大头,故此我们只要优化了归并的趟数就可以减少读写外存的时间。对r个初始归并段,做K路归并,则归并树可用K叉树表示;①k路归并时,需要开辟k个输入缓冲区,内存开销增加。若树高为h,则归并趟数=h-1=[logkr]K越大,r越小,归并趟数越少,读写磁盘数越少。内部排序的时间和内部归并的时间由CPU决定;
2024-11-21 17:42:37
363
原创 红黑树(Red-Black Tree)
二叉搜索树在一般情况下,均可以以O(log n)的效率高效的维护查找,插入,删除这三个操作; 但是当数据本来就有序的极端情况下就会使得构建的二叉搜索树变成链表的状态,使得效率退化成O(n); 而平衡二叉树(AVL树)通过旋转的操作时刻使二叉搜索树保持平衡的状态以位置最佳的效率,从而避免二叉搜索树出现向上的极端情况; 而红黑树和AVL树一样都是一种二叉搜索树,是对二叉搜索树的平衡的另一种思想。 前提是其为二叉搜索树,也即左子树
2024-10-26 22:53:55
509
原创 B+树(B树的改进)
B+树是一种改进自B树的数据结构,它可以在数据文件中快速地查找数据,也可以通过多级索引结构加速查询速度。B+树的每个叶子节点都包含关键字和对应的记录指针,而非叶子节点则用于快速定位关键字。B+树可以进行顺序查找和随机查找,同时还可以结合两者进行范围查找。它是一种常用于数据库索引的数据结构。
2024-10-26 22:50:34
652
原创 1.散列查找
选择合适的散列函数h(key),散列法的查找效率期望是常数O(1),它几乎与关键字的空间的大小n无关!也适用于关键字直接比较计算量大的问题;它是以较小的α为前提。因此,散列方法是一个以空间换时间的方法;散列方法的存储对关键字是随机的,不便于顺序查找关键字,也不适合于范围查找,或最大值最小值查找。对于开放地址法来说:1.散列表是一个数组,存储效率高,随机查找。2.散列表会存在“聚集”现象。3.关键字删除需要“懒惰删除”法,从而产生存储“垃圾”。
2024-10-24 11:51:42
1260
原创 6.快速排序
由于每次划分后pivot的位置一定是最后排序好的正确位置,所以对的上的就是pivot,但是由于77左右的序列不符合“所有比枢轴小的元素在枢轴左边,所有比枢轴大的元素在枢轴右边”的原则,所以选81。这个基准可以是数组的第一个元素、最后一个元素或随机选择的元素。:遍历数组,将比基准小的元素移动到基准的左边,比基准大的元素移动到基准的右边。:当左右指针相遇时,将基准元素放在指针的位置,这样基准左侧都是比它小的元素,右侧都是比它大的元素。第一次划分后,所有比枢轴小的元素在枢轴左边,所有比枢轴大的元素在枢轴右边。
2024-10-24 09:34:09
1018
原创 高级语言源程序转换为可执行目标文件
将高级语言源程序转换为可执行目标文件的过程通常包括以下几个主要步骤: 1. 预处理(Preprocessing) • 宏替换:将宏定义替换为具体的代码。 • 文件包含:将包含的头文件内容插入到源文件中。 • 条件编译:根据条件编译指令选择性地编译代码片段。 2. 编译(Compilation) • 词法分析:将源代码分解为记号(tokens)。 • 语法分析:根据语法规则构建语法树(parse tree)。 • 语义分析:检查语法树的语义正确性。 • 中间代码生成:将语法树转换为中间代码(通
2024-10-19 18:45:13
889
原创 算数表达式的存储
• 若优先级小于等于栈顶运算符时,将栈顶运算符弹出并输出;再比较新的栈顶运算符,直到该运算符大于栈顶运算符优先级为止,然 后将该运算符压栈;【2019 统考真题】用有向无环图描述表达式(x+y)((x+y)/x),需要的顶点个数至少是(5)。将栈顶的运算符弹出并输出,直到遇到左括号(出栈,不输出);3. 最后,堆栈顶上的元素就是表达式的结果值。有向无环图表示的表达式,图的形态是不唯一的。2.该运算左边的运算是二叉树的左子树;3.该运算右边的运算是二叉树的右子树。,则把堆栈中存留的运算符一并输出。
2024-10-16 17:17:43
628
原创 图的应用——最短路径
BFSDijkstraFloyd用途求单源最短路径求单源最短路径求各项点之间的最短路径无权图适用适用适用有权图不适用适用适用带负权值的图不适用不适用适用带负权回路的图不适用不适用不适用时间复杂度O(|v|^2)或O(|v|+|e|)O(|v|^2)O(|v|^3)
2024-10-16 12:57:12
937
原创 图的应用——关键路径
它表示项目中各个活动之间的依赖关系和时间要求,帮助确定项目的关键路径,并计算出完成项目的最短时间。事件v的最迟开始时间:定义在不影响整个工程进度的前提下,事件v必须发生的时间称为v的最迟开始时间(late event),记作le(v)。顶点表示事件,有向边表示活动,边e的权c(e)表示完成活动e所需的时间(比如天数)。对于每个活动a,求出d(a)=l(a)-e(a),若d(a)为0,则称活动a为关键活动。最早开始时间等于最晚开始时间的就是关键活动,所有关键活动的路径就是关键路径。
2024-10-15 15:53:35
1115
原创 图的应用——最小生成树
求右侧带权图的最小(代价)生成树时,可能是克鲁斯卡(Kruskal)算法第2次选中但不是普里姆(Prim)算法(从v4开始)第2次选中的边是( )在无向图中求一颗树(n-1条边,无环,连通所有点,而且这棵树的边权和最小。点越多,效率越低,多少边不影响该算法效率,该算法相较下更适用于稠密图。边越多,效率越低,多少点不影响该算法效率,该算法相较下更适用于稀疏图。每次挑选最小的不在已有的同一个连通分量中的边加入进去。(V1,V3) 或 (V3,V4) 或。(V1,V3) 或 (V3,V4)故答案是(V2,V3)
2024-10-15 09:25:16
530
原创 KMP算法
NEXT[0] 通常初始化为 -1。如果,则,同时递增i和j。如果不匹配,且j > 0,回退到NEXT[j-1],否则。NEXT数组的构建时间复杂度是 O(m),其中 m 是子串的长度。代码演示:// 注意i从1开始,j从0开始// next数组的第一个值为0j++;i++;
2024-10-12 17:27:27
3955
原创 树,二叉树和森林的遍历
2.先序遍历中根节点的下一个必定是整个树的左子树的根结点,在中序遍历中找到左子树的根结点,其左边是左子树的左子树,其右边是左子树的右子树。1.后序遍历的最后一个必然是整棵树的根结点,在中序遍历中找到根节点,其左边的所有是左子树,右边的所有是右子树。其实同二叉树的遍历一样,先序和后序遍历过程中经过的结点路线都一样,只不过是访问该结点的时机不同而已。1.先序遍历的第一个必定是整个树的根节点,在中序遍历中找到根结点,根结点左边是左子树,右边是右子树。先序都一样,二叉树的中序对应树与森林的后序遍历。
2024-10-10 16:33:47
746
原创 树,森林与二叉树的转换
由于树转换为二叉树后必没有右子树,所以将森林中的每棵树先转化为二叉树后,再将第二颗树转换为的二叉树作为第一棵树转换为的二叉树的右子树。从物理结构上看,树的孩子兄弟表示法与二叉树的二叉链表表示法其实是相同的,因此对一个物理结构的不同解释就可以将一棵树转换为二叉树了。将二叉树的右链断开后,根结点及其左子树作为森林中的第一棵树;2.每棵树的根可以视为兄弟,在每颗树的根之间连线;1.每个结点的左指针指向它的第一个孩子;由于根节点没有兄弟,所以树转换为二叉树后。1.将森林中的每棵树转换为对应的二叉树;
2024-10-10 12:20:43
516
原创 树的存储结构
又称二叉树表示法,即以二叉链表作为树的存储结构。孩子兄弟表示法使每个结点包括三部分:指向第一个孩子结点的指针域,该结点的结点值,兄弟结点的指针域(沿此域可以找到该结点的所有兄弟结点)。采用一组连续空间来存储每个结点,同时每个结点总增设一个伪指针,指向其父结点在数组中的位置。找儿子简单,找爹难(要是不设额外的父结点指针的话),优点是利于树转换为二叉树的操作。将每个结点的孩子们存在一张线性表中,以单链表为存储结构;好查父结点,不好查儿子结点(需要遍历整个数组)。好查儿子结点,不好查父结点(需要遍历孩子链表)。
2024-10-10 10:11:48
516
原创 四、网络层(下)
检查ARP告诉缓存,有时对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中的所有主机都能收到该请求。当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点传输方式。目前广泛应用的IPV4地址是上世纪70年代的产物,互联网的飞速发展,到2011年二月,IPV4地址已经耗尽,为了解决这个问题,有以下三种措施。
2024-10-03 10:40:17
1344
原创 四.网络层(上)
主要任务是把分组从源端传送到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。1.路由选择与分组转发【最佳路径】2.异构网络互联3.拥塞控制若所有节点都来不及接收分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞。我们知道,网络层的一个主要设备就是路由器,而路由器的主要功能就是进行分组转发和路由选择。为了完成这些功能,路由器就需要进行维护自身的一张路由表。而维护这张路由表的方法就是路由算法。
2024-10-03 10:25:06
819
原创 三、数据链路层(下)
互联网=通过路由协议联通的N个局域网。局域网=以太网+TCP/IP协议。以太网=基于广播(MAC寻址)和碰撞检测机制 CSMA/CD 的网络。
2024-10-02 17:17:09
1158
原创 三、数据链路层(上)
结点:主机,路由器链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线,光纤和微波,分为有线线路和无线线路。数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。帧:链路层的协议控制单元,封装网络层数据报。数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。1.累计确认(偶尔捎带确认)2.接收方只按序接收帧,不按序无情丢弃3.确认序列号最大的,按序到达的帧4.发送窗口最大为2n-1,接收窗口大小为1。
2024-10-02 14:56:04
1691
原创 六.应用层
如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。目前由于http协议的数据是未加密的,安全性的得不到保障,大多数的http转为了htttps,是将传输层使用的TCP转为了SSL,SSL是TCP的加强版,SSL不仅可以做TCP所做的一切,而且提供了安全性服务。给本地DNS服务器。
2024-10-02 14:12:45
1096
原创 五.运输层
只有主机才会有的层次。1.传输层提供进程和进程之间的逻辑通信。2.复用和分用。3.传输层对收到的报文进行差错检错。【传输层的接收到的报文就是网络层的数据报的数据部分,网络层检验了报文首部,这样只需要让运输层检验报文就好。4.传输层的两种协议。【UDP,TCP】
2024-10-02 14:08:12
1227
原创 二.物理层
传输介质也称传输媒体/传输媒介,它是数据传输系统中在发送设备和接收设备之间的物理通路。(友情提示:信道是逻辑通路)传输媒体并不是物理层。传输媒体在物理层下面,因为物理层属于结构体系的第一层,因此有时也称传输媒体为第0层。在传输媒体中传输的是信号,但传输媒体并不知道所传输的信号代表什么意思。但物理层规定了电气特性,因此能够识别说传送的比特流。【物理层是傻瓜,传输介质比傻瓜还傻。
2024-10-02 14:02:16
1094
原创 一、计算机网络体系结构
这一层解决了从物理层接收的原始比特流中的错误,提供了错误检测和纠正机制(如CRC校验),地址解析(MAC地址),以及流量控制和帧同步。(1)TCP/IP协议模型只有4层(数据链路层,网络层,传输层,应用层),而OSI参考模型有7层(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层)。相当于OSI模型的会话层、表示层和应用层,包含所有高级协议,如HTTP、FTP、SMTP等,直接为用户的应用程序提供服务。相当于OSI模型的物理层和数据链路层,负责物理接口的细节和数据链路层的传输。
2024-10-02 13:52:35
1769
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人