自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

迷途小书童的博客

专注于技术积累,技术分享

  • 博客(26)
  • 收藏
  • 关注

原创 运维防背锅的办法之一:做好审计

运维:谁执行了rm -rf * !?

2024-07-21 13:30:29 268

原创 Python数据库开发之-sqlalchemy

ORMORM,对象关系映射。使用面向对象的方式来操作数据库。关系模型和Python对象之间的映射table -> class 表映射为类row -> object 行映射为实例column -> property 字段映射为(实例)属性举例:student表,字段为id int, name varchar, age int映射到Python为:class Student: id = ?某类型字段(使用一个类,来描述字段。因为字段可能很复杂) nam

2021-06-28 16:25:35 600

原创 Python数据库开发之-pymysql模块

数据库开发驱动MySQL基于TCP协议之上开发,但网络连接后,传输的数据必须遵循MySQL协议,封装好MySQL协议的包,就是驱动程序。MySQL的驱动MySQLdb最有名的库。对MySQL的C Client封装实现,支持Python2。已经不再更新和支持。MySQL官方Connectorpymysql语法兼容MySQLdb,使用Python写的库,支持python3pymysql使用安装:$ pip install pymysql创建数据库和表CREATE

2021-06-28 16:24:16 671

原创 基于PushProx实现Prometheus的分布式监控

背景​ 最近公司需要部署node_exporter到各ECS中收集节点级别的指标数据,并暴露给集中式的prometheus-server抓取。但由于不同项目的ECS处于不同的VPC中,存在网络隔离。因此,可使用PushProx这个项目来完成指标流量的代理。PushProx是一个客户端工具和代理,它允许Prometheus穿越NAT和其他类似的网络拓扑,同时仍然遵循Prometheus中的pull模型。项目地址: https://github.com/prometheus-community/Push

2021-06-22 11:36:02 2410

原创 kubernetes(5) Pod资源管理

Pod的基础概念k8s通过pod的方式去运行容器,pod是容器的外壳,为容器的抽象封装。一个pod内部可以存在一个或多个容器,这些容器将共享网络名称空间。pod在默认情况下,存在基础架构容器:pause。它创建出来后,一直处于暂停状态。它会为加入到pod内的主要容器,提供网络名称空间和存储卷的定义等功能。实际上,pod内的pid,mount,user等名称空间都可以共享。在pod内,也能多个容器共享其他名称空间。而mount名称空间很难实现,一般是pause做存储卷,其他容器共享挂在底层pause存

2020-08-22 16:51:47 619 1

原创 kubernetes(4) kubernetes资源清单

资源对象的配置格式API server接受和返回的所有JSON对象都遵循同一个模式,它们都具有“kind”和“apiVersion”字段,用于标识对象所属的资源类型、API群组及相关的版本大多数的对象或列表类型的资源还需要具有三个嵌套型的字段metadata、spec和statusmetadata字段为资源提供元数据信息,例如名称、隶属的名称空间和标签等;spec用于定义用户期望的状态,不同的资源类型,其状态的意义各有不同,例如Pod资源最为核心的功能在于运行容器;status则记录着

2020-08-19 22:14:00 142

原创 kubernetes(3) kubernetes架构与工作流程介绍

kubernetes 组件masterk8s的master,也称为控制平面,用于控制整个k8s集群的整体运作状态。控制平面的唯一入口为API Server,它监听6443,接入api server的唯一入口就是api server主机的6443端口,为https协议。Api server 默认情况下,需要做用户认证,而非客户端直接请求即可,而是需要双向认证:发送自己的证书给客户端验证,也要求客户端提供客户端证书,并且是api server自身信任的CA颁发的证书,才是api server认可的证书。

2020-08-17 17:48:28 596

原创 kubernetes(2) kubernetes基础概念

kubernetes的资源类型概述k8s是一个容器编排系统,它的编排对象为Pod。Pod本质上是k8s API支持众多抽象资源类型中的一种。而资源类型可实例化为一个对象。此处和对象式的编程语言可以作对比:对象式的编程语言,以数据为中心,代码服务于数据,其核心任务是通过定义class,以描述一类事物的属性和此类事物支持的方法。方法限制了一类事物之上的操作接口,而属性描述了事物的特征。而在kubernetes中,数据是对象,代码是方法。k8s的API是RESTful(表征状态转移) 风格的API。它的主要目

2020-08-17 15:04:46 151

原创 kubernetes(1) 微服务与kubernetes基础概念

