Glide生命周期原理
Android App中图片的展示是很基本也很重要的一个功能,在Android平台上有很多的图片加载解决方案,但是官方认可的是Glide。Android App的页面是有生命周期的,Glide比较好的一个功能就是具有生命周期管理功能,能够根据页面和APP的生命周期来管理图片的加载和停止,也开放接口供用户在内存紧张时手动进行内存管理。本文重点是生命周期源码的分析,不会从简单的使用着手。
一文了解 Consistent Hash
在分布式环境下面,我们经常会通过一定的规则来进行数据分布的定义,本文描述的取模算法和一致性hash是通过一定规则产生一个key,对这个key进行一定规则的运算,得出这个数据该去哪儿。
vivo web service:亿万级规模web服务引擎架构
vivo web service是开发团队围绕奇点内核打造出的基于vivo手机平台的web服务引擎,该服务引擎从浏览器产品线中经过多年迭代而出。除了提供可靠的基础Web服务,服务引擎还集成了非常强大的扩展功能。本文从架构方面对该服务引擎进行一次简单剖析,帮助读者对vivo web service有一个整体了解。
如何编写高质量的 JS 函数(4) --函数式编程[实战篇]
从如何用 F函数式编程思想编写高质量的函数、分析源码里面的技巧,以及实际工作中如何编写,来展示如何运用函数式编程来提高函数的质量,打通你的任督二脉。
浅谈Kotlin中的函数
本文简单谈下Kotlin中的函数,包括表达式函数体,命名参数,默认参数,顶层函数,扩展函数,局部函数,Lambda表达式,成员引用,with/apply函数等。从例子入手,从一般写法到使用特性进行简化,再到原理解析。
为什么 JavaScript 中 0.1+0.2 不等于 0.3 ?
在js中进行数学运算时,会出现0.1+0.2=0.300000000000000004的结果,一开始认为是浮点数的二进制存储导致的精度问题,但这似乎不能很好的解释为什么在同样的存储方式下0.3+0.4=0.7可以得到正确的结果。本篇笔记主要通过浮点数的二进制存储及运算,和IEEE754下的舍入规则,解释为何会出现这种情况。
深入理解 web 协议(一)- http 包体传输
本文介绍如何使用chrome的network面板和wireshark抓包工具进行http协议的分析,重点介绍http1.x协议中的“队头拥塞”的概念,以及该问题的应对方式和浏览器的限制策略。
Glide 缓存流程
本文主要介绍Glide缓存流程相关内容。
如何编写高质量的 JS 函数(3) --函数式编程[理论篇]
通过对计算机和编程语言发展史的阐述,找到函数式编程的时代背景。通过对与函数式编程强相关的人物介绍,来探寻和感受函数式编程的那些不为人知的本质。
Tomcat 应用中并行流带来的类加载问题
随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)这一特性提升代码执行效率。但是,作者发现在 Tomcat 容器中使用并行流会出现动态加载类失败的情况,通过对比 Tomcat 多个版本的源码,结合并行流和 JVM 类加载机制的原理,成功定位到问题来源。本文对这个问题展开分析,并给出解决方案。
函数式编程杂谈
比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断演进,逐层推导出复杂的运算。本文通过函数式编程的一些趣味用法来阐述学习函数式编程的奇妙之处。
深入理解 Java 中 SPI 机制
SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,本文由浅入深地介绍了Java SPI机制。
如何编写高质量的 JS 函数(2) -- 命名/注释/鲁棒篇
此篇将会从函数的命名、注释和鲁棒性方面,阐述如何编写高质量的 JS 函数。
如何编写高质量的 JS 函数(1) -- 敲山震虎篇
本文将会从函数的执行机制、底层实现、JS引擎是如何执行函数等方面,阐述如何编写高质量的函数。
Kafka 原理和实战
本文从Kafka的基本概念、特点、部署和配置、监控和管理等方面阐述 Kafka 的实践过程。
基于 Lerna 管理 packages 的 Monorepo 项目最佳实践
对于维护过多个package的同学来说,都会遇到一个选择题,这些package是放在一个仓库里维护还是放在多个仓库里单独维护,本文通过一个示例讲述了如何基于Lerna管理多个package,并和其它工具整合,打造高效、完美的工作流,最终形成一个最佳实践。
Android 组件化最佳实践 ARetrofit 原理
ARetrofit 是一款针对Android组件之间通信的路由框架,实现快速组件化开发的利器。本文主要讲述 ARetrofit 实现的原理。
Spring Session工作原理
HTTP协议本身是无状态的,为了保存会话信息,浏览器Cookie通过SessionID标识会话请求,服务器以SessionID为key来存储会话信息。在单实例应用中,可以考虑应用进程自身存储,随着应用体量的增长,需要横向扩容,多实例Session共享问题随之而来。 Spring Session就是为了解决多进程session共享的问题,本文将介绍怎么使用Spring Session,以及Spring Session工作原理。
一篇文章教你如何捕获前端错误
随着前端页面承载功能越来越多,用户本地浏览器环境也错综复杂,因此即使有完善的测试,我们也无法保证上线的代码不会出错。在这种场景下,前端页面的监控就成了各个web项目必备的工具。一般对页面的监控包含页面性能、页面错误以及用户行为路径获取上报等。 而本文将重点关注其中的错误部分,主要介绍一下常见的错误类型以及如何对它们进行捕获并上报。
Elasticsearch搜索调优权威指南 (2/3)
Elasticsearch搜索调优权威指南,是QBOX在其博客上发布的系列文章之一,本文是该系列的第二篇,主要介绍了索引预处理、mapping建立、避免脚本的使用、索引段合并等搜索性能相关的调优方法。