I keep seeing "bootstrapping" mentioned in discussions of application development. It seems both widespread and important, but I've yet to come across even a poor explanation of what bootstrapping actually is; rather, it seems as though everyone is just supposed to know what it means. I don't, though. Near as I can figure, it has something to do with initialization tasks required of an application upon launch, but I could be completely wrong about that. Can anyone help me to understand this idea?
当前回答
亚历克斯,这和你的电脑启动时做的差不多。('Booting' a computer实际上来自于单词bootstrapping)
最初,运行BIOS中的小程序。它包含足够的机器代码来加载和运行一个更大、更复杂的程序。
第二个程序可能是类似于NTLDR(在Windows中)或LILO(在Linux中)的程序,然后执行并能够加载,然后运行操作系统的其余部分。
其他回答
在应用程序开发的上下文中,“引导”通常在讨论模块化和/或自动更新软件时出现。
而不是用户下载整个应用程序,包括他不需要的功能,并重新下载和手动更新它,只要有更新,用户只下载和启动一个小的“引导”可执行文件,它反过来下载和安装用户需要的应用程序的那些部分。此外,引导组件能够在每次启动时查找更新并安装它们。
I belong to the generation who flipped switches to enter a boot program. In the early 1980s, I worked on a microcomputer called Micro-78, developed by Electronics Corporation of India Ltd (ECIL). It was a sort of clone of Altair 8800. I distinctly remember what happens when a small boot program was entered using the toggle switches and executed by pressing a button. The program reads a second boot program contained in the 1st track of the floppy disk and overwrites it on itself in such a way that the second boot program starts executing to load a disk operating system. I think the term "bootstrap" refers to this process of the first boot program reading and overwriting the second boot program on itself, in a way "pulling itself up" with the additional functionality of the second boot program. That may be the origin of the original meaning of "the bootstrap program".
术语“自举”通常适用于系统依赖自身启动的情况,有点像鸡和蛋的问题。
例如:
如何编译用C编写的C编译器? 如果操作系统还没有运行,如何启动操作系统初始化进程? 如何启动一个分布式(点对点)系统,在这个系统中,客户端依赖于它们当前已知的对等点来查找系统中的新对等点?
在这种情况下,bootstrapping指的是一种打破循环依赖关系的方法,通常借助外部实体的帮助。
您可以使用另一个C编译器来编译(引导)您自己的编译器,然后您可以使用它来重新编译自己 您使用一段单独的代码来设置初始进程,而不依赖于操作系统提供的任何函数 您使用硬编码的初始对等体列表或提供对等体列表的硬编码跟踪器URL
etc.
就使用流行的Twitter Bootstrap而言,我觉得这种类型的Bootstrap是一种将模块化组件集成到Web应用程序中的操作,而Web应用程序甚至不必在需要或引用它之前承认模块化组件的存在。
开发人员只需将CSS Twitter Bootstrap主题的默认副本加载(引用)到Web应用程序中,就可以无缝地集成它。Vuola !然后,您可能需要重写其中的一些更改,但是您可以这样做,即资源/组件不受影响,并且完全可重用。
Web开发人员如何实现jQuery api等也是同样的概念,但开发人员并没有真正表示为引导本身。它所做的是提高灵活性和可重用性,同时允许应用程序的不同组件/资源的隔离自由驻留在同一服务器或CDN上。
注意:在计算引导处理MBR,在UNIX中,它需要一个特殊的引导加载程序或管理器,这是ROM中的一个小程序,将操作系统加载到RAM中。如果你想一下,同样的概念发生在引导加载程序检查MBR并根据这个表加载操作系统的动作中,而操作系统对此一无所知。
在一些web框架中有一个引导的例子。你调用index.php (bootstrapper),然后它加载框架的助手、模型、配置,然后加载控制器并将控制权传递给它。
正如您所看到的,这是一个启动大进程的简单文件。