4yue 22

1

# 1 . 进程  线程  协程  之间的相同点和不同点
#相同点:都能帮助我们实现并发操作,规避IO时间,提高执行效率
    #进程:内存隔离  操作系统级别 可以利用多核(高计算)                        计算机中资源分配的最小单位
    #线程:内存共享  操作系统级别 开销中 Cpython解释器下不能利用多核(规避IO)          计算机CPU调度的最小单位
    #协程:内存共享  用户级别     开销小 不能利用多核(协程的本质是个单线程)(规避IO)
'''
操作系统级别:全世界的人都存储在大计算机上,他都知道哪个好那个坏
用户级别:  自己去判断哪个好哪个坏  switch 是手动添加的  gevent 里为什么没有? 因为他在底层添加了(可能是if)
'''
# 为什么不能删GIL锁
    #垃圾回收机制  所以  cpython

# 2  .进程内存之间是否共享,如何实现通信?
#不共享 通过python模块\第三方工具
# 本质上:
    #  基于文件 :
        #队列 管道  manager
    # 基于网络
        #第三方工具(redis kafka  memcha)  socket

# 3在python 中是否线程安全
    #不安全
    #python 你写的python代码未来都会转换成机器码,机器码执行的过程中
    #如果有一个非原子性操作,那么就会导致线程数据不安全
    #需要手动加锁来解决问题

# 4 协程的本质是什么
    #多个任务在一个线程上能够实现切换 (与IO无关利用协程实现的一个效果)

#5 线程池开启任务  如何提交任务 获取返回值
'''
from concurrent.futures import ThreadPoolExecutor             #这个模块开启线程池
def func(arg):
    return arg*20
tp = ThreadPoolExecutor(5)
ret_l = []
for i in range(100):
    ret = tp.submit(func,i) #这个是一个对象
    ret_l.append(ret)
for r in ret_l :
    print(r.result())       #打印
'''
#
'''
from concurrent.futures import ThreadPoolExecutor             #这个模块开启线程池
def func(arg):
    return arg*20
tp = ThreadPoolExecutor(5)
ret = tp.map(func,range(100))
for r in ret :
    print(r)        # 没有返回值 直接打印
    
'''
#协程复习:
#数据是否安全     :   绝对安全
#  用户级别的  只能在代码上做 没法 swithch a+=1   swithch  没有把a+=1 分开
a = 1
def func1():
    global a
    a+= 1
def func2():
    global a
    a+=1
import dis

dis.dis(func1)
dis.dis(func2)

#和线程的关系
    #本质上是一条线程
# gevent 模块
    #g1 = spawn(协程函数,参数)
    #g1.join    #主程序里不遇到阻塞,不切到子程序里(一个协程)  start没有用不执行
        # gevent.joinall(iterable([g1]))
    #monkey.patch_all()

#  greenlet  switch
# 并没有减少IO操作

'''
def fun1():
    start
    sleep       # 其实是自己实现了一个sleep,而没有用time的
    end
def fun2():
    begin
    sleep1
    finish
'''
# socket 底层就是用thread实现的

#  举一反三  做了一个  想象把他换成别的情境
# 问题
    # 协程用的好 比线程的效率要好的多
    # 协程的底层 IO切换  是 time
    # 先把懂了的整理出来  再弄不懂得

2

#day 1 数据库的介绍安装 命令
#day 2 数据库的表操作
#day 3 数据库的数据操作,查询(单表\多表)  一天  ftp这几天  要做完
#day 4 查询和其它内容的拾遗
# day 5 索引原理

# 数据库在开发的过程中占据着什么样的位置?
#在整个项目中又有什么意义?

# 我们把数据存储在文件里 (把数据永远存下来)
        #写  write
        #读  read
        # 改  读-》写->删->改-》
# 数据库:(意义)
# 能够更加简单的   使用 存储在文件中的数据
    # 查 一行数据  从userinfo  条件 id = 10 或者 id = 20
            #简单  比那一行 要简单
        #不止读写改 还优化了效率(?为什么 没听清 not listened)
