007-Python第三方库大全
- 1:包管理和依赖工具
- 2:分发
- 3:配置相关的库
- 4:文件操作相关的库
- 5:日期和时间
- 6:文本处理相关
- 7:CLI 命令行工具
- 8:生产力工具
- 9:数据库
- 10:网络编程的库
- 11:HTTP 相关的库
- 12:WebSocket 相关的库
- 13: WSGI 服务器
- 14:Web 框架
- 15:RESTful API
- 16:模板引擎
- 17:队列
- 18:搜索
- 19:解析 URLs 的库
- 20:进程
- 21:并发和并行
- 22:其他库
- 23:金融与量化交易
- 24:数据科学领域
- 25:配置库
部分转自:https://www.ctq6.cn/python%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93%E5%A4%A7%E5%85%A8/#wsgi-%E6%9C%8D%E5%8A%A1%E5%99%A8
01-常见编程语言-如何在命令行编译并运行
常见编程语言-如何在命令行编译并运行
1 : Summary
- 有时通过 jetbrains、vscode 这些 ide 的界面操作来运行项目,反而不懂简单的命令。绝大部分编程语言都有在命令行编译并运行方式的功能,有悟收集当前一些主流开发语言(java、go、c/c++、javascript/typescript、rust)的命令行编译并运行的命令。
- 转自(https://youwu.today/skill/backend/how-to-compile-and-run-your-first-program-in-popular-languages/)
2 : java 编译与运行
2.1 环境准备
- 环境准备 安装 oracle java sdk ,或者 oracle open jdk ,然后将 java 可执行程序所在程序配置到 $PATH(windows 用户配置到%path%)。
- java open jdk 有非常多的版本,可通过 jabba 安装,版本非常全。 windows 用户安装了 scoop 的,可以使用 scoop 来安装,使用 scoop search jdk 会提示相应的步骤 macos/linux 用户还可以使用 jenv 来管理多版本。
2.2 编写代码
|  |  | 
2.3 编译运行
- 命令 - javac hello.java && java Hello
Go项目一般性组织结构
Go项目一般性组织结构
1: summary
2: 其他一些规划方案
3: 自己的规划组织方式
|  |  | 
01-ClickHouse常用sql脚本
ClickHouse常用sql脚本
一: ClickHouse 介绍
- ClickHouse 是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS).
- https://clickhouse.com/docs/zh/
- 数据文件路径: /var/lib/clickhouse/
- 日志文件路径:/var/log/clickhouse-server/clickhouse-server.log
二: Clickhouse 连接
三: ClickHouse Database
3.1 数据库操作
- ClickHouse 严格区分大小写
|  |  | 
3.2 表操作
3.2.1 查看表结构
|  |  | 
四: View 视图
|  |  | 
五: ClickHouse-client
|  |  | 
六: clickhouse-local
01-docker cheat sheet
Docker Cheat Sheet
- 1: Process Management
- 2: Images/Repository
- 3: Volumes & Ports
- 4: Troubleshooting(故障排除)
- 5: Docker Compose
1: Process Management
|  |  | 
2: Images/Repository
|  |  | 
3: Volumes & Ports
|  |  | 
4: Troubleshooting(故障排除)
|  |  | 
5: Docker Compose
|  |  | 
01-docker-compose搭建redis cluster
docker-compose搭建redis cluster
一: Redis Cluster 集群
- 在 Redis 中,集群的解决方案有三种- 1.主从复制
- 2.哨兵机制
- 3.Cluster
 
二: 主从复制模式
Redis 虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis 支持主从复制,读写分离。一个 Master 可以有多个 Slaves。

