python高级基础笔记

一、Linux

1 Linux目录

/:根目录
/bin:可执行二进制文件
/etc:系统配置文件
/home:用户家目录
/home/Python:当前用户所在目录
~:当前用户主目录化简写法
/root:系统管理员目录
/opt:额外安装的软件所存放的目录

2 Linux命令

  • 切换目录

命令 功能
cd 目录 切换
cd ~ 或 cd 切换到主目录
cd … 上一级
cd . 当前
cd - 上一次目录
  • 命令提示符

linux: python@ubuntu:/opt$ 
	python:用户名
	ubuntu:主机名
	/opt:路径
	$:用户类型  $ 普通   # 超级
  • 创建、删除文件

命令 功能
touch 文件路径+文件名 创建文件
mkdir 目录名 创建目录
mkdir -p 级联创建目录
rm 文件名 删除指定文件
rm -i 交互式(有提示)
rm -r 可删除非空目录
rm -f 强制删除,忽略不存在文件
rm -d 删除空目录
rmdir 空目录名 删除空目录
  • 复制、移动文件

命令 功能
cp 源文件 目标路径/目标文件名 拷贝
cp -r 源目录 目标目录 拷贝目录
cp -i 提示,是否覆盖
cp -v 显示拷贝后的路径
cp -a 保留文件原有权限
mv 源文件 目标路径/目标文件名 移动
mv 源目录 目标目录 移动目录
mv 源文件名 目标文件名 重命名
mv -i 提示,是否覆盖
mv -v 显示移动后的路径
  • 查看目录内容

命令 功能
ls 查看目录内容
ls -l 列表方式显示
ls -h 显示单位大小
ls -a 显示隐藏
  • 重定向

命令 功能
> 覆盖模式重定向
>> 追加模式重定向
  • 查看文件内容

命令 功能
cat 查看文件
more 查看文件(分屏):回车翻行、空格翻页、q退出
  • 管道

命令 功能
| 前一命令的输出做为后一命令的输入
  • 链接

命令 功能
ln -s 源文件路径(绝对路径) 链接文件 软连接(快捷方式)
ln 源文件 硬链接文件 硬链接
  • 文本搜索

命令 功能
grep [选项] “要查找的内容” 查找的文件 文本搜索
grep -i 忽略大小写
grep -n 显示行号
grep -v 取反
  • 查找文件

命令 功能
find 查找的目录 -name 要查找的文件 按文件名查找
find * 0个或多个任意字符
find ? 1个任意字符
find -size 按文件大小查找
find -perm 按访问文件的权限查找
  • 压缩和解压

命令 功能
tar -c 创建打包文件
tar -v 显示打包过程中详细信息
tar -f 指定文件名,必须放到所有选项后面
tar -z 压缩或解压 .gz 格式
tar -j 压缩或解压 .bz2 格式
tar -x 解压缩
tar -C 解压缩到指定目录
zip 压缩包名 要压缩的文件 .zip压缩
unzip 压缩包名 -d 要解压到的目录 .zip解压
  • 文件权限设置

命令 功能
chmod [角色] 操作符 [权限] 修改权限
角色 u g o a user group other all
操作符 + - = 增加 撤销 设置
权限 r w x - 可读 可写 可执行 无权
chmod 数字法 r=4 w=2 x=1 -=0
  • vim

  • 命令模式
  • 移动光标

    • 上下左右
    • hjkl
    • G和gg 文档最后一行 文档首行
  • 删除

    • dd 删除所在行
    • n dd 删除指定行数
  • 撤销

    • u 撤销
    • ctrl+r 恢复
  • 末行模式
    • w 保存
    • q 退出
    • wq 保存且退出
    • x 保存且退出
    • q! 不保存退出
    • set number/nonumber 显示行号/不显示
    • 数字 定位到某行
  • 命令终端查看进程

命令 功能
ps -aux | grep “xxx” 查看正在运行的进程
kill 进程id 杀死指定的进程
  • sudo

