1、初识模块

Python的强大之处在于他有非常丰富和强大的标准库和第三方库,现在简单的学习2个常见的标准库——sys和os。

(1)系统的标准库sys

 # Author:GCL

 # 系统的标准库sys
import sys # 打印环境变量
print(sys.path)
# 打印相对路径
print(sys.argv)

标准库sys

['F:\\Python\\code\\Day02', 'F:\\Python\\code\\Day02', 'E:\\PythonAnZhuang\\python36.zip', 'E:\\PythonAnZhuang\\DLLs', 'E:\\PythonAnZhuang\\lib', 'E:\\PythonAnZhuang', 'E:\\PythonAnZhuang\\lib\\site-packages']
['F:/Python/code/Day02/MySys_Os.py']

输出

(2)系统的标准库os

 # Author:GCL

 # 系统的标准库os
import os # 执行系统命令,不保存结果,返回执行的状态,成功返回0
statue=os.system("dir")
print(statue)
# 得到返回的结果
ret=os.popen("dir").read()
print(ret)
# 新建文件夹的命令如下
#os.mkdir("newDir")

标准库os

 ������ F �еľ��� ѧϰ
������к��� 0000-0C4A F:\Python\code\Day02 ��Ŀ¼ 2018/05/05 17:04 <DIR> .
2018/05/05 17:04 <DIR> ..
2018/05/05 20:22 <DIR> .idea
2018/05/04 17:14 181 BytesAndStr.py
2018/05/05 11:45 772 ListCopy.py
2018/05/05 11:22 1,884 MyList.py
2018/05/04 01:38 443 MySys_Os.py
2018/05/05 17:04 1,561 ShoppingCart.py
5 ���ļ� 4,841 �ֽ�
3 ��Ŀ¼ 30,338,977,792 �����ֽ�
0
驱动器 F 中的卷是 学习
卷的序列号是 0000-0C4A F:\Python\code\Day02 的目录 2018/05/05 17:04 <DIR> .
2018/05/05 17:04 <DIR> ..
2018/05/05 20:22 <DIR> .idea
2018/05/04 17:14 181 BytesAndStr.py
2018/05/05 11:45 772 ListCopy.py
2018/05/05 11:22 1,884 MyList.py
2018/05/04 01:38 443 MySys_Os.py
2018/05/05 17:04 1,561 ShoppingCart.py
5 个文件 4,841 字节
3 个目录 30,338,977,792 可用字节

输出

2、pyc文件是什么

经常说Python是一门解释性语言,其实不够准确,想要弄清楚pyc文件到底是什么,就必须清楚Python的运行过程。
Python的运行过程其实类似于Java,先编译后解释,即:Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器解释成机器文件。所以说Python应该是一门先编译后解释的语言。
在说Python的运行过程之前,我们先来说两个概念,PyCodeObject和pyc文件。我们在硬盘上看到的pyc文件自然不必多说,而其实PyCodeObject则是Python编译器真正编译出的结果。
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。所以pyc文件其实是PyCodeObject的一种持久化保存方式。

3、Python3的数据类型bytes

在Python3中,文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python3不会以任意隐式的方式混用str和bytes,所以两者的区分特别清晰。
但是,字符串可以编码成字节包,而字节包可以解码成字符串。

 # Author:GCL

 nameStr="我是Chinese"
# 编码
nameBytes=nameStr.encode('utf-8')
print(nameBytes)
# 解码
nameStr=nameBytes.decode('utf-8')
print(nameStr)

编码与解码

b'\xe6\x88\x91\xe6\x98\xafChinese'
我是Chinese

输出

4、列表

列表是我们以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。

(1)定义列表与访问单个元素

 # Author:GCL

 print("========定义列表与访问单个元素========")
# 定义列表
names=["Jack","Tom","Mary","Alex"]
print(names)
# 通过下标访问列表中的元素,下标从0开始计数
print(names[0],names[1],names[2],names[3])
# 倒着取的下标
print(names[-4],names[-3],names[-2],names[-1])

定义列表与访问单个元素

========定义列表与访问单个元素========
['Jack', 'Tom', 'Mary', 'Alex']
Jack Tom Mary Alex
Jack Tom Mary Alex