02-Go TestBenchmark
Go TestBenchmark笔记
Table of Contents
=================Go Test Benchmark
- 在 Go 中,通过撰写 Benchmark 函数可以很方便地对某个功能点进行性能检测。对于重要的函数,我们可以在 CI/CD 中添加相应的测试流程,当函数性能发生变化时能够及时感知。那问题来了,如何检测函数的性能变化?
- 换个说法,你编写了某功能函数但发现它运行很慢,需要对该函数进行优化,当你在谷歌搜索找到更好的实现方式,通过 Benchmark 函数发现它的确变快了。但你说不清楚具体变快了多少,你想知道函数优化前后的性能对比,提高多少百分点,可信度高吗?
- 针对以上的需求场景,有一个工具可以帮助到你,它就是 benchstat
1.1 go test benchmark 示例
|  |  | 
执行 go test -bench=BenchmarkFib20 得到性能结果:
01-消息队列Kafka和Pulsar选型
消息队列Kafka和Pulsar选型
Table of Contents
1: 业务场景
1.1 业务场景描述
- 我们需要一个把实时的交易数据进行持久化保存,并且能快速的给其他服务提供最新的交易数据;
- 当服务启动或者重启后,能快速提供完整的并且最新的交易数据;
- 现有的机制是每个订单使用 go 协程直接写入 Mysql 数据库,对数据库的压力比较大,且系统的延迟比较高;
1.2 业务场景 feature
- 解耦,降低数据数据库性能导致的整个服务延迟;
- 数据完整的,及时地进行持久化;
- 交易数据能,迅速的提供给其他需要数据的服务;
- 流量消峰,减少峰值流量直接对数据库服务造成的冲击, 提高系统的稳定性;
2:消息中间件
- 适合用消息中间件解决上述问题;- (1) 解耦: 将一个流程的上游和下游拆开,上游专注生产消息,下游专注处理消息;
- (2) 广播: 一个上游生产的消息轻松被多个下游服务消费处理;
- (3) 缓冲(流量削峰): 如果上游服务流量突然暴涨,mq 可以做一个缓冲器的作用,下游根据消费能力对消息进行消费,避免暴涨的流量直接对下游服务造成冲击;
- (4) 异步: 生产者生产消息之后可以马上直接返回,消费者可以异步处理消息;
- (5) 冗余: 保留历史消息,处理失败或者当出现异常的时候可以进行重试或者回溯,防止消息丢失。
 
- 近几年出现了一些关注度较高的消息队列中间件选型,如 Kafka、Pulsar、RocketMQ 等,首先从宏观上做一些对比:常见MQ对比 MQ 特性 描述 Kafka Pulsar RocketMQ RabbitMQ NSQ 我们的业务场景是否需要 推出时间 2012 年(Scala 和 Java) 2016 年(Java) 2012 年(Java) 2007 年(Erlang) 2013 年(Go) 组织 Linkin 开源,Apache Yahoo 开源,Apache 阿里开源,Apache Pivotal 开源,Mozilla MIT 功能 消费模式 consumer消费消息的方式 pull push pull push push ? 延迟队列 消息投递延迟 No Yes Yes Yes Yes 死信队列 No Yes Yes Yes No ? 优先级队列 No No No Yes No 消息回溯 Yes Yes Yes No No 需要 消息持久化 Yes Yes Yes Yes Yes 需要 消息确认机制 offset offset+单条 offset 单条 单条 需要 消息TTL 消息TTL表示一条消息的生存时间,如果消息发出来后,在TTL的时间内没有消费者进行消费,消息队列会将消息删除或者放入死信队列中 Yes Yes Yes Yes No 需要 多租户隔离 No Yes No No No ? 消息顺序性 消息顺序性是指保证消息有序。消息消费顺序跟生产的顺序保持一致 分区有序 stream模式有序 consumer加锁 No No ? 消息查询 查看MQ中消息的内容,比如通过某个MessageKey/ID,查询到MQ的具体消息 No Yes Yes Yes No 需要 消费模式 stream模式 流模式+队列模式 广播模式+集群模式 队列模式 队列模式 需要,根据场景选择消费模式 消息可靠性 以生产的消息,发送到mq,防止丢失 request.required.acks Ack Quorum Size(Qa) RocketMQ与Kafka类似 RabbitMQ是主从架构,通过镜像环形队列实现多副本及强一致性语义的 NSQ会通过go-diskqueue组件将消息落盘到本地文件中,通过mem-queue-size参数控制内存中队列大小,如果mem-queue-size=0每条消息都会存储到磁盘里,不用担心节点重启引起的消息丢失。但由于是存储在本地磁盘中,如果节点离线,堆积在节点磁盘里的消息会丢失 非常重要 性能 单机吞吐量 605MB/S 605MB/S 大概500MB/S 38MB/S ? 重要 消息延迟 5ms 5ms ms级 us级 ? 非常重要 支持Topics数 百~千,过多会影响性能 百万个 百~千 几千 ? 运维与可靠性 高可用 分布式架构 分布式架构 Master/Slave Master/Slave 分布式架构 非常重要 集群扩容 增加node,node之间会复制数据均衡 增加node,通过新增加分片进行负载均衡 增加节点 增加节点 增加节点 异地容灾 可 可 
3: Kafka 特性
4: Pulsar 特性
5: Kafka 和 Pulsar 对比
01-git仓库gomod私有化
git仓库gomod私有化
1: go module 私有仓库使用
|  |  |