Kotlin协程解析系列(上):协程调度与挂起

2022-08-16
阅读 61 分钟
1.4k
vivo 互联网客户端团队- Ruan Wen本文是Kotlin协程解析系列文章的开篇,主要介绍Kotlin协程的创建、协程调度与协程挂起相关的内容一、协程引入Kotlin 中引入 Coroutine(协程) 的概念,可以帮助编写异步代码。在使用和分析协程前,首先要了解一下:协程是什么?为什么需要协程?协程最为人称道的就是可以用看起来同步的方...

HttpClient 在vivo内销浏览器的高并发实践优化

2022-08-15
阅读 8 分钟
1.4k
HttpClient作为Java程序员最常用的Http工具,其对Http连接的管理能简化开发,并且提升连接重用效率;在正常情况下,HttpClient能帮助我们高效管理连接,但在一些并发高,报文体较大的情况下,如果再遇到网络波动,如何保证连接被高效利用,有哪些优化空间。

electron 应用开发优秀实践

2022-08-09
阅读 9 分钟
2.5k
在团队中,我们因业务发展,需要用到桌面端技术,如离线可用、调用桌面系统能力。什么是桌面端开发?一句话概括就是:以 Windows 、macOS 和 Linux 为操作系统的软件开发。对此我们做了详细的技术调研,桌面端的开发方式主要有 Native 、 QT 、 Flutter 、 NW 、 Electron 、 Tarui 。其各自优劣势如下表格所示:

Redis 定长队列的探索和实践

2022-08-08
阅读 5 分钟
1.3k
vivo 互联网服务器团队 - Wang Zhi一、业务背景从技术的角度来说,技术方案的选型都是受限于实际的业务场景,都以解决实际业务场景为目标。在我们的实际业务场景中,需要以游戏的维度收集和上报行为数据,考虑数据的量级,执行尽最大努力交付且允许数据的部分丢弃。数据上报支持游戏的维度的批量上报,支持同一款游戏128...

基于微前端qiankun的多页签缓存方案实践

2022-08-02
阅读 9 分钟
3.6k
本文梳理了基于阿里开源微前端框架qiankun,实现多页签及子应用缓存的方案,同时还类比了多个不同方案之间的区别及优劣势,为使用微前端进行多页签开发的同学,提供一些参考。

从RabbitMQ平滑迁移到RocketMQ技术实战

2022-08-01
阅读 5 分钟
1.5k
大量业务使用消息中间件进行系统间的解耦、异步化、削峰填谷设计实现。公司内部前期基于RabbitMQ实现了一套高可用的消息中间件平台。随着业务的持续增长,消息体量随之增大,对消息中间件平台提出了更高的要求,此外在运维过程中也遇到了高可用难以保障,功能特性不足等诸多问题。基于遇到的这些问题,决定引入RocketMQ...

服务器内存故障预测居然可以这样做!

2022-07-26
阅读 6 分钟
2k
随着互联网业务的快速发展,基础设施的可用性也越来越受到业界的关注。内存发生故障的故障率高、频次多、影响大,这些对于上层业务而言都是不能接受的。

推荐系统-协同过滤在Spark中的实现

2022-07-25
阅读 20 分钟
1.3k
作者:vivo 互联网服务器团队-Tang Shutao现如今推荐无处不在,例如抖音、淘宝、京东App均能见到推荐系统的身影,其背后涉及许多的技术。本文以经典的协同过滤为切入点,重点介绍了被工业界广泛使用的矩阵分解算法,从理论与实践两个维度介绍了该算法的原理,通俗易懂,希望能够给大家带来一些启发。笔者认为要彻底搞懂...

工作流引擎在vivo营销自动化中的应用实践 | 引擎篇03

2022-07-19
阅读 5 分钟
1.3k
本文是《vivo营销自动化技术解密》的第4篇文章,分析了在营销自动化业务引入工作流技术的背景和工作流引擎的介绍,同时介绍了几种业界流行的开源工作流引擎特点,以及在项目自研开发过程中的设计思路和总结思考。

vivo官网APP全机型UI适配方案

2022-07-18
阅读 13 分钟
2.2k
日益新增的机型,给开发人员带来了很多的适配工作。代码能不能统一、apk能不能统一、物料如何选取、样式怎么展示等等都是困扰开发人员的问题,本方案就是介绍不同机型的共线方案,打消开发人员的疑虑。

