內容回顧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 表示:約束(不能重複且不能爲空);加速查找