自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 使用OpenSSL工具验证证书

验证证书文件的原理是基于公钥加密技术。证书中包含公钥,私钥由证书所有者保留。当客户端与服务器建立安全连接时,服务器会将证书发送给客户端,客户端使用包含在证书中的公钥来验证服务器身份,并加密通信数据。如果证书有效且签名有效,则客户端可以相信服务器的身份,建立安全通信。:SSL 证书通常包含公钥、证书所有者的信息、证书颁发机构(Certificate Authority, CA)的签名以及证书的有效期等信息。以上命令将检查证书的签名链是否可以追溯到根证书,并给出验证结果。

2024-03-28 19:59:56 513

原创 requests中的iter_content()方法详解

在requests库中,iter_content()方法可以用来逐块读取网络上的数据。在每次迭代时,iter_content()方法会返回一个大小为128字节的数据块,然后将其写入到文件中。3. 在处理大文件或者网络流媒体数据时,需要注意及时关闭文件或者流,否则会导致资源浪费。1. 该方法只适用于响应内容是二进制数据的情况,如果响应内容是文本数据,则需要使用iter_lines()方法。2. 在使用iter_content()方法时,需要使用二进制模式打开文件,否则会导致数据损坏。

2024-03-11 20:04:46 396

原创 熔断,降级和限流

熔断,降级和限流的区别。

2024-02-17 19:31:15 428

原创 Connection refused问题定位

有可能是防火墙控制,导致不能连接。

2023-12-28 22:16:48 380

原创 python管道技术,subprocess模块详解

管道技术是一种将多个进程连接在一起的方法,其中一个进程的输出作为另一个进程的输入。这种技术可以用于许多不同的目的,例如将一个进程的输出传递给另一个进程进行处理,或者将多个进程连接在一起以形成一个复杂的数据处理管道。

2023-10-26 09:58:10 957

原创 postsql中连表更新数据

请注意,以上代码仅供参考,具体代码需要根据您的数据库架构和表结构进行调整。

2023-05-09 17:58:22 1944

原创 缓存中常见问题

缓存穿透是指在高并发访问下,缓存中没有但数据库中却存在的数据,导致大量的请求直接落到数据库上,增加了数据库的压力和访问延迟。这种问题一般是由于黑客攻击、爬虫等恶意访问或者输入错误的查询参数等原因引起的。通常情况下,我们会将查询的结果缓存在缓存中,以提高查询性能和降低数据库的压力。但是,如果某个请求查询的数据在缓存中不存在,同时也不在数据库中,那么这个查询请求就会直接落到数据库上,导致了数据库的压力和访问延迟。当大量这样的请求同时发生时,就会导致数据库的瞬间压力激增,严重影响系统的性能和稳定性。

2023-05-05 10:24:26 815

原创 什么是懒加载

懒加载(Lazy Loading)是一种延迟加载技术,指在需要使用某个对象或数据时才进行加载,而不是在系统启动或加载时就立即加载。模块加载:在使用模块时,可以采用懒加载技术,只有在需要使用模块时才进行加载,而不是在系统启动或加载时就立即加载所有模块,避免系统启动时间过长或内存消耗过大的问题。图片加载:在访问网页时,可以采用懒加载技术,只有当图片出现在浏览器可视范围内时才进行加载,避免一次性加载所有图片导致页面加载时间过长或带宽消耗过大的问题。延迟初始化:在需要使用某个数据时才进行初始化。

2023-05-05 09:48:33 5069

原创 【python设计模式】23、访问者模式

访问者模式是一种将算法与对象结构分离的设计模式。它的核心思想是将访问者对象封装算法,然后将它们作用于各个元素对象。访问者模式中的元素对象包括一个元素接口和多个元素类,每个元素类都实现了元素接口,且包含一个accept()方法,用于接受访问者对象。访问者对象包括一个访问者接口和多个访问者类,每个访问者类都实现了访问者接口,且包含多个visit()方法,用于访问不同的元素类。当需要为元素对象增加新的操作时,只需要定义一个新的访问者类并实现相应的visit()方法即可,而不需要改变元素对象或现有的访问者类。

2023-04-10 10:51:05 415

原创 【python设计模式】22、责任链模式

