分类: 嵌入式
2012-03-17 16:52:57
什么是应用程序实例
作者:nius 撰写日期:2012年3月2日
博客链接:
程序员经常会碰到 实例 这个词,英文是instance,由于这个词有些过于抽象以及不常用,让初学者很难理解到底什么是一个实例。但在这个词背后的概念确十分简单,简单到一句话就能说清楚:你在电脑上打开了两个qq登录了不同的帐号,这时,qq就是应用程序,你打开了两个qq程序的实例。
显然这打开的这两个qq不一样,但我们都叫它qq,这就是程序和程序实例的区别。
在我的大学生活中,第一次接触实例这个词,应该是在面向对象编程中,实例instance的概念是和类相关的,new SomeClass()我们说实例化SomeClass这个类,创造出了一个对象object,或者说实例。这个从类到对象的概念其实可以等同的延伸到程序中来。程序本身就是一个类,类是定义好的,定义了这个程序该如何运行。运行这个程序的时候,将这个类实例化,从而得到一个在内存中运行的程序实例,对应到操作系统中的进程。
第一次在面向对象编程之外接触实例这个词,是在学习数据库的时候。mysql或者sql server的实例,当时确实不明白Mysql就mysql嘛,mysql实例是个什么东西。其实就是一个运行起来的mysql服务。一般Mysql都是单实例single instance的,就是说一台机器上只能运行一个mysql,从而保证你的所有数据都存在了一起。这里说的mysql,指的是mysql server,即这个服务。我们从命令行或者一些客户端程序(例如navicat)查看mysql数据,都是开启了mysql client,即用来访问server的。客户端自然可以是多个实例。
相似的,tomcat等web服务器的实例,就好理解了。就是开了两个tomcat服务器嘛,一个用来跑这个应用,另一个用来跑另外一个应用。不过,开启两个tomcat比点开两个qq要麻烦一些。tomcat会占用你机器的一些端口,如果一个tomcat实例占用了,另一个实例不修改配置的端口,就无法启动。这个可以google到解决方案,修改一些配置就好了。