零基础学习Python(六)
1. 元类的应用
使用元类给对象添加一个固有属性author:
对类名进行限定,要求类名必须是大写字母开头:
class MetaC(type):def __init__(cls, name, bases, attrs):if not name.istitle():raise TypeError("类名必须是大写字母开头~")return type.__init__(cls, name, bases, attrs)
限制类实例化时只能传递关键字参数:
class MetaC(type):def __call__(cls, *args, **kwargs):if args:raise TypeError("仅支持关键字参数~")return type.__init__(cls, name, bases, attrs)
禁止类进行实例化:
class NoInstance(type):def __call__(cls, *args, **kwargs):raise TypeError("该类不允许被实例化对象!")
不允许该类创建对象,那么可以使用静态方法或者类方法来使用该类:
只允许类实例化一个对象:
class SimpleInstance(type):def __init__(cls, *args, **kwargs):cls.__instance = Nonereturn type.__init(cls, *args, **kwargs)def __call__(cls, *args, **kwargs):if cls.__instance is None:cls.__instance = type.__call__(cls, *args, **kwargs)return cls.__instance
可以看到这个唯一的对象保存在类的_SimpleInstance__instance的变量里。
2. 抽象基类
抽象基类不能被实例化,只能被继承,其子类必须实现其定义的抽象方法。
from abc import ABCMeta, abstractmethod
class Fruit(metaclass=ABCMeta):def __init__(self, name):self.name = name@abstractmethoddef good_for_health(self):pass
要想定义一个抽象基类,只需要指定其metaclass为ABCMeta即可,要定义一个抽象方法,使用abstractmethod装饰器即可。
class Banana(Fruit):def good_for_health:print("~")
3. 模块和包
一个.py文件就是一个模块,导入模块的三种方式(假设模块名为hello):
import hello
# 此时调用模块函数,使用hello.say_hi()、hello.say_hello()
from hello import say_hi, say_hello
# 此时可能会有命名冲突的问题,即两个模块有同名函数/对象,那么后导入的会覆盖先导入的
import hello as h
# 通过as命名别名可以解决命名冲突的问题,此时调用函数使用h.say_hi()、h.say_hello()
模块在导入过程中,会从头到尾执行一遍模块的所有代码,因此如果不使用if __name__ == "__main__":将一些测试语句包裹起来,那么在导入模块的时候会执行一些没必要的代码。 因为当一个.py文件/一个模块被当做脚本(而不是导入)被独立执行的时候,它的__name__属性就会被赋值为“__main__”。如果一个.py文件/一个模块被导入的时候,它的__name__属性就是模块的名称。
python的包是多个模块的集合,是一个文件夹,里面有必须的一个__init__.py文件,标识这个文件夹是一个python包。导入模块的方式变为:import 包名.模块名。
可以对__init__.py文件进行修改,用于对包进行初始化的操作:
print(f"__init__.py 被调用,此时 __name__ 的值是 {__name__}")
此时打印的是包名。导入包的模块,模块中的__name__的值是包名.模块名。
可以在__init__.py文件里定义全局变量,但是包里的模块不能直接访问这个全局变量(可以编写函数访问全局变量,但是运行该模块会报错),要通过包外的其他模块引用该模块,才可以进行访问。
例如在__init__.py文件中添加两个全局变量:
包内的模块尝试访问x:
这是因为包内模块是看不到这个包的。在包外模块访问包的全局变量是ok的
在__init__.py里还可以导入包里的某个模块,这样其他模块在导入这个包的时候就会自动导入模块:
导入模块时,使用from 模块名 import *会造成命名空间的污染,为此,python提供了__all__属性来解决这一问题,通过__all__属性来指定特定的模块内的变量和函数才能被导入:
__all__ = ["say_hello", "x"]x = 250
s = "FishC"def say_hello():print("Hello FishC")def say_hi():print("Hi FishC")
此时,s和say_hi不能被访问到
但是如果不是使用from hello import *,而是使用import hello as h,则可以正常访问:
__all__属性也可以应用在包的__init__.py文件中,现在有一个FC包,里面有三个模块:fc1.py,fc2.py,fc3.py,以及一个空的__init__.py文件,在另一个文件中导入该包:
使用dir()函数可以获取当前作用域的变量和方法,结果如下:
可以看到,并未得到fc1,fc2,fc3三个模块,但是如果在__init__.py里使用__all__属性:
然后在另一个模块中就可以使用fc1和fc2这两个模块了:
总结:对于模块来说,如果没有使用__all__属性,使用from 模块名 import *的方式导入,将导入模块的所有内容;对于包来说,如果__init__.py没有使用__all__属性,使用from 包名 import *的方式导入,将不会导入包里的任何模块。
4. 文件操作
打开一个文件:
f = open('FishC.txt', 'w')
此时会创建一个文件FishC.txt,并且可以对这个文件进行写入:
f.write("I love Python")
f.writelines(["I love FishC\n", "I love my wife."])
f.close()
write方法是写入一个字符串,不会换行。writelines写入的是可迭代对象,注意,该方法也不会换行。文件如果操作完毕,需要调用close方法进行关闭。
使用r+的模式打开文件,既可以读,又可以写:
f = open("FishC.txt", "r+")
f.readable() #返回True
f.writable() #返回Truefor item in f:print(f)
此时,如果使用f.read()方法再去读取该文件,会得到空字符串,因为此时f的文件指针已经指到文件末尾了。使用f.tell()可以查看文件指针的位置:
f.tell() # 44f.seek(0) # 将文件指针移到指定位置,此时移到文件开头
f.readline() # 读取一行
f.read() # 读取到文件结束的位置(EOF)
使用flush方法可以在不关闭文件的情况下,将内容写到文件(计算机磁盘)中。
使用truncate方法将文件截取到指定位置,即之后的内容(包括指定位置)全部丢弃:
f.truncate(29)
如果打开文件的模式是'w',并且该文件存在,那么文件原来内容会被全部清空。
open函数总是需要调用close函数,但是文件操作过程中发生异常,那么可能会导致文件对象没有close。针对这个问题,可以使用with语句(上下文管理器)来解决:
with open("FishC.txt", "w") as f:f.write("I love FishC.")
使用pickle模块的dump方法可以将python对象(包括字符串、列表、字典等)序列化,即转化为二进制格式:
import picklex, y, z = 1, 2, 3
s = "FishC"
l = ["小甲鱼", 520, 3.14]
d = {"one": 1, "two": 2}with open("data.pkl", "wb") as f:pickle.dump(x, f)pickle.dump(y, f)pickle.dump(z, f)pickle.dump(s, f)pickle.dump(l, f)pickle.dump(d, f)
使用pickle模块的load方法可以将pickle文件反序列化为Python对象,注意读取顺序为序列化时写入的顺序(即先写入的先读出来,后写入的后读出来):
import picklewith open("data.pkl", "rb") as f:x = pickle.load(f)y = pickle.load(f)z = pickle.load(f)s = pickle.load(f)l = pickle.load(f)d = pickle.load(f)print(x, y, z, s, l, d, sep="\n")
上述对象有点多,使用元组的方式在写入和读取时打包解包可以简化代码:
import picklex, y, z = 1, 2, 3
s = "FishC"
l = ["小甲鱼", 520, 3.14]
d = {"one": 1, "two": 2}with open("data.pkl", "wb") as f:pickle.dump((x, y, z, s, l, d), f)with open("data.pkl", "rb") as f:x, y, z, s, l, d = pickle.load(f)print(x, y, z, s, l, d, sep="\n")
5. 使用pathlib操作文件路径
pathlib是Python3.4之后才有的包,用于替代os.path。从pathlib中导入Path:
from pathlib import Path
使用cwd方法获取当前路径:
Path是一个类,传入字符串就可以获得一个Path对象:
将Path对象用反斜杠和字符串进行拼接,就可获得一个新的Path对象:
判断Path对象是否为一个文件/文件夹:
判断路径/文件是否存在:
通过Path对象的name属性可以获取文件/文件夹的名字,即最后一个反斜杠后面的内容:
通过Path对象的stem属性可以获取文件的文件名(不带后缀):
通过Path对象的suffix属性可以获取文件的后缀:
通过Path对象的parent属性可以获取文件/文件夹的上一级目录:
通过Path对象的parent属性可以获取文件/文件夹的各级目录,以元组的形式存储:
通过Path对象的stat()方法可以获取文件/文件夹的信息,比如stat方法返回的对象中有个属性st_size表示大小(单位为字节):
通过Path对象的resolve()方法可以将相对路径转换为绝对路径:
通过Path对象的iterdir()方法获取当前目录下的所有子文件和子文件夹:
通过Path对象的mkdir()方法创建目录:
如果要创建的目录已存在,调用mkdir方法会报错。如果想要忽略报错,关键字参数exist_ok设为True即可:
如果创建的目录的父目录不存在,也会报错:
如果想要将不存在的父目录也创建,parent参数设置为True即可:
通过Path对象的open()方法打开文件,其中可以指定操作模式,比如'w',open方法返回一个文件对象,可以对其进行读写操作:
通过Path对象的rename()方法进行重命名:
注意此时只传了一个新文件名字符串,没有传入路径,文件将会被移动到当前工作目录(cwd()方法可以查看当前工作目录)。
通过Path对象的rmdir()方法和unlink()方法删除文件夹和文件:
如果目录不为空,调用rmdir()方法会报错
通过Path对象的glob()方法来查找文件:
6. 将程序发布到PyPI上
将程序发布到PyPI上,将可以让世界上所有的程序员通过pip下载你的代码。具体步骤请参考:模块和包(下)_哔哩哔哩_bilibili
相关文章:
![](https://i-blog.csdnimg.cn/direct/fe57e10861154bd6a3c9a85fd2f7c5e4.png)
零基础学习Python(六)
1. 元类的应用 使用元类给对象添加一个固有属性author: 对类名进行限定,要求类名必须是大写字母开头: class MetaC(type):def __init__(cls, name, bases, attrs):if not name.istitle():raise TypeError("类名必须是大写字母开头~")return …...
![](https://i-blog.csdnimg.cn/direct/4f0a4e7f9818450b8086f2d2eaf12652.png)
微信小程序--31(todolist案例)
一.功能 输入待办事件添加代办事件删除代办事件 二、步骤 1.添加输入框 .wxml代码: <!-- 1.输入框 --><input type"text" bindinput"handleInput" value"{{text}}" /> .wxss代码: /* 1.输入框样式 */ i…...
![](https://www.ngui.cc/images/no-images.jpg)
springboot项目使用本地依赖项,打包后出现NoClassDefFoundError的一种解决方法
可以把本地依赖项上传到本地仓库后再引用 建立 Maven 本地仓库并将依赖上传到本地仓库 要建立 Maven 本地仓库并将依赖上传到本地仓库,可以按照以下步骤进行操作: 1. 配置 Maven 本地仓库路径 Maven 默认会在用户的主目录下的 .m2/repository 目录创…...
![](https://i-blog.csdnimg.cn/direct/e06906ab2ca54709af069126f719013a.png)
Maven高级使用指南
在开发大型项目时,Maven作为一个强大的构建和项目管理工具,能显著提升项目管理和构建的效率。然而,随着项目的扩大,维护和管理的复杂性也随之增加。本文将探讨一些高级的Maven用法和解决方案,以帮助你更好地管理大型项…...
![](https://www.ngui.cc/images/no-images.jpg)
windows docker 执行apt-get 权限问题
今天在windows下安装的docker 部署的容器执行apt-get遇到权限问题 PS C:\Users\xiaok> docker exec -it jenkins sh $ apt-get update Reading package lists... Done E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied) E: Unable to l…...
![](https://i-blog.csdnimg.cn/direct/eb234bf41cab42d280aa018de046f389.png)
Linux系统信息排查
目录 介绍步骤 介绍 1、熟悉查看CPU信息、操作系统信息、用户信息、特殊权限账户、启动项和任务计划的排查命令 2、在进行受害主机排查时,首先要对主机系统进行基本排查,方便对受害主机有一个初步的了解。 3、利用lscpu和uname -a查看系统硬件软件基本…...
![](https://i-blog.csdnimg.cn/direct/40a2047893e94721b506f7a08debbfc5.png#pic_center)
《图解设计模式》笔记(四)分开考虑
九、Bridge模式:将类的功能层次结构与实现层次结构分离 类的两个层次结构和作用 类的功能层次结构:希望增加新功能时 父类有基本功能,在子类中增加新功能 Something父类 …├─SomethingGood子类 想要再增加新功能 Something父类 …├─So…...
![](https://i-blog.csdnimg.cn/direct/cafeffc5ee714758847449eff98c84ec.png)
Linux shell编程学习笔记74:sed命令——沧海横流任我行(中)
0 前言 自 60 年代末以来,sed 一直是 Unix 标准工具箱的一部分。 Sed在以下三种情况下特别有用: 编辑太大的文件,无法进行舒适的交互式编辑; 当编辑命令序列过于复杂而无法在交互模式下轻松键入时,可以编辑任何大小的…...
![](https://i-blog.csdnimg.cn/direct/12e6ea3d3b5d4d40841e7ff50d64a81e.png)
[数据集][目标检测]道路积水检测数据集VOC+YOLO格式2699张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2699 标注数量(xml文件个数):2699 标注数量(txt文件个数):2699 标注…...
![](https://i-blog.csdnimg.cn/direct/850fb0c4d66c4abab08e4c503076e5d5.png)
不同路径
不同路径 思路: 法一:动态规划 const int N 110; class Solution { int dp[N][N];//dp[i][j]:从起点走到 i j的路径个数。 public:int uniquePaths(int m, int n) {for(int i1;i<n;i){dp[1][i]1;} for(int i1;i<m;i) dp[i][1]1;f…...
![](https://i-blog.csdnimg.cn/direct/a4976a55e43a450a97c0ed1a951b5119.png)
【HTML】HTML学习之引入CSS样式表
1、CSS样式规则 选择器{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}2、HTML引入CSS样式表 2.1、行内式 行内式也称为内联样式,是通过标签的style属性来设置元素的样式,其基本语法格式如下: <标签名 style"属性1:属性值1; 属性2:属性值2;…...
![](https://i-blog.csdnimg.cn/direct/bce85b848a5f4bb599967df2f2a20e48.png)
shaushaushau1
CVE-2023-7130 靶标介绍: College Notes Gallery 2.0 允许通过“/notes/login.php”中的参数‘user’进行 SQL 注入。利用这个问题可能会使攻击者有机会破坏应用程序,访问或修改数据. 已经告诉你在哪里存在sql注入了,一般上来应该先目录扫…...
![](https://img-blog.csdnimg.cn/direct/cd137335378c45e4a7300d4c8953cf95.png)
揭秘面试必备:高频算法与面试题全面解析
干货分享,感谢您的阅读! (暂存篇---后续会删除,完整版和持续更新见高频面试题基本总结回顾(含笔试高频算法整理)) 备注:引用请标注出处,同时存在的问题请在相关博客留言…...
![](https://www.ngui.cc/images/no-images.jpg)
设计模式-visit模式-在语法树的实践
文章目录 背景示例代码分析灵活性双重分派 总结 背景 很多项目代码有accept()用法,在calcite 里也看到了这种,深入了解一下 语法树遍历:编译器通常会将源代码解析成抽象语法树(AST)。为了实现不同的编译阶段ÿ…...
![](https://i-blog.csdnimg.cn/direct/f023528a296d446f9bd2fe3b71e629b9.png#pic_center)
ZK-Rollups测评
1. 引言 Matter Labs团队和多个高校研究人员一起,发布2024年论文《Analyzing and Benchmarking ZK-Rollups》,开源代码见: https://github.com/StefanosChaliasos/zkrollup-benchmarking(Python) 其中: …...
![](https://www.ngui.cc/images/no-images.jpg)
redis生产使用场景(一):并行流+二级缓存
本文主要介绍 redis 缓存在线上的使用场景 由于业务的特殊性,在生产库用户表中,大概有 50 多万的测试用户,在真实业务计算中,要把测试用户给筛选掉,所以在计算前,需要把测试用户加载到 redis 缓存中&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
EXCEL跨文件查询,指定条件列,返回满足条件的指定列
EXCEL跨文件查询,指定条件列,返回满足条件的指定列 Private Sub cmd_find_from_workbooks_Click() Dim S_Cols As String, thePath As String, Sor_Col As Integer, sz_Cols As Variant S_Cols T_jieguo_cols.Text sz_Cols Split(S_Cols, ",&quo…...
![](https://i-blog.csdnimg.cn/direct/3a9394486b814bfb8375b65a74a4d637.png)
[数据集][目标检测]流水线物件检测数据集VOC+YOLO格式9255张26类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):9255 标注数量(xml文件个数):9255 标注数量(txt文件个数):9255 标注…...
![](https://img-blog.csdnimg.cn/img_convert/50e73996fb40bb854b8febfb94d91dd4.jpeg)
StarRocks 存算分离 Compaction 原理
前言 StarRocks 中每次数据摄入都会生成一个新的数据版本,而查询时需要将所有版本数据进行合并才能获得一个正确的结果,如果历史数据版本太多,那么查询时需要读取的文件数也会很多,造成查询效率低下。因而 StarRocks 存在内部任务…...
![](https://i-blog.csdnimg.cn/direct/a95fb1abc9804e3bbc84fb29bd1c95ef.gif)
搭建ELK日志采集与分析系统
SpringCloud微服务实战——企业级开发框架 💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您…...
![](https://www.ngui.cc/images/no-images.jpg)
java集合中自动排序的treeset和treemap
底层 TreeSet 和 TreeMap 的底层架构都是基于红黑树实现的。红黑树是一种自平衡的二叉搜索树,其特性保证了插入、删除和查找操作的时间复杂度为 (O( log n \log n logn)),无论数据量多大,操作性能都能保持在合理的范围内。 1. 红黑树概述 红黑树是一种平衡二叉搜索树(…...
![](https://i-blog.csdnimg.cn/direct/34c91007f3904036bba65d1dd732d51c.png)
Android 修改SystemUI 音量条的声音进度条样式
一、前言 Android System UI 开发经常会遇到修改音量进度条样式的需求,主要涉及的类有VolumeDialogImpl与xml文件,接下来会逐步实现流程。先看看效果。 修改前 修改后 二、找到对应类 通过aidegen 打断点调试对应代码类VolumeDialogImpl定位到volume_d…...
![](https://www.ngui.cc/images/no-images.jpg)
电商场景的视频生成的prompt测评集合
1.收集的一些提示词 一台写着Vidu的赛车在路上飞驰,赛车上面坐着一只乌龟 一个宇航员在太空中骑单车 两个巨大的机器人在打架,电影风格,史诗感,高细节 在科幻电影风格中,两个巨大的机器人在城市废墟中激烈战斗。使用高角度俯拍,展现机器人的宏伟和战斗的史诗感。机器人…...
![](https://i-blog.csdnimg.cn/direct/38e29483279d47609eba2b7588f6b6a0.jpeg)
day34
1 非阻塞型IO 让我们的read函数不再阻塞,无论是否读取到消息,立刻返回 1.1 fcntl函数 原型:int fcntl(int fd, int cmd, ... /* arg */ ); 调用:int flag fcntl(描述符,F_GETFL) fcntl(描述符,F_SETFL&am…...
![](https://img-blog.csdnimg.cn/img_convert/7659ff2d682d6e76d7d773de212a6152.png)
无缝融入,即刻智能[三]:Dify-LLM平台知识库构建(多路召回、精排重排),43K+星标见证专属智能方案
无缝融入,即刻智能[三]:Dify-LLM平台知识库构建(多路召回、精排重排),43K+星标见证专属智能方案 大语言模型的训练数据一般基于公开的数据,且每一次训练需要消耗大量算力,这意味着模型的知识一般不会包含私有领域的知识,同时在公开知识领域存在一定的滞后性。为了解决这一…...
![](https://www.ngui.cc/images/no-images.jpg)
AWS服务WAF
在 AWS 中使用 Web Application Firewall (WAF) 来防御常见的攻击手段,如 DDoS 攻击和 SQL 注入攻击,可以通过创建和配置规则来实现。下面是如何使用 AWS WAF 阻止这些常见攻击的详细操作步骤。 1. 登录到 AWS 管理控制台 打开 AWS 管理控制台。使用你…...
![](https://i-blog.csdnimg.cn/direct/f5f1e450c54e48ec8fa77a1268d22104.png)
二叉树中的奇偶树问题
目录 一题目: 二思路汇总: 1.二叉树层序遍历: 1.1题目介绍: 1.2 解答代码(c版): 1.3 解答代码(c版): 1.4 小结一下: 2.奇偶树分析…...
![](https://i-blog.csdnimg.cn/direct/0f99cece136241a6834de9e2eaf81c6f.png)
GD - EmbeddedBuilder - 用DMA进行串口发送接收,支持接收不定长包
文章目录 GD - EmbeddedBuilder - 用DMA进行串口发送接收,支持接收不定长包概述笔记硬件连接图形化配置485EN的配置串口的图形化配置 代码实现main.cgd32f3x0_hal_it.cgd32f3x0_hal_init.cgd32f3x0_hal_init.hgd32f3x0_hal_it.hgd32f3x0_libopt.h 备注END GD - Embe…...
![](https://www.ngui.cc/images/no-images.jpg)
英语中apartment(公寓)(美式)、house(房子)、flat(公寓)(英式)、villa(别墅)、room(房间)区别
文章目录 英语中apartment、house、flat、villa、room区别 英语中apartment、house、flat、villa、room区别 在英语中,“apartment”、“house”、“flat”、“villa”、和 “room” 这些词语都与居住空间有关,但它们各自的含义和用途有所不同ÿ…...
![](https://i-blog.csdnimg.cn/direct/e979bc1e7c5944b6b5ec9eded2133b17.png)
黑马头条vue2.0项目实战(十一)——功能优化(组件缓存、响应拦截器、路由跳转与权限管理)
1. 组件缓存 1.1 介绍 先来看一个问题? 从首页切换到我的,再从我的回到首页,我们发现首页重新渲染原来的状态没有了。 首先,这是正常的状态,并非问题,路由在切换的时候会销毁切出去的页面组件ÿ…...
![](https://img-blog.csdnimg.cn/img_convert/0cf6e1d4e8b104b55cc1fefab17c61dc.png)
常熟市住房和城乡建设部网站/百度seo官方网站
首页 > 新闻列表 > 正文发布时间:2020-10-28 18:24:27 浏览: 24导读:普洱顶部排水板价格,屋面疏水板, 分享可测深式塑料排水板施工可测深塑料排水板畅销全国 “塑料排水板货真价实”所述的内容,是我们的小编精心为大家准备…...
![](/images/no-images.jpg)
格尔木市住建和城乡建设局网站/佛山百度seo点击软件
正在学前台,出现了vertical-align: middle 这个属性怎么都不起作用的情况,解决过程如下: 刚开始是这样: .table_yht{ text-align: center; vertical-align: middle; } 发现文字左右的确居中,但是上下不能居中ÿ…...
![](/images/no-images.jpg)
山西建设官方网站/用网站模板建站
【问题】安装adobe flash player,总是提示关闭IE【解决】新建一个文本文档,输入以下内容regsvr32 /u /s %windir%\system32\Flash9b.ocxregsvr32 /u /s %windir%\system32\Flash9f.ocxregsvr32 /u /s %windir%\system32\Macromed\Flash\Flash8a.ocxregsv…...
![](https://picture-bed-1255998923.cos.ap-chengdu.myqcloud.com/2019/07/04/WX20190704-214558@2x.png)
建设一个网站的工作方案/关键词优化平台有哪些
刚才安装notebook插件jupyter_contrib_nbextensions,搜了很多教程都没有作用。直到用了这个命令,一行解决。 pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install 打开打开 Jupyter Notebook,可以看到…...
![](http://images.cnitblog.com/blog/360778/201402/271056422044524.jpg)
吉林电商网站建设/百度推广费
按照http://blog.csdn.net/azkabannull/article/details/7872958中的方法,在cygwin中运行runbundler.sh; 按照http://oliver.zheng.blog.163.com/blog/static/1424115952011915113138431/中的方法,使用Bundle2PMVS.exe和prep_pmvs.sh&#x…...
点击立即进入正能量网站/百度seo什么意思
1、下载git的PC客户端软件,并安装 下载地址:http://git-scm.com/download/ ,安装路径可以任意,我选择在D盘目录 2、绑定用户并设置ssh-key 绑定用户的命令: git config --global user.name "设置用户名"g…...