在责任链模式中,每个处理器(Handler)都可以处理一个请求,如果它不能处理这个请求,就把请求传递给下一个处理器,直到有一个处理器能够处理为止。每个对象都有处理请求的机会,如果它不能处理请求,就会将请求传递给下一个对象。因此,当一个请求到达 ConcreteHandler1 时,它会首先尝试由 ConcreteHandler1 来处理,如果不能处理,则会传递给 ConcreteHandler2,然后是 ConcreteHandler3,最后是 DefaultHandler。处理器链继续处理请求。

2023-04-10 10:22:24 598

原创 【python设计模式】21、状态模式

状态模式是一种行为型设计模式,它将一个对象的行为和状态进行分离,从而实现了对象在不同状态下具有不同的行为表现。这种模式的核心思想是将状态抽象成一个独立的类,并将状态的转换和判断逻辑封装在状态类中,从而使得状态的变化不会对对象的行为造成影响。在上面的代码中,State是一个状态类,OffState和OnState是具体的状态类,它们实现了State中定义的抽象方法。这种模式将对象的状态和行为分离,使得同一种行为在不同的状态下可以有不同的表现,从而达到更加灵活的设计和实现。

2023-04-10 09:40:12 178

原创 RPC API介绍与实现

它支持多种网络协议,包括TCP、Unix域套接字、ZeroMQ等,还提供了可扩展的安全模型,包括基于SSL/TLS的加密、基于密码的身份验证等。方法是jsonRPC客户端的实现,它构造了一个符合jsonRPC协议的HTTP请求,并将请求发送到jsonRPC服务端。总的来说,Odoo的jsonRPC实现比较简单,主要依赖于Python内置的JSON库和第三方的requests库来实现JSON编解码和HTTP通信功能。在实际应用中,可以将服务拆分成不同的微服务,使用RPC协议来实现微服务之间的通信。

2023-04-09 18:51:44 803

原创 Pyro4介绍以及用例实现

它支持多种网络协议,包括TCP、Unix域套接字、ZeroMQ等,还提供了可扩展的安全模型,包括基于SSL/TLS的加密、基于密码的身份验证等。总的来说,Pyro4是一个功能强大的分布式对象中间件,可以很方便地实现Python对象之间的远程调用,为Python分布式系统的构建提供了有力的支持。Pyro4是一个用于Python语言的分布式对象中间件,它可以让Python对象在分布式环境中进行远程调用,从而实现分布式系统的构建。需要注意的是,绑定到低于1024的端口号需要特殊权限,通常需要使用。

2023-04-09 17:52:41 1663

原创 RESTful接口介绍与实现

统一接口:RESTful的核心是资源和URI的概念,客户端通过HTTP请求访问资源,每个资源都有唯一的URI标识符。此外,RESTful还要求使用标准的HTTP方法(GET,POST,PUT,DELETE)来操作资源,以及使用标准的HTTP状态码来表示请求的结果。它是一个轻量级的网络通信协议,旨在为分布式系统提供简单,可扩展和高效的通信方式。总的来说,RESTful的哲学思想是以简单、可扩展、可重用、易于理解和可靠为原则,强调通过资源和URI的概念来构建分布式系统,同时使用标准的HTTP协议来实现通信。

2023-04-09 17:07:39 1464

原创 redis学习大纲

图片来源:

2023-04-09 16:40:23 62

原创 【python设计模式】20、解释器模式

该模式中,解释器通过将表达式转换为可以执行的对象来实现对表达式的解释和执行。解释器模式将问题的解决方案表示为语法树中的表达式。解释器也有类似的工作原理,但是它们执行的任务不是将代码编译成可执行文件,而是将某种特定语言的表达式转换为可执行的对象。下面是一个简单的例子,其中我们定义了一个简单的语言,该语言只包含两个命令:"add" 和 "subtract",并且只接受两个参数。总的来说,解释器模式是一种实现自定义语言解释器的有效方法,它可以提高代码的可维护性和可扩展性,同时还可以使程序更具可读性和可理解性。

2023-04-06 19:00:25 456

原创 【python设计模式】19、备忘录模式

