Puppeteer 入门与实战

2020-08-13
阅读 7 分钟
4.1k
Puppeteer 是 Chrome开发团队2017年发布的一个 Node.js包,提供了一组用来操纵Chrome的API,通俗来说就是一个Headless Chrome浏览器,这Headless Chrome也可以配置成有UI的 。利用Puppeteer可以做到爬取页面数据,页面截屏或者生成PDF文件,前端自动化测试(模拟输入/点击/键盘行为)以及捕获站点的时间线,分析网站性能...

Android 原生 SQLite 数据库的一次封装实践

2020-08-10
阅读 12 分钟
3.3k
本文主要讲述原生SQLite数据库的一次ORM封装实践,给使用原生数据库操作的业务场景(如:本身是一个SDK)带来一些启示和参考意义,以及跟随框架的实现思路对数据库操作、APT、泛型等概念更深一层的理解。

vivo 悟空活动中台 - H5 活动加载优化

2020-08-03
阅读 11 分钟
2.7k
本文首发于 vivo互联网技术 微信公众号  链接: [链接] 作者:悟空中台研发团队【悟空活动中台】系列往期精彩文章:《揭秘 vivo 如何打造千万级 DAU 活动中台 - 启航篇》 主要为大家讲述 vivo 活动中台的能力与创新。《悟空活动中台 - 微组件状态管理(上)》介绍了活动页内 RSC 组件之间的状态管理和背后的设计思路。《...

聊聊微前端的原理和实践

2020-07-27
阅读 7 分钟
2.3k
在项目迭代中,随着业务的发展壮大,项目的功能模块通常也会越来越多。可能原来所有的代码模块都在一个仓库里,由一个团队负责。但随着功能模块越来越多,一个团队可能负责不过来,需要多个团队来专门维护不同的模块。相应的代码也会被拆到多个仓库里,并且各模块能独立开发、部署更新。通常虽然项目被拆成了多个模块,...

724一起聊聊运维人的故事(内附赠书福利)

2020-07-24
阅读 2 分钟
1.5k
运维人 为每一次告警而 “心动”,换来 7x24 的稳定; 业务正常运行的护航者,默默无闻的幕后英雄。 今天 7月24日 运维人的节日 想对所有运维人说声“辛苦啦” 借此机会 我们联合博文视点为大家送福利啦 以下是本次的福利sh 《SRE:Google运维解密》 在本书中,Google SRE的关键成员解释了他们是如何对软件进行生命周期的整...

前端科普系列(4):Babel —— 把 ES6 送上天的通天塔

2020-07-20
阅读 15 分钟
1.8k
在上一节 《CommonJS:不是前端却革命了前端》中,我们聊到了 ES6 Module,它是 ES6 中对模块的规范,ES6 是 ECMAScript 6.0 的简称,泛指 JavaScript 语言的下一代标准,它的第一个版本 ES2015 已经在 2015 年 6 月正式发布,本文中提到的 ES6 包括 ES2015、ES2016、ES2017等等。在第一节的《Web:一路前行一路忘川》中...

OpenTSDB 数据存储详解

2020-07-16
阅读 7 分钟
2k
随着互联网、尤其是物联网的发展,我们需要把各种类型的终端实时监测、检查与分析设备所采集、产生的数据记录下来,在有时间的坐标中将这些数据连点成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。

Oracle JDK7 bug 发现、分析与解决实战

2020-07-13
阅读 9 分钟
1.3k
众所周知,Oracle JDK  是 Java 语言的绝对权威,很多时候 JDK 与 Java 语言近似一个概念。但我们始终要保持实事求是的精神,敢于质疑。本文记录了一次线上troubleshoot 实战,包含问题分析、解决并提交 Oracle JDK bug 的核心过程。

前端科普系列(3):CommonJS 不是前端却革命了前端

2020-07-09
阅读 14 分钟
2.7k
上一篇《前端科普系列(2):Node.js 换个角度看世界》,我们聊了 Node.js 相关的东西,Node.js 能在诞生后火到如此一塌糊涂,离不开它成熟的模块化实现,Node.js 的模块化是在 CommonJS 规范的基础上实现的。那 CommonJS 又是什么呢?

vivo悟空活动中台 - 微组件多端探索

