0%

  1. q
    1
    2
    $ sudo dpkg --add-architecture i386
    $ wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
  2. w
    1
    2
    3
    4
    5
    6
    7
    8
    ###  Ubuntu 19.04 
    $ sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ disco main

    ### Ubuntu 18.04
    $ sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'

    ### Ubuntu 16.04
    $ sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main'
  3. a
    1
    2
    $ sudo apt-get update
    $ sudo apt-get install --install-recommends winehq-stable
    如果出错
    1
    2
    $ sudo apt-get install aptitude
    $ sudo aptitude install winehq-stable
  4. a
    1
    wine --version

    wine-4.0.1

1、ABS函数

函数名称

ABS

主要功能

求出相应数字的绝对值。

使用格式

ABS(number)

参数说明

number代表需要求绝对值的数值或引用的单元格。

应用举例

如果在B2单元格中输入公式:=ABS(A2),则在A2单元格中无论输入正数(如100)还是负数(如-100),B2中均显示出正数(如100)。

特别提醒

如果number参数不是数值,而是一些字符(如A等),则B2中返回错误值“#VALUE!”。

2、AND函数

函数名称

AND

主要功能

返回逻辑值:如果所有参数值均为逻辑“真(TRUE)”,则返回逻辑“真(TRUE)”,反之返回逻辑“假(FALSE)”。

使用格式

AND(logical1,logical2, …)

参数说明

Logical1,Logical2,Logical3……:表示待测试的条件值或表达式,最多这30个。

应用举例

在C5单元格输入公式:=AND(A5>=60,B5>=60),确认。如果C5中返回TRUE,说明A5和B5中的数值均大于等于60,如果返回FALSE,说明A5和B5中的数值至少有一个小于60。

特别提醒

如果指定的逻辑条件参数中包含非逻辑值时,则函数返回错误值“#VALUE!”或“#NAME”。

3、AVERAGE函数

函数名称

AVERAGE

主要功能

求出所有参数的算术平均值。

使用格式

AVERAGE(number1,number2,……)

参数说明

number1,number2,……:需要求平均值的数值或引用单元格(区域),参数不超过30个。

应用举例

在B8单元格中输入公式:=AVERAGE(B7:D7,F7:H7,7,8),确认后,即可求出B7至D7区域、F7至H7区域中的数值和7、8的平均值。

特别提醒

如果引用区域中包含“0”值单元格,则计算在内;如果引用区域中包含空白或字符单元格,则不计算在内。

4、COLUMN 函数

函数名称

COLUMN

主要功能

显示所引用单元格的列标号值。

使用格式

COLUMN(reference)

参数说明

reference为引用的单元格。

应用举例

在C11单元格中输入公式:=COLUMN(B11),确认后显示为2(即B列)。

特别提醒

如果在B11单元格中输入公式:=COLUMN(),也显示出2;与之相对应的还有一个返回行标号值的函数——ROW(reference)。

5、CONCATENATE函数

函数名称

CONCATENATE

主要功能

将多个字符文本或单元格中的数据连接在一起,显示在一个单元格中。

使用格式

CONCATENATE(Text1,Text……)

参数说明

Text1、Text2……为需要连接的字符文本或引用的单元格。

应用举例

在C14单元格中输入公式:=CONCATENATE(A14,”@”,B14,”.com”),确认后,即可将A14单元格中字符、@、B14单元格中的字符和.com连接成一个整体,显示在C14单元格中。

特别提醒

如果参数不是引用的单元格,且为文本格式的,请给参数加上英文状态下的双引号,如果将上述公式改为:=A14&”@”&B14&”.com”,也能达到相同的目的。

6、COUNTIF函数

函数名称

COUNTIF

主要功能

统计某个单元格区域中符合指定条件的单元格数目。

使用格式

COUNTIF(Range,Criteria)

参数说明

Range代表要统计的单元格区域;Criteria表示指定的条件表达式。

应用举例

在C17单元格中输入公式:=COUNTIF(B1:B13,”>=80”),确认后,即可统计出B1至B13单元格区域中,数值大于等于80的单元格数目。

特别提醒

允许引用的单元格区域中有空白单元格出现。

7、DATE函数

函数名称

DATE

主要功能

给出指定数值的日期。

使用格式

DATE(year,month,day)

参数说明

year为指定的年份数值(小于9999);month为指定的月份数值(可以大于12);day为指定的天数。

应用举例

在C20单元格中输入公式:=DATE(2003,13,35),确认后,显示出2004-2-4。

特别提醒

由于上述公式中,月份为13,多了一个月,顺延至2004年1月;天数为35,比2004年1月的实际天数又多了4天,故又顺延至2004年2月4日。

8、**函数名称**

DATEDIF

主要功能

计算返回两个日期参数的差值。

使用格式

