如何把 Caffeine Cache 用得如丝般顺滑?

2021-04-28
阅读 10 分钟
6.6k
在推荐服务中,虽然允许少量请求因计算超时等原因返回默认列表。但从运营指标来说,越高的“完算率”意味着越完整的算法效果呈现,也意味着越高的商业收益。(完算率类比视频的完播率,成功完成整个推荐线上流程计算的请求次数/总请求次数)

commons-pool2 池化技术探究

2021-04-27
阅读 11 分钟
7.3k
我们经常会接触各种池化的技术或者概念,包括对象池、连接池、线程池等,池化技术最大的好处就是实现对象的重复利用,尤其是创建和使用大对象或者宝贵资源(HTTP连接对象,MySQL连接对象)等方面的时候能够大大节省系统开销,对提升系统整体性能也至关重要。

系统高可用之健康检查和健康度量那些事

2021-04-26
阅读 6 分钟
4.8k
随着互联网的快速发展,同类同质产品之间的竞争越来越大,产品之间一个重要的差异就是用户体验。影响用户体验的,除了产品设计因素外,技术层面也是一个重要的影响因素,主要体现在服务的可用性和响应速度。提升服务可用性和响应速度如此重要,为了实现这样的目标,必须要有相应的手段,其中健康检查就是保障服务可用性...
封面图

加密原理详解:对称式加密VS非对称式加密

2021-04-21
阅读 5 分钟
6.2k
小红和小明是情侣,一天,小红给小明发短信说:“亲爱的,我银行卡上没有钱了,你给我转1万块吧。”有过上当受骗经历的人都知道这有可能是小偷偷了小红手提包,然后拿手机发的短信。不过我们小明学过加密原理,于是他回复说:“你直接拿我的银行卡刷吧,密码加上我们第一次约会的日期就是663156。”很明显,只有小明和小红知...

抢购倒计时自定义控件的实现与优化

2021-04-20
阅读 18 分钟
3.4k
但是国内的电商应用大部分都仅支持中文,不适配其他的语言,因此当倒计时与其他文案处于同一行展示时,无需考虑倒计时的展示方式。在海外应用中,由于需要适配各种语言,有些小语种的文案较长,因此当倒计时和其他文案处于同一行展示时,需要充分考虑多语言的适配,如何优雅地完成倒计时自适应显示是一个值得深思的问题。

深入剖析共识性算法 Raft

2021-04-19
阅读 9 分钟
4k
Raft 是一种为了管理日志复制的分布式一致性算法。Raft 出现之前,Paxos 一直是分布式一致性算法的标准。Paxos 难以理解,更难以实现。Raft 的设计目标是简化 Paxos,使得算法既容易理解,也容易实现。
封面图

神秘又强大的@SpringBootApplication注解

2021-04-14
阅读 8 分钟
3.8k
大部分的配置都可以用Java类+注解来代替,而在SpringBoot项目中见的最多的莫过于@SpringBootApplication注解了,它在每个SpringBoot的启动类上都有标注。

Dubbo 编解码那些事

2021-04-13
阅读 12 分钟
3.3k
笔者在一次维护基础公共组件的过程中,不小心修改了类的包路径。糟糕的是,这个类被各业务在facade中进行了引用、传递。幸运的是,同一个类,在提供者和消费者的包路径不一致,没有引起各业务报错。

2D+1D | vivo官网Web 3D应用开发与实战

2021-04-12
阅读 7 分钟
5.6k
在近20年的前端发展史中,前端经历了铁器时代(小前端),信息时代(大前端)以至现在的全能前端时代。经历了几个时代的沉淀之后,前端领域开始更加细分。
封面图

Android内存泄露检测 LeakCanary2.0(Kotlin版)的实现原理

2021-03-30
阅读 12 分钟
4.8k
本文介绍了开源Android内存泄漏监控工具LeakCanary2.0版本的实现原理,同时介绍了新版本新增的hprof文件解析模块的实现原理,包括hprof文件协议格式、部分实现源码等。

微服务时代组件化和服务化的抉择

