06 2021 档案

摘要:kafka它们属于消息队列;celery它们属于任务队列。 消息队列和任务队列,最大的不同之处就在于理念的不同 -- 消息队列传递的是“消息”,任务队列传递的是“任务”。 我们可以放到具体的应用场景上: 消息队列用来快速消费队列中的消息。比如日志处理场景,我们需要把不同服务器上的日志合并到一起,这时 阅读全文
posted @ 2021-06-30 13:44 Tracydzf 阅读(2100) 评论(0) 推荐(0) 编辑
摘要:1. 安装 python -m pip install grpcio #安装grpc python -m pip install grpcio-tools #安装grpc tools 2. 先体验protobuf3 protobuf3 是有自己专门的定义格式的 - 门槛 syntax = "prot 阅读全文
posted @ 2021-06-28 11:36 Tracydzf 阅读(126) 评论(0) 推荐(0) 编辑
摘要:grpc gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective- 阅读全文
posted @ 2021-06-28 11:23 Tracydzf 阅读(381) 评论(0) 推荐(0) 编辑
摘要:远程过程调用带来的新问题 在远程调用时,我们需要执行的函数体是在远程的机器上的,也就是说,add是在另一个进程中执行的。这就带来了几个新问题: Call ID映射。我们怎么告诉远程机器我们要调用add,而不是sub或者Foo呢?在本地调用中,函数体是直接通过函数指针来指定的,我们调用add,编译器就 阅读全文
posted @ 2021-06-26 14:12 Tracydzf 阅读(76) 评论(0) 推荐(0) 编辑
摘要:python中的slice是在原有基础上拷贝一份。go中的slice则是指向生成它的数组/切片,切最长长度不会超限。 python举例 #数组为1,2,3,4 >>> L=[1,2,3,4] #生成一个内容为2,3的切片 >>> slice1=L[1:3] >>> print(slice1) [2, 阅读全文
posted @ 2021-06-25 15:35 Tracydzf 阅读(68) 评论(0) 推荐(0) 编辑
摘要:如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的 阅读全文
posted @ 2021-06-25 10:44 Tracydzf 阅读(449) 评论(0) 推荐(0) 编辑
摘要:平时的工作中,不知道你有没有遇到过这样的场景,一条SQL语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。 看上去,这就像是数据库“抖”了一下。今天,我们就一起来看一看这是什么原因。 我为你介绍了WAL机制。现在你知道了, 阅读全文
posted @ 2021-06-23 17:21 Tracydzf 阅读(66) 评论(0) 推荐(0) 编辑
摘要:第一种方法就是最传统的多进程并发模型 (每进来一个新的I/O流会分配一个新的进程管理。)第二种方法就是I/O多路复用 (单个线程,通过记录跟踪每个I/O流(sock)的状态,来同时管理多个I/O流 。) 其实“I/O多路复用”这个坑爹翻译可能是这个概念在中文里面如此难理解的原因。所谓的I/O多路复用 阅读全文
posted @ 2021-06-19 16:09 Tracydzf 阅读(262) 评论(0) 推荐(0) 编辑
摘要:在文章开头先抛几个问题: (1)什么时候才需要分库分表呢?我们的评判标准是什么? (2)一张表存储了多少数据的时候,才需要考虑分库分表? (3)数据增长速度很快,每天产生多少数据,才需要考虑做分库分表? 这些问题你都搞清楚了吗?相信看完这篇文章会有答案。 为什么要分库分表? 首先回答一下为什么要分库 阅读全文
posted @ 2021-06-19 11:27 Tracydzf 阅读(151) 评论(0) 推荐(0) 编辑
摘要:一般情况下,将一个项目部署到生产环境的流程如下: 需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试,如果发现外网部署的代码有异常,需要及时回滚。 整个过程相当复杂而漫长,其中还需要输入不少的命令,比如上传代码,git的拉取或者合并分支等等。 Jenkins是目 阅读全文
posted @ 2021-06-18 19:17 Tracydzf 阅读(414) 评论(0) 推荐(0) 编辑
摘要:事务处理(transaction)对于Web应用开发至关重要, 它可以维护数据库的完整性, 使整个系统更加安全。比如用户A通过网络转账给用户B,数据库里A账户中的钱已经扣掉,而B账户在接收过程中服务器突然发生了宕机,这时数据库里的数据就不完整了。加入事务处理机制后,如果在一连续交易过程中发生任何意外 阅读全文
posted @ 2021-06-18 19:01 Tracydzf 阅读(153) 评论(0) 推荐(0) 编辑
摘要:Python协程及asyncio基础知识 协程(coroutine)也叫微线程,是实现多任务的另一种方式,是比线程更小的执行单元,一般运行在单进程和单线程上。因为它自带CPU的上下文,它可以通过简单的事件循环切换任务,比进程和线程的切换效率更高,这是因为进程和线程的切换由操作系统进行。 asynci 阅读全文
posted @ 2021-06-18 17:28 Tracydzf 阅读(173) 评论(0) 推荐(0) 编辑
摘要:1、什么是Hash Hash也称散列、哈希,对应的英文都是Hash。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出。这个映射的规则就是对应的Hash算法,而原始数据映射后的二进制串就是哈希值。活动开发中经常使用的MD5和SHA都是历史悠久的Hash算法。 echo md5("这是一 阅读全文
posted @ 2021-06-17 19:23 Tracydzf 阅读(1817) 评论(0) 推荐(0) 编辑
摘要:def validate_input(obj, **kwargs): hints = get_type_hints(obj) for para_name, para_type in hints.items(): if para_name == "return": continue if not is 阅读全文
posted @ 2021-06-16 23:16 Tracydzf 阅读(46) 评论(0) 推荐(0) 编辑
摘要:深入了解一下"SELECT * "效率低的原因及场景 一、效率低的原因 增加查询分析器解析成本。 增减字段容易与 resultMap 配置不一致。 无用字段增加网络 消耗,尤其是 text 类型的字段。 1.不需要的列会增加数据传输时间和网络开销 1、用“SELECT * ”数据库需要解析更多的对象 阅读全文
posted @ 2021-06-16 22:05 Tracydzf 阅读(260) 评论(0) 推荐(0) 编辑