【MySQL精通之路】全文搜索-布尔型全文搜索
1.使用方法
MySQL可以使用IN BOOLEAN MODE修饰符执行布尔全文搜索。
使用此修饰符,某些字符在搜索字符串中单词的开头或结尾具有特殊含义。
在下面的查询中,+和-运算符分别表示单词必须存在或不存在,才能进行匹配。
因此,查询检索所有包含单词“MySQL”但不包含单词“YourSQL”的行:
mysql> SELECT * FROM articles WHERE MATCH (title,body)-> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
+----+-----------------------+-------------------------------------+
| id | title | body |
+----+-----------------------+-------------------------------------+
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
| 2 | How To Use MySQL Well | After you went through a ... |
| 3 | Optimizing MySQL | In this tutorial, we show ... |
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
| 6 | MySQL Security | When configured properly, MySQL ... |
+----+-----------------------+-------------------------------------+
注意:
在实现这一功能时,MySQL使用了有时被称为隐含布尔逻辑的东西,其中+代表AND
-代表NOT
[无运算符]表示OR
2.特征
布尔全文搜索具有以下特征:
- 它们不会自动按相关性递减的顺序对行进行排序。
- InnoDB表需要在MATCH()表达式的所有列上使用FULLTEXT索引来执行布尔查询。即使没有FULLTEXT索引,针对MyISAM搜索索引的布尔查询也可以工作,尽管以这种方式执行搜索会非常慢。
- 最小和最大字长全文参数适用于使用内置FULLTEXT解析器和MeCab解析器插件创建的FULLTEXT索引。innob_ft_min_token_size和innob_ft_max_token_ize用于innodb搜索索引。ft_min_word_len和ft_max_word_len用于MyISAM搜索索引。
- 最小和最大字长全文参数不适用于使用ngram分析器创建的FULLTEXT索引。ngram令牌大小由ngram_token_size选项定义。
- 停止字列表适用于innodb搜索索引,由innodb_ft_enable_stopword、innodb_vt_server_stopword_table和innodb_pt_user_stopword_table控制,而MyISAM搜索索引由ft_stopword_file控制。
- InnoDB全文搜索不支持在单个搜索词上使用多个运算符,如本例所示:“++apple”。在单个搜索词上使用多个运算符会将语法错误返回到标准输出。MyISAM全文搜索成功地处理了相同的搜索,忽略了除紧邻搜索词的运算符之外的所有运算符。
- InnoDB全文搜索仅支持前导加号或减号。例如,InnoDB支持“+apple”,但不支持“apple+”。指定尾随加号或减号会导致InnoDB报告语法错误。
- InnoDB全文搜索不支持使用带通配符的前导加号(“+*”)、加号和减号组合(“+-”)或前导加号和减码组合(“+/-apple”)。这些无效查询返回语法错误。
- InnoDB全文搜索不支持在布尔全文搜索中使用@符号。@符号是为@distance proximity搜索运算符保留的。
- 它们不使用适用于MyISAM搜索索引的50%阈值。
3.支持的运算符
布尔全文搜索功能支持以下运算符:
+
前导或尾随加号表示该单词必须出现在返回的每一行中。InnoDB只支持前导加号。
-
前导或尾随减号表示该单词不得出现在返回的任何行中。InnoDB只支持前导减号。
注意:-运算符仅用于排除其他搜索项匹配的行。因此,仅包含以-开头的项的布尔模式搜索返回一个空结果。它不会返回“除包含任何排除项的行之外的所有行”
(no operator)
默认情况下(既没有指定+也没有指定-),该单词是可选的,但包含该单词的行的级别更高。这模拟了不使用IN BOOLEAN MODE修饰符的MATCH()AGAINST()的行为。
@distance
此运算符仅适用于InnoDB表。它测试两个或多个单词是否都以单词为单位在指定的距离内开始。在@distance运算符前的双引号字符串中指定搜索词,例如,MATCH(col1)ACTION('“word1 word2 word3”@8'IN BOOLEAN MODE)
> <
这两个运算符用于更改单词对分配给行的相关性值的贡献。>运算符增加贡献,<运算符减少贡献。请参阅下面的示例。
( )
括号将单词分组为子表达式。带圆括号的组可以嵌套。
~
前导波浪号充当否定运算符,导致单词对行相关性的贡献为负。这对于标记“噪波”单词非常有用。包含这样一个单词的行的评级低于其他行,但不会像使用-运算符那样完全排除在外。
*
星号用作截断(或通配符)运算符。与其他操作符不同,它被附加到要受影响的单词后面。如果单词以*运算符前面的单词开头,则匹配。
如果一个单词是用截断运算符指定的,那么它不会从布尔查询中剥离出来,即使它太短或是一个停止字。单词是否太短是由innodb表的innodb_ft_min_token_size设置或MyISAM表的ft_min_word_len设置确定的。这些选项不适用于使用ngram解析器的FULLTEXT索引。
通配符被认为是一个前缀,必须出现在一个或多个单词的开头。如果最小单词长度为4,则搜索“+word+the*”可能会比搜索“+word+the”返回更少的行,因为第二个查询会忽略太短的搜索词。
"
包含在双引号(“)字符中的短语只与键入时包含短语的行匹配。全文引擎将短语拆分为多个单词,并在FULLTEXT索引中搜索这些单词。非单词字符不必完全匹配:短语搜索只要求匹配项包含与短语完全相同的单词,且顺序相同。例如,“测试短语”与“测试,短语”匹配。
如果短语中不包含索引中的单词,则结果为空。这些单词可能不在索引中,这是由于多种因素造成的:如果它们不存在于文本中,是停止语,或者短于索引单词的最小长度。
4.演示
以下示例演示了一些使用布尔全文运算符的搜索字符串:
'apple banana'
查找至少包含这两个单词之一的行。
'+apple +juice'
查找同时包含两个单词的行。
'+apple macintosh'
查找包含单词“apple”的行,但如果行中也包含“macintosh”,则将行排名靠前。
'+apple -macintosh'
查找包含单词“apple”但不包含“macintosh”的行。
'+apple ~macintosh'
查找包含单词“apple”的行,但如果该行也包含单词“macintosh”,则将其评分低于不包含单词的行。这比搜索“+苹果-麦金托什”更“柔和”,因为“麦金托什“的存在会导致根本不返回行。
'+apple +(>turnover <strudel)'
查找包含单词“apple”和“overflow”,或“apple”和“strudel”(按任何顺序)的行,但“apple overflow”的排名高于“apple strudel”。
'apple*'
查找包含单词(如“apple”、“apples”、“苹果酱”或“applet”)的行。
'"some words"'
查找包含确切短语“一些单词”的行(例如,包含“一些智慧单词”但不包含“一些噪音单词”的行将)。请注意,包含短语的“字符”是分隔短语的运算符字符。它们不是包含搜索字符串本身的引号。
5.相关性排序
5.1 InnoDB布尔模式搜索的相关性排序
InnoDB全文搜索以Sphinx全文搜索引擎为模型,使用的算法基于BM25和TF-IDF排名算法。
由于这些原因,InnoDB布尔全文搜索的相关性排名可能与MyISAM相关性排名不同。
InnoDB使用“term频率逆文档频率”(TF-IDF)加权系统的变体来对给定全文搜索查询的文档相关性进行排名。
TF-IDF权重基于单词在文档中出现的频率,并由该单词在集合中所有文档中的出现频率偏移。
换句话说,一个单词在文档中出现的频率越高,而该单词在文档集合中出现的次数越少,则该文档的排名就越高。
5.2 相关性排名的计算方法
mysql> CREATE TABLE articles (-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,-> title VARCHAR(200),-> body TEXT,-> FULLTEXT (title,body)->) ENGINE=InnoDB;
Query OK, 0 rows affected (1.04 sec)mysql> INSERT INTO articles (title,body) VALUES-> ('MySQL Tutorial','This database tutorial ...'),-> ("How To Use MySQL",'After you went through a ...'),-> ('Optimizing Your Database','In this database tutorial ...'),-> ('MySQL vs. YourSQL','When comparing databases ...'),-> ('MySQL Security','When configured properly, MySQL ...'),-> ('Database, Database, Database','database database database'),-> ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),-> ('MySQL Full-Text Indexes', 'MySQL fulltext indexes use a ..');
Query OK, 8 rows affected (0.06 sec)
Records: 8 Duplicates: 0 Warnings: 0mysql> SELECT id, title, body, -> MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) AS score-> FROM articles ORDER BY score DESC;
+----+------------------------------+-------------------------------------+---------------------+
| id | title | body | score |
+----+------------------------------+-------------------------------------+---------------------+
| 6 | Database, Database, Database | database database database | 1.0886961221694946 |
| 3 | Optimizing Your Database | In this database tutorial ... | 0.36289870738983154 |
| 1 | MySQL Tutorial | This database tutorial ... | 0.18144935369491577 |
| 2 | How To Use MySQL | After you went through a ... | 0 |
| 4 | MySQL vs. YourSQL | When comparing databases ... | 0 |
| 5 | MySQL Security | When configured properly, MySQL ... | 0 |
| 7 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... | 0 |
| 8 | MySQL Full-Text Indexes | MySQL fulltext indexes use a .. | 0 |
+----+------------------------------+-------------------------------------+---------------------+
8 rows in set (0.00 sec)
term频率(TF)值是单词在文档中出现的次数。
单词的逆文档频率(IDF)值使用以下公式计算
total_records是集合中的记录数,
matching_records是搜索词出现的记录数。
${IDF} = log10( ${total_records} / ${matching_records} )
当文档多次包含一个单词时,IDF值乘以TF值:
${TF}*${IDF}
使用TF和IDF值,可以使用以下公式计算文档的相关性排名:
${rank}=${TF}*${IDF}*${IDV}
以下示例演示了该公式。
5.3 单个单词搜索的相关性排名
此示例演示了单个单词搜索的相关性排名计算。
mysql> CREATE TABLE articles (-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,-> title VARCHAR(200),-> body TEXT,-> FULLTEXT (title,body)->) ENGINE=InnoDB;
Query OK, 0 rows affected (1.04 sec)mysql> INSERT INTO articles (title,body) VALUES-> ('MySQL Tutorial','This database tutorial ...'),-> ("How To Use MySQL",'After you went through a ...'),-> ('Optimizing Your Database','In this database tutorial ...'),-> ('MySQL vs. YourSQL','When comparing databases ...'),-> ('MySQL Security','When configured properly, MySQL ...'),-> ('Database, Database, Database','database database database'),-> ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),-> ('MySQL Full-Text Indexes', 'MySQL fulltext indexes use a ..');
Query OK, 8 rows affected (0.06 sec)
Records: 8 Duplicates: 0 Warnings: 0mysql> SELECT id, title, body, -> MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) AS score-> FROM articles ORDER BY score DESC;
+----+------------------------------+-------------------------------------+---------------------+
| id | title | body | score |
+----+------------------------------+-------------------------------------+---------------------+
| 6 | Database, Database, Database | database database database | 1.0886961221694946 |
| 3 | Optimizing Your Database | In this database tutorial ... | 0.36289870738983154 |
| 1 | MySQL Tutorial | This database tutorial ... | 0.18144935369491577 |
| 2 | How To Use MySQL | After you went through a ... | 0 |
| 4 | MySQL vs. YourSQL | When comparing databases ... | 0 |
| 5 | MySQL Security | When configured properly, MySQL ... | 0 |
| 7 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... | 0 |
| 8 | MySQL Full-Text Indexes | MySQL fulltext indexes use a .. | 0 |
+----+------------------------------+-------------------------------------+---------------------+
8 rows in set (0.00 sec)
总共有8条记录,其中3条与“数据库”搜索词匹配。
第一个记录(id 6)包含搜索项6次,并且具有1.0886961221694946的相关性排名。
该排名值使用TF值6(“数据库”搜索词在记录id 6中出现6次)和IDF值0.42596873216370745计算得出,计算如下(其中8是记录总数,3是搜索词出现的记录数):
${IDF} = LOG10( 8 / 3 ) = 0.42596873216370745
然后将TF和IDF值输入到排名公式中:
${rank} = ${TF} * ${IDF} * ${IDF}
在MySQL命令行客户端中执行计算会返回1.088696164686938的排名值。
mysql> SELECT 6*LOG10(8/3)*LOG10(8/3);
+-------------------------+
| 6*LOG10(8/3)*LOG10(8/3) |
+-------------------------+
| 1.088696164686938 |
+-------------------------+
1 row in set (0.00 sec)
注意:
您可能会注意到SELECT ... MATCH ... AGAINST语句返回的排名值略有不同和MySQL命令行客户端(1.0886961221694946对1.088696164686938)。
不同之处在于InnoDB如何在内部执行整数和浮点/双精度之间的强制转换(以及相关的精度和舍入决策),以及如何在其他地方执行,例如在MySQL命令行客户端或其他类型的计算器中。
5.4 多词搜索的相关性排序
此示例演示了基于上一示例中使用的文章表和数据的多词全文搜索的相关性排名计算。
如果搜索多个单词,则相关性排名值是每个单词的相关性排名值的总和,如下公式所示:
${rank} = ${TF} * ${IDF} * ${IDF} + ${TF} * ${IDF} * ${IDF}
对两个term执行搜索('mysql tutorial')会返回以下结果:
mysql> SELECT id, title, body, MATCH (title,body) -> AGAINST ('mysql tutorial' IN BOOLEAN MODE) AS score-> FROM articles ORDER BY score DESC;
+----+------------------------------+-------------------------------------+----------------------+
| id | title | body | score |
+----+------------------------------+-------------------------------------+----------------------+
| 1 | MySQL Tutorial | This database tutorial ... | 0.7405621409416199 |
| 3 | Optimizing Your Database | In this database tutorial ... | 0.3624762296676636 |
| 5 | MySQL Security | When configured properly, MySQL ... | 0.031219376251101494 |
| 8 | MySQL Full-Text Indexes | MySQL fulltext indexes use a .. | 0.031219376251101494 |
| 2 | How To Use MySQL | After you went through a ... | 0.015609688125550747 |
| 4 | MySQL vs. YourSQL | When comparing databases ... | 0.015609688125550747 |
| 7 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... | 0.015609688125550747 |
| 6 | Database, Database, Database | database database database | 0 |
+----+------------------------------+-------------------------------------+----------------------+
8 rows in set (0.00 sec)
在第一条记录(id 8)中,“mysql”出现一次,“tutorial”出现两次。“mysql”有六条匹配记录,“tutorial”有两条匹配记录。MySQL命令行客户端在将这些值插入到多词搜索的排名公式中时,会返回预期的排名值:
mysql> SELECT (1*log10(8/6)*log10(8/6)) + (2*log10(8/2)*log10(8/2));
+-------------------------------------------------------+
| (1*log10(8/6)*log10(8/6)) + (2*log10(8/2)*log10(8/2)) |
+-------------------------------------------------------+
| 0.7405621541938003 |
+-------------------------------------------------------+
1 row in set (0.00 sec)
相关文章:

