自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

变成习惯

记下知识,记录自己

原创 elfk收集k8s日志(三)

本文介绍通过elk + filebeat方式收集k8s日志,其中filebeat以sidecar方式部署。elfk最新版本:7.6.2 k8s日志收集方案 3种日志收集方案: 1. node上部署一个日志收集程序 Daemonset方式部署日志收集程序,对本节点 /var/log ...

2020-05-25 10:33:07 18 0

原创 elfk收集k8s日志(二)

本文介绍通过elk + filebeat方式收集k8s日志,其中filebeat以sidecar方式部署。elfk最新版本:7.6.2 k8s日志收集方案 3种日志收集方案: 1. node上部署一个日志收集程序 Daemonset方式部署日志收集程序,对本节点 /var/log ...

2020-05-20 20:12:55 55 0

原创 elfk收集k8s日志(一)

本文介绍通过elk + filebeat方式收集k8s日志,其中filebeat以logagent方式部署。elfk最新版本:7.6.2 k8s日志收集方案 3种日志收集方案: 1. node上部署一个日志收集程序 Daemonset方式部署日志收集程序,对本节点 /var/log...

2020-05-17 16:56:11 152 0

原创 mysql详解

mysql命令 mysql登录参数: -D, --database 指定数据库 --delimiter 指定分隔符 -h, --host 指定服务器地址 -p, --password 指定密码 -P,...

2020-02-29 19:07:16 72 0

原创 mycat部署

mycat介绍 mycat是阿里开源的一个分布式数据库中间层。 作用: 实现数据库的读写分离 支持读负载均衡、后端mysql高可用 数据库垂直拆分、水平拆分 应用场景: 需要读写分离 需要分库分表 多租户 数据统计系统 HBASE替代 同样方式查询多种数据库 关键特性:...

2020-02-25 18:37:11 277 0

原创 48. 在类中定义装饰器

要求: 实现一个能将函数调用信息记录到日志的装饰器: 把每次函数的调用时间、执行时间、调用次数写入日志; 可以对被装饰函数分组,调用信息记录到不同日志; 动态修改参数,比如日志格式; 动态打开关闭日志输出功能。 @call_info(arg1, arg2, arg3,...) def func...

2020-02-18 18:38:48 104 0

原创 47. 实现属性可修改的函数装饰器

在某项目中,程序运行效率较差,为分析程序内哪些函数执行时间开销较大,我们实现了一个带timeout参数的函数装饰器。装饰功能如下: @warn_timeout(1.5) def func(a,b): ... 要求: 统计被装饰函数单次调用运行时间; 时间大于参数timeout的,...

2020-02-18 18:37:57 53 0

原创 46. 定义带参数的装饰器

要求:实现一个装饰器,它用来检查被装饰函数的参数类型。装饰器可以通过参数指明函数参数的类型,调用时如果检测出类型不匹配则抛出异常。 @type_assert(str, int, int) def f(a, b, c): ... @type_assert(y=list) def g...

2020-02-14 19:50:02 51 0

原创 45. 为被装饰函数保存元数据

在函数对象中保存着一些函数的元数据,例如: __name__ 函数的名字 __doc__ 函数文档字符串 __module__ 函数所属模块名 __dict__ 属性字典 __default__ 默认参数元组 ... 在使用装饰器后,...

2020-02-14 19:49:11 43 0

原创 44. 使用函数装饰器

某些时候我们想问多个函数统一添加某种功能,比如计时统计、记录日志、缓存运算结果等等。我们不想在每个函数内添加完全相同的代码,如何更好的达成目的呢? 要求:不在每个函数内添加完全相同的代码的前提下实现功能。 解决方案: 定义装饰器函数,用它生成一个在原函数基础上添加了新功能的函数,替代原函数。 ...

2020-02-14 19:48:20 146 0

原创 43. 使用多进程

由于Python中全局解释器锁(GIL)的存在,在任意时刻只允许一个线程在解释器中运行,因此Python的多线程不适合处理CPU密集型的任务。 要求:想要处理CPU密集型的任务,可以使用多进程模型。 解决方案: 使用标准库中multiprocessing.Process类,它可以确定子进程执行任务...

2020-02-08 14:02:41 49 0

原创 42. 使用线程池

前面实现了一个多线程的web视频监控服务器,由于服务器资源有限(CPU,内存,带宽),需要对请求连接数(线程数)做限制,避免因资源耗尽而瘫痪。 要求:使用线程池,替代原来的每次请求创建线程。 解决方案: 使用标准库汇总concurrent.futures下的ThreadPoolExecutor类,...

2020-02-08 14:02:14 60 0

原创 41. 使用线程本地数据

例如,我们实现了一个web视频监控服务器,服务器端采集摄像头数据,客户端使用浏览器通过http请求接收数据。服务器使用推送的方式(multipart/x-mixed-replace)一直使用一个tcp连接向客户端传递数据。这种方式将持续占用一个线程,导致单线程服务器无法处理多客户端请求。 要求:改...

