微信网站开发服务asp网站管理系统

pingmian/2026/1/24 4:21:50/文章来源:
微信网站开发服务,asp网站管理系统,鞍山网站制作推广,seo标题优化分析范文来源 | 码海封图 | CSDN 付费下载于视觉中国前言我们每天都在用 Google, 百度这些搜索引擎#xff0c;那大家有没想过搜索引擎是如何实现的呢#xff0c;看似简单的搜索其实技术细节非常复杂#xff0c;说搜索引擎是 IT 皇冠上的明珠也不为过#xff0c;今天我们来就来简单… 来源 | 码海封图 | CSDN 付费下载于视觉中国前言我们每天都在用 Google, 百度这些搜索引擎那大家有没想过搜索引擎是如何实现的呢看似简单的搜索其实技术细节非常复杂说搜索引擎是 IT 皇冠上的明珠也不为过今天我们来就来简单过一下搜索引擎的原理看看它是如何工作的当然搜索引擎博大精深一篇文章不可能完全介绍完我们只会介绍它最重要的几个步骤不过万变不离其宗搜索引擎都离不开这些重要步骤剩下的无非是在其上添砖加瓦所以掌握这些「关键路径」能很好地达到观一斑而窥全貎的目的。本文将会从以下几个部分来介绍搜索引擎会深度剖析搜索引擎的工作原理及其中用到的一些经典数据结构和算法相信大家看了肯定有收获。搜索引擎系统架构图搜索引擎工作原理详细剖析搜索引擎系统架构图搜索引擎整体架构图如下图所示大致可以分为搜集预处理索引查询这四步每一步的技术细节都很多我们将在下文中详细分析每一步的工作原理。搜索引擎工作原理详细剖析一、搜集爬虫一开始是不知道该从哪里开始爬起的所以我们可以给它一组优质种子网页的链接比如新浪主页腾讯主页等这些主页比较知名在 Alexa 排名上也非常靠前拿到这些优质种子网页后就对这些网页通过广度优先遍历不断遍历这些网页爬取网页内容提取出其中的链接不断将其将入到待爬取队列然后爬虫不断地从 url 的待爬取队列里提取出 url 进行爬取重复以上过程...当然了只用一个爬虫是不够的可以启动多个爬虫并行爬取这样速度会快很多。1、待爬取的 url 实现待爬取 url 我们可以把它放到 Redis 里保证了高性能需要注意的是Redis 要开启持久化功能这样支持断点续爬如果 Redis 挂掉了重启之后由于有持续久功能可以从上一个待爬的 url 开始重新爬。2、如何判重如何避免网页的重复爬取呢我们需要对 url 进行去重操作去重怎么实现可能有人说用散列表将每个待抓取 url 存在散列表里每次要加入待爬取 url 时都通过这个散列表来判断一下是否爬取过了这样做确实没有问题但我们需要注意到的是这样需要会出巨大的空间代价有多大我们简单算一下假设有 10 亿 url 不要觉得 10 亿很大像 Google, 百度这样的搜索引擎它们要爬取的网页量级比 10 亿大得多放在散列表里需要多大存储空间呢我们假设每个网页 url 平均长度 64 字节则 10 亿个 url 大约需要 60 G 内存如果用散列表实现的话由于散列表为了避免过多的冲突需要较小的装载因子假设哈希表要装载 10 个元素实际可能要分配 20 个元素的空间以避免哈希冲突同时不管是用链式存储还是用红黑树来处理冲突都要存储指针各种这些加起来所需内存可能会超过 100 G再加上冲突时需要在链表中比较字符串性能上也是一个损耗当然 100 G 对大型搜索引擎来说不是什么大问题但其实还有一种方案可以实现远小于 100 G 的内存布隆过滤器。针对 10 亿个 url我们分配 100 亿个 bit大约 1.2 G, 相比 100 G 内存提升了近百倍可见技术方案的合理选择能很好地达到降本增效的效果。当然有人可能会提出疑问布隆过滤器可能会存在误判的情况即某个值经过布隆过滤器判断不存在那这个值肯定不存在但如果经布隆过滤器判断存在那这个值不一定存在,针对这种情况我们可以通过调整布隆过滤器的哈希函数或其底层的位图大小来尽可能地降低误判的概率但如果误判还是发生了呢此时针对这种 url 就不爬好了毕竟互联网上这么多网页少爬几个也无妨。3、网页的存储文件: doc_raw.bin爬完网页网页该如何存储呢有人说一个网页存一个文件不就行了如果是这样10 亿个网页就要存 10 亿个文件一般的文件系统是不支持的所以一般是把网页内容存储在一个文件假设为 doc_raw.bin中如下当然一般的文件系统对单个文件的大小也是有限制的比如 1 G那在文件超过 1 G 后再新建一个好了。图中网页 id 是怎么生成的显然一个 url 对应一个网页 id所以我们可以增加一个发号器每爬取完一个网页发号器给它分配一个 id将网页 id 与 url 存储在一个文件里假设命名为 doc_id.bin,如下二、预处理爬取完一个网页后我们需要对其进行预处理我们拿到的是网页的 html 代码需要把 script,style,option 这些无用的标签及标签包含的内容给去掉怎么查找是个学问可能有人会说用 BF KMP 等算法这些算法确实可以不过这些算法属于单模式串匹配算法查询单个字段串效率确实不错但我们想要一次性查出script,style,option这些字段串有啥好的方法不答案是用AC 自动机多模式串匹配算法可以高效一次性找出几个待查找的字段串有多高效时间复杂度接近 0(n)关于 AC 自动机多模式匹配算法的原理不展开介绍大家可以去网上搜搜看 这里只是给大家介绍一下思路。找到这些标签的起始位置后剩下的就简单了接下来对每个这些标签都查找其截止标签 /script,/style,/option找到之后把起始终止标签及其中的内容全部去掉即可。做完以上步骤后我们也要把其它的 html 标签去掉标签里的内容保留因为我们最终要处理的是纯内容内容里面包含用户要搜索的关键词三、分词并创建倒排索引拿到上述步骤处理过的内容后我们需要将这些内容进行分词啥叫分词呢就是将一段文本切分成一个个的词。比如 「I am a chinese」分词后就有 「I」,「am」,「a」,「chinese」这四个词,从中也可以看到英文分词相对比较简单每个单词基本是用空格隔开的只要以空格为分隔符切割字符串基本可达到分词效果但是中文不一样词与词之类没有空格等字符串分割比较难以分割。以「我来到北京清华大学」为例不同的模式产生的分词结果不一样以 github 上有名的 jieba 分词开源库为例它有如下几种分词模式【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学 【精确模式】: 我/ 来到/ 北京/ 清华大学 【新词识别】他, 来到, 了, 网易, 杭研, 大厦 【搜索引擎模式】 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造分词一般是根据现成的词库来进行匹配比如词库中有「中国」这个词用处理过的网页文本进行匹配即可。当然在分词之前我们要把一些无意义的停止词如「的」,「地」,「得」先给去掉。经过分词之后我们得到了每个分词与其文本的关系如下细心的你一定发现了不同的网页内容有可能出现同样的分词所以我们把具有相同分词的网页归在一起如下所示这样我们在搜「大学」的时候找到「大学」对应的行就能找到所有包含有「大学」的文档 id 了。看到以上「分词」「倒排索引」的处理流程大家想到了什么没错这不就是 ElasticSearch 搜索引擎干的事吗也是 ES 能达到毫秒级响应的关键这里还有一个问题根据某个词语获取得了一组网页的 id 之后在结果展示上哪些网页应该排在最前面呢为啥我们在 Google 上搜索一般在第一页的前几条就能找到我们想要的答案。这就涉及到搜索引擎涉及到的另一个重要的算法: PageRank它是 Google 对网页排名进行排名的一种算法它以网页之间的超链接个数和质量作为主要因素粗略地分析网页重要性以便对其进行打分。我们一般在搜问题的时候前面一两个基本上都是 stackoverflow 网页说明 Google 认为这个网页的权重很高因为这个网页被全世界几乎所有的程序员使用着也就是说有无数个网页指向此网站的链接根据 PageRank 算法自然此网站权重就啦恩可以简单地这么认为实际上 PageRank 的计算需要用到大量的数学知识毕竟此算法是 Google 的立身之本大家如果有兴趣可以去网上多多了解一下。完成以上步骤搜索引擎对网页的处理就完了那么用户输入关键词搜索引擎又是怎么给我们展示出结果的呢。四、查询用户输入关键词后首先肯定是要经过分词器的处理。比如我输入「中国人民」假设分词器分将其分为「中国」,「人民」两个词接下来就用这个两词去倒排索引里查相应的文档。得到网页 id 后我们分别去 doc_id.bindoc_raw.bin 里提取出网页的链接和内容按权重从大到小排列即可。这里的权重除了和上文说的 PageRank 算法有关外还与另外一个「 TF-IDF 」https://zh.wikipedia.org/wiki/Tf-idf算法有关大家可以去了解一下。另外相信大家在搜索框输入搜索词的时候都会注意到底下会出现一串搜索提示词如图示输入 chin 这四个字母后底下会出现一列提示词。如何实现的这就不得不提到一种树形结构Trie 树。Trie 树又叫字典树、前缀树Prefix Tree、单词查找树是一种多叉树结构如下图所示这颗多叉树表示了关键字集合 [toteatedtenaiin, inn]。从中可以看出 Trie 树具有以下性质根节点不包含字符除根节点外的每一个子节点都包含一个字符从根节点到某一个节点路径上经过的字符连接起来为该节点对应的字符串每个节点的所有子节点包含的字符互不相同通常在实现的时候会在节点结构中设置一个标志用来标记该结点处是否构成一个单词关键字。另外我们不难发现一个规律具有公共前缀的关键字单词它们前缀部分在 Trie 树中是相同的这也是 Trie 树被称为前缀树的原因有了这个思路我们不难设计出上文所述搜索时展示一串搜索提示词的思路一般搜索引擎会维护一个词库假设这个词库由所有搜索次数大于某个阈值如 1000的字符串组成我们就可以用这个词库构建一颗 Trie 树这样当用户输入字母的时候就可以以这个字母作为前缀去 Trie 树中查找以上文中提到的 Trie 树为例则我们输入「te」时由于以「te」为前缀的单词有 [teatedtedten]则在搜索引擎的搜索提示框中就可以展示这几个字符串以供用户选择。五、寻找热门搜索字符串Trie 树除了作为前缀树来实现搜索提示词的功能外还可以用来辅助寻找热门搜索字符串只要对 Trie 树稍加改造即可。假设我们要寻找最热门的 10 个搜索字符串则具体实现思路如下:一般搜索引擎都会有专门的日志来记录用户的搜索词我们用用户的这些搜索词来构建一颗  Trie 树但要稍微对 Trie 树进行一下改造上文提到Trie 树实现的时候可以在节点中设置一个标志用来标记该结点处是否构成一个单词也可以把这个标志改成以节点为终止字符的搜索字符串个数每个搜索字符串在 Trie 树遍历在遍历的最后一个结点上把字符串个数加 1即可统计出每个字符串被搜索了多少次根节点到结点经过的路径即为搜索字符串然后我们再维护一个有 10 个节点的小顶堆堆顶元素比所有其他元素值都小如下图示如图示小顶堆中堆顶元素比其他任何元素都小依次遍历 Trie 树的节点将节点字符串次数传给小顶堆根据搜索次数不断调整小顶堆这样遍历完 Trie 树的节点后小顶堆里的 10 个节点即是最热门的搜索字符串。总结本文简述了搜索引擎的工作原理相信大家看完后对其工作原理应该有了比较清醒的认识我们可以看到搜索引擎中用到了很多经典的数据结构和算法所以现在大家应该能明白为啥 Google, 百度这些公司对候选人的算法要求这么高了。本文只是介绍了搜索引擎的基本工作原理要深入了解还需多查资料了解哦。 推荐阅读一文带你认识keepalived再带你通关LVSKeepalived那个分分钟处理 10 亿节点图计算的 Plato现在怎么样了“谷歌杀手”发明者科学天才 Wolfram数据库激荡 40 年深入解析 PostgreSQL、NewSQL 演进历程超详细一文告诉你 SparkStreaming 如何整合 Kafka 附代码可实践5分钟就能学会以太坊 JSON API 基础知识真香朕在看了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做网站用建站模版好还是定制好百度快照投诉中心官网