=DATEDIF(date1,date2,”y”)、=DATEDIF(date1,date2,”m”)、=DATEDIF(date1,date2,”d”)

参数说明

date1代表前面一个日期,date2代表后面一个日期;y(m、d)要求返回两个日期相差的年(月、天)数。

应用举例

在C23单元格中输入公式:=DATEDIF(A23,TODAY(),”y”),确认后返回系统当前日期[用TODAY()表示)与A23单元格中日期的差值,并返回相差的年数。

特别提醒

这是Excel中的一个隐藏函数,在函数向导中是找不到的,可以直接输入使用,对于计算年龄、工龄等非常有效。

9、DAY函数

函数名称

DAY

主要功能

求出指定日期或引用单元格中的日期的天数。

使用格式

DAY(serial_number)

参数说明

serial_number代表指定的日期或引用的单元格。

应用举例

输入公式:=DAY(“2003-12-18”),确认后,显示出18。

特别提醒

如果是给定的日期,请包含在英文双引号中。

10、DCOUNT函数

函数名称

DCOUNT

主要功能

返回数据库或列表的列中满足指定条件并且包含数字的单元格数目。

使用格式

DCOUNT(database,field,criteria)

参数说明

Database表示需要统计的单元格区域;Field表示函数所使用的数据列(在第一行必须要有标志项);Criteria包含条件的单元格区域。

应用举例

在F4单元格中输入公式:=DCOUNT(A1:D11,”语文”,F1:G2),确认后即可求出“语文”列中,成绩大于等于70,而小于80的数值单元格数目(相当于分数段人数)。

特别提醒

如果将上述公式修改为:=DCOUNT(A1:D11,,F1:G2),也可以达到相同目的。

11、FREQUENCY函数

函数名称

FREQUENCY

主要功能

以一列垂直数组返回某个区域中数据的频率分布。

使用格式

FREQUENCY(data_array,bins_array)

参数说明

Data_array表示用来计算频率的一组数据或单元格区域;Bins_array表示为前面数组进行分隔一列数值。

应用举例

同时选中B32至B36单元格区域,输入公式:=FREQUENCY(B2:B31,D2:D36),输入完成后按下 “Ctrl+Shift+Enter”组合键进行确认,即可求出B2至B31区域中,按D2至D36区域进行分隔的各段数值的出现频率数目(相当于统计各分数段人数)。

特别提醒

上述输入的是一个数组公式,输入完成后,需要通过按“Ctrl+Shift+Enter”组合键进行确认,确认后公式两端出现一对大括号({}),此大括号不能直接输入。

12、IF函数

函数名称

IF

主要功能

根据对指定条件的逻辑判断的真假结果,返回相对应的内容。

使用格式

=IF(Logical,Value_if_true,Value_if_false)

参数说明

Logical代表逻辑判断表达式;Value_if_true表示当判断条件为逻辑“真(TRUE)”时的显示内容,如果忽略返回 “TRUE”;Value_if_false表示当判断条件为逻辑“假(FALSE)”时的显示内容,如果忽略返回“FALSE”。

应用举例

在C29单元格中输入公式:=IF(C26>=18,”符合要求”,”不符合要求”),确信以后,如果C26单元格中的数值大于或等于18,则C29单元格显示“符合要求”字样,反之显示“不符合要求”字样。

特别提醒

本文中类似“在C29单元格中输入公式”中指定的单元格,读者在使用时,并不需要受其约束,此处只是配合本文所附的实例需要而给出的相应单元格,具体请大家参考所附的实例文件。

13、INDEX函数

函数名称

INDEX

主要功能

返回列表或数组中的元素值,此元素由行序号和列序号的索引值进行确定。

使用格式

INDEX(array,row_num,column_num)

参数说明

Array代表单元格区域或数组常量;Row_num表示指定的行序号(如果省略row_num,则必须有 column_num);Column_num表示指定的列序号(如果省略column_num,则必须有 row_num)。

应用举例

在F8单元格中输入公式:=INDEX(A1:D11,4,3),确认后则显示出A1至D11单元格区域中,第4行和第3列交叉处的单元格(即C4)中的内容。

特别提醒

此处的行序号参数(row_num)和列序号参数(column_num)是相对于所引用的单元格区域而言的,不是Excel工作表中的行或列序号。

14、INT函数

函数名称

INT

主要功能

将数值向下取整为最接近的整数。

使用格式

INT(number)

参数说明

number表示需要取整的数值或包含数值的引用单元格。

应用举例

输入公式:=INT(18.89),确认后显示出18。

特别提醒

在取整时,不进行四舍五入;如果输入的公式为=INT(-18.89),则返回结果为-19。

15、ISERROR函数

函数名称

ISERROR

主要功能

