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 auser 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 标签

标签功能
<h1-h6>标题
<p>段落
<div>分区
<span>范围标签(不太懂)
<br>换行
<hr>分割线
<img>图片 src=路径 alt=替换文本 title=提示文本
<a>超链接 href=路径/网址 target=指定什么窗口显示 _self _blank
<ul>无序列表 <li>:某一项
<ol>有序列表 同上
<table>表格
<tr>一行
<td>一个单元格
<th>表头,比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>
<!-- class="方式" -->

<style>
/* id选择器 */
    #aa{
        color:green;
    }
</style>
<!-- id="方式" -->

<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/2x=2.5
%求余数x=y%2x=1
++自增1x++ ,好比 x+=1
自减1x-- ,好比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

  • 引入

<script scr="jquery-1.12.4.min.js"></script>

  • 入口函数

&(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(参数)

参数功能
hostip地址
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非空白字符
\wASCII下不匹配中文,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 maxscore范围内获取元素
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 "13423682841@example.com"

复制公钥
cat ~/.ssh/id_rsa.pub
添加至账号
克隆即可
git clone git@gitee.com:laowang099/python15_mayun.git网址
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值