※ 課前準備: VirtualBox 5.0且需設置好RHEL7之虛擬機
※ 上課重點: Forgotten root password
一、更改密碼
當登入時忘記密碼,以下為各種狀況和解法:
1. BIOS密碼 → 拔掉電池,還原設定
2. 開機選單鎖住時→ 可以用 DVD/USB 開機,將 grub.conf 修改
3. 改 root 密碼(開機選單解)
|
|→ 按"e"
|
|
|→ 找到"linux16..." (原kernel),在最後增加下列指令皆可:
| 1. rd.break
| 2. init=/bin/bash
|→ mount -o remount,rw /sysroot (開機根目錄改到 sysroot)
|→ chroot /sysroot
|→ passwd root
|→ touch /.autorelabel ← 讓 .autorelabel 的時間改變(會牽扯到 selinux )
|→ exit
|→ exit (reboot)
|→ 用 root 登入系統
Reference:http://technote.aven-network.com/854/rhel7-centos7-reset-root-password
二、增加擴充功能
1. 關機
2. 下載 VirtualBox 功能 Extension Pack (網址:https://www.virtualbox.org/wiki/Downloads)
3. 載入 Extension Pack
| 檔案 → 喜好設定 → 擴充功能 → 加入 Extension Pack
4. 設定網路及USB
|
|→ 設定值
|→ 網路
| → 介面卡1 改成 "橋接"
| → 選擇實體網路卡
|
|→ USB
| → 啟用打勾
| → USB3.0
| → 增加要掛載的隨身碟
三、建立軟體倉儲
1. 開機
2. 加入光碟機,並手動掛載 ISO檔
| 裝置 → 光碟機 → 選擇 "rhel-server-7.0-x86_64-dvd.iso"
3. 用檔案管理員方式開啟 ISO檔,並安裝 vsftp
~# cd /run/media/aaron/RHEL-7.0\ Server.x86_64/
~# cd Packages
~# yum install -y vsftpd-3.0.2-9.el7.x86_64.rpm
4. ~# cp * -rf /var/ftp/pub
5. ~# createrepo -g /var/ftp/pub/repodate/76...-comps-Server.x86_64.xml /var/ftp/pub/
四、手動設定 IP
1. 將網路開啟
| →網路設定值
| →wired → 開啟
| → 設定
| → iPv4 → DHCP 改為 手動
| → Address
| → Netmask
| → Gateway
| → DNS
設定完儲存離開
在 Ping 168.95.1.1 or 8.8.8.8
lifelong learning and ongoing creation
2015年7月30日 星期四
2015年7月28日 星期二
0728-RHEL7_課前準備
一、事前準備
※ 建立Google Blogger
※ 將筆記寫在Blogger上
1.Blogger 加入關鍵字的方法
http://blog.xuite.net/wucaiyou/527travel/54048108-在blog放入關鍵字的方法
2.Putty
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
3.VirtualBox
https://www.virtualbox.org
4.NotePad++
https://notepad-plus-plus.org/download/v6.8.html
二、操作過程
1. 安裝VirtualBox
2. 建立一個虛擬RedHat環境
2.1 建立一個虛擬RHEL7系統
|
|→ 2.1.1 建立RHEL7
|→ 2.1.2 RAM:1500MB(這邊是以上課的環境而去設置)
|→ 2.1.3 建立一個新磁區
|→ 2.1.4 選擇VDI
|→ 2.1.5 再來選擇"動態配置" (此配置為會慢慢增加磁區)
|→ 2.1.6 建立45G,主要是把RHEL7光碟ISO放進去(這邊是依我自己的隨身碟來配置),並記得 存放位置
2.2 設定值
|
|→ 2.2.1 系統配置
| →2.2.1.1 開機順序
| 將軟碟機取消,把光碟機和硬碟往上移
| →2.2.1.2 處理器
| 設定為2顆
| →2.2.1.3 加速器
| 硬碟虛擬化打開
| 啟用VT-x/AMD-V
| 啟用Nested Paging
|→ 2.2.2 顯示器
| →2.2.2.1 Screen
| 將視訊記憶體設定到32MB
| → 2.2.2.2 遠端顯示
| none
| → 2.2.2.3 視訊擷取
| none
|→ 2.2.3 存放裝置
| 控制器IDE→選擇"rhel-server-7.0-x86_64-dvd.iso"來做開機
|→ 2.2.4 網路
| → 2.2.4.1 網路介面卡1
| 預設NAT
3. 啟動虛擬機
|
|→ 3.1 選擇install
|→ 3.2 選擇"含有GUI的伺服器"
| 選取→ 虛擬化客戶端
| → 虛擬化Hypervisor
| → 虛擬化工具
|→ 3.3 安裝
| →3.3.1 安裝目的
| → 選擇將配置分頁(分割區);完成
| → 將預設"LVM"改為"標準分割"
| → 按左下角"+"設定分割區(以自己硬碟大小為主)
| → "/boot" ,1024MB
| → 標籤 boot
|
| → "swap" ,4096MB
| → 標籤swap
|
| → "/" ,全部容量
| → 標籤root
|
| → 3.3.2 安裝系統
| → 設定 → root password → 新增帳戶(先不用)
| → 3.3.3 安裝結束後重新開機
2015年7月26日 星期日
JAVA SL-110_07/26
label 標籤
代表的是迴圈的標示記號,可利用 label 指向相對應的迴圈。
1. label_name:迴圈敘述
2. label_name:迴圈敘述
Outerloop:label_name
for(;;){
Innerloop:label_name
for(;;){
break Innerloop;
...
continue Innerloop;
...
break Outerloop;
...
continue Outerloop;
}
{
################################################################
for 和 ( , )
判斷下列能否執行:
1. for(int i=0, j=0 ; ; ) //可以
2. for(int i=0, int j=0 ; ; ) //錯誤,若多種型態要在外部宣告
3. for(int i=0, long j=0 ; ; ) //錯誤,同 2.
4. int i=0; //可以
long j=0;
for(i=0, j=0 ; ;)
5. int i=0; //錯誤, long 同樣要在外部宣告
for(i=0, long j=0 ; ;)
6. String s=null; //可以
int i=0;
for(i=1,s=a ; ;)
################################################################
無窮迴圈:
while(true) java 不可以用 1,要用 true
for(;;) 直接不要打。
################################################################
for_each
(for/in)簡化存取集合體物件元素,
//物件變數抓取屬性、方法
################################################################
代表的是迴圈的標示記號,可利用 label 指向相對應的迴圈。
1. label_name:迴圈敘述
2. label_name:迴圈敘述
Outerloop:label_name
for(;;){
Innerloop:label_name
for(;;){
break Innerloop;
...
continue Innerloop;
...
break Outerloop;
...
continue Outerloop;
}
{
################################################################
for 和 ( , )
判斷下列能否執行:
1. for(int i=0, j=0 ; ; ) //可以
2. for(int i=0, int j=0 ; ; ) //錯誤,若多種型態要在外部宣告
3. for(int i=0, long j=0 ; ; ) //錯誤,同 2.
4. int i=0; //可以
long j=0;
for(i=0, j=0 ; ;)
5. int i=0; //錯誤, long 同樣要在外部宣告
for(i=0, long j=0 ; ;)
6. String s=null; //可以
int i=0;
for(i=1,s=a ; ;)
################################################################
無窮迴圈:
while(true) java 不可以用 1,要用 true
for(;;) 直接不要打。
################################################################
for_each
(for/in)簡化存取集合體物件元素,
例如 Array 或集合,其特性是在執行的過程會自動往下找直到全部擷取完畢。
for(資料型態 變數名稱:母體集合){
程式敘述
}
################################################################
陣列一經宣告就不能更改 length。
int score={98, 56, 63};
int score1=score; //這是錯誤的陣列複製方法,應該用 arraycopy 等其>他方式。
################################################################
// 可以使用 for 迴圈做陣列複製
public class test0726_4{
public static void main(String avgs[]){
int[] score1 = {88, 81, 76, 68};
int[] score2 = new int [score1.length];
for(int i=0; i<score1.length; i++)
score2[i] = score1[i];
for(int j:score2)
System.out.println(j);
}
}
################################################################
// 也使用 Arrays.copyOf 來達到陣列複製
import java.util.Arrays;
//import java.util.*;
public class test0726_5{
public static void main(String avgs[]){
int[] score1 = {88, 81, 76, 68};
int[] score2 = Arrays.copyOf(score1, score1.length);
for(int s:score2)
System.out.printf("%3d", s);
System.out.println();
score2[0]=99;
for(int s:score2)
System.out.printf("%3d", s);
// %s:字串, %d:整數, %f:浮點數, %c:字元, %n:換行
// %3d:印出三位整數,不足自動補空格
}
}
################################################################
public class MyClass{
int i = 10;
static int k = 100;
void aMethod(String s){
int j = 20;
static String s = "a"; //錯誤,在 Method 不可以有 static 變數。
} //在方法裡面,不可以再宣告方法。
}
################################################################
// 建立物件實體
1. 建立類別變數
。用 new 建立類別實體
//物件變數抓取屬性、方法
1. 類別變數.屬性;
2. 類別變數.方法();
################################################################
################################################################
// Constructer 建構子
程式在執行時,第一個執行的函式就是建構子。
//語法:
存取權限 類別名稱(參數列){
}
// *
// 1. 建構子沒有回傳值
// 2. 建構子的名稱必須和類別名稱相同
// 預設建構子
當程式中沒有自行定義的建構子時,編譯時會自動加上預設建構子。
// *
// 1. new 一個實體時會自動執行
// 2. 預設建構子沒有參數列
// 3. 程式中只會有一個預設建構子
################################################################
// 大資料數據,使用 BigDecimal -> java.math.BigDecimal;
import java.math.BigDecimal;
public class test0726_11{
public static void main(String avgs[]){
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.1");
BigDecimal c = a;
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a.equals(b));
}
}
//輸出:
//false //雖同值,但不同位址,判斷為不同之參考。
//true //經 = ,兩者變為同一參考位址。
//true //純粹比對兩者的值,都是 0.1 故 true。
// 補充
字串比對: == 、equals
字元比對:只能用 ==
// 差異:
== 去比對它的參考位址。
= 直接去改變參考。
equals 去比對它的值。
################################################################
// 繼承
是指物件的資源可以延伸和重複使用,
在 Java 利用 extends 這個關鍵字來表達類別的繼承關係,也就是 is-a 的概念。
子類別名稱 + extends + 父類別名稱
################################################################
// this 和 super
// this
是指參考到目前作用中物件的特性、方法、建構子。
//super
是指可以參考到父物件的方法、屬性、建構子。
################################################################
// super 練習
class Father{
Father(String s){
System.out.println("A");
System.out.println(s);
}
}
class Son extends Father{
Son(){
super("C");
System.out.println("B");
}
}
public class Extends2{
public static void main(String avgs[]){
Son s = new Son();
}
}
################################################################
// spuer and this 練習
class Father{
Father(char c){ //第四步驟,接收到 'A'
System.out.println(c); //第五步驟,印出 'A'
}
}
class Son extends Father{
Son(){
this('A'); //第一步驟,丟出 'A' 到 Son(char c)
System.out.println("B"); //第六步驟,印出 'B'
}
Son(char c){ //第二步驟,接收 this 傳來的值 'A'
super(c); //第三步驟,回傳值到 Father
}
}
public class Extends3{
public static void main(String avgs[]){
Son s = new Son(); //第○步驟,建構子 Son(){...}
}
}
################################################################
2015年7月19日 星期日
JAVA SL-110_07/19
Java SL-110 2015/07/19
##########################################################################
JAVA 構成的要件分為幾項:屬性、方法、類別、建構子。
以下列程式為例:
public class Puggy{ //類別
String name = "小黑"; //物件變數
static String type = "拉布拉多";//類別變數
void skill(){ //物件方法
String s1 = "拿報紙"; //區域變數
System.out.println(s1);
}
static void skill_1(){ //類別方法
System.out.println("拎施鞋");
}
Puggy()[] //建構子
}
##########################################################################
註解:
1. // 單行註解
2. /*.....*/ 多行註解
3. /**...*/ 文件註解,編譯指令:javadoc -verbose -private O.java
##########################################################################
練習『文件註解』:Puppy.java
/**這是寵物的類別*/
public class Puppy{
/**寵物的名稱*/
public static String name = "小黃";
/**寵物的品種*/
public static String type = "拉布拉多";
/**寵物的顏色*/
public static String color = "黃色";
/**寵物的技能*/
public static void skill(){
System.out.println("拿施鞋");
}
}
cmd:
javadoc -verbose -private Puppy.java
點開 index.html 可以看到說明文件。
##########################################################################
// package 與 import
##########################################################################
JAVA 構成的要件分為幾項:屬性、方法、類別、建構子。
以下列程式為例:
public class Puggy{ //類別
String name = "小黑"; //物件變數
static String type = "拉布拉多";//類別變數
void skill(){ //物件方法
String s1 = "拿報紙"; //區域變數
System.out.println(s1);
}
static void skill_1(){ //類別方法
System.out.println("拎施鞋");
}
Puggy()[] //建構子
}
##########################################################################
註解:
1. // 單行註解
2. /*.....*/ 多行註解
3. /**...*/ 文件註解,編譯指令:javadoc -verbose -private O.java
##########################################################################
練習『文件註解』:Puppy.java
/**這是寵物的類別*/
public class Puppy{
/**寵物的名稱*/
public static String name = "小黃";
/**寵物的品種*/
public static String type = "拉布拉多";
/**寵物的顏色*/
public static String color = "黃色";
/**寵物的技能*/
public static void skill(){
System.out.println("拿施鞋");
}
}
cmd:
javadoc -verbose -private Puppy.java
點開 index.html 可以看到說明文件。
##########################################################################
// package 與 import
// package 程式,路徑 C:\java\water\Fish.java
package water;
public class Fish{
public static String name = "小金";
public static String type = "金魚";
public static String color = "金";
public static void skill(){
System.out.println("吐泡泡");
}
}
// 主程式,路徑 C:\java\PetStore.java
public class PetStore{
public static void main(String args[]){
String fishname = water.Fish.name;
String fishtype = water.Fish.type;
String fishcolor = water.Fish.color;
System.out.println("我有一隻優雅的" + fishtype + "牠的名字叫" + fishname + ",牠身上的顏色是:" + fishcolor + "色");
System.out.println("每當牠生氣的時候都會");
water.Fish.skill();
}
}
cmd:
javac PetStore.java
java PetStore
// 猜猜哪個 import 寫法,效能較快?
// 1.
import java.io.File;
File f;
f = new File("test.txt");
// 2.
import java.io.*;
import java.awt.*;
File f;
f = new File("test.txt");
// 3.
import java.io.*;
File f;
f = new File("test.txt");
// 4.
java.io.File f;
f = new java.io.File("test.txt");
// 答:以上四種的執行效能都一樣。
// 程式撰寫優先: package > import > classpath
##########################################################################
存取修飾元:
private 同一個 class 下才可進行存取。
default 同一個 package 下的 class 才可進行存取。
protected 不同 package 可以透過繼承。
public 皆可存取。
一般類別只有 public 和 default 兩種存取權限,『內部類別』才有四種存取權限。
##########################################################################
Java 命名規則:
1. 第一個字必須是英文字母、_ 或 $。
2. Java 有大小寫之分。
3. 不可以是關鍵字。
因此推薦使用駝峰式大小寫命名,例: AppStore
##########################################################################
資料型態 bytes bit 範圍 預設值
char 2 16 '1u0000'~'1uFFFF'(0~65535) '1u0000'
byte 1 8 -128~127 0
short 2 16 -32768~32762 0
int 4 32 -2031次方~(2031次方-1) 0
char c = '中'; //可以
char c1= '1u4E2D'; //可以 Unicode 編碼
char c2= 65; //可以 ASCII 編碼
char c3= '\0'; //可以 \0 為空字元
byte b = 255; //不行,超出資料範圍
short a = 'A'; //可以,會轉換成數字
int a = '爪'; //可以,會轉成 ASCII 數字
int b = '哇'; //可以,會轉成 ASCII 數字
int c = a+b; //可以,會轉成 ASCII 數字
// Java 預設值
整數 int
浮點數 double
資料型態 bytes bit 範圍 預設值
long 8 64 -2063次方~(2063次方-1) 0L
float 4 32 -3.4E+38~3.4E+38 0.0f
double 8 64 -1.7E+308~1.7E+308 0.0
boolean 1 8 true/false false
long l = 10; //不行,因為 long 宣告要有 L
float f = 2.5; //不行,因為 float 宣告要有 f
double d = 2.5f //可以,因為 dobule 的資料範圍大於 float
boolean b = 0; //不行,Java 的布林值只有 true / false
##########################################################################
資料態的轉換:
1. 小轉大:無風險,自動轉換
2. 大轉小:風險大,手動 coding
(欲轉換的型態)變數名稱;
(float)b;
// 判斷 compile 會不會過?
int i = 1;
double d;
d = i;
i = d;
//答:i=d; 會有問題,必須改成 i = (int)d;
// 判斷 compile 會不會過?
byte b=3;
short s=5;
short c=b+s;
//答:compile 會錯,因為整數預設為 int ,
//所以整數運算 short c=b+s; 必須改為 int c=b+s;
##########################################################################
陣列:
[] > 指的是陣列中元素的位置或陣列物件的長度
int a[]=new int[5]{1,2,3,4,5]; \\這是錯誤的,已設有初值,不能再設長度。
int a[]=new int[]{1,2,3,4,5];
int B[]=new int[5];
B[0]=3;
B[1]=2;
//陣列取長度:
陣列變數.length //陣列取長度是一種屬性。
字串變數.length(); //字串取長度是一個方法,後面有括號。
//比較 String 與 chat
String char
資料型態 參考資料型態 基本資料型態
圈住符號 " " ' '
比較運算 == 或 equals() ==
抽象表現 是一個 class 16-bit unicod
補充,參考資料型態有三種:String, Array, Object.
##########################################################################
算數運算子:
+ 正加 //正或負為單元運算子
- 負減
*
/
%
++
...
//---------------------------
byte x=1, y=2, z;
z = x+y;
//這是錯的,要先相加再做轉換:z=(byte)(x+y);
//---------------------------
int a=0, b=0;
b = a++ + ++a - a++;
a= 3
b= 0
//Ans:b = 0(1) + 2(2) - 2(3)
//---------------------------
int a=0, b=0;
b= a-- + --a - a--;
a= -3
b= 0
//Ans:b = 0(-1) + -2(-2) - -2(-3)
##########################################################################
關系運算子:
>
<
>=
<=
==
!=
int a=1, b=2;
a==b False
a>b False
a<b Ture
a>=b False
a<=b Ture
##########################################################################
邏輯運算子: 短路 short-circuit
不論是 T 或 F 都會執行
& && 第一組邏輯是 F 時,就跳出
| || 第一組邏輯是 T 時,就跳出
int a=1, b=2;
(a<b) && (a>0); T,T Ture
(a<b) & (a>0); T,T Ture
(a>b) | (a<0); F,F False
(a>b) || (a<0); F,F False
!(a>b); F,NOT Ture
(b>a) | (a<0); T Ture | 後面不執行
(b>a) || (a<0); T,F Ture
(a<b) & (a<0); T,F False
//---------------------------
int a=1, b=2;
if((a<b) | (++a>0))
a=2
//---------------------------
int a=1, b=2;
if((a<b) || (a++>0))
a=1
##########################################################################
指定運算子:
=
+=
-=
*=
/=
%=
&=
//---------------------------
int a=2;
a=a*2-3;
a=1
//---------------------------
int a=2;
a*=2-3;
a=-2
//---------------------------
String s1="JAVA";
String s2="SCJP";
int i=1;
int j=2;
System.out.println(i+j); //印出 3
System.out.println(s1+j); //印出 JAVA2
//---------------------------
String s1="420";
s1+=42;
System.out.println(s1); //印出 42042
//---------------------------
X = 5*3 < 20 & 3+7 > 9-1 || 20 >= 20 -30 && False
T & T || 跳出
##########################################################################
流程控制:
條件式流程控制 if-else, switch-case
迴圈式 for, while, do-while, foreach
例外控制 try-catch-finally, throws
特定控制單元 break, continue, label
label 為流程控制記號,不能改變程式執行流程的順序。
//---------------------------
//if_else
int a=1;
if(a>0)
System.out.println("A");
// System.out.println("B");
else
System.out.println("C");
System.out.println("D");
輸出:
A
D
//---------------------------
//switch case
1. case 的比對不可以重複
2. switch(x)
x 必須是 int 以下的值域和 String (int, char, byte, short)
3. default 關鍵字可以單獨存在
4. default 只能有一個
為何需要 break?
因為 case 不能改變程式執行的流程,它只是一個記號,所以需要 break 來改變目前流程>。
語法:
switch(x){
case 1:
......
break;
case 2:
......
break;
default:
}
//---------------------------
//for
public class Fest{
public static void main(String avgs[]){
for(int i=1;i<=10;i++){
if(i==8)
break;
if(i%3==0)
continue;
System.out.println(i);
}
}
}
輸出:12457
2015年7月13日 星期一
程式設計概論0705
# 二維陣列
宣告
資料型態 陣列名稱[][] = 資料型態[列的個數][行的個數];
# 對等宣告
int arr[][] = new [3][4];
int arr[][] = {{1,2,3}, {4,5,6}};
# 不對等宣告
int arr[][] = new [3][];
arr[0] = new int [4]; // 宣告 arr[0] 列,有 4 行
arr[1] = new int [3]; // 宣告 arr[1] 列,有 3 行
arr[2] = new int [4]; // 宣告 arr[2] 列,有 4 行
int arr[][] {{第 0 列初值}, {第 1 列初值}, {第 2 列初值}...{ 第 n 列初值}};
# 取得陣列的列數
陣列名稱.length();
# 取得特定列的元素個數
陣列名稱[列的索引值].length;
## 函數
把相同的程式碼撰寫在函數中,簡化程式中的程式碼達到程式模組化。
語法
public static 傳回值 方法名稱 (型態 引數, 型態 引數)
宣告
資料型態 陣列名稱[][] = 資料型態[列的個數][行的個數];
# 對等宣告
int arr[][] = new [3][4];
int arr[][] = {{1,2,3}, {4,5,6}};
# 不對等宣告
int arr[][] = new [3][];
arr[0] = new int [4]; // 宣告 arr[0] 列,有 4 行
arr[1] = new int [3]; // 宣告 arr[1] 列,有 3 行
arr[2] = new int [4]; // 宣告 arr[2] 列,有 4 行
int arr[][] {{第 0 列初值}, {第 1 列初值}, {第 2 列初值}...{ 第 n 列初值}};
# 取得陣列的列數
陣列名稱.length();
# 取得特定列的元素個數
陣列名稱[列的索引值].length;
## 函數
把相同的程式碼撰寫在函數中,簡化程式中的程式碼達到程式模組化。
語法
public static 傳回值 方法名稱 (型態 引數, 型態 引數)
訂閱:
文章 (Atom)