RocketMQ之消费者启动与消费流程

2022-07-12
阅读 19 分钟
1.2k
RocketMQ是由阿里巴巴开源的分布式消息中间件,支持顺序消息、定时消息、自定义过滤器、负载均衡、pull/push消息等功能。RocketMQ主要由 Producer、Broker、Consumer 、NameServer四部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。NameServer充当名字路由服务,整体架构图如下所示:

CSS Houdini:用浏览器引擎实现高级CSS效果

2022-07-11
阅读 13 分钟
1.9k
Houdini被称之为Magic of styling and layout on the web,看起来十分神秘,但实际上,Houdini并非什么神秘组织或者神奇魔法,它是一系列与CSS引擎相关的浏览器API的总称。

Lepton 无损压缩原理及性能分析

2022-07-05
阅读 5 分钟
1.1k
作者:vivo 互联网数据库团队- Li Shihai本文主要介绍无损压缩图片的概要流程和原理,以及Lepton无损压缩在前期调研中发现的问题和解决方案。一、从一个游戏开始1.1 游戏找茬请拿出你的秒表计时,在15秒时间内找出下面图片的差异。时间到了,你发现两张图片的差异了吗?二、智者的成长在上面的游戏中,你可能你并没有发...

从0到1建设智能灰度数据体系:以vivo游戏中心为例

2022-07-04
阅读 7 分钟
1.2k
本文介绍了vivo游戏中心在灰度数据分析体系上的实践经验,从“实验思想-数学方法-数据模型-产品方案”四个层面提供了一套较为完整的智能灰度数据解决方案,以保障版本评估的科学性、项目进度以及灰度验证环节的快速闭环。该方案的亮点在于,指标异动根因分析方法的引入和全流程自动化产品方案的设计。

一种跳板机的实现思路

2022-06-28
阅读 7 分钟
1.3k
vivo 互联网运维团队- Yang Lei 本文介绍了一种跳板机实现思路,阐述了基本原理,并讲解了特点和相对优势。一、 跳板机思路简介本文所描述的跳板机(下文称为“jmp”)支持:Linux服务器Windows服务器其他终端(MySQL终端、Redis终端、网络设备终端 等等)有别于市面上常见的jumpserver方案,使用本文所搭建的跳板机将不会...

Elasticsearch 在地理信息空间索引的探索和演进

2022-06-27
阅读 17 分钟
1.1k
本文梳理了Elasticsearch对于数值索引实现方案的升级和优化思考,从2015年至今数值索引的方案经历了多个版本的迭代,实现思路从最初的字符串模拟到KD-Tree,技术越来越复杂,能力越来越强大,应用场景也越来越丰富。从地理位置信息建模到多维坐标,数据检索到数据分析洞察都可以看到Elasticsearch的身影。

剖析 SPI 在 Spring 中的应用

2022-06-21
阅读 29 分钟
1.2k
SPI(Service Provider Interface),是Java内置的一种服务提供发现机制,可以用来提高框架的扩展性,主要用于框架的开发中,比如Dubbo,不同框架中实现略有差异,但核心机制相同,而Java的SPI机制可以为接口寻找服务实现。SPI机制将服务的具体实现转移到了程序外,为框架的扩展和解耦提供了极大的便利。

vivo 容器集群监控系统架构与实践

2022-06-20
阅读 5 分钟
1.4k
从容器技术的推广以及 Kubernetes成为容器调度管理领域的事实标准开始,云原生的理念和技术架构体系逐渐在生产环境中得到了越来越广泛的应用实践。在云原生的体系下,面对高度的弹性、动态的应用生命周期管理以及微服务化等特点,传统的监控体系已经难以应对和支撑,因此新一代云原生监控体系应运而生。

vivo大规模 Kubernetes 集群自动化运维实践

2022-06-14
阅读 6 分钟
1.6k
随着vivo业务迁移到K8s的增长,我们需要将K8s部署到多个数据中心。如何高效、可靠的在数据中心管理多个大规模的K8s集群是我们面临的关键挑战。kubernetes的节点需要对OS、Docker、etcd、K8s、CNI和网络插件的安装和配置,维护这些依赖关系繁琐又容易出错。

如何在 Vue 项目中,通过点击 DOM 自动定位VSCode中的代码行?