命令 功能
sudo -s 切换到root用户
sudo 命令 管理员权限执行命令
  • 用户相关操作

命令 功能
sudo user add -m -g 用户名 创建用户
-m 创建用户的主目录
-g 指定用户所属用户组,不指定创建一个同名用户组
su 用户名 切换用户
sudo userdel -r 用户名 删除用户
-r 删除用户的家目录
  • 用户组相关操作

命令 功能
sudo groupadd 用户名组
sudo ueradd -m -g 用户名组 用户名 添加用户并指定组
sudo groupdel 用户组名 删除组

3 远程登录

  • SSH

ssh 服务端安装
sudo apt-get install openssh-server

测试运行
ps -aux | grep "ssh"

启动服务
sudo service ssh star

停止服务
sudo service ssh stop

4 软件安装与卸载

命令 功能
sudo dpkg -i xxx.deb 离线安装
-l 查看当前系统已安装的程序
sudo dpkg -r 包名 卸载包
sudo apt-get install 包名 在线安装
sudo apt-get remove 包名 卸载
sudo apt-get update 更新源

二、多任务编程

1 并发与并行

  • 并发

    在一段时间内交替去执行多个任务(任务数大于 CPU 核数)

  • 并行

    在一个时间点,同时有多个任务执行(任务数小于等于 CPU 核数)

2 多进程

  • 使用方式

# 1.导入包
import multiprocessing
# 2.创建进程
p = multiprocessing.Process(参数)
"""
参数内容:
group:指定进程组,一般不设置
target:目标,指向
name:指定进程名字,一般不设置
args:以元组方式给target指定的任务传参
kwarges:字典方式
"""
# 3.调用方法
p.方法()
"""
方法内容:
start():启动进程
join():等待进程执行完毕,再执行后续代码
terminate():终止进程
"""
  • 获取进程编号

import os
os.getpid()  # 获取当前进程id
os.getppid()  # 获取父进程id
  • 注意点:进程之间不共享全局变量
  • 设置守护进程:daenon=True
  • 进程间的调度顺序是无序的

3 多线程

  • 使用方式

# 1.导入线程模块
import threading
# 2.创建线程
t = threading.Thread(参数)
"""
参数内容:
group:指定进程组,一般不设置
target:目标,指向
name:指定进程名字,一般不设置
args:以元组方式给target指定的任务传参
kwarges:字典方式
"""
# 3.调用方法
t.方法()
"""
常用方法:
start():启动线程
join():等待线程执行完毕,再执行后续代码
"""
  • 自定义线程类

import threading
import time
# 1.创建类,继承
class MethodThread(threading.Thread):
    def __init__(self, a):
        # 2.调用父类初始化
        super().__init__()
        self.a = a
	# 3.从写run
    def run(self):
        print("当前线程名称%s" % self.name)
        print(self.a)
        for i in range(5):
            time.sleep(1)
            print("method 执行中...", i)
if __name__ == '__main__':
    # 4.创建自定义线程对象
    st = MethodThread(1)
    # 5.调用star()
    st.start()

  • 注意点

    • 无序
    • 等子线程结束,主线程才结束
    • 共享全局变量
    • 共享全局变量出现的问题:资源竞争导致数据不正确
  • 互斥锁

import threading
g_nums = 0
# 1.取锁
mutex_lock = threading.Lock()
def task1(loop):
    global g_nums
    for i in range(loop):
        # 上锁
        mutex_lock.acquire()
        g_nums += 1
        # 解锁
        mutex_lock.release()
def task2(loop):
    global g_nums
    for i in range(loop):
        # 上锁
        mutex_lock.acquire()
        g_nums += 1
        # 解锁
        mutex_lock.release()
if __name__ == '__main__':
    t1 = threading.Thread(target=task1, args=(1000000,))
    t2 = threading.Thread(target=task2, args=(1000000,))

    t1.start()
    t2.start()

    t1.join()
    t2.join()
    print(g_nums)