用于测试函数式返回的数值是否有错。如果有错,该函数返回TRUE,反之返回FALSE。

使用格式

ISERROR(value)

参数说明

Value表示需要测试的值或表达式。

应用举例

输入公式:=ISERROR(A35/B35),确认以后,如果B35单元格为空或“0”,则A35/B35出现错误,此时前述函数返回TRUE结果,反之返回FALSE。

特别提醒

此函数通常与IF函数配套使用,如果将上述公式修改为:=IF(ISERROR(A35/B35),””,A35/B35),如果B35为空或“0”,则相应的单元格显示为空,反之显示A35/B35

的结果。

16、LEFT函数

函数名称

LEFT

主要功能

从一个文本字符串的第一个字符开始,截取指定数目的字符。

使用格式

LEFT(text,num_chars)

参数说明

text代表要截字符的字符串;num_chars代表给定的截取数目。

应用举例

假定A38单元格中保存了“我喜欢天极网”的字符串,我们在C38单元格中输入公式:=LEFT(A38,3),确认后即显示出“我喜欢”的字符。

特别提醒

此函数名的英文意思为“左”,即从左边截取,Excel很多函数都取其英文的意思。

17、LEN函数

函数名称

LEN

主要功能

统计文本字符串中字符数目。

使用格式

LEN(text)

参数说明

text表示要统计的文本字符串。

应用举例

假定A41单元格中保存了“我今年28岁”的字符串,我们在C40单元格中输入公式:=LEN(A40),确认后即显示出统计结果“6”。

特别提醒

LEN要统计时,无论中全角字符,还是半角字符,每个字符均计为“1”;与之相对应的一个函数——LENB,在统计时半角字符计为“1”,全角字符计为“2”。

18、MATCH函数

函数名称

MATCH

主要功能

返回在指定方式下与指定数值匹配的数组中元素的相应位置。

使用格式

MATCH(lookup_value,lookup_array,match_type)

参数说明

Lookup_value代表需要在数据表中查找的数值;

Lookup_array表示可能包含所要查找的数值的连续单元格区域;

Match_type表示查找方式的值(-1、0或1)。

如果match_type为-1,查找大于或等于 lookup_value的最小数值,Lookup_array 必须按降序排列;

如果match_type为1,查找小于或等于 lookup_value 的最大数值,Lookup_array 必须按升序排列;

如果match_type为0,查找等于lookup_value 的第一个数值,Lookup_array 可以按任何顺序排列;如果省略match_type,则默认为1。

应用举例

在F2单元格中输入公式:=MATCH(E2,B1:B11,0),确认后则返回查找的结果“9”。

特别提醒

Lookup_array只能为一列或一行。

19、MAX函数

函数名称

MAX

主要功能

求出一组数中的最大值。

使用格式

MAX(number1,number2……)

参数说明

number1,number2……代表需要求最大值的数值或引用单元格(区域),参数不超过30个。

应用举例

输入公式:=MAX(E44:J44,7,8,9,10),确认后即可显示出E44至J44单元和区域和数值7,8,9,10中的最大值。

特别提醒

如果参数中有文本或逻辑值,则忽略。

20、MID函数

函数名称

MID

主要功能

从一个文本字符串的指定位置开始,截取指定数目的字符。

使用格式

MID(text,start_num,num_chars)

参数说明

text代表一个文本字符串;start_num表示指定的起始位置;num_chars表示要截取的数目。

应用举例

假定A47单元格中保存了“我喜欢天极网”的字符串,我们在C47单元格中输入公式:=MID(A47,4,3),确认后即显示出“天极网”的字符。

特别提醒

公式中各参数间,要用英文状态下的逗号“,”隔开。

21、MIN函数

函数名称

MIN

主要功能

求出一组数中的最小值。

使用格式

MIN(number1,number2……)

参数说明

number1,number2……代表需要求最小值的数值或引用单元格(区域),参数不超过30个。

应用举例

输入公式:=MIN(E44:J44,7,8,9,10),确认后即可显示出E44至J44单元和区域和数值7,8,9,10中的最小值。

特别提醒

如果参数中有文本或逻辑值,则忽略。

22、MOD函数

函数名称

MOD

主要功能

求出两数相除的余数。

使用格式

MOD(number,divisor)

参数说明

number代表被除数;divisor代表除数。

应用举例

输入公式:=MOD(13,4),确认后显示出结果“1”。

特别提醒

如果divisor参数为零,则显示错误值“#DIV/0!”;MOD函数可以借用函数INT来表示:上述公式可以修改为:=13-4*INT(13/4)。

23、MONTH函数

函数名称

MONTH

主要功能

求出指定日期或引用单元格中的日期的月份。

使用格式

MONTH(serial_number)

参数说明

serial_number代表指定的日期或引用的单元格。

应用举例