# 能够更好地解决并发问题
        #买票问题   你是为你的用户服务的  但是对于 数据库 你也是服务端
                    #python 中到处都是相对论
        #自带的并发  不用自己写server
# 数据的统一问题

# 1,alex,alex3714  #一行内容就是一条数据
# 2,python,19800,6,months  # 一条不同的数据



# 数据库  DataBase 简称DB
# 存储数据的地方, 我们把所有的数据都存储在一个固定的地方,那么这个地方就是数据库

#数据库管理系统 DBMS
        #软件 需要我们安装一下
            #能够帮助我们更好的管理
            #和使用存储在硬盘上的数据
        #操作系统
        #硬盘上存储着数据

# 数据库 服务器
    #什么是服务器 : 本质上就是一条计算机  (对外提供服务)
                    #当一台计算机上安装了某个人软件能够对外提供服务的时候,那么这台机器就成为服务器
    #数据库服务器
            #当这台机器上安装的服务是一个数据库的server ,就得到了一个。。。。

    #数据库管理软件:管理-数据库
    # 数据库管理员DBA
                # (删库的人  有权限。。。)
        #专门帮我们管理数据库 并且优化数据库的工作人员
# 数据库 技术的发展
    #纸 上表格
    #excel
    #软件  批处理   软件:(把你频繁的要做的变成机器去做了)

# mysql 就是一个DBMS(能够管理硬盘上数据的一个软件)
        # 通过固定的简单的指令 帮助我们完成从文件中查找对应数据的软件
                #mysql不好用,自己写,程序员的责任  好用就算了 不想用别的找不到缺点
                #软件那个没有缺点,就像人一样,一秒变笨,改错则少
                        #无知才会求知 有错才会改错
                        #笨才会求聪明
        #oracle 也是一个DBMS

# 数据库 管理系统的作用
    #关系型数据库         (mysql\oracle\sql server(微软里的底层服务) \sqllite)
            #(关系比较紧)                        # 这几个用法都差不多 都是传上去 拉下来 不同的相同的
                # (每个每个都对应 肯定慢)
        #id  name age phone_num
        #是有关系的 彼此之间
                #知道了一个人的名字能不能获取到他的年龄,
                #知道了一个人的电话号码,能不能获取到姓名

    #非关系型数据库        (redis\ mongodb)
                                #既可以完成通信也可以。。。   mon智能机器人(选修第四个)轻量级
                #(效率高  1对多 )
            #key : value  key---> value   只知道value找不到key
                        #只有一个找所有

# mysql  开源的软件   -小公司 各种互联网公司(二次开发之后)
    #开源  可能有的漏洞  被人操作了
    #很多地方不如oracle 严谨
    #金融公司 不会使用mysql存储数据的 。。。数据库被泄露了  只就是一个数字了。。。
#oracle  付费的
    #金融行业(绝对安全)
    #国企事业单位
#sql server  在学校里教学使用的

传的话 可能会出错,不要相信任何人的软件 从官网上安装最安全

以后进公司

3员工系统

        #写一个员工管理软件

#1,alex,38,1233333333,过气网红讲师
#2,wusir,74,1388888888,python讲师
# 查name,id  从   userinfo 条件 age = 83
# 查number,  从   userinfo 条件 name = 'wusir'

# 自己去处理文件  很复杂?

 

下午

c://>mysqld install      #mysqld.exe install   #要安装mysql的server端

c://>net start mysql   #开启mysql  #相同的   net stop mysql 结束mysql  #重启

        #启动的是server端。。。(第一次默认之后一直开启的状态(减少重复))

c://> mysql -uroot -p   #    mysql -uroot  #没有密码的情况下用root用户登录

        #启动的是client端。。。

password:   # 输入回车    #默认没密码

#测试一下配置文件生效了没有

mysql>select user();查看当前用户

mysql>show variables like '%charac%'    #  输出 是utf-8什么的

