一位七牛的资深架构师曾经说过这样一句话:Nginx+业务逻辑层+数据库+缓存层+消息队列,这种模型几乎能适配绝大部分的业务场景。这么多年过去了,这句话或深或浅地影响了我的技术选择,以至于后来我花了很多时间去重点学习缓存相关的技术。我在10年前开始使用缓存,从本地缓存、到分布式缓存、再到多级缓存,踩过很多坑。下面我结合自己使用缓存的历程,谈谈我对缓存的认识。
JDK 是什么?JDK 是用于支持 Java 程序开发的最小环境。JRE 是什么?JRE 是支持 Java 程序运行的标准环境。
在没有用Optional判空之前,你是否也像下面的代码一样判空呢?如果是,请往下看,Optional 相对传统判空的优势。
我是一个网络监控软件,我被开发出来的使命就是监控网络中进进出出的所有通信流量。一直以来,我的工作都非常的出色,但是随着我监控的网络越来越庞大,网络中的通信流量也变得越来越多,我开始有些忙不过来了,逐渐发生丢包的现象,而且最近这一现象越发的严重了。
相信使用Java的同学都用过Maven,这是一个非常经典好用的项目构建工具。但是如果你经常使用Maven,可能会发现Maven有一些地方用的让人不太舒服。
重构,着实是一件让程序员兴奋的事情。今年年初,我们团队完成了一个复杂项目的重构工作,它属于广告系统最核心的引擎部分,大概有300多个文件,3万多行代码。 从技术方案设计到最终全量上线仅仅花了1个月左右的时间,而且没有产生事故。 这应该是我8年程序生涯中,经历过的最大型的同时最成功的一次重构项目:速度足够快、计划比较周全、质量过关。
说说进程和线程的区别?进程是程序的一次执行,是系统进行资源分配和调度的独立单位,他的作用是是程序能够并发执行提高资源利用率和吞吐率。由于进程是资源分配和调度的基本单位,因为进程的创建、销毁、切换产生大量的时间和空间的开销,进程的数量不能太多,而线程是比进程更小的能独立运行的基本单位,他是进程的一个实体,可以减少程序并发执行时的时间和空间开销,使得操作系统具有更好的并发性。
大型互联网公司一般都会要求消息传递最大限度的不丢失,比如用户服务给代金券服务发送一个消息,如果消息丢失会造成用户未收到应得的代金券,最终用户会投诉。为避免上面类似情况的发生,除了做好补偿措施,更应该在系设计的时候充分考虑各种异常,设计一个稳定、高可用的消息系统。
都知道程序员工资高,但同时也要承受996的高强度工作。 那么程序员里什么群体比较多呢? 一个程序员发帖说,程序员基本都是diao丝,大多是农村进城务工人员,有资源有关系的人都不干程序员这行。
小张,开发一个大型系统,写了一个统一的接口层;日志门面(日志的一个抽象层);logging-abstract.jar;给项目中导入具体的日志实现就行了;我们之前的日志框架都是实现的抽象层……
拼多多的买菜业务上线以后一直争议不断,出现了诸如工作强度过高、强制要求员工转岗等热议话题,那么多多买菜的工作现状到底是怎么样?一个拼多多员工发帖爆料:和去买菜的同事聊了下,他们最长的持续工作时间达到了30小时,比007还恐怖,基本睁眼就工作,闭眼就睡觉。
B+树被广泛应用于MySQL数据库的索引实现,不过并未展开细说,但是呢B+树是一种重要的数据结构,常年出现在各种面试题中,这次就来一起学习下和B+树相关的MySQL索引底层实现的内容。