例如,在一个游戏中,我们可以使用备忘录模式来保存玩家的状态,以便在需要时恢复它们,或者在玩家离线时自动保存状态。备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不破坏对象封装性的前提下,捕获对象的内部状态并在对象之外保存该状态,以便在需要时恢复对象的状态。总之,备忘录模式的哲学思想是,保存和恢复对象状态的能力对于软件设计来说非常重要,它可以帮助我们更好地管理对象的状态,并提高软件的可维护性和可靠性。订单状态的保存和恢复:在电商网站中,订单状态的保存和恢复可以使用备忘录模式来实现。

2023-04-06 14:37:36 773

原创 【python设计模式】18、仲裁者模式

这样做的好处是,如果需要增加更多的对象,只需要将它们的实例传递给中央仲裁者对象即可,而不需要修改对象之间的交互逻辑。在仲裁者模式中,一组对象将自己的引用传递给仲裁者对象,仲裁者对象负责处理这些对象之间的通信。交通信号灯系统:在城市中的交通信号灯系统中,交通信号灯扮演了一个中介者的角色,它协调了车辆和行人之间的交互,通过控制信号灯的颜色和时间来控制交通流量。可扩展性问题:如果系统中的对象之间的关系比较复杂,可能需要大量的仲裁者对象来协调它们之间的交互,这可能会导致系统的可扩展性问题。

2023-04-06 14:04:26 540

原创 odoo中使用redis实现缓存

需要注意的是,如果获取到的缓存值为None,则需要从数据库中获取数据并存入Redis中,以便下次获取时能够直接从缓存中获取数据。Odoo中使用Redis实现缓存可以提高系统性能,避免频繁的数据库查询。这段代码将从Redis中获取键为“my_cache_key”的值,并将其赋给变量cache_value。在Odoo中使用Redis需要安装Python Redis模块。以上就是利用Redis实现Odoo缓存的步骤。这段代码将一个键值对存入Redis中,并设置过期时间为3600秒。首先需要安装Redis数据库。

2023-04-06 13:45:29 830

原创 【python设计模式】17、观察者模式

另外,观察者模式还可以被解读为一种“相互作用”的方式。使用观察者模式,可以将股票价格作为被观察者,将分析系统作为观察者,当股票价格发生变化时,被观察者会自动通知观察者,观察者可以根据价格变化做出相应的决策。使用观察者模式,可以将事件作为被观察者,将游戏对象作为观察者,当事件发生时,被观察者会自动通知观察者,观察者可以根据事件做出相应的反应。观察者模式是一种常见的设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象发生改变时,所有的观察者都会收到通知并进行相应的处理。

2023-04-06 10:29:12 936

原创 【python设计模式】16、迭代器模式

简化了集合对象的接口:迭代器模式将集合对象的遍历算法封装在迭代器对象中,使得集合对象可以专注于自己的数据结构和操作,无需暴露遍历算法,从而简化了集合对象的接口。接口隔离原则:迭代器模式通过定义一个迭代器接口,将集合对象和迭代器对象分离开来,从而避免了集合对象对迭代器对象的依赖关系过强,提高了代码的灵活性和可维护性。集合对象的修改可能会导致迭代器失效:如果在迭代器遍历集合对象的过程中,集合对象发生了修改,可能会导致迭代器失效,需要重新获取迭代器对象才能继续遍历。

2023-04-06 08:46:37 601

原创 【python设计模式】15、命令模式

当需要执行一个命令时,调用者类会将命令类设置为当前的命令,然后调用命令的execute方法,实现命令的执行。接收者负责实际执行命令的操作。总之,命令模式的哲学思想是将请求封装成对象,从而增加系统的灵活性和可扩展性,实现请求的发起者和执行者之间的松耦合。命令模式是一种行为型设计模式,它的目的是将请求封装成对象,从而使请求的发起者和接收者之间解耦,使得不同的请求可以被存储、传递、调用、撤销、重做等。在命令模式中,每个命令都对应着一个命令对象,该对象封装了命令的具体实现逻辑,并且实现了执行、撤销等操作。

2023-04-04 17:31:10 240

原创 【python设计模式】14、模板模式