exit    #退出

;        # 结束符

 

 

环境变量  也是变量。。。

就像是全局变量

只要mysql不是内部或外部命令,也不是可运行的程序

说明没有设置  不是全局的

 

 数据库的安装和卸载

# 问题
# 1. D:\mysql\mysql-5.6.43-winx64安装目录中不能有空格和中文
# 2. my.ini文件是不是utf-8
# 3. 配置文件里的每一个路径的最后 是不是有看不见的空格
# 4. 文件的名 my.ini
# 5. 安装包


# 卸载
# D:\mysql\mysql-5.6.43-winx64\mysqld remove  移出服务
# 把mysql整个文件都删掉\环境变量也删掉
# 重启电脑


# 最后的两招
# 1.换一个目录装
# 2.vc运行库


# 一堆命令
# 什么是环境变量?
# 当我们执行一个系统中的可执行文件的时候
# 例如 mysql.exe或者 mysqld.exe或者python.exe
# 如果我们不配环境变量,
# 那么就需要进入mysql.exe所在的目录去执行
# 或者带着这个文件的绝对路径去执行
# 我们经常要执行这些文件
# 所以把文件的路径添加到环境变量中
# 就可直接输入文件名来执行程序了
# mysqld install
# mysqld.exe install  要安装mysql的server端
# net start mysql 启动server端
# mysql -uroot -p 启动client端

# 重启server
# net stop mysql
# net start mysql


# client端的启动
# c://>mysql -uroot 表示没有密码的情况下用root用户登录
# c://>mysql -uroot -p 表示使用密码登录
# Enter password:输入密码,如果没有密码直接回车


# mysql > select user(); 查看当前用户
# set password = password('123');给当前用户设置密码

# 查看当前的所有数据库
# mysql > show databases;

# root用户在mysql当中相当于管理员用户
# 其他的程序员想要使用数据库来存储项目数据,不能给他权限最高的管理员用户

# 可以创建用户 并且给用户授权
# create user 'eva@192.168.16.%';
# create user 'eva@192.168.16.%' identified by '123';

# 既可以给一个已经存在的用户授权,也可以给一个不存在的用户创建并授权
# grant 权利 on 数据库名.表名 to '用户名@ip地址'
# grant 权利 on 数据库名.表名 to '用户名@ip地址' identified by '123';
    # 权利 : SELECT INSERT UPDATE DELETE ALL

# 创建一个数据库 s20_day1
# create database s20_day1;

# 创建一个stu用户 密码是123 ip地址是192.168.16网段的所有机器
# 能对这个数据s20_day1做增删改查的所有操作
# grant all on s20_day1.* to 'stu@192.168.16.%' identified by '123';

# 192.168.16.13
# mysql -ustu -h192.168.16.13 -p
# 123

# grant all on s20_day1.* to 'stu'@'192.168.16.%' identified by '123';
# 用户名 密码 ip地址
# mysql -u用户名 -hip地址 -p
# 密码

# ddl语言
# 文件夹(数据库)的增删改查
    # 创建数据库
        # create database 数据库名;
    # 使用数据库
        # use 库名;
    # 查看数据库下有哪些表
        # show tables;

# 表的增删改查
    # 创建表
        # create table 表名(字段名 数据类型(长度),字段名2 数据类型(长度),..)
    # 查看表结构
        # desc 表名;
    # 修改表
        # alter table t1 change name username char(12);
    # 删除表
        # drop table t1;

# dml语言
# 数据的增删改查
    # 增加
    # insert into 表名 values (值1,值2,...); 插入一条数据
    # insert into 表名 values (值1,值2,...),(值1,值2,...),(值1,值2,...); 插入多条数据

    # 查看数据
    # select * from 表名;

    # 修改数据
    # update 表 set 字段名=值 where 条件;

    # 删除数据
    # delete from 表 where 条件;

 

posted @ 2019-04-22 11:31  learnacode  阅读(194)  评论(0编辑  收藏  举报