php的超全局变量如下图 所有的超全局变量都是数组类型&#xff0c;并且php已经帮我们定义好了&#xff0c;下面重点介绍几个 $_GET:用来保存get方式提交的数据 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>测试$_GET…

星沙做网站简单的报价表模板

应用的幂等是在分布式系统设计时必须要考虑的一个方面&#xff0c;如果对幂等没有额外的考虑&#xff0c;那么在消息失败重新投递&#xff0c;或者远程服务重试时&#xff0c;可能会出现许多诡异的问题。本文一起来看一下&#xff0c;在消息队列应用中&#xff0c;如何处理因为…

梅州免费建站公司网站百科推广怎么做

点击“蓝字”关注我们吧福利&#xff1a;有件小事想和大家说一下菜菜哥&#xff0c;问你个问题&#xff0c;为什么现在的系统都设计为分布式系统呢&#xff1f;这个问题问得好&#xff0c;就像为什么程序员会慢慢脱发一样神奇01PART分布式系统身为二十一世纪的一名程序员&#…

珠海网站制作定制wordpress仿阿里百秀

apache camelREST是一种用于组织资源的体系结构样式&#xff0c;当应用于基于HTTP的服务时&#xff0c;REST可以构建无状态&#xff0c;分离的可伸缩服务。 HTTP方法&#xff0c;HTTP标头和mime类型都允许开发人员实现REST样式。 诸如Jersey和Fuse Services Framework&#xff…