输出

(2)切片——取多个元素

 print("========切片========")
# 切片——取多个元素
# 取下标1至下标3之间的数字,包括1,不包括3
print(names[1:3])
# 与上句等价
print(names[1:-1])
# 当从头开始取的时候,下标0可以忽略
print(names[:2])
# 与上句等价
print(names[0:2])
# 如果想取到最后一个元素,应该像如下这么写
print(names[2:])
# 间隔着取元素
print(names[0:-1:2])
print(names[:-1:3])
print(names[::2])

切片——取多个元素

========切片========
['Tom', 'Mary']
['Tom', 'Mary']
['Jack', 'Tom']
['Jack', 'Tom']
['Mary', 'Alex']
['Jack', 'Mary']
['Jack']
['Jack', 'Mary']

输出

(3)追加

 print("========追加========")
names.append("追加新成员0")
print(names)

追加

========追加========
['Jack', 'Tom', 'Mary', 'Alex', '追加新成员0']

输出

(4)插入

 print("========插入========")
names.insert(1,"插入新成员0")
print(names)

插入

========插入========
['Jack', '插入新成员0', 'Tom', 'Mary', 'Alex', '追加新成员0']

输出

(5)修改

 print("========修改========")
names[2]="Tom_Mod"
print(names)

修改

========修改========
['Jack', '插入新成员0', 'Tom_Mod', 'Mary', 'Alex', '追加新成员0']

输出

(6)删除

 print("========删除========")
del names[1]
print(names)
# 删除指定元素
names.remove("Tom_Mod")
print(names)
# 删除列表的一个元素,默认是最后一个
names.pop()
print(names)
# names.pop(1)
names.pop(-2)
print(names)

删除

========删除========
['Jack', 'Tom_Mod', 'Mary', 'Alex', '追加新成员0']
['Jack', 'Mary', 'Alex', '追加新成员0']
['Jack', 'Mary', 'Alex']
['Jack', 'Alex']

输出

(7)扩展

 print("========扩展========")
ex=[1,2,3,2]
names.extend(ex)
del ex
print(names)

扩展

========扩展========
['Jack', 'Alex', 1, 2, 3, 2]

输出

(8)统计

 print("========统计========")
# 统计列表中元素为2的个数
num=names.count(2)
print(num)

统计

========统计========
2

输出

(9)排序与翻转

 print("========排序与翻转========")
# Python3中不同数据类型不能放在一起排序
names[2]=""
names[3]=""
names[-2]=""
names[-1]=""
print(names)
# 按照ASCII码的顺序排列
names.sort()
print(names)
# 翻转
names.reverse()
print(names)

排序与翻转

========排序与翻转========
['Jack', 'Alex', '', '', '', '']
['', '', '', '', 'Alex', 'Jack']
['Jack', 'Alex', '', '', '', '']

输出

(10)获取下标

 print("========获取下标========")
# 只返回找到的第一个下标
index=names.index("")
print(index)

获取下标

========获取下标========
3

输出

(11)清空列表

 print("========清空列表========")
names.clear()
print(names)

清空列表

========清空列表========
[]

输出

(12)拷贝

①.第一种浅拷贝

 # Author:GCL

 names1=["Jack","Tom","Mary",["",""],"Alex"]
# 浅拷贝
# names2=names1.copy()
# 等价于上句
# names2=names1[:]
# 等价于上句
names2=list(names1)
print(names1)
print(names2)
names1[1]="Tom_Mod"
names1[3][0]="One"
print(names1)
print(names2)

源码

['Jack', 'Tom', 'Mary', ['', ''], 'Alex']
['Jack', 'Tom', 'Mary', ['', ''], 'Alex']
['Jack', 'Tom_Mod', 'Mary', ['One', ''], 'Alex']
['Jack', 'Tom', 'Mary', ['One', ''], 'Alex']

结果

②.第二种浅拷贝

 # Author:GCL

 import copy
names3=["Jack","Tom","Mary",["",""],"Alex"]
# 浅拷贝
names4=copy.copy(names3)
print(names3)
print(names4)
names3[1]="Tom_Mod"
names3[3][0]="One"
print(names3)
print(names4)

源码