Kubernetes与云原生kubernetes(k8s),是一个容器编排系统。它旨在实现一个新时代企业级的操作系统,即下一代的Linux。传统API与云原生API传统意义上,程序员开发程序面临的接口是操作系统的api,比如开发时会调用java接口,并直接部署在单一主机上运行java程序。由于不同操作系统之间的ABI(应用二进制接口,比如调用的库文件。在Linux上表现为.so,windows上表现为.ddl)的不一致,将导致应用程序的移植面临巨大困难。而当k8s诞生后,应用程序的运行将不会运行于单

2020-08-12 16:54:30 555

原创 Python网络编程之 异步编程

Python异步编程异步编程:请求后,并没有得到最终结果。而后续是否得到最终结果未可知。asyncio3.4版本加入到标准库。asyncio底层基于selectors实现, 看似库,实际上是框架,也就是一系列架子已经搭建完毕,定义好了流程。它包含异步IO、事件循环、协程、task等内容。要实现让函数交替运行,除了多线程的方式,还有什么方法?def a(x=3): for i in range(x): out = "a.x {}".format(i) yie

2020-08-07 16:08:40 543

原创 Docker学习之六:基于Dockerfile构建镜像

镜像制作一般镜像的制作,通常需要修改镜像的配置文件,比如nginx的配置文件,可以通过以下的方式:将配置文件做成存储卷,从宿主机编辑好之后,启动容器时应用程序加载配置文件的路径并和宿主机的目录建立关联关系。容器内也能修改好配置文件一般的docker exec CONTAINER,然后编辑配置文件,然后reload nginx通过自定义镜像镜像自定义,一般是需要针对不同的环境,定义符合...

2020-05-05 18:28:37 492

原创 Docker学习之五:Docker本地存储Volumes

Docker存储Docker运行容器时,一般是一个容器执行一个程序。对于容器的启动,依赖于不止一种镜像联合挂载并启动。能存储此类n层镜像构建联合挂载的文件系统包括aufs,overlayfs2,dm等等,并且最上层需要构建可写层。对于读写层,所有容器的操作都是保存在最上层的。对下层内容的操作比如删除最下层镜像本来已经存在的文件,则基于cow的方式实现。在到达最上层之前,如果将文件标记为删除,...

2020-05-05 10:52:17 2261

原创 Docker学习之四:容器虚拟化网络与docker网络

虚拟化网络的原理简述Linux内核支持六种名称空间,只要在用户空间有相应的客户端工具,都可以对对应的名称空间进行操作。假如物理机有四块网卡,可以创建两个名称空间,此时可灵活将网卡分配到单独的名称空间中。一般一个设备只能属于一个名称空间,如此每个名称空间都可以配置IP地址,并且和外部通信。假如名称空间数量超过物理网卡数量,而名称空间中的进程必须通过物理网卡对外通信,如何处理?可以使用虚拟网卡...

2020-05-04 18:03:41 635 3

原创 Docker学习之三:docker镜像管理

Docker镜像一个host可以启动多个容器,基于镜像可在容器中启动不同的应用。如果本地无此镜像,docker可自动连接到docker registry上下载镜像,存储到本地文件系统(如overlay2)中。由于镜像的格式是分层的,因此存储镜像的文件系统必须支持这种特殊的格式,也就是所谓的二层文件系统。Docker是码头工人的意思,而镜像可形象理解为应用程序的集装箱,码头工人docker负责装...

2020-05-04 10:56:36 430

原创 Docker学习之二:docker的基本使用

Docker架构docker中的容器:lxc -> libcontainer -> runCDocker目前有两个版本:docker EE:企业版docker CE:社区版Docker是C/S架构,通过https协议通信。daemon可以监听在套接字之上,默认只提供unix sock文件套接字,为了安全起见。它支持ipv4,ipv6,unix sock套接字三种用户接入...

2020-04-24 15:37:53 230

原创 Docker学习之一:容器概念和docker基础知识概述

容器容器是一种基础工具。它泛指任何可以用于容纳其他物品的工具,可以部分或完全封闭,被用于容器、储存和运输物品。物品可以被放置在容器中,而容器则可以保护内容物。容器技术LXC(Linux Container)从虚拟化到容器我们知道,主机级别的虚拟化,能虚拟出完整的物理硬件平台。分为两种类型:类型一的虚拟化如XenServer、Hpyer-V、VMware ESXi。在硬件上直接安装h...

2020-04-24 11:07:24 633

原创 浅谈Python中的装饰器