模板模式的核心思想是,将算法中不变的部分放到父类中实现,而将可变的部分留给子类去实现,从而使得不同的子类可以根据自己的需求来实现算法中的可变部分。此外,模板模式还能够降低算法的复杂度,提高代码的可维护性。需要一种通用的算法骨架,让不同的子类来实现具体的细节,例如在开发一个游戏时,游戏中的某些场景、角色等都具有相同的行为模式,但是具体实现可能会因为场景、角色的不同而变化。可能会限制子类的灵活性:由于模板模式的算法骨架已经在父类中实现,因此子类只能在父类定义的方法中进行具体的实现,这可能会限制子类的灵活性。

2023-04-04 17:20:27 543 1

原创 【python设计模式】13、策略模式

这种模式将不同的算法封装成独立的策略类,并使它们之间可以相互替换,从而使得算法的选择可以独立于使用它的客户端而变化。总之,策略模式的思想是在多元论和实用主义的基础上,通过将不同的算法实现封装成单独的类,实现动态选择算法的目的。使用策略模式可以将不同的加密算法封装成不同的策略类,用户可以根据需要选择不同的加密策略。如果需要在不同的应用场景中使用相同的算法,可以将这些算法封装成独立的策略类,并在不同的应用场景中复用这些策略类。通过将算法封装成独立的策略类,可以方便地实现不同的算法组合,从而满足不同的需求。

2023-04-04 15:00:02 928

原创 【python设计模式】12、享元模式

在软件设计中,这种思想可以转化为从具体的对象中提取共同的特征,并将这些特征作为共享的属性,以避免重复创建相似的对象。可共享的部分可以被多个对象共享,而不可共享的部分则需要每个对象都有自己的实例。可能会影响程序的可读性:由于享元模式需要将对象分为可共享和不可共享两部分,可能会影响程序的可读性。可能会影响程序的安全性:如果共享对象的状态可以被修改,可能会影响程序的安全性。需要注意的是,使用享元模式时要确保可共享部分是不可变的,否则会导致共享对象的状态被修改,从而破坏程序的正确性。

2023-04-04 14:39:12 509

原创 【python设计模式】11、外观模式

降低了耦合度:外观模式将客户端与子系统之间的耦合度降低了,因为客户端只需要与外观对象交互,而不需要直接与子系统交互,从而减少了对象之间的依赖关系,提高了代码的灵活性和可扩展性。增加系统复杂性:引入外观对象会增加系统的复杂性,因为外观对象需要了解子系统的实现细节,才能提供相应的简化接口,如果系统本身已经足够简单,引入外观模式反而会增加代码的复杂性。简化接口:外观模式隐藏了子系统的复杂性,提供了一个简单的接口,使得客户端不需要了解子系统的具体实现细节,从而降低了客户端的使用难度。

2023-04-04 14:12:59 140

原创 【python设计模式】10、组合模式

在这些领域中,整体和部分之间的关系也是递归的,每个部分都可以是整体,由更小的部分组成。增强代码可扩展性和可维护性:当需要添加新的节点类型时,只需要创建新的类实现相同的接口即可,而不需要修改现有的代码。可以透明地处理组合对象和单个对象:客户端代码可以像处理单个对象一样处理组合对象和单个对象,无需关心对象的具体类型,从而实现了透明性。需要注意的是,这只是一个简单的示例,实际应用中可能会有更多的对象和方法。可以提高代码的灵活性:由于组合模式中的对象都实现相同的接口,因此可以灵活地组合不同的对象实现不同的功能。

2023-04-04 13:54:50 1250

原创 【python设计模式】9、适配器模式

适配器模式的哲学思想是“尽可能地利用现有的资源”,即将现有的接口或类与其他不兼容的接口或类连接起来,使它们能够协同工作,以实现所需的功能。适配器模式的哲学思想与UNIX哲学中的“小即是美”原则有着相似之处,即在现有的系统或工具基础上,通过简单的组合或改进来解决问题,而不是重新发明轮子。在现实生活中,适配器也是一种常见的工具,例如插头适配器、翻译适配器等等,都是为了解决不兼容的问题而设计的。通过适配器模式,可以将现有的代码与新的组件或接口集成,而不必重写现有代码或更改现有的接口。

2023-04-04 12:38:57 724

原创 【python设计模式】8、桥接模式

