自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Cannot find a valid baseurl for repo: centos-ceph-nautilus/7/x86_64

14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"

2022-07-18 09:58:56 621 1

原创 华为交换机vlan配置

拓扑图:配置命令:sw1:syssys sw1vlan 10 vlan 20int e0/0/1port link-type accessport default vlan 10int e0/0/2port link-type accessport default vlan 20int e0/0/3port link-type trunkport trunk allow vlan 10 20sw2:sys sys sw2vlan batch 10 20int g0

2022-05-26 15:35:02 7095 1

原创 服务器网卡

网卡网卡又称为网络适配器或者NIC网络接口卡。网卡接口一般有两大类,电口和光口。电口就是常见的RJ45网线接口,光口就是带有光模块的光纤接口。在速率上,现在电口最常用的是千兆网卡或者万兆网卡,传输距离一般在几百米内,传输距离有限;光口的话现在一般是万兆以上用光模块进行传输,传输速率更高,传输距离能达到几十公里。光模块类型光模块的结构:一个光模块通常有两个孔为一对,一个接收一个发送。它是支持热拔插的,方便更换。按照协议来分的话,光模块有这些分类:现在万兆光口最常用的是sfp+类型的光模块。

2022-04-26 10:43:39 1805

原创 BitTorrent下载原理和演示

1.什么是BitTorrent?BitTorrent简称bt,产生于2001年,它有个很重要的点就是去中心化,所有终端连接者都是对等体。bt是基于tcp/ip的一种传输协议,不同于https或者ftp,它们都是从服务端下载文件,bt是从各个终端之间互相传输文件,充分利用带宽。2.什么是种子?种子一般是一种以.torrent结尾的文件,是以bencode编码的二进制文件。它包含了共享文件的信息,创建的时间,共享者信息,文件的校验码,Tracker主服务器的URL等。3.bt下载流程1.发布者根据要

2022-04-25 16:52:51 1016

原创 桌面云了解

一.概念桌面云就是桌面虚拟化技术,通过服务端来管理系统镜像。传统pc一般来说后期硬件不好调整,如果硬盘不够用了,需要有额外的插槽才能够扩容,并且还需要拆机等手工操作,一般人可能还不太会。桌面虚拟化可以实现动态调整主机配置,一般在web界面上就可以操作,类似阿里云上的功能,需要加磁盘,直接在前台下单就可以。桌面云一般包含服务端,终端。终端一般有瘦终端、胖终端、普通电脑、一体机等,桌面云实现分不同的架构,不同的架构对终端要求不同。VDI架构对终端要求低,VOI和IDV架构对终端要求要高点,这三种都会有服

2022-04-10 16:00:49 3082

原创 思科静态路由和浮动路由的配置

实验拓扑:route22配置:配置g0/0:Router(config)#int g0/0Router(config-if)#ip address 192.168.1.1 255.255.255.0Router(config-if)#no shutdownRouter(config-if)#exit配置g0/1:Router(config)#int g0/1Router(config-if)#ip address 10.10.1.1 255.255.255.0Router(confi

2022-03-18 16:51:06 4588 1

原创 服务器磁盘扩容

项目存储不够用了,增加一个16T的硬盘;parted工具;首先将磁盘插入到服务器中,然后使用fdisk -l检测是否有这块新的磁盘,检测到之后开始分区。1.获取磁盘设备名称:fdisk -l#Disk /dev/mapper/mpathfp2: 16000.8 GB, 16000764346368 bytes#可以看到我的是 /dev/mapper/mpathfp22.对 /dev/mapper/mpathfp2进行分区:[root@node100 ~]# parted /dev.

2022-02-17 10:00:01 5586

原创 给用户开发上报数据状态邮件

功能:1.发送上报状态,如果失败,发送未上报城市名称2.通过check.sh来调用和判断程序是否启动,未启动则启动程序。3.发送之后sleep函数推迟到第二天再次检测,每隔5分钟检测是否发布# -*- coding: UTF-8 -*-import osimport smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddrfrom email.header import Headerfr.

