day01 前端框架bootstrap socket模块
昨日内容回顾
1.索引的创建与销毁
索引分为:
主键
唯一键
普通键:
前缀索引键
联合索引键
alter table t1 add index 索引字段名称(字段(数字),....)#创建索引
alter table t1 drop 索引名 #删除字段
show index from 表名 #查看索引
2.全表扫描与索引扫描 (explain)
查询语句前加一个 explain
主要看type类型(由低到高)
all 没走索引
index
range
ref
eq_ref
const
system
null
#执行级别最起码要达到range级别
不走索引的几种情况
1.未使用索引
2.索引创建有问题
3.查询数据大于表数据的百分之二十五 可以limit限制一下
4.隐式转换问题
5.条件中带有数学相关运算符
6.模糊查询 %开头
7.联合查询里 最左匹配原则,但是使用没有指定最左面那个字段
隔离级别
隔离级别
1.未提交读
事务中的修改即使没有提交,对其他事务也都是可见的,事务可以读取未提交的数据,这一现象也称之为"脏读"
2.提交读 #innodb 默认级别
一个事务从开始直到提交之前所作的任何修改对其他事务都是不可见的,这种级别也叫做"不可重复读"
3.可重复读 # MySQL默认隔离级别 能够解决"脏读"问题,但是无法解决"幻读"
所谓幻读指的是当某个事务在读取某个范围内的记录时另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录会产生幻行,InnoDB和XtraDB通过多版本并发控制(MVCC)及间隙锁策略解决该问题
4.可串行读
强制事务串行执行,很少使用该级别 #解决脏读 幻读 不可重复读 但是执行效率太低 不使用
今日内容概要
前端框架bootstrap
socket模块
动静态网页
今日内容详细
前端框架之bootstrap
# 使用bootstrap调节页面样式其实就是在修改标签的class值
使用3版本
响应式布局:根据显示器大小动态合理调整页面布局
CDN:内容分发网络
为了加快对静态资源(图片、css文件、js文件)数据的访问速度
bootstrap涉及到动态效果需要使用jQuery
'''
第一次使用bootstrap最好先下载源文件本地导入使用
目的是为了让pycharm能够识别该框架提供的功能并自动提示
如果直接使用CDN那么pycharm无法自动提示
'''
选择器(为了查找我们需要查找的标签并操作)
id选择器 #选择
#d1 {} id=
class选择器
.c1 {} class =
标签选择器
div {}
使用bootstrap
#引入jQuery 3.4.1 的版本
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
#引入bootstrap 用link 因为胡css文件 先用本地的 以后可以用cdn
<link rel="stylesheet" href="bootstrap-3.4.1-dist/css/bootstrap.min.css">
#引入动态js文件 用script
<script src="bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
#布局容器
#左右有留白
<div class="container" style="height: 200px;background: red" ></div>
#左右没留白 填满
<div class="container-fluid " style="height: 200px;background: green"></div>
#栅格系统
row来划分一行(一个row是固定的12份)
在row里面通过col-md-n来划定需要几份
# 在划定的时候一定保证最多12 下面由大到小排列
#.col-lg-6 表示占了六块 超大屏
#col-md-6:表示占了六块 电脑端的
#.col-sm-6 表示占了六块 比手机大一点
#col-xs-6 表示占了六块手机端
#没占满情况下 可以列偏移 col-md-offset-2 往右移两格
#col-md-pull-2 浮动起来
<div class="row">
<div class="col-md-6 col-xs-6" style="height: 200px; background: green"></div>
<div class="col-md-6 col-xs-6" style="height: 200px;background: red"></div>
</div>
#表格标签
#在内部对h1标题等进行了优化 small小标题
#.lead 通过添加 .lead 类可以让段落突出显示。
#.text-center 居中
#<mark> 为了突出显示文本
<h1>我是哈桑 <small>亚索!!!</small></h1>
剩下的用到时候再看就行太多了
socket模块
服务端必须具备:
1.有固定的IP和端口
2.必须能够24小时不间断提高服务(不包括宕机)
3.支持高并发
服务端
import socket
#建立连接对象
server=socket.socket()
#绑定ip端口
server.bind(('127.0.0.1',8080))
#监听一次能接受几个客户端
server.listen(3)
#获取当前连接对象信息(coon) ip和端口信息(addr)
while True:
conn,addr=server.accept()
#接受客户端数据
data=conn.recv(1024)
#先回复http响应格式
conn.send(b'HTTP/1.1 200 ok\r\n\r\n')
#讲data转换为字符串
new_data=data.decode('utf8')
res=new_data.split(' ')[1]
print(res)
if res == '/index':
conn.send(b'index index')
else:
#回复给客户端数据
conn.send(b'how are you')
# conn.send(b'HTTP/1.1 200 ok\r\n\r\nhow are you')#这么写和上面两条一样 因为http是流式协议先发送点在发送点
客户端
import socket
clint=socket.socket()
#连接服务端
clint.connect(('127.0.0.1',8080))
while True:
#发送数据
clint.send(b'who you are')
#接受数据
res=clint.recv(1024)
print(res)
http协议
HTTP协议
1.四大特性
1.基于请求响应 #被动 请求我我才响应你
2.基于TCP/IP作用于应用层之上的协议(OSI七层) #应表会传网数物
3.无状态 #不保存用户状态
4.无连接/短连接 #请求服务端 服务端发送完数据就断开
长链接 websocket
2.数据格式
请求格式 #客户端给服务端发请求
请求头(请求方法)
请求首行(一大堆kv键值对)
换行 \r\n
请求体(并不是所有的请求都有 携带一些敏感数据)
响应格式 #服务端响应客户端 和请求格式一样
3.响应状态码
用数字来表示一堆中文意思
1XX 通知信息 几乎看不到
2XX 200 请求成功
3XX 302 304 重定向
4XX 403 拒绝访问 权限不够 404 请求资源不存在
5XX 500 服务器内部错误
在公司中还会自定义更多的状态码
一般都是以10000起步
'''
b'GET / HTTP/1.1\r\n #请求头
Host: 127.0.0.1:8080\r\n #下面都是请求首行
Connection: keep-alive\r\n
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"\r\n
sec-ch-ua-mobile: ?0\r\n
sec-ch-ua-platform: "Windows"\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\n
Sec-Fetch-Site: none\r\n
Sec-Fetch-Mode: navigate\r\n
Sec-Fetch-User: ?1\r\n
Sec-Fetch-Dest: document\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
\r\n'
GET请求没有请求体
'''