通过将抽象部分和实现部分分离开来,桥接模式可以实现抽象部分和实现部分之间的松耦合,从而提高系统的灵活性和可扩展性。具体来说,桥接模式通过将一个类的抽象和它的实现分离,使它们可以独立地变化,从而降低它们之间的耦合性。可维护性:由于桥接模式将抽象部分和实现部分分离开来,因此对于每个部分的修改都不会对另一个部分产生影响,从而降低了代码的复杂性,提高了代码的可维护性。桥接模式:Shape 类充当抽象部分,DrawAPI 类充当实现部分,这两个类通过 Shape 的构造函数进行组合,以实现抽象和实现的分离。

2023-04-04 11:37:52 806

原创 【python设计模式】7、代理模式

代理主题在真实主题前面充当了一道屏障,代理主题可以控制访问真实主题的方式,并在访问前后进行一些额外的处理,如添加日志、缓存等。代理对象充当另一个对象的接口,客户端使用代理对象来访问原始对象,同时代理对象对访问进行了控制,可以限制对原始对象的访问、延迟访问原始对象、缓存访问结果等。智能代理可以提高系统的性能和用户体验。保护目标对象:代理模式能够通过代理对象来控制对被代理对象的访问,从而保护被代理对象不受非法访问和恶意修改。扩展性好:代理模式能够通过代理对象来扩展被代理对象的功能,而无需对被代理对象进行修改。

2023-04-04 10:49:10 716

原创 【python设计模式】6、装饰器模式

装饰器模式的实现通常涉及创建一个抽象的装饰器类和一个具体的装饰器类,这个具体的装饰器类可以添加额外的行为或修改对象的行为。装饰器模式的基本思想是:将一个对象“包装”在另一个对象中,从而实现增强原有对象的功能,而不改变原有对象的结构。装饰器模式常常应用于需要动态添加功能或修改对象行为的场景,例如在不改变现有代码的情况下为一个类添加新的功能,或在运行时添加日志、缓存等功能。日志记录:通过装饰器模式,可以在不改变原有代码的情况下,给函数或方法添加日志记录的功能,方便调试和排查问题。

2023-04-04 10:18:58 1132

原创 【python设计模式】5、原型模式

原型模式的使用场景通常是当对象的创建过程较为复杂或者需要复用现有对象的状态时,可以考虑使用原型模式来创建新的对象。这个已经存在的对象被称为原型对象,新的对象通过复制原型对象的属性和状态来创建。原型对象的创建过程可能比较复杂:由于原型对象需要包含所有要复制的属性和状态,因此原型对象的创建过程可能比较复杂,尤其是当属性和状态是深层嵌套的时候。减少对象的创建时间和消耗的资源:原型模式通过复制已有对象来创建新对象,避免了重复创建对象的过程,因此可以大幅度减少对象的创建时间和消耗的资源。在测试代码中,创建了一个。

2023-04-03 17:38:09 593

原创 【python设计模式】4、建造者模式

建造者模式的哲学思想是将复杂对象的创建过程分解成多个简单的步骤,并将这些步骤分别封装在一个独立的建造者类中。由于建造者模式将对象构造过程分解为多个步骤,所以如果要创建简单的对象,建造者模式会增加代码的复杂度,使得代码变得更加冗长和难以理解。总之,建造者模式的哲学思想是将复杂对象的创建过程分解成多个简单的步骤,并将其组合方式变得更加灵活,同时将对象的构建与其表示分离开来,以提高代码的可维护性和可扩展性。建造者模式的核心思想是将一个复杂对象的构造过程和它的表示分离开来,使得同样的构造过程可以创建不同的表示。

2023-04-03 17:13:57 1109

原创 【python设计模式】3、抽象工厂模式

例如,在创建一个复杂的产品时,需要保证其各个部分之间的兼容性,我们可以使用抽象工厂模式来创建这些部分,以确保它们之间的一致性。抽象工厂模式是工厂模式的扩展,它提供了一种创建一组相关或相互依赖对象的接口,而不需要指定它们具体的类。在抽象工厂模式中,抽象工厂类定义了一组用于创建一系列产品的抽象方法,具体工厂类实现了这些抽象方法,从而创建出具体的产品对象。抽象工厂模式的扩展性比较差,如果需要增加新的产品,需要修改抽象工厂类的接口,这会导致所有的具体工厂类都需要进行修改,从而影响系统的稳定性。