2020-07-06
阅读 11 分钟
2.9k
本文首发于 vivo互联网技术 微信公众号  链接:[]([链接] [链接] 作者:悟空中台研发团队 【悟空活动中台】系列往期精彩文章: 《揭秘 vivo 如何打造千万级 DAU 活动中台 - 启航篇》 主要为大家讲述 vivo 活动中台的能力与创新。 《悟空活动中台 - 微组件状态管理(上)》介绍了活动页内 RSC 组件之间的状态管理和背后的...

一篇文章教你从入门到精通 Google 指纹验证功能

2020-06-22
阅读 10 分钟
2.8k
Google 从 Android 6.0开始,提供了开放的指纹识别相关 API,通过此篇文章可以帮助开发者接入指纹验证的基础功能,并且提供了系统应用基于指纹验证的功能扩展,如指纹验证登录功能核心流程图和关键代码分析。

深入理解web协议(二):DNS、WebSocket

2020-06-18
阅读 10 分钟
2.5k
本文首发于 vivo互联网技术 微信公众号 链接:[链接] 作者:Wu Yue本文系统性的讲述了 DNS 协议与 WebSocket 协议的重要细节。一、DNS 1、Linux dig命令我们首先通过 Linux 下的dig命令来了解一下 DNS 是怎么做域名解析的。我们首先输入命令: {代码...} 看下标注的红框,从左到右依次代表:域名的名称 也就是服务器名称...

开发框架文档体系化的思考

2020-06-15
阅读 6 分钟
5k
本文对自己工作中碰到的大量日常咨询进行经验总结,说明一款开发框架文档应该要写哪些内容。从功能框架、特性使用流程、功能描述三个维度说明文档编写的逻辑性。希望能给同样从事开发框架的开发与维护的同行带来一点启发。

如何做一次完美的 ABTest?

2020-06-11
阅读 6 分钟
9.6k
越来越多的公司都在尝试 ABTest,要么是自己搭建系统,要么依赖于第三方的系统。那么在我们进行ABTest的时候,必备的基础知识有哪些?该如何一步一步的进行AB实验呢?本文将根据 AB 实验的流程带领大家一窥究竟。

vivo 悟空活动中台-基于行为预设的动态布局方案

2020-06-08
阅读 9 分钟
1.7k
本文首发于 vivo互联网技术 微信公众号  链接: [链接] 作者:悟空中台研发团队 【悟空活动中台】系列往期精彩文章: 《揭秘 vivo 如何打造千万级 DAU 活动中台 - 启航篇》 主要为大家讲述 vivo 活动中台的能力与创新。 《悟空活动中台 - 微组件状态管理(上)》介绍了活动页内 RSC 组件之间的状态管理和背后的设计思路...

图解 Promise 实现原理(四)—— Promise 静态方法实现

2020-06-01
阅读 7 分钟
1.8k
很多同学在学习 Promise 时,知其然却不知其所以然,对其中的用法理解不了。本系列文章由浅入深逐步实现 Promise,并结合流程图、实例以及动画进行演示,达到深刻理解 Promise 用法的目的。

MySQL 的 crash-safe 原理解析

2020-05-25
阅读 7 分钟
2.2k
MySQL作为当下最流行的开源关系型数据库,有一个很关键和基本的能力,就是必须能够保证数据不会丢。那么在这个能力背后,MySQL是如何设计才能保证不管在什么时间崩溃,恢复后都能保证数据不会丢呢?有哪些关键技术支撑了这个能力?本文将为我们一一揭晓。

vivo 悟空活动中台 - 微组件状态管理(下)

2020-05-21
阅读 12 分钟
2k
本文首发于 vivo互联网技术 微信公众号  链接:[]([链接] [链接][]([链接] 作者:悟空中台研发团队 【悟空活动中台】系列往期精彩文章: 《揭秘 vivo 如何打造千万级 DAU 活动中台 - 启航篇》 主要为大家讲述 vivo 活动中台的能力与创新。 《悟空活动中台 - 微组件状态管理(上)》介绍了活动页内微组件之间的状态管理和...

图解 Promise 实现原理(三)—— Promise 原型方法实现

2020-05-18
阅读 8 分钟
1.3k
Promise 是异步编程的一种解决方案,它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。更多关于 Promise 的介绍请参考阮一峰老师的ES6入门 之 Promise 对象。

领域驱动设计(DDD)实践之路(三):如何设计聚合

2020-05-14
阅读 13 分钟
3.5k
本文首发于 vivo互联网技术 微信公众号  链接:[链接] 作者:wenbo zhang 【领域驱动设计实践之路】往期精彩文章: 《领域驱动设计(DDD)实践之路(一)》 主要讲述了战略层面的DDD原则 《领域驱动设计(DDD)实践之路(二):事件驱动与CQRS》分析了如何应用事件来分离软件核心复杂度。 这是“领域驱动设计实践之路”系列的第三...

深入浅出开源监控系统Prometheus(上)

2020-05-11
阅读 6 分钟
2.5k
Prometheus是继Kubernetes(k8s)之后,CNCF毕业的第二个开源项目,其来源于Google的Borgmon。本文从“监控”这件事说起,深入浅出Prometheus的架构原理、目标发现、指标模型、聚合查询等设计核心点。

你还应该知道的哈希冲突解决策略

2020-05-06
阅读 5 分钟
2.6k
哈希是一种通过对数据进行压缩, 从而提高效率的一种解决方法,但由于哈希函数有限,数据增大等缘故,哈希冲突成为数据有效压缩的一个难题。本文主要介绍哈希冲突、解决方案,以及各种哈希冲突的解决策略上的优缺点。

反应式编程 RxJava 设计原理解析

2020-04-27
阅读 4 分钟
1.4k
ReactiveX 的全称为Reactive Extension,一般缩写为 Rx,即我们平常所说的反应式编程。其设计原理主要使用了观察者模式,区分数据的生产者和消费者,通过事件流的方式进行数据的异步处理。

图解 Promise 实现原理(二)—— Promise 链式调用

2020-04-23
阅读 9 分钟
1.5k
很多同学在学习 Promise 时,知其然却不知其所以然,对其中的用法理解不了。本系列文章由浅入深逐步实现 Promise,并结合流程图、实例以及动画进行演示,达到深刻理解 Promise 用法的目的。

悟空活动中台 - 微组件状态管理(上)

2020-04-20
阅读 9 分钟
1.9k
通过《揭秘 vivo 如何打造千万级 DAU 活动中台 - 启航篇》的技术揭秘,相信我们对于 RSC 有了更多的了解。RSC(remote service component) 即远程服务化组件,通过热插拔的机制,可视化配置,即插即用,快速构建活动页面,是活动页面的核心组成单元。

领域驱动设计(DDD)实践之路(二):事件驱动与CQRS

2020-04-13
阅读 12 分钟
5.4k
这是“领域驱动设计实践之路”系列的第二篇文章,分析了如何应用事件来分离软件核心复杂度。探究CQRS为什么广泛应用于DDD项目中,以及如何落地实现CQRS框架。当然我们也要警惕一些失败的教训,利弊分析以后再去抉择正确的应对之道。

Android 多语言动态更新方案探索

2020-04-07
阅读 37 分钟
3.2k
最近做的项目需要支持几十种语言,很多小语种在不认识的人看来跟乱码一样,翻译一般是由翻译公司翻译的,翻译完成后再导入到项目里面,这就容易存在一些问题。

图解 Promise 实现原理(一)—— 基础实现

2020-03-30
阅读 7 分钟
2k
很多同学在学习 Promise 时,知其然却不知其所以然,对其中的用法理解不了。本系列文章由浅入深逐步实现 Promise,并结合流程图、实例以及动画进行演示,达到深刻理解 Promise 用法的目的。

vivo 大规模特征存储实践

2020-03-23
阅读 9 分钟
2.8k
AI 技术在 vivo 内部应用越来越广泛,其中特征数据扮演着至关重要的角色,用于离线训练、在线预估等场景,我们需要设计一个系统解决各种特征数据可靠高效存储的问题。

揭秘 vivo 如何打造千万级 DAU 活动中台 - 启航篇

2020-03-16
阅读 10 分钟
3k
随着 vivo 互联网用户量级不断增加,应用商店、官网商场、 游戏中心和浏览器等 vivo 官方产品相继进入存量用户运营时代。在这种大背景下,营销活动日益增多,传统活动开发模式已经不能满足井喷式且多样化的需求,项目开发和产品运营过程中遇到种种困难: