马哥教育第二十二天IO模型理论、数据库基础理论、LAMP平台理论基础及mysql部署...
1、IO模型理論基礎(chǔ)詳解:
? ? ? ? ? ? ? ? ?http或https都是基于tcp協(xié)議完成通訊。在tcp中使用socket通訊模型,在domain中界定socket是如何定義。
? ? ? ? ? ? ? ? ? ? ? ? ? ?domain有三種工作類型:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? unix domain:每個(gè)socket地址是個(gè)文件路徑
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ipv4 domain:每個(gè)socket是ipv4:port
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ipv6 domain:每個(gè)socket是ipv6:port
? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ?函數(shù)和過程:有返回值為函數(shù)。無返回值的稱為過程。?
? ? ? ? ? ? ? ? ? ?I/O:進(jìn)程調(diào)用請求發(fā)起之后是否會(huì)被掛起
? ? ? ? ? ? ? ? ? ? ? ? ? ? 阻塞:進(jìn)程發(fā)起I/O調(diào)用,recvfrom未完成之前,進(jìn)程會(huì)被掛起,在數(shù)據(jù)未完成前該進(jìn)程不能做任何工作;
? ? ? ? ? ? ? ? ? ? ? ? ? ??非阻塞:進(jìn)程發(fā)起I/O調(diào)用,被調(diào)用函數(shù)完成不會(huì)阻塞當(dāng)前進(jìn)程,而是立即返回;?
? ? ? ? ? ? ? ? ? ? ? ? ? ??同步:進(jìn)程發(fā)起一個(gè)過程或函數(shù)調(diào)用后,在沒有得到結(jié)果之前,該調(diào)用將不會(huì)返回;
? ? ? ? ? ? ? ? ? ? ? ? ? ??異步:進(jìn)程發(fā)起一個(gè)過程或函數(shù)調(diào)用后,即使被調(diào)用者不能立即結(jié)果準(zhǔn)備好,但也會(huì)返回結(jié)果(未完成),內(nèi)核通知調(diào)用者結(jié)果什么時(shí)候會(huì)OK; ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ?5種I/O模型:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?同步阻塞:進(jìn)程發(fā)起I/O調(diào)用由用戶模式轉(zhuǎn)為內(nèi)核模式,進(jìn)程進(jìn)入不可中斷睡眠,內(nèi)核準(zhǔn)備數(shù)據(jù),數(shù)據(jù)準(zhǔn)備完成后把數(shù)據(jù)從內(nèi)核內(nèi)存復(fù)制到進(jìn)程內(nèi)存中,復(fù)制完成后喚醒進(jìn)程,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?同步非阻塞:進(jìn)程發(fā)起I/O調(diào)用并處于忙等待狀態(tài),進(jìn)程頻繁和內(nèi)核交互查詢數(shù)據(jù)準(zhǔn)備情況,內(nèi)核數(shù)據(jù)準(zhǔn)備好后,進(jìn)程由非阻塞(忙等待過程中)轉(zhuǎn)為阻塞狀態(tài)等待內(nèi)核復(fù)制數(shù)據(jù)到進(jìn)程內(nèi)存中才能繼續(xù)工作
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?I/O復(fù)用:prefork工作于復(fù)用I/O模型,當(dāng)I/O請求發(fā)給進(jìn)程后,進(jìn)程使用select調(diào)用子進(jìn)程接收請求并阻塞請求I/O準(zhǔn)備數(shù)據(jù),數(shù)據(jù)準(zhǔn)備完成后通知進(jìn)程,并用recvform進(jìn)行數(shù)據(jù)復(fù)制,進(jìn)程用(select | poll)同時(shí)監(jiān)控多個(gè)I/O,實(shí)現(xiàn)一個(gè)進(jìn)程可以同時(shí)處理多個(gè)I/O,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?信號(hào)驅(qū)動(dòng)I/O:event 工作于信號(hào)驅(qū)動(dòng)I/O,進(jìn)程發(fā)起SIGIO(sigaction)調(diào)用,進(jìn)程處于非阻塞狀態(tài),數(shù)據(jù)準(zhǔn)備完成后會(huì)通知進(jìn)程,并返回給請求I/O,請求I/O發(fā)起recvform進(jìn)行數(shù)據(jù)復(fù)制
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?異步I/O:nginx支持異步I/O,I/O請求發(fā)給進(jìn)程,進(jìn)程使用aio傳給內(nèi)核,內(nèi)核完成數(shù)據(jù)準(zhǔn)備和數(shù)據(jù)復(fù)制后通知進(jìn)程。該進(jìn)程一直處于非阻塞模型,文件請求可以異步,網(wǎng)絡(luò)I/O無法異步
? ? ? ? ? ? ? ? ? ? sendfile和sendfile64:可以在內(nèi)核中直接構(gòu)建發(fā)送報(bào)文通過tcp響應(yīng)客戶端請求,實(shí)現(xiàn)靜態(tài)文件直接內(nèi)核響應(yīng)
? ? ? ? ? ? ? ? ? ? mmap():磁盤數(shù)據(jù)映射到內(nèi)核內(nèi)存中,在映射到進(jìn)程內(nèi)存中加快客戶端請求響應(yīng)
2、數(shù)據(jù)庫基礎(chǔ)理論
? ? ? ? ? ? ? ? ? ??動(dòng)態(tài)資源:讀入數(shù)據(jù),對數(shù)據(jù)加工,輸出結(jié)果(html標(biāo)記)
? ? ? ?
? ? ? ? ? ? ? ? ? ??數(shù)據(jù)模型:層次模型、網(wǎng)狀模型、關(guān)系模型
? ? ? ? ? ? ? ? ? ??約束:主鍵、外鍵、組合主鍵
? ? ? ? ? ? ? ? ? ? DBMS(database managemenet system)優(yōu)點(diǎn):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)獨(dú)立性
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 高效數(shù)據(jù)存取
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??數(shù)據(jù)完整性和安全性
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)管理
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 并發(fā)存儲(chǔ)和故障恢復(fù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 開發(fā)周期縮短
3、MySQL理論基礎(chǔ)及LAMP平臺(tái)
? ? ? ? ? ? ? ? ? ?關(guān)系型數(shù)據(jù)庫:oracle、db2、sqlserver、mysql-->mariadb、postgresql
??????????????????? 關(guān)系數(shù)據(jù)庫的組件:
???????????????????????????????? 庫:表的集合,每個(gè)表都有一個(gè)惟一名字;
?????????????????????????????????表(關(guān)系):行(row, record, tuple)和列(field, column, attribute)
???????????????????? 約束:候選鍵(碼)、主鍵(primary key)、惟一鍵(unique key)、外鍵(foreign key):引用性約束
?????????????????????
???????????????????? 關(guān)系型查詢語言:SQL
???????????????????????????????? 關(guān)系運(yùn)算:
????????????????????????????????????????? 選擇:挑選出符合指定條件行
??????????????????????????????????????????投影:挑選出關(guān)心的列
?????????????????????????????????連接運(yùn)算:
???????????????????????????????????????? ? 笛卡爾積:從兩個(gè)輸入關(guān)系中輸出所有的元組對(無論它們在共同的屬性上取值是否相同),因此,也被稱為交叉連接;
??????????????????????????????????????????? 自然連接: 從兩個(gè)輸入關(guān)系中輸出這樣的元組對:它們在相同的名字的所有屬性上取值相同;
????????????????????? SQL語言有如下幾個(gè)部分組成:
??????????????????????????????????數(shù)據(jù)定義語言:DDL(CREATE, DROP, ALTER, GRANT, REVOKE)
??????????????????????????????????數(shù)據(jù)操縱語言:DML(INSERT, DELETE, UPDATE, SELECT)
??????????????????????????????????事務(wù)控制:創(chuàng)建事務(wù)和結(jié)束事務(wù)
?????????????????????? SQL的數(shù)據(jù)定義:
???????????????????????????????????創(chuàng)建關(guān)系,即創(chuàng)建表:
??????????????????????????????????????????每個(gè)關(guān)系模式;
??????????????????????????????????????????每個(gè)屬性的取值類型;??
??????????????????????????????????????????完整性約束;
??????????????????????????????????????????索引的集合;
??????????????????????????????????????????表的安全性和權(quán)限信息;
??????????????????????????????????????????表的物理存儲(chǔ)結(jié)構(gòu);
??????????????????????????????????????????????????? MyISAM: .frm, .MYD(數(shù)據(jù)), .MYI(索引)
??????????????????????????????????????????????????? InnoDB: .frm, .ibd(數(shù)據(jù)+索引)
??????????????????????? SQL數(shù)據(jù)的類型:
???????????????????????????????????? 字符型:
???????????????????????????????????????????????? 固定長度的字符型:char
?????????????????????????????????????????????????可變長度的字符型: varchar
?????????????????????????????????????? 數(shù)值型:
????????????????????????????????????????????????? 整型:精確數(shù)值型(int)?
???????????????????????????????????????????????????浮點(diǎn)型: 近似數(shù)值型(float、double)?
??????????????????????? LAMP: Linux + apache(httpd) + php (php-myql)+ mysql????
??????????????????????????????????? mysql: 3306/tcp?????
???????????????????????? httpd + php:
???????????????????????????????????? php作為httpd的模塊
???????????????????????????????????????? 當(dāng)php以模塊化使用時(shí),只需重新啟動(dòng)httpd
??????????????????????????????????????????????? /etc/httpd/conf.d/php.conf:主配置文件
????????????????????????????????????????????????/usr/lib64/httpd/modules/libphp5.so:模塊位置?
?????????????????????????????????????httpd基于cgi協(xié)議與php通信
???????????????????????????????????? php工作為一個(gè)服務(wù)器:httpd以fastcgi協(xié)議與php服務(wù)器進(jìn)程進(jìn)行通信
??????
?????????????????????????php的安裝:
???????????????????????????????????? rpm包、編譯安裝
?????????????????????????開源php站點(diǎn)程序:
?????????????????????????????????????wordpress
?????????????????????????????????????drupal, joomlar
?????????????????????????????????????phpwind(阿里)
?????????????????????????????????????discuz(騰訊)
???????????????????????????????????? phpbb
???????????????????????????????????? phpMyAdmin: php, 管理 mysql程序
? ? ? ? ? ? ? ? ? ? ? ? php測試代碼:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<html>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<h1> this page </h1>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<?php
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? phpinfo(); ? 測試php是否正常工作
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<?php
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? $link = mysql_connect('127.0.0.1','root','123456');測試php連接mysql是否成功
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??if ($link)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? echo "ok";?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? echo "no";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mysql_close();?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?</html>
4、LAMP平臺(tái)理論基礎(chǔ)及部署???????
???????????????????????? MySQL安裝:
??????????????????????????????????? ??1、rpm包安裝?項(xiàng)目方提供、OS vendor?
??????????????????????????????????????2、通用二進(jìn)制格式 展開、配置后即可使用
????????????????????????????????????? 3、源碼編譯安裝?cmake編譯器??
?????????????????????????? CentOS 6-mysql-server:?
?????????????????????????????????????? 服務(wù)腳本:/etc/rc.d/init.d/mysqld
???????????????????????????????????????主服務(wù)程序:/usr/bin/mysqld_safe
???????????????????????????????????????數(shù)據(jù)文件:/var/lib/mysql
???????????????????????????????????????配置文件:/etc/my.cnf
???????????????????????????????????????客戶端程序:/usr/bin/mysql
???????????????????????????????????????unix sock: /var/lib/mysql/mysql.sock
???????????????????????????? mysqld第一次啟動(dòng)之前需要先初始化:創(chuàng)建mysqld服務(wù)自身運(yùn)行依賴元數(shù)據(jù)數(shù)據(jù)庫:mysql
??????????????????????????? CentOS 7
???????????????????????????????????????? systemctl start mariadb.service
???????????????????????
?????????????????????????????mysql客戶端程序的基本使用:
????????????????????????????????????????? -u USERNAME: 默認(rèn)為root
??????????????????????????????????????????-h HOST: 默認(rèn)為localhost
????????????????????????????????????????? -p [PASSWORD]: 輸入密碼
?????????????????????????????mysql的用戶賬號(hào):USERNAME@HOST
?????????????????????????????????????????? USERNAME: 用戶名
???????????????????????????????????????????HOST: 此用戶僅允許通過此處指定的主機(jī)登錄mysqld服務(wù);
???????????????????????????????????????????root@localhost, root@'127.0.0.1', root@'HOSTNAME'
??????????????????????????????交互式命令:
???????????????????????????????????????????客戶端命令:無需分號(hào)結(jié)尾;
???????????????????????????????????????????服務(wù)器端命令:必需分號(hào)結(jié)尾;
mysql注意事項(xiàng):
?????????????mysql命令和字段名不區(qū)分大小寫,表名在linux中會(huì)區(qū)分大小寫
?mysql常用命令:
???????????? show databases;顯示所有的數(shù)據(jù)庫名稱
? ? ? ? ? ? ?select version();?顯示數(shù)據(jù)庫版本
? ? ? ? ? ? ?select user();顯示用戶
?????????????use mysql;指定使用哪個(gè)數(shù)據(jù)庫
?????????????show tables;顯示當(dāng)前庫中的表
?????????????desc user;顯示表結(jié)構(gòu)
?????????????select user,host,password from user;查看用戶登錄限制
? ? ? ? ? ? ?show table status\G;顯示表的詳細(xì)信息
? ? ? ? ? ? ?show character set;顯示數(shù)據(jù)庫支持的字符集
? ? ? ? ? ? ?show collation;查看字符排序規(guī)則
? ? ? ? ? ? ?show global variables;顯示服務(wù)器工作屬性所有環(huán)境變量,show global variables like 'wait_timeout';查看單個(gè)
? ? ? ? ? ? ?show global status;顯示所有執(zhí)行命令統(tǒng)計(jì)數(shù)據(jù);show global status like 'com_select';顯示單個(gè)
轉(zhuǎn)載于:https://blog.51cto.com/5990383/1653708
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的马哥教育第二十二天IO模型理论、数据库基础理论、LAMP平台理论基础及mysql部署...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理解统计信息(3/6):谁创建和管理统计
- 下一篇: android编程中setLayoutP