2023-04-03 16:51:50 1081

原创 【python设计模式】2、工厂模式

对象的创建需要根据不同的条件来选择不同的实现:如果需要根据不同的条件来选择不同的实现,可以使用工厂模式来封装对象的创建过程,从而使得客户端代码不需要关心对象的创建细节,只需要调用工厂类的方法即可。多个地方需要创建相同类型的对象:如果需要在多个地方创建相同类型的对象,可以使用工厂模式来封装对象的创建过程,从而避免代码的重复性,提高代码的可维护性和可扩展性。将对象的创建和使用分离:工厂模式可以将对象的创建和使用分离开来,客户端只需要知道需要什么对象,而不需要关心对象的创建过程,这样可以降低客户端代码的复杂度。

2023-04-03 16:03:38 1003

原创 【python设计模式】1、单例模式

单例模式的测试比较困难:由于单例模式只能创建一个实例,因此在测试的时候可能会比较困难,需要特别注意测试环境和测试用例的设计。单例模式不适用于动态扩展:由于单例模式只能创建一个实例,因此在需要动态扩展实例的情况下,会比较麻烦,可能需要修改代码。单例模式可能导致代码紧耦合:由于单例模式提供了全局访问点,可能导致代码之间的耦合度增加,降低了代码的灵活性和可扩展性。简化操作:单例模式可以提供一个全局的访问点,方便其他代码调用实例的方法和属性,避免了频繁传递对象实例的操作。网站计数器、生成全局唯一序列号等。

2023-04-03 15:00:30 1061 2

原创 python设计模式汇总

详情直接参考:设计模式23模式介绍

2023-04-03 14:17:36 58

原创 使用keepalived设计集群机器的虚拟ip

Keepalived是一种高可用性软件,可用于设置两个或多个节点,其中一个为主节点,另一个或多个为备用节点。备用节点在主节点失效时自动接管服务,确保服务的高可用性。可以通过在主节点上停止Keepalived服务或将其网络接口断开来模拟主节点故障,然后观察备用节点是否自动接管服务。确保所有节点具有相同的配置文件,包括虚拟路由器ID,认证密码和虚拟IP地址等。如果主节点失效,则备用节点将自动接管服务。,指定该节点为备用节点。设置为比备用节点更高的值,例如150。指定该节点为备用节点,

2023-03-31 13:53:07 473

原创 keepalived介绍与简单入门

Keepalived 是一款用于实现高可用性和负载均衡的开源软件,它运行在 Linux 系统上,可以将多个服务器节点组合成一个虚拟服务器,通过 IP 地址漂移技术实现故障转移和负载均衡。Keepalived 支持 VRRP(虚拟路由冗余协议)和 LVS(Linux 虚拟服务器)两种模式,可以根据实际需求选择使用。VRRP 模式可以实现在多个节点之间自动切换 VIP(虚拟 IP)地址,确保在某个节点故障时,其他节点可以接管服务并保证服务的连续性。而 LVS 模式则可以在多个节点之间分配流量,实现负载均衡。

2023-03-31 11:25:48 585

原创 开源的分布式文件系统GlusterFS(Gluster File System)

GlusterFS(全称为Gluster File System)是一个开源的分布式文件系统,它可以将多台服务器的存储空间合并成一个大的、可扩展的存储池,提供高可靠性和高性能的文件共享和存储服务水平扩展:可以将多台服务器的存储资源整合成一个逻辑存储池,实现存储的扩展和负载均衡,从而实现高可靠性和高性能的文件共享和存储服务。弹性存储:可以在不停机的情况下,对存储池的容量进行扩展或缩减,同时,可以动态地调整存储池中每个节点的贡献比例,从而灵活地应对不同的存储需求。

2023-03-31 10:51:34 551

批量拉取git项目代码

一个项目下面有多个子分组时,一个项目一个项目的克隆,此时就会很浪费时间,此脚本就是针对此问题开发的,主要用于批量拉取同一项目下多个子项目的仓库代码。

2023-04-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除