大连模板网站制作费用阿里巴巴装修网站

Python实现AES加密进行PKCS5Padding的填充 &#xff08;1&#xff09;Python 需要导入的模块 &#xff08;2&#xff09;AES加密代码 &#xff08;3&#xff09;AES解密代码 &#xff08;4&#xff09;测试代码 &#xff08;5&#xff09;测试结果

试百客 专业做试用的网站做电影网站怎么批量去水印

《 MySQL性能优化&#xff0d;&#xff0d;锁》首发牧码人博客转发请加此提示MySQL基本概念&#xff0d;&#xff0d;锁介绍下对于MySQL锁机制的理解从基本概念开始&#xff1a;共享锁共享锁的代号是S&#xff0c;是Share的缩写&#xff0c;共享锁的锁粒度是行或者元组(多个行)…

场外期权网站开发建筑工程的公司

目录 1、compositeId路由 1.1、compositeId路由原理 1.2、compositeId路由查询 2、implicit路由 2.1、implicit路由原理 2.2、implicit路由查询 3、扩展 3.1、compositeId路由方式扩展 3.2、implicit路由方式扩张 solrcloud的官方文档有对路由的简短介绍&#xff0c;但…

甘肃交通工程建设监理公司网站做360网站优化快速排

web自动化安装驱动安装 进行web自动化时 &#xff0c;需要提前安装浏览器的驱动 &#xff0c;尤其是chrome浏览器 。它的更新速度很快 &#xff0c;是不是更新了新版本 。这就导致我们的驱动也要跟着变化。 1.停止自动更新 那么 &#xff0c;如何关闭chrome浏览器的自动更新…

