- 博客(82)
- 收藏
- 关注
原创 【JavaEE】(17) MyBatis 基础
namespace 表示要实现哪个接口(全限定名)。</mapper>加入 MyBatisX 插件,自动生成部分 xml 代码:方法名最好以功能命名,如 select,便于自动生成代码。
2025-08-20 20:29:38
555
原创 【JavaEE】(15) Spring Boot 的配置文件
微信上的字体是可以调整的,因此肯定不是硬编码固定了字体大小。字体调整就是修改了配置文件中的字号部分,手机应用程序通过读取配置文件来一些。在 Spring Boot 项目中同样需要配置文件:比如项目启动的端口号冲突需要修改端口号、连接不同的数据库需要对应的用户和密码信息,等。以端口号为例,我们启动了一个 Spring Boot 项目,Timcat 的默认端口号是 8080。此时需同时启动另一个项目,默认端口号也是 8080,因为 8080 已被占用就无法启动。就需要在因此,我们要学会配置文件的使用。
2025-08-18 13:27:44
701
原创 【JavaEE】(14) Spring IoC 和 DI
DI (Dependency Injection) 就是依赖注入,通俗讲,就是依赖赋值(把对象从容其中取出来使用)。而 Spring DI 就是 Spring 实现的 DI。
2025-08-17 02:17:25
778
原创 【JavaEE】(13) Spring Web MVC 入门
但是现在为了提高开发效率,Spring Web 中直接没有 View 这一部分了,View 是前端的任务,我们负责的只是 Controller 和 Model:浏览器访问一个地址,能够调用我们的 Sring 程序。获取到浏览器传入的参数。执行业务逻辑后,把结果返回给浏览器。HTTP 协议是“无状态”的,即没有记忆,客户端和服务器的通信数据,在下一次是记不住的。我们就可以用Cookei/Session 搭配,让 HTTP 协议能够将多次的通信联系起来。
2025-08-16 17:25:14
799
原创 【JavaEE】(12) 创建一个 Sring Boot 项目
Spring Boot 是对 Spring(Spring Framework) 的进一步包装,另外还增加了其它功能,比 Spring 更好用。Web 服务器就是对 http 协议进行了包装,不需要我们去实现包装请求/响应等操作,我们只需要把程序放到 Web 服务器运行即可。目前常用的 Web 服务器就是 Tomcat,由于 Sring Boot 内置了 Tomcat,所以我们不需要单独配置Tomcat。Tomcat 的端口号是 8080,所以访问我们的程序的端口号也是8080。
2025-08-11 19:59:05
1075
原创 【JavaEE】(11) 前端基础三件套
超文本(超过文本,内容可以是视频、图片、音频、链接等)标记语言(用不同标签来包含不同类型的内容)。标签通常是一对,少部分单个,开始标签中可以带属性。比如 id:标识该标签唯一身份。标签层次结构,构成 Dom 树,每个标签就是一个元素:在 VS Code 里创建一个 html 文件,!+Enter。
2025-08-09 22:29:51
726
原创 【JavaEE】(10) JavaEE 简介
原生代码里面有很多重复、低效的内容,比如 JDBC 中:连接数据库、发送 SQL 语句、得到数据库执行结果,处理结果、关闭连接。比如网络通信中:创建连接、构造请求报文、发送请求、接收响应报文、解析响应。手动编写这些固定的流程代码,不仅易出错,还低效。框架就是把这些重复复杂的代码封装起来,我们只需要调用框架提供的接口,几行代码就能实现同样的功能。
2025-08-08 14:52:09
202
原创 【JavaEE】(9) JVM
GC 就是垃圾回收机制,减少程序员的工作量,避免内存泄漏自动回收不再使用的内存空间。像 C/C++ 追求高性能,没有 GC 机制(GC 时,其它的线程暂停工作,导致 STW(stop the world)问题),动态申请内存空间后需要手动释放,在释放前可能会有 return、抛出异常的逻辑,导致最后没有释放,造成内存泄漏。
2025-08-07 16:50:32
805
原创 【JavaEE】(8) 网络原理 HTTP/HTTPS
上节说到,应用层的协议需要约定通信的内容和数据格式。我们可以自定义应用层协议,也可以基于现成的应用层协议进行开发。协议的种类很多,最常见的之一就是 HTTP,广泛用于网站和手机 App。准确来说,现在大多使用的是 HTTPS 协议,它在 HTTP 协议上加了安全层。Ps:HTTP 本身不限定数据格式,具体数据格式由应用决定,并通过协议中的 Content-Type 告知。之前学习的 TCP、UDP、IP、以太网……都是基于二进制格式的协议(格式按照 xxx 个字节来安排)。HTTP 是“”,是基于。
2025-08-06 08:58:40
728
原创 【JavaEE】(7) 网络原理 TCP/IP 协议
三次握手,传输的是没有带载荷(业务数据)的数据报,通过双方互相同步(synchronized,通知)、应答的方式建立可靠的连接。关键流程:三次握手,必定是客户端先发起请求,建立连接。客户端发起一个同步报文(syn):告诉服务器,我要跟你建立连接,请你保存我的信息。服务器返回一个应答报文(ack):回应客户端:收到,我会保存。服务器也发起一个同步报文(syn):到苏客户端,我也要和你建立连接,请你保存我的信息。客户端也返回一个应答报文(ack):回应服务器:收到,我会保存。
2025-07-31 22:58:51
853
1
原创 【JavaEE】(6) 网络编程套接字
这一章节主要讲网络编程实现跨主机通信,我们在应用层写程序需要关心的是),因为传输层到物理层已经由操作系统实现。网络通信数据报(UDP)/包(IP)/帧(数据链路层协议)/段(TCP),我们不深究,只有做学术研究时才这么严谨。传输层涉及到和,提供了。TCP 与 UDP 的各种词的。
2025-07-02 09:45:03
704
原创 【JavaEE】(5) 网络原理的基础认识
在某个时刻,各个主机都在使用网络,导致网络中需要传输的数据量非常大,当超过设备能承受的传输上线,就会丢包(直接丢弃数据。比如玩游戏点击使用装备,展示特效时卡了一下,恢复时直接显示的使用装备状态,如果不丢包,数据在后面又传输过来,就会产生“先使用装备,再展示特效”的违背期望顺序的效果)。)、“电信号”(网线,通过高低电平表示0/1)、“电磁波”(wifi,通过不同频率表示0/1)。用一个协议解决网络通信,非常复杂,因此需要拆分为多个协议,即。,并约定协议与协议之间的调用关系(上层调用下层)。
2025-06-24 19:42:06
505
原创 【JavaEE】(4) 文件操作和IO
计算机中,文件保存在硬盘上,但是在程序中直接操作硬盘很复杂,操作系统就,编程时,我们只需要操作接口。操作系统通过文件管理器管理文件,所有文件构成一个 N 叉树结构:所以可以通过描述一个文件的位置。对于每一级目录,windows 系统用 /(斜杠)、\(反斜杠)来划分;Linux、MacOS、Android 等用 / 划分。有和,相对路径是。表示当前目录,表示上一级目录。
2025-06-24 11:19:45
596
原创 【JavaEE】(3) 多线程2
addtress 是内存地址,expectValue、swapValue 是两个寄存器存放的值。内存的值跟寄存器1的值相等,就将内存的值跟寄存器2的值交换(因为我们只关心内存的值,所以直接将寄存器1的值赋值给内存),并返回 true。如果不相等就返回 false。这些逻辑是由一条 CPU 指令完成的,意味着它是原子的。操作系统封装了这个指令为系统API,Java 又封装了系统API 为unsafe 包里的操作,比较底层,可能不安全。
2025-06-19 19:13:16
1038
1
原创 【JavaEE】(2) 多线程1
单线程中不存在的问题在多线程中发生。即程序执行结果与预期不一致。观察下面的程序运行结果:执行结果小于 1w。因为 count++不是原子的load:把数据从内存加载到寄存器。add:把寄存器中的数据 + 1。save:把计算结果从寄存器保存到内存。而线程的调度是随机的,那么上面的程序就有很多种指令执行顺序:等等。比如下面的顺序,加了 2 次,最终结果却是 1:所以程序执行结果是一个小于 1w 的数。同样具有队列 “先进先出” 的特性,额外带有阻塞功能。
2025-06-15 20:44:23
823
原创 【JavaEE】(1) 计算机如何工作
图灵提出了通用计算机理论。 冯诺依曼带领团队研发出通用计算机雏形,提出冯诺依曼体系结构。 现代计算机的显卡、电源、散热器等都是后来逐渐演化出的。 代码都是在 CPU 上运行的,因此 CPU 是程序员最需要关心的部件。 任务管理器 >> 性能。 这个是我电脑 CPU 的实时频率,任务多速度就慢点,任务少速度就快点。频率越高,代表 CPU 一秒内运算的次数越多。10 Hz 表示一秒钟运算10次,1 GHz = 10亿 Hz。
2025-05-22 22:00:49
1147
原创 【MySQL】(11) 索引
在 MySQL 中,若用 InnoDB 存储引擎,.idb 文件就是存储一个表的数据和索引信息的文件。数据以页为单位进行存储,也是内存与磁盘交互的最小单元,每次至少读取一页,16KB。页内的地址是连续的时间局部性:当前访问的数据,很有可能再次被访问。空间局部性:很有可能访问当前访问数据的邻近位置的数据。若下次查询的数据在当前页中,就直接从内存读取,减少访问磁盘,提高性能。
2025-05-14 15:09:10
737
原创 【MySQL】(10)用户和权限管理
通常一个应用对应一个数据库,我们希望某个数据库只能被相关人员操纵,就需要创建用户并指定权限。只有登录该用户,才能在权限范围内操纵数据库。root 是权限最高的用户,它拥有所有的权限。
2025-05-08 19:31:22
1014
原创 【MySQL】(8) 联合查询
由于范式的规则,数据分到多个表中,想要,就需要联合查询多张表。比如查询学生的学生信息和所在班级的信息,就需要联合查询学生表和班级表。
2025-04-25 10:59:14
916
原创 【MySQL】(7) 数据库设计
数据表的列不可再分,即能用 MySQL 中的基本数据类型定义。满足第一范式是关系型数据库的基本要求。在第一范式的基础上,不存在非关键字段对候选键的部分函数依赖。候选键就是可以唯一标识数据行的列(可以选作主键)或多个列(可以选做复合主键,里面的所有列都是候选键)。部分函数依赖某些非关键字段只依赖部分候选键,与其它候选键无关系)存在于有复合主键的表中。在第二范式的基础上,不存在非关键字段对任意候选键的传递依赖。
2025-04-22 15:50:33
773
原创 【MySQL】(6) 数据库约束
就是自动对数据、表间关联关系的正确性校验,一般在列上加约束。 限制数据值不能为 null,比如学生姓名: 限制数据值唯一,比如 id: 但是 unique 限制的 id 可以有重复的 null: 限制数据唯一且不为空,可以由一个或多个列组成,用于唯一标识数据行,建议每个表都有一个主键,但一个表最多只能有一个主键,最多只能有一个 auto_increment 列,主键类型建议为 bigint。 插入数据: 当插入失败时(比如设
2025-03-16 18:14:49
1009
原创 【MySQL】(4) 表的操作
语法:示例:生成的数据目录下的文件:语法:示例:语法:删表是危险操作,尽量别用。 .sql 脚本: 查询客户端工具: 或: 补充,三种注释: 出现错误: 原因,客户端和服务器的字符集不匹配: 客户端连接服务器时,指定默认字符集与服务器一致: 脚本执行成功: 如果不想每次连接服务器,都设置字符集: 方法1:使用 MySQL 自带的 Unicode 命令行客户端:
2025-03-09 19:08:03
354
原创 【MySQL】(1) 数据库基础
就是采用关系模型(二维表)组织数据,一个关系型数据库就是由二维表之间的关系组成的数据组织。为什么要使用多个关系模型,并建立它们之间的关系?直接用一张表存储所有数据行不好吗?比如下面有两张表:想改名尖子1班为清北班,那么只需要更改班级表中的第一栏。和为一张表后:想改名尖子1班为清北班,就需要更改所有是尖子1班的学生信息。显然,这种更改效率极低。SQL 就是结构化查询语言的简称,用于存取、查询、更新、数据,管理数据库。DDL:数据定义语言,数据库级别。与开发强相关。
2025-02-27 20:36:09
768
原创 【MySQL】数据库安装
mysql 是开源的,完全免费。mysql 安装之前,防止后续安装出现问题:此电脑 >> 管理 >>运行安装包:设置过滤器,显示所有可以安装的组件:初学者最多安装这4个组件,其它的目前用不到:设置安装路径:next >> excute,开始安装组件 >> next,安装完成。
2025-02-27 19:59:58
935
原创 【数据结构】(12) 反射、枚举、lambda 表达式
一组常量,比如颜色,它们是同一类,我们想把这组常量组织在一起,就用枚举。作用是与没有意义的数字区分开来(如果定义一组常量,就要用数字表示它们)。break;默认继承了 java.lang.Enum。相当于方法,但是比方法更简化。(形参列表)->表达式(形参列表)->{代码块}// 参数类型可以省略(要省全都省),只有一个参数可以省略圆括号。// 返回一个值或者不返回值。
2025-02-23 20:59:53
1346
原创 【数据结构】(11) Map 和 Set
左子树所有结点小于根结点。右子树所有结点大于根结点。所有子树都满足以上条件。通过哈希函数,输入 key 计算 value 的存放位置,通过这种哈希方法构造的结构就叫哈希表(散列表)。因为只需要计算一次哈希函数,所以删除、插入、搜索操作都是O(1)。不同的 key,通过哈希函数,得到相同的映射。哈希冲突是必然发生的,我们需要尽可能降低哈希冲突发生的概率。通过扩容代码得知,调用无参构造方法,第一次 put 添加元素,会分配 16 大小的内存。通过扩容代码得知,正常扩容的情况,每次 2 倍扩容。
2025-02-23 15:35:39
1053
原创 【数据结构】(10) 排序算法
冒泡排序在C语言部分学过,堆排序上一章学过,还剩五种常见排序算法。以下默认从小到大排序。:相同元素在排序过后,前后相对位置依旧不变。一个本身稳定的排序,可以改成不稳定的;但一个本身不稳定的排序,无法改为稳定的。
2025-02-18 14:00:05
920
原创 【数据结构】(9) 优先级队列(堆)
堆也是一种数据结构,是一棵完全二叉树,该完全二叉树中的所有子树的根都大于其孩子,即大根堆;如果都小于其孩子,就是小根堆。
2025-02-15 01:03:48
808
原创 【数据结构】(7) 栈和队列
队列也是一种特殊的顺序表,但只能在固定的一端(队尾,tail/rear)入队,另一端(队头,head/front)出队,具有先进先出的特点。
2025-02-08 23:16:03
1481
1
原创 【数据结构】(6) LinkedList 链表
不同点LinkedListArrayList物理存储上不连续连续随机访问效率O(N)O(1)插入、删除效率O(1)O(N)
2025-02-06 06:16:22
1132
原创 【数据结构】(5) ArrayList 顺序表
ArrayList 就是数组的封装,但是数组只有 [] 操作存取值,和 .length 操作获取数组内存长度;
2025-02-03 23:47:06
851
原创 【数据结构】(4) 线性表 List
List 是Java 中的线性表,但它只是一个接口,说明了线性表应该实现的方法,并不能实例化。List 是泛型的。
2025-02-03 18:39:55
462
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人