【MySQL精通之路】全文搜索-布尔型全文搜索
1.使用方法 MySQL可以使用IN BOOLEAN MODE修饰符执行布尔全文搜索。 使用此修饰符,某些字符在搜索字符串中单词的开头或结尾具有特殊含义。 在下面的查询中,和-运算符分别表示单词必须存在或不存在,才能进行匹配。 因此,查询检…...

【学习笔记】C++每日一记[20240520]
简述几种内存泄漏的预防机制 用智能指针代替普通指针,由于智能指针自带引用计数功能,能够记录动态分配空间的引用数量,在引用计数为零时,自动调用析构函数释放空间。 借助一些内存泄漏检测工具,例如Valgrind、Memche…...

【热门话题】一文带你读懂公司是如何知道张三在脉脉上发了“一句话”的
按理说呢,A公司和脉脉属于不同的平台,而且脉脉上大家可以匿名发言,所以,即便我坐在你边上,我发了一句话上去,你也不知道是谁发的。但通过一些技术,我们却可以分析出,公司是如何知道张…...

linux命令日常使用思考
linux命令日常使用思考 复制的相关问题scp和cp的区别root192.168.5.229-r的理解 更新版本的相关问题svn info 根目录和家目录的区别根目录家目录 复制的相关问题 scp和cp的区别 安全性:SCP 是基于 SSH 的加密传输协议,可以保证数据在传输过程中的安全性…...