嘉禾县网站建设推广公司免费网站开发软件平台

0x0 场景 因老服务器操作系统文centos6.5&#xff0c;现要迁移至uos v20 1050a&#xff08;底层centos8&#xff09;&#xff0c;其中需要迁移的应用组件有&#xff1a; mysql 、tomcat、apachehttpd&#xff0c;因版本跨越太大&#xff0c;导致centos8直接安装无法完全恢复原…

中国建设银行的招投标网站聚名网认证

文章目录 前期数据准备导入数据 分析&#xff1a;世界杯中各队赢得的比赛数分析&#xff1a;先打或后打的比赛获胜次数分析&#xff1a;世界杯中的抛硬币决策分析&#xff1a;2022年T20世界杯的最高得分者分析&#xff1a;世界杯比赛最佳球员奖分析&#xff1a;最适合先击球或追…

做羞羞的专门网站做电商必备的八个软件

基于JavaWebSSMVue家庭记账本微信小程序系统的设计和实现 源码获取入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 1.1选题背景 互联网是人类的基本需求&#xff0c;特别是在现代社会&#xff0c;个人…

成都网络优化网站建设用wordpress写网页

前言 MySQL数据库提供了多种不同类型的函数&#xff0c;用于处理字符串、日期、数值等数据类型&#xff0c;以及实现条件、聚合等操作&#xff0c;下面我们主要介绍字符串函数 CONCAT() 函数 CONCAT() 可用于将多个字符串连接在一起。 示例&#xff1a; SELECT CONCAT(Hell…

