- 博客(19)
- 收藏
- 关注
原创 痛击面试官,CURD系统也能做出技术含量
引子很多朋友可能会因为自己做的工作不是特别核心或者业务简单而引起面试中没有自信。但是很多公司面试的时候是可以接受面试者之前岗位的并发量、交易量低一些的。比如我们要招聘和我们交易量同等级或者以上的出来的人才,业界本来就没有多少,但我们还是要招人的。所以很多时候更偏向于考察面试者的设计底蕴、思考和解决问题的能力。我建议面试时,面试者要争取主动权,主动引导面试。一般作为面试官也很乐意被面试者引导。因为面试官的职责是发现面试者的技术特长,为此我们绞尽脑汁地从简历中、自我介绍中去发掘。如果面试者可以自己有完整
2021-11-09 17:12:48
191
原创 完美设计理念,Alibaba开源自研分布式核心原理解析小册太香了
前言到底什么是分布式?这个话题一直以来就在各大平台论坛上被热议。一千个读者里面就有一千个哈姆雷特。官方这边给出的结论是:分布式就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的一种计算方式。而从分布式技术的起源来看,随之诞生的分布式系统就是用更多的机器,处理更多的数据和更复杂的任务。一个篱笆三个桩,一个好汉三个帮。虽然分布式系统让更多的服务器进行协作,提供了更强大的数据处理能力,解决了单机系统无法处理的问题;但是随之而来也带来了许多的挑战。有句老话说得好:如果你的系统可以用单机实现,就不要
2021-11-08 17:18:30
200
原创 5年CRUD化身外包扫地僧,凭借一份性能优化小册5面阿里成功入职架构岗
性能优化作为一个程序员,性能优化是常有的事情,不管你是刚入行的小白还是已经入坑了很久的小秃头都会经历很多不同层次的性能优化——小到代码审查大到整个系统设计的优化!大势所趋之下,如何让自己的优化方向精准到性能瓶颈的那个点以及尽可能的提高优化的性价比已经慢慢成为每一个程序员都要考虑的问题了~下面是目前程序员进行性能优化时需要遵循的一些原则以及注意的一些点,大家可以看看自己在进行优化的时候是否有考虑到这些:如果你对于以上性能优化的原则、层次、通用方法以及代码质量的关系根本没有一个概念,也不知道
2021-11-05 21:23:04
167
原创 详解TCP常见的五个异常处理场景,其实TCP聪明得很
之前收到个读者的问题,对于 TCP 三次握手和四次挥手的一些疑问:第一次握手,如果客户端发送的SYN一直都传不到被服务器,那么客户端是一直重发SYN到永久吗?客户端停止重发SYN的时机是什么? 第三次握手,如果服务器永远不会收到ACK,服务器就永远都留在 Syn-Recv 状态了吗?退出此状态的时机是什么? 第三次挥手,如果客户端永远收不到 FIN,ACK,客户端永远停留在 Fin-Wait-2状态了吗?退出此状态时机是什么时候呢? 第四次挥手,如果服务器永远收不到 ACK,服务器永远停留在 La
2021-11-05 21:12:04
696
原创 一文读懂,DDD落地数据库设计实战
作者:冯涛过去,系统的软件设计是以数据库设计为核心,当需求确定下来以后,团队首先开始进行数据库设计。因为数据库是各个模块唯一的接口,当整个团队将数据库设计确定下来以后,就可以按照模块各自独立地进行开发了,如下图所示。在上面的过程中,为了提高团队开发速度,尽量让各个模块不要交互,从而达到各自独立开发的效果。但是,随着系统规模越来越大,业务逻辑越来越复杂,我们越来越难于保证各个模块独立不交互了。随着软件业的不断发展,软件系统变得越来越复杂,各个模块间的交互也越来越频繁,这时,原有的设计过.
2021-11-05 21:07:05
214
原创 微服务调用链日志追踪分析
一、技术原理1.1 背景微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。主要体现在,一个请求可能需要调用很多个服务,而内部服务的调用复杂性,决定了问题难以定位。所以微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,从而达到每个请求的步骤清晰可见,出了问题,很快定位。举个例子,在微服务系统中,一个来自用户的请求,请求先达到前端A(如前端界面),然后
2021-11-05 21:01:32
1658
原创 这才是SpirngBoot轻松整合MybatisPlus多数据源的正确打开方式
有一个这样子的需求,线上正在跑的业务,由于业务发展需要,需重新开发一套新系统,等新系统开发完成后,需要无缝对接切换,当初具体设计见草图。添加依赖# <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>
2021-11-04 14:06:41
110
原创 Prometheus+SpringBoot应用监控全过程详解
1. Prometheus是什么Prometheus是一个具有活跃生态系统的开源系统监控和告警工具包。一言以蔽之,它是一套开源监控解决方案。Prometheus主要特性:多维数据模型,其中包含由指标名称和键/值对标识的时间序列数据 PromQL,一种灵活的查询语言 不依赖分布式存储; 单服务器节点是自治的 时间序列收集通过HTTP上的pull模型进行 通过中间网关支持推送(push)时间序列 通过服务发现或静态配置发现目标 支持多种模式的图形和仪表盘为什么用pull(拉取)而不用p
2021-11-03 19:20:59
324
原创 CTO问我Pulsar到底能不能取代Kafka?
Pulsar是一款分布式发布/订阅消息平台,近两年非常火,被称为下一代的消息流平台,大有取代Kafka的势头。今天我们就来比较一下Pulsar跟Kafka。历史背景Pulsar源自Yahoo,于2016年开源并捐献给Apache基金会,并在2018年9月升级成为Apache顶级项目。Kafka最初由Linkedin开发,并于2010年贡献给了Apache基金会,之后成为Apache顶级项目。架构KafkaKafka架构由broker和zookeeper组成,如下图:[1]
2021-11-03 19:18:36
2391
原创 秒杀系统设计4要素:硬抗高并发,拒绝超卖,避免少卖,打击黄牛
双十一又要到了,牛牛有点慌,以前一个人的时候,一分钱都不花,现在有了女票,不仅得剁手,还得帮忙抢各种秒杀商品。今年,牛牛真的不想再去抢秒杀了,为什么呢?太难了,成千上万的人就盯着秒杀放出来的那点商品。牛牛凭着单身十几年的手速也抢不过啊。牛牛苦思妙想,终于想出一条完(zuo)美(si)妙计:给女朋友讲讲程序员是如何做一个秒杀系统的。对头,就是要用知识的海洋淹没她。如果她不愿意听,或者听不懂,那么今年就不参加双十一了至于拒绝理由嘛。。。那就是【你都不认真听我说话,你一定是不爱我了】;
2021-11-03 16:33:43
1445
原创 系统重构:从Jar包冲突搞到类加载机制,就是这么霸气
接手了一套比较有年代感的系统,计划把重构及遇到的问题写成系列文章,老树发新枝,重温一些实战技术,分享给大家。【重构01篇】,给大家讲讲Jar包冲突及原理。背景目前市面上项目管理要么是基于Maven,要么是基于Gradle,最近接手了一套纯手动添加jar包的项目。对于纯手动添加jar包的项目已经是多年前的方式了,现在工作三五年的技术人员可能都没有经历过。就是把项目中所需的jar包挨个找出来,添加到一个lib目录中,在IDE中再将jar包依赖手动添加上。这种方式来添加jar包依赖,不仅费事,而且
2021-11-02 16:50:18
151
原创 腾讯二面:Linux操作系统里一个进程最多可以创建多少个线程?
昨天有位读者被坑了,问了我这么个问题:大致意思就是,他看了一个面经,说虚拟内存是 2G 大小,然后他看了我的图解系统 PDF 里说虚拟内存是 4G,然后他就懵逼了。其实他看这个面经很有问题,没有说明是什么操作系统,以及是多少位操作系统。因为不同的操作系统和不同位数的操作系统,虚拟内存可能是不一样多。Windows 系统我不了解,我就说说 Linux 系统。在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址 空间的范围也不同
2021-11-02 16:39:22
131
原创 盘点一下我用kafka两年以来踩过的一些非比寻常的坑
前言我的上家公司是做餐饮系统的,每天中午和晚上用餐高峰期,系统的并发量不容小觑。为了保险起见,公司规定各部门都要在吃饭的时间轮流值班,防止出现线上问题时能够及时处理。我当时在后厨显示系统团队,该系统属于订单的下游业务。用户点完菜下单后,订单系统会通过发kafka消息给我们系统,系统读取消息后,做业务逻辑处理,持久化订单和菜品数据,然后展示到划菜客户端。这样厨师就知道哪个订单要做哪些菜,有些菜做好了,就可以通过该系统出菜。系统自动通知服务员上菜,如果服务员上完菜,修改菜品上菜状态,用户就知道哪些菜..
2021-11-02 16:27:50
100
原创 后台开发看过来:这次带你一举拿下网络IO模型
前言IO 是计算机体系中重要的一部分 。不同的 IO 设备有着不同的特点:数据率不一样、传送单位不一样,数据表示不一样,等等。所以,很难实现一种统一的输入输出方法。IO 有两种操作,同步 IO 和异步 IO。同步 IO 指的是,必须等待 IO 操作完成后,控制权才返回给用户进程。异步 IO 是,无须等待 IO 操作完成,就将控制权返回给用户进程。上面就是一个典型的阻塞 IO,对方还没有准备好回啥,发送只能等着,知道对方想好回复语,再进行回复。下面学习一下常见的 4 中 IO 模型。
2021-10-31 14:09:32
84
原创 诡异的问题:Dubbo注册zookeeper协议时,出现了这种异常提示
遇到一个很诡异的问题,我在启动多个配置相同zookeeper的Dubbo项目时,其他项目都是正常启动,唯独有一个项目在启动过程中,Dubbo注册zookeeper协议时,竟然出现了这样的异常提示——Caused by: java.lang.IllegalStateException: zookeeper not connected at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>(Cu
2021-10-28 20:43:32
779
转载 深入InnoDB存储引擎最小存储单位剖析MySQL,其实索引真不难
索引可以说是每个工程师的必备技能点,明白索引的原理对于写出高质量的 SQL 至关重要,今天我们就从 0 到 1 来理解下索引的原理,相信大家看完不光对索引还会对 MySQL 中 InnoDB 存储引擎的最小存储单位「页」会有更深刻的认识从实际需求出发假设有如下用户表:CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` int(11) DEFAULT NULL COMMENT '姓名',
2021-10-26 20:48:55
116
转载 京东亿级流量电商系统JVM模型参数预估方案
1. 需求分析大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢?假设,现在有一个场景,一个电商平台,比如京东,需要承担每天上亿的流量。现在开发了一个订单系统,那么这个订单系统每秒的并发量是多少呢?我们应该如何分配其内存空间呢?先来分析一下每日亿级流量,平均一个用户点击量在20-30左右,通过这个计算出日活用户数约1亿/20=500万, 看的人多,买的人少,通常下单率不超过10%,我们按照留存率10%来计算,日均订单约50万单
2021-10-26 20:46:49
145
转载 MySQL沉浸式面试:隔离级别、锁、索引原理连环炮你扛得住吗?
今天我们来聊聊MySQL原理基础篇主要是侧重基础知识,原理篇是有一定基础后的递进,通过学习本篇,不仅可以进一步了解MySQL的各项特性,还能为接下来的容灾调优打下坚实的基础。现在,就让我们继续跟随阿柴进行这场沉浸式面试吧。ACID与隔离级别那你先来说说MySQL的四种隔离级别吧。SQL标准定义了4类隔离级别,包括一些具体规则,用来限定事务之间的隔离性。这四种级别分别是读未提交、读已提交、可重复读、串型化。读未提交,顾名思义,就是可以读到还没有提交的数据;读已提交会读到其它事务
2021-10-26 20:39:35
101
转载 面试官:hold住了八股和算法,扫码登录应该怎么实现你总不会了吧
真实面试小场景:经过八股和算法的交锋,老三松了口气,都hold住了。只见面试官微微一笑,“其实,我真正想问的是……你觉得扫码登录应该怎么实现。”老三:“啊……这个,哦……那个,这个就这么,然后……额……嗯……”面试官:“了解了,回去等通知吧。”完……好了,铺垫结束,进入我们今天的主题,扫码登录功能该如何实现?扫码登录场景扫码登录场景想必我们都不陌生——很多PC端的网站都提供了扫码登录的功能,无需在网页上输入任何账号和密码,只需要通过手机上的APP,如微信、淘宝、QQ等等,使用扫描
2021-10-26 20:36:53
65
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人