暂时未有相关云产品技术能力~
公号「架构精进之路」,专注软件架构研究,技术学习与职业成长! 坚持原创总结、沉淀和分享,感谢各位的支持(关注、点赞、分享)!
最近的工作中,我听到组内两名研发同学在交流数据统计性能的时候,聊到了以下内容: 数据统计你怎么能用 count(*) 统计数据呢,count(*) 太慢了,要是把数据库搞垮了那不就完了么,赶紧改用 count(1),这样比较快...... 有点儿好奇,难道 count(1) 的性能真的就比 count(*) 要好吗? 印象中网上有很多的文章都有过类似问题的讨论,那 MySQL 统计数据总数 count(*) 、count(1)和count(列名) 哪个性能更优呢?今天我们就来聊一聊这个问题。
提起编程,对于程序员同学而言并不陌生,关于防御性编程相信大家也有所耳闻,但是它具体包括哪些内容呢?
容器编排是指对多个容器的部署,管理和监控。
最近好多同学在开发过程中谈到设计表结构的一些idea,为了让大家少走一些弯路,今天就计划聊聊表驱动法吧~
好像最近几年 DDD特别的火,关于DDD 到底是银弹还是垃圾 的分析网络上还是挺多的。
在日常工作中的一些技术设计方案评审会上,经常会有提到注意服务接口的幂等性问题,最近就有个同学就跑到跟前问我,幂等性到底是个啥?
目前随着缓存架构方案越来越成熟化,通常做法是引入「缓存」来提高读性能,架构模型就变成了这样:
大家在面试中是不是经常被问到一个问题:“如果你系统的流量增加 N 倍你要怎么重新设计你的系统?”
通常情况下,我们的架构设计图大概率会如下图这个样子了,首先声明一点,这其实并没有什么不妥的,这也是很典型的分层设计啦~
开发工作中对于分布式缓存高可用方案(搭建 Redis 缓存高可用方案),Redis 主从架构下是如何保证高可用的呢?
最近跟团队同学聊到了一致性算法Raft,于是翻了下之前发布整理过的文章,重新温故学习之。
hello,大家好,我是张张,「架构精进之路」公号作者。 通常情况下,我们的一个请求会经过三个服务来处理。
计算机网络单位如何换算? 100Mb=12800KB 100Mbps≈12.5MB/s 数据单位换算、流量速度单位换算 到底是怎么换算的?
软件架构的发展经历了从单体架构、垂直架构、SOA架构到微服务架构以及到现在最新的service mesh(网格服务架构)的过程。
MySQL 中多版本并发控制(MVCC),是现代数据库引擎实现中常用的处理读写冲突的手段,MVCC 作为 MySQL 高级应用特性,目的在于提高数据库高并发场景下的吞吐性能。
数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,因此在 Go 语言中很少直接使用数组。和数组对应的类型是 Slice(切片),它是可以增长和收缩的动态序列,slice 功能也更灵活。
微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。
关于MySQL主从复制主要同步的是binlog日志,涉及到三个线程,一个运行在主节点(log dump thread),其余两个(I/O thread, SQL thread)运行在从节点,如下图所示:
对于一些新手小白可能会发问:VLD 是什么?
我们作为“码农”,每天都在接触编程,接触linux系统,那么常见的Linux目录和文件都有哪些,它们又有什么作用呢?
MySQL全局锁会申请一个全局的读锁,对整个库加锁。
前面两讲我们介绍了B-/+树的特性对比,数据库系统普遍采用B-/+树作为索引结构。
前面一讲我们介绍了B-树的特性,以及与平衡二叉树的对比得出B-树这类数据结构的优势。
对于MySQL索引,相信每位后端同学日常工作中经常会用到,但是对其索引原理,却可能未曾真正深入了解,导致在面试过程中,回答不出重点那就可能要与机会说byebye了。
对于锁,大家应该都不陌生,手机上可以加锁,想用时候解锁,不用的时候上锁,那自行车、房门同样可以加把锁,道理属于类似的情况。
关于 MySQL 索引,对于研发同学,尤其是后端研发同学,一定不会陌生。我们工作中经常会用到 MySQL 数据库,就肯定会经常用到性能优化方面的设计和考量,常常用涉及到 MySQL 索引。但是关于 MySQL 索引,你真的用对了么?
对于集群、分布式和微服务,大家在工作中可能经常会听到,但是如果问你它们之间存在什么样的区别和联系,可能你一下子又感觉说不清楚,今天就这个话题,趁着周末时间,跟大家来一起聊聊。
作为服务端开发的同学,你可能听说过Paxos、Raft这类分布式一致性算法,也在工作中使用过ZooKeeper、etcd等工具来解决一致性问题。但你可能不知道,这些算法和工具解决的并不是一致性中最难的问题,要讨论这个最难的问题,这就要追溯到 Leslie Lamport 1982 年发表的著名论文 《拜占庭将军问题》(The Byzantine Generals Problem )上了。
在当今最流行的编程语言列表里,Go语言一直是名列前茅。近几年Go语言在互联网圈很火,国外如Google、facebook、AWS等暂且不谈,国内如阿里巴巴、腾讯、百度、抖音、小米、京东、360、网易、新浪、爱奇艺、哔哩哔哩等都已开始大规模使用Go语言开发各种应用。
继上一篇: 我用一个小小的开放设计题,干掉了40%的面试候选人 聊到了Web安全之后,好多朋友也在关注这个话题,今天特意再写一篇。
去年团队招聘需求比较大,本人参与了近百次的面试工作。今天来跟大家聊聊,面试候选人过程中,一个常见的开放类设计题目的解题思路,以及候选人的理解设计误区分析。
在一次研发沟通会上,大家关于是否需要代码注释做了一番争执(讨论)。
Redis 是完全开源的,高性能的 key-value 数据库,受到越来越多的业务场景应用。对于"发布/订阅"的消息模式,大家也许都比较了解,但是其实现原理及应用是否还存在模糊呢?
事件驱动架构(Event Driven Architecture)是一个流行的分布式异步架构模式,可以用来设计规模很大的应用程序。基于这种架构模式应用可大可小。它由高度解耦的,单一目的的事件处理组件组成,可以异步地接收和处理事件。
不知大家在开发过程中有没有常常会遇到数据精度问题呢,类似下面这样的:
没有进行架构设计的应用程序通常是紧耦合的,难以维护和扩展。如果不理解应用的各个组件的内部工作方式的话很难看清它的架构特征。
随着目前业务复杂度的增加,项目中经常需要有大量的跨系统异步任务需要处理。
在我们日常工作程序开发过程中,难免会涉及与第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(即防窃取)?
在工作中经常有同学在讨论,到底什么是好代码? 对于好代码,相信每个人都有自己的理解,可能它是包括以下几个维度: 关于代码结构本身; 关于功能实现; 关于学习成本; 关于程序可读性...
散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。
面试常见的四种算法思想,全在这里了,今天带你一文了解。
上篇回顾 继上两篇: MySQL慢查询(上):你知道为啥会慢么? MySQL慢查询(中):正确的处理姿势,你get到了吗?
继上篇:MySQL慢查询(上):你知道为啥会慢么?
在过去的半年时间里,研发团队内部尝试抓了一波儿慢查询SQL跟进处理率。发现有些同学对于慢查询处理的思路就是看看有没有用到索引,没有用到就试图加一个,实在不行就甩锅给这种情况是历史设计问题或者自行判定为用户特殊操作下触发的小概率事件,随即便申请豁免掉... 其实问题没有根本上解决。
在日常业务研发过程中,我们常常需要与数据库表打交道。设计范式是数据表设计的基本原则,对于数据表的设计范式,我们特别容易忽略它的存在。很多时候,当数据库运行了一段时间之后,我们才发现数据表设计上有问题。然后重新调整数据表的结构,需要做数据迁移,还有可能影响程序处理的业务逻辑,甚至系统的正常服务运行。
在2020年这个非同寻常的年份里面,自己与团队小伙伴一起利用周例会时间,分享学习了《架构整洁之道》系列内容,同团队一起学习成长。在这个岁末年终的日子里,动,来对自己本年度带领团队学习成长做个总结,分享给大家参考。
2020年,注定是个不平凡的一年。疫情的蔓延打乱了大家既定的原有的计划,同时也催生了一些在线业务办理能力的应用诉求,作为技术同学,需要在短时间内快速支持建设系统能力并保障其运行系统稳定性。恰逢年终月份,正好梳理总结下自己的系统稳定性建设经验和思考。
最近经常听到“组件化开发”,那架构设计里,组件到底如何定义、设计和应用呢,今天我们一起来聊聊。
又值一年一度的“双十一购物节”之际,大家都在乐此不疲的聊着大流量高并发场景下的处理解决方案。 提到抢购,总结就一个“快”字,筛选要快,下单要快,付款要快... 一切顺利操作之后,才有可能秒到足够便宜的好货。今天我们也围绕着“快”,来跟大家聊一下低时延利器:QUIC。
关于MySQL varchar字段类型的最大值计算,也许我们一直都理解错误了,本文从问题出发,经实践验证得出一些实用经验,希望对大家的开发工作有些帮助~