['Jack', 'Tom', 'Mary', ['', ''], 'Alex']
['Jack', 'Tom', 'Mary', ['', ''], 'Alex']
['Jack', 'Tom_Mod', 'Mary', ['One', ''], 'Alex']
['Jack', 'Tom', 'Mary', ['One', ''], 'Alex']

输出

③.深拷贝

 # Author:GCL

 import copy
# 深拷贝
names5=["Jack","Tom","Mary",["",""],"Alex"]
names6=copy.deepcopy(names5)
print(names5)
print(names6)
names5[1]="Tom_Mod"
names5[3][0]="One"
print(names5)
print(names6)

源码

['Jack', 'Tom', 'Mary', ['', ''], 'Alex']
['Jack', 'Tom', 'Mary', ['', ''], 'Alex']
['Jack', 'Tom_Mod', 'Mary', ['One', ''], 'Alex']
['Jack', 'Tom', 'Mary', ['', ''], 'Alex']

输出

5、元组

元组其实跟列表差不多,也是存一组数,只不过它一旦创建,便不能再修改,所以又叫只读列表。

6、购物车小程序

需求:

(1)启动程序后,让用户输入工资,然后打印商品列表;

(2)允许用户根据商品编号购买商品;

(3)用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒;

(4)可随时退出,退出时,打印已购买商品和余额。

 # Author:GCL

 # 商品列表
product_list=[("苹果",12),("香蕉",20),("西瓜",15),("橘子",10)]
# 购物列表,存放用户购买的商品
shopping_list=[]
# 工资
salary=input("请输入您的工资:")
# 工资是否为数字
if salary.isdigit():
salary=int(salary)
while True:
print("==========商品列表==========")
# index保存索引,item保存具体的值
for index,item in enumerate(product_list):
print(index,item)
user_choice=input("请选择需要购买的商品的编号:")
if user_choice.isdigit():
user_choice=int(user_choice)
# len(product_list)表示的是列表的元素个数
if user_choice<len(product_list) and user_choice>=0:
tmp_item=product_list[user_choice]
if tmp_item[1]<=salary:
shopping_list.append(tmp_item)
salary-=tmp_item[1]
print("商品:%s添加成功,还剩余额:\033[31;1m%d\033[0m"%(tmp_item,salary))
else:
print("\033[41;1m您的余额不够,只剩下:%d\033[0m"%(salary))
else:
print("您所输入的编号:%d不存在!"%(user_choice))
elif user_choice=="q":
print("正常退出!")
print("您所购买的商品如下:")
for index,item in enumerate(shopping_list):
print(index,item)
print("您的余额为:\033[31;1m%d\033[0m"%(salary))
exit()
else:
print("您的选择非法,无法识别!")
else:
print("您输入的工资有误!")

源码

请输入您的工资:50
==========商品列表==========
0 ('苹果', 12)
1 ('香蕉', 20)
2 ('西瓜', 15)
3 ('橘子', 10)
请选择需要购买的商品的编号:1
商品:('香蕉', 20)添加成功,还剩余额:30
==========商品列表==========
0 ('苹果', 12)
1 ('香蕉', 20)
2 ('西瓜', 15)
3 ('橘子', 10)
请选择需要购买的商品的编号:2
商品:('西瓜', 15)添加成功,还剩余额:15
==========商品列表==========
0 ('苹果', 12)
1 ('香蕉', 20)
2 ('西瓜', 15)
3 ('橘子', 10)
请选择需要购买的商品的编号:1
您的余额不够,只剩下:15
==========商品列表==========
0 ('苹果', 12)
1 ('香蕉', 20)
2 ('西瓜', 15)
3 ('橘子', 10)
请选择需要购买的商品的编号:q
正常退出!
您所购买的商品如下:
0 ('香蕉', 20)
1 ('西瓜', 15)
您的余额为:15

输出

7、字符串操作

关于对字符串的一系列操作,都在下面的源码中进行了详细的说明:

 # Author:GCL

 # 首字母大写,后续字母全部变为小写