同余定理与哈希函数
目录 同余定理哈希函数加密算法 余数有很多的应⽤场景,⽐如散列函数、加密算法,循环冗余校验等等。生活中也有很多与余数有关的例子。 比如,你要将1147条数据分页写入,每页10条,计算总页数。就可以用1147除以10&#x…...

03-01-Vue组件的定义和注册
前言 我们接着上一篇文章02-Vue实例的生命周期函数 来讲。 下一篇文章 03-02-Vue组件之间的传值 什么是组件 组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们…...

【python进阶】txt excel pickle opencv操作demo
文章目录 1. txt读写读综合案例 日志文件读写 2. excel读写读取csv读取xlsx 3. matplotlib 案例折线图多个折现图散点图柱状图饼状图 4 opencv 案例加载与展示图片缩放图片旋转图片保存图片读取摄像头视频保存opencv 综合案例 5 pickle 案例 1. txt读写 读 file.read() file.r…...

Aware接口作用
介绍 Aware(感知)接口是一个标记,里面没有任何方法,实际方法定义都是子接口确定(相当于定义了一套规则,并建议子接口中应该只有一个无返回值的方法)。 我们知道spring已经定义好了很多对象,如…...

Docker部署Minio S3第三方存储
Docker部署Minio S3第三方存储 你不要着急,你先去读你的书,我去看我的电影,总有一天,我们会窝在一起,读同一本书,看同一部电影。 安装Docker 1、选择要安装的平台 Docker要求CentOS系统的内核版本高于3.1…...