做基网站工商天眼查官网

题目链接&#xff1a;55. 右旋转字符串 题目描述 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k&#xff0c;请编写一个函数&#xff0c;将字符串中的后面 k 个字符移到字符串的前面&#xff0c;实现字符串的右旋转操作…

做推广最好的网站是哪个?南网站建设

新建用户 用root账户修改文件&#xff0c;添加信任用户 使用sudo提权&#xff0c;可以使用 **root删除新建账户**

网站建设速成移动网站和桌面网站区别

1、沟通渠道中&#xff0c;N涉及多少人&#xff1f;是有所增加还是增至多少人&#xff1f; 2、在EMV中&#xff0c;关注的是成本还是收益&#xff1f;若是考虑成本和时间&#xff0c;则选择较小的方案&#xff1b;若是关注收益&#xff0c;则选择较大的方案。 3、在PERT中&am…

网站建设工作的函网络工程师的就业前景

问题背景&#xff1a; vue 项目用 axios 进行请求的时候&#xff0c;总是报“Access to XMLHttpRequest at ‘http://localhost:8889/api/login’ from origin ‘http://localhost:8080……’”的错误 实际上就是前后端分离的情况下&#xff0c;发生了跨域的问题 跨域定义&…

外贸 模板网站 定制网站电商网站开发多少钱

您是否在互联网上找到适用于 Windows PC 的前 5 名最受好评的数据恢复软件解决方案&#xff1f;嗯&#xff0c;在线市场上有很多工具可以恢复已删除的文件。但并不是所有的应用程序都值得使用它。值得信赖的文件恢复工具将有助于快速检索丢失、删除、格式化的数据并从计算机恢复…

谁可以帮我做网站虚拟主机多个网站

一、源码特点 java servlet 在线票务系统&#xff08;选座&#xff09;管理系统是一套完善的java web信息管理系统 系统采用serlvetdaobean&#xff08;mvc模式)&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要…

flask 简易网站开发网站空间便宜

日前&#xff0c;海南省旅游资源规划开发质量评定委员会发布2020年第2号和2020年第3号公告&#xff0c;海南长影环球100奇幻乐园批准为国家4A级旅游景区&#xff0c;海南霸王岭国家森林公园和桂林洋国家热带农业公园批准为国家3A级旅游景区。具体公告如下&#xff1a;海南省旅游…

抚州教育网站建设高端logo设计

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…