内容回顾python
什么是进程?mysql
就是为了形容执行中的程序的一种称呼redis
它是操做系统中资源分配的最小单位sql
进程之间是数据隔离的,占用操做系统资源相对多数据库
独立存在的安全
谈谈你对并发的理解服务器
同时有多个任务须要执行,可是资源有限网络
因此咱们会利用一些手段:多进程\多线程\协程来完成任务数据结构
来提升用户的体验,达到多个任务能在一个时间段内同时执行的效果多线程
什么是线程
轻量级进程,直接被CPU调度,不能独立存在的轻量级进程
同一进程中的多个线程之间数据共享
谈谈对GIL的了解?
全局解释器锁,是用来锁线程的,Cpython解释器提供的
致使了同一时刻只能有一个线程访问CPU
这个GIL是一个历史遗留问题
谈谈你对异步非阻塞的理解?
异步
一个任务的执行不须要等待另外一个任务的结束
start\terminate
非阻塞
没有阻塞
socket对象调用setblocking(False)
什么是协程?
协程是用户级的,对操做系统不可见
是用户为了提升一条线程对CPU的利用率才出现的概念
协程可以实如今一条线程上的多个任务互相切换
为了提升工做效率,用户能够控制协程在一个任务中遇到IO就切换另外一个任务
协程和线程比起来:
协程不存在数据不安全的问题
协程不能充分利用多核
可是线程在Cpython解释器下实际上也不能利用多核
因此相对来讲,协程实际上在python中是更好的工具
什么是IO多路复用
操做系统提供的代理,监听网络对象的IO操做
常见的IO多路复用机制
select 轮询的方式获取每一个对象的状态
poll 底层数据结构与select不一样,可以存储更多的对象,轮询的方式
epoll 不采用轮询的方式来获取每一个对象的状态,而是采用回调函数的方式
因此在wait for data阶段 一收到数据就能够当即通知应用程序
提升了效率,也减轻了操做系统的负担
你见过哪些锁?作什么用?各有什么特色
互斥锁
递归锁
GIL
死锁
今日内容
# 数据库基础 # 1.数据库在平时的开发中占有一个什么样的地位 # 2.数据库的发展史 # 3.数据库的分类 # 4.数据库中的一些基础概念 # 5.安装数据库 # 6.数据库的启动和中止 # 7.sql语句(操做数据库的语法) # 和用户 权限相关的 # 数据库的基础操做 # 表的数据操做 # 数据的基础操做
数据 Data
userinfo
alex|sb
id,alex,83,female,1373838438,IT
什么是数据库(DataBase)
不少数据存储在一个大仓库中
所谓数据库,就是全部的程序要的数据都存储在一个仓库中
多个程序就在这个仓库中建立多个文件夹
在一个数据库当中,可能存在多个程序的数据
它们分别存储在不一样的文件夹中
数据库管理系统DataBase Management System 简称DBMS
负责了 程序的数据的增删改查 以及 权限控制等等的功能
mysql oracle
sqlserver sqllite
redis mangodb
DBA 数据库管理员
数据库的安装 配置
建立用户 给你权限
数据库的优化
帮助你设计表结构
数据库服务器
给你提供服务的机器 就是服务器
给你提供数据库服务的机器 就是数据库服务器
数据管理系统
mysql oracle redis mangodb
不少条数据垒在一块儿造成一个文件
每个程序均可能会有多个文件与之对应
多个文件组成一个子文件夹,这个文件夹单独的属于某个程序
表与记录的关系
记录 不少条数据
表 一个文件
库 一个文件夹
数据库
数据库管理系统的内部还有一个数据库的概念
数据库的分类
关系型
mysql oracle sqlserver
非关系型
redis
memcache
mangodb
实际上关系型数据库是很是节省空间,减小冗余数据
而且可以清晰的表达数据库与数据库之间关系的数据库管理工具
帮助咱们可以存储复杂的数据结构
# 非关系型数据 # hbase redis mangodb # key - value # {张三:{'课程':{'课程名':''},'成绩':'asfjkhk'}} # 快 \ 数据的冗余
# root用户是拥有最高权限的用户 # 建立一个权限有限的用户给别人使用
1、DDL语句 数据库定义语言: 数据库、表、索引、视图、存储过程,例如CREATE DROP ALTE # create 建立 一个库 一个表 # drop 删除 删除一个库 删除一个表 # alter 修改
二、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT 操做数据
三、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
建立用户
受权用户
取消受权
1. 操做文件夹(库) 增:create database db1 charset utf8; 查:show databases; 改:alter database db1 charset latin1; 删除: drop database db1; 2. 操做文件(表) 先切换到文件夹下:use db1 增:create table t1(id int,name char); 查:show tables; 改:alter table t1 modify name char(3); alter table t1 change name name1 char(2); 删:drop table t1; 3. 操做文件中的内容(记录) 增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3'); 查:select * from t1; 改:update t1 set name='sb' where id=2; 删:delete from t1 where id=1; 清空表: delete from t1; #若是有自增id,新增的数据,仍然是以删除前的最后同样做为起始。 truncate table t1;数据量大,删除速度比上一条快,且直接从零开始, *auto_increment 表示:自增 *primary key 表示:约束(不能重复且不能为空);加速查找