- 博客(58)
- 收藏
- 关注
原创 【MySQL】(6) 数据库约束
就是自动对数据、表间关联关系的正确性校验,一般在列上加约束。 限制数据值不能为 null,比如学生姓名: 限制数据值唯一,比如 id: 但是 unique 限制的 id 可以有重复的 null: 限制数据唯一且不为空,可以由一个或多个列组成,用于唯一标识数据行,建议每个表都有一个主键,但一个表最多只能有一个主键,最多只能有一个 auto_increment 列,主键类型建议为 bigint。 插入数据: 当插入失败时(比如设
2025-03-16 18:14:49
953
原创 【MySQL】(4) 表的操作
语法:示例:生成的数据目录下的文件:语法:示例:语法:删表是危险操作,尽量别用。 .sql 脚本: 查询客户端工具: 或: 补充,三种注释: 出现错误: 原因,客户端和服务器的字符集不匹配: 客户端连接服务器时,指定默认字符集与服务器一致: 脚本执行成功: 如果不想每次连接服务器,都设置字符集: 方法1:使用 MySQL 自带的 Unicode 命令行客户端:
2025-03-09 19:08:03
322
原创 【MySQL】(1) 数据库基础
就是采用关系模型(二维表)组织数据,一个关系型数据库就是由二维表之间的关系组成的数据组织。为什么要使用多个关系模型,并建立它们之间的关系?直接用一张表存储所有数据行不好吗?比如下面有两张表:想改名尖子1班为清北班,那么只需要更改班级表中的第一栏。和为一张表后:想改名尖子1班为清北班,就需要更改所有是尖子1班的学生信息。显然,这种更改效率极低。SQL 就是结构化查询语言的简称,用于存取、查询、更新、数据,管理数据库。DDL:数据定义语言,数据库级别。与开发强相关。
2025-02-27 20:36:09
726
原创 【MySQL】数据库安装
mysql 是开源的,完全免费。mysql 安装之前,防止后续安装出现问题:此电脑 >> 管理 >>运行安装包:设置过滤器,显示所有可以安装的组件:初学者最多安装这4个组件,其它的目前用不到:设置安装路径:next >> excute,开始安装组件 >> next,安装完成。
2025-02-27 19:59:58
869
原创 【数据结构】(12) 反射、枚举、lambda 表达式
一组常量,比如颜色,它们是同一类,我们想把这组常量组织在一起,就用枚举。作用是与没有意义的数字区分开来(如果定义一组常量,就要用数字表示它们)。break;默认继承了 java.lang.Enum。相当于方法,但是比方法更简化。(形参列表)->表达式(形参列表)->{代码块}// 参数类型可以省略(要省全都省),只有一个参数可以省略圆括号。// 返回一个值或者不返回值。
2025-02-23 20:59:53
1310
原创 【数据结构】(11) Map 和 Set
左子树所有结点小于根结点。右子树所有结点大于根结点。所有子树都满足以上条件。通过哈希函数,输入 key 计算 value 的存放位置,通过这种哈希方法构造的结构就叫哈希表(散列表)。因为只需要计算一次哈希函数,所以删除、插入、搜索操作都是O(1)。不同的 key,通过哈希函数,得到相同的映射。哈希冲突是必然发生的,我们需要尽可能降低哈希冲突发生的概率。通过扩容代码得知,调用无参构造方法,第一次 put 添加元素,会分配 16 大小的内存。通过扩容代码得知,正常扩容的情况,每次 2 倍扩容。
2025-02-23 15:35:39
920
原创 【数据结构】(10) 排序算法
冒泡排序在C语言部分学过,堆排序上一章学过,还剩五种常见排序算法。以下默认从小到大排序。:相同元素在排序过后,前后相对位置依旧不变。一个本身稳定的排序,可以改成不稳定的;但一个本身不稳定的排序,无法改为稳定的。
2025-02-18 14:00:05
849
原创 【数据结构】(9) 优先级队列(堆)
堆也是一种数据结构,是一棵完全二叉树,该完全二叉树中的所有子树的根都大于其孩子,即大根堆;如果都小于其孩子,就是小根堆。
2025-02-15 01:03:48
763
原创 【数据结构】(7) 栈和队列
队列也是一种特殊的顺序表,但只能在固定的一端(队尾,tail/rear)入队,另一端(队头,head/front)出队,具有先进先出的特点。
2025-02-08 23:16:03
1425
1
原创 【数据结构】(6) LinkedList 链表
不同点LinkedListArrayList物理存储上不连续连续随机访问效率O(N)O(1)插入、删除效率O(1)O(N)
2025-02-06 06:16:22
1105
原创 【数据结构】(5) ArrayList 顺序表
ArrayList 就是数组的封装,但是数组只有 [] 操作存取值,和 .length 操作获取数组内存长度;
2025-02-03 23:47:06
815
原创 【数据结构】(4) 线性表 List
List 是Java 中的线性表,但它只是一个接口,说明了线性表应该实现的方法,并不能实例化。List 是泛型的。
2025-02-03 18:39:55
435
原创 【数据结构】(3)包装类和泛型
一般的类和方法只能固定接收、返回一种类型的数据,但有时我们希望接收、返回很多种类型的数据。比如写一个加法器,里面的数据可以是整型、浮点型,如果使用方法重载,方法里的步骤相同,只是数据类型不同,造成代码的冗余。使用泛型可以解决这个问题,相当于将数据类型参数化,可以给同一个类或方法灵活地指定任意类型。泛型的重点在泛型类对象怎么实例化,为后续集合类的使用做铺垫。而怎么定义泛型类、怎么定义泛型方法、擦除机制、泛型上界、通配符等相比较下就不那么重要了。
2025-02-01 21:04:39
1201
原创 【JavaSE】(9) 异常
异常处理,是根据业务来写的。比如电商平台,可能存在商品库存不足、用户余额不足等异常等。此时Java 标准库提供的异常类可能不够我们使用,我们就需要根据业务自定义异常类。自定义异常类继承 Exception 类或者 RuntimeException 类。继承 Exception 类默认为受查异常;继承 RuntimeException 类默认为非受查异常。// 用户名异常类// 密码异常类// 登录if (!// 字符串构造方法,出现异常的原因if (!try {
2025-01-23 16:24:19
901
原创 【JavaSE】(8) String 类
常用的这4种构造方法:直接法,或者传参字符串字面量、字符数组、字节数组。在中,String 类的字符串中:String 类也,所以可以直接打印 String 类,打印效果就是字符串,而非 className@hashCode 的形式:可以看到源码中,重写的 toString 直接返回的 this,因为 this 本身就是字符串类,println 会对 String 类进行处理,打印出字符串:可以获取字符串长度,这区别于通过获取长度。
2025-01-21 23:00:19
1120
原创 【JavaSE】(6)抽象类和接口
抽象类就是不能描述一个具体对象的类,比如类 Shape,它的子类可以有 Cycle、Squre等。Shape 的 draw 并不能确定子类对象的描绘,此时 Shape 就需要定义为抽象类。抽象类由abstract修饰。抽象类中,不能准确描述子类对象的方法 draw 叫做抽象方法,同样用 abstract 修饰。这样,抽象类只负责声明抽象方法,而子类负责重写来实现抽象方法,子类就能准确描绘自己的 draw 了。因为抽象类的抽象方法并没有具体实现,所以抽象类不可以用 new 实例化。因为。
2024-11-18 19:45:32
821
原创 【JavaSE】(5)继承和多态
一类可能含有多个子类,如:动物的子类有,猫、狗……。这些子类具有共性,将共性提取出为父类,如:动物的共性是,有名字、年龄……继承则是(派生类)(基类/超类)(共性)。继承。继承就是 is-a 的关系:猫 is a 动物。
2024-11-13 16:52:42
745
原创 【JavaSE】(4)类和对象
构造方法,名字与类名相同没有返回值,作用就是初始化成员变量。创建对象后,编译器会自动调用构造方法,并只调用一次。在没有定义构造方法时,编译器会默认定义一个什么也不做的构造方法。但是定义了构造方法后编译器就不会定义默认的构造方法了。可以重载。静态代码块、静态成员变量(类加载时就分配内存初始化)->实例代码块、示例成员变量(创建对象时)->构造方法。执行顺序(相同):依次。不管 new 了多少个对象,静态代码块只执行一次。多个静态代码块,会合并执行。
2024-11-12 13:08:41
832
原创 【JavaSE】(2) 方法
C语言知识回顾:形参只是实参的拷贝,它们是放在不同的栈帧中。因此,当交换两个数值时,用传递值的方式调用方法,方法执行结束后,形参的栈帧会回收,而实参的值并无变化。想改变实参,必须传递地址。,只能获取堆上存放的引用类型变量的引用地址,因此可以传递数值这种引用类型来改变实参,后续再深入学习。方法名字相同,但参数列表不同(参数个数、参数类型、参数类型的次序),实现不同的功能。同一个作用域的标识符不能相同,为什么可以让方法同名?方法签名组成:方法全路径+参数列表类型+返回值类型。不用再绞尽脑汁想方法名了。
2024-11-05 21:10:58
351
原创 Windows 下安装 jdk8
如果想进行 Java 编程(开发人员),需要安装 JDK;如果仅仅想运行 Java 程序(客户),只需要安装独立的 JRE,节省存储空间。JDK 包里也内置有 JRE。企业一般都是使用,因为它是最早的(Oracle 会长期维护和更新,稳定),且企业更换版本会付出一些成本。
2024-10-12 23:59:55
4155
原创 【C语言】(23)预处理指令详解
预定义符号,会在预处理阶段,被直接替换为它的内容。__FILE__ //进⾏编译的源⽂件__LINE__ //⽂件当前的⾏号__DATE__ //⽂件被编译的⽇期__TIME__ //⽂件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义在 VS 环境中演示,预定义符号__STDC__不可使用:用 gcc 编译器演示,gcc 遵循标准C:#define 定义常量,会在预处理阶段,将代码中的名字直接替换为内容。// name: 名字// stuff: 内容。
2024-10-07 02:47:20
1762
2
原创 【C语言】(22)编译和链接
计算机能识别的是二进制指令,为什么编程时不直接写二进制?在早期,科学家们确实是用二进制指令编程,但这样非常不好理解且低效,编程时需要查册子一句句找二进制指令。后来发明了助记符号,每条二进制对应一个助记符,更便于编程,这就是汇编语言。但汇编语言还不够方便,就发明了B语言。最后又在B语言的基础上发明了C语言。B语言和C语言就属于高级计算机语言,易于程序员理解和编程。编译器、链接器等等,都是人类发明出的工具,将高级计算机语言自动转成机器能够识别的二进制指令,而不需要程序员理解其中复杂的过程。
2024-10-06 13:13:19
990
原创 【C语言】(20)动态内存管理
内存映射段目前不需要知道是什么东西;代码段是存放程序编译之后,代码和常量的二进制指令。以左边的代码为例子:紫色框出的是全局变量、静态变量,存放在数据段;绿色框出的是局部变量、有关函数调用的信息,存放在栈区;黄色框出来的是动态分配的内存空间,在堆区;红色框出来的是初始化局部变量的常量,存放在代码段。栈区(stack):① 函数的局部变量、形参、返回值、返回到的地址等函数信息,都在栈区创建。函数执行结束,存储这些信息的空间也会被自动释放。② 栈区的内存分配在处理器的指令集中运算,效率高,但可分配的空间有限。
2024-09-23 10:28:01
898
原创 【C语言】(19)自定义类型——结构体
成员类型必须是,C99 标准中也可以是其它类型。成员名后是冒号 + 数字。int _b : 5;位段 A 大小是?如果按照结构体的内存对齐的方法计算,4 * 4 = 16 个字节。看看运行结果:显然不是按结构体的方式计算内存大小,实际上位段的位表示二进制位冒号后面的数字是该成员的大小,比如 _a 占 2 bit。但是位段 A 的所有成员的大小加起来是 2+5+10+30 = 47,用 6 个字节(68 bit)就够了,为什么是8 字节呢?请看下节。
2024-09-20 13:17:01
794
原创 【C语言】(18)自定义类型——联合和枚举
联合体适用于不需要给每个成员开辟空间,且成员不需要同时使用的场景,可以节省空间。以上代码,联合体大小是成员 i (所需空间最大的成员)的大小;联合体、每个成员的地址都是 004FFA90(成员共用一个空间)。定义商品变量时,图书不需要设计、颜色、尺寸信息;杯子不需要书名、作者、页数等信息。使用结构体类型,会浪费很多空间。但 C++ 的类型检查更严谨,不能拿整数给枚举变量赋值。看应用场景选择使用结构体还是联合体,应用见(5)。包含的内容是枚举类型可能的取值,称为。例2:判断当前机器是大端还是小端。
2024-09-20 13:15:04
859
原创 【C语言】(17)数据在内存中的存储
内存中以一个字节为单元,超过一个字节的数据(short、int、long)在内存中存储,必然就有存储顺序的问题。另外,对于大于8位的处理器,例如16位、32位处理器,由于寄存器宽度大于一个字节,也会存在多个字节的存储顺序的问题。在内存中数据是以二进制存储的,这里为了方便书写和观察,用十六进制表示。
2024-09-11 17:56:25
995
原创 【深度学习入门】计算机视觉任务
对于神经网络,可以把中间的隐藏层看作一个黑盒子,这个黑盒子能自动选择如何提取特征,这不同于传统机器学习的人工操作,它的实现原理也是我们学习深度学习的重点。本文章以计算机视觉任务中的图像分类任务为例子,学习这个黑盒子里的各种实现细节。
2024-09-01 18:41:02
1203
原创 【机器学习】逻辑回归
基本上所有的分类问题都可以用逻辑回归解决。它的求解速度快;模型可解释性强,很多参数都有物理含义,便于我们理解,比如大的表示特征重要,小的表示特征不重要。但是像神经网络、支持向量机这种复杂的算法,它计算得到的很多参数都是没有物理意义的,只是求得的结果有用而已,不利于理解。因此,拿到任务后建议先用逻辑回归试一下,不行再考虑一些复杂的算法。
2024-08-24 15:18:48
1358
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人