听说京东618裁员没?上午还在赶需求,下午就开会通知被裁了~
文末还有最新面经共享群,没准能让你刷到意向公司的面试真题呢。 京东也要向市场输送人才了? 在群里看到不少群友转发京东裁员相关的内容: 我特地去网上搜索了相关资料,看看网友的分享: 想不到马上就618了,东哥竟然抢…...

力扣226. 翻转二叉树(DFS的两种思路)
Problem: 226. 翻转二叉树 文章目录 题目描述思路复杂度Code 题目描述 思路 涉及二叉树的递归解法时往往需要考虑两种思路: 1.在递归遍历时执行题目需要的具体要求; 2.将一个大问题分解为多个小子问题 具体到本体: 思路1:遍历 先…...

状态机-非重叠的序列检测
描述 设计一个状态机,用来检测序列 10111,要求: 1、进行非重叠检测 即101110111 只会被检测通过一次 2、寄存器输出且同步输出结果 注意rst为低电平复位 信号示意图: 波形示意图: 输入描述 输入信号 clk rst data…...

Word怎么画图?这5个方法收藏好!
“我需要在Word文档中画一些图,想问下Word应该怎么画图呢?有没有朋友可以帮我看看怎么操作呢?” 在今天的数字化时代,信息爆炸式增长,人们越来越需要高效、直观地传递和接收信息。而Word画图功能正是这一需求的完美体现…...

