5七、Linux 的基本命令(重點,如今多數服務器都是Linux 系統)php
答:arch 顯示機器的處理器架構html
uname -m 顯示機器的處理器架構前端
uname -r 顯示正在使用的內核版本vue
dmidecode -q 顯示硬件系統部件node
- (SMBIOS / DMI) hdparm -i /dev/hda 羅列一個磁盤的架構特性mysql
hdparm -tT /dev/sda 在磁盤上執行測試性讀取操做web
cat /porc/cpuinfo 顯示 CPU info 的信息redis
cat /porc/interrupts 顯示中斷算法
cat /porc/meminfo 校驗內存使用sql
cat /porc/swaps 顯示哪些 swap 被使用
cat /porc/verion 顯示內核的版本
cat /porc/net/dev 顯示網絡適配器及統計
cat /porc/mounts 顯示已加載的文件系統
date 顯示系統日期
cal 2007 顯示 2007 年的日曆表
date 061212352018.00 設置日期和時間 -月日時分年.秒
clock -w 將時間修改保存到 BIOS
文件搜索:
find / -name file1 從 '/'開始進入根文件系統搜索文件和目錄
locate *.ps 尋找以 '.ps'結尾的文件-先運行'updatedb'命令
whereis halt 顯示一個二進制文件、源碼或 man 的位置
which halt 顯示一個二進制文件或可執行文件的完整路徑
掛載一個文件系統:
mount /dev/hda2 /mnt/hda2 掛載一個叫作 hda2 的盤- 肯定目錄'/ mnt/hda2' 已經存在
umount /dev/hda2 卸載一個叫作 hda2 的盤- 先從掛載點'/ mnt/hda2' 退出
追加命令:
一、sudo cat /etc/aaa >>/usr/bbb 把文件/etc/aaa 中的內容追加到/usr/bbb 中的內容的後面
二、sudo chmod apache:apache /etc/index.html 更改/etc/index.html 的文件全部者爲 apache,文件羣組爲 apache
三、sudo chmod 744 /etc/index.html4 更改/etc/index.html 的全部者權限爲讀取、寫入、執行。羣組權限爲讀取。其餘權限爲讀取
sudo rm /etc/index.html 刪除/etc 下名爲 hello 的文件
固然,若是你是以 orot 用戶執行以上操做,能夠去掉前邊的 sudo
df -hl 查看磁盤剩餘空間
df -h 查看每一個根路徑的分區大小
du -sh [目錄名] 返回該目錄的大小
du -sm [文件夾] 返回該文件夾總 M 數
shutdown -h now 關機 (系統的關機、重啓以及登出)
關閉系統
init 0 關閉系統
telinit 0 關閉系統
shutdown -h hour:minutes & 按預約時間關閉系統
shutdown -c 取消按預約時間關閉系統
shutdown -r now 重啓
reboot 重啓
logout 註銷文件和目錄
pwd 顯示工做路徑
ls 查看目錄中的文件
ls -F 查看目錄中的文件
ls -l 顯示文件和目錄的詳細資料
ls -a 顯示隱藏文件
ls *[0-9]* 顯示包含數字的文件名和目錄名
tree [文件夾] 顯示文件和目錄由根目錄開始的樹形結構
lstree [文件夾] 顯示文件和目錄由根目錄開始的樹形結構
mkdir dir1 建立一個叫作 'dir1'的目錄' 磁盤空間
df -h 顯示已經掛載的分區列表
ls -lSr |more 以尺寸大小排列文件和目錄
du -sh dir1 估算目錄 'dir1'已經使用的磁盤空間'
下載、解壓
一、對於.tar 結尾的文件 tar -xf all.tar
二、對於.gz 結尾的文件 gzip -d all.gz
gunzip all.gz
# zip all.zip *.jpg 這條命令是將全部.jpg 的文件壓縮成一個 zip 包
# unzip all.zip 這條命令是將 all.zip 中的全部文件解壓出來下載命令
wget + 空格 +要下載文件的 url 路徑=====================================
Shell 腳本:必須以 #!/bin/sh 開頭簡單例子:判斷這個目錄下有沒有文件(File)
#!/bin/bash
Num=`ls -al /opt |grep "^-"|wc -l `
if [ $Num != 0 ]
then echo "/opt has $Num files"
else echo "/opt has none file"
fils -al /opt |grep "^-"|wc -l 這個命令可以統計文件個數 爲 0 就是沒有文件 非零就是有文件
5八、memache 通常用來緩存什麼數據?
答:一、常常被讀取而且實時性要求不強能夠等到自動過時的數據。例如網站首頁最新文章列表、某某排行等數據。
二、常常被讀取而且實時性要求不強的數據。好比用戶的好友列表,用戶文章列表,用戶閱讀記錄等。
三、統計類緩存,好比文章瀏覽數、網站 PV 等。
四、活躍用戶的基本信息或者某篇熱門文章。
五、session 數據
5九、魔術方法和魔術常量
答:魔術方法:
一、__construct() 實例化對象時被調用,當 __construct 和以類名爲函數名的函數同時存在時,__construct 將被調用,另外一個不被調用。
二、__destruct() 當刪除一個對象或對象操做終止時被調用。
三、__call() 對象調用某個方法,若方法存在,則直接調用;若不存在,則會去調用 __call 函數。
四、__get() 讀取一個對象的屬性時,若屬性存在,則直接返回屬性值;若不存在,則會調用 __get 函數。__get()方法有一個參數,表示要調用的變量名
五、__set() 設置一個對象的屬性時,若屬性存在,則直接賦值;若不存在,則會調用 __set 函數。__set()方法包含兩個參數,分別表示變量名稱和變量值,兩個參數都不可省略
六、__toString() 打印一個對象的時被調用。如 echo obj;或 printobj;
七、__clone() 克隆對象時被調用。如:t=newTest();t1=clone $t;
八、__sleep() serialize 以前被調用。若對象比較大,想刪減一點東東再序列化,可考慮一下此函數。
九、__wakeup() unserialize 時被調用,作些對象的初始化工做。
十、__isset() 檢測一個對象的屬性是否存在時被調用。如:isset($c->name)。十一、__unset() unset銷燬指定的變量時被調用。如:unset($c->name)。
十二、__set_state() 調用 var_export 時,被調用。用 __set_state 的返回值作爲 var_export 的返回值。
var_export ( mixed $expression
[,bool $return
] )此函數返回關於傳遞給該函數的變量的結構信息,它和 var_dump() 相似,不一樣的是其返回的表示是合法的 PHP 代碼。第二個參數設置爲 TRUE
,從而返回變量的表示。
1三、__autoload()實例化一個對象時,若是對應的類不存在,則該方法被調用。
魔術常量:
一、__LINE__ 返回文件中的當前行號。
二、__FILE__ 返回文件的完整路徑和文件名。若是用在包含文件中,則返回包含文件名。自 PHP 4.0.2 起,__FILE__ 老是包含一個絕對路徑,而在此以前的版本有時會包含一個相對路徑。
三、__FUNCTION__ 返回函數名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該函數被定義時的名字(區分大小寫)。在 PHP 4 中該值老是小寫字母的。
四、__CLASS__ 返回類的名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該類被定義時的名字(區分大小寫)。在 PHP 4 中該值老是小寫字母的。
五、__METHOD__ 返回類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。
六、__DIR__ 當前文件的目錄
60、接口 interface 和抽象類 abstract class 的區別?
答:抽象類是一種不能被實例化的類,只能做爲其餘類的父類來使用。抽象類是經過關鍵字 abstract 來聲明的。抽象類與普通類類似,都包含成員變量和成員方法,二者的區別在於,抽象類中至少要包含一個抽象方法,抽象方法沒有方法體,該方法天生就是要被子類重寫的。抽象方法的格式爲:abstract function abstractMethod();
接口是經過 interface 關鍵字來聲明的,接口中的成員常量和方法都是 public 的,方法能夠不寫關鍵字 public,接口中的方法也是沒有方法體。接口中的方法也天生就是要被子類實現的。抽象類和接口實現的功能十分類似,最大的不一樣是接口能實現多繼承。在應用中選擇抽象類仍是接口要看具體實現。子類繼承抽象類使用 extends,子類實現接口使用 implements。
接口是一種特殊化的抽象類
6一、什麼是隊列?排它鎖,Myisam 死鎖如何解決?
答:在默認狀況下 MyIsam 是表級鎖,因此同時操做單張表的多個動做只能以隊列的方式進行。
排它鎖又名寫鎖,在 SQL 執行過程當中爲排除其它請求而寫鎖,在執行完畢後會自動釋放。
死鎖解決:先找到死鎖的線程號(從數據字典裏面分析,mysql>
SELECT
*
FROM
information_schema.INNODB_TRX\G
),而後殺掉線程 ID(kill 線程ID)。
6二、Myisam 與 Innodb 的區別?
Innodb引擎
Innodb引擎提供了對數據庫ACID事務的支持,而且實現了SQL標準的四種隔離級別。 該引擎還提供了行級鎖和外鍵約束,它的設計目標是處理大容量數據庫系統,它自己其實就是基於MySQL後臺的完整數據庫系統,MySQL運行時Innodb會在內存中創建緩衝池,用於緩衝數據和索引。 可是該引擎不支持FULLTEXT類型的索引(全文索引),並且它沒有保存表的行數,當SELECT COUNT(*) FROM TABLE時須要掃描全表。 當須要使用數據庫事務時,該引擎固然是首選。因爲鎖的粒度更小,寫操做不會鎖定全表,因此在併發較高時,使用Innodb引擎會提高效率。 可是使用行級鎖也不是絕對的,若是在執行一個SQL語句時MySQL不能肯定要掃描的範圍,InnoDB表一樣會鎖全表。
MyIASM引擎
MyIASM是MySQL默認的引擎,可是它沒有提供對數據庫事務的支持,也不支持行級鎖和外鍵,所以當INSERT(插入)或UPDATE(更新)數據時即寫操做須要鎖定整個表,效率便會低一些。 不過和Innodb不一樣,MyIASM中存儲了表的行數,因而SELECT COUNT(*) FROM TABLE 時只須要直接讀取已經保存好的值而不須要進行全表掃描。 若是表的讀操做遠遠多於寫操做且不須要數據庫事務的支持,那麼MyIASM也是很好的選擇
主要區別:
一、MyIASM是非事務安全的,而InnoDB是事務安全的
二、MyIASM鎖的粒度是表級的,而InnoDB支持行級鎖
三、MyIASM支持全文類型索引,而InnoDB不支持全文索引(5.6.24之後支持)、
四、MyIASM相對簡單,效率上要優於InnoDB,小型應用能夠考慮使用MyIASM
五、MyIASM表保存成文件形式,跨平臺使用更加方便
六、MyIASM不支持外鍵約束,而InnoDB 支持外鍵約束(可實現表的聯動操做,一刪多刪)
應用場景:
一、MyIASM管理非事務表,提供高速存儲和檢索以及全文搜索能力,若是再應用中執行大量select操做,應該選擇MyIASM
二、InnoDB用於事務處理,具備ACID事務支持等特性,若是在應用中執行大量insert和update操做,應該選擇InnoDB
6三、bootstrap 框架有哪些優勢?
答:bootstrap 是一款 web 開發框架,它由 CSS,JavaScript,Html,三部分構成,它簡潔靈活,使得 web 開發更加的快捷
優勢:
①節省時間: 使用 bootstrap 框架,能夠大大的節省項目開發時間,它包含了不少現成的代碼,若是須要使用,只須要找到合適的代碼,插入合適的位置便可,此外,CSS 是使用 LESS 編寫,不少樣式和設計都已經設計完成了
②定製化: bootstrap 能夠根據本身的項目,留取框架中本身須要的部分
③設計合理:
6四、簡述下node.js的認識?
中文文檔參考:http://nodejs.cn/api/
簡單的說 Node.js 就是運行在服務端的 JavaScript。一個新興的前端框架,後臺語言。
Node.js 是一個基於Chrome JavaScript 運行時創建的一個平臺。 用於方便地搭建響應速度快、易於擴展的網絡應用。
Node.js是一個事件驅動I/O服務端JavaScript環境,基於Google的V8引擎,V8引擎執行Javascript的速度很是快,性能很是好。很是適合在分佈式設備上運行數據密集型的實時應用。
優勢:
6四、簡述下vue.js的認識?
答:
Vue.js(讀音 /vjuː/, 相似於 view) 是一套構建用戶界面的漸進式框架。
Vue 核心庫只關注視圖層, 採用自底向上增量開發的設計。
Vue 的目標是經過儘量簡單的 API 實現響應的數據綁定和組合的視圖組件。
Vue 學習起來很是簡單。
Vue.js的特性以下:
1.輕量級的框架
2.雙向數據綁定
3.指令
4.插件化
6五、Mysql 高併發解決方案?
答:參考:https://blog.csdn.net/qiuweihong/article/details/78751466
正常的優化方案以下:
一、代碼中sql語句優化
二、數據庫字段優化,索引優化
三、加緩存,redis/memcache等
四、主從,讀寫分離
五、分區表
六、垂直拆分,解耦模塊
七、水平切分
6六、InnoDB和MyIsam分別使用的什麼索引,如何實現的?
參考:https://blog.csdn.net/z702143700/article/details/46049101
MyISAM索引實現:
MyISAM引擎使用B+Tree做爲索引結構,葉節點的data域存放的是數據記錄的地址。所以,MyISAM中索引檢索的算法爲首先按照B+Tree搜索算法搜索索引,若是指定的Key存在,則取出其data域的值,而後以data域的值爲地址,讀取相應數據記錄。
MyISAM的索引方式也叫作「非彙集」的,之因此這麼稱呼是爲了與InnoDB的彙集索引區分。
InnoDB索引實現:
InnoDB也使用B+Tree做爲索引結構,但具體實現方式卻與MyISAM大相徑庭。
區別:
一、InnoDB的數據文件自己就是索引文件。MyISAM索引文件和數據文件是分離的,索引文件僅保存數據記錄的地址。而在InnoDB中,表數據文件自己就是按B+Tree組織的一個索引結構,這棵樹的葉節點data域保存了完整的數據記錄。這個索引的key是數據表的主鍵,所以InnoDB表數據文件自己就是主索引。
二、葉節點包含了完整的數據記錄,這種索引叫作彙集索引。
三、由於InnoDB的數據文件自己要按主鍵彙集,因此InnoDB要求表必須有主鍵(MyISAM能夠沒有),若是沒有顯式指定,則MySQL系統會自動選擇一個能夠惟一標識數據記錄的列做爲主鍵,若是不存在這種列,則MySQL自動爲InnoDB表生成一個隱含字段做爲主鍵,這個字段長度爲6個字節,類型爲長整形。
四、InnoDB的全部輔助索引都引用主鍵做爲data域。
五、彙集索引這種實現方式使得按主鍵的搜索十分高效,可是輔助索引搜索須要檢索兩遍索引:首先檢索輔助索引得到主鍵,而後用主鍵到主索引中檢索得到記錄。
總結:
一、InnoDB不建議使用過長的字段做爲主鍵。由於全部輔助索引都引用主索引,過長的主索引會令輔助索引變得過大。
二、非單調(不是自增或自減的均爲非單調)的字段做爲主鍵在InnoDB中不是個好作法,由於InnoDB數據文件自己是一顆B+Tree,非單調的主鍵會形成在插入新記錄時數據文件爲了維持B+Tree的特性而頻繁的分裂調整,十分低效,而使用自增字段做爲主鍵則是一個很好的選擇。
參考資料:
https://blog.csdn.net/Px01Ih8/article/details/80823381