2022-02-16 17:23:09 1489

原创 sql server计算全省日均、年均

用到的知识点:1.按年、日分组convert函数2.按日期循环自动补录区间数据3.自动补录如果已经补录过再次运行不会重复补录分手动补录和自动补录sql语句:手动补录sql语句:use [GWAMDB]DECLARE @s_time datetimeDECLARE @e_time datetimedeclare @ii INT declare @jj INT declare @i datetimedeclare @j datetimedeclare @h datetim.

2022-02-15 17:00:58 1449

原创 邮件发图片附件

免费的邮箱smtp发送附件文件是有大小限制的,一般都是只能发送几十M,如果再大就要花钱开通大文件传送了。# -*- coding: UTF-8 -*-import osimport smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.utils import formataddrfrom time import sleep# from emai

2022-02-15 08:26:17 305

原创 项目gfs数据下载

因为项目上从公司下载数据的程序,我的老是会出现异常,重复下载或者下载进程堆积的情况。然后下载程序又有点老,pyhon和shell结合的方式,用的是python2写的,我看着非常繁琐。程序还是自己写的香,维护起来方便,耗时一下午,测试没啥问题。1.可自动接续下载2.下载完成后写入日志,完成后不会再下载3.写入和读取status状态文件,监控文件下载进程,完成后归0,方便第二天下载。4.可更改status文件自定义从第几个开始下载5.文件一致性检验,如果和公司数据md5值不一致,会重新下载。6.自

2022-02-12 22:19:53 1326 1

原创 Pod探针

1.总概括k8s怎样监控Pod内部容器的程序存活情况呢?就是通过探针机制。Pod探针有三类,分别是:livenessProbe(存活探针)、readinessProbe(就绪探针)、startupProbe(启动探针)。三种探针拥有共同的探测机制,分别是:TcpSocketAction(端口探测)、HttpGetActive(api探测)、ExecActive(命令行探测)2.Pod探针细讲livenessProbe: 一直检测pod内部容器的程序是否正常,如果返回状态为sucess就不做操作,如

2022-02-10 16:20:24 2152

原创 高可用加负载均衡的k8s搭建

1.环境说明此方法用于生产环境高可用工具:keepalived负载均衡:haproxy (或者nginx,lvs都行)docker和kubeadm、kubelet程序版本如图:虚拟机:2.主流程步骤系统环境配置—》内核升级为4.19以上—》docker安装-----》kubeadm安装-----》高可用组件keepalived安装 —》haproxy安装配置-----》kubeadm初始化----》添加master或者node节点3.详细步骤全部节点都需要操作,一直到初始化:步骤一

2022-01-20 20:10:12 1598

原创 kubelet报错Failed to read data from checkpoint“或者/var/lib/kubelet/config.yaml

这是在kubeadm 进行初始化的时候,我一直以为需要kubelet启动成功才能进行初始化,其实后来发现只有初始化后才能成功启动。出现这两个问题的原因完全是初始化配置的问题,ip地址一定要是你本机上的ip,哪怕是虚拟ip,你也让它先飘到该主机上。这只是提供思路,我自己弄了半天,弄过kubelet和docker的驱动,网上找过很多但都没有用,因为我有一台主机成功了,其他两台死活出现这个问题,就是我把配置文件同步弄过去的时候ip地址都要改成本机上的。还有什么timeout 40s啥的都遇到过,最终修改初始化配

2022-01-20 11:25:26 4698 1

原创 python生成ansible主机和别名文件

/etc/hosts文件内容格式,总共百来台:手动太费劲修改ansible的host文件,可以利用python获取主机ip和别名写入python代码:with open('hosts',encoding='utf-8') as f: while 1: try: a = next(f).strip() a_split = a.split() hostname = a_split[0]

2022-01-18 13:05:00 774

原创 iptables常用规则