输入公式:=MONTH(“2003-12-18”),确认后,显示出11。

特别提醒

如果是给定的日期,请包含在英文双引号中;如果将上述公式修改为:=YEAR(“2003-12-18”),则返回年份对应的值“2003”。

24、NOW函数

函数名称

NOW

主要功能

给出当前系统日期和时间。

使用格式

NOW()

参数说明

该函数不需要参数。

应用举例

输入公式:=NOW(),确认后即刻显示出当前系统日期和时间。如果系统日期和时间发生了改变,只要按一下F9功能键,即可让其随之改变。

特别提醒

显示出来的日期和时间格式,可以通过单元格格式进行重新设置。

25、OR函数

函数名称

OR

主要功能

返回逻辑值,仅当所有参数值均为逻辑“假(FALSE)”时返回函数结果逻辑“假(FALSE)”,否则都返回逻辑“真(TRUE)”。

使用格式

OR(logical1,logical2, …)

参数说明

Logical1,Logical2,Logical3……:表示待测试的条件值或表达式,最多这30个。

应用举例

在C62单元格输入公式:=OR(A62>=60,B62>=60),确认。如果C62中返回TRUE,说明A62和B62中的数值至少有一个大于或等于60,如果返回FALSE,说明A62和B62中的数值都小于60。

特别提醒

如果指定的逻辑条件参数中包含非逻辑值时,则函数返回错误值“#VALUE!”或“#NAME”。

26、RANK函数

函数名称

RANK

主要功能

返回某一数值在一列数值中的相对于其他数值的排位。

使用格式

RANK(Number,ref,order)

参数说明

Number代表需要排序的数值;ref代表排序数值所处的单元格区域;order代表排序方式参数(如果为“0”或者忽略,则按降序排名,即数值越大,排名结果数值越小;如果为非“0”值,则按升序排名,即数值越大,排名结果数值越大;)。

应用举例

如在C2单元格中输入公式:=RANK(B2,$B$2:$B$31,0),确认后即可得出丁1同学的语文成绩在全班成绩中的排名结果。

特别提醒

在上述公式中,我们让Number参数采取了相对引用形式,而让ref参数采取了绝对引用形式(增加了一个“$”符号),这样设置后,选中 C2单元格,将鼠标移至该单元格右下角,成细十字线状时(通常称之为“填充柄”),按住左键向下拖拉,即可将上述公式快速复制到C列下面的单元格中,完成其他同学语文成绩的排名统计。

27、RIGHT函数

函数名称

RIGHT

主要功能

从一个文本字符串的最后一个字符开始,截取指定数目的字符。

使用格式

RIGHT(text,num_chars)

参数说明

text代表要截字符的字符串;num_chars代表给定的截取数目。

应用举例

假定A65单元格中保存了“我喜欢天极网”的字符串,我们在C65单元格中输入公式:=RIGHT(A65,3),确认后即显示出“天极网”的字符。

特别提醒

Num_chars参数必须大于或等于0,如果忽略,则默认其为1;如果num_chars参数大于文本长度,则函数返回整个文本。

28、SUBTOTAL函数

函数名称

SUBTOTAL

主要功能

返回列表或数据库中的分类汇总。

使用格式

SUBTOTAL(function_num, ref1, ref2, …)

参数说明

Function_num为1到11(包含隐藏值)或101到111(忽略隐藏值)之间的数字,用来指定使用什么函数在列表中进行分类汇总计算(如图6);ref1, ref2,……代表要进行分类汇总区域或引用,不超过29个。

应用举例

在B64和C64单元格中分别输入公式:=SUBTOTAL(3,C2:C63)和=SUBTOTAL103,C2:C63),并且将61行隐藏起来,确认后,前者显示为62(包括隐藏的行),后者显示为61,不包括隐藏的行。

特别提醒

如果采取自动筛选,无论function_num参数选用什么类型,SUBTOTAL函数忽略任何不包括在筛选结果中的行;SUBTOTAL函数适用于数据列或垂直区域,不适用于数据行或水平区域。

29、**函数名称**

SUM

主要功能

计算所有参数数值的和。

使用格式

SUM(Number1,Number2……)

参数说明

Number1、Number2……代表需要计算的值,可以是具体的数值、引用的单元格(区域)、逻辑值等。

应用举例

在D64单元格中输入公式:=SUM(D2:D63),确认后即可求出语文的总分。

特别提醒

如果参数为数组或引用,只有其中的数字将被计算。数组或引用中的空白单元格、逻辑值、文本或错误值将被忽略;如果将上述公式修改为:=SUM(LARGE(D2:D63,{1,2,3,4,5})),则可以求出前5名成绩的和。

30、SUMIF函数

函数名称

SUMIF

主要功能

计算符合指定条件的单元格区域内的数值和。

使用格式

