引擎是什么意思?
引擎是外来词,是英语Engine的音译过来的,也就是发动机的俗称!
有人把引擎称为发动机,其实,发动机是一整套动力输出设备,包括引擎、变速齿轮和传动轴等等,可见引擎是只是整个发动机的一个部分,但是却是整个发动机的核心部分,因此把引擎称为发动机也不为过。
对于引擎,大家都应该不陌生,引擎的主要部件是气缸,也是整个汽车的动力源泉。
发动机构造和原理:
汽缸包括缸体、进气孔、输油孔、出气孔、活塞和火花塞(汽油机)。
汽缸通过进气孔和输油孔注入汽油和空气,在汽缸内充分混合,
当火花塞点燃混合物后,混合物猛烈地爆炸燃烧,推动活塞向下运动,并产生动力。
同时,爆炸气巨大的压力还推开单向阀的出气孔,排出废气。
而后,汽缸内残余废气逐渐变冷,气压变低,汽缸外部的大气压又推动活塞向上运动,以准备进行下一次爆炸。
这就是简单的原理。
缸数区别与运转真实易懂视频:https://haokan.baidu.com/v?vid=11377366936532797941&tab=
https://haokan.baidu.com/v?vid=3660342228036751605&pd=bjh&fr=bjhauthor&type=video
https://haokan.baidu.com/v?vid=8305402372934319149&pd=bjh&fr=bjhauthor&type=video
https://haokan.baidu.com/v?vid=8694289145949853258&tab=
简单理解:发动机是汽车的“心脏”,是汽车的动力之源,运作的核心。
现也用作IT方面的术语,指经包装过的函数库,方便别人调用,如搜索引擎、图形引擎、物理引擎等。
不是某一种已经被定制开发完成的程序,而是可以拿来调用的核心组件。
存储引擎、游戏引擎、搜索引擎,都是其软件里的核心组件。
这种核心组件拿来使用,加一些代码就可以完成指定的任务,不用花大成本重复造轮子。
-------------------------------------------------------------------------------------------------------------------------------------------------
数据库存储引擎
参考链接:https://github.com/jaywcjlove/mysql-tutorial/blob/master/chapter3/3.5.md
https://zhidao.baidu.com/question/1049565846666168579.html
存储引擎=存储的发动机,存储的核心技术
存储引擎是数据库的发动机,决定数据库提供的功能和性能。
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。
这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。
MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。
你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。
选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因。其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储。遗憾的是,其它类型的数据库解决方案采取的“一个尺码满足一切需求”的方式意味着你要么就牺牲一些性能,要么你就用几个小时甚至几天的时间详细调整你的数据库。使用MySQL,我们仅需要修改我们使用的存储引擎就可以了
或者理解如下:什么是存储引擎?
关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时去很差;而我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,数据的处理上也会存在着差异,那么。对于MySQL来说,它提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。
参考链接:https://baijiahao.baidu.com/s?id=1620650969210059947&wfr=spider&for=pc
存储引擎是MySQL有别于其他数据库管理系统的最大特色,比如它的兄弟Oracle中就没有专门的存储引擎的概念,仅仅有OLTP和OLAP模式的区分,两者的差别不大,只有参数设置上的不同。Oracle无论哪种模式都是支持事务概念的,Oracle是一个不允许读脏的数据库系统。
回到MySQL身上,存储引擎不仅是MySQL的特色,也是作为MySQL核心的存在,那么它的作用到底是什么呢?
我们知道关系型数据库的数据是存在表里的,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式,每个表格就是一个数据。表是在存储数据的同时,还要组织数据的存储结构,而这些数据的组织结构就是由存储引擎决定的。即存储引擎的作用就是规定了数据存储时的存储结构。
现实生活中,由于不同业务产生了不同的数据,这些数据有的可能偏重于被频繁查询,有的要求增删速度快,有的则对事务、索引、外键有特殊规定。这样一来,就对存储数据的表要求使用不同的数据组织结构,也就是存储引擎。简而言之,就是业务直接决定了存储引擎。从这里就可以看出,同一个数据库内的多个表,可以使用各自符合业务的存储引擎,即存储引擎的使用级别是数据表,不是库,也不是记录。
比如MySQL中MyISAM引擎不支持事务的概念,多用于数据仓库这样查询多而事务少的情况,速度较快。
MySQL中InnoDB引擎支持事务的概念,多用于web网站后台等实时的中小型事务处理后台。
对我们来说,MySQL提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同存储引擎,从而提高MySQL的使用性能。对于MySQL支持的多种存储引擎,可以通过“SHOW ENGINES”语句来查看。对于日常工作来说,常用的存储引擎只有三种:默认的InnoDB、MyISAM和MEMORY。具体如何选择不在本文要求之中。
总结:简单来说,存储引擎就是数据的存储结构,由实际业务决定。
MySQL存储引擎的区别与比较
https://blog.youkuaiyun.com/keil_wang/article/details/88392433
https://github.com/jaywcjlove/mysql-tutorial/blob/master/chapter3/3.5.md
https://zhidao.baidu.com/question/1049565846666168579.html
存储引擎,即表类型(table_type)
用户可以根据应用的需求选择如何来存储数据、索引、是否使用事务等。选择合适的存储引擎往往能够有效的提高数据库的性能和数据的访问效率,另外一个数据库中的多个表可以使用不同引擎的组合以满足各种性能和实际需求。
MySQL支持很多存储引擎,包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE等,其中InnoDB和BDB支持事务安全。它还支持一些第三方的存储引擎,例如TokuDB(高写性能高压缩存储引擎)、Infobright(列式存储引擎)。
搜索引擎(简单了解)
https://baike.baidu.com/item/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/104812?fr=aladdin
所谓搜索引擎,就是根据用户需求与一定算法,运用特定策略从互联网检索出制定信息反馈给用户的一门检索技术。
搜索引擎依托于多种技术,如网络爬虫技术、检索排序技术、网页处理技术、大数据处理技术、自然语言处理技术等,为信息检索用户提供快速、高相关性的信息服务。搜索引擎技术的核心模块一般包括爬虫、索引、检索和排序等,同时可添加其他一系列辅助模块,以为用户创造更好的网络使用环境。
搜索引擎的整个工作过程视为三个部分:
一是蜘蛛在互联网上爬行和抓取网页信息,并存入原始网页数据库;
二是对原始网页数据库中的信息进行提取和组织,并建立索引库;
三是根据用户输入的关键词,快速找到相关文档,并对找到的结果进行排序,并将查询结果返回给用户。
游戏引擎(简单了解)
https://zhuanlan.zhihu.com/p/26356588
https://baijiahao.baidu.com/s?id=1620744599255753962&wfr=spider&for=pc
https://baike.baidu.com/item/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E/620879?fr=aladdin
https://wenku.baidu.com/view/7895ad26482fb4daa58d4bd1.html
什么是游戏引擎?
百科上是这样解释的:游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。
通俗一点就是说,游戏开发者完全没必要从零开始费时费力做一款游戏,而游戏引擎就可以理解成一系列的工具集成,包括渲染、碰撞、物理、动画、音效、网络、脚本等等模块,这是一套解决方案,它能够让你快速地制作并发布一款游戏。
游戏引擎是一个为运行某一类游戏的机器设计的能够被机器识别的代码(指令)集合。它像一个发动机,控制着游戏的运行。一个游戏作品可以分为游戏引擎和游戏资源两大部分。游戏资源包括图象,声音,动画等部分,列一个公式就是:游戏=引擎(程序代码)+资源(图象,声音,动画等)。游戏引擎则是按游戏设计的要求顺序地调用这些资源。
游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。
游戏引擎是游戏开发中又一个有copy趣的概念。它与汽车引擎等类似,也是为了让游戏跑起来和动起来的东西。而且,游戏引擎还应该是一个可以重复使用的事物,就像汽车引擎可以装在不同的汽车上使用一样。
它所指的是游戏的动力核心,或者或是一种游戏开发平台,比如最早的Doom引擎或者Quake引擎,它们自己是一款完整、独立的游戏,但是还通过游戏的扩展接口来帮助游戏玩家或者游戏开发者来改进游戏或者开发新的zd游戏,对于游戏开发者来说,可以在这个核心的基础上,创建新的模型、场景、声音甚至是全新的材质。
事实上,最初的游戏开发者在开发游戏的时候,所有的代码都是从“0”开始一行一行的写出来的,后来慢慢的有开发者发现,我开发的游戏的这个功能和世面是有些游戏一样,那我就把他那段代码复制过来再修改一下就好了(话说我们天朝从一开始就是这么做的好么~)。
慢慢的,游戏行业就出现了几段公开的通用代码,比如说 游戏人物的行走功能、升级功能、攻击功能,都是由通用代码写的,逐渐地,一个游戏框架就成型了。
直到1992年,3D Realms公司/Apogee公司发布了一款只有2兆多的小游戏——《德军司令部》(有兴趣的同学可以百度一下这个游戏,很有意思哦~)Wolfenstein 3D作为世界上第一款游戏引擎已经发布就震惊整个游戏圈,开发者发现,运用Wolfenstein 3D游戏引擎,只需要添加一点自己写的代码就可以拥有一个效果惊人的游戏。自此,游戏开发工作的效率及质量得到了质的变化。
所以,游戏引擎可以理解为已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。
时至今日,游戏引擎已经非常发达,利用开发软件的可视化和模块化,一款游戏的开发80%的工作其实都不用程序员写代码咯,大部分都是建模师、游戏架构师和游戏导演的工作啦~
通过上面这些枯燥的介绍我们至少可以了解到一点:引擎相当于游戏的框架。
框架打好后,关卡设计师、建模师、动画师只要往里填充内容就可以了。
因此,在3D游戏的开发过程中,引擎的制作往往会占用非常多的时间,《马科斯·佩恩》的MAX-FX引擎从最初的雏形FinalReality到最终的成品共花了四年多时间,LithTech引擎的开发共花了整整五年时间,耗资700万美元,Monolith公司(LithTech引擎的开发者)的老板詹森·霍尔甚至不无懊悔地说:“如果当初意识到制作自己的引擎要付出这么大的代价的话,我们根本就不可能去做这种傻事。没有人会预料得到五年后的市场究竟是怎样的。”
正是出于节约成本、缩短周期和降低风险这三方面的考虑,越来越多的开发者倾向于使用第三方的现成引擎制作自己的游戏,一个庞大的引擎授权市场已经形成。
总结:游戏引擎就是游戏运行里的核心组件工具或者接口,相当于游戏的框架,开发游戏的话只需要用这些组件工具去添加一些自己写的代码就能很快开发出来一款游戏了,而不是从头开始去写渲染器之类的组件,游戏引擎并不是指整个游戏的代码,而是那些核心的组件。