print("toM gooD".capitalize()) # 统计给定字符串出现的次数
print("abc fdh aha".count("a")) # 将字符串填充到15位,用*号前后填充,如果指定的位数小于字符串的长度,将没有效果
print("".center(15,"*")) # 对字符串进行编码,得到对应的字节包
print("我爱中国".encode("utf-8")) # 判断字符串是否以gcl结尾
print("Qggh hjgcl".endswith("gcl")) # 将Tab键的距离扩展到16
print("I love\tYou".expandtabs(16)) # 格式化字符串
print("My name is {name},I am {year}".format(name="gcl",year=22))
print("My name is {name},I am {year}".format_map({"name":"gcl","year":22})) # 在字符串中查找name,找到的话返回首次找到的索引,否则返回-1
print("My name is {name},I am {year}".find("name")) # 在字符串中查找name,找到的话返回首次找到的索引,否则报错
print("My name is {name},I am {year}".index("name")) # 判断字符串是否为整数
print("".isdigit()) # 判断字符串是否只由数字和字母组成
print("ak15".isalnum()) # 判断字符串是否只由字母组成
print("aaA".isalpha()) # 判断字符串是否为十进制
print("".isdecimal()) # 判读字符串是否为一个合法的标识符
print("jk2_".isidentifier()) # 判读字符串中字母是否全为小写
print("abc 36".islower()) # 判断字符串是否只由数字组成
print("".isnumeric()) # 判断字符串是否可以打印
print("MyNameIs".isprintable()) # 判断字符串是否为空格
print(" ".isspace()) # 判断字符串是否为标题
print("My Name is".istitle())
print("My Name Is".istitle()) # 判读字符串中字母是否全为大写
print("AS11".isupper()) # join的示例用法
print("+".join(["","",""]))
print("->".join(["a","b","c"])) # 从左到右(左对齐),不够的位数用*来填充
print("".ljust(10,"*")) # 从右到左(右对齐),不够的位数用*来填充
print("".rjust(10,"*")) # 转换成小写
print("KLHasgUK".lower()) # 转换成大写
print("KLHasgUK".upper()) # 去除左边的空格或换行
print(" \nabc".lstrip()) # 去除右边的空格或换行
print("abc\n".rstrip()) # 去除两端的空格或换行
print(" \nabc\n".strip()) # maketrans用法示例
p=str.maketrans("abcde","")
print("hajbkcldqe".translate(p)) # 从左到右拆分字符串
print("My name is {name},I am {year}".partition(" ")) # 替换指定的字符串
print("gcl love li".replace("l","L",2)) # 从右到左首次找到的索引
print("gcl love li".rfind("l")) # 从右到左拆分字符串
print("My name is {name},I am {year}".rpartition(" ")) # 分割字符串
print("1+2+3+4".split("+")) # 大小写互换
print("aBcDeFgHi".swapcase()) # 转换成标题
print("i love you".title()) # 填充字符串
print("123abc".zfill(10))

源码

其对应的输出如下:

Tom good
3
****1234567****
b'\xe6\x88\x91\xe7\x88\xb1\xe4\xb8\xad\xe5\x9b\xbd'
True
I love You
My name is gcl,I am 22
My name is gcl,I am 22
3
3
True
True
True
True
True
True
True
True
True
False
True
True
1+2+3
a->b->c
12345*****
*****12345
klhasguk
KLHASGUK
abc
abc
abc
h1j2k3l4q5
('My', ' ', 'name is {name},I am {year}')
gcL Love li
9
('My name is {name},I am', ' ', '{year}')
['', '', '', '']
AbCdEfGhI
I Love You
0000123abc

输出

8、字典操作

(1)字典是一种----->key:value 的数据类型,其语法如下:

 info={
"stu001":"gcl","stu002":"lmy","stu003":"xx"
}
print(info)

定义

{'stu001': 'gcl', 'stu002': 'lmy', 'stu003': 'xx'}

输出

(2)字典的特性:

①.字典是无序的;

②.字典的key值必须是唯一的。

(3)字典的常见操作

①.增加

 # 增加
info["stu004"]="yxm"
info["stu005"]="tl"
print(info)

增加

{'stu001': 'gcl', 'stu002': 'lmy', 'stu003': 'xx', 'stu004': 'yxm', 'stu005': 'tl'}

输出

②.修改

 # 修改
