- 博客(66)
- 收藏
- 关注
原创 【JavaEE】(1) 计算机如何工作
图灵提出了通用计算机理论。 冯诺依曼带领团队研发出通用计算机雏形,提出冯诺依曼体系结构。 现代计算机的显卡、电源、散热器等都是后来逐渐演化出的。 代码都是在 CPU 上运行的,因此 CPU 是程序员最需要关心的部件。 任务管理器 >> 性能。 这个是我电脑 CPU 的实时频率,任务多速度就慢点,任务少速度就快点。频率越高,代表 CPU 一秒内运算的次数越多。10 Hz 表示一秒钟运算10次,1 GHz = 10亿 Hz。
2025-05-22 22:00:49
1091
原创 【MySQL】(11) 索引
在 MySQL 中,若用 InnoDB 存储引擎,.idb 文件就是存储一个表的数据和索引信息的文件。数据以页为单位进行存储,也是内存与磁盘交互的最小单元,每次至少读取一页,16KB。页内的地址是连续的时间局部性:当前访问的数据,很有可能再次被访问。空间局部性:很有可能访问当前访问数据的邻近位置的数据。若下次查询的数据在当前页中,就直接从内存读取,减少访问磁盘,提高性能。
2025-05-14 15:09:10
714
原创 【MySQL】(10)用户和权限管理
通常一个应用对应一个数据库,我们希望某个数据库只能被相关人员操纵,就需要创建用户并指定权限。只有登录该用户,才能在权限范围内操纵数据库。root 是权限最高的用户,它拥有所有的权限。
2025-05-08 19:31:22
930
原创 【MySQL】(8) 联合查询
由于范式的规则,数据分到多个表中,想要,就需要联合查询多张表。比如查询学生的学生信息和所在班级的信息,就需要联合查询学生表和班级表。
2025-04-25 10:59:14
897
原创 【MySQL】(7) 数据库设计
数据表的列不可再分,即能用 MySQL 中的基本数据类型定义。满足第一范式是关系型数据库的基本要求。在第一范式的基础上,不存在非关键字段对候选键的部分函数依赖。候选键就是可以唯一标识数据行的列(可以选作主键)或多个列(可以选做复合主键,里面的所有列都是候选键)。部分函数依赖某些非关键字段只依赖部分候选键,与其它候选键无关系)存在于有复合主键的表中。在第二范式的基础上,不存在非关键字段对任意候选键的传递依赖。
2025-04-22 15:50:33
707
原创 【MySQL】(6) 数据库约束
就是自动对数据、表间关联关系的正确性校验,一般在列上加约束。 限制数据值不能为 null,比如学生姓名: 限制数据值唯一,比如 id: 但是 unique 限制的 id 可以有重复的 null: 限制数据唯一且不为空,可以由一个或多个列组成,用于唯一标识数据行,建议每个表都有一个主键,但一个表最多只能有一个主键,最多只能有一个 auto_increment 列,主键类型建议为 bigint。 插入数据: 当插入失败时(比如设
2025-03-16 18:14:49
977
原创 【MySQL】(4) 表的操作
语法:示例:生成的数据目录下的文件:语法:示例:语法:删表是危险操作,尽量别用。 .sql 脚本: 查询客户端工具: 或: 补充,三种注释: 出现错误: 原因,客户端和服务器的字符集不匹配: 客户端连接服务器时,指定默认字符集与服务器一致: 脚本执行成功: 如果不想每次连接服务器,都设置字符集: 方法1:使用 MySQL 自带的 Unicode 命令行客户端:
2025-03-09 19:08:03
339
原创 【MySQL】(1) 数据库基础
就是采用关系模型(二维表)组织数据,一个关系型数据库就是由二维表之间的关系组成的数据组织。为什么要使用多个关系模型,并建立它们之间的关系?直接用一张表存储所有数据行不好吗?比如下面有两张表:想改名尖子1班为清北班,那么只需要更改班级表中的第一栏。和为一张表后:想改名尖子1班为清北班,就需要更改所有是尖子1班的学生信息。显然,这种更改效率极低。SQL 就是结构化查询语言的简称,用于存取、查询、更新、数据,管理数据库。DDL:数据定义语言,数据库级别。与开发强相关。
2025-02-27 20:36:09
747
原创 【MySQL】数据库安装
mysql 是开源的,完全免费。mysql 安装之前,防止后续安装出现问题:此电脑 >> 管理 >>运行安装包:设置过滤器,显示所有可以安装的组件:初学者最多安装这4个组件,其它的目前用不到:设置安装路径:next >> excute,开始安装组件 >> next,安装完成。
2025-02-27 19:59:58
884
原创 【数据结构】(12) 反射、枚举、lambda 表达式
一组常量,比如颜色,它们是同一类,我们想把这组常量组织在一起,就用枚举。作用是与没有意义的数字区分开来(如果定义一组常量,就要用数字表示它们)。break;默认继承了 java.lang.Enum。相当于方法,但是比方法更简化。(形参列表)->表达式(形参列表)->{代码块}// 参数类型可以省略(要省全都省),只有一个参数可以省略圆括号。// 返回一个值或者不返回值。
2025-02-23 20:59:53
1323
原创 【数据结构】(11) Map 和 Set
左子树所有结点小于根结点。右子树所有结点大于根结点。所有子树都满足以上条件。通过哈希函数,输入 key 计算 value 的存放位置,通过这种哈希方法构造的结构就叫哈希表(散列表)。因为只需要计算一次哈希函数,所以删除、插入、搜索操作都是O(1)。不同的 key,通过哈希函数,得到相同的映射。哈希冲突是必然发生的,我们需要尽可能降低哈希冲突发生的概率。通过扩容代码得知,调用无参构造方法,第一次 put 添加元素,会分配 16 大小的内存。通过扩容代码得知,正常扩容的情况,每次 2 倍扩容。
2025-02-23 15:35:39
995
原创 【数据结构】(10) 排序算法
冒泡排序在C语言部分学过,堆排序上一章学过,还剩五种常见排序算法。以下默认从小到大排序。:相同元素在排序过后,前后相对位置依旧不变。一个本身稳定的排序,可以改成不稳定的;但一个本身不稳定的排序,无法改为稳定的。
2025-02-18 14:00:05
886
原创 【数据结构】(9) 优先级队列(堆)
堆也是一种数据结构,是一棵完全二叉树,该完全二叉树中的所有子树的根都大于其孩子,即大根堆;如果都小于其孩子,就是小根堆。
2025-02-15 01:03:48
786
原创 【数据结构】(7) 栈和队列
队列也是一种特殊的顺序表,但只能在固定的一端(队尾,tail/rear)入队,另一端(队头,head/front)出队,具有先进先出的特点。
2025-02-08 23:16:03
1448
1
原创 【数据结构】(6) LinkedList 链表
不同点LinkedListArrayList物理存储上不连续连续随机访问效率O(N)O(1)插入、删除效率O(1)O(N)
2025-02-06 06:16:22
1116
原创 【数据结构】(5) ArrayList 顺序表
ArrayList 就是数组的封装,但是数组只有 [] 操作存取值,和 .length 操作获取数组内存长度;
2025-02-03 23:47:06
830
原创 【数据结构】(4) 线性表 List
List 是Java 中的线性表,但它只是一个接口,说明了线性表应该实现的方法,并不能实例化。List 是泛型的。
2025-02-03 18:39:55
447
原创 【数据结构】(3)包装类和泛型
一般的类和方法只能固定接收、返回一种类型的数据,但有时我们希望接收、返回很多种类型的数据。比如写一个加法器,里面的数据可以是整型、浮点型,如果使用方法重载,方法里的步骤相同,只是数据类型不同,造成代码的冗余。使用泛型可以解决这个问题,相当于将数据类型参数化,可以给同一个类或方法灵活地指定任意类型。泛型的重点在泛型类对象怎么实例化,为后续集合类的使用做铺垫。而怎么定义泛型类、怎么定义泛型方法、擦除机制、泛型上界、通配符等相比较下就不那么重要了。
2025-02-01 21:04:39
1206
原创 【JavaSE】(9) 异常
异常处理,是根据业务来写的。比如电商平台,可能存在商品库存不足、用户余额不足等异常等。此时Java 标准库提供的异常类可能不够我们使用,我们就需要根据业务自定义异常类。自定义异常类继承 Exception 类或者 RuntimeException 类。继承 Exception 类默认为受查异常;继承 RuntimeException 类默认为非受查异常。// 用户名异常类// 密码异常类// 登录if (!// 字符串构造方法,出现异常的原因if (!try {
2025-01-23 16:24:19
908
原创 【JavaSE】(8) String 类
常用的这4种构造方法:直接法,或者传参字符串字面量、字符数组、字节数组。在中,String 类的字符串中:String 类也,所以可以直接打印 String 类,打印效果就是字符串,而非 className@hashCode 的形式:可以看到源码中,重写的 toString 直接返回的 this,因为 this 本身就是字符串类,println 会对 String 类进行处理,打印出字符串:可以获取字符串长度,这区别于通过获取长度。
2025-01-21 23:00:19
1130
原创 【JavaSE】(6)抽象类和接口
抽象类就是不能描述一个具体对象的类,比如类 Shape,它的子类可以有 Cycle、Squre等。Shape 的 draw 并不能确定子类对象的描绘,此时 Shape 就需要定义为抽象类。抽象类由abstract修饰。抽象类中,不能准确描述子类对象的方法 draw 叫做抽象方法,同样用 abstract 修饰。这样,抽象类只负责声明抽象方法,而子类负责重写来实现抽象方法,子类就能准确描绘自己的 draw 了。因为抽象类的抽象方法并没有具体实现,所以抽象类不可以用 new 实例化。因为。
2024-11-18 19:45:32
852
原创 【JavaSE】(5)继承和多态
一类可能含有多个子类,如:动物的子类有,猫、狗……。这些子类具有共性,将共性提取出为父类,如:动物的共性是,有名字、年龄……继承则是(派生类)(基类/超类)(共性)。继承。继承就是 is-a 的关系:猫 is a 动物。
2024-11-13 16:52:42
754
原创 【JavaSE】(4)类和对象
构造方法,名字与类名相同没有返回值,作用就是初始化成员变量。创建对象后,编译器会自动调用构造方法,并只调用一次。在没有定义构造方法时,编译器会默认定义一个什么也不做的构造方法。但是定义了构造方法后编译器就不会定义默认的构造方法了。可以重载。静态代码块、静态成员变量(类加载时就分配内存初始化)->实例代码块、示例成员变量(创建对象时)->构造方法。执行顺序(相同):依次。不管 new 了多少个对象,静态代码块只执行一次。多个静态代码块,会合并执行。
2024-11-12 13:08:41
868
原创 【JavaSE】(2) 方法
C语言知识回顾:形参只是实参的拷贝,它们是放在不同的栈帧中。因此,当交换两个数值时,用传递值的方式调用方法,方法执行结束后,形参的栈帧会回收,而实参的值并无变化。想改变实参,必须传递地址。,只能获取堆上存放的引用类型变量的引用地址,因此可以传递数值这种引用类型来改变实参,后续再深入学习。方法名字相同,但参数列表不同(参数个数、参数类型、参数类型的次序),实现不同的功能。同一个作用域的标识符不能相同,为什么可以让方法同名?方法签名组成:方法全路径+参数列表类型+返回值类型。不用再绞尽脑汁想方法名了。
2024-11-05 21:10:58
358
原创 Windows 下安装 jdk8
如果想进行 Java 编程(开发人员),需要安装 JDK;如果仅仅想运行 Java 程序(客户),只需要安装独立的 JRE,节省存储空间。JDK 包里也内置有 JRE。企业一般都是使用,因为它是最早的(Oracle 会长期维护和更新,稳定),且企业更换版本会付出一些成本。
2024-10-12 23:59:55
4674
原创 【C语言】(23)预处理指令详解
预定义符号,会在预处理阶段,被直接替换为它的内容。__FILE__ //进⾏编译的源⽂件__LINE__ //⽂件当前的⾏号__DATE__ //⽂件被编译的⽇期__TIME__ //⽂件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义在 VS 环境中演示,预定义符号__STDC__不可使用:用 gcc 编译器演示,gcc 遵循标准C:#define 定义常量,会在预处理阶段,将代码中的名字直接替换为内容。// name: 名字// stuff: 内容。
2024-10-07 02:47:20
1891
2
原创 【C语言】(22)编译和链接
计算机能识别的是二进制指令,为什么编程时不直接写二进制?在早期,科学家们确实是用二进制指令编程,但这样非常不好理解且低效,编程时需要查册子一句句找二进制指令。后来发明了助记符号,每条二进制对应一个助记符,更便于编程,这就是汇编语言。但汇编语言还不够方便,就发明了B语言。最后又在B语言的基础上发明了C语言。B语言和C语言就属于高级计算机语言,易于程序员理解和编程。编译器、链接器等等,都是人类发明出的工具,将高级计算机语言自动转成机器能够识别的二进制指令,而不需要程序员理解其中复杂的过程。
2024-10-06 13:13:19
1021
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人