SUMIF(Range,Criteria,Sum_Range)

参数说明

Range代表条件判断的单元格区域;Criteria为指定条件表达式;Sum_Range代表需要计算的数值所在的单元格区域。

应用举例

在D64单元格中输入公式:=SUMIF(C2:C63,”男”,D2:D63),确认后即可求出“男”生的语文成绩和。具体请见栏目:sumif函数 - sumifs函数的使用方法及实例_sumif多条件求和。

特别提醒

如果把上述公式修改为:=SUMIF(C2:C63,”女”,D2:D63),即可求出“女”生的语文成绩和;其中“男”和“女”由于是文本型的,需要放在英文状态下的双引号(“男”、”女”)中。

31、TEXT函数

函数名称

TEXT

主要功能

根据指定的数值格式将相应的数字转换为文本形式。

使用格式

TEXT(value,format_text)

参数说明

value代表需要转换的数值或引用的单元格;format_text为指定文字形式的数字格式。

应用举例

如果B68单元格中保存有数值1280.45,在C68单元格中输入公式:=TEXT(B68, “$0.00”),确认后显示为“$1280.45”。

特别提醒

format_text参数可以根据“单元格格式”对话框“数字”标签中的类型进行确定。

32、TODAY函数

函数名称

TODAY

主要功能

给出系统日期。

使用格式

TODAY()

参数说明

该函数不需要参数。

应用举例

输入公式:=TODAY(),确认后即刻显示出系统日期和时间。如果系统日期和时间发生了改变,只要按一下F9功能键,即可让其随之改变。

特别提醒

显示出来的日期格式,可以通过单元格格式进行重新设置(参见附件)。

33、VALUE函数

函数名称

VALUE

主要功能

将一个代表数值的文本型字符串转换为数值型。

使用格式

VALUE(text)

参数说明

text代表需要转换文本型字符串数值。

应用举例

如果B74单元格中是通过LEFT等函数截取的文本型字符串,我们在C74单元格中输入公式:=VALUE(B74),确认后,即可将其转换为数值型。

特别提醒

如果文本型数值不经过上述转换,在用函数处理这些数值时,常常返回错误。

34、VLOOKUP函数

函数名称

VLOOKUP

主要功能

在数据表的首列查找指定的数值,并由此返回数据表当前行中指定列处的数值。

使用格式

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

参数说明

Lookup_value代表需要查找的数值;Table_array代表需要在其中查找数据的单元格区域;Col_index_num为在 table_array区域中待返回的匹配值的列序号(当Col_index_num为2时,返回table_array第2列中的数值,为3时,返回第 3列的值……);Range_lookup为一逻辑值,如果为TRUE或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于 lookup_value的最大数值;如果为FALSE,则返回精确匹配值,如果找不到,则返回错误值#N/A。

应用举例

参见:vlookup函数 - vlookup函数的使用方法_vlookup函数的操作实例,在D65单元格中输入公式:=VLOOKUP(B65,B2:D63,3,FALSE),确认后,只要在B65单元格中输入一个学生的姓名(如丁48),D65单元格中即刻显示出该学生的语言成绩。

特别提醒

Lookup_value参见必须在Table_array区域的首列中;如果忽略Range_lookup参数,则Table_array的首列必须进行排序;在此函数的向导中,有关Range_lookup参数的用法是错误的。

35、WEEKDAY函数

函数名称

WEEKDAY

主要功能

给出指定日期的对应的星期数。

使用格式

WEEKDAY(serial_number,return_type)

参数说明