2021-03-29
阅读 4 分钟
3.5k
随着业务系统的复杂性越来越高,系统之间的调用也越来越多,在微服务拆分和迭代过程中,是不断的拆分出新的独立的服务还是封装独立的组件以jar包依赖的方式提供服务是我们经常需要面对的问题,本文将详细探讨这两种不同的方式区别、各自的优劣势及适用的场景,希望能够对大家有所启发。
封面图

Hystrix 实战经验分享

2021-03-25
阅读 14 分钟
3.6k
Hystrix是Netlifx开源的一款容错框架,防雪崩利器,具备服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)等功能。

vivo 应用商店中的断点续传技术剖析

2021-03-23
阅读 14 分钟
4k
目前,vivo 平台有很多的业务都涉及到文件的下载:譬如说应用商店、游戏中心的C端用户下载更新应用或游戏;开放平台B端用户通过接口传包能力更新应用或游戏,需要从用户服务器上下载apk、图片等文件,来完成用户的一次版本更新。
封面图

vivo 应用商店推荐系统探索与实践

2021-03-22
阅读 4 分钟
2.7k
商店的应用数据主要来源于运营排期、CPD、游戏、算法等渠道,成立推荐项目之后也没有变化,发生变化的是由推荐系统负责和数据源进行对接,商店服务端只需要和应用推荐系统进行对接即可。

C/C++ 性能优化背后的方法论:TMAM

2021-03-17
阅读 10 分钟
5.1k
开发过程中我们多少都会关注服务的性能,然而性能优化是相对比较困难,往往需要多轮优化、测试,属于费时费力,有时候还未必有好的效果。但是如果有较好的性能优化方法指导、工具辅助分析可以帮助我们快速发现性能瓶颈所在,针对性地进行优化,可以事半功倍。

存量用户运营企业微信的“用户端小程序”优化方案

2021-03-16
阅读 5 分钟
3.1k
企业微信端产品“C端用户小程序”,是一款服务于vivo线下代理、门店和导购,帮助导购连接用户,快速与用户进行沟通的工具。基于“C端小程序”的PU/UV量较为庞大,为了更加极致的用户体验,所以提升小程序性能优化是必然。

用户行为分析模型实践(一)—— 路径分析模型

2021-03-15
阅读 13 分钟
7.2k
在互联网数据化运营实践中,有一类数据分析应用是互联网行业所独有的——路径分析。路径分析应用是对特定页面的上下游进行可视化展示并分析用户在使用产品时的路径分布情况。比如:当用户使用某APP时,是怎样从【首页】进入【详情页】的,用户从【首页】分别进入【详情页】、【播放页】、【下载页】的比例是怎样的,以及可...

Webpack 基石 tapable 揭秘

2021-03-10
阅读 14 分钟
3.9k
Webpack 基于 tapable 构建了其复杂庞大的流程管理系统,基于 tapable 的架构不仅解耦了流程节点和流程的具体实现,还保证了 Webpack 强大的扩展能力;学习掌握tapable,有助于我们深入理解 Webpack。

Node.js 模块化你所需要知道的事

2021-03-09
阅读 12 分钟
4.2k
我们知道,Node.js是基于CommonJS规范进行模块化管理的,模块化是面对复杂的业务场景不可或缺的工具,或许你经常使用它,但却从没有系统的了解过,所以今天我们来聊一聊Node.js模块化你所需要知道的一些事儿,一探Node.js模块化的面貌。

亿级用户中心的设计与实践

2021-03-08
阅读 5 分钟
5.8k
用户中心是互联网最为基础的核心系统,随着业务和用户的增长,势必会带来不断的挑战。如何在亿级的情况下保证系统的高可用,高性能以及高安全,本文能够给你一套实践方案。注1:本文讨论的是微服务框架下的用户中心,不涉及授权等功能;注2:本文所涉及的用户中心设计与vivo自身业务无关。

一文帮你搞懂 Android 文件描述符

2021-03-03
阅读 17 分钟
5.6k
文件描述符是在 Linux 文件系统的被使用,由于Android基 于Linux 系统,所以Android也继承了文件描述符系统。我们都知道,在 Linux 中一切皆文件,所以系统在运行时有大量的文件操作,内核为了高效管理已被打开的文件会创建索引,用来指向被打开的文件,这个索引即是文件描述符,其表现形式为一个非负整数。