info["stu001"]="gcl2.0"
print(info)

修改

{'stu001': 'gcl2.0', 'stu002': 'lmy', 'stu003': 'xx', 'stu004': 'yxm', 'stu005': 'tl'}

输出

③.删除

 # 删除
# 指定删除
info.pop("stu004")
print(info)
del info["stu005"]
print(info)
# 随机删除
info.popitem()
print(info)

删除

{'stu001': 'gcl2.0', 'stu002': 'lmy', 'stu003': 'xx', 'stu005': 'tl'}
{'stu001': 'gcl2.0', 'stu002': 'lmy', 'stu003': 'xx'}
{'stu001': 'gcl2.0', 'stu002': 'lmy'}

输出

④.查找

 # 查找
# 如果Key值不存在就会报错
print(info["stu001"])
# 最好的方法是get,如果不存在会返回None
print(info.get("stu002"))
print(info.get("stu003"))
# 判断Key值是否存在
print(("stu001" in info))

查找

gcl2.0
lmy
None
True

输出

⑤.Keys值与values值

 # Keys值
print(info.keys()) # values值
print(info.values())

Keys值与values值

dict_keys(['stu001', 'stu002'])
dict_values(['gcl2.0', 'lmy'])

输出

⑥.setdefault、update、items

 # setdefault
info.setdefault("stu003","xx")
print(info)
info.setdefault("stu001","gcl")
print(info) # update
ex={11:22,33:44,"stu001":"gcl"}
info.update(ex)
print(info) # items
print(info.items())

setdefault、update、items

{'stu001': 'gcl2.0', 'stu002': 'lmy', 'stu003': 'xx'}
{'stu001': 'gcl2.0', 'stu002': 'lmy', 'stu003': 'xx'}
{'stu001': 'gcl', 'stu002': 'lmy', 'stu003': 'xx', 11: 22, 33: 44}
dict_items([('stu001', 'gcl'), ('stu002', 'lmy'), ('stu003', 'xx'), (11, 22), (33, 44)])

输出

⑦.循环打印

 # 循环打印字典
# 比较常用
for key in info:
print(key,info[key])
#会先把dict转成list,数据量大时莫用
for k,v in info.items():
print(k,v)

循环打印字典

stu001 gcl
stu002 lmy
stu003 xx
11 22
33 44
stu001 gcl
stu002 lmy
stu003 xx
11 22
33 44

输出

9、程序:三级菜单

要求:

(1)可返回上一级;

(2)可随时退出程序。

 # Author:GCL

 # 整体的字典数据
data={
"A1":{
"A11":{
"A111":["",""],
"A112":["",""]
},
"A12":{
"A121":["",""],
"A122":["",""]
},
"A13":{
"A131":["",""],
"A132":["",""]
}
},
"A2":{
"A21":{
"A211":["",""],
"A212":["",""]
},
"A22":{
"A221":["",""],
"A222":["",""]
},
"A23":{
"A231":["",""],
"A232":["",""]
}
},
"A3":{
"A31":{
"A311": ["", ""],
"A312": ["", ""]
},
"A32":{
"A321": ["", ""],
"A322": ["", ""]
},
"A33":{
"A331": ["", ""],
"A332": ["", ""]
}
},
"A4":{
"A41":{
"A411": ["", ""],
"A412": ["", ""]
},
"A42":{
"A421": ["", ""],
"A422": ["", ""]
},
"A43":{
"A431": ["", ""],
"A432": ["", ""]
}
}
} # 退出的标志位,默认为真
exit_flag=True
while exit_flag:
# 打印第一级的keys值
for k in data:
print(k)
choice1=input("您的选择(第一级):")
if (choice1 in data):
while exit_flag:
# 打印第二级的keys值
for k in data[choice1]:
print(k)
choice2=input("您的选择(第二级):")
if (choice2 in data[choice1]):
while exit_flag:
# 打印第三级的keys值
for k in data[choice1][choice2]:
print(k)
choice3=input("您的选择(第三级):")
if (choice3 in data[choice1][choice2]):
print(data[choice1][choice2][choice3])
elif choice3=="b":
break
elif choice3=="q":
exit_flag=False
else:
print("您的选择有误,无法识别!")
elif choice2=="b":
break;
elif choice2=="q":
exit_flag=False
else:
print("您的选择有误,无法识别!")
elif choice1=="b":
print("已经是第一级了,无法返回上一级!")
elif choice1=="q":
exit_flag=False
else:
print("您的选择有误,无法识别!")