1.服务器能ping其他主机,其他主机不能ping通它:iptables -I INPUT -p icmp -d 192.168.247.100 --icmp-type 8 -j REJECTping别人发出的icmp类型为8,INPUT是在流入的时候过滤,所以我们能ping通他人。2.除了192.168.247.100的22端口能访问,其他端口都禁止访问:iptables -I INPUT -d 192.168.247.100 -p tcp ! --dport 22 -j REJECT3.m

2022-01-17 20:58:25 2321

原创 类的依赖和组合

面对对象开发中,用类作为模板,生成多个实例化对象,每个对象之间都拥有独立的内存空间,封装类模板的属性和方法将其放入到对象空间中。对象其实就是一个内存地址,通过这个内存地址可以找到和调用其所有的属性和方法。这个内存地址是一个静态常量,所以可以被赋予变量,也可以当作参数传入函数中。依赖和组合也是依托这种原理。类和对象也在不同的内存空间中,所以对象的操作改变不了类中的任何属性和方法,只能够调用。依赖:一个对象被当作参数传入另一个对象的方法中,被另一个对象使用其属性或方法。就是需要被传入对象的帮助来完成自己的功

2022-01-14 16:47:21 324

原创 python datetime模块

datetime模块有5个类,常用的有四个:time,date,datetime,timedelta。从需求或者结合使用场景来记录下常用用法。场景一:从文件名中获取到一个时间字符串,某年某月某日某时,把这个时间字符串转换为datetime对象:s = '2022011222' #年月日时date = datetime.datetime.strptime(s,'%Y%m%d%H')print(date,type(date))#输出结果:2022-01-12 22:00:00 <class

2022-01-12 22:43:21 288

原创 python hashlib模块加密

hashlib模块就是python集合了各种加密算法的一个模块,比如md5加密,sha算法等。当然主要的作用就是给数据加密或者计算文件的md5值等。1.给一个字符串经过md5加密后输出到屏幕上:import hashlibf = hashlib.md5('222'.encode('utf-8'))f.update('123456'.encode('utf-8')) #字节数据加密print(f.hexdigest()) #输出一个十六进制md5值#输出结果是等长度的732f2bc0

2022-01-12 12:47:29 621

原创 json序列化

json模块作用json模块可以将字典、列表等序列化对象转换成特殊的字符串,也就是json数据,再将这种特殊的字符串转换回来。主要的使用场景比如网络传输,文件存储数据。如果用str()方法转换成普通的字符串,没有办法再转换回原来的数据类型。eval方法除外,不推荐使用。json数据还是各种编程语言通用的数据类型,python的json数据,java也可以获取使用,十分方便。json方法:json主要的方法比较简单,有四个,两两一对使用。json.dump()、json.load():只能用于文件数

2022-01-11 12:57:10 5309

原创 python装饰器之装饰器函数本身如何传参

装饰器涉及到被装饰函数和装饰函数它自己,被装饰器函数可以参数,那么怎么给装饰器它自己传参数呢。比如游戏中有打和闪现的功能,这时有个装饰器,能给他们都增加一个击退的效果。给装饰器本身的传参作用,在这里就比如,击退的距离,比如打的时候击退两米,闪现的时候击退三米。那么这个参入的参数就可以是这个击退距离。如果不传参的话就需要写两个击退装饰器了。写两个例子演示一下。演示一:下面代码演示下说明:def wrap(x): def inner(*args,**kwargs): result

2022-01-08 20:21:35 1934

原创 python装饰器

闭包装饰器的基础就是闭包。闭包首先是嵌套函数,并且内层函数对外层函数变量非全局变量有引用。def wrap(x): def inner(): print('start') print(x) print('end') return inner_inner = wrap(2)_inner()_inner得到了内层函数的内存地址,形参x就是外层函数的变量。闭包的一个特性就是外层函数结束了,内存函数依然可以被调用。装饰器装饰器从字面

2022-01-08 12:40:08 628

原创 python min函数的key用法

min传入key后可以更加全面以及符合自己需求的得到结果。举几个例子说明:例如1:将下面的列表按年龄数字排序返回元组list = [('lg',24),('wx',23),('aa',34)]首先min传入key的格式为:min(list,key=func)第一个参数是需要比较的数据,key后面只能传入函数名书写func函数里面的内容,func函数内容是自定义的:def func(x): #x是min传入的参数,这里是单个元组如('lg',24) return x[1]

