- 博客(29)
- 收藏
- 关注
翻译 Linux 内核网络参数全解析(二)--TCP内核参数篇
/proc 接口概述 所有系统级的同产品参数设置都保存在 /proc/sys/net/ipv4/ 目录下. 另外家需要注意的是,很多对于 ip 的内核参数设置也会对 tcp 的行为产生影响.具体请参考linux 对于 ip 参数的帮助手册. 参数通常使用一个整形值来代表布尔型,设置为 0 时通常表示 "false",对应的一个非零值则表示 ("true").tcp_abc (Integer; default: 0; Linux 2.6.15 to Linux 3.8) ..
2020-08-11 20:08:38
2885
原创 服务端time_wait多问题解决方案汇总
问题描述 TCP会话中,首先发起关闭连接(调用 close() 系统调用)的一方在收到对端的 ACK\FIN+ACK 之后会进入到 TIME_WAIT 状态.服务器进入该该状态后,对于从相同的对端 ip 和端口的 tcp 发过来的数据包进行丢弃(Drop)处理.在 linux 系统中,该状态正常会持续1分钟的时间,该事件是硬编码的,不可以调整.问题一: 此时如果有大量的并发客户端通过一个 SNAT 设备向服务器发起连接,由于客户端的 IP 经过 SNAT 设备,其源 ...
2020-08-03 16:48:43
1039
原创 消息队列RPC下发配置,消息消费者接收到的消息乱序或丢失情况的思考
场景A ---> B ,发出了3条消息 m1,m2,m3。B先收到了m3,后收到m1,m2丢失。m1、m2、m3要求消费者修改同一处数据,可能造成数据错乱,破坏一致性。乱序:1、考虑选择重传,即对接口维持序号,每次确认处理消息时查询该消息是否有前面的序号没有收到,反向要求推送前面的消息。这种序号确认机制也可以防止重复消息和消息丢失问题,问题在于对于何处进行递增序列号的生成维护以及消费端如何识别;2、考虑接口幂等实现,此时不能解决乱序带来的配置覆盖问题;3、考虑动作和拉取实际配置消息
2020-07-17 22:40:23
683
原创 linux使用TC并借助ifb实现入向限速(内附配置实例)
ifb的原理概述 和tun一样,ifb也是一个虚拟网卡,和tun一样,ifb也是在数据包来自的地方和去往的地方做文章。对于tun而言,数据包在xmit中发往字符设备,而从字符设备写下来的数据包则在tun网卡上模拟一个rx操作,对于ifb而言,情况和这类似。 ifb驱动太简单,以至于很短的话就可以将其说清,然后上一幅全景图,最后留下一点如何使用它的技巧,本文就完了。 ifb驱动模拟一块虚拟网卡,它可以被看作是一个只有TC过滤功能的虚拟网卡,说它只有过滤功能,是因为...
2020-07-17 11:31:51
3512
原创 python 快速排序实现
上来就上代码ef quick_sort(lst, left, right): if left >= right: return lst elif right-left == 1: if lst[left] > lst[right]: lst[left], lst[right] = lst[right], lst[left] return lst else: i = left
2020-07-09 18:48:10
101
原创 python语言对冒泡排序\选择排序\插入排序的2种实现与性能粗略比较
插入排序的2种实现与比较:上代码# -*- coding:utf-8 -*-import randomimport timedef insert_sort(lst): start_time = time.time() swap_count = 0 count = 0 for i in range(1, len(lst), 1): j = i-1 # 每次和左侧元素比较,判断是否需要将基准元素左移,每次只交换一个位置,知道不需
2020-07-02 14:28:59
132
原创 python对list进行归并排序的简单实现
代码参上# -*- coding:utf-8 -*-def quick_sort(list_o): # 不可能发生的情况 if len(list_o) == 0 or list_o is None: print("enter len 0!!it's impossile!") return list([]) # 子列表长度为1 elif len(list_o) == 1: return list_o # 子列表
2020-07-01 16:14:50
331
原创 python中实现可继承的线程安全的单例模式
import threadingclass SingletonSample(object): _instanceLock = threading.Lock() _instance = {} def __new__(cls, *args, **kwargs): if cls not in cls._instance: print("get here 1") with cls._instanceLock...
2020-06-27 15:44:54
378
1
原创 双重检查 线程安全的python单例模式
import threadingfrom time import sleepclass SingletonSample(object): _instanceLock = threading.Lock() def __init__(self): sleep(1) @classmethod def get_instance(cls): if not hasattr(cls, "_instance"): pri.
2020-06-27 11:38:52
494
原创 简单工厂模式和工厂方法模式在Python中的实现
简单工厂模式class Book(object): def __init__(self,name, price): self.name = name self.price = price def read(self): print("Book name is {name}, Book's price is {price}".format(name=self.name,price=self.price))class JavaB
2020-06-22 23:40:22
262
原创 内部类+抽象方法+链式调用实现python的建造者模式
使用 内部类 与抽象继承的方式实现建造者模式,链式调用的方式代码简洁;子类继承实现实际的建造方法方便扩展.代码如下:# -*- coding:utf-8 -*-import abcimport randomclass Product(object): def __init__(self, product_id=random.random()): self.uuid = product_id self.factor = Non...
2020-06-19 14:53:22
174
原创 如何推进老项目的UT自动化的一点个人看法
坚持初心 一切措施要坚持与自己的最初目的相对照.推进UT自动化的目的是为了改进产品的代码质量,减少集成测试\系统测试的工作量,降低变更影响等,一切违背该意愿的举措应该被反对!正确认知指标,对UT各种覆盖率要有清醒的认识,不能掉入虚假的数字虚荣中. 坚持有实际意义的测试用例, 对于指标实际意义的取舍: 路径覆盖率>分支覆盖率>语句覆盖率(行覆盖率) 对于无意义的行覆盖增长,坚决说不!制定科学的考核方案和推进计划对于老项目的改造推进要认识到项目老代码规模和人力,制定...
2020-06-03 16:53:37
556
原创 使用Curl 访问 IPv6 的URL
正确命令curl -g -d -k -v --interface [本机ipv6地址] https://[目标ipv6地址]:端口号/123.html 重点:ipv6 的 url 中 使用 "[" 和 "]" 将 ipv6 的地址括起来; 使用 -g 选项,使 curl 使用正确的对 url 中的 "[" 和 "]" 字符的处理方式,必须携带该选项; 如果使用域名而非 ipv6地址访问,且 dns 解析出来的是 ipv6 地址时,同样需要使用这些选项; --interface 后面需要
2020-05-25 10:16:32
56008
4
原创 GIT常用命令总结
GIt各种版本回退命令1、git文件已修改但还没有提交到暂存区时,可以使用git checkout -- <file> 来放弃工作目录文件的修改注意:一旦放弃修改,文件会恢复到上一个暂存状态,即git add之后所做的所有修改都没有了;只有修改还没有git add提交到暂存区时可以使用git checkout -- <file> ;-- 很重要,如...
2020-01-09 09:24:11
270
原创 DOCKER容器 bridge网络模型下 实现组播通信的方法与全流程分析(多图)
Docker容器bridge网络模型下 实现组播通信思路:需要 DOCKER 主机担任组播路由器,担任 igmp 查询器和组播路由表维护以及组播数据跨广播域转发的工作.具体可以借助pimd工具实现.参考 https://mp.csdn.net/postedit/89639197各流程与案例分析与示意图docker主机内部容器虚拟网络拓扑示意图容器上报igmp报文的流程示意图...
2019-04-28 20:19:19
3320
原创 linux下启用组播转发的方法与一些常用状态检查命令
总所周知,Linux 服务器是可以作为一台路由器使用,不仅仅是可以转发单播数据包,同事也可以转发组播数据包.但是多数同学却不知道如何配置.本文将介绍将Linux配置成组播转发路由器的方法做一个分享.目录手工开启1.开启转发开关2.在需要开启组播转发的接口上打开组播转发开关.3.手工配置静态组播路由.4.配置iptables,放行组播转发报文使用pimd工具动态配...
2019-04-28 16:39:23
17703
6
原创 如何解决docker的tls(ssl)证书过期问题
问题现象:[root@localhost ~]# docker image pull xxx.com.cn/centos7Using default tag: latestError response from daemon: Get https://xxx.com.cn/v1/_ping: x509: certificate has expired or is not yet val...
2019-03-18 18:40:14
7574
1
原创 NOVA中的notification机制介绍与定制开发
个人blog:http://www.sskywatcher.com/blog由sskywatcher翻译,转载请注明出处目录概述不支持多版本的经典通知支持多版本的新型通知如何增加一个新的notification(规程与示例)模块nova.notifications.objects.base通知的负载中应该包含哪些内容?当前已存在的通知概述与 OpenSt...
2019-02-12 15:08:03
1277
原创 大批量服务器vlan互通监测工具
虚拟化云计算环境中,大批量物理服务器需要做到vlan二层互通,配置出错时有发生,如果快速检测,做到业务不熟前期确保vlan互通是个难题 思路:指定服务器ssh地址范围、用户名、密码,需要检测的vlan范围,需要监测的网卡名。本地维护终端登陆到各服务器上执行检测脚本。每台服务器指定网上构造带vlan的组播、广播报文发送,检测是否能接收到范围内其他主机发过来的检测报文,列出异常链路...
2019-02-11 20:51:16
468
原创 Neutron中Portbinding扩展模块详解
目录Extension以及Port binding简述Port binding 的属性Port binding 的属性在Neutron的mechanism driver中作用SimpleAgentMechanismDriverBaseSriovNicSwitchMechanismDriverLinuxbridgeMechanismDriverOpenvswitchMe...
2018-11-02 00:24:16
4527
翻译 Nova如何应用AMQP(RPC)详解--以RabbitMQ为例
我的博客:http://www.sskywatcher.com/blog/翻译自openstack官网文章,英文原文:https://docs.openstack.org/nova/latest/reference/rpc.html目录简述Nova RPC 导览Topic PublisherDirect ConsumerTopic ConsumerDirect Pu...
2018-10-24 00:16:48
669
原创 一篇文章搞懂python2.7的编解码
本文收录在我的博客:http://www.sskywatcher.com/blog/ 目录python中编码(encoding)是什么(what)为什么需要编码(why)python中什么时候发生默认编码(when)?实例化str类的对象隐式实例化str类的对象时会发生使用默认编码规则进行编码文件IO对象的读取(使用open()方法):修改默认编码规则的方法...
2018-10-12 00:08:49
344
翻译 PYTHON2.7 中文手册翻译:unicode HOWTO(未完成)
本HOWTO手册 讨论了Python 2.x’s 对Unicode的支持情况,并且解释了在liyongunicode工作室可能会遇到的一系列问题.对于 Python 3 version,请参考 <https://docs.python.org/3/howto/unicode.html>。Unicode简介字符编码的历史1968, the American Standard ...
2018-03-01 23:01:45
723
翻译 PYTHON2.7 中文手册翻译:Argparse从入门到精通
本文主要介绍python标准库中推荐的命令行解析模块argparse。本文主要针对 Python 3. 所以和python 2.x会有一些细节上的差异, 特别对于一些在python 3.x中得到改进的exception消息方面. 本文收录在我的博客,欢迎访问: http://www.sskywatcher.com/blog/ Note 还有两个类似功能的模块, 分别是get...
2018-03-01 22:38:18
835
转载 使用python实现SSH:paramiko模块使用
本文转载自 http://blog.csdn.net/songfreeman/article/details/50920767 本文收录在我的博客 http://www.sskywatcher.com/blog/ paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。1 基于用户名和密码的 sshc...
2018-02-26 15:37:31
274
原创 linux内核网络参数全解析(一)
本文收录在我的博客 http://www.sskywatcher.com/blog/archives/50Chapter 1. 如何设置参数linux内核的网络参数可以有俩个不同的方法设置. 第一个方法是通过现在大多数linux发行版默认安装的 sysctl 工具. 另一个方法就是利用 /proc文件系统,这个方法应该是自从有了/proc文件系统以来所有的linux内核都支持的. 使用sysct...
2018-02-24 23:03:25
5090
原创 linux如何创建和管理多个不同模式的bond的以及一些细节问题
本文收录在我的博客 http://www.sskywatcher.com/blog/archives/137 本文主要讨论一下linux下bonding驱动生成的bond网卡的一些生效的机制,并且描述了通过命令行和配置文件实现管理bond网卡的方法。尤其是需要使用多种不同模式的bond网卡时,只能使用该种配置方式!希望对大家在使用到linux的bond接口时起到一定的帮助。首先,明确一些关于...
2017-07-05 18:27:45
5052
原创 追踪openvswitch对特定数据报文的流表匹配与处理结果的实例
本文章收录在我的博客 : http://www.sskywatcher.com/blog/archives/129 SDN环境中,每一个openvswitch的datapath实例中都会有大量的流表项,无论是使用各种关键字的grep手段或者是其他方法来确认是否由控制器下发了预期正确流表项,还是看关于特定数据包的匹配与最终action都是一件非常繁琐和头疼的事情。使用ovs-appct...
2016-03-09 11:29:44
6687
1
翻译 ovs-appctl 用户手册中文翻译
该文章收录在在我的博客:http://www.sskywatcher.com/blog/运行时管理命令 ovs-appctl 能够向运行中的ovs-vswitchd进程发送命令。现已支持的命令描述如下。这些描述假设读者理解如何配置open vswitch。 通用命令exit 优雅关闭ovs-vswitchd进程 qos/show interface 查询内核中关于qos的配置以及和给出端口有关的...
2016-03-09 10:50:49
10732
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人