精华内容
下载资源
问答
  • kotlin的构造函数,构造函数,init代码块,伴生对象的执行顺序, 特点,使用场景,及跟java的比较 测试代码1: class Person(var from: String) { /*属性from*/ //已经在构造函数中声明 private var from: ...

     

    kotlin的主构造函数, 次构造函数, init代码块, 伴生对象的执行顺序, 特点, 使用场景, 及跟java的比较 

     

    目录

    kotlin的主构造函数, 次构造函数, init代码块, 伴生对象的执行顺序, 特点, 使用场景, 及跟java的比较 

    测试代码1:

    结果1: 

    测试代码2:

    结果2: 

    结论--执行顺序: 

    结论--跟java的比较, 特点, 使用场景: 

    Java的初始化块、静态初始化块、构造函数的执行顺序及用途


     

     

    测试代码1:

    class Person(var from: String) {
    
        /*属性from*/
        //已经在主构造函数中声明 private var from: String = ""
    
        /*次构造方法*/
        constructor(from1: String, name: String) : this(from1) {
            println("constructor, from:$from1\n")
        }
    
        companion object {
            val instance = Person("companion")
    
            /*伴生对象中的初始化代码*/
            init {
                println("companion init 1\n")
            }
    
            init {
                println("companion init 2\n")
            }
    
            /* 伴生对象中不允许有构造函数
            constructor() {
                println("companion constructor\n")
            } */
        }
    
        /*初始化代码块*/
        init {
            println("init 2, from:${from}\n")
        }
    
        /*初始化代码块*/
        init {
            println("init 1, from:${from}\n")
        }
    
    }
    
    fun main(args: Array<String>) {
        println("调用次构造方法:\n")
        Person("main1", "name1")
    
        println("\n\n调用主构造方法:\n")
        Person("main2")
    }

     

    结果1: 

    调用次构造方法:
    init 2, from:companion
    init 1, from:companion
    companion init 1
    companion init 2
    init 2, from:main1
    init 1, from:main1
    constructor, from:main1
    
    
    调用主构造方法:
    init 2, from:main2
    init 1, from:main2

     

    测试代码2:

    如果把main函数改成: 

    fun main(args: Array<String>) {
        println("\n\n调用主构造方法:\n")
        Person("main2")
    
        println("\n\n调用次构造方法:\n")
        Person("main1", "name1")
    }

     

    结果2: 

    调用主构造方法:
    init 2, from:companion
    init 1, from:companion
    companion init 1
    companion init 2
    init 2, from:main2
    init 1, from:main2
    
    
    调用次构造方法:
    init 2, from:main1
    init 1, from:main1
    constructor, from:main1

     

    结论--执行顺序: 

    1. 伴生对象中成员变量初始化

    2. 伴生对象中init代码块按先后顺序执行

    3. 类的init代码块按先后顺序执行

    4. 类的主构造函数

    5. 类的次构造函数

     

     

    结论--跟java的比较, 特点, 使用场景: 

     

    1.  kotlin的伴生对象(companion object)相当于java中的静态初始化块(static {}), 只被同个类的所有实例的第一个实例执行一次, 用于静态成员变量初始化和初始化代码

    2. kotlin的init代码块(init {})相当于java的非静态初始化块({}), 每个类实例都会执行, 且按先后顺序执行, 用于对多个构造函数的代码复用

    3. kotlin的主构造函数, 在java中没有, 比次构造函数(constructor)先执行 (从次构造函数需要继承 : this()主构造函数已经可以推测是主构造函数先执行), 每个类实例都会执行, 用于类成员变量的声明/赋值, 由于没有代码块, 所以不能做其他初始化逻辑

    4. kotlin的次构造函数(constructor)相当于java的构造函数, 函数签名要跟主构造函数不一样, 否则报错, 可以重载出多个次构造函数, 用于类初始化, 由于有代码块, 所以可以做其他初始化逻辑

     

     

    Java的初始化块、静态初始化块、构造函数的执行顺序及用途


    https://blog.csdn.net/guyue35/article/details/105094901

     

     

     

    展开全文
  • 顺序结构】:程序开始,程序结束 【分支结构】:在顺序结构基础上,根据条件进行选择执行方向 【循环结构】:在顺序结构基础上,根据条件进行多执行相应循环 分支结构:根据条件的成立与否,选择执行...

    算术运算符

    除 /:

    1、参与的数类型都是整型时,做取整运算
    即商n余m,结果为n
    2、只要有一个浮点数参与,就会做类似精确运算
    ##取余%:
    取余运算符号,也叫取模运算符号
    做除法运算时,商n余m,结果为m,而且被除数必须是整数
    1、参与运算都是整数时,余数是精确值
    2、有浮点数做除数时,余数不一定是精确值
    【取余运算一般被用来判断,一个数能否被另一个数整除】
    【被除数为正,取余结果为正
    被除数为负,取余结果为负】

    ++、–:

    自增自减运算符
    符号要与变量一起使用
    表示变量自动+1 自动-1;
    ++a\a++: 是a=a+1
    –a\a–: 是a=a-1
    1、与变量在一起,不与其他任何符号连用时
    (单独使用)
    ++a --a a++ a–
    此时,变量一定会+1 或者-1
    2、自增自减运算符与其他符号连用时
    需要考虑表达式的值
    ++a/a++/–a/a-- 整体看成表达式

        符号在前,先运算再赋值
        符号再后,先赋值再运算
        如:int a = 1;
           a = ++a;
    

    关系运算符:>, <, >=, <=, ==, !=

    用来判断条件是否成立,一般都用在分支结构或循环结构

    逻辑运算符:&&(与), ||(或), !(非)

    当有两个条件以上进行判断是否成立时
    需要使用逻辑运算符
    1<a<3: a>1&&a<3 或者 a<3&&a>1

      &&:
           用于判断两个条件是否同时成立
          【全真为真,一假则假】      
          
       ||:
           用于判断一则有条件成立
          【一真即真,全假则假】
          
        !:
           用于条件的否定
          【非真即假,非假即真】
    

    又称&&和||为【短路运算符】
    当使用&&或||时,第一个条件能确定结果时,第二个条件不会执行
    这种情况叫【短路现象】
    —单个符号 &(与) |(或) 【没有短路现象】

    运算符之赋值运算符

    = : 赋值运算符 ,给前面的变量赋值
    【扩展运算符】:+=,-=, =, /=, %=
    a=b 相当于 a = a * b;
    a+=b 相当于 a = a + b;

    运算符之【三目运算符】 【 = ?:】(三元运算符)

    关系运算与条件运算统称为【条件运算】
    变量类型 变量 = (条件表达式)? 值1:值2;
    变量类型:需要与值1或者值2的类型相同
    而值1与值2的类型要么相同
    要么可以自动转换
    程序的运行顺序:
    【顺序结构】:从程序开始,到程序结束
    【分支结构】:在顺序结构基础上,根据条件进行选择执行方向
    【循环结构】:在顺序结构基础上,根据条件进行多次执行相应循环

    分支结构:根据条件的成立与否,选择执行方向

    (一)if分支结构:
    【1】if(条件表达式){
    代码块 //条件成立时,执行的逻辑
    }
    【2】if(条件表达式){
    代码块1//条件成立时执行
    }else{
    代码块2//条件不成立时执行
    }
    【3】if(条件1){
    代码块1;
    }else if(条件2){
    代码块2;
    }else if(条件3){
    代码块3;
    }else{
    代码块4;
    }

    运算符优先级以及执行顺序
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    总结一句话:扩建点,单算移比较,位辑三等点。
    (括号->点,单目、算数、移位、比较,位、逻辑、三目、逗号。)
    ————————————————
    版权声明:本文为CSDN博主「洛铭」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_42528287/article/details/86599848

    展开全文
  • 【数据结构】顺序查找

    千次阅读 2018-12-07 15:44:35
    顺序查找(Sequential Search) 基本概念 在介绍查找算法前我们先重温几个重要概念: 1)数据:客观事物的符号表示,是所有能输入计算机中,并能被计算机程序处理的符号的总称。如数学计算中用的整数和实数...

    主要内容


     

    基本概念

    在介绍查找算法前我们先重温几个重要概念

    1)数据客观事物的符号表示,是所有能输入到计算机中,并能被计算机程序处理的符号的总称。如数学计算中用到的整数实数,文本编辑中用到的字符串,多媒体程序处理的图形图像声音动画等通过特殊编码定义后的数据。

    2)数据元素数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。数据元素也称记录,用于描述一个完整的对象,该对象可以是一名学生的信息(记录),某一次棋局,图中的某一个顶点等。

    3)数据项组成数据元素的、有独立含义的、不可分割的最小单位。如学生记录中的学号、姓名、性别等都属于数据项。

    4)数据结构相互之间存在一种或多种特定关系的数据元素的集合。数据结构包括逻辑结构(逻辑表示)和存储结构(物理实现)。

    5)查找表同一类型的数据元素(或记录)构成的集合,可以由线性表、树结构等多种数据结构来实现。

    6)关键字数据元素(或记录)中的某个数据项的值,相当于“数据库”知识中一行记录的主码(PRIMARY KEY)。

    typedef struct          /*定义数据元素结构体*/
    {
        KeyType key;        /*关键字*/
        OtherType other;    /*其他数据项*/
    } Element;
    
    
    typedef struct          /*以顺序表结构定义查询表*/
    {
        /*顺序表借助数组存储数据,因此需要空间基地址base(数组头)和当前长度length(数组长度)*/
        Element *base;      
        int length;
    } SSTable;              /*SSTable表示顺序查询表*/

    7)查找根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。同样可以类比数据库的数据查询针对不同的数据结构,查找算法也会有所不同。

    8)平均查找长度衡量查找算法性能的一个标准。


     

    在查找表的数据结构中,线性表是最简单的一种。

    线性表查找又分为顺序查找折半查找分块查找

     

    顺序查找(Sequential Search)

    顾名思义,从查询表的一头顺序往下查找,直至找到含有给定关键字的数据元素。

    下面给出顺序查找的两种算法形式:

    /*-------First-------*/
    
    int Seq_Search(SSTable t, KeyType key)
    {
        for(int i = 0; i < length; i++)
        {
            if(t.base[i].key == key) return i;    
        }
        return 0;
    }
    
    
    /*-------Second-------*/
    
    int Seq_Search(SSTable t, KeyType Key)
    {
        t.base[0].key = key;    /*将头元素设为监视哨*/
    
        for(int i = t.length; t.base[i] != key; i--);
    
        return i;
    }

    Tips:

    1)base是数组头,同时也作数组名,对数组和指针概念不清晰的同学请戳“这里”。

    2)在第一种算法形式中,base[]的空间也用来存放数据元素,所以循环是从0开始,到length前结束,共遍历length个位置(但貌似一般习惯在1到length存放数据元素);

    3)在第二种算法形式中,我们设置了“监视哨”,“监视哨”的含义可以先不去深入理解,我们先知道它的作用是什么。

    设置头元素为监视哨后,每一步循环都只需要判断关键字是否为给定值,而不需要先判断i到哪了,再去判断是否找到给定值。

    与此同时,因为设置了监视哨,存储length个元素的位置变成了从1到length

    至于为什么第一种形式可以用从前往后查找,而第二种形式建议用从后往前查找,这就留给大家思考了。

    4)虽然在第二种算法形式中减少了判断步骤,但是两种形式的时间复杂度是一样的。不过实践证明,在查询数据很多很多的时候,第二种算法形式的处理时间几乎是第一种的一半。

    展开全文
  • 硬盘分区、扩展分区和逻辑分区

    千次阅读 2014-12-02 20:39:30
    1、如果硬盘有3个分区,1个扩展分区分成了4个逻辑分区,此时如果第一个分区是活动分区,那么第二个和第三个分区能不能像访问逻辑分区那样访问? 2、当装多个系统时,如果只有一个分区,是在哪部分选择进入...

    这里只是介绍了几种概念,但是还有几个问题没有搞明白:

    1、如果硬盘有3个主分区,1个扩展分区分成了4个逻辑分区,此时如果第一个主分区是活动分区,那么第二个和第三个主分区能不能像访问逻辑分区那样访问?

    2、当装多个系统时,如果只有一个主分区,是在哪部分选择进入哪个系统的?

    3、如果用多个主分区装入不同的系统,如何设置活动分区,使得进入不同系统?

    转自:http://www.pc6.com/infoview/Article_53651.html

    很多人都会给硬盘进行分区操作,也知道系统盘一般装于C盘,其它盘存储软件、文档、电影等资料。感觉通常我们使用硬盘分区工具给硬盘划分区域时就像切蛋糕一样,对不对?

    那么你知道这些分区之间还有主分区、扩展分区、逻辑分区、活动分区四种类型的划分吗?本文就为你详细讲解四种硬盘分区的由来与作用。

    点击这里可下载硬盘分区软件

      pqmagic(硬盘分区魔术师)9.0中文版
    授权:免费软件 大小:6KB 语言: 简体
    下载地址 本周共下载 28466 次

      分区助手专业版V5.5 免费版
    授权:免费软件 大小:7.0M 语言: 简体
    下载地址 本周共下载 3260 次

    给新硬盘上建立分区时都要遵循以下的顺序:建立主分区→建立扩展分区→建立逻辑分区→激活主分区→格式化所有分区

    分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了BIOS系统下硬盘主引导记录(即Master Boot Record,一般简称为MBR)和引导记录备份的存放位置。
    而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过之后的高级格式化,即Format命令来实现。

    硬盘的分区由主分区、扩展分区和逻辑分区组成:主分区(注意扩展分区也是一个主分区)的最大个数是四个,其个数是由硬盘的主引导记录MBR(Master Boot Recorder)决定的,MBR存放启动管理程序(如GRUB)和分区表记录。扩展分区下又可以包含多个逻辑分区 --- 所以主分区范围是从1-4,逻辑分区是从5开始的。

    window和linux支持的分区结构:
    windows和linux支持图四图五图六图七的分区机构,即:
    一个主分区+一个扩展区
    二个主分区+一个扩展区
    三个主分区+一个扩展区
    四个独立主分区

    主分区:也叫引导分区,最多可能创建4个,当创建四个主分区时候,就无法再创建扩展分区了,当然也就没有逻辑分区了。主分区是独立的,对应磁盘上的第一个分区,“一般”就是C盘。在Windows系统把所有的主分区和逻辑分区都叫做“盘”或者“驱动器”,并且把所有的可存储介质都显示为操作系统的“盘”。因此,从“盘”的概念上无法区分主分区和逻辑分区。并且盘符可以在操作系统中修改,这就是要加上“一般”二字的原因。

    扩展分区:除了主分区外,剩余的磁盘空间就是扩展分区了,扩展分区是一个概念,实际上是看不到的。当整个硬盘分为一个主分区的时候,就没有了扩展分区。

    逻辑分区:在扩展分区上面,可以创建多个逻辑分区。逻辑分区相当于一块存储截止,和操作系统还有别的逻辑分区、主分区没有什么关系,是“独立的”。

    活动分区:就是当前活动的、操作系统可以启动的分区。

    格式化是针对主分区和逻辑分区的。要格式化是因为这和操作系统管理文件系统有关系。没有格式化的分区就像一张白纸,要写入数据,必须对白纸打上“格子”,每个格子里面写一块。而操作系统只认这些格子。

    转自:http://www.linuxeden.com/forum/thread-87644-1-1.html

    利用多个主分区安装多个系统[原创]

    很久前写的东西了,本来想去投稿换两个小钱来教重修费,结果投了两家,人家编辑不要.今天突然在硬盘里翻出来贴在这里,希望对大家有用,这里不太容易贴图,所以这里只有文本,完整的包括图片的文章可以在我的个人主页上下载 : 

    http://go.6to23.com/gucuiwen/wz.doc
    http://go.6to23.com/gucuiwen/wz.doc
    (有流量限制的,人多了就下不了了.)

    充分利用主分区安装多系统

    随着电脑硬盘容量的不断增加、电脑性能的不断提高和用户对游戏娱乐及工作的不同需求。越来越多的计算机用户都在自己的电脑上安装两套以上的操作系统。目前PC机上流行的操作系统主要是微软的WINDOWS系列,各种版本的LINUX系统(在欧美国家占有率22%),和WINDOWS曾经的竞争对手IBM的OS/2及后续版本。通常的电脑用户为了游戏和工作的需要,会在一台电脑上安装WINDOWS98+WINDOWS2000双系统或者WINDOWS98+WINDOWSXP双系统。很多电脑爱好者还会装上一套LINUX系统来体验在PC机上使用UNIX的快感。通常情况下一般的使用者会分一个主分区,然后将WIN98装在主分区中,而将WINXP(或WIN2000)和 LINUX装在扩展分区中。这样的安装虽然可以利用系统提供的引导工具来引导多套系统,但是有的时候由于种种原因需要重新安装系统,而重新安装系统后就会破坏原有的系统引导工具,如重新安装WIN98后WINXP(或WIN2000)+WIN98的双启动菜单就会没有。LINUX系统的多系统引导工具LILO(或GRUB)的启动菜单也会被覆盖。虽然WIN2K和LINUX的安装光盘都提供了修复功能来修复系统引导菜单。但是这样做比较麻烦,而且对于很多新手来说在格式化分区重装的情况下修复也不太容易。
    因此如何在安装多套系统的情况下,使多套系统无论是在重装、格式化还是删除的情况下都互不影响是一个值得探讨的问题。下面就以WIN98+WINXP+LINUX为例,介绍如何利用多个主分区来安装互不影响的多套系统。
    在正式开始以前让我们先来了解一下关于分区的基本知识。硬盘的分区可以分为主分区(Primary Partition)和逻辑分区(Logical Partition)。逻辑分区包含在扩展分区(Extend Partition)中。扩展分区也是主分区只是由于它的作用是扩展分区数目所以叫扩展分区。主分区、扩展分区和逻辑分区的关系见图一。
    (图一)
    事实上,硬盘分区不是必须的,在某些古老的操作系统中就没有分区的概念。但是为了便于硬盘数据的管理和多系统共存,现代操作系统(Modem Operation System)都引入了分区的概念。由于历史的原因每个硬盘只能分四个主分区(这好像是由微软首先开创的)。逻辑分区是在主分区数量有限的情况下对分区数目的扩展。事实上逻辑分区的分区信息装在扩展分区中。这样就可以在主引导扇区分区表容量有限的情况下拥有更多的分区。
    现在让我们来看看计算机是怎么载入并运行操作系统的。计算机启动时主版BIOS首先读取第一块硬盘的第一柱面第一磁头的第一扇区的主引导记录(Major Boot Record)并运行。主引导记录检测同样位于第一扇区的分区表(Partition Table)并找出被标记为活动(Active)的主分区(标志位为0x80)。找到活动主分区后主引导记录读取活动主分区的主引导扇区中的内容并运行,然后由活动主分区的引导记录负责把操作系统的核心文件装入内存并运行。这时系统就可以运行。所以只有装在主分区中的系统才能在不借助额外的引导工具的情况下独立的启动并运行。
    现在大部分电脑爱好者通常都把硬盘分为一个主分区和扩展分区然后再在扩展分区中分逻辑分区。把一套系统装在主分区把另外的系统装在逻辑分区中。这样宝贵的主分区资源只用掉两个,其他两个就白白浪费了。而且在重装、删除系统和格式化系统所在的分区后其他的系统都无可避免的受到影响。
    通过对硬盘分区知识的简单了解现在我们知道了主分区在安装多套系统时的作用。现在就来具体的说明如何分多个主分区并安装多套互不影响的操作系统。
    1.分区
    WINDOWS98提供的分区工具fdisk只能分一个主分区。因此我们需要借助第三方的分区工具来分多个主分区。推荐使用图形化分区工具 diskgenius。Diskgenius的界面如图二。注意diskgenius在WINXP和WIN2K中运行时会显示硬盘未安装。所以建议事先做一张WIN98启动盘,把diskgenius拷贝到启动盘上使用。
    单击鼠标选中硬盘空白区域,单击 “分区”→“新建分区”,在对话框中输入分区大小(如图三)。分区的具体大小可根据需要自己确定。按确定后弹出对话框询问分区类型,默认为DOS FAT既FAT32、FAT16和FAT12具体的类型由分区大小决定。点确定就建好了一个分区。重复上述步骤划分另外两个主分区。如果只想分四个区可以不建扩展区而将四个分区都分为非扩展分区的主分区。但是目前硬盘容量普遍比较大这样做不太合理,一般不推荐。分完三个主分区后建扩展分区(如图五)。同样会弹出对话框询问分区大小,这时应该把剩余的空间全部划为扩展分区。因为每个硬盘只能分四个主分区(包括扩展分区)。分了三个主分区和一个扩展区后分区个数已经用完,如果还有剩余空间这部分剩余空间将无法使用。最后按照分主分区的方法在扩展分区中划分逻辑分区。全部分完后需要将一个主分区标记为活动(即可以引导系统启动的分区)。方法为:点中一个主分区后 点“分区” → “激活分区”(如图六)。为了便于说明我们先将第一个分区标记为活动分区。最后存盘退出(如图七),存盘后会改写分区表,原分区上的数据将全部丢失,在存盘前请确保已经备份好了硬盘上的重要数据。

    图二

    图三

    图四

    图五

    图六

    图七
    另外需要说明一点。在选择分区类型的时候WIN98只能用FAT。WINXP和WIN2K同时支持FAT文件系统和NTFS文件系统。WINXP和WIN2K的大部分优秀新特性也是基于NTFS文件系统的,但是为了WIN98可以访问WINXP或WIN2K的分区可以将安装WIN2K或WINXP的分区格式化为FAT分区。具体如何可按各人需要选定。另外关于分区的大小我建议不要分的太大,因为分多主分区的目的是安装系统,而非存放文件和安装软件。就那本人自己的硬盘分区来说,我的第一个主分区装了WIN98。除了系统本身和某些必须装在系统文件夹下的动态连接库文件外一般不会放装其他东西,所以将它分成1G,事实上一个WIN98系统只需要400M左右,加上300M左右的虚拟内存页面文件、临时文件和整理硬盘需要的约15%的空闲空间。1G的大小是比较合理的。在实际使用中也没有出现空间不够的情况。WINXP比较大,因此装XP的那个分区要稍微大一点,实际使用经验证明3G不到的空间就可以满足要求。不必划分太多空间浪费。如果是装WIN2K则2G的空间绰绰有余。我的第三个主分区安装了Redhat Linux系统,连 Office、数据库服务器软件在一起总共需要3G多的空间。我划分了4G以便将来扩充。其他的空间都划分给扩展分区,然后再在扩展区中划分逻辑分区。逻辑分区的数目不受限制,可以分的多一些以便于文件管理。建议不要把软件装在系统所在分区上,应当专门分一个逻辑区安装软件。这样不仅在格式化硬盘重装后大部分软件还可以使用。而且系统分区容量小、速度快整理碎片也方便。当然关于分区大小仁者见仁智者见智,这里只是给一个建议供参考。
    2.安装系统
    分区分好后我们可以安装系统了。但是在安装系统前为了便于说明我们需要做一些约定。
    WINDOWS系统的易用性是屈指可数的,它屏蔽了普通用户不需要知道的计算机技术细节,在计算机应用的推广中作出了很大贡献。但是这给我们在说明利用多主分区安装多系统时造成一点小麻烦。在只有一个硬盘的情况下WINDOWS系统会把活动的主分区分配以C盘的盘符,然后给第一个逻辑分区分配以D盘的盘符,第二个为E,依此类推。如果有不止一个主分区那么会把活动分区以外的主分区放在逻辑区后面。现举例说明:假设我们分了三个主分区和两个逻辑区,并且第一个主分区为活动(这里的“第一个”指其物理位置位于硬盘的最外圈),那么WINDOWS启动后C盘为第一个主分区,D盘为第一个逻辑区,E盘为第二个逻辑区,F盘为第二个主分区,G盘为第三个主分区。在安装多系统过程中需要将不同的主分区标记为活动,所以会出现不同的分区在不同情况下都是C盘的情况。显然,这时候微软的这种分区挂装和访问的方法将很难说清到底哪个是哪个。所以我们还是来沿用一下在UNIX类系统中更为科学合理的命名法。
    我们将硬盘的第一个主分区命名为hda1,即 Hard Disk A partition 1(第A个硬盘第一个分区)。第二个为hda2,第三个为 hda3,扩展分区为hda4,扩展分区中的第一个逻辑区为hda5,第二个逻辑区为hda6,依次类推。在以下的叙述中都将用这种命名法。
    好了!万事具备只欠东风。现在就可以安装系统了。
    我们已经在分区的时候将hda1标记为活动。所以可以不必重新标记活动分区而直接安装系统。我们要安装的是WIN98+WINXP+LINUX系统。到底要从哪一套装起,从理论上来说,在三个主分区上安装三套不同的操作系统可以随便从哪一套系统,随便哪一个分区装起。装完后只要将相应的主分区标记为活动分区就可以分别启动三套系统。但是我们可能需要利用WINXP提供的系统引导工具NTLDR(NT LoaDeR)和LINUX提供的引导工具LILO(LInux LOader)来启动系统。所以还是按照“传统”的顺序先装WIN98再装WINXP最后装LINUX。需要说明的是:以上说的利用NTLDR和LILO是指利用他们的引导功能来直接引导系统,而不必在每次启动系统前将相应的主分区设置为活动。没有了引导工具系统照样可以启动,只是比较麻烦。
    顺便来说明一下系统引导工具的基本原理。正常情况下BIOS读取主引导记录并检测哪个主分区活动。找到活动分区后读取活动主分区的引导记录,再由活动分区的引导记录引导系统内核。主分区中的分区引导记录是由操作系统安装的。引导工具的作用就是取代主引导记录的位置,在BIOS读取并运行它以后提示用户启动哪套系统。用户选择后引导工具直接读取系统所在的主分区的引导记录并运行,所以,即使该主分区没有被标记为活动也可以引导系统。
    好了,先装WIN98系统。我想这对于装系统广大的电脑爱好者早已驾轻就熟了,这里不再说明。由于事先已经将hda1标记为活动,所以按照WINDOWS的盘符分配原则,在装WIN98的时候hda1为C盘。装好98并可以正常运行后,再在WIN98下运行Disk Genius,将hda2标记为活动分区。也可以用98自带的fdisk(如图九和图十)。如果在分区的Status 有A标志说明该分区为活动分区(如图十)。

    图八

    图九
    注意千万不可忘记这一步,否者在hda2上安装完WINXP后,XP必须的引导文件还是装在hda1上,格式化hda1或重装WIN98后hda2上的WINXP还会被破坏。
    完成后重新启动电脑。如果WIN98不能启动并出现没有安装系统的提示信息就说明已经将hda2设置为活动了。因为此时hda2上还没有安装系统所以电脑不能启动。把WINXP的安装光盘放入光驱并设置CMOS为从光驱启动。按照正常的步骤安装WINXP,在安装程序提示用户选择安装系统的盘时千万要注意此时的C盘是 hda2。一定要搞清楚,不要把刚刚装在hda1上的WIN98的覆盖掉了。如果初次安装分不清楚的话可以在容量上判别到底哪个是hda1哪个是hda2哪个是hda3。装完WINXP后启动电脑,可以发现并没有出现WIN98+WINXP的双启动菜单,直接进入了WINXP,这是完全正常的。接下来重复上述步骤把hda3设置为活动分区,可以用WIN98启动盘启动电脑并用fdisk来完成这步工作。重新启动电脑后安装LINUX系统,LINUX系统的安装方法可以参阅相应的入门资料。在安装程序询问把引导程序装在主引导山区(MBR)上还是装在主分区扇区上时,要选择装在分区引导扇区上。否则重新安装WIN98后WIN98会向主引导扇区中写入引导记录,从而破坏LILO使LINUX无法启动。另外,现在大部分版本LINUX系统在默认情况下认为在hda1上有一套系统,并标识为DOS。如果在hda2上还有系统则不能自动添加到引导菜单中去,需要在安装过程中手动添加,只要按照提示完成添加即可。安装完LINUX后重新启动电脑,LINUX应该可以正常启动。并出现其他两个系统的标识供用户选择。此时,三套系统都安装完成,并可以分别启动。这样安装在三个主分区上的系统无论是删除系统、格式化分区还是删除分区,其他系统都不受影响。
    3. 后续问题
    在安装完LINUX系统后活动分区为hda3。用的是LILO来引导其他两套系统。如果LINUX系统被删除或者LILO被破坏,其他两套系统将无法引导。下面就来讨论一下这些后续需要注意的问题。这时最简单的办法是设置CMOS让电脑从软盘启动,利用WIN98启动盘的fdisk把相应的主分区设置为活动。如需启动WINXP就把hda2设置为活动,需要启动WIN98就把hda1设置为活动。拿出软盘重启电脑就可以进入相应的系统。显然这样的方法是比较麻烦的。可以在删除了LINUX所在的分区后利用NTLDR来引导系统。方法如下:用fdisk设置hda2为活动,启动WINXP,打开C盘根目录下的boot.ini文件。注意,这个文件是隐藏的系统文件,需要在“工具”→“文件夹选项”→“查看”中去掉“隐藏受保护的操作系统文件”选项才可以看到。(如图十)

    图十
    假设启动WINXP后在XP里看到WIN98所在的盘为F盘,则编辑boot.ini文件(如图十二):

    图十一
    保存后重启电脑就可以看到WIN98+WINXP双启动菜单。但是光经过这样处理在启动菜单中选择“Windows 98”后并不能启动WIN98。需要将安装WIN98的分区(即hda1)标记为活动。方法如前面已经讲过。
    那么如果格式化了WIN98所在分区或者WINXP所在的分区呢?格式化了WIN98所在的分区后LILO并没有被删除,所以还可以用LILO引导WINXP和LINUX,同理格式化了WINXP所在的盘后WIN98和LILO也可以正常启动。那么如果出现其他情况呢?其实只要明白系统引导的过程和系统引导工具的基本原理就不难解决了。当然,如果实在想不到其他的办法最后的法宝就是用WIN98启动盘和fdisk来手动设置活动分区从而达到启动系统的目的。另外还有很多第三方的系统引导工具,如比较著名的 System Command、 XOSL(eXtend Operation System Loader)。总之,只要明白了基本原理就不难找到解决方案。
    另外在重新安装系统的时候一定要注意先把需要安装系统的那个分区设置为活动分区这样系统引导所需要的引导工具,核心文件才能装在该分区上,而不会因为装到其他分区上而破坏其他系统。比如因为谋种原因需要格式化hda1并重新安装WIN98,则应该先把hda1设置为活动。这样,用WIN98安装光盘安装系统时hda1就是C盘。WIN98系统的全部文件都会装在hda1上。当然,安装完成后,为了还能够用LILO启动各套系统可以将hda3重新设置为活动。
    除了安装以上三套系统外,利用多个主分区还可以同时安装多套WIN98,多套不能被常规的引导工具引导的系统。当然操作系统并不是只有装在主分区里才能启动,只要有合适的系统引导工具,操作系统也可以装在逻辑区中。如WINXP可以用NTLDR来引导、LINUX可以用LILO来引导。可以把那些可装在逻辑区中的系统装在逻辑区,腾出主分区来安装必须装在主分区中的系统。这样只要硬盘足够的大并且主板BIOS支持,理论上可以装无数套系统。当然具体的方法需要各位电脑爱好者自己去探索了。http://go.6to23.com/gucuiwen/wz.doc

    展开全文
  • 浅谈文件的逻辑结构

    千次阅读 2020-11-24 11:04:34
    用户观点出发观察的文件组织结构称为文件的逻辑结构,逻辑结构的文件称逻辑文件。 (1)流式文件(无结构文件) 把文件视为有序的字符集合,其内部不再对信息进行组织划分,是依次的一串字符流构成的文件。 文件...
  • 数据结构一线性表 (顺序表、单链表、双链表)

    万次阅读 多人点赞 2018-07-17 16:38:57
    1、线性表及其逻辑结构   线性表是最简单也是最常用的一种数据结构。英文字母表(A、B、…、Z)是一个线性表,表中每个英文字母是一个数据元素;成绩单是一个线性表,表中每一行是一个数据元素,每个数据元素又由...
  • 目录: 网络常见术语介绍 计算机之间是如何互相通信的 相同网段的通信 不同网段的通信 ...第六步:释放TCP连接(四挥手) 总结 网络常见术语介绍 &nbsp;&nbsp; &nbsp; &nbs...
  • 逻辑英语语法笔记

    万次阅读 多人点赞 2019-04-02 21:32:03
    该笔记是笔者学习钟平老师的逻辑英语英语语法的笔记,主要目的总结和复习,如需要更深入学习请网易有道精品课里学习。 一、中英文对切公式 1、基本公式 主干相同:主谓宾位置不变 修饰语英文后置,中文...
  • 什么逻辑库、物理库? 逻辑库/逻辑文件:给用户看的(即Database和Table就是我们常说的逻辑库的范畴) 物理库/物理文件:存储在计算机中的(即机器和Port就是我们常说的物理库的范畴。) 一个服务器有多个实例(port...
  • RocketMQ-顺序消息Demo及实现原理分析

    万次阅读 多人点赞 2019-05-31 19:30:30
    文章目录场景分析全局顺序消费局部顺序消费DemoProducer DemoNormal Consumer DemoOrder Consumer Demo源码分析锁定MessageQueue客户端实现broker端实现锁定ProcessQueue 场景分析 顺序消费是指消息的产生顺序和消费...
  • 基本时序逻辑电路

    千次阅读 2020-04-10 17:38:24
    上图所示电路为基本RS锁存器,其重要的结构特点为反馈线,该线使得时序逻辑电路与普通组合逻辑电路有所区分。 2.输出状态规定 基本RS锁存器状态有两种,及0状态与1状态。当输出Q = 0且Q非 = 1时,我们称该锁存器处于...
  • RocketMQ——顺序消费(代码)

    万次阅读 2018-07-03 17:42:01
    关于rocketmq顺序消费的理解和图示可以查看该博文:RocketMQ——顺序消费和重复消费本博客主要是以代码示例来了解顺序消费的相关内容,建议在此之前先了解下顺序消费的原理。注:RocketMQ可以严格的保证消息有序,但...
  • 数电基础:时序逻辑电路

    万次阅读 多人点赞 2019-08-19 08:52:21
    虽然每个数字电路系统可能包含有组合电路,但是在实际应用中绝大多数的系统还包括存储元件,我们将这样的系统描述为时序电路。... 时序逻辑电路是数字逻辑电路的重要组成部分,时序逻辑电路又称时序电路,...
  • 文件的逻辑结构

    千次阅读 2018-02-12 10:07:45
    文件的逻辑结构是用户观点出发看到的文件的组织形式。文件的物理结构是实现观点出发,又称为文件的存储结构,是指文件在外存上的存储组织形式。  文件的逻辑结构与存储介质特性无关,但文件的物理结构与存储...
  • 逻辑漏洞概述

    千次阅读 2018-10-17 22:40:33
    访问: 主体与客体之间的信息流动。...自主访问控住(DAC 大部分使用):由客体的属自主对客体进行管理,自主决定是否将访问权限授予其他主体。 强制访问控制(MAC 军方或重要政府部门用):安全...
  • 将一个请求链路中的非核心流程,拆分出来,异步处理,减少流程链路的处理逻辑,缩短RT,提升吞吐量。如:注册新用户发短信通知。削峰填谷。避免流量暴涨,打垮下游系统,前面会加个消息队列,平滑
  • Verilog组合逻辑和时序逻辑的比较

    万次阅读 2017-07-02 09:54:53
    图8-7 可以看出,时序逻辑电路由组合逻辑电路和存储电路这两部分组成,其中存储电路由各类触发器(JK 触发器、D 触发器以及T触发器等类型)构成,并将组合逻辑的部分输出反馈输入逻辑的输入端口。 时序电路可...
  • 逻辑漏洞总结

    千次阅读 2020-04-10 09:41:56
    总结逻辑漏洞名称及用法: 1、什么是逻辑漏洞 之所以称为逻辑漏洞,是因为代码之后是人的逻辑,人更容易犯错,是编写完程序后随着人的思维逻辑产生的不足。sql注入、xss等漏洞可以通过安全框架等避免,这种攻击...
  • 所谓顺序消费,rocketmq支持同一消费队列上的消息顺序消费。 消息消费涉及3个点: 1、消息队列重新负载 2、消息拉取 3、消息消费 按照消息消费步骤来揭开RocketMQ顺序消息消费实现原理。 1、消息队列负载 ...
  • 60道逻辑推理题及答案

    万次阅读 多人点赞 2019-06-26 17:16:40
    程序员面试题中经常会出现一些烧脑逻辑题,本人觉得这种题目非常有趣,于是收集了一些分享给大家! 【1】假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶池塘...
  • iOS APP启动函数调用顺序~详解

    千次阅读 2017-06-30 00:43:54
    //联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄 ...会为静态创建的对象生成初始化器,与静态语言不同,OC基于Runtime机制...时,其定义的所有的类都需要被注册这个全局表中。ObjC 在加载时可以通过 fix-up
  • 一步一步开始FPGA逻辑设计 - 高速接口之PCIe

    万次阅读 多人点赞 2016-11-22 17:04:30
    近两年来和几个单位接触下来,发现PCIe还是一个比较常用的,有些难度的案例,主要是涉及面比较广,需要了解逻辑设计、高速总线、Linux和Windows的驱动设计等相关知识。 这篇文章主要针对Xilinx家V6和K7两个系列的...
  • 75道面试逻辑智力测试题内附详细答案

    万次阅读 多人点赞 2018-01-15 20:47:19
    问题是如何只用这2个水壶池塘里取得3升的水。 答案: 由满6向空5倒,剩1升,把这1升倒5里,然后6剩满,倒5里面,由于5里面有1升水,因此6只能向5倒4升水,然后将6剩余的2升,倒入空的5里面,再灌满6向5里倒3升...
  • 文件组织:索引顺序文件

    千次阅读 2013-11-08 23:42:39
    ISAM文件和VSAM文件是常用的索引顺序文件。 ISAM文件  ISAM为Indexed Sequential Access Methed(索引顺序存取方法)的缩写,它是一种专为磁盘存取文件设计的文件组织方式,采用静态索引结构。由于磁盘是以盘组、...
  • C++实现顺序表各种基本运算的算法

    千次阅读 2020-03-07 18:26:55
    编写一个程序,实现顺序表的各种基本运算(假设顺序表的元素类型为char),并在基础上设计一个程序完成如下功能: (1)初始化顺序表L; (2)依次采用尾插法插入a,b,c,d,e元素; (3)输出顺序表L; (4)输出...
  • 计算机基础知识学习顺序

    千次阅读 2019-10-30 08:55:41
    学习顺序?推荐书籍? 一、计算机网络 在我们用的程序中,99% 都离不开网络,作为一个程序员,我觉得了解计算机网络是必须的,在大学的课程中,一般也都会开设这一门课。 在我学习这门课之前,我就特别好奇,一台...
  • 一、文件系统概述 ...外存中具有符号名的一组有逻辑意义的信息项的集合。 2、文件系统 指OS中管理文件的那一部分软件。它负责管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并为用户提供一整套...
  • 75道程序员面试逻辑题和答案

    万次阅读 多人点赞 2018-04-05 10:47:07
    问题是如何只用这2个水壶池塘里取得3升的水。 【2】周雯的妈妈是豫林水泥厂的化验员。 一天,周雯来到化验室做作业。做完后想出去玩。 "等等,妈妈还要考你一个题目,"她接着说,"你看这6只做化验...
  • 首先说明一点,本篇的文章是根据自己的理解总结,但是图可能是在已有的博客中截图的,在此对那些对我理解该部分知识提供帮助的博客博表示感谢! 在逻辑地址、线性地址和物理地址一节中,已经对逻辑地址、线性地址...
  • 编程逻辑

    千次阅读 2018-01-08 19:43:30
    顺序结构指的是所有代码按照定义的先后执行,就好比在之前方法中所编写的代码一样,按照定义顺序一行行执行。 分支结构 : 分支结构指的是进行逻辑判断,当满足于某些条件的时候才会执行某些语句。 而对于分支...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 204,350
精华内容 81,740
关键字:

从主到次的逻辑顺序