源码

A1
A2
A3
A4
您的选择(第一级):A2
A21
A22
A23
您的选择(第二级):A21
A211
A212
您的选择(第三级):A212
['', '']
A211
A212
您的选择(第三级):A211
['', '']
A211
A212
您的选择(第三级):B
您的选择有误,无法识别!
A211
A212
您的选择(第三级):b
A21
A22
A23
您的选择(第二级):b
A1
A2
A3
A4
您的选择(第一级):b
已经是第一级了,无法返回上一级!
A1
A2
A3
A4
您的选择(第一级):A4
A41
A42
A43
您的选择(第二级):q Process finished with exit code 0

输出

后记:欢迎各路大神批评与指正!

2018.5.6

Day02:我的Python学习之路的更多相关文章

  1. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  2. Python学习之路-Day2-Python基础3

    Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...

  3. Python学习之路-Day2-Python基础2

    Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...

  4. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

  5. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  6. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  7. python 学习之路开始了

    python 学习之路开始了.....记录点点滴滴....

  8. python学习之路,2018.8.9

    python学习之路,2018.8.9, 学习是一个长期坚持的过程,加油吧,少年!

  9. Python学习之路——pycharm的第一个项目

    Python学习之路——pycharm的第一个项目 简介: 上文中已经介绍如何安装Pycharm已经环境变量的配置.现在软件已经安装成功,现在就开始动手做第一个Python项目.第一个“Hello W ...

  10. python学习之路------你想要的都在这里了

    python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...

随机推荐

  1. 洛谷 - P2335 - 位图 - 简单dp

    https://www.luogu.org/problemnew/show/P2335 假如我们使用dp的话,每次求出一个点的左上方.右上方.左下方.右下方的最近的白点的距离.那么只是n²的复杂度.这 ...

  2. [Shader 着色器]冰霜效果的思考和实现

    http://game.ceeger.com/forum/read.php?tid=23209&fid=2 由于最近要做一个冰系的角色,就想能不能做一些冰霜效果.那么就试试吧,先弄一张原图: ...

  3. Codeforces731D 80-th Level Archeology

    考虑将两个单词变成有序,我们可以得到一个或者两个旋转次数的区间. 然后考虑将两组单词变成有序,比如[l,mid]和[mid+1,r],对于mid和mid+1这两个单词我们可以求出使他们有序的旋转次数的 ...

  4. curl:出现SSL错误提示

    在上一篇博文中,升级ruby版本中,提示如下错误: 1) Error fetching https://mirrors.aliyun.com/rubygems/: [root@web ~]# gem ...

  5. Nginx系列篇四:Nginx+keepalived搭建一个高可用的双机双主热备

    建议:先阅读Nginx+keepalived主从配置,因为此篇是接着上篇开始的 上一篇我们简单的介绍了主从配置及其缺点,我们看一下双主热备配置: 2台Nginx+keepalived互为主备,各自绑定 ...

  6. 最短路之SPFA

    解决存在<<<负环>>>的图的单源最短路径: 判断有无负环: 如果某个点进入队列的次数超过N次则存在负环(SPFA无法处理带负环的图) 这里,只介绍用bfs(深搜) ...

  7. windows下配置java环境jdk

    Windows系统下搭建java的开发环境和配置环境变量 具体步骤打开链接地址:https://www.cnblogs.com/lijuntao/p/6694483.html

  8. php中三元运算符用法

    代码如下: <?php $handle=fopen("../good/html/1.txt", "r"); while(!feof($handle)) / ...

  9. import和from .xxx import *的一点重要区别

    import zzz 不会导入zzz中已导入的模块 from .xxx import * 会导入xxx中已导入的模块 特别注意: 使用logging时,x模块导入了log.py,y模块导入了log.p ...

  10. php,json数据传输(无刷新)

    废话不说直接上关键代码: js代码: <script language="javascript"> $(".login").live('click' ...