- 博客(72)
- 收藏
- 关注
原创 python工作中遇到的坑
但是,第2次调用就不会再去计算默认参数,直接在[1]的基础上附加一个值。这是因为,在Python中,True相当于1、False相当于0,因此,在dict_a[True] = "mango"这行代码里,它把原来键值为1给替换了。按照我们常规的认识,这2次调用是分开的,第1次调用输出[1],第二次应该输出[2],为什么第2次调用时列表里竟然还保留着第1次调用时的值?你会发现,给dict_b添加了一个age:26键值对,dict_a也更新了,这样,我们留一个副本就没有任何意义了。字符串驻留就是这样一种情况。
2024-07-11 19:52:17 472
原创 【日常工作笔记】
u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。例如:替换/home下所有文件中的www.bcak.com.cn为bcak.com.cn。-c, --checksum 打开校验开关,强制对文件传输进行校验。-v, --verbose 详细模式输出。-t, --times 保持文件时间信息。-q, --quiet 精简输出模式。
2024-07-04 10:29:34 316
原创 python笔记
defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值,这个factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串。样例:判断key是否存在,如果不存在,则新建一个list并赋值给key,如果已经存在,则调用list的append方法,将值添加进去。any() #只要有一个True,则返回True,全False才返回False。
2024-01-03 17:29:43 687
原创 设置python下载包代理
正常网络情况下我们安装如果比较多的python包时,会选择使用pip install -r requirements.txt -i--trusted-host=pypi.douban.com这种国内的镜像来加快下载速度。但是,当这台被限制上网时(公司安全考虑)就不能连外网了,如果懒得一个个下载,又懒得找运维开网络权限时,可以选择设置代理来解决。
2023-11-30 17:34:29 870
原创 cut命令介绍
sed简介功能强大的流式文本编辑器补充说明sed 是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。sed的选项、命令、替换标记命令格式
2021-10-22 21:58:45 355
原创 docker设置镜像源和代理解决下载太慢问题
前言本文汇总开发者使用docker遇到头疼的网络问题。宿主机使用由docker镜像构建的命令行代理,可参考https://github.com/QiangZiBro/Qdotfiles,本文不讲解。假设宿主机命令行代理端口是8999,下面介绍几种使用场景。国内镜像源配置第1步,vim /etc/docker/daemon.json,将本文件写为:{ "registry-mirrors": ["http://hub-mirror.c.163.com"]}“ Docker中国区官方镜像
2021-07-28 15:50:41 2844 1
原创 通过URL自动触发Jenkins构建任务:
浏览器访问URL或者Linux终端 curl指令可以自动触发Jenkins job构建格式:JENKINS_URL/job/Test_Ivm/build?token=TOKEN_NAME例如:http://10.10.100.101:8088/job/Test/build?token=WLmwjxrQX_uivhxziTya①、TOKE_NAME 是gitlab仓库个人账号上的公共token,gitlab->user setting->api token。token用谁的,自动触发时就.
2021-07-14 21:08:04 895
原创 工作中git操作笔记
gitlab API:https://www.chenwenguan.com/how-to-use-gitlab-api/git pull和git fetch区别:https://www.cnblogs.com/ruiyang-/p/10764711.htmlfetch 详解:https://www.jianshu.com/p/a5c4d2f99807一般要用git fetch+git merge,因为git pull会将代码直接合并,造成冲突等无法知道,fetch代码下来要git diff orgin
2021-07-14 20:58:17 1035 1
原创 Mesos——Zookeeper+Mesos+Marathon搭建一个弹性高并发CICD集群
Mesos概述Apache Mesos 是一款基于多资源(内存、CPU、磁盘、端口等)调度的开源集群管理套件,能使容错和分布式系统更加容易使用。其采用了Master/Slave结构来简化设计,将Master做的尽可能轻量级,仅保存了各种计算框架(Framwork)和Mesos Slave的状态信息,这些状态很容易在Mesos出现故障时被重构,所以使用zookeeper解决master单点故障问题。Mesos工作原理Mesos Master充当全局资源调度器角色,采用某种策略算法将某个Save上的空闲
2021-06-20 22:57:45 522 2
原创 python的内置optparse模块-命令行参数处理
optparse是python非常常用的一个内建模块,用于处理命令参数.#!/usr/bin/python3# -*- coding: UTF-8-*-from optparse import OptionParserimport mytestparser = OptionParser()parser.add_option("-f", "--file", dest="filename", help="write report to FILE", metavar="FILE")
2021-05-27 20:17:20 188
原创 GIT--克隆MR(还没合入)目标分支代码+增量代码
应用场景:gitlab+Jenkins代码入库前自检个人分支合并到主干分支MR事件自动触发因为多个代码仓适配同一个Jenkins job,所以不用Jenkins 自身克隆代码插件将代码仓固定写死只有一个pipeline来适配多个业务代码仓,检测到任一代码仓有MR事件,自动触发自检,需要克隆该代码仓目标分支+增量代码下来以下代码就是在分支合并成功之前,将目标分支原先代码和要合入的增量代码一起克隆下来:git clone ${git_url}git checkout ${target_bran
2021-05-11 11:34:39 1051
原创 Kubernetes YAML学习,提升编写与调试
YAML 是一种非常简洁/强大/专门用来写配置文件的语言!YAML 全称是 ”YAML Ain’t a Markup Language” 的递归缩写,该语言的设计参考了 JSON / XML 和 SDL 等语言,强调以数据为中心,简洁易读,编写简单。1、YAML 语法特性学过编程的人理解起来应该非常容易1.1 语法特点大小写敏感通过缩进表示层级关系禁止使用tab缩进,只能使用空格键缩进的空格数目不重要,只要相同层级左对齐使用#表示注释# yaml languag
2021-04-27 21:56:25 230 1
原创 搭建公司内部的docker私有仓库
已经有了docker hub,为什么要搭建私有仓库docker hub为我们提供了很多官方镜像和个人上传的镜像,我们可以下载机构或个人上传上去的images,也可以上传我们本地images,然后我们需要的时候也可以随时下载。看起来docker hub中央仓库很方便,但也有不方便的地地方:1、我们在docker hub上push和pull images速度可能受影响,有时候可能docker主页都打不开2、我们在生产或测试环境使用的docker images可能存放着内部code,tools,不想被外部人
2021-04-25 20:35:51 1789 2
转载 一文秒懂,docker网络基础
本章主要内容分为两大块:docker基础网络介绍和docker的网络模式,本篇主要介绍docker基础网络,下一节文章介绍docker的网络模式1、Docker 基础网络介绍1.1 外部访问容器1.2 容器互联1.3 配置DNS2、Docker的网络模式2.1 Bridge 模式2.2 Host 模式2.3 None 模式2.4 Container 模式1、Docker 基础网络介绍1、1外部访问容器容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P或-p参数来指.
2021-04-23 21:59:32 114
原创 误删docker目录/var/lib/docker/overlay2,导致容器build失败
背景:服务器磁盘压力,删除了/var/lib/docker/overlay2 下的文件,导致重新启动容器失败关于overlay2存储详细说明可以参考https://www.lagou.com/lgeduarticle/70618.html解决办法: docker system prune -a # 我们看到什么东西都没有了重启dockersystemctl restart docker然后启动一个容器试试问题完美解决ps: 如果不重启docker 还是会报错ps:也可
2021-04-20 22:09:58 7977
原创 git stash 暂存未提交的改动,并切换到其他分支操作
前言版本控制是软件开发人员日常生活中不可分割的一部分。很难想象有哪个团队在开发软件时不使用版本控制工具。本文将介绍 git stash 命令,并探讨一些有用的暂存变更的选项。本文假定你对 Git 概念 有基本的了解,并对工作树、暂存区和相关命令有良好的理解。为什么 git stash 很重要?首先要明白为什么在 Git 中暂存变更很重要。假设 Git 没有暂存变更的命令。当你正在一个有两个分支(A 和 B)的仓库上工作时,这两个分支已经分叉了一段时间,并且有不同的头。当你正在处理 A 分支的一些文件
2021-04-20 22:00:02 6483
原创 docker——dockerfile的调优最佳实践
前言在容器领域,docker 公司提出的容器镜像已经成为目前容器打包交付的事实标准。构建镜像需要编写 Dockerfile,如何编写一个优雅的 Dockerfile 呢?在 Docker 公司的官方文档中给出了一篇Best practices for writing Dockerfiles。(https://g.126.fm/03ncYHS)本文在此基础上做了一些修改,力图让大家在工作中写出一份不错的 Dockerfile。本文分为三个部分,首先会直接给出一份 Dockerfile 的参考模板,然
2021-04-01 21:28:52 309
原创 涨知识——用 PyPy 让你的 Python 代码运行得更快
前言Python是开发人员中最常用的编程语言之一,但它有一定的局限性。例如,对于某些应用程序而言,它的运行速度可能比其它语言低100倍。这就是为什么当Python的运行速度成为用户瓶颈后,许多公司会用另一种语言重写他们的应用程序。但是有没有一种方法既可以保持Python的特性又能提高速度呢?它就是PyPy。本文内容包括以下:如何使用PyPy安装和运行代码PyPy与CPython在速度方面的比较PyPy的功能及其如何使Python代码更快地运行文中的示例使用 Python 3.6 ,因为它是.
2021-03-28 14:14:08 1958
原创 shell脚本中的字符串处理(长度,读取,替换,截取,分割)
前言在shell脚本中或者terminal指令中,经常会涉及到字符串相关操作。有很多命令语句,如:awk,sed都可以做字符串各种操作。 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快。获取长度、读取、替换的一系列指令${#string} $string的长度${string:position} 在$string中, 从位置$position开始提取子串${string:position:length} 在$strin
2021-03-27 14:57:50 8318 1
原创 Tomcat维护之更改端口
一、Tomcat更改端口8080是tomcat默认使用的端口号平时上网的网址,比如 http://12306.com/index.html 是没有端口号的如何让tomcat也做成这样呢?tomcat默认的端口号是8080,可以通过配置把端口号修改成80步骤 1 : server.xmltomcat的端口配置相关信息在 server.xml中server.xml 记录了非常多的tomcat配置信息,其中就包括端口用记事本打开 D:\tomcat\conf\server.xml查询 ctrl+
2021-03-24 21:01:28 403
原创 同样进到容器运行的命令docker exec和docker attach的区别
结论docker exec: 在已运行的容器中,执行命令,操作对象是容器,退出容器该让其不会停止,如果你要进入已运行的容器,并且执行命令,用execdocker attach: 同样操作的是已运行的容器,可以将本机标准输入(键盘输入)输到容器中,也可以将容器的输出显示在本机的屏幕上,退出容器则容器停止,如果你想查看容器运行过程中产生的标准输入输出,用attachdocker execdocker exec [options] CONTAINER COMMAND [ARG...]CONTAINER:
2021-03-23 21:15:48 1006
原创 Mesos——Jenkins-CI运行在Mesos集群上实现弹性高并发
为什么要把Jenkins 运行到Apache Mesos上?1、把Jenkins运行到Apache Mesos上,或者说利用Apache Mesos想Jenkins提供slave资源,最主要的目的时,利用Mesos的弹性资源分配来提高资源利用率。通过配置Jenkins-on-Mesos插件,Jenkins master可以在作业构建时根据实际需要动态的想Mesos申请slave节点,并在构建完成的一段时间后将节点归还给Mesos2、同时,Marathon会对发布到它之上的应用程序进行健康检查,从而在应用
2021-03-21 18:24:47 498
原创 Jenkins进行持续构建并发布应用到Kubernetes集群中
我们基于Jenkins的CI/CD流程如下所示。流程说明应用构建和发布流程说明。用户向Gitlab提交代码,代码中必须包含Dockerfile;将代码提交到远程仓库;用户在发布应用时需要填写git仓库地址和分支、服务类型、服务名称、资源数量、实例个数等,确定后触发Jenkins自动构建;Jenkins的CI流水线自动编译代码并打包成docker镜像推送到Harbor镜像仓库;Jenkins的CI流水线中包括了自定义脚本,根据我们已准备好的kubernetes的YAML模板,将其中的变量替换成
2021-03-21 18:04:36 164
原创 基于Apache Mesos集群搭建高并发高可用的Jenkins-CI架构
持续集成的价值首先讲一下持续集成的优势。过去公司做测试可能需要十几个、二十几个插件,集成一次往往需要一两个小时,费力费时,而且容器出错,且一旦配置出错的话调试排错会更久。因此,一次集成测试一周才会做一次,测试bug要到下一周才能更新,再做测试,这个周期会很漫长。而且持续集成的意义就在于减少风险,和重复的过程,最终提高工作效率。Jenkins是目前持续集成领域应用最为广泛的工具,通过Jenkins,项目可以进行自动化的静态检查、编译、打包、分发、和部署,通过持续不断的集成代码,减少项目风险和重复过程,提高
2021-03-07 22:36:38 527 2
原创 编写shell脚本的技巧
前言Shell 脚本编程 是你在 Linux 下学习或练习编程的最简单的方式。尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能。shell命令行大家通常比较熟知的,无论开发\运维\测试嗾使需要接触但在一些用到复杂shell脚本或者其他支撑工作中,如何提升运行效率,起到更加高效的辅助作用本文中,我们将分享 10 个写出高效可靠的 bash 脚本的实用技巧,它们包括:1、 对shell指令执行结果进行判断判断上一个shell语句是否执行成功i
2021-03-04 23:14:36 346 1
原创 涨知识——Python中比open更方便的读文件方法
前言使用 open 函数去读取文件,似乎是所有 Python 工程师的共识。今天要给大家推荐一个比 open 更好用、更优雅的读取文件方法 – 使用 fileinputfileinput是 Python 的内置模块,包括我在内,很多人对它都是陌生的。今天把 fileinput 的所有的用法、功能进行详细的展示,并列举了一些非常实用的案例,对于理解和使用它可以说完全没有问题。1. 从标准输入中读取当你的 Python 脚本没有传入任何参数时,fileinput 默认会以 stdin 作为输入源.
2021-03-04 21:29:12 413 2
原创 简单配置Mesos-master和Mesos-slave
Apache Mesos是一个集群管理器,可跨分布式应用程序或框架提供有效的资源隔离和共享它位于应用程序层和操作系统之间,可以更加轻松的在大规模环境中更有效的部署和管理应用程序,它可以再动态共享节点池上运行许多应用程序.Apache Mesos的特点是需要独立部署mesos-slave进程,依赖framework的功能,可以管理docker容器,但是成本相对较高,主要优势是稳定性有保障.Apache Mesos工作原理Apache Mesos采用了Master/Slave结构简化设计,将master
2021-03-03 21:16:39 1381 5
原创 Ansible批量下发文件、批量执行命令
什么上库AnsibleAnsible是2013年推出的一款IT自劢化和DevOps软件,目前由Redhat已签署Ansible收购协议。其是基亍Python研发,糅合了很多老运维工具的优点实现了批量操作系统配置,批量程序的部署,批量运行命令等功能ansible可以让我们实现:自劢化部署APP自劢化管理配置项自劢化的持续交付自劢化的(AWS)于服务管理为什么要选择ansible• ansible优点是仅需要ssh和Python即可使用无客户端ansible功能强大,模块丰富上手容
2021-02-27 17:46:16 6269
原创 python 异常处理
异常广义上的错误分为错误和异常错误指的是可以人为避免异常是指在语法逻辑正确的而前提下,出现的问题在python中,异常是一个类,可以处理和使用异常的分类BaseException 所有异常的基类Exception 常见错误的基类ArithmeticError 所有数值计算错误的基类Warning 警告的基类AssertError 断言语句(assert)失败AttributeError 尝试访问未知的对象属性DeprecattionWarning 关于被弃用的特征的警告EOF
2021-02-20 20:57:04 78
原创 涨知识——Python 的 f-string用法
毫无疑问,Python 是一门强类型语言。强类型语言。强类型语言!这就意味着,不同类型的对象通常需要先做显式地类型转化, 然后才能进行某些操作。下面以字符串和数字为例,看看强行操作会产生什么结果:>>> "Python猫" + 666Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: can only concatenate str (not.
2021-02-20 20:28:35 885
原创 GIT中reset, restore and revert指令的区别
在日常git工作流中,经常涉及到回退暂存区、回退工作区等撤销操作。有三个名称相似的命令:git reset,git restore和git revert。git-revert 是进行新的提交,以还原其他提交所做的更改。git-restore 使得在工作空间但是不在暂存区的文件撤销更改(内容恢复到没修改之前的状态)git restore --staged 是将暂存区的文件从暂存区撤出,但不会更改文件的内容git-reset是关于更新分支,移动顶端(tip)以便从分支中添加或删除提交。 此操作更改提
2021-02-19 20:49:48 5844 1
原创 涨知识——pyhton中__pycache__的产生与用途
__pycache__是什么__pycache__是出现在Python3.2版本之后的特性,专门存放python编译文件和源文件Python2.X版本是没有__pycache__文件夹的,编译文件和源文件存放同目录如果当前目录只有运行的脚本main一个文件,则不会生成__pycache__文件夹用python编写了一个工程,但在第一次运行后,发现工程根目录下生成了一个__pycache__文件夹,里面是和py文件同名的各种以.cpython-35.pyc结尾的文件。cpython-35各项意义,
2021-02-16 22:19:35 1901
原创 浏览器输入URL后经历了什么
前言网络是分层的常见的五层模型:物理层、链路层、网络层、传输层、应用层。OSI七层协议:物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。七层协议把五层协议的 应用层 细分为会话层、表示层、应用层。打开浏览器从输入网址到网页呈现在大家面前,背后到底发生了什么?经历怎么样的一个过程?先给大家来张总体流程图,具体步骤请看下文分解!从URL输入到页面展现,总体来说分为以下几个过程: (1)URL 解析 (2)DNS 解析:将域名解析成 IP 地址 (3)TCP
2021-02-09 18:40:57 413
原创 python多线程编程(线程安全和避免死锁)
1. 多线程编程与线程安全相关重要概念开始之前,我们熟悉了几个特别重要的概念:GIL,线程,进程, 线程安全,原子操作。GIL: Global Interpreter Lock,全局解释器锁。Cpython解释器上的一把互斥锁,不能利用多线程实现多核任务即并行,因为解释器的C语言实现部分在完全并行执行时不是线程安全的,GIL确保任何时候只能一个python线程执行为了解决多线程之间数据完整性和状态同步的问题,设计为在任意时刻只有一个线程在解释器中运行。线程: 程序执行的最小单位。进
2021-02-08 20:50:57 2199 1
转载 python线程锁和进程锁
在python的多线程和多进程中,当我们需要对多线程或多进程的共享资源或对象进行修改操作时,往往会出现因cpu随机调度而导致结果和我们预期不一致的问题,这时就需要对线程或者进程加锁,以保证一个线程或进程在对共享对象进行修改时,其他的线程或进程无法访问这个对象,直至获取锁的线程的操作执行完毕后释放锁。所以,锁在多线程和多进程中起到一个同步的作用,以保护每个线程和进程必要操作的完整执行。python中,多线程和多进程的异同点主要在两大处:由于GIL机制,多线程只能实现并发,但多进程可以实现并行;同一个进
2021-02-07 21:11:00 1466 3
原创 一文秒懂,python实现单例模式
一、什么是“单例模式”——一个实例单例模式(Singleton Pattern) 是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。
2021-02-07 21:03:34 2645 1
原创 Docker 多阶段构建镜像multi-stage
多阶段构建是一个新特性,需要 Docker 17.05 或更高版本的守护进程和客户端。对于那些努力优化 Dockerfiles 并使其易于阅读和维护的人来说,多阶段构建非常有用。在之前先来学习术语:multi-stage 多阶段build 构建image 镜像stage 阶段一、使用在多阶段构建之前构建镜像时最具挑战性的事情之一就是缩小镜像大小。Dockerfile 中的每一条指令都会在镜像中添加一个层,在进入下一层之前,您需要记住清除所有不需要的工件。要编写一个真正高效的 Dock.
2021-02-06 12:09:56 1362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人