马哥教育第二十二天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
马哥教育第二十二天IO模型理论、数据库基础理论、LAMP平台理论基础及mysql部署...相关推荐
- 马哥教育第二十四ftp协议、vsftpd的高级应用、rpc概念及nfs的基本应用、samba及其基本应用...
1.ftp协议及vsftpd的基本应用 文件共享服务: 工作在应用层:ftp(file transfer protocol) ...
- 英语专业有必要学python吗-马哥教育官网-专业Linux培训班,Python培训机构
今天给大家分享一篇 0x00 前言 你想知道背单词软件有大概多少人注册第一天都没有背完嘛? 你想知道背单词软件这么火,这么多人在使用,真的有多少人真的在背诵嘛? 别急,Python程序员用数据给你说话 ...
- 马哥python培训靠谱吗马哥教育python课程再次革命性升级
2019 年初,马哥教育迎来一次"大升级"-- 2019 全新Python全能新版课程大纲正式上线.历时半年,走访100+互联网企业,挖掘企业真实需求,腾讯,阿里专家亲自参与设计, ...
- python训练营免费领取-马哥教育官网-专业Linux培训班,Python培训机构
[课程第一天] [课程第二天] [课程第三天] [课程第四天] [课程第五天] [课程第六天] [课程第七天] 三.学习的具体平台和方式 1.学习的平台 以录播视频和文字版本为主,QQ社群资深工程师答 ...
- python类型转换-马哥教育官网-专业Linux培训班,Python培训机构
今天马哥教育要跟大家分享的文章是类型转换是什么?我们要跟大家探讨的是Python课程中类型转换的相关内容,比如将小数转化为小数如何表达?整数转化为字符如何表达? Python的几种最基本的数据类型,我 ...
- 自动化专业学python有用吗-马哥教育官网-专业Linux培训班,Python培训机构
今天小编要来说一下Python自动化的学习思路, 对于刚刚进入的测试行业的人来说,未来该怎么样朝着自动化方向发展,即使接触到了自动化测试,又该从何下手去学呢? 简单的说, 做测试做的好,会了接口,会了 ...
- 【马哥教育视频】cacti入门及进阶[已更新至第四段]
马哥教育(http://www.magedu.com)视频系列之"cacti入门及进阶",本系列视频共四段,需要有一定的Linux使用基础才能学习. 第一段视频讲解了SNMP协议原 ...
- python培训班骗局-马哥教育官网-专业Linux培训班,Python培训机构
问题的起源 早些时候使用with实现了一版全局进程锁,希望实现以下效果: 全局进程锁本身不用多说,大部分都依靠外部的缓存来实现的,redis上用的是setnx,有时候根据需要加上缓存击穿问题.随机延后 ...
- python在线学习直播-马哥教育官网-专业Linux培训班,Python培训机构
一直以来,IT行业的高薪吸引了大量的人员进入--2017年,国家统计局发布的薪酬水平统计中,IT首次超过金融,成为平均薪资最高的行业. IT行业的高薪不是凭空而来,单单是入行门槛就拦住了一大批人.在这 ...
最新文章
- 16、子查询改写为表连接
- flex使用FlexPrintJob打印问题
- mysql快捷创建数据库_mysql数据库快速入门(1)
- LeetCode之Intersection of Two Arrays
- Spring 容器:三种方式解决 Resource leak: ‘applicationContext‘ is never closed 问题
- mips汇编计算开方_东南大学计算机系统综合设计MOOC第5期开课
- Android-动画简介
- Linux系统安全概述-sudo授权-pam认证机制-对称加密-非对称加密-md5-数字证书
- 模电实验——实验三 集成运算放大器的基本应用
- Ubuntu下安装SQLite、与简单介绍
- 数据增强神器 SimpleCopyPaste 支持全流程
- 生成1000个不同的随机数
- CyanogenMod编译
- 开关电源共模电感和X电容的选取?
- HTML的怎么使用,开发工具以及常用标签。
- SpringCloud中的application-test.yml剖析(以user模块为例)
- 2021世界人工智能大会:站在人工智能时代的门槛
- 西部数码网站管理助手 mysql_西部数码网站管理助手开启自定义伪静态教程
- Windows XP With SP3 简体中文版下载
- 参与广州的第四届手机应用开发者大会感想