基础篇-SpringBoot那些事
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础篇-SpringBoot那些事相关的知识,希望对你有一定的参考价值。
参考技术A 以历代Spring Framework的进步为基础,Spring Boot实现配置自动化,依赖更简单,监控更容易,Spring Boot项目也是普通的Spring项目,只是他们正好用到了Spring Boot的起步依赖和自动配置而已,Spring Boot精要:Spring支持Java配置和XML配置,他们为应用程序开启了特定的特性和功能,SpringBoot实现了自动配置,可以减少配置负担。
自动配置=spring-boot-autoconfigure+condition
没什么特别的,自动配置并不是智能配置,也是通过一个一个的配置文件实现的,Spring Boot把这些繁琐的工作处理了。我们看一个例子:
自动配置很好,很强大,自由选择同样重要
- 覆盖Spring Boot自动配置,覆盖配置很简单,直接显式地写一段配置即可
- 通过属性文件外置配置,Spring Boot提供了多种设置途径,常用包括如下,按优先级排列,越前优先级越高
- XML配置的特殊用处
- 优化SpringBootApplication
向项目中添加依赖是件富有挑战的事,SpringBoot通过起步依赖为项目的依赖管理提供帮助,起步依赖引入的库都经过测试,不会出现不兼容的情况。
Spring Boot提供了运行时检视应用程序内部情况的能力,包括应用Bean,自动配置,环境变量,内存用量,垃圾回收,Web请求。可以结合prometheus来可视化监控和报警。
SpringBoot入门系列
基础篇-Java相关的有些事
基础篇-SpringBoot那些事
基础篇-Spring必须知道的
基础篇-工欲善其事
摘自
*Spring Boot实战
*Spring Boot解密
**需要PDF书籍的可以私聊
搜索引擎和知识图谱那些事.基础篇
这是一篇基础性文章,主要介绍搜索引擎和知识图谱的一些原理、发展经历和应用等知识。希望文章对你有所帮助~如果有错误或不足之处,还请海涵。
一. 搜索引擎
(一).搜索引擎的四个时代
根据张俊林大神的《这就是搜索引擎》这本书中描述(推荐大家阅读),搜索引擎从采取的技术划分为4个时代:
1.史前时代:分类目录的一代
这个时代成为“导航时代”,Yahoo和国内hao123是这个时代的代表。通过人工搜集整理,把属于各个类别的高质量网站或网页分类,用户通过分级目录来查找高质量的网站。这种纯人工方式并未采取什么高深的技术手段,采取分类目录的方式,一般收录的网站质量较高,但这种方式扩展性不强,绝大部分网站不能被收录。
2.第一代:文本检索的一代
文本检索的一代采用经典的信息检索模型,如布尔模型、向量空间模型或者概率模型,来计算用户查询关键词和网页文本内容的相关程度。早期很多搜索引擎如AltaVista、Excite等大都采用这种模式。
相对分类目录,这种方式可以收录大部分网页,并按照网页内容和用户查询的匹配程度进行排序。但由于网页之间有丰富的链接关系,而这一代搜索引擎并未使用这些信息,所以搜索质量不是很好。
3.第二代:链接分析的一代
这一代搜索引擎充分利用了网页之间的链接关系,并深入挖掘和利用了网页链接所代表的含义。通常而言,网页链接代表了一种推荐关系,所以通过链接分析可以在海量内容中找出重要的网页。被推荐次数多的网页其实代表了其具有流行性,搜索引擎通过结合网页流行性和内容相似性来改善搜索质量。
Google于1998年成立,它率先提出并使用PageRank链接分析技术,大幅度提高了搜索质量。目前几乎所有的搜索引擎都采取了链接分析技术,但是这种技术并未考虑用户的个性化要求,所以只要输入的查询请求相同,所有用户都会获得相同的搜索结果。另外很多网站为获取更高的搜索排名,针对链接分析算法提出不少链接作弊方案,这样导致搜索结果质量变差。
4.第三代:用户中心的一代
第三代即理解用户需求为核心的一代搜索引擎。不同用户即使输入同一个查询词,但其目的可能不一样。比如同样输入“苹果”作为搜索词,一个追捧iPhone的时尚青年和一个果农的目的会存在巨大的差异。即使一个用户,输入相同的查询词,也会因为所在时间和场合不同,需求有所冰变化。
目前搜索引擎大都致力于解决如何能够理解用户发出的某个很短小的查询词背后包含的真正需求的问题。为了获取用户真正的需求,目前搜索引擎做了很多技术方面的尝试。如利用用户发送查询词时的时间和地理位置信息、利用用户过去发出的查询词及相应的点击记录等历史信息手段,来试图理解用户此时此地的真正需求。
(二).搜索引擎的架构原理
搜索引擎通常是用户输入查询词,搜索引擎返回搜索结果。其目标是:更全、更快、更准。
搜索引擎需要对百亿计的海量网页进行获取、存储、处理,同时要保证搜索结果的质量。如何获取、存储并计算这些海量数据?如何快速响应用户的查询?如何使得搜索结果能够满足用户的信息需求?这些都是搜索引擎面对的技术挑战。
搜索引擎涉及三个核心问题:
用户真正的需求是什么(用户输入的查询词非常简单,查询的平均长度是2.7个单词,如何获取用户的真实需求)、哪些信息是和用户需求真正相关的(搜索引擎的本质是一个匹配的过程,即从海量数据中匹配用户的需求内容,如何从判断内容和用户查询关键词的相关性到让计算机真正理解信息所代表的含义)、哪些信息是用户可以信赖的(互联网上所发布内容是否可信并无明确的判断标准,同一个查询的搜索结果可能完全是矛盾的答案,此时信息的可信性尤为重要,链接分析也看成对信息可信度做出的评判)。
下图是一个通用的搜索引擎架构示意图:(完全参考《这就是搜索引擎》)
搜索引擎后台计算系统
搜索引擎的信息来源于互联网网页,通过网络爬虫将整个互联网的信息获取到本地,因此互联网页面中有很大部分内容是相同或相似的,“网页去重”模块会对此作出检测并去除重复内容。
之后,搜索引擎会对网页进行解析,抽取出网页主体内容及页面中包含的指向其他页面的链接。为加快响应用户查询的速度,网页内容通过“倒排索引”这种高效查询数据结构保存,网页之间的链接关系也会保存。因为通过“链接分析”可以判断页面的相对重要性,对于为用户提供准确的搜索结果帮助很大。
同时由于海量数据信息巨大,所以采用云存储与云计算平台作为搜索引擎及相关应用的基础支撑。上述是关于搜索引擎如何获取及存储海量的网页相关信息,不需要进行实时计算,所以被看做是搜索引擎的后台计算系统。
搜索引擎前台计算系统
搜索引擎的最重要目的是为用户提供准确全面的搜索结果,如何响应用户查询并实时地提供准确结果构成了搜索引擎前台计算系统。
当搜索引擎接到用户的查询词后,首先对查询词进行分析,希望能够结合查询词和用户信息来正确推导用户的真正搜索意图。先在缓存中查找,缓存系统中存储了不同的查询意图对应的搜索结果,如果能在缓存中找到满足用户需求的信息,则直接返回给用户,即节省资源又加快响应速度。如果缓存中不存在,则调用“网页排序”模块功能。
“网页排序”会根据用户的查询实时计算哪些网页是满足用户信息需求的,并排序输出作为搜索结果。而网页排序中最重要的两个因素是:内容相似性因素(哪些网页和用户查询相关)和网页的重要性因素(哪些网页质量好或相对重要,通过链接分析结果获得)。然后网页进行排序,作为用户查询的搜索结果。
同时,搜索引擎的“反作弊”模块主要自动发现那些通过各种手段将网页的搜索排名提高到与其网页质量不相称的位置,这会严重影响搜索体验。现在也出现一种成功的新互联网公司屏蔽搜索引擎公司爬虫的现象,比如Facebook对Google的屏蔽,国内淘宝对百度的屏蔽,主要是商业公司之间的竞争策略,也可看做是垂直搜索和通用搜索的竞争。
(三).搜索引擎简单技术分析
按照技术原理,搜索引擎又可以分为三类:
1.全文检索搜索引擎(Full Text Search Engine)
国外具有代表的有Google、Yahoo、AltaVista、Teoma等,国内如百度、北大天网等。它们都是从互联网上提取各个网站的信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配相关的记录,然后按照一定的排序将结果返回给用户。
2.目录搜索引擎(Search Index)
严格意义上它不是真正的搜索引擎,仅仅是按照目录分类的网站链接列表,虽然它具有搜索功能。用户完全可以不用进行关键词查询,仅靠分类目录就可以找到需要的信息,最具代表性的是Yahoo雅虎。国内的搜狐、网易、新浪、hao123等都属于该类。
目录界面一般采用分级结构,用户从基本的大类入口一级级向下访问,直到找到中意的内容,用户也可以通过目录提供的搜索功能查询关键词。由于采用人工分类,搜索结果比Robot搜索更精准,但局限性也明显。
3.元搜索引擎(Meta Search Engine)
在接受用户查询请求时,同时在其他多个引擎上进行搜索,它自己不进行WWW的遍历,也没有自己的索引数据库。当用户查询一个关键词时,它把查询请求转换为其他搜索引擎的命令形式,分别向其他搜索引擎提交,然后汇总这些搜索引擎返回的结果,返回给用户浏览器。著名的搜星搜索引擎就是一个中文元搜索引擎。
搜索引擎通常由搜索器、索引器、检索器和用户接口四部分组成。
就基于中文字词的特点,由于汉字字符数量多、编码方式复杂、中文词分词(字构成)困难等,所以中文搜索引擎必须要有专门的中文信息处理模块来完成中文文档的分词处理、码制转换和全角处理等工作。
同时在“百度招聘”中你可能会看到它的核心部门包括网页搜索部、垂直搜索部等,那么垂直搜索是个什么东西呢?这里作简单的补充。
垂直搜索引擎
它也称为主题搜索引擎或专题搜索引擎。它是对网页库中的某类专门的信息进行一次整合,只关注某一领域或地域的信息,这些信息存储和索引之后,用户就可以检索只涉及这部分的信息。垂直搜索引擎与通用搜索引擎最大的区别是:通用搜索引擎是面向所有用户的,而垂直搜索引擎是面向某一领域的用户。如酒店、道路、公交、商店信息等,生活搜索引擎极大的满足了用户的出行和旅游。
传统搜索引擎的核心技术常见包括:分词技术、网络蜘蛛、索引技术和词频指数。
随着智能搜索引擎的兴起,如Ghunt。其核心技术包括自动推理技术、本体知识系统、专家系统等,它更注重于其他科学相融合、个性化搜索、智能化比较高。但我此处就不在叙述,因为知识图谱或知识计算引擎被认为是下一代搜索引擎,我更想与大家分享这部分的基础知识。换句话说,它也是非常智能、需要理解用户需求、以用户为中心的搜索技术。
二. 知识图谱
(一).知识图谱的应用
首先通过知识图谱的应用引入这个概念,同时体会它的优点。传统的搜索引擎搜索“姚明的身高”,返回的结果是网页内容与姚明身高的相关一些列链接。如Yahoo:
而知识图谱如Google返回的是一个准确的结果“2.29米”,同时右边有一个“姚明”的知识卡片。
提出背景:
自语义网的概念提出,越来越多的开放链接数据和用户生成内容被发布于互联网中。互联网逐步从仅包含网页与网页之间超链接的文档万维网转变为包含大量描述各种实体和实体之间丰富关系的数据万维网。
在此背景下,知识图谱(Knowledge Graph)于2012年5月首先由Google提出,其目标在于描述真实世界中存在的各种实体和概念,及实体、概念之间的关联关系,从而改善搜索结果。紧随其后,国内搜狗提出了“知立方”、微软的Probase和百度的“知心”。
如下图所示,通过知识图谱可以搜索到“姚明的女儿”,如百度知心:
而传统的搜索引擎仅仅是返回如“百度知道”的提问“姚明的女儿是谁”或百度百科相关姚明介绍,这些网页内容包含“姚明”和“姚沁蕾”及“父女”关系等。而知识图谱中相当于有一张巨大的网,把人物、关系联系起来。如百度知心和搜狗知立方:
再如平时我们通过百度或搜狗搜索小说电影电视剧时的应用:
(二).知识图谱的框架
通过上面的叙述,我们发现传统的搜索引擎和知识图谱的变化:
1.信息抽取目标发生了变化,传统的文本指定抽取(ACE)=>海量数据的发现(KBP);
2.从文本分析为核心转变成了知识发现为核心;
3.让计算机真正理解用户的查询需求,给出准确答案而不是给出相关的链接序列;
目前世界有代表性的知识库或应用系统包括KnowItAll、TextRunner、基于维基百科的DBpedia、YAGO;公司开发的知识搜索或计算平台如谷歌KnowledgeGraph、Facebook推出的实体搜索服务Graph Search、Evi公司TrueKnowledge知识搜索平台。
因王元卓等人提出的一种面向网络大数据的、开放的、自适应的、可演化的、可计算的知识计算引擎——OpenKN,其原理类似于知识图谱,故通过该框架图进行简单讲解。
OpenKN主要由知识库构建(Knowledge base construction)、知识库验证与计算(Knowledge validation and verification, Knowledge computation)、知识存储(Knowledge repositories)、知识服务与应用(Knowledge services and application)四个模块组成。
这些模块实现了一个全生命周期的知识处理,从知识获取、知识融合、知识验证、知识计算、知识存储到知识服务与应用的知识处理工作流程。
知识库的构建:
包括知识获取和知识融合两方面。知识获取是从开放网页、在线百科和核心词库等数据中抽取概念、实体、属性和关系;只是融合的主要目的是实现知识的时序融合和多数据源融合。在完成知识库构建工作后得到的知识是显式的知识。
知识计算:
除了显示的知识,通过OpenKN的知识计算功能,包括属性计算、关系计算、实例计算等,我们还可以进一步获得隐式的或推断的知识。
知识验证和处理:
为了检验显示知识和隐式知识的完备性、相关性和一致性,我们需要对知识进行校验,这成为知识验证过程。主要是专家或特定的知识计算方法检查冗余的、冲突的、矛盾的或不完整的知识。
知识存储:
经过验证的海量知识,在OpenKN里存储在一个基于图的数据库(Graph DataBase, GDB)及关系数据库中。其中GDB中存储的是显示知识,关系数据库中存储的是隐式知识。与传统的数据库模型Titan相比,GDB通过定义点和边的图数据模型来存储知识,这里的点和边都有各自唯一的ID并且支持一系列的多值属性。GDB描述了一个与现有的图模型不同的异构网络,成为可演化知识网络。
OpenKN的两个主要特征——自适应和可演化性,即诠释了OpenKN的“Open”含义。
在知识获取过程中多源知识或在线百科的实体对齐、属性对齐和属性值对齐的研究。知识图谱建立后需要考虑知识扩充、知识更新等实时修改也是其中的难点。该篇只是入门介绍,其他有机会再分享。
(三).搜狗知立方
这部分内容是我在百度文库中搜索知识图谱找到的,主要是张坤分享的“面向知识图谱的搜索技术”,关于搜狗知立方的,可惜没听到原作者的讲述。但我也分享他的几张图片,一目了然。
搜索结构发生的变化
知立方整体架构图
知立方数据库构建包括本体构建(各类型实体挖掘、属性名称挖掘、编辑系统)、实例构建(纯文本属性、实体抽取、半结构化数据抽取)、异构数据整合(实体对齐、属性值决策、关系建立)、实体重要度计算、推理完善数据。
知识库
比如张艺谋的国籍需要对齐“中华人民共和国”、“中国(内地)”、“中国”三个值实现属性值对齐,“记过”、“国籍”、“国籍”实现属性对齐;再如出生日期对齐“1951年11月14日”、“1951-11-14”、“1951-11-14”实现属性值对齐。
实体对齐概念
属性值决策与关系建立
推理补充与验证
基于CFG句法分析
后台检索
总结:最后还是希望文章对你有所帮助,它主要是关于搜索引擎和知识图谱的一篇入门知识介绍,至少让你明白存在这么个东西,相当于一篇普及知识吧!如果有错误或不足之处,请海涵~
参考资料如下:
1.搜索引擎主要参考张俊林的书籍《这就是搜索引擎》,电子工业出版社
2.曲卫华,王群. 搜索引擎原理介绍与分析. 中国地质大学信息工程学院
3.佘正平. 搜索引擎原理及存在问题. 图书情报论坛
4.张蹇. 传统搜索引擎与智能搜索引擎比较研究. 郑州大学硕士学位论文
5.Eastmount. 知识图谱相关会议之观后感分享与学习总结
6.王元卓, 贾岩涛, 赵泽亚, 程学旗. OpenKN——网络大数据时代的知识计算引擎. 中科院计算机研究所
7.张坤. 面向知识图谱的搜索技术. 百度文库
以上内容来源于网络。如有涉及版权,版权归作者所有
以上是关于基础篇-SpringBoot那些事的主要内容,如果未能解决你的问题,请参考以下文章
深入理解 WKWebView(基础篇)—— 聊聊 cookie 管理那些事