- 博客(22)
- 收藏
- 关注
原创 给什么字段加索引?索引的类型?
我们放在州和积分列上的复合索引包含了关于每个顾客的三条信息,ID 州 积分,因此如果在select里面包含这三者中的内容,mysql可以完整使用索引来满足查询,这就叫覆盖索引:一个包含所有满足查询需要的数据的索引。基于哈希表实现, 对索引字段计算哈希值,直接指向对应的物理位置。前缀索引:如果在上面创建索引的列是一个字符串列,我们的索引会占用大量的空间,且无法达到很好的性能,索引越小越好,因为它们可以存在内存中,让搜索更好,所以索引字符串列的时候,我们不想在索引中包含整个列,只想包含列的前几个字符或列前缀。
2026-05-06 14:27:16
301
原创 Numpy 数据库
多维性:支持0维(标量,数字),1维(向量),2维(矩阵)及更高维同质性:所有元素类型必须一致(通过dtype指定),不同数据类型会被强制转换成相同数据类型高效性:基于连续内存块存储,支持向量化运算。
2026-04-06 22:35:13
69
原创 数据管理技术的三个发展阶段
特征维度第一阶段:数据集第二阶段:文件核心管理者应用程序操作系统的文件系统结构性无结构,是数据的简单堆砌有结构,以记录为单位的流式文件数据独立性完全不独立,逻辑和物理结构均由程序定义独立性差,逻辑结构仍由程序定义,物理结构由OS管理持久性临时性,通常随程序结束而消失永久性,长期存储在外部设备上共享性不共享,数据与程序一一对应共享性差,文件结构是针对特定程序的,不同程序难以共用数据冗余极高高,因为文件是为应用服务的,相同数据可能在不同文件中重复存储程序员负担沉重,需要管理所有数据细节。
2025-11-30 21:43:45
926
原创 三级模式、二级映像、概念和逻辑结构
设计数据库主要是满足信息管理和数据操作的要求:在数据库中应该存储和管理哪些数据对象:对数据对象需要进行哪些操作,如查询、增、删、改、统计等操作。
2025-11-14 20:14:23
316
原创 数据库的范式
主属性是候选码的组成部分,主属性本身可能就是一个候选码(如果候选码是单属性),也可能是某个候选码的一部分(如果候选码是属性集)。主属性是所有候选码中包含的属性的总和,一个表可以有多个主属性。在选课表(学号,课程号,成绩)中,单独的 学号 或 课程号 都不能唯一标识一条记录,因为一个学生可以选多门课,一门课可以被多个学生选,但属性集 (学号,课程号) 可以唯一标识一个学生的一门课的成绩,因此它是这个表的唯一候选码。在学生表(学号,姓名,身份证号,班级)中,学号 可以唯一标识一个学生,是一个候选码。
2025-11-10 22:26:34
564
原创 聚集索引和非聚集索引
IO操作的效率很低,在大量数据存储中,查询时我们不能一下子将所有的数据全部加载到内存中,只能逐节点加载,如果采用平衡二叉树作为索引结构,那么磁盘的IO次数和索引树的高度是相关的,平衡二叉树由于树深度过大而造成IO读写过于频繁,进而导致效率低下。按照聚集索引排列顺序,查询显示一定范围数据的时候,由于数据都是紧密相连,数据库可以从更少的数据块中提取数据,节省了大量的IO操作。所有索引都是非聚集索引,所有索引的 B+Tree 的叶子节点存储的都是数据行在 .MYD 文件中的物理地址。索引文件:.MYI 文件。
2025-11-01 21:27:37
1063
原创 网络爬虫介绍
一种无状态的(不会存储用户的信息,即本次请求响应和下一次的请求响应是没有关系的,不会发生数据传递),以请求\应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动。在前面爬取'https://www.baidu.com'百度首页代码这个例子里,我们发现爬取的数据并不全,这是因为:请求头中有很多字段,其中user-agent字段是必不可少的,表示客户端的操作系统以及浏览器的信息。爬虫的作用:数据采集、软件测试、抢票、网络安全、web漏洞扫描。
2025-09-26 22:31:24
2464
原创 正则(二):进阶
(ab)\numP<name>)P=name)search():扫描整个字符串并返回第一个成功匹配的对象,如果匹配失败,则返回Nonefindall():以列表形式返回整个字符串中所有匹配到的字符串,不需要通过group()提取sub():将匹配到的数据进行替换。sub(pattern,repl,string,count) pattern:正则表达式(代表需要被替换的,也就是字符串里面的旧内容);repl:新内容;string:字符串;count:指定替换次数。
2025-09-08 14:35:55
782
原创 正则(一):基础与使用
记录文本规则的代码,需要导入re模块。语法比较复杂,可读性较差,但通用性很强,适用于多种编程语言。步骤:导入re模块;使用match方法进行匹配操作,re.match()能匹配出以×××开头的字符串,如果起始位置没有匹配成功,返回None;如果上一步数据匹配成功,使用group()提取数据。match是从开始位置匹配,整体进行匹配,匹配不到就没有。
2025-09-07 12:32:31
877
原创 线程、进程、协程
线程是cpu调度的基本单位,每一个进程至少都会有一个线程,这个线程通常就是我们所说的主线程。进程是操作系统进行资源分配的基本单位,每打开一个程序至少就会有一个进程。一个进程默认有一个线程,进程里面可以创建多个线程,线程是依附在进程里面的,没有进程就没有线程。
2025-09-06 10:20:19
2102
原创 迭代器、生成器
可迭代对象Iterable:可以用for...in...这类语句遍历读取数据的对象称之为可迭代对象,遍历是依次从对象中把一个个元素取出来的过程。可迭代对象的条件:对象实现了__iter__()方法;__iter__()方法返回了迭代器对象。isinstance():判断一个对象是否是可迭代对象或者是一个已知的数据类型。迭代器是一个可以记住遍历位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束,迭代器只能往前不会退后。
2025-09-03 20:26:32
836
原创 文件读写操作
open():创建一个file对象,默认是以只读模式打开read(n):n表示从文件中读取的数据的长度,没有传n值就默认一次性读取文件的所有内容write():将指定内容写入文件close():关闭文件文件名.name:返回要打开的文件的文件名,可以包含文件的具体路径文件名.mode:返回文件的访问模式文件名.closed:检测文件是否关闭,关闭就返回True。
2025-08-29 11:20:52
487
原创 面向对象编程(下):单例模式与魔法方法
是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例模式就能派上用场。优点是可以节省内存空间,减少了不必要的资源浪费;弊端是多线程访问的时候容易引发线程安全的问题。有四种实现方式:通过@classmethod;通过装饰器实现;通过重写__new__()实现(重点);通过导入模块实现。通过重写__new__()实现通过导入模块实现,在同一个模块中调用两次或者在不同的模块中分别调用,得到的内存地址都是一样的,所以模块是天然的单例模式。
2025-08-26 21:48:16
553
原创 面向对象编程(上):基础
面向过程是先分析出解决问题的步骤,再把步骤拆成一个个方法,是没有对象去调用的,通过一个个方法的执行解决问题。(需要实现一个功能的时候,重要的是过程,分析出一个个步骤,并把一个个步骤用一个个函数去实现,再依次去调用一个个函数即可,每一个步骤都需要自己亲力亲为)面向对象是将编程当成一个事物(对象),对外界来说,事物是直接使用的,不用去管内部的情况,而编程就是设置事物能做什么事情。(需要实现一个功能的时候,看重的是谁去帮我做这件事情。
2025-08-18 22:13:09
880
1
原创 闭包、装饰器
在嵌套函数(嵌套定义)的前提下,内部函数使用了外部函数的局部变量,而且外部函数的返回值是内部函数的函数名,我们就把使用了外部函数变量的内部函数称为闭包。每次开启内函数都在使用同一份闭包变量。使用闭包的过程中,一旦外函数被调用一次,返回了内函数的地址,虽然每次调用内函数会开启一个函数,但执行后就会消亡。
2025-08-16 10:55:42
568
原创 异常、模块与包
首先创建一个Exception('××')对象,××是异常提示信息,然后用raise抛出这个异常对象。并没有打印出哈哈哈,因为抛出异常后代码不能继续往下执行了raise Exception("抛出一个异常")print("哈哈哈")funa()"""funa()raise Exception("抛出一个异常")Exception: 抛出一个异常"""用户输入密码,判断输入的长度是否大于等于6,如果输入的长度不足6位,就报错,即抛出自定义异常,并捕获该异常。
2025-08-12 22:26:16
1272
原创 函数的各类应用
在一个函数里面定义另一个函数print("晚上在学习")print("python基础")course()study()"""晚上在学习python基础"""
2025-08-09 10:35:29
642
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