月光大保健

导航

第四模块

操作系统功能:

①封装好硬件的接口

②管理进程

多道技术:两种转换

①当应用程序需要调用I/O时的空余时间(提高效率,并且实现多道技术)

②当应用程序运行时间过长,CPU会主动切换到别的应用程序(降低效率,但实现了多道)

 

join

让主进程卡在这个位置,等待子进程运行完后再继续往下走:p.join()

 

terminate

杀死进程

 

is_alive

判断进程是活的还是死的

 

p = Process(target=talk,args=(conn,))
args 里的参数要为元组形式传参

守护进程
p.daemon
必须在进程开启之前设置该进程为守护进程,在守护进程里面不可以再设置子进程

互斥锁与join的区别
互斥锁与join虽然都是把并行改为串行,都可以保证数据的安全性,但是join是把整段代码改成串行,但互斥锁只是把一小段改成串行,这就是两者之间的区别

进程与线程
进程相当于一个部门,线程是部门里面的工作人员,只有线程才是工作的,进程里面会有多线程
1、开进程的开销远大于开线程
2、同一进程内的多个线程共享该进程的地址空间
3、pid,同一进程内的线程pid是一样的,不同进程之间的pid是不同的

currentThread
currentThread().getName()查看当前的线程(进程)名字
currentThread().getpid()获取pid

Thread实例对象的方法
  # isAlive(): 返回线程是否活动的。
  # getName(): 返回线程名。
  # setName(): 设置线程名。

threading模块提供的一些方法:
  # threading.currentThread(): 返回当前的线程变量。
  # threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
  # threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁

GIL实际上也是一个互斥锁, 在C python解释器下用多进程,可以代替GIL产生的不足

IO运行用多线程处理,计算运行用多进程处理

递归锁可以连续的acquire多次,每acquire一次

from threading import Event

event.isSet():返回event的状态值;

event.wait():如果 event.isSet()==False将阻塞线程;

event.set(): 设置event的状态值为True,所有阻塞池的线程激活进入就绪状态, 等待操作系统调度;

event.clear():恢复event的状态值为False。


MySQL
停止MySQL服务:net stop MySQL

MySQL语句
#1.操作文件夹
增:
#创建一个database create database db1 charset utf8;
查:
show databases;
show create database db1
改: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;
 
 int(宽度)  不是存储宽度  而是显示宽度,即查看时的显示宽度select * from t1
show table 查看表
 官网解释如下

char是定长 #取数据时会把后面的空格自动去掉 如果char(5),放进去若不够5个,但是存进去时也会变5个字符,但是取出来时会自动帮你删除后面的空格,若存2,显示5个,但取出来时会是2个
varchar是变长  #取数据时保留后面的空格 头需要1byte 表示数据大小,但也可以2bytes 表示数据大小 65535
char_length(name) #可以查看name 字符 有多少个字符

优缺点:
char :存放粗暴,存取性容易,但浪费空间 一般选用char使用
varchar:存取都比较麻烦:先存取头,再拿数据,但是可以节省空间
略施小计,让char现出原形
mysql> SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH'

desc 表名:查看表的详细信息

order by asc 默认就是升序
    desc 降序

联合唯一unique


修改MySQL密码:
首先stop MySQL:net stop MySQL
然后通过mysqld 启动 服务端 并且需要跳过默认的授权表:
mysqld --skip-grant-tables (跳过
授权表启动)
这时再打开另一个cmd,输入mysql 启动
设置相对应的账号和密码:
update mysql.user set password=password("123") where user="root" and host="localhost" 其中

执行后报错  ERROR 1054(42S22) Unknown column 'password' in ‘field list’

错误的原因是 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string

所以请使用一下命令:

update mysql.user set authentication_string=password("123") where user="root" and host="localhost";
password=password("123") 是利用mysql里的密码功能,这样存进去的就不是明文了,实际上与password="123"同理

设置完后需要管理员启动cmd 杀死 mysql进程后重新再启动
查看进程:tasklist |findstr mysql
杀死进程:taskkill /F /PID 8752(进程名)



#本地账号
create user 'egon'@'localhost' identified by '123';#mysql -uegon1 -p123

#远程账号
create user 'egon2'@'192.168.31.10' identified by '123';#mysql -uegon2 -p123 -h 服务端ip
create user 'egon2'@'192.168.31.%' identified by '123';#mysql -uegon2 -p123 -h 服务端ip
create user 'egon2'@'%' identified by '123';#mysql -uegon2 -p123 -h 服务端ip

2.授权
user #用户级别
db #数据库级别
tables_priv #表级别
columns_priv #数据级别

 

视图:

创建视图:create view table1 as select * from student;   #创建一个表,把几个复杂的表连接起来,创建一个虚拟表

修改:alter view table1 as select .......

删除:drop view table1

 

delimiter //   # 设置mysql结束符为//   不为;

posted on 2018-05-19 01:34  月光大保健  阅读(202)  评论(0编辑  收藏  举报