2020-02-04 10:38:40 48 0

原创 40. 在线程间进行事件通知

在之前通过使用多个DownloadThread线程进行下载(I/O)及使用一个ConvertThread线程进行转换(CPU),我们达到了多线程下载csv数据并转换为xml文件的目的。但现在有额外的要求: 实现一个打包线程TarThread,将转换出的xml文件压缩打包。例如转换线程每生产出5个x...

2020-02-04 10:37:01 56 0

原创 39. 线程间通信

前面我们已经通过多个线程下载csv数据并转换为xml文件。 在Python中由于全局解释器锁(GIL)的存在,多线程进行CPU密集型操作并不能提高执行效率,我们修改程序框架: 使用多个DownloadThread线程进行下载(I/O); 使用一个ConvertThread线程进行转换(CP...

2020-01-31 16:40:07 32 0

原创 38. 使用多线程

例如,我们通过 https://intrinio.com/tutorial/web_api 这个网址提供的api获取股市信息的csv数据,现在要下载大量csv数据文件,并将其转换为xml文件。 要求:使用多线程来提高下载并处理的效率。 解决方案: 使用标准库threading.Thread类创建多...

2020-01-31 16:37:47 50 0

原创 37. 通过实例方法名字的字符串调用方法

某项目中,代码使用了三个不同库中的图形类:Circle,Triangle,Rectangle,它们都有一个获取图形面积的接口(方法),但方法名字不同。 要求:实现一个统一的获取面积的函数,使用各种方法名进行尝试,调用相应类的接口。 解决方案: 使用内置函数getattr(),通过名字获取方法对...

2020-01-26 15:02:39 46 0

原创 36. 在环状数据结构中管理内存

在Python中,垃圾回收器通过引用计数来回收垃圾对象。但某些环状数据结果(树、图、双向链表等),存在对象间的循环引用,比如树的父节点引用子节点,子节点同时也引用父节点。如果同时del掉引用父子节点,两个对象不能被立即回收。 要求:解决此类的内存管理问题。 解决方案: 使用标准库weakref.r...

2020-01-26 15:01:41 61 0

原创 docker-compose部署es集群

通过docker-compose部署es集群。es最新版本:7.5.1 mkdir -p /home/elfk/elasticsearch/config mkdir /home/elfk/elasticsearch/{data1,data2,data3} cd /home/elfk echo...

2020-01-21 18:03:47 451 0

原创 docker stack部署elfk

通过docker stack部署elfk。elfk最新版本:7.5.1 swarm集群(一个节点): manager 192.168.30.128 mkdir -p /home/elfk/{elasticsearch,logstash,kibana,filebeat}/config m...

2020-01-18 17:51:09 184 0

原创 docker-compose部署elfk

通过docker-compose部署elfk。elfk最新版本:7.5.1 mkdir -p /home/elfk/{elasticsearch,logstash,kibana,filebeat}/config mkdir /home/elfk/elasticsearch/data /home/...

2020-01-15 18:12:14 155 0

原创 35. 使用描述符对实例属性做类型检查

例如,在某项目中,我们实现了一些类,并希望能像静态类型语言(C,C++,Java)那样对它们的实例属性做类型检查。 p = Person() p.name = 'Bob' #必须是str p.age = 18 #必须是int ...

2020-01-11 18:11:35 52 0

原创 34. 让类支持比较操作

有时我们希望自定义类的实例之间可以使用逻辑运算符进行比较,我们自定义比较的行为。例如,有一个矩形的类,比较两个矩形的实例时,比较的是它们的面积。 class Rectangle: def __init__(self, w, h): self.w = w se...

2020-01-11 18:10:14 59 0

原创 33. 创建可管理的对象属性

在面向对象编程中,我们把方法(函数)看作对象的接口。直接访问对象的属性可能是不安全的,或导致设计上不够灵活,但是使用调用方法在形式上不如访问属性简洁。例如: circle.get_radius() #调用方法 circle.set_radius(5.0) ...

2020-01-11 18:09:26 59 0

原创 32. 让对象支持上下文管理

例如,实现了一个telnet客户端的类TelnetClient,调用实例的connect()、login()、interact()方法启动客户端与服务器交互,交互完毕后调用cleanup()方法关闭已连接的socket,以及将操作历史记录写入文件并关闭。 要求:让TelnetClient的实例支持...

2020-01-07 18:30:23 40 0

原创 31. 为创建大量实例节省内存

例如,在某网络游戏中,定义了玩家类Player(id, name, level, ...)。每有一个在线玩家,在服务器程序内则有一个Player的实例,当在线人数很多时,将产生大量实例(如百万级)。 要求:降低大量实例的内存开销。 解决方案: 定义类的__slots__属性,声明实例有哪些属性(关...

2020-01-07 18:29:28 46 0

原创 30. 派生不可变类型

自定义一种新类型的元组,对于传入的可迭代对象,只保留其中int类型且值大于0的元素,例如: IntTuple([1, -1, 'abc', 6, ['x', 'y'], 3]) => (1, 6, 3) 要求:继承内置tuple类...

2020-01-07 18:28:29 29 0

原创 29. 读写excel文件

Excel是日常办公中使用最频繁的软件之一,其数据格式为xls、xlsx,是一种非常常用的电子表格。例如: 姓名 语文 数学 英语 李雷 95 99 96 韩梅 98 100 93 张峰 94 95 95...

2020-01-02 20:56:26 109 0

原创 28. 构建xml文档

有时,我们需要将其他格式数据转换为xml,例如把书籍信息csv文件转换成xml: books.csv: 书名, 作者, 出版社, 价格 精通scrapy网络爬虫, 刘硕, 清华大学出版社, 46.00 ... books.xml: <Data> <...

2020-01-02 20:55:20 34 0

原创 rsync+inotify实现实时同步

以gitlab备份数据为例,通过rsync + inotify实现数据的实时同步。 源服务器 192.168.1.6 目标服务器 192.168.1.253 目标服务器配置 安装软件: yum install -y rsync 配置rsync: vim /e...

2019-12-26 18:12:22 36 0

原创 10. Kubernetes的日志与监控

Kubernetes的日志处理 日志对比: 传统服务的日志: 固定机器、固定目录 不受重启影响 不用关注stdout、stderr k8s服务的日志: 节点不固定 重启服务会漂移 需要关注stdout...

2019-12-23 18:27:13 162 0

原创 27. 解析简单的xml文档

xml是极为常用的标记性语言,可以提供统一的方法来描述应用程序的结构化数据,例如demo.xml: <?xml version="1.0"?> <data> <country name="Liechtenstein"&g...

2019-12-21 13:35:59 34 0

原创 26. 读写json数据

在web应用中常用JSON(JavaScript Object Notation)格式传输数据,例如: 利用http://httpbin.org/API对发送的http请求进行观测。 爬虫程序利用Spalsh渲染引擎渲染页面。 要求:在Python中读取json数据。 解决方案: 标准...

2019-12-21 13:35:00 46 0

原创 25. 读写csv数据

例如,我们编写爬虫从豆瓣网爬取了一些书籍的信息,以csv数据格式存储: 书名, 作者, 出版社, 价格 精通scrapy网络爬虫, 刘硕, 清华大学出版社, 46.00 算法导论, Charles E.Leiserson, 人民邮电出版社, 85.00 Python灰帽子, Justin Seit...

2019-12-21 13:33:47 35 0

原创 24. 使用临时文件

例如,在某项目中,我们从传感器采集数据,每收集到1G数据后,做数据分析,最终只保存分析结果。这样很大的临时文件如果常驻内存,将消耗大量内存资源。 要求:使用临时文件存储这些临时数据(外部存储)。临时文件不用命名,且关闭后会自动被删除。 解决方案: 使用标准库中的TemporaryFile(临时文件...

2019-12-13 20:12:28 46 0

原创 23. 访问文件的状态

要求: 在某些项目中,我们需要获得文件状态,例如: 文件的类型(普通文件、目录、符号链接、设备文件…)。 文件的访问权限。 文件的最后的访问/修改/节点状态更改时间(即atime/mtime/ctime)。 普通文件的大小。 解决方案: 系统调用:标准库os模块中的系统调用...

2019-12-13 20:11:28 73 0

原创 22. 将文件映射到内存

要求: 在访问某些二进制文件时,希望能把文件映射到内存中,可以像数组一样实现随机访问(例如linux的framebuffer设备文件)。 某些嵌入式设备,寄存器被编址到内存地址空间,可以映射linux的/dev/mem某范围,去访问这些寄存器。 如果多个进程同时映射同一个文件,还能实现...

2019-12-13 20:09:40 102 0

原创 ansible-playbook部署K8S集群

通过ansible-playbook,以Kubeadm方式部署K8S高可用集群。 kubernetes安装目录: /etc/kubernetes/ KubeConfig: ~/.kube/config 主机说明: 系统 ip 角色 cpu 内存 hostname CentOS...

2019-12-08 17:29:14 514 0

原创 9. Ingress-Nginx与共享存储

首先,为了方便下面的实验,首先将第6节web-demo项目的src/main/java/com/mooc/demo/controller/DemoController.java文件中更改的k8s恢复为hello,重新构建镜像hub.lzxlinux.cn/kubernetes/web:latest...

2019-12-05 17:03:37 90 0

原创 8. Kubernetes的服务调度

健康检查 在Kubernetes中,系统和应用程序的健康检查是由Kubelet来完成的。 健康检查包含容器的livenessProbe(活性探针)和服务的readinessProbe(就绪探针)。livenessProbe确保应用进程正常运行;readinessProbe确保应用进程可以对外提供服...

2019-11-29 18:18:42 110 0

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