qt designer 依赖库 QMessageBox
目录 qt designer 依赖库配置实例 单步调试快捷键 f10 QMessageBox 使用方法 背景图设置...

反序列化漏洞(JBoss、apache log4、apache Shiro、JWT)Weblogic未授权访问、代码执行、任意上传
1.1什么是反序列化 就是把一个对象变成可以传输的字符串,目的就是为了方便传输。假设,我们写了一个class,这个class里面存有一些变量。当这个class被实例化了之后,在使用过程中里面的一些变量值发生了改变。以后在某些时候还会用到…...

PHP身份证真伪验证、身份证二、三要素核验、身份证ocr接口
实名认证有利于网络绿化,所以在互联网发展迅速的今天,实名认证成了“刚需”。而OCR与实名认证两种产品的结和更是擦出了美丽的火花。翔云人工智能开放平台提供的实名认证OCR接口良好的展现出两种功能结合的效果。以身份实名认证产品举例来说,…...

【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 布局管理器 | 表单布局Form Layout 文章编号:…...

数智赋能内涝治理,四信城市排水防涝解决方案保障城市安全运行
由强降雨、台风造成城市低洼处出现大量积水、内涝的情况时有发生,给人们出行带来了极大不便和安全隐患,甚至危及群众生命财产安全。 为降低内涝造成的损失,一方面我们要大力加强城市排水基础设施的建设;另一方面要全面掌握城市内涝…...