2022-01-05 15:54:28 4572

原创 python基础知识回顾一

1.字符串的大小写:适用于用户输入的时候#1 字符串的大小写处理name = 'li gen'print(name.title()) #单词首字母大写print('--------')print(name.upper()) #全大写print(name.lower()) #全小写输出:Li Gen--------LI GENli gen2.字符串的拼接#字符串的合并name = 'ligen'age = '24'msg = name + ' is ' +

2022-01-03 12:28:14 535

原创 前后端python简单模拟api接口返回json,以及采集数据

1.先编写一个socket服务端模拟web前端,并发布json数据:import socketserver=socket.socket()ip_port=('127.0.0.1',8005)server.bind(ip_port)server.listen()while 1: conn,addr = server.accept() while 1: try: from_client_msg = conn.recv(1024).deco

2022-01-02 11:25:55 3064

原创 多线程socket通信

服务端:from threading import Threadimport socketdef communicate(conn,addr): while 1: try: from_client_msg = conn.recv(1024) print(f"来自客户端{addr[1]}的消息:{from_client_msg.decode('utf-8')}") to_client_msg = input

2021-12-31 13:22:04 339

原创 进程基于队列通信,生产者消费者模型

from multiprocessing import Queuefrom multiprocessing import Processimport osdef produce(name,q): for i in range(10): pid = os.getpid() msg = f'这是{name}做的{i}个包子' q.put(msg)def cursumer(name,q): try: for i in r

2021-12-29 16:00:17 217

原创 进程间基于文件系统通信

