分布式锁实现原理与最佳实践
在单体的应用开发场景中涉及并发同步时,大家往往采用Synchronized(同步)或同一个JVM内Lock机制来解决多线程间的同步问题。而在分布式集群工作的开发场景中,就需要一种更加高级的锁机制来处理跨机器的进程之间的数据同步问题,这种跨机器的锁就是分布式锁。接下来本文将为大家分享分布式锁的最佳实践。
详解建造者模式(含图例、UML类图、源码示例等)
今天我们要讲的是设计模式中的建造者模式(Builder)。
谈谈钉钉工作台的体验优化及技术思考
本文主要介绍本次体验优化专项的特点,产品能力体验升级背后的技术思考,以及技术视角优化的关键策略和结果。
3分钟重温抽象工厂模式(电商高频使用)
抽象工厂模式(Abstract Factory)是一个比较复杂的创建型模式。 抽象工厂模式的工厂是抽象的,产品是抽象的,而且有多个产品需要创建。 这个抽象工厂会对应到多个实际工厂,每个实际工厂负责创建多个实际产品。
预发部署时机器总是重启两次的“简单”排查
问题 前天同学反馈, 搜索业务的核心应用 magellan 在预发环境部署时总是重启两次,刚部署好,开始联调,突然又重启了,也导致老是被人抱怨搜索环境不稳定。
JDK11升级JDK17最全实践干货来了
2021年9月14日,Oracle发布了可以长期支持的JDK17版本,那么从JDK11到JDK17,到底带来了哪些特性呢?亚毫秒级的ZGC效果到底怎么样呢?值得我们升级吗?而且升级过程会遇到哪些问题呢?带着这些问题,本篇文章将带来完整的JDK11升级JDK17最全实践。
10 个拿来就用的 Shell 脚本实例!
用了这么多年Docker,殊不知你还有这么多弯弯绕!
时下容器技术最火的当属Docker,很多小伙伴也用了多年,只知道它是容器技术,可以将程序和依赖打到Docker里,然后发布在Linux服务器中,就完成了程序的部署,一次构建、到处运行,很牛逼,至于其它的,就不知道了,也不想知道~
没用过微服务?别慌,丐版架构图,让你轻松拿捏面试官
很多人都说现在是云原生、大模型的时代,微服务已经过时了,但现实的是,很多人开发多年,都没有在实际的开发中用过微服务,更别提搭建微服务框架和技术选型了。
代码重构之道:消灭冗长的if语句,提升代码质量
当我们重构代码时,去除代码中的 if语句通常是一个很好的目标。 if语句可能会使代码变得复杂,难以维护,容易引入 bug。本文将介绍一些去除 if语句的常见方案和代码示例。
一文搞懂MySQL执行计划
这篇文章详细讲了执行计划各个字段的含义,大部分是不用记的,只要在使用时,再找到这篇文章对照就行。
什么是OAuth 2.0?深度解析OAuth 2.0的工作原理和应用场景
今天,我们将深入探讨一个重要的主题——OAuth 2.0。你可能曾听说过OAuth,但它到底是什么,它又有哪些部分,以及它在现代应用程序中的作用是什么?本文将全面解答这些问题,帮助你更好地理解OAuth 2.0。
7 大设计原则总结篇(41张图解、2万多字、非常详细)
无论是哪一种设计模式,都需要遵循设计原则。 如果说设计模式则是具体运用,那么设计原则就是理论指导。 因此,要想理解设计模式的精髓,就需要先深入 7 大设计原则。 本文,我们重点介绍设计模式的 7 大原则。
应用性能设计的圣杯:读写扩散的概念与实践
本文结合这三年作者在钉钉见到的应用架构,以及一些业界的实践分享,整理出一篇关于应用读写扩散设计的维基。
如何实现异步通知的重试机制
工作中经常要和第三方做对接,比如支付、电子合同等系统。操作成功之后,第三方会发送异步的通知,返回最终的处理结果,使用异步而不是使用同步通知,是为了加快系统响应速度,防止线程阻塞。任务处理完成后通过异步的通知,发送给对应的服务端。之前对接微信支付,完成支付后,微信发送一个异步通知给服务端,服务端根据支付通知修改状态,通知规则看到以下的一段话。
页面CLS 优化实践
通常,页面元素发生意外偏移的原因包括异步资源加载以及在 DOM 元素上方动态插入新的元素等。具体而言,这些偏移可能源于图片或视频元素尺寸未设置、不受控的第三方广告引入或者小组件自身大小的动态调整。 因此,我们需要一个指标来度量意外偏移对用户“视觉稳定性”产生的影响。
SpringBoot自动配置原理解析
首先介绍一下什么是SpringBoot,SpringBoost是基于Spring框架开发出来的功能更强大的Java程序开发框架,其最主要的特点是:能使程序开发者快速搭建一套开发环境。SpringBoot能将主流的开发框架(例如SpringMVC,Dubbo,Mybatis,Redis等),做到像Maven导入Jar包一样的简洁快速,做到开箱即用。其中最关键的技术就是SpringBoot定制的各种Starter,通Maven引入Starter就能快速搭建开发环境。
C++ 经典案例1例
引用是变量的别名,指针是存储变量内存地址的变量。 引用必须在声明时初始化,指针可以在任何时候进行初始化。 引用不能为null,指针可以为null。 引用不能改变引用的目标,指针可以通过重新赋值来指向不同的对象。 引用使用起来更加简洁,而指针更加灵活。
一文读懂数据战略及如何赋能业务成功
“数据是新的石油,谁控制了它,谁就会获胜。”
一文读懂数据标准中的属性定义与元数据的区别
最近在做项目过程中发现一个问题:有些同事经常把指标数据标准中的业务属性、技术属性、管理属性当做业务元数据、技术元数据、管理元数据或者在数据指标标准定义的时候直接分为业务元数据、技术元数据和管理元数据。这就导致无论是信息管理的技术部门还是经营管理的业务部门总是一头雾水,难以厘清。下面我们谈谈指标数据标准中的属性和元数据类别的联系和区别。