docker实战之搭建MYSQL8.0主从同步
目录 环境配置容器创建主服务器创建MYSQL容器新增my.cnf文件创建用户并授权 从服务器创建MYSQL容器新增my.cnf文件重启MYSQL容器配置主从同步 验证主从同步彩蛋 MySQL 主从同步(Master-Slave Replication)是一种常用的解决方案,它允许一个主服…...

LTD275次升级 | 网页编辑器新增AI翻译 • 文章|产品等内容可导出 • 新增交互数据 • 购物清单可导出• 官微中心app出新版
1、 网站编辑器文本组件可一键翻译; 2、 文章、产品新增导出功能; 3、 购物车新增导出购物清单功能; 4、 App优化首页数据展示、新增访客交互数据功能; 5、 已知问题修复与优化; 01 网站编辑器 新增文本组件一键翻…...

代码随想录算法训练营第36期DAY36
贪心好难,希望能坚持到柳暗花明那天。 DAY36 1005K次取反后最大化的数组和 自己的方法,注意越界条件放在最前面就好: class Solution {public: int largestSumAfterKNegations(vector<int>& nums, int k) { //自己的…...

zookeeper安装教程
前置环境: hadoop3.3.6 三台集群 CentOS7 (图文并茂)基于CentOS-7搭建hadoop3.3.6大数据集群-CSDN博客 1.下载并上传 下载并上传ZOOKEEPER安装包到主节点 官网下载地址 Index of /dist/zookeeper (apache.org) 切换到/opt/bigdata目录(根据自己的情况…...

windows2008修改远程桌面端口,如何果断修改远程桌面端口,确保系统安全无忧!
在数字化时代的浪潮中,Windows 2008系统以其卓越的稳定性和可靠性,赢得了众多企业和个人的青睐。然而,随着网络安全问题的日益严峻,如何确保远程桌面连接的安全,成为了摆在我们面前的一道难题。今天,我将为…...

【计算机网络原理】对传输层TCP协议的重点知识的总结
˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...

mysql实战——半同步复制搭建
一、搭建前准备 主库 192.168.1.78 从库 192.168.1.76 二、搭建 1、先搭建异步复制 MySQL实战——主从异步复制搭建(一主一从)-CSDN博客 2、在异步的基础上搭建半同步复制 主库 mysql>install plugin rpl_semi_sync_slave soname semisy…...

Leetcode 3152. Special Array II
Leetcode 3152. Special Array II 1. 解题思路2. 代码实现 题目链接:3152. Special Array II 1. 解题思路 这一题的话思路上就是分堆,使用贪婪算法找到每一个元素所在的最长special子序列,然后判断query的首尾元素是不是属于同一个special…...

人工智能与区块链技术:开启未来科技的双引擎
在当今科技飞速发展的时代,人工智能和区块链技术如同两颗璀璨的明星,照亮了人类通往未来的道路。 人工智能,以其强大的学习和分析能力,正悄然改变着我们的生活。它能够处理海量的数据,为我们提供精准的预测和个性化的…...

Python筑基之旅-MySQL数据库(二)
目录 一、第三方库 1、mysql-connector-python 1-1、由来 1-2、优缺点 1-2-1、优点 1-2-1-1、官方支持 1-2-1-2、纯Python实现 1-2-1-3、全面支持 1-2-1-4、兼容性 1-2-1-5、易于使用 1-2-2、缺点 1-2-2-1、性能 1-2-2-2、安装 1-2-2-3、社区支持 1-2-2-4、扩…...

web前端面试题
web前端面试题 1、前端如何实现优化性能 (1)减少网络时间 ①使用DNS缓存技术 ②减少需要传输的文件尺寸 ③加快文件传输速度 (2)减少发送的请求数量 ①利用浏览器缓存 ②使用合并的图片文件 (3)提高浏览器下载的并发度 ①JS文件放在HTML文档最后 ②使用多个域名 (…...

创建型模式之单例
文章目录 概述定义场景小结 概述 设计模式包括创建型模式,结构型模式,行为型模式。 今天先看看创建型模式,而单例是创建型模式中的第一个而且是常用的,就从它开始吧。 定义 单例模式用来创建全局唯一的对象。一个类只允许创建一…...