serial_number代表指定的日期或引用含有日期的单元格;return_type代表星期的表示方式[当Sunday(星期日)为 1、Saturday(星期六)为7时,该参数为1;当Monday(星期一)为1、Sunday(星期日)为7时,该参数为2(这种情况符合中国人的习惯);当Monday(星期一)为0、Sunday(星期日)为6时,该参数为3。

应用举例

输入公式:=WEEKDAY(TODAY(),2),确认后即给出系统日期的星期数。

特别提醒

如果是指定的日期,请放在英文状态下的双引号中,如=WEEKDAY(“2003-12-18”,2)。

说明:以 Dell 游匣为例

  • 设置BIOS

  1. 进入BIOS,每台机型都不同,这里以戴尔为例,按住 F2

  2. Setting-System Configuration-SATA Operation设置为 AHCI

  3. Secure Boot-Secure Boot Enable 设置为Disabled

  4. Apply - Exit

  • 安装 win10

  1. 下载 微PE (由于微PE比较干净,不会强制安装软件,且版本为win10PE,由于低版本的会出现很多问题,如:硬盘识别不出来;U盘识别不出来……),点击这里下载微PE
  2. 使用键盘快捷键,进入PE
  3. 将系统盘(或者全部的盘(想删除干净的话)) 删除分区,提交
  4. 快速建立分区(一定要用这个,否则没有引导)

    【注意】:如果要是安装双系统,并且在固态上安装ubuntu系统,那么,要分成两个区,删除其中的一个,不要弄成一个区,然后,压缩卷,这样的话,系统就会出现bug:安装完ubuntu之后,win10就坏了

  5. 还原win10镜像系统
  • 安装 Ubuntu 18.04

  1. 首先,在官网下载镜像,点击这里下载;

  2. 使用 UltraISO 制作系统盘(或者使用 rufus 制作,具体百度吧):

  3. 开始装系统:

    1. 按住 F12,选择 UEFI

    2. 选择: Install Ubuntu

    3. 选择中文简体-继续

    4. 键盘布局默认选择-继续

    5. 不联网-继续

    6. 更新和其他软件-默认-继续

    7. 安装类型-其它选项-继续

    8. 分区:

    9. 以系统安装在固态为例

      1. 单击 固态的空闲内存(此处为51636),点 +, 挂载点选 /,ok
      2. 单击 机械硬盘的空闲内存(此处为216372),点 +,输入200000(大约以这个比例输入),挂载点选 /home,ok
      3. 单击剩余的空闲内存(此处为16372),点 +,设置为用于交换空间,点现在安装,继续;
    10. 都安装在机械硬盘:

      1. 类似于上面,更加简单而已,大小类比于安装Ubuntu 18.04 - 3.8.1
    11. 继续安装

    12. 位置-默认

    13. 设置用户名和密码,密码一定要记住

    14. 重启

    15. 重启,如果卡住了,就直接用电源强心关机,然后再开机,这个没关系的,放心弄就行

  • 配置 Ubuntu (非常重要)

  1. 进入 Ubuntu高级设置

  2. 进入 Ubuntu,with Linux 4.10.0-15-generis (recovery mode) (第二个)

  3. 进入 resume resume normal boot

  4. 回车,继续进入此时,已经进入了Ubuntu了

  5. 运行以下命令:

    1
    2
    sudo apt-get update
    sudo apt-get install -f

    1
    2
    sudo su
    sudo gedit /etc/defaul/grub


    得到下图:

    【补】:全部命令

  6. 找到 GRUB_CMDLINE_LINUX_DEFAULT这一行,在 quiet splash 后面添加 nouveau.modeset=0

  7. 下面是我的电脑的grub配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    # If you change this file, run 'update-grub' afterwards to update
    # /boot/grub/grub.cfg.
    # For full documentation of the options in this file, see:
    # info -f grub -n 'Simple configuration'

    GRUB_DEFAULT=0
    GRUB_TIMEOUT_STYLE=hidden
    GRUB_TIMEOUT=10
    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0"
    GRUB_CMDLINE_LINUX=""

    # Uncomment to enable BadRAM filtering, modify to suit your needs
    # This works with Linux (no patch required) and with any kernel that obtains
    # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
    #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

    # Uncomment to disable graphical terminal (grub-pc only)
    #GRUB_TERMINAL=console

    # The resolution used on graphical terminal
    # note that you can use only modes which your graphic card supports via VBE
    # you can see them in real GRUB with the command `vbeinfo'
    #GRUB_GFXMODE=640x480

    # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
    #GRUB_DISABLE_LINUX_UUID=true

    # Uncomment to disable generation of recovery mode menu entries
    #GRUB_DISABLE_RECOVERY="true"

    # Uncomment to get a beep at grub start
    #GRUB_INIT_TUNE="480 440 1"
  8. 更新grub

    1
    sudo update-grub

  1. 暴力可以成为解决问题的后盾,但绝对不能解决问题。
  2. 刀在砍人之前磨的时间越久,就越锋利,用起来杀伤力也会更大。
  3. 辩论和演讲从来不能解决问题,因为这个世界是靠实力说话的。

  • C#程序设计简介

  • 1.4 基本输入输出
    1. 窗体
      1. 通过控件(Control)来控制,如:
        1. 文本框(TextBox)、标签(label)
        2. 下拉框、图片等
        3. 例:
          1. 用文本框表示输入;
          2. 用按钮表示发出命令;
          3. 用标签表示结果;
    2. 控制台
      1. 使用Console类
        1. 输出
          1. Console.Write()
          2. Console.WriteLine()
        2. 输入
          1. Console.ReadLine()
    3. .NET开发工具
      1. .NET Framework SDK 基本的开发工具
      2. Microsoft Visual Studio.NET 集成开发工具
      3. Visual Studio Express, Visual Web Developer
      4. 学生版
      5. SharpDevelper
      6. SnippetCompiler(推荐)
        • 一个小巧的工具,见这里
      7. 其他辅助工具见这里
  • C#语言基础

  • 2.1 数据类型、变量与常量
  1. 程序中的变量与常量

    1. 程序的基本任务:对数据进行处理

    2. 数据分为变量(variable)与常量(literal)

    3. 变量是值可以改变,本质上是内存的空间,用来存储信息

    4. 常量的值是固定的,直接写出来的,称字面常量(literal)

    5. 变量的声明和赋值类似于C语言

      1. int x, y;
      2. double d;
      3. bool b;
      4. String s;
      5. Person p = new Person();
    6. 数据类型:本质上是数据的存储方式及其能参与的运算的抽象

    7. 数据类型分为两大类

      1. 值类型(Value Type),如:int, double, Point(简单的结构体), Size(宽或高), DataTime(时间)
      2. 引用类型(Reference Type), 如:Button, Lable, Book, Person
      3. 一种不是特别准确的说法:简单的是值类型,复杂的是引用类型
    8. 两种类型的区别:

      1. 见图
      2. 值类型的复制:把值拷贝到另一个内存
      3. 引用类型的复制:把引用(或者说叫做地址)拷贝到另一个内存
      4. 值类型存到 空间
      5. 引用类型 存储位置,存储真正的信息
      6. 复制:不管是值类型还是引用类型都是把栈中的值拷贝一份,只不过引用类型存储的是地址,所以指向的还是一个堆空间
      7. DataTime的存储方式
      8. 值类型和引用类型都是类型
      9. 任何变量都有类型
      10. double也是类型,它也有Parse()这样的方法
      11. 所有的对象都是 Object
        • 它们都能 .ToString(),如:Label1.Text = age.ToString();
        • 都能用于字符串的连接(+)
    9. 类型细分

      1. 值类型
        1. 简单类型(Simple Type)
        2. 结构类型(Struct Type)
        3. 枚举类型(Enum Type)
      2. 引用类型
        1. 类类型(Class Type)
        2. 接口类型(Interface Type)
        3. 委托类型(Delegate)
        4. 数组类型(Array Type)
      3. C++中 StructClass 是一样的,但是在C#中是完全不一样的类型
    10. 等价类型

    11. 简单类型

    12. 字符串前可使用@,则可以不进行转义,可以换行,双引号则用两个双引号表示一个双引号

    13. C#3.0后的特殊类型:

      1. var是推断类型,类似于C++的 auto
      2. Nullable类型,如
        1. int? a = 32;
        2. if (a.HasValue)…
    14. Dynamic(动态类型)由DLR支持,如:

      1. dynamic x = new Cell();
      2. 编译时不检查,运行时才确定,主要用于与COM组件或其他语言交互
  • 2.2 运算符与表达式
    1. 运算符
    2. 逻辑运算符
    3. 字符串 +:只要有一个是字符串,那么就默认为字符串+
    4. 运算符优先级与结合性
    5. 类型转换
      1. 字符串转换成数值:
        • double.Parse(s)
        • int.Parse(s)
      2. 数字转换成字符串
        • 10.ToString()
        • “” + 10
      3. 使用Convert
        • Convert.ToInt32(textbox1.Text)
        • Convert.ToDouble(“123.45”)
        • Convert.ToDateTime(“2009-10-01 14:00”)
  • 2.3 流程控制语句
  1. 3种基本流程

  2. 简单语句

  3. 分支语句

    1. if
    2. switch
  4. 小技巧

  • 2.4 数组
  1. 数组属于引用类型
  2. 数组的声明:
    1. int[] a1;
    2. double []b;
    3. Mydate []c;
  3. 声明数组是不能指明长度
  4. 动态初始化
    1. 数组定义与数组元素分配孔家并赋值的操作分开进行
    2. int []a = new int[3];
    3. MyDate []dates;
      dates = new MyDate[3];
      dates[0] = new MyDate(22, 7, 1964);
      dates[1] = new MyDate(1, 5, 1964);
      dates[2] = new MyDate(4, 7, 1944);
    4. 静态初始化:
      1. 在定义数组的同时就位数组元素分配空间并赋值
      2. int[] a = {3, 9, 8}; 或者 int[] a = new int[]{3, 9, 8};
    5. ```c#
      MyDate[] dates = {
      new MyDate(22, 7, 1964),
      new MyDate(12, 1, 2004),
      new MyDate(21, 2, 1984)
      }
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      6. 注:最后可以多一个逗号。如: `{3, 9, 8, }`
      7. 数组是引用类型,它的元素相当于类的 ***成员变量*** ,因此数组一经分配空间,其中的 ***每个元素*** 也被按住奥成员变量同样的方式被 ***隐式初始化***,例如:
      1. 数值类型是0
      2. 引用类型为null
      8. 数组元素的引用方式:
      1. 类似于C语言;
      2. index为数组元素下标,可以是整型常量或整型表达式,如a[3], b[i], c[6 * i]
      3. 每个数组都有一个属性Length指明它的长度,例如: `a.Length`指明数组a的长度(元素的个数)
      9. foreach可以方便的处理数组】集合中各元素, 如
      ```c#
      int[] ages = new int[10];
      foreach (int age in ages) {
      // ...
      }

      foreach 是只读式的遍历

1. 总览

2. 数据


【重点】:
1. 数据的定义:描述事物的符号记录;
2. 数据的含义成为数据的语义,数据与其语义是不可分的

3. 数据库

4. 数据库管理系统

5. 数据库系统

6. 数据管理

  1. 对数据进行分类、组织、编码、存储、检索和维护

  2. 数据处理的中心问题

    7. 数据管理技术的发展过程

  3. 人工管理阶段


  4. 文件系统阶段


  5. 数据库系统阶段


8. 数据库系统概论

  1. 数据库系统的特点:
    1. 数据结构化
    2. 数据的共享性高,冗余度低且易扩充
    3. 数据独立性高
    4. 数据有数据库管理系统统一管理和控制

  1. ncpa.cpl
  2. services.msc
  3. http响应码
    1. 200:客户端请求成功,是最常见的状态
    2. 302:重定向
    3. 404:请求资源不存在,是最常见的状态
    4. 400:客户端请求有语法错误,不能被服务器所理解
    5. 401:请求未经授权
    6. 403:服务器收到请求,但是拒绝提供服务
    7. 500:服务器内部错误,是最常见的状态
    8. 503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
  4. url:统一资源定位符
    【例】:http://www.cracer.com:80/admin/index.php
  5. html:伪静态(看上去静态,实际上是动态)
  6. http请求方法
    1. GET
    2. POST
    3. OPTIONS
    4. PUT
    5. MOVE
    6. DELETE
    7. TRACE

  • 普里姆(Prim)算法

1. 构造邻接矩阵

  1. 结构体
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef char VertexType;
    typedef int EdgeType;
    #define MAXVEX 100
    #define INFINITY 0x3f3f3f3f // 在程序设计中,将无穷大设为0x3f3f3f3f
    typedef struct {
    VertexType vexs[MAXVEX];
    EdgeType arc[MAXVEX][MAXVEX];
    int numVertexes, numEdges;
    }MGraph;
  2. 实例化邻接矩阵
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MGraph G;
    memset(G.arc, 0x3f, sizeof(G.arc));
    int N;
    cout << "请输入有多少条边:";
    cin >> N;
    for (int i = 0; i < N; i++) {
    int ti, tj, va;
    cin >> ti >> tj >> va;
    G.arc[ti][tj] = va;
    G.arc[tj][ti] = va;
    }

    2. 生成最小生成树

    1. 步骤:

  3. 随机将一个点作为生成树的顶点,这里以$V_0$为顶点;
  4. 将各点与$V_0$的距离保存到 lowcost 数组中;
  5. adjvex 用来存储各个顶点的值,用来看是哪个点与接下来的哪个点相连的;
  6. lowcost 存储各个顶点是否为生成树顶点;
  7. 遍历数组 lowcost ,找到与顶点 $V_0$最短的边,并将对应的顶点,添加到生成树中;
  8. 接着,将下一个顶点与$V_0$看成整体 O,更新 lowcost 的值(更新其他顶点与 O 的更短的距离);
  9. 直到数组 lowcost 全部为0。

    2. 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
* Prim算法生成最小生成树
*/
void MiniSpanTree_Prim(MGraph G)
{
int min, lowcost[MAXVEX], adjvex[MAXVEX];
lowcost[0] = 0; // 以v0作为生成树的顶点
for (int i = 1; i < G.numVertexes; i++) {
lowcost[i] = G.arc[0][i]; // [0][i] 是因为v0为生成树的顶点
adjvex[i] = 0; //这里为0,是因为以V0作为生成树的顶点
}

for (int i = 1; i < G.numVertexes; i++) {
int j = 1, k = 0;
min = 0x3f3f3f3f;
while (j < G.numVertexes) {
if (lowcost[j] != 0 && min > lowcost[j]) {
min = lowcost[j];
k = j;
}
j++;
}
printf("(%d, %d), %d", adjvex[k], k, min);

lowcost[k] = 0;
// 更新lowcost
for (int j = 1; j < G.numVertexes; j++) {
if (lowcost[j] != 0 && lowcost[j] > G.arc[k][j]) {
adjvex[j] = k;
lowcost[j] = G.arc[k][j];
}
}
}
}
  • 克鲁斯卡尔(Kruskal)算法

    1. 步骤:

  1. 判断该边添加上之后是否会使生成树生成回路,由于该边是与其两端点有关系,因此,判断该点是否在生成树中即可;
  2. 用一个数组标明