简单抢票模拟:开启多个进程对一个文件进行读写,错误版:import jsonimport osfrom multiprocessing import Processimport timeimport randomdef select(): time.sleep(random.randint(0, 2)) with open('w.txt',encoding='utf8') as f1: dic = json.load(f1) print(f"当

2021-12-29 14:26:45 292

原创 进程互斥锁

互斥锁的作用就是让多个子进程争抢一个资源的同时,有序进行而不会同时被系统资源调用执行。就好比多个人去打印店打印东西,一台打印机只能一个人一个人打,这样打印出来的东西就会是他的。当然串行的方式也能解决这个问题,但是谁先谁后,你没办法确定,你能决定程序执行的先后,却没办法决定系统资源调用的先后。互斥锁就是让多个进程争抢一把锁,有锁的先,等它完成后,再次争抢。from multiprocessing import Processfrom multiprocessing import Lockimport t

2021-12-28 16:17:12 1059

原创 多进程的引用

from multiprocessing import Processimport timedef task(*args): #多参数的调用 print(f"{args[0]} is running") time.sleep(3) print(f"{args[1]} is gone")def task2(*args): print(f"{args[0]} is running") time.sleep(3) print(f"{args[1]} is

2021-12-26 14:28:24 162

原创 input标签和form表单

input标签:用户名:<input type="text" name="username" readonly>密码:<input type="password" name="password"><input type="radio" name="sex" value="a" checked disabled>男<input type="radio" name="sex" value="b">女<input type="checkbox" na

2021-12-20 17:20:11 967

原创 table标签

<table border="1px" cellpadding="10px" cellspacing="20px"> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>爱好</th> </tr> </thead> &lt

2021-12-20 16:02:27 67

原创 pymysql操作以及简单sql注入模拟

pymysql是python连接mysql操作的一个模块,pymysql操作:import pymysqlconn = pymysql.connect( host='192.168.247.100', port=3306, user='root', password='123457', database='test', charset='utf8')# cursor = conn.cursor(pymysql.cursors.DictCursor)

2021-12-17 20:20:06 703

原创 记一次xfs文件系统损坏,磁盘修复问题

Input/out errormessage输出日志太乱了,这里不放图现象:重启一下好了,过一段时间后又出问题了。磁盘解决是在磁盘好的状态下处理的,如果不好的话没办法读取该磁盘,谈不上修复操作。附图:我的是磁盘/dev/mapper/mpathbp1 挂载到/public解决方法:首先要卸载磁盘,卸载磁盘的话需要先停止在该磁盘读写数据的进程。然后再进行磁盘修复,磁盘检查,无问题后重新挂载。1.停止所有进程,用lsof命令:lsof /public这里建议先看查看是哪些用户,再切换到该用户

2021-12-12 11:54:48 4303

原创 自制ca证书,nginx配置https访问

CA:证书颁发机构。有受信任的第三方颁发机构,也有个人的。但是自己充当颁发机构的话是不受浏览器信任的。CA证书:由CA机构颁发的证书,相当于盖公章。是由颁发机构的私钥给需要证书方的公钥加密生成。这里需要两个密钥对,一个颁发方,一个是请求证书方。颁发证书过程:1.请求方假定叫a事先生成密钥对,也可以是颁发机构假定叫b代为生成。有了密钥对之后,请求方a保管好私钥,将公钥给机构b,因为需要b给它的公钥加上数字认证,也就是生成证书。2.机构b对a的身份进行确认,自制的话不用,比如电话核实或者邮件核实是否是

2021-12-09 16:43:06 3239 1

原创 kubernetes pod间通信,跨namespace互访

这篇文章从原理和操作两部分讲解.原理kubernetes pod间通信,也就是pod里面的docker应用之间需要通信,首先就需要互相发现对方.kubernetes使用dns服务作为服务注册中心,kubernetes提供了一个内部的dns服务,集群里面的所有pod和容器都知道它的地址....

2021-12-08 14:14:17 8004

原创 k8s外部访问pod之service

service的好处:pod的地址是不可靠的,某个pod失效之后,它会被别的pod取代,新的pod拥有新的ip地址。service都拥有一个固定的cluster ip地址,固定的dns名称以及固定的端口。service还具有一定的负载均衡能力,将访问的流量分流到多个pod上。service也是通过提交yaml文件来部署最好,当然也可以通过提交命令式的操作来部署,但是并不推荐,因为不好维护。编写svc.yaml文件:apiVersion: v1kind: Servicemetadata: nam

2021-12-07 13:48:56 3184

原创 k8s利用deployment部署pod,以及应用更新和回滚操作

deployment部署pod,也是通过yaml文件的方式部署。deployment通过yaml文件定义需要deploy名称,需要几个pod协助运行,拉取的镜像版本等内容。一般来说一个deployment管理一个pod模板,比如前端和后端就需要分开管理。实际上deployment在底层是利用了replicaset的对象,replicaset直接管理pod。...

2021-12-03 13:50:45 4885

原创 postgresql用navicat新建年度库表

方法:导出原来的库表结构,导入到新的库中;将原来的一些必须的表数据导入到新的表中,最后查看IIS配置文件是否包含新的年度库表,如果没有就需要添加,有则不用。1.新建下新的数据库,举例2023年的库名称:v0140lbpatt2023:2.导出热点库的表结构:3.导出后,将导出文件hot.sql内容替换一下:4.保存后退出,将hot.sql导入到v0140lbpatt2023库中4.导出关键表数据5.导入数据依次把那三个表的数据都导入到对应的表中即可。.

2021-12-02 13:28:50 2710

原创 k8s部署pod

安装方式百度一大堆,多种多样,上网查找即可。pod是kubernetes的最小原子单位,pod里面可以有多个或者一个容器。如果一个容器是一条鲸鱼,那么一群鲸鱼在一起就是一个整体,叫做pod。k8s可以直接操作pod,但在实际工作中不会选择这种方式,而是以deployment的方式部署。deployment部署才能展现出k8s的威力,比如自愈和容器伸缩等功能。pod的定义和部署是通过yaml格式的文件来完成的,我们通过提交yaml文件给api server,k8s会检查这个yaml格式的配置文件,并写入到

2021-11-26 10:03:22 3919 1

空空如也

空空如也

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

TA关注的人

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