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