2022-06-13
阅读 7 分钟
2.3k
现在大型的 Vue项目基本上都是多人协作开发,并且随着版本的迭代,Vue 项目中的组件数也会越来越多,如果此时让你负责不熟悉的页面功能开发,甚至你才刚刚加入这个项目,那么怎么样才能快速找到相关组件在整个项目代码中的文件位置呢?想必大家都有采取过以下这几种方法:

探究Presto SQL引擎(3)-代码生成

2022-06-07
阅读 21 分钟
1.4k
探究Presto SQL引擎 系列:第1篇《探究Presto SQL引擎(1)-巧用Antlr》介绍了Antlr的基本用法以及如何使用Antlr4实现解析SQL查询CSV数据,在第2篇《探究Presto SQL引擎(2)-浅析Join》结合了Join的原理,以及Join的原理,在Presto中的思路。

Kafka 负载均衡在 vivo 的落地实践

2022-06-06
阅读 10 分钟
1.6k
副本迁移是Kafka最高频的操作,对于一个拥有几十万个副本的集群,通过人工去完成副本迁移是一件很困难的事情。Cruise Control作为Kafka的运维工具,它包含了Kafka 服务上下线、集群内负载均衡、副本扩缩容、副本缺失修复以及节点降级等功能。显然,Cruise Control的出现,使得我们能够更容易的运维大规模Kafka集群。 备...

C/C++ 单元自动化测试解决方案实践

2022-05-31
阅读 5 分钟
2k
C/C++ 开发效率一直被业内开发人员诟病,单元测试开发效率也是如此,以至于开发人员不愿花时间来写单元测试。那么我们是不是可以通过改善编写单元测试的效率来提升项目的测试用例覆盖率?

理“ Druid 元数据”之乱

2022-05-30
阅读 11 分钟
1.5k
vivo 互联网大数据团队-Zheng Xiaofeng一、背景Druid 是一个专为大型数据集上的高性能切片和 OLAP 分析而设计的数据存储系统。由于Druid 能够同时提供离线和实时数据的查询,因此Druid最常用作为GUI分析、业务监控、实时数仓的数据存储系统。此外Druid拥有一个多进程,分布式架构,每个Druid组件类型都可以独立配置和扩...

Android 子线程 UI 操作真的不可以?

2022-05-24
阅读 19 分钟
2.8k
我们以水平移动的方块模拟App正在进行的动效(如:页面切换);可以看出,在Snackabr 弹窗弹出时,方块动效有明显的卡顿(移动至约1/3处)。

Kafka 万亿级消息实践之资源组流量掉零故障排查分析

2022-05-23
阅读 4 分钟
995
为了让读者能与小编在后续的问题分析中有更好的共鸣,小编先与各位读者朋友对齐一下我们 Kafka 集群的部署架构及服务接入 Kafka 集群的流程。

层层剖析一次 HTTP POST 请求事故

2022-05-17
阅读 7 分钟
2.2k
vivo 互联网服务器团队- Wei Ling本文主要讲述的是如何根据公司网络架构和业务特点,锁定正常请求被误判为跨域的原因并解决。一、问题描述某一个业务后台在表单提交的时候,报跨域错误,具体如下图:从图中可看出,报错原因为HTTP请求发送失败,由此,需先了解HTTP请求完整链路是什么。HTTP请求一般经过3个关卡,分别为D...

vivo 万台规模 HDFS 集群升级 HDFS 3.x 实践

2022-05-16
阅读 17 分钟
2k
在HDFS方面,支持了Erasure Coding、More than 2 NameNodes、Router-Based Federation、Standby NameNode Read、FairCallQueue、Intra-datanode balancer 等新特性。这些新特性在稳定性、性能、成本等多个方面带来诸多收益,我们打算将HDFS集群升级到HDFS 3.x 版本。

用户行为分析模型实践(二)—— 漏斗分析模型

2022-05-06
阅读 12 分钟
2.5k
在《用户行为分析模型实践(一)—— 路径分析模型》中,讲述了基于平台化查询中查询时间短、需要可视化的要求,并结合现有的存储计算资源以及具体需求,我们在实现中将路径数据进行枚举后分为两次进行合并。

Redis 内存优化在 vivo 的探索与实践

2022-05-05
阅读 10 分钟
3.2k
使用过 Redis 的同学应该都知道,它基于键值对(key-value)的内存数据库,所有数据存放在内存中,内存在 Redis 中扮演一个核心角色,所有的操作都是围绕它进行。