- 博客(15)
- 收藏
- 关注
原创 聚集索引和非聚集索引
IO操作的效率很低,在大量数据存储中,查询时我们不能一下子将所有的数据全部加载到内存中,只能逐节点加载,如果采用平衡二叉树作为索引结构,那么磁盘的IO次数和索引树的高度是相关的,平衡二叉树由于树深度过大而造成IO读写过于频繁,进而导致效率低下。按照聚集索引排列顺序,查询显示一定范围数据的时候,由于数据都是紧密相连,数据库可以从更少的数据块中提取数据,节省了大量的IO操作。所有索引都是非聚集索引,所有索引的 B+Tree 的叶子节点存储的都是数据行在 .MYD 文件中的物理地址。索引文件:.MYI 文件。
2025-11-01 21:27:37
998
原创 网络爬虫介绍
一种无状态的(不会存储用户的信息,即本次请求响应和下一次的请求响应是没有关系的,不会发生数据传递),以请求\应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动。在前面爬取'https://www.baidu.com'百度首页代码这个例子里,我们发现爬取的数据并不全,这是因为:请求头中有很多字段,其中user-agent字段是必不可少的,表示客户端的操作系统以及浏览器的信息。爬虫的作用:数据采集、软件测试、抢票、网络安全、web漏洞扫描。
2025-09-26 22:31:24
2368
原创 正则(二):进阶
(ab)\numP<name>)P=name)search():扫描整个字符串并返回第一个成功匹配的对象,如果匹配失败,则返回Nonefindall():以列表形式返回整个字符串中所有匹配到的字符串,不需要通过group()提取sub():将匹配到的数据进行替换。sub(pattern,repl,string,count) pattern:正则表达式(代表需要被替换的,也就是字符串里面的旧内容);repl:新内容;string:字符串;count:指定替换次数。
2025-09-08 14:35:55
734
原创 正则(一):基础与使用
记录文本规则的代码,需要导入re模块。语法比较复杂,可读性较差,但通用性很强,适用于多种编程语言。步骤:导入re模块;使用match方法进行匹配操作,re.match()能匹配出以×××开头的字符串,如果起始位置没有匹配成功,返回None;如果上一步数据匹配成功,使用group()提取数据。match是从开始位置匹配,整体进行匹配,匹配不到就没有。
2025-09-07 12:32:31
849
原创 线程、进程、协程
线程是cpu调度的基本单位,每一个进程至少都会有一个线程,这个线程通常就是我们所说的主线程。进程是操作系统进行资源分配的基本单位,每打开一个程序至少就会有一个进程。一个进程默认有一个线程,进程里面可以创建多个线程,线程是依附在进程里面的,没有进程就没有线程。
2025-09-06 10:20:19
2029
原创 迭代器、生成器
可迭代对象Iterable:可以用for...in...这类语句遍历读取数据的对象称之为可迭代对象,遍历是依次从对象中把一个个元素取出来的过程。可迭代对象的条件:对象实现了__iter__()方法;__iter__()方法返回了迭代器对象。isinstance():判断一个对象是否是可迭代对象或者是一个已知的数据类型。迭代器是一个可以记住遍历位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束,迭代器只能往前不会退后。
2025-09-03 20:26:32
804
原创 文件读写操作
open():创建一个file对象,默认是以只读模式打开read(n):n表示从文件中读取的数据的长度,没有传n值就默认一次性读取文件的所有内容write():将指定内容写入文件close():关闭文件文件名.name:返回要打开的文件的文件名,可以包含文件的具体路径文件名.mode:返回文件的访问模式文件名.closed:检测文件是否关闭,关闭就返回True。
2025-08-29 11:20:52
427
原创 面向对象编程(下):单例模式与魔法方法
是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例模式就能派上用场。优点是可以节省内存空间,减少了不必要的资源浪费;弊端是多线程访问的时候容易引发线程安全的问题。有四种实现方式:通过@classmethod;通过装饰器实现;通过重写__new__()实现(重点);通过导入模块实现。通过重写__new__()实现通过导入模块实现,在同一个模块中调用两次或者在不同的模块中分别调用,得到的内存地址都是一样的,所以模块是天然的单例模式。
2025-08-26 21:48:16
525
原创 面向对象编程(上):基础
面向过程是先分析出解决问题的步骤,再把步骤拆成一个个方法,是没有对象去调用的,通过一个个方法的执行解决问题。(需要实现一个功能的时候,重要的是过程,分析出一个个步骤,并把一个个步骤用一个个函数去实现,再依次去调用一个个函数即可,每一个步骤都需要自己亲力亲为)面向对象是将编程当成一个事物(对象),对外界来说,事物是直接使用的,不用去管内部的情况,而编程就是设置事物能做什么事情。(需要实现一个功能的时候,看重的是谁去帮我做这件事情。
2025-08-18 22:13:09
840
1
原创 闭包、装饰器
在嵌套函数(嵌套定义)的前提下,内部函数使用了外部函数的局部变量,而且外部函数的返回值是内部函数的函数名,我们就把使用了外部函数变量的内部函数称为闭包。每次开启内函数都在使用同一份闭包变量。使用闭包的过程中,一旦外函数被调用一次,返回了内函数的地址,虽然每次调用内函数会开启一个函数,但执行后就会消亡。
2025-08-16 10:55:42
524
原创 异常、模块与包
首先创建一个Exception('××')对象,××是异常提示信息,然后用raise抛出这个异常对象。并没有打印出哈哈哈,因为抛出异常后代码不能继续往下执行了raise Exception("抛出一个异常")print("哈哈哈")funa()"""funa()raise Exception("抛出一个异常")Exception: 抛出一个异常"""用户输入密码,判断输入的长度是否大于等于6,如果输入的长度不足6位,就报错,即抛出自定义异常,并捕获该异常。
2025-08-12 22:26:16
1194
原创 函数的各类应用
在一个函数里面定义另一个函数print("晚上在学习")print("python基础")course()study()"""晚上在学习python基础"""
2025-08-09 10:35:29
590
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