- 博客(149)
- 资源 (25)
- 收藏
- 关注

原创 RabbitMQ消费将消息放回队列
一,背景问题:正式环境RabbitMQ开了三个线程消费消息,导致数据被重复创建,消费几乎是同一时刻消费的.解决:在Redis中加锁,判断锁是否存在,如果存在将消息重新放回队列之中.二,代码实现import datetimeimport jsonimport collectionsimport pikaclass Mq_custom(object): def __init__(self, queue_name='', exchange='', exchange.
2020-12-23 16:01:51
1707
2

原创 RabbitMQ 死信+延迟队列
前菜死信消息:消息被拒绝(Basic.Reject或Basic.Nack)并且设置 requeue 参数的值为 false 消息过期了 队列达到最大的长度过期消息: 在 rabbitmq 中存在2种方可设置消息的过期时间,第一种通过对队列进行设置,这种设置后,该队列中所有的消息都存在相同的过期时间,第二种通过对消息本身进行设置,那么每条消息的过期时间都不一样。如果同时使用这2种方法,那么以过期时间小的那个数值为准。当消息达到过期时间还没有被消费,那么那个消息就成为...
2020-08-19 20:19:43
348

转载 Leetcode算法题之二叉树模板
一、树的定义Definition for a binary tree node.class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right二、树的遍历1、前序遍历思路:从根节点开始,每次迭代弹出当前栈顶元素,并将其孩子节点压入栈中,先压右孩子再压左孩子.
2020-08-02 15:00:20
465
2

原创 Kafka集群生产者消费者使用实例(一)
名词解析:broker: 一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。topic: 主题 ,代表一类消息partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。每个partition都对应唯一的消费者!!!offset:每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中。partition中的每个消息都有一个连续的序列号叫做offset
2020-05-28 11:39:37
743

转载 Zookeeper+Kafka集群部署
主机规划:10.200.3.85 Kafka+ZooKeeper10.200.3.86 Kafka+ZooKeeper10.200.3.87 Kafka+ZooKeeper软件下载地址:#wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.6/apache-zooke...
2020-01-04 14:45:43
435
2
原创 Windows VMnet1和VMnet8的区别
VMnet8是用于 NAT 模式的虚拟网络适配器,它允许虚拟机访问外部网络,但外部网络不能直接访问虚拟机(除非配置了端口转发)。VMnet1是用于 Host-Only 模式的虚拟网络适配器,它创建了一个封闭的网络环境,仅限于主机和特定的虚拟机之间的通信,虚拟机无法直接访问外部网络。
2025-01-17 15:00:34
379
转载 Flask mock之request参数
在flask写单测,使用 app.app_context() 方法时提示:RuntimeError: Working outside of request context.
2024-07-14 09:18:26
71
1
原创 Python实现单分派泛型函数
我们为该函数提供了两个实现:一个默认实现和两个特定于整数和字符串类型的实现。当我们调用add函数时,它将根据参数的类型选择适当的实现。如果参数是整数或浮点数,则将调用默认实现;如果参数是字符串,则将调用特定于字符串类型的实现。在这个例子中,我们定义了一个名为add的函数,并使用@singledispatch装饰器将其转换为单分派泛型函数。
2023-07-06 15:26:30
202
转载 Python h5py包详解
h5py文件是存放两类对象的容器,数据集(dataset)和组(group),dataset类似数组类的数据集合,和numpy的数组差不多。group是像文件夹一样的容器,它好比python中的字典,有键(key)和值(value)。group中可以存放dataset或者其他的group。”键”就是组成员的名称,“值”就是组成员对象本身(组或者数据集)。总结:一个h5py文件是 “dataset” 和 “group” 二合一的容器。
2023-06-28 22:22:39
1550
原创 统计http请求最近5s内的请求成功率。
正常来说我们使用方案一即可满足我们的需求,同时内存消耗也比较小,但是有一点需要注意的是,方案一如果请求量特别小,随机值特别大的话可能导致请求的结果不准确。
2023-06-13 16:49:37
838
原创 Python责任链模式
例如,我们创建了三个不同的子类,分别是处理数字的处理程序、处理字符串的处理程序和处理其他类型的处理程序。当请求到达责任链时,数字处理程序首先会处理请求,如果不能处理,则将请求转移到字符串处理程序,依此类推。这是一个基本的处理程序类,它包括一个指向继任者的成员变量,并有一个处理请求的handle方法和一个子类可以实现的私有处理方法_handle。这是一个示例模拟责任链模式的基本实现,实际上,我们可以结合上下文和业务需求制定更复杂的责任链,以实现更灵活的请求处理。
2023-06-13 15:17:54
893
原创 Python适配器模式
SQLAlchemy ORM:SQLAlchemy 是一个流行的 Python ORM 库,它使用适配器模式来支持多种不同的 SQL 数据库(例如 PostgreSQL、MySQL 或 SQLite)。requests模块:requests 是一个用于发送 HTTP 请求的 Python 库,它使用适配器模式来兼容不同的底层传输库(例如 urllib3 或 PySocks)。通过使用适配器模式,我们可以使两个不兼容的类之间进行通信,并将它们融合在一起。现在需要编写一个使用千米而不是英里测量距离的应用程序。
2023-06-12 16:32:01
1059
原创 Python 策略模式
Shipping 类的构造函数接收一个计算运费的函数(即策略)。Django框架:Django 是一个 Python 的 Web 应用程序框架,它使用策略模式来提供不同的存储后端(例如 SQL 数据库,非关系型数据库等)。Scikit-learn模块:Scikit-learn 是一个流行的机器学习库,它使用策略模式来实现不同的机器学习算法(如分类,聚类,降维等)。Pygame模块:Pygame 是一个用于创建游戏的 Python 库,它使用策略模式来处理游戏中的不同角色或敌人的行为。
2023-06-12 15:49:11
2081
原创 Python原型模式(克隆模式)
我们使用字典(self.objects)来存储已注册的对象,每个对象都有一个名称。然后,它将关键字参数用于更新新对象的属性,并将其返回。在这个例子中,我们创建了一个名为Person的类,它表示一个人员。我们创建了一个原型对象Prototype,它注册了一个名为“person”的Person对象。然后我们使用clone方法来创建两个新的Person对象,它们都是根据原型Person对象创建的。在这个例子中,我们创建了一个原型类Prototype,它包含了注册对象、注销对象和克隆对象的方法。
2023-06-12 15:22:25
1027
原创 Python外观模式
使用外观模式,我们可以隐藏_Socket类的底层复杂性,并将其转化为一个简单易用的接口。在这个例子中,我们创建了一个名为Network的类,该类包含一个名为_Socket的内部类,该类实现了当前网络库的一些底层功能。然后,我们定义了几个方法,这些方法简单地调用_Socket类中的方法。使用该网络库时,我们可以使用外观Network类的接口,而不需要了解_Socket类的底层实现。下面是一个使用外观模式的例子,其中包含一个网络库,该库的实现非常复杂,但是我们可以使用外观模式来简化它。
2023-06-12 15:13:27
985
原创 Python模板模式
在这个例子中,我们定义了一个抽象类Game,并定义了三个抽象方法initialize、start_game和end_game。在这个例子中,我们创建了一个Chess对象和一个Checkers对象,并分别调用它们的play方法。通过这种方式,我们可以确保这些类的方法按照正确的顺序被调用,这遵循了模板方法模式的基本原则。注意,这里Game类也包含了一个名为play的方法,该方法包含一个模板方法,其中定义了initialize、start_game和end_game方法的执行顺序。
2023-06-12 14:52:06
1027
原创 Python建造者模式
建造者模式是一种设计模式。它将复杂对象的构建过程和表示相分离,并通过一步步创建对象来构建复杂对象。建造者模式可以帮助我们在创建对象时保持灵活性和可扩展性。
2023-06-12 14:49:49
808
原创 Python工厂方法和抽象工厂详解
工厂方法模式和抽象工厂模式在 Python 中也有类似的区别。Python中的工厂方法模式与其他语言中的实现方式类似,使用一个定义抽象方法的类来创建对象。我们通过编写一个特殊的方法来创建对象,这个方法是抽象的,由具体的子类来实现。抽象工厂模式则通过创建一组相关或相互依赖的对象来工作,而不是单一对象。在 Python中,使用抽象类和接口来创建对象系列,这些系列可以是继承自抽象类的类,或实现由接口定义的方法的类。这样可以更加灵活地创建,扩展和维护对象,并易于避免代码重复。
2023-06-12 14:15:17
524
原创 MQTT消息实例
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。这就是为什么在介绍里说它非常适合“在物联网领域,传感器与服务器的通信,信息的收集”,要知道嵌入式设备的运算能力和带宽都相对薄弱,使用这种协议来传递消息再适合不过了。(5)小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。
2023-05-29 17:45:01
1518
Elasticsearch、Logstash、Kibana核心套件安装包
2020-08-10
Kafka多分区消费实践.rar
2020-06-11
redis_cluster实战栗子.rar
2020-05-14
Django中自带的Signal的使用
2019-07-29
利用django自带的routers实现对url路由的分发
2019-07-13
Python必学资料全家桶
2019-06-28
Django restframework课件笔记详解
2019-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人