马哥教育第二十二天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的用户账号:[email protected]
                                           USERNAME: 用户名
                                           HOST: 此用户仅允许通过此处指定的主机登录mysqld服务;
                                           [email protected], [email protected]‘127.0.0.1‘, [email protected]‘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‘;显示单个

时间: 2024-08-10 22:06:52

马哥教育第二十二天IO模型理论、数据库基础理论、LAMP平台理论基础及mysql部署的相关文章

第二十二天 IO模型理论、数据库基础、LAMP平台基础理论及MySQL安装部署

一.I/O模型理论 http或https都是基于tcp协议完成通讯.在tcp中使用socket通讯模型,在domain中界定socket是如何定义.                           domain有三种工作类型:                                        unix domain:每个socket地址是个文件路径                                        ipv4 domain:每个socket是ipv4:p

马哥教育第二天

2.1.1 .总线类别:地址总线(用于寻址).控制总线(控制信号操作).数据总线(传输数据).32位系统寻址范围2^32相当于4G.赫兹指1秒钟内所变化的频率.举例:(1GHz=1000MHz,1MHz=1000kHz,1kHz=1000Hz.s(秒).ms(毫秒).μs(微秒).ns(纳秒),其中:1s=1000ms,1 ms=1000μs,1μs=1000ns)cpu运行速度远高于其他设备.为了提高cpu的运行速度在内部制造了寄存器.一级缓存.二级缓存.三级缓存.之后才会去内存和硬盘上查找数

马哥教育第二十三MySQL基础应用入门

1.MySQL基础应用入门                安装mariadb-10.0.19:                      vim /usr/local/mariadb-10.0.19-linux-x86_64/INSTALL-BINARY                                               cd /usr/local                      ln -sv mariadb-10.0.19-linux-x86_64 mysql

马哥教育第二十四ftp协议、vsftpd的高级应用、rpc概念及nfs的基本应用、samba及其基本应用

1.ftp协议及vsftpd的基本应用         文件共享服务:                 工作在应用层:ftp(file transfer protocol)                          应用层协议:tcp,                  工作在内核:nfs                 跨平台:samba           ftp工作在221号端口,传输数据:                  命令连接:文件管理类命令,始终在线的连接       

马哥教育第十二天、进程管理、top、dstat、htop、case

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描述,进程是程序的实体. cpu环0只运行内核,环3运行用户进程,当用户进程需要运行特权指令时(和硬件交互等)会发起软中断由用户模式转为内核模式,由内核代为执行相关操作. 进程被内核调度分为不同进程状态: 运行态(running)

马哥教育第20天至23天学习总结

马哥M28_20天<font size=4>1.ping -s 60000 目标主机ip地址 -f :指定发包大小60000ping2.IP :由前网络号部分和后主机号部分组成:网络号位数必须是连续性的二进制111111,不能是非连续性的:网络ID由IP二进制与子网掩码二进制组合求解得到正确的网络号计算网络数:2^可变的网络ID计算网络的主机最大数量:2^主机ID位-2 0.0.0.0表示所有地址 cidr书写方式:1.1.1.0/24 24表示网络号位数 A类地址: 前8位网络ID,后24位

使用kubeadm快速部署Kubernetes(v1.12.1)集群---来源:马哥教育马哥原创

使用kubeadm快速部署Kubernetes(v1.12.1)集群------来源:马哥教育马哥原创 Kubernetes技术已经成为了原生云技术的事实标准,它是目前基础软件领域最为热门的分布式调度和管理平台.于是,Kubernetes也几乎成了时下开发工程师和运维工程师必备的技能之一. 一.主机环境预设 1.测试环境说明 测试使用的Kubernetes集群可由一个master主机及一个以上(建议至少两个)node主机组成,这些主机可以是物理服务器,也可以运行于vmware.virtualbo

【挨踢人物传】马永亮:感悟学习三境界 引领马哥教育的崛起(第19期)

[编者有话]        本期的嘉宾马永亮,一次误以为是"擅长"的选择,开始结缘计算机,然而当真正接触后才发现犹如"井底之蛙",此前的擅长根本不值一提,从天堂到地狱的落差,没有挫败他的信心和追求,反而激起了他更加强烈的求知欲望,在IT的道路上不断的成长感悟-- [本期人物档案] 个人信息: 51CTO账号:马哥教育 姓名:马永亮 性别:男 所在地:河南郑州 教育信息:研究生 关键词:马哥教育创办人 Linux系统运维专家 51CTO专家博主 51CTO学院签约讲师

马哥教育学习总结

首先,首行空出来致敬马哥!马哥您辛苦了! 接下来,容我先梳理下心情! 正文:来到咱马哥教育这边已经两个多月了,学习进度也已过一大半:目前刚学完zabbix的课程,后面具体还有多少路要走,先不提它,先总结下过去的两个多月的学习情况吧! 先声明我是一个生性懒惰的人,就我个人印象中,好像就没有做过比吃饭睡觉坚持的更久的事情了,所以一开始看到马哥教育这边的课程表时,我的第一反应当然是:哇塞,好屌哦!好多我都没听过的专用名词以及牛逼哄哄的实战案例,真是好神奇啊!不过下一秒我的表情就立马懵逼了,呵呵,这么多