三、HTML

1 标签

标签 功能
标题

段落
分区
范围标签(不太懂)

换行

分割线
图片 src=路径 alt=替换文本 title=提示文本
超链接 href=路径/网址 target=指定什么窗口显示 _self _blank
无序列表
  • :某一项
    有序列表 同上
    表格
    一行
    一个单元格
    表头,比td粗点

    2 表单 form

    一般用在提交用户输入的数据到web服务端,比如用户注册, 用户登录, 搜索商品信息等

    • 内部属性

    属性 功能
    action 表单数据提交地址
    method 表单提交方式,get/post等
    • 标签

    标签 功能
    label 文字标注标签
    input 用户输入
    textarea 多行文本
    select 下拉列表 option标签定义内容
    • input的type属性

    属性 功能
    text 单行文本
    password 密码输入框
    radio 单选框
    checkbox 复选框
    file 选择上传文件的输入框
    submit 提交按钮
    reset 重置按钮
    button 普通按钮
    • 其他属性

    属性 功能
    placeholder 设置提示信息
    checked 在单选或复选中设置默认选项
    selected 在select下拉列表的option中设置默认选项
    name 设置表单元素的名称,是提交数据时的参数名
    value 设置表单元素的值,提交数据时所对应的值

    3 css

    • 引入方式

    <head>
        
        <link rel="stylesheet" href="mystyle.css" type="text/css">
        <style>
            /* 内嵌式 */
            h1{
                /* 各种属性 */
            }
        style>
    head>
    <body>
        <div style="各种属性">
            
        div>
    body>
    
    • 选择器

    <style>
    /* 标签选择器 */
        div{
           background:green;
        }
    style>
    
    <style>
    /* 类选择器 */
        .blue{color:blue}
        .big{font-size:20px}
        .box{width:100px;height:100px;background:gold}
    style>
    
    
    <style>
    /* id选择器 */
        #aa{
            color:green;
        }
    style>
    
    
    <style>
    /* 并集选择器 */
        #aa,span,.title{
            color:green;
        }
    style>
    
    <style>
    /* 层级选择器 */
        .con p{
            color:red;
        }
    style>
    
    <style>
    /* 伪类选择器  常用于超链接*/
        /* 点击前 */
        a:link{
            color:red;
        }
        /* 点击后 */
        a:visited{
            color:green;
        }
        /* 悬停 */
        a:hover{
            color:blue;
        }
        /* 点击时 */
        a:active{
            color:pink;
        }
    style>
    
    • 布局属性

    属性 功能
    width
    height
    background 背景
    border 边框 solid 颜色
    padding 内边距
    magin 外边距
    • 文本属性

    属性 功能
    color 颜色
    font-size 字号
    font-family 字体
    font-weight 是否加粗 bold|normal
    text-decoration 文字修饰线 italic|normal
    text-align 水平对齐方式 underline|line-through|none
    text-indent 首行缩进 em是一个字的大小

    4 js

    • 引入方式

    <head>
    
    <script>
    // 嵌入式
        alert("hello")
    script>
    
    <script src="my.js">
    // 外链式
    script>
    
    <div onclick="alert('行内式')">
        
    div>
    head>
    
    • js入口

    <script>
    // 网页加载完毕再执行
        window.onload = function(){
            //js代码
        }
    script>
    
    • 数据类型

      • 数字(number)
      • 字符串(string)
      • 布尔(boolean)
      • 未定义(undefinded)
      • 对象(object)
      • 空类(null)
    • 条件判断

    • 算术运算符

    + - * / % ++ --

    运算符 描述 例子(y=5) 结果
    / x=y/2 x=2.5
    % 求余数 x=y%2 x=1
    ++ 自增1 x++ ,好比 x+=1
    自减1 x-- ,好比x-=1
    • 比较运算符

      == ,===,!=,>,<,>=,<=

      提示: ==比较的是值, 而===值和类型都比较

      运算符 描述 例子(x=5)
      == 等于 x==8 为 false
      === 全等(值和类型) x=5 为 true;x=“5” 为 false
      != 不等于 x!=8 为 true
    • 逻辑运算符(关系运算符)

      && ,|| , !

      运算符 描述 例子(x=6 ,y=3)
      && and与 (x < 10 && y > 1) 为 true
      || or或 (x5 || y5) 为 false
      ! not非 !(x==y) 为 true
    • if条件判断

      • 语法1:

        if(条件) {

        ​ 条件成立执行的命令

        }

      • 语法2:

        if( 条件) {

        }

        else{

        }

      • 语法3:

        if(条件){

        ​ }

        else if (条件){

        } …

        else{

        }

    • 数组

    • 数组定义

      • 方式1

        var aList=new Array(1,2,3)

      • 方式2

        var aList=[1,2,3]

    • 常用方法

    方式 功能
    array.length 取数组长度
    arrqy[index] 使用下标
    push() 从尾部添加数据
    pop() 从尾部删除数据
    splice() 在数组指定位置添加或删除数据 参数:start:必须 num:可选,删除数组元素的个数 elementN:可选,在start下标位置要插入的新元素
    • 循环

      • while(条件){语句}
      • for(初始值;条件;增量){语句}
    • 字符串拼接与转换

    方式 功能
    + 拼接
    parselnt(string) 转整数
    parseFloat(string) 转浮点
    • 事件与匿名函数

    先要查找元素

    var oBtn = document.getElementById(“id值”)

    调用方式:

    oBtn.方式

    方式 功能
    onclick 单击事件
    onmouseover 鼠标滑过事件
    onmouseout 鼠标离开事件
    function() 匿名函数
    • 定时器

    方式 功能
    setTimeout(参数) 单次定时器 参数:timerHandler:要处理的任务 timeout:延迟时间,毫秒单位 atguments:向任务函数传递参数
    clearTimeout(timeoutld) 清除单次定时器
    setInterval(参数) 多次定时器 参数同单次
    clearInterval(timeoutld) 清除多次定时器

    5 jq

    • 引入

    • 入口函数

    &(function)(){
        // 获取要操作的对象
        var $div = $("#id") 
        // jq内容
    }
    
    • 操作方法

    方法 功能
    html() 不写参数表示取值,写参数表示修改内容
    append() 追加内容
    css() 访问或修改css属性
    prop() 访问或修改html属性
    val() 访问或修改value属性
    • 选择器

    代码 功能
    $li 标签选择器
    $(".box") 类选择器
    $("#li_") id选择器
    $("#li_,p") 组选择器
    $(".box p") 层级选择器
    $("li[id=li_]" 属性选择器
    $("div").has("p") 选择器过滤,指定标签
    $("li").eq(1) 选择器过滤,指定索引
    • 选择器转移

    代码 功能
    prev() 上面同级元素
    preAll() 上面同级所有元素
    next() 下面同级元素
    nextAll() 下面同级所有元素
    parent() 父级元素
    children() 子元素
    siblings() 其他同级元素
    find() 同级同类元素
    • 事件

    代码 功能
    click() 鼠标单击
    blur() 元素失去焦点
    focus() 元素获得焦点
    mouseover() 鼠标进入
    mouseout() 鼠标离开
    ready()DOM(document object model) 加载完成
    • 防止冒泡:return false
    • 代理:deldegate(参数)
      • childSelector:子元素的选择器
      • eventType:事件类型
      • function:当事件触发执行的函数

    6 ajax

    • 参数

    参数 功能
    url 请求地址
    type 请求方式,默认GET,常用的还有POST
    dataType 设置返回数据格式,常用json
    data 设置发送给服务器的数据,没有则不设置
    succes 设置请求成功后回调函数
    error 设置请求失败后回调函数
    async 设置是否异步,默认true

    四、socket

    1 方法

    方法 功能
    socket(参数) 创建套接字对象 参数:AddressFamily:地址族,一般用AF_INET(ipv4) Type:套接字类型
    connect((host,port)) 建立连接
    send(data) 发送数据,二进制
    recv(buffersize) 接收数据,参数为每次接收数据的长度
    listen(backlog) 开启监听,参数表示最大等待建立连接的个数
    accept() 表示等待接收客户端的连接请求

    2 请求行

    request_line = recv_data.split("\r\n")[0]
    request_path = request_line.split(" ")[1]
    

    3 响应报文

    """
    常用状态码:
    200 OK
    3xx 表示重定向
    404 NOT FOUND 客户端请求错误
    5xx 表示服务器内部错误
    """
    response_line = "HTTP/1.1 状态码\r\n"
    """
    响应头常用参数:
    Content-Type:text\html;charset=UTF-8
    """
    response_headers = "key:value\r\n"
    response_space = '\r\n'
    response_body = html文件
    

    五、mysql

    1 安装及配置

    sudo apt-get install mysql
    sudo apt-get install mysql-client
    
    启动:sudo service mysql start
    停止:sudo service mysql stop
    重启:sudo service mysql restart
    查看状态:sudo service mysql status
    
    配置文件:
    路径:/etc/mysql/mysql.conf.d/mysqld.cnf
    port:端口号,默认3306
    bind-address:ip,默认127.0.0.1
    datadir:数据库保存路径,默认/var/lib/mysql
    log_error:错误日志,默认/var/log/mysql/error.log
    

    2 登录登出

    登录:
    mysql -uroot -p
    登出:
    exit/quit/ctrl + d
    

    3 库操作

    命令 功能
    show databases; 查看所有数据库
    create database 库名 charset=utf8; 创建数据库
    use 库名; 使用数据库
    select database(); 查看当前数据库
    show create database 库名; 查看创建数据库sql语句
    drop database 库名; 删除数据库

    4 表结构操作

    命令 功能
    show tables; 查看当前数据库所有表
    create table 表名(参数); 创建表
    desc 库名; 查看表的字段信息
    show create table students; 查看创建表的语句
    alter table 表名 add 列名 类型;
    alter table 表名 modify l列名 参数’; 修改表,不重命名
    alter table 表名 change 原名 新名 参数’; 修改表,重命名
    alter table 表名 drop 列名; 删除字段
    drop table 表名; 删除表
    • table参数
    参数 功能
    int unsigned 无符号整形
    tinyint -128~123的整型
    decimal 浮点数
    varchar 字符串
    auto_increment 自动增长跟主键在一起
    not null 不能为空
    primary key 主键
    default 默认值
    unique 不能重复

    5 表内容操作

    命令 功能
    insert into 表名(字段1,字段2) values(值1,值2),(值1,值2) 增加内容,可用0 null default
    update 表名 set 列1=值1,列2=值2…where 条件 修改内容
    select 列 from 表名 查询
    select 列 from 表名 order by 列名 asc(desc) 按某列排序
    select 列 from 表名 limit a,b 分页查询
    select count(*) from 表名 总数
    select max(列名) from 表名 最大值
    select min(列名) from 表名 最小值
    select sum(列名) from 表名 列求和
    select avg(列名) from 表名 列求平均(不包含null)
    select round(数据,位数) from 表名 保留小数位
    select sum(列名)/count(*) 列求平均(所有)
    select 列 from 表名 group by 列名 分组查询
    select group_concat(列1) from 表名 group by 列2 查询同列2中的列1
    select 列 form 表名 group by 列名 having 限制条件 条件分组查询
    select 列 from 表名 group by 列名 with rollup 汇总
    select 列 form 表名 inner join 表名 on 条件 内连接查询
    delete from 表名 where 条件 物理删除
    alter table 表名 add 字段 类型 default 默认值 逻辑删除
    alter table 从表 add foreign key (外键字段)references 主表(主键字段) 添加外键约束
    alter table 表名 drop foreign key 外键名 删除外键约束
    as 起别名
    distinct 去重

    6 运算符

    命令 功能
    < 小于
    > 大于
    >= <= 大于等于 小于等于
    != <> 不等于
    and
    between…and… 之间
    or
    not 不在
    like 模糊
    in(a,b) a-b之间
    is null 是空值
    is not null 不是空值

    7 pymysql

    • 创建连接

    pymysql.connect(参数)

    参数 功能
    host ip地址
    port 端口号
    database 数据库名
    user 用户名
    password 密码
    charset 通讯编码方式
    • 创建游标

    cursor = conn.cursor()

    • 执行sql语句

    sql = sql语句

    count = cursor.execute(sql)

    • 获取结果

    cursor.fetchall()

    • 注入防止

    sql = “sql语句%s”

    cursor.excute(sql,[参数])

    • 事务

    begin;

    内容

    commit;/rollback;

    8 索引

    命令 功能
    show index from 表名
    alter table 表名 add index 索引名 (列名) 创建索引
    alter table 表名 drop index 索引名 删除索引
    alter table 表情 add index 索引名(列名1,列名2) 创建联合索引

    六、装饰器

    def decorator(name):
    	def _decorator(func):
            def wrapper(*args, **kwargs):
                return func(*args, **kwargs)
            return wrapper
        return _decorator
    

    七、 longging

    1 日志等级

    默认是WARNING等级

    等级 说明
    DEBUG 程序调试bug时使用
    INFO 程序正常运行时使用
    WARNING 程序未按预期运行时使用
    ERROR 程序出错误时使用
    CRITICAL 特别严重错误

    2 设置

    logging.basicConfig(
    	level=日志等级,
        format=输出格式,
        filenmae=文件名,
        filemode=模式,  # a表示追加,w表示覆盖
    )
    
    # 使用方式
    logging.debug("调试")
    logging.info("信息")
    logging.warning("警告")
    logging.error("错误")
    logging.critical("严重错误")
    
    输出格式 功能
    %(levelname)s 打印日志级别名称
    %(filename)s 打印当前执行程序名
    %(lineno)d 打印日志当前行号
    %(asctime)s 打印日志的时间
    %(messsage)s 打印日志信息

    八、property

    @property
    def age(self):
        return self.__age
    @age.setter
    def age(self, num):
        if 条件:
            self.__age = num
    # 通过装饰后就像调用实例属性一样调用即可
    

    九、上下文管理

    class Myclass(object):
        def __enter__(self):
            # with Myclass()时执行
            """
            代码
            """
            return "as后面的对象"
        def __exit__(self, *args):
            """
            代码
            """
            return True # 遇到异常不抛出,继续运行
    

    十、生成器

    • 方式1
    list1 = (i for i in range(10))
    # next方法逐个取值  也可遍历
    print(next(list1))
    
    • 方式2
    def fn(num):
        a = 0
        while a < num:
            yield a
            a += 1
    fn1 = fn(3)
    # 取值方式一样
    

    十一、正则表达式

    1 调用方式

    re.match(正则, 数据).group()
    # match匹配成功返回结果对象,失返回None则group方式会报错
    

    2 匹配单个字符

    语法 功能
    . 除\n以为的任意字符
    [] 集合内任意一个字符 例:[abc]
    [-] 范围 例:[a-z]
    [^] 取反 例:[^a-z]
    \d 数字
    \D 非数字
    \s 空白字符,包括换行
    \S 非空白字符
    \w ASCII下不匹配中文,utf8下匹配除了特殊字符
    \W 与上相反

    3 匹配多个字符

    语法 功能
    {m} m次
    {n,m} 至少n次 至多m次
    {n,} 至少n次
    + 至少1次
    * 至少0次
    ? 0或1次

    4 匹配位置

    语法 功能
    ^ 匹配开始位置
    $ 匹配结束位置

    5 分组

    • 匿名
    re.match("(组1,组2,组3)").group(编号)
    # 取值可用编号取
    
    • 有名
    有名分组:(?P<分组名>正则)
    获取分组结果:.group(分组编号) 等价 .group(分组名)
    分组引用字符串:(?P=分组名字)
    

    十二、redis

    1 安装

    # 不好用了
    下载:
    	wget http://download.redis.io/releases/redis-4.0.9.tar.gz
    解压:
    	tar -vxzf redis-4.0.9.tar.gz
    移动:
    	sudo mv ./redis-4.0.9 /usr/local/redis/
    cd:
    	cd /usr/local/redis/
    编译:
    	sudo make
    测试(线上完成,可以不做):
    	sudo make test
    安装:
    	sudo make install
    
    # 解决方案:
    sudo apt-get install redis-server
    

    2 配置

    sudo vi /etc/redis/redis.conf
    核心配置:
    	bind ip
    	port 6379
    	daemonize yes # 守护进程
    	dbfilename dump.rdb # 数据文件名
    	dir /var/lib/redis # 数据文件存储路径
    	logfile "/var/log/redis/redis-server.log" # 日志文件
    	database 16 # 数据库个数
    	slaveof # 主从复制
    

    3 服务端命令

    命令 功能
    ps aux | grep redis 查看redis进程
    ps ef | grep redis 查看redis进程
    sudo kill -2 pid 杀死进程
    sudo redis-server 路径/redis.conf 启动指定redis配置文件
    /etc/init.d/redis-server stop(start、restart) 服务停止,启动,重启

    4 客户端命令

    命令 功能
    redis-cli 连接
    redis-cli -p 端口号 选择端口连接
    select 数字 选择数据库

    5 操作string

    命令 功能
    set key value 设置键值
    setex key seconds value 设置键值以及过期时间
    mset key1 value1 key2 value2 设置多个键值
    append key value 追加值
    get key 获取值
    mget key1 key2 获取多个值

    6 键命令

    支持正则

    命令 功能
    keys 正则 查找键
    exists key 判断键是否存在 0 1
    type key 查看对应的value类型
    del key1 key2 删除键
    expire key seconds 设置过期时间
    ttl key 查看有效时间

    7 操作hash

    命令 功能
    hset key field value 设置单个属性
    hmset key field1 value1 field2 value2 设置多个属性
    hkeys key 获取所有的属性
    hget key field 获取一个属性的值
    hmget key field1 field2 获取多个属性的值
    hvals key 获取所有的属性

    8 操作list

    命令 功能
    lpush key value1 value2 左侧插入数据
    rpush key value1 value2 右侧插入数据
    insert key before或after 现有元素 新元素 指定元素前或后插入
    lrange key start stop 返回列表指定范围元素
    lset key index value 设置指定索引位置的元素值
    lrem key count value 删除指定元素,count>0从头往尾删除,count<0从尾往头删除,count=0删除所有

    9 操作set

    命令 功能
    sadd key member1 member2 添加元素
    smembers key 返回所有的元素
    srem key value 删除指定元素

    10 操作zset

    命令 功能
    zadd key score1 member1 score2 member2 添加元素
    zrange key start stop 范围内获取元素
    zrangebyscore key min max score范围内获取元素
    zscore key member 返回元素的score值
    zrem key member1 member2 删除指定元素
    zremrangebyscore key min max 删除权重指定范围的元素

    11 主从和集群

    • 主从
    复制:
    	sudo cp /etc/redis/redis.conf /etc/redis/slave.conf
    修改:
    	sudo vim /etc/redis/slave.conf
    内容:
    	bind 127.0.0.1
    	slaveof 127.0.0.1 6379
    	port 6378
    启动从redis:
    	sudo redis-server /etc/redis/slave.conf
    查看主从关系:
    	redis-cli info Replication
    	redis-cli -p 6378 info Replication
    
    • 集群

    注:一下操作前先准备好6个端口并且运行成功

    复制:
    	sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/
    安装ruby:
    	sudo apt-get install ruby
    创建集群:
    	redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
    如果报错:
    	gem source -l  # 如果是https://rubygems.org/ 就需要更换
    	gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
    	sudo gem install redis
    连接集群:
    	redis-cli -h ip地址 -c(表示连接的是集群, cluster) -p 端口号
    
    • 端口设置范例
    port 7003
    bind 172.16.179.131
    daemonize yes
    pidfile 7003.pid
    cluster-enabled yes
    cluster-config-file 7003_node.conf
    cluster-node-timeout 15000
    appendonly yes
    

    12 python操作redis

    • 安装
    sudo pip3 install redis
    
    # 集群
    sudo pip3 install redis-py-cluster==1.3.6
    
    • 调用方式
    from redis import StrictRedis
    redis_cli = StrictRedis(
    	host="localhost",
        port=6379,
        db=0
    )
    result = redis_cli.set("name", "itheima")
    # 成功返回True
    
    • 集群调用方式
    from rediscluster import StrictRedisCluster
    # 这里可以不用全部,有一个能用的就行
    startup_nodes = [
    		{'host': '127.0.0.1', 'port': '7000'},
    		{'host': '127.0.0.1', 'port': '7001'},
    		{'host': '127.0.0.1', 'port': '7002'},
    		{'host': '127.0.0.1', 'port': '7003'},
    		{'host': '127.0.0.1', 'port': '7004'},
    		{'host': '127.0.0.1', 'port': '7005'}
    ]
    cli=StrictRedisCluster(startup_nodes=startup_nodes,decode_responses=True)
    result=cli.set('name','itheima')
    name = cli.get('name')
    

    十三、Git

    1 单人操作

    命令 功能
    git init 创建本地仓库
    git config user.name(email) 配置个人信息
    vim .git/config 配置信息
    git status 查看工作区状态
    git add 文件名 把工作区修改的部分添加到暂存区中
    git add . 添加所有修改到暂存区
    git commit -m “标签” 将暂存区所有修改提交到仓库区
    git commit -am 把工作区的修改添加到暂存区并提交
    git log 查看当前分支提交情况
    git reflog 查看所有分支操作记录
    git reset --hard HEAD 退回,HEAD当前最新,HEAD前一个版本,HEAD^前两个,HEAD1前一个,HEAD10前10个
    git reset --hard 版本号(一般7位uuid码即可) 通过版本号退回
    git checkout 文件名 撤销修改
    git reset 文件名 撤销暂存区的修改
    git diff HEAD – 文件名 对比版本库与工作区
    git diff HEAD HEAD^ – 文件名 版本文件之间的对比
    git rm 文件名 确定删除文件,在暂存区也删除

    2 多人开发

    • 网址

    码云: https://gitee.com/
    学校的gitlab: http://git.meiduo.site/
    
    • 克隆

    git clone 复制的网址
    
    • 标签

    命令 功能
    git tag -a 标签名 -m “标签描述” 在本地打标签
    git tag 查看本地标签列表
    git show 标签名 查看相应标签的版本信息
    git push origin 标签名 推送标签到远程仓库
    git tag -d 标签名 删除本地标签
    git push origin --delete tag 标签名 删除远程仓库标签
    • 分支

    命令 功能
    git branch 查看当前分支
    git checkout -b 分支名 创建并切换到分支
    git push -u origin 分支 设置本地分支跟踪远程指定分支,并把dev分支推送到远程仓库
    git chekout 分支名 切换分支
    git merge 分支名 把分支合并到当前分支
    • 记住密码

    设置记住密码,默认15分钟
    git config --global credential.helper cache
    自己设置时间
    git config credential.helper 'cache --timeout=3600'
    长期存储
    git config --global credential.helper store
    
    • 码云

    1.创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
    ssh-keygen -t rsa -C "[email protected]"
    
    复制公钥
    cat ~/.ssh/id_rsa.pub
    添加至账号
    克隆即可
    git clone [email protected]:laowang099/python15_mayun.git网址
    

    你可能感兴趣的:(python笔记)