自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 【JavaEE】(17) MyBatis 基础

namespace 表示要实现哪个接口(全限定名)。</mapper>加入 MyBatisX 插件,自动生成部分 xml 代码:方法名最好以功能命名,如 select,便于自动生成代码。

2025-08-20 20:29:38 555

原创 【JavaEE】(16) Spring Boot 日志

提供一个统一的接口,来操作所有子系统的接口,便于操作子系统。

2025-08-18 22:13:54 1081

原创 【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】(13) JDBC 编程

一些。

2025-05-20 15:46:55 694

原创 【MySQL】(12) 事务

作用域分为全局作用域(新建连接会读取全局参数和会话作用域(只对当前客户端连接生效。

2025-05-18 14:06:25 713

原创 【MySQL】(11) 索引

在 MySQL 中,若用 InnoDB 存储引擎,.idb 文件就是存储一个表的数据和索引信息的文件。数据以页为单位进行存储,也是内存与磁盘交互的最小单元,每次至少读取一页,16KB。页内的地址是连续的时间局部性:当前访问的数据,很有可能再次被访问。空间局部性:很有可能访问当前访问数据的邻近位置的数据。若下次查询的数据在当前页中,就直接从内存读取,减少访问磁盘,提高性能。

2025-05-14 15:09:10 737

原创 【MySQL】(10)用户和权限管理

通常一个应用对应一个数据库,我们希望某个数据库只能被相关人员操纵,就需要创建用户并指定权限。只有登录该用户,才能在权限范围内操纵数据库。root 是权限最高的用户,它拥有所有的权限。

2025-05-08 19:31:22 1014

原创 【MySQL】(9) 视图

视图是一张,是。它本身不像基础表(物理表)一样存储数据,而是将 SQL 查询语句包装起来,通过。

2025-04-29 13:38:52 955 1

原创 【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】(5) 数据行的增删改查操作

就是对数据库中(一行)的增删改查。

2025-03-16 15:19:01 1085

原创 【MySQL】(4) 表的操作

语法:示例:生成的数据目录下的文件:语法:示例:语法:删表是危险操作,尽量别用。 .sql 脚本: 查询客户端工具: 或: 补充,三种注释: 出现错误: 原因,客户端和服务器的字符集不匹配: 客户端连接服务器时,指定默认字符集与服务器一致: 脚本执行成功: 如果不想每次连接服务器,都设置字符集: 方法1:使用 MySQL 自带的 Unicode 命令行客户端:

2025-03-09 19:08:03 354

原创 【MySQL】(3) 数据类型

同一个东西,在不同领域中有不同的叫法:定义实体的属性,取名+指定数据类型,本文讲数据库中的数据类型。

2025-03-04 18:04:13 977

原创 【MySQL】(2) 库的操作

SQL 关键字,大小写不敏感。

2025-03-01 12:01:09 438

原创 【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

原创 【数据结构】(8) 二叉树

树的度为2。子树有左右之分,不能颠倒。

2025-02-12 22:38:06 1369 1

原创 【数据结构】(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关注的人

提示
确定要删除当前文章?
取消 删除