Python的装饰器,是Python函数(或者类)功能增强的一种方式。在了解装饰器之前,有必要先了解两个概念:闭包和柯里化。闭包Python的装饰器,实际上的闭包的应用。了解闭包是什么及其特性,请浏览这篇文章《理解Python闭包概念》。柯里化所谓的柯里化,先来看看它在维基百科上的解释:柯里化,英语:Currying,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)...

2020-04-14 17:56:06 222

转载 理解Python闭包概念

闭包并不只是一个python中的特有概念,在其他编程语言中也存在,比如Javascript。闭包在函数式编程语言中应用较为广泛。理解python中的闭包一方面是能够正确的使用闭包,另一方面可以好好体会和思考闭包的设计思想。概念介绍首先看一下维基上对闭包的解释:在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function clos...

2020-04-10 18:49:27 315

原创 浅谈Python中的描述器

描述器对于Python的描述器的作用,我们可以先记住一句话:描述器是描述类的属性的。描述器的魔术方法先思考下面程序的执行流程:class A: def __init__(self): self.a1 = 'a1' print('A.init')class B: x = A() # 定义(描述)类的属性 def __init__(...

2020-04-09 16:07:42 379

原创 Python世界里的魔术方法(二)

上下文管理__enter____exit__文件的IO操作可以对文件对象使用上下文管理,使用with…as语法。with open('test') as f: pass如果希望类也支持上下文管理,则需要定义两个函数。class A: def __init__(self): print('init') def __enter__...

2020-04-08 22:11:12 204

原创 浅谈Python中的反射

反射reflection,指运行时获取类型定义的信息。一个对象能够在运行时,如同照镜子一样,反射出其类型信息。简单而言,在Python中,能够通过一个对象,找出其type、class、attribute或者method的能力,称为反射或者自省。Python的反射能力,主要体现在对象属性上。有一个Point类,并提供了一个方法去查看实例属性。class Point: def __...

2020-04-08 19:02:26 1123

原创 Python排序算法之插入排序

实际上,我们在对扑克牌进行排序时就已经使用了插入排序算法。回想一下玩扑克牌时,是怎么进行排序的(这里是升序为例子)。1.拿到一副顺序杂乱的扑克牌(类比乱序的列表lst);2.以最左边的扑克牌为基准(列表中索引为0的元素),与之相邻的扑克牌与最左边的牌进行大小比较(列表中索引为0+1的元素);3.如果右边的牌更小,则它应该插入到左边牌的左边( lst[0]=lst[1] )4.如果右边的牌更...

2020-04-05 21:32:32 155

原创 Python世界里的魔术方法(一)

序言传说中,Python对象天生具有一些神奇的方法,它们具有一些魔力,因此它们总被双下划线所包围着。这些方法统称为魔术方法。在特定的操作下,这些魔术方法会被自动调用,并且表现出许多神奇的现象。它们是Python面向对象下智慧的结晶。作为Python使用者,了解它们是我们的职责,在某些情况下,我们甚至能改变它们的魔力。本文主要介绍下这些魔术方法中主要的部分,并且说明它们每个的使用场景和神奇之处...

2020-03-31 14:48:51 183

原创 Python文件IO基础,看这篇文章就够了!

一切皆文件Linux的设计哲学之一:一切皆文件。因此,设备也是文件,对设备的操作可以转换成对文件的I/O操作。冯诺依曼体系架构CPU由运算器和控制器组成,计算机的五大部件如下:运算器:完成各种算数运算、逻辑运算、数据传输等数据加工处理控制器:控制程序的执行存储器:用于记忆程序和数据,如内存输入设备:将数据或程序输入到计算机中,如键盘、鼠标输出设备:将数据或程序的处理结果展示...

2020-03-26 10:50:59 603

原创 一文说清Python可迭代对象,迭代器,生成器的关系

Python的初学者可能会对以下概念感到困惑:容器可迭代对象迭代器生成器生成器表达式这篇文章将有助于加深对上述概念的理解,并梳理它们之间的异同之处。容器容器是一种数据结构,它可收纳元素,并支持成员关系判断。它们是存储在内存中的数据结构,通常在内存中维持着元素。在Python中,它们包括:list , deque,…set , fronzensets,…dict , d...

2020-03-24 15:31:32 323

原创 Python虚拟环境安装与pyenv

Python环境安装PyenvPython虚拟环境:pyenvhttps://github.com/pyenv/pyenvpyenv是Python多版本管理工具,需要管理的部分:管理Python解释器管理Python版本管理Python的虚拟环境作用​ Pyenv是一个python虚拟环境的管理工具。它可以下载不同版本的Python,并设定Python解释器的版本...

2020-03-23 18:18:17 651

空空如也

空空如也

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

TA关注的人

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