- 博客(111)
- 收藏
- 关注
原创 类和对象的继承
继承class 子类(父类)先定义父类子类cat继承base的方法,并且可以有自己的方法私有化私有化:父类当中以 双下划线开头的行为,子类都不可以继承,仅父类内部可用,父类对象和子类都不可用方法也可以私有化单下划线开头的,父类子类内部都可以用但实例对象不可用(不常用)当子类方法和父类方法重名时1.完全覆盖2.添加内容若要调用子类,给子类定义对象初始化的时候要在子类初始化的开始时先用super.init()初始化父类的参数然后初始化自己的参数动态设置
2021-04-15 17:49:07 219
原创 python的类和对象
类:同一类事务的抽象描述(属性,功能)对象:符合类的描述,是哪一类事物的具体存在为什么封装成类:把相关功能封装成类,不管哪个对象都可以调用1.定义类2.生成对象1.生成类class 类名(大驼峰)属性(变量等于值)方法(功能函数)2.生成对象对象名 = 类名()调用:对象名.属性/方法重要self,实例属性和实例方法在class内部方法的参数实例属性:self.属性名实例方法:参数第一个是self实例都是可以访问类属性,类方法的要通过对象调用类,否则会出错
2021-04-14 17:11:35 270
原创 python库的导入,异常处理,路径处理
内置库:不需要安装直接引入 Lib第三方库:先pip安装在使用 Lib\site-packages自定义模块模块:.py文件 包:init.py的文件夹引入方式import 模块from … import …从哪些目录去找包引入自己的包当包在相对路径下,直接引用就好要么就得from … import …from … import … as(别名,包名太长,调用不方便)导入包如果不用的话,就是灰色eg:异常处理和路径处理(os模块)项目路径和
2021-04-13 16:41:51 378
原创 python文件操作及模块引入
**利用open函数前面加r取消/的转义职能,当文件在同一文件夹下时候直接open()也可以用open()创建新文件但是如果目录不存在,就会报错(可以创建文件不能创建文件夹)**前三个用的比较多ctrl + B 查看模块源码文件读取read() 打开一次就只能读一次,默认从头开始readline()readlines()**默认从文件开始读取 **eg:read()全部读取,读取出来为字符串readline(),一句一句读readlines(),读取所有数据,结果为一个
2021-04-11 16:53:40 165
原创 函数的变量,及拆包
函数变量作用域局部变量只有函数内部可用,函数功能需要全局变量定义在函数外部,函数内部可以使用但不能修改如果想用全局变量,要在函数内部声明global全局变量函数传参拆包一般是对元组列表拆包常用于函数参数个数固定,且个数对应,且类型相同字典拆包常用内置函数...
2021-04-11 14:55:41 113
原创 python函数
函数def 函数名称():缩进的函数体def get_money(): print("hahahah")get_money()#调用函数定义时,()内放的是形参,定义几个用几个,否则报错,个数由需求来实现def get_money(cardNum,passwd,count): if len(cardNum)< 10: print("卡号出错") if len(passwd) != 6: print("长度出错") if int(count) % 100 != 0:
2021-04-10 16:16:42 151
原创 python流程控制 while,for
ifelseif 条件1:执行操作esle:执行操作 elifif 条件1:执行操作elif:执行操作elif:执行操作 elif:执行操作 else:执行操作程序debug小红点为断点,执行到这个地方会暂停
2021-04-07 15:52:13 125
原创 python的字典
元组与列表最大的区别就是,列表的值可以发生改变而元组的值不可变tuple =() 有序,以,分割my_tuple = (1,2,3)print()
2021-04-07 15:07:31 108
原创 python实现贪吃蛇
利用turtle函数画出一个正方形后面苹果,蛇都要调用这个生成这个函数要被下面的文件调用的gamebase.py 文件from turtle import *def square(x,y,size,color_name): #定义一个话方块的函数,有四个参数 up() goto(x,y) #拿起画笔到指定坐标 down() #落下 color(color_name) #调用color函数接收参数 begin_fill()
2021-04-04 19:18:31 1729
原创 python的列表与元组
列表一种数据类型(list),可以放任意数据类型,可重复,有序的,(增删改查),可变类型获取列表索引通过下标获取值print(name[1])通过值获取下标name.index(“小剑剑”)添加数据append默认追加在末尾列表.append(数据)插入数据insert位置,值列表.insert(0,“小猪猪”)合并列表列表.extend()将2追加到列表1修改列表[索引]=值删除数据list.remove(数据)del list[6]lis
2021-04-04 18:35:07 116
原创 python的字符串类型
字符串不可变类型空字符串s = "" print=(s)python字符串操作person_info='我是小简老师,我喜欢"python",我今天跟你们过节呢'取某一位置值print(person_info[6])print(person_info[-1])取区间值(切片)格式:字符串[起始索引:结束索引:步长]左闭右开,默认步长为1print(person_info[0:6]) #0,1,2,3,4,5, 步长1步长为负数笔试负向切片,倒着eg2:字符串反转:
2021-04-04 18:07:13 167
原创 ngx的http模块下的server指令块
servername.conf是include在nginx.conf中的此时primary主域名就开始生效此时访问second域名,返回的location也是主域名结果
2021-02-18 17:50:22 119
原创 ngx配置的冲突生效
http下面一些upstream等是http自己定义的一些配置块http{server{location{}}}http核心框架结构如图首先按照指示中请求的域名(host)找到对应的server,然后再根据url找到对应location,在具体的location下处理请求...
2021-02-18 16:06:56 159
原创 nginx热升级流程
回滚:老的master一直保存,kill -HUP oldmasterpid 进行回滚,后面可以进行nginx -s quit退出新的master即可 实际上是新的master进程是老的master的子进程,新的master通过新的bundary文件启起来,中间新老并存,老的关闭自己的worker进程及监听端口,新的启动自己的worker...
2021-01-09 17:51:57 136
原创 nginx进程管理及 nginx -s reload流程
nginx进程管理master进程通过监控worker进程有没有发送CHLD信号来监控worker进程,master可以接收一些信号来管理worker进程,比如TERM等,比如kill -USR2 pid kill -WINCH pidworker进程也会接受这些命令,一般直接对master做命令nginx命令行和kill效果是一样的,nginx的master pid在logs/pid.log中nginx -s reload流程1.worker先发送HUP信号表示自己活着2.检测配置文件语法
2021-01-09 17:30:51 1129
原创 nginx请求处理流程及nginx进程结构
nginx架构nginx请求处理流程nginx 如何处理这么多请求,要写error日志,要反向代理,要处理静态资源,怎么实现的1.流量从左到右进入,大概有三类流量,web,email和Tcp流量,进入nginx,nginx有三个状态机处理tcp,udp的传输层状态机,处理应用层的http状态机,处理邮件的mail状态机2.nginx采用非阻塞事件驱动处理引擎(epoll异步),需要状态机识别处理请求,解析出请求后比如需要访问静态资源,比如需要访问access日志,当内存不够时,aio会退化成阻塞的
2021-01-09 16:29:41 270
原创 ssl协议简单分析
ssl协议简单分析ssl协议处在http协议应用层之下的表示层,通过握手,交换秘钥,告警对称加密等方式,在应用层没有感知的情况下实现加密详细情况:密钥交换:为了解决服务器和浏览器间独立生成相同的秘钥,他们会用这个秘钥加密数据身份验证算法:在秘钥交换时需要一个身份验证算法对称加密算法:进行数据加密,解密需要用到的算法,AES表示是什么算法,有三种强调,我们选择128强度,GCM是分组模式,提高cpu多核模式下加密解密的性能SHA摘要算法:用来把不定长度的字符串,生成固定长度的摘要对称加密
2021-01-07 15:47:54 459 1
原创 2020-09-28
[root@server1 mnt]# cat access.log 172.25.62.250 - - [28/Sep/2020:01:07:05 +0800] "HEAD / HTTP/1.1" 200 0 "-" "curl/7.29.0"172.25.62.1 - - [28/Sep/2020:01:08:03 +0800] "HEAD / HTTP/1.1" 200 0 "-" "curl/7.29.0"172.25.62.1 - - [28/Sep/2020:06:20:38 +0800]
2020-09-27 22:44:05 294
原创 shell
for skill in Ada Coffe Action Java; doecho “I am good at ${skill}Script”done[root@server1 mnt]# vim haha.sh[root@server1 mnt]# chmod +x haha.sh[root@server1 mnt]# ./haha.shi am good at adascripti am good at coffescripti am good at Actionscripti am
2020-09-27 14:29:41 161
转载 prometheus原理2
prometheus的定义的metrics格式规范,缺省是在http(s)的url的/metrics输出。 而metrics要么程序定义输出(模块或者自定义开发),要么用官方的各种exporter(node-exporter,mysqld-exporter,memcached_exporter…)采集要监控的信息占用一个web端口然后输出成metrics格式的信息,prometheus server去收集各个target的metrics存储起来(tsdb)。 用户可以在prometheus的http页面上用
2020-08-28 16:17:47 384
转载 Prometheus原理以及架构详细介绍
Prometheus介绍Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。什么是TSDBTSDB(Time Series Database)时序列数据库,
2020-08-28 13:47:35 4837
转载 关于进程线程和死锁
进程和线程的关系死锁是什么:当线程A持有独占锁a,尝试去获取独占锁b,线程B拥有独占锁b,并尝试获取独占锁a,就会发生AB两个线程由于互相持有对方需要的锁,而发生的阻塞现象,我们称为死锁造成死锁必须达成的4个条件(原因):互斥条件:一个资源每次只能被一个线程使用。请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:线程已获得的资源,在未使用完之前,不能强行剥夺。循环等待条件:若干线程之间形成一种头尾相接的循环等待资源关系。互斥条件 —> 独占锁的特点之一。
2020-08-25 13:09:53 392
原创 关于k8s的隔离namespace与cgroup
容器技术中一个非常重要的概念,容器是一个单进程模型。 用户的应用进程就是容器里面PID=1的进程,其他后续创建的进程都是这个进程的子进程,意味着你没法运行两个不同的应用,除非找到一个公共的PID=1的程序来充当两个不同程序的父进程。关于两者关系namesapce主要是隔离作用,cgroups主要是资源限制,联合文件主要用于镜像分层存储和管理,runC是运行时,遵循了oci接口,一般来说基于libcontainer。网络主要是docker单机网络和多主机通信模式。namespace 是用来做资源隔离,
2020-08-24 20:50:16 2914
转载 k8s组件调用关系及其网络
看完本章能掌握的知识k8s基本架构图k8s重要组件的功能和原理k8s各个组件之间如何交互k8s网络模型k8s网络解决了docker网络的哪些局限性一. 架构图回顾apiServer:资源统一入口和管理etcd:资源存储controller-manager:状态控制scheduler:调度kubelet:容器生命周期管理二. 核心组件原理APIServer1.1 功能和作用整个系统的数据总线和数据中心,负责各模块通讯提供各类资源对象(pod,service等)的增、删、
2020-08-23 16:42:05 2522
原创 略略略
apiVersion: monitoring.coreos.com/v1kind: PrometheusRulemetadata:creationTimestamp: “2020-07-20T11:06:19Z”generation: 1labels:app: prometheus-operatorchart: prometheus-operator-8.13.2heritage: Tillerrelease: prometheusname: prometheus-prometheus-
2020-07-29 17:15:36 363
原创 周报
周一:学习go语言用法,观察代码调用规律,基本理解代码框架如collect包的实现为:首先要定义指标结构体,建立指标描述符然后初始化指标,定义接口,且将指标描述符传递到接口内部后面定义函数生成数据,调用go语言函数包,将要求的参数获取出来,进行强制类型转换定义接口函数实现抓取功能,并将值传递给channelprometheus可从channel采取数据周二:尝试优化代码,增加标签,修改代码参数增加内存标签增加磁盘调用标签增加cpu标签将每一个监控的类归属到一类标签内周三:增加IP
2020-07-28 18:28:52 137
原创 prometheus接收service的yaml文件,将收到的数据采集到prometheus上
我们需要告诉Prometheus从哪里抓取指标。Prometheus操作员可使用ServiceMonitorCRD 轻松管理此操作。为了告诉Prometheus从Ambassador的/metrics端点收集指标,我们将使用Ambassador的管理服务和端口ambassador-admin(8877)。将以下YAML复制到名为的文件中ambassador-monitor.yaml,并使用kubectl---apiVersion: monitoring.coreos.com/v1 #API版本,
2020-07-18 18:21:02 414
原创 go文件打包成镜像,到k8s发布
将写好的文件main.go,build成一个可执行文件go build main然后写一个dockerfile,将执行文件跑成个镜像vim DockerfileFROM golang:latestADD main /mntEXPOSE 9001docker build -t prometheus-expoler:v1 .docker tag core-harbor.linkedcare.cn/test/prometheus-expolerdocker login core-harbor.
2020-07-16 19:43:25 1097
原创 通过go语言编写prometheus的node-exporter,获取本机的cpu,内存,ip,等基本信息
collect函数这个是收集器的代码,用go带的扩展包,实现对本机基本数据的采集,然后通过定义指定的指标结构体,初始化指标结构体,将结构体的指标传递给channl,后面采集器按指标采集数据,最后那段代码就是用go收集到数据的过程package collectorimport ( "github.com/prometheus/client_golang/prometheus" "sync" "github.com/shirou/gopsutil/cpu" "github.com/shirou
2020-07-14 16:38:07 2659
原创 docker(2)docker常用命令
1.下载imagedocker pull image-name2.列出镜像列表docker images3.删除一个或者多个镜像docker rmi image-name5.显示一个镜像的历史docker history image-name6.导入镜像(以ubuntu镜像为模板)docker load -i ubuntu.tar7.创建容器(以ubuntu镜像为模板)docker run -it --name vm1 ubuntu8.查看容器状态,当前活跃的docker ps9
2020-05-18 22:07:17 125
原创 docker(1)docker基础知识
1.什么是dockerdocker是管理容器的引擎,是一种虚拟化技术,更简单的打包技术,更简单的部署服务2.docker和虚拟机的区别虚拟机:1.每台虚拟机都需要有自己的操作系统,2.虚拟机一旦被开启,预分配给它的资源将全部被占用。3.每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。docker:1.容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。2.容器包含应用和其所有的依赖包,但是与其他容器共享内核。3.容器在宿主机操作系统中,在用户空间以
2020-05-18 21:36:26 158
原创 mysql(7)基于MHA的mysql高可用
1.MHA是什么MHA(Master High Availability)是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明在M
2020-05-17 22:11:07 229
原创 mysql(6)基于GTID主从复制的读写分离
1.什么是读写分离使用mysql-proxy实现mysql的读写分离,mysql-proxy实际上是作为后端mysql主从服务器的代理,它直接接受客户端的请求,对SQL语句进行分析,判断出是读操作还是写操作,然后分发至对应的mysql服务器上。MySQL读写分离是指让master处理写操作,让slave处理读操作,非常适用于读操作量比较大的场景,可减轻master的压力。2.为什么要进行读写分离大型网站会触发大量的并发式访问,当负载均衡不能满足我们对压力分担的要求时,可以采用读写分离,大量的数据连接
2020-05-15 21:47:18 271
原创 mysql(5)mysql的组复制(全同步)
全同步复制(银行)指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。1.组复制(全同步复制)介绍:** 组复制分单主模式和多主模式,mysql 的复制技术仅解决了数据同步的问题,如果 master 宕机,意味着数据库管理员需要介入,应用系统可能需要修改数据库连接地址或者重启才能实现。(这里也可以使用数据库中间件产品来避免应用系统数据库连接的问题,例如 mycat 和 atlas 等产品)。组复制在数据库层
2020-05-14 21:57:06 764
原创 mysql(4)mysql基于GTID的半同步复制
1. 复制类型的概述异步模式:MySQL主从复制默认是异步的模式,异步模式主master不管slave是否同步到数据,不需要接受从从节点返回的完成信息,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。这种模式虽然效率高,但是准确性差全同步复制(银行)指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。半同步模式
2020-05-14 21:07:31 259
原创 mysql(3)基于GTID的主从复制(异步复制)
1.基于gtid的主从复制的基础知识1.在传统的复制里面,当发生故障,需要主从切换,需要找到binlog和pos点,然后将主节点指向新的主节点,相对来说比较麻烦,也容易出错。2.基于GTID则不用再找binlog和pos点,我们只需要知道主节点的ip,端口,以及账号密码就行。3.和基于position的主从复制的不同之处在于:它是以一整个事件为单位进行复制的,pos是局部的复制,所以(1)如果是基于position的主从复制:将一个事件拆开来复制,如果一个事件进行的过程中出现问题,那么复制也会出现问
2020-05-14 20:15:37 252
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人