随笔分类 -  Python

摘要:Python 字典是通过哈希表实现的 哈希表必然存在哈希冲突。比如:就算两个键存在相同的哈希值,哈希表必须要有策略用来明确两个值插入和读取 Python 字典使用开放寻址法解决哈希冲突(下面展开讲)(源码:dictobject.c:296-297) Python 的哈希表仅仅是一块连续的内存(类似于 阅读全文
posted @ 2022-01-10 15:34 Tracydzf 阅读(379) 评论(0) 推荐(0) 编辑
摘要:这一篇文章里面,我们要使用的一个第三方库叫做kafka-python。大家可以使用pip或者pipenv安装它。下面两种安装方案,任选其一即可 python3 -m pip install kafka-python pipenv install kafka-python 如下图所示: 创建配置文件 阅读全文
posted @ 2021-12-20 17:58 Tracydzf 阅读(986) 评论(0) 推荐(0) 编辑
摘要:请谨记:使用 Kafka 很容易,但对 Kafka 集群进行搭建、维护与调优很麻烦。Kafka 集群需要有专人来维护,不要以为你能轻易胜任这个工作。 Kafka 是如何做到,对单个程序的多个进程而言,能持续消费,断点续传和并行消费;对多个程序而言又互不影响,各自独立。 一个 Kafka 可以有多个不 阅读全文
posted @ 2021-12-20 16:54 Tracydzf 阅读(238) 评论(0) 推荐(0) 编辑
摘要:redis协议规范 RESP(Redis Serialization Protocol)是Redis客户端和服务端的通讯协议。数据示例如下: +OK\r\n -Error message\r\n :1000\r\n $6\r\nfoobar\r\n *2\r\n$3\r\nfoo\r\n$3\r\n 阅读全文
posted @ 2021-12-14 17:44 Tracydzf 阅读(68) 评论(0) 推荐(0) 编辑
摘要:元类背景 我们先看 Python 下实现单例模式的一种写法: class Singleton(type): def __init__(cls, *args, **kwargs): cls._instance = None super().__init__(*args, **kwargs) def _ 阅读全文
posted @ 2021-12-14 13:47 Tracydzf 阅读(197) 评论(0) 推荐(0) 编辑
摘要:kafka它们属于消息队列;celery它们属于任务队列。 消息队列和任务队列,最大的不同之处就在于理念的不同 -- 消息队列传递的是“消息”,任务队列传递的是“任务”。 我们可以放到具体的应用场景上: 消息队列用来快速消费队列中的消息。比如日志处理场景,我们需要把不同服务器上的日志合并到一起,这时 阅读全文
posted @ 2021-06-30 13:44 Tracydzf 阅读(2325) 评论(0) 推荐(0) 编辑
摘要:Python协程及asyncio基础知识 协程(coroutine)也叫微线程,是实现多任务的另一种方式,是比线程更小的执行单元,一般运行在单进程和单线程上。因为它自带CPU的上下文,它可以通过简单的事件循环切换任务,比进程和线程的切换效率更高,这是因为进程和线程的切换由操作系统进行。 asynci 阅读全文
posted @ 2021-06-18 17:28 Tracydzf 阅读(197) 评论(0) 推荐(0) 编辑
摘要:Python的多进程编程与multiprocess模块 python的多进程编程主要依靠multiprocess模块。我们先对比两段代码,看看多进程编程的优势。我们模拟了一个非常耗时的任务,计算8的20次方,为了使这个任务显得更耗时,我们还让它sleep 2秒。第一段代码是单进程计算(代码如下所示) 阅读全文
posted @ 2021-01-08 16:03 Tracydzf 阅读(118) 评论(0) 推荐(0) 编辑
摘要:11. 简单说说看 Django的CSRF防御机制 Django的CSRF保护主要是通过django.middleware.csrf.CsrfViewMiddleware中间件来实现的。主要流程如下: Django 第一次响应来自某个客户端的get请求时,会在服务器端随机生成一个 csrftoken 阅读全文
posted @ 2021-01-06 15:28 Tracydzf 阅读(265) 评论(0) 推荐(0) 编辑
摘要:Q1。Python中的列表和元组有什么区别? 列表与TUPLES LIST TUPLES 列表是可变的,即可以编辑它们。 元组是不可变的(元组是无法编辑的列表)。 列表比元组慢。 元组比列表更快。 语法:list_1 = [10,'Chelsea',20] 语法:tup_1 =(10,'Chelse 阅读全文
posted @ 2020-12-31 09:45 Tracydzf 阅读(210) 评论(0) 推荐(0) 编辑
摘要:下面代码会输出什么: def f(x,l=[]): for i in range(x): l.append(i*i) print l f(2) f(3,[3,2,1]) f(3) 答案: [0, 1] [3, 2, 1, 0, 1, 4] [0, 1, 0, 1, 4] 第一个函数调用十分明显,fo 阅读全文
posted @ 2020-12-28 15:21 Tracydzf 阅读(437) 评论(0) 推荐(0) 编辑
摘要:在运行的时候,有时候会报编码错误,本文就来研究一下这个问题。 为什么会出现乱码呢?因为在文件存的时候格式和读取时候格式不一致就会乱码了。 字符串在python内部的表示是unicode编码,也可以说现在的内存是unicode编码格式,硬盘是utf-8。平常的数据操作都是先把数据读取到内存中,所以内存 阅读全文
posted @ 2020-12-26 17:14 Tracydzf 阅读(202) 评论(0) 推荐(0) 编辑
摘要:这个问题好像和长时间连接数据库但不打开网页时,报错lost connection是一个原因 问题: 写了一个基于apscheduler的定时任务,里面的任务使用了sqlalchemy,大致如下: scheduler.py # ... # 此处省略 import # 示例任务1 def example 阅读全文
posted @ 2020-12-21 10:19 Tracydzf 阅读(1789) 评论(0) 推荐(0) 编辑
摘要:在 Python 开发中,yield 关键字的使用其实较为频繁,例如大集合的生成,简化代码结构、协程与并发都会用到它。 但是,你是否真正了解 yield 的运行过程呢? 这篇文章,我们就来看一下 yield 的运行流程,以及在开发中哪些场景适合使用 yield。 生成器 如果在一个方法内,包含了 y 阅读全文
posted @ 2020-12-11 15:31 Tracydzf 阅读(153) 评论(0) 推荐(0) 编辑
摘要:操作系统到底在干啥? 如果由笔者来概括,操作系统大概做了两件事情,计算与IO,任何具体数学计算或者逻辑判断,或者业务逻辑都是计算,而网络交互,磁盘交互,人机之间的交互都是IO。 高并发的瓶颈在哪? 大多数时候在IO上面。注意,这里说得是大多数,不是说绝对。 因为大多数时候业务本质上都是从数据库或者其 阅读全文
posted @ 2020-12-04 16:03 Tracydzf 阅读(704) 评论(0) 推荐(0) 编辑
摘要:01. 变量交换 Bad tmp = a a = b b = tmp Pythonic a,b = b,a 02. 列表推导 Bad my_list = [] for i in range(10): my_list.append(i*2) Pythonic my_list = [i*2 for i 阅读全文
posted @ 2020-11-15 11:43 Tracydzf 阅读(98) 评论(0) 推荐(0) 编辑
摘要:1、WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求。Web框架和Web服务器之间的通信,需要一套双方都遵守的接口协议。WSGI协议就是用来统一这两者的接口的。 2、WSGI容器 常用的WSGI容器有Gunicorn和uWSGI,但Gunicorn直接用命 阅读全文
posted @ 2020-08-17 20:08 Tracydzf 阅读(714) 评论(0) 推荐(0) 编辑
摘要:sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,所以那些试图从代码来说明它作用的解释一直没看明白。因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程序本身 阅读全文
posted @ 2020-08-02 14:05 Tracydzf 阅读(106) 评论(0) 推荐(0) 编辑
摘要:延迟绑定出现在闭包问题中。下面我们看一个闭包的例子: def gen_mul(n): def mul(x): return n*x return mul double = gen_mul(2) double_value = double(6) print(double_value) 可以看出满足闭包 阅读全文
posted @ 2020-06-27 12:01 Tracydzf 阅读(257) 评论(0) 推荐(0) 编辑
摘要:什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.py文件) 2 已被编译为共享库或DLL的C或C++扩展 3 包好一组模块的包 4 使用C编写并链接到 阅读全文
posted @ 2020-06-23 20:56 Tracydzf 阅读(150) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示