性能优化
文章平均质量分 87
魏小言
BAT资深工程师,Cloud Native 拥护者,敏捷实践者,坚守开发一线打磨工匠技艺的架构师。对基础架构和微服务有丰富的研究和实践。微信群请私信博主
展开
-
大值 Int 场景下 高效精确 求绝对值 解决方案 ! 「建议收藏」
文章目录大值 int 场景下高效精确求绝对值Math.Abs数据精度不允许丢失位运算高效准确取绝对值异或运算绝对值Q&A附录大值 int 场景下高效精确求绝对值本文提供 大值 int 类型求绝对值,高效且精确 的一种解决方案!Math.Abs 业务逻辑中,对数据取绝对值的操作很常见,各类开发语言都提供了对应的 Math 包,支持 Abs() 函数处理。 但在一些特殊的场景中,标配的 Abs() 确并不适用! 下面以 Goland 为例,提供最佳的绝对值解决方案。数据精度不允许丢失原创 2021-07-10 11:06:40 · 784 阅读 · 2 评论 -
ES为什么那么牛——Elasticsearch存储解析
文章目录ElasticsearchElasticsearch 架构文档型数据库索引结构时间复杂度空间复杂度Q&A附录本文仅针对ES存储部分进行解析,其他部分请关注后续博文,欢迎技术交流!Elasticsearch监控全家桶 ELK/EFK,其中的 E 就是 ES(Elasticsearch)。Elasticsearch「开发语言 Java」最早于 2010 年 2 月发布,是一款分布式可扩展的实时检索分析组件。它不仅是一款文档型数据库,也是基于全文搜索引擎 Apache Lucene 之上的一原创 2021-05-23 16:02:58 · 2822 阅读 · 6 评论 -
你真的会重试吗?——重试机制之二进制指数退避机制
Table of Contents重试机制重试的必要性重试前提重试策略重试策略分析二进制指数退避策略二进制指数退避策略实操过程二进制指数退避策略原理Q&A附录重试机制本文介绍系统设计中,常见的重试机制。重点介绍二进制指数规避策略,从原理至实操,希望能为您在日后架构设计中带来些帮助!重试的必要性在互联网系统中,不管是基础组件还是业务开发,都依赖这机器、网络、电信号、等硬件、软件,任何流程不能保证100%到位。在实际场景中,会有各种不同重试的场景,尤其是在分布式架构、微原创 2021-05-17 18:21:35 · 1457 阅读 · 3 评论 -
MsgPack/Json性能数据
MsgPack/Json性能数据对比MsgPack是一个高效的二进制序列化格式,像Json一样可以在各语言之间进行交换数据,都用来序列化存储数据。优势是在数据规模大时,效率比Json更高,占用资源更少;缺点是,二进制格式,不易查看数据。业界Rpc交互之间使用广泛:JD,Baidu…官网地址:http://pecl.php.net/package/msgpack下面做了样本实验,简单对比MsgPack于Json性能:实验数据「样本数据选取string类型,观察对比耗时、占比情况」:此样本库可得出原创 2021-05-01 17:05:59 · 1956 阅读 · 1 评论 -
Redis:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
一、缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。缓存正常从Redis中获取,示意图如下:缓存失效瞬间示意图如下:缓存雪崩的解决方案...转载 2019-03-04 20:17:31 · 271 阅读 · 0 评论 -
Redis应用场景介绍
昨天和一位前辈聊天,谈到关于redis到场景问题,这里做一下小结。 Redis呢,百科这样说,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 在官方上讲的很仔细,这里就简单说一下redis几个特点,因为场景是由特点决定的嘛。单线程、并发转串行、强大的QPS、基础类型的数据结构是比较独秀的特点;单线程呢,可...原创 2018-07-19 17:49:13 · 345 阅读 · 0 评论 -
深入理解Java并发之synchronized实现原理
最近在梳理关于同步的一些知识,发现知识的海洋无边际,学无止境,这里借鉴以为大佬的文章梳理一下synchronized的底层实现原理。首先是,synchronized都有什么应用场景呢? 概括,进程同步:修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁修饰代码块,指定加锁对象,对给定对象加锁,进入...转载 2018-05-07 21:06:10 · 284 阅读 · 0 评论 -
数据库的四种隔离级别
数据库的四种隔离级别 数据库的事务操作其实就是一组原子性的操作,要么全部操作成功,要么全部操作失败。 比如说我需要对外销售1张电影票,且登记一下销售信息到另一个表,至少需要以下3个步骤 1.查询电影票数量是否满足销售1张电影票 SELECT remain_count FROM cinema WHERE film_id = 123456789; 2.更新电影...转载 2018-04-13 23:20:27 · 273 阅读 · 0 评论 -
理解Java Integer的缓存策略
本文将介绍 Java 中 Integer 缓存的相关知识。这是 Java 5 中引入的一个有助于节省内存、提高性能的特性。首先看一个使用 Integer 的示例代码,展示了 Integer 的缓存行为。接着我们将学习这种实现的原因和目的。你可以先猜猜下面 Java 程序的输出结果。很明显,这里有一些小陷阱,这也是我们写这篇文章的原因。123456789101112131415161718192...转载 2018-04-18 18:43:35 · 204 阅读 · 0 评论 -
enumerator迭代器和Iterator迭代器浅述
怎么突然想起这个主题了呢?是在浏览关于HashMap和HashTable的相关性能的时候,了解到他们的迭代机制不同,就深入探讨一下。HashMap和HashTable 主要区别是:线程安全、速度、迭代器;前两个区别之前的博客描述过,这里只讨论迭代器: 上源码: Enumeration是一个接口,它的源码如下:package java.util;public interface Enu...原创 2018-04-22 18:50:34 · 1484 阅读 · 1 评论 -
Synchronized与Lock及相关锁知识串联梳理
最近在整理Synchronized和lock的区别,想起了许多其他相关的知识,这里串联一下,形成知识架构。主要区别有一下几点: 1、实现层次:Syn是基于JVM层,java内置的关键字。在程序编译阶段会在代码块前形成moitorecter、代码后形成moitorexit标识;lock笼统的说是一个java接口,因为Lock有不同的实现类; 2、锁的获取/阻塞:Syn是当获得锁的...原创 2018-04-09 21:19:37 · 284 阅读 · 0 评论 -
数据库性能优化详解
1.数据库访问优化法则要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬盘可能会是瓶颈点,为什么这些一般的工作我们能快速确认瓶颈点呢,因为我们对这些慢速设备的性能数据有一些基本的认...转载 2018-04-01 15:26:52 · 493 阅读 · 0 评论 -
内外循环编程规范
最近听朋友偶尔聊起了这个话题,说是内层循环和外层循环次数相差比较大的情况下次数多的放在内还是外循环,哪个更优?举个栗子:一个嵌套循环,一个循环100次,一个循环1w次,那么是外层100呢还是1w呢?哪个更好?答案是外层100,内层1w更优。目的:减少CPU循环的切入次数这里简单说下吧,在计算机编程的基层,偏机器语言汇编中,在循环中需要循环命令REP和计数寄存器CX; 进行循环时,原创 2018-02-06 23:27:11 · 477 阅读 · 0 评论