
获得徽章 2
- #青训营 x 字节后端训练营#
总结:
kafka是目前最常用的消息队列,尤其是在大数据方面,有着极高的吞吐量。而rocketmq和rabbitmq,都是电信级别的消息队列,在业务上用的比较多。相比较而言,ActiveMQ使用的最少,属于较老一代的消息框架。
pulsar是为了解决一些kafka上的问题而诞生的消息系统,比较年轻,工具链有限。有些激进的团队经过试用,反响不错,但实际使用并不多。
mqtt具体来说是一种协议,主要用在物联网方面,能够双向通信,属于消息队列范畴,推荐使用vernemq。展开评论点赞 - #青训营 x 字节后端训练营#
总结:
TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。
展开评论点赞 - #青训营 x 字节后端训练营#
总结:
1.4.1 Go入门指南 比较适合新手,内容相对基础一些
1.4.2 Go语言圣经 书如其名
1.4.3 Go语言中文网 找对圈子,学的更快
1.4.4 菜鸟教程 这个网站非常适合快速上手某门语言
1.4.5 Go语言高级编程 内容适合进阶
1.4.6 go语言原本 欧神出品,虽然号称进度只有9.9%/100%,但不妨碍它的优秀,值得一看
1.4.7 golang设计模式 设计模式 Golang实现,《研磨设计模式》的golang实现
1.4.8 Go实战开发 作者是著名的 Go 开源项目 beego 的作者,他的最佳实践非常值得阅读
1.4.9 Go palyground 不用搭建本地 Go 环境,在线就编写 Go 的代码
展开评论点赞 - #青训营 x 字节后端训练营#
总结:fasthttp号称比net/http快十倍,其优化的核心思路很简单:资源复用。
复用 goroutine,减轻 runtime 调度压力;
对象复用,大量使用 sync.Pool 减轻 GC 压力。
除了复用,还有其他的一些优化手段,例如尽量避免 string 与 []byte 的转换开销等。
这些优化技巧和最佳实践,在其 Github 主页上已经贴心给出:_github.com/valyala/fas…
因为fasthttp的实现与标准库差距较大,所以它与net/http的 API 接口是不同的,这导致从net/http重构为fasthttp需要一些学习成本。
使用fasthttp的知名项目:Fiber、Gearbox、atreugo 等。
展开评论点赞 - 2月23日 打卡day8
今日学习
Bytebase是一款面向开发者的数据库变更管理工具,目前在Github上已有3.6K+Star。
它的主要特性如下:
SQL审核:具有一站式SQL审核面板,可以直观地看到数据库所有变更记录。
SQL建议:能自动检查SQL语句规范,额外提供GitHub Action和API接入方式。
SQL编辑器:可以在线管理及查看数据库表,支持语法的自动提示。
GitOps工作流:支持集成GitHub和GitLab,使用GitOps工作流进行数据库变更。
备份恢复:支持自动备份数据库及恢复数据。
展开评论点赞 - 2月20日 打卡day7
今日学习
连接层:主要是指数据库连接池,会负责处理所有客户端接入的工作。
服务层:主要包含SQL接口、解析器、优化器以及缓存缓冲区四块区域。
存储引擎层:这里是指MySQL支持的各大存储引擎,如InnoDB、MyISAM等。
文件系统层:涵盖了所有的日志,以及数据、索引文件,位于系统硬盘上。展开评论点赞 - 2月10日 打卡day6
今日学习
Kafka 和传统的消息系统(也称作消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka 还提供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能。赞过评论1 - #青训营笔记创作活动#
2月9日 打卡day5
今日学习
如果查询条件是sname = "变成派大星" and s_code = 2或者a=1(又或者是s_code = 2 and sname = "变成派大星" )就可以,因为优化器会自动调整sname, s_code的顺序。再比如sname = "变成派大星" and s_code > 1 and address = "上海" address是用不到索引的,因为s_code字段是一个范围查询,它之后的字段会停止匹配 ----- 为啥那个优化器会不会自动调整sname = "变成派大星" and address = "上海" and s_code > 1展开评论点赞 - #青训营笔记创作活动#
1月17日 打卡day4
客户端转服务端,最大的挑战不是学一门新语言,而是编程思维的改变;
“三刷”官方文档是我高效学习一门新的编程语言的制胜法宝:
1刷从头看到尾,扫清知识盲点,搞清楚概念;
2刷必须手敲,而且要写注释和总结;
3刷先只写注释,不看文档实现功能,遇到问题再和文档比较,加深理解。如果还有余力,就和我一样整理成文章,分享出来帮助大家学习,回馈社区。
在掌握Go基础之后,也可以通过“三刷”的方式掌握SQL,Redis,Linux,Nginx的基础知识点,这样就有能力开发Web项目了。
要进阶就要学“微服务”和“DDD”!下文也会重点讲讲微服务和DDD的概念,让大家先有个目标,这样才能心中有火,眼里有光。展开评论点赞 - #青训营笔记创作活动#
1月16日 打卡day3
一张数据表一般对应一颗或多颗树的存储,树的数量与建索引的数量有关,每个索引都会有一颗单独的树。
聚簇索引和非聚簇索引:
主键索引也是聚簇索引,非主键索引都是非聚簇索引。除格式信息外,两种索引的非叶子节点都是只存索引数据的,比如索引为id,那非叶子节点就是存的id数据。
叶子节点的区别如下:
聚簇索引的叶子节点一般情况下存的是这条数据的所有字段信息。所以我们 select * from table where id = 1 的时候,都是要去叶子节点拿数据的。
非聚簇索引的叶子节点存的是这条数据所对应的主键和索引列信息。比如这条非聚簇索引是username,然后表的主键是id,那该非聚簇索引的叶子节点存的就是 username 和 id,而不存其他字段。 相当于是先从非聚簇索引查到主键的值,再根据主键索引去查数据内容,一般情况下要查两次(除非索引覆盖),这也称之为 回表 ,就有点类似于存了个指针,指向了数据存放的真实地址。展开评论点赞