• 第四模块


    操作系统功能:

    ①封装好硬件的接口

    ②管理进程

    多道技术:两种转换

    ①当应用程序需要调用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结束符为//   不为;

  • 相关阅读:
    [NOIP2011] 玛雅游戏
    [bzoj4025] 二分图
    [10.2模拟] tree
    [10.3模拟] color
    [10.2模拟] teach
    [10.2模拟] plan
    [10.2模拟] book
    [bzoj4999] This Problem Is Too Simple!
    [9.28模拟] good
    [bzoj3884] 上帝与集合的正确用法
  • 原文地址:https://www.cnblogs.com/tyh-tesla/p/9059051.html
Copyright © 2020-2023  润新知