vivo 官网资源包适配多场景的应用

2021-03-02
阅读 4 分钟
1.6k
本文介绍了资源包的概念及使用场景,同时对资源包的几种使用方案进行对比。通过本文,大家可以快速掌握资源包的使用方法,解决单一配置满足多场景、多样式的问题。

MongoDB 在评论中台的实践

2021-03-01
阅读 4 分钟
7.7k
随着公司业务发展和用户规模的增多,很多项目都在打造自己的评论功能,而评论的业务形态基本类似。当时各项目都是各自设计实现,存在较多重复的工作量;并且不同业务之间数据存在孤岛,很难产生联系。因此我们决定打造一款公司级的评论业务中台,为各业务方提供评论业务的快速接入能力。在经过对各大主流 APP 评论业务的...

Android NativeCrash 捕获与解析

2021-02-24
阅读 9 分钟
7.6k
Android 开发中,NE一直是不可忽略却又异常难解的一个问题,原因是这里面涉及到了跨端开发和分析,需要同时熟悉 Java,C&C++,并且需要熟悉 NDK开发,并且解决起来不像 Java异常那么明了,本文为了解决部分疑惑,将从NE的捕获,解析与还原等三个方面进行探索。

深入理解 Web 协议 (三):HTTP 2

2021-02-23
阅读 11 分钟
5.3k
本篇将详细介绍 http2 协议的方方面面,知识点如下:HTTP 2 连接的建立HTTP 2 中帧和流的关系HTTP 2 中流量节省的奥秘:HPACK 算法HTTP 2 协议中 Server Push 的能力HTTP 2 为什么要实现流量控制?HTTP 2 协议遇到的问题一、HTTP 2 连接的建立和许多人的固有印象不同的是 HTTP 2协议本身并没有规定必须建立在TLS/SSL之上...

深入理解 ProtoBuf 原理与工程实践(概述)

2021-02-03
阅读 6 分钟
9.1k
ProtoBuf 作为一种跨平台、语言无关、可扩展的序列化结构数据的方法,已广泛应用于网络数据交换及存储。随着互联网的发展,系统的异构性会愈发突出,跨语言的需求会愈加明显,同时 gRPC 也大有取代Restful之势,而 ProtoBuf 作为g RPC 跨语言、高性能的法宝,我们技术人有必要

高性能缓存 Caffeine 原理及实战

2021-02-02
阅读 7 分钟
6.6k
Caffeine 是基于Java 8 开发的、提供了近乎最佳命中率的高性能本地缓存组件,Spring5 开始不再支持 Guava Cache,改为使用 Caffeine。

Java 多线程上下文传递在复杂场景下的实践

2021-02-01
阅读 20 分钟
7k
海外商城从印度做起,慢慢的会有一些其他国家的诉求,这个时候需要我们针对当前的商城做一个改造,可以支撑多个国家的商城,这里会涉及多个问题,多语言,多国家,多时区,本地化等等。在多国家的情况下如何把识别出来的国家信息传递下去,一层一层直到代码执行的最后一步。甚至还有一些多线程的场景需要处理。

SpringBoot 2.0 中 HikariCP 数据库连接池原理解析

2021-01-26
阅读 8 分钟
4.3k
作为后台服务开发,在日常工作中我们天天都在跟数据库打交道,一直在进行各种CRUD操作,都会使用到数据库连接池。按照发展历程,业界知名的数据库连接池有以下几种:c3p0、DBCP、Tomcat JDBC Connection Pool、Druid 等,不过最近最火的是 HiKariCP。

MySQL 5.6.35 索引优化导致的死锁案例解析

2021-01-25
阅读 8 分钟
6.4k
随着公司业务的发展,商品库存从商品中心独立出来成为一个独立的系统,承接主站商品库存校验、订单库存扣减、售后库存释放等业务。在上线之前我们对于核心接口进行了压测,压测过程中出现了 MySQL 5.6.35 死锁现象,通过日志发现引发死锁的只是一条简单的sql,死锁是怎么产生的?发扬技术人员刨根问底的优良传统,对于这...