前端科普系列(2):Node.js 换个角度看世界

2020-03-12
阅读 7 分钟
1.9k
本文首发于 vivo互联网技术 微信公众号  链接: []([链接] [链接] 作者:孔垂亮【前端科普系列】往期精彩内容: 《前端科普系列(1):前端简史》主要介绍 web 前端发展的历史、大事件。

分布式定时任务调度框架实践

2020-03-09
阅读 11 分钟
2.9k
分布式任务调度框架几乎是每个大型应用必备的工具,本文介绍了任务调度框架使用的需求背景和痛点,对业界普遍使用的开源分布式任务调度框架的使用进行了探究实践,并分析了这几种框架的优劣势和对自身业务的思考。

深入学习和理解 Redux

2020-03-05
阅读 10 分钟
1.3k
Redux官网上是这样描述Redux,Redux is a predictable state container for JavaScript apps.(Redux是JavaScript状态容器,提供可预测性的状态管理)。 目前Redux GitHub有5w多star,足以说明 Redux 受欢迎的程度。

前端科普系列(1):前端简史

2020-03-02
阅读 10 分钟
2.2k
回答这个问题之前,我想起了一道非常经典的前端面试题:“从输入URL到页面呈现在你面前到底发生了什么?”这个题目可以回答的很简单,但仔细思考,也可以回答的很深,这个过程涉及的东西很多。先看一张图:

领域驱动设计(DDD)实践之路(一)

2020-02-24
阅读 10 分钟
3.9k
领域驱动设计(Domain Driven Design,DDD)其实并非新理论,大家可以看看 Eric Evans 编著的《领域驱动设计》原稿首版是2003年,距今已十余年时间。与现在的分布式、微服务相比,绝对是即将步入中年的“老家伙”了。

浅谈移动端过长文本溢出显示省略号的实现方案

2020-02-20
阅读 4 分钟
2.7k
本文首发于 vivo互联网技术 微信公众号  链接: [链接] 作者:何彦军 目前在移动端开发的展示界面中,如果一段文本的数量过长,受限于屏幕的宽高等因素,有可能不能完全显示,这个时候就会把溢出的文本显示成省略号。 最近就亲身经历了一系列类似的需求,于是这里做个总结和记录。 首先一个最基本的需求就是当文本超过一...

浅谈自动化测试

2020-02-17
阅读 5 分钟
3.8k
本文首先介绍了自动化测试的概念、分类和现状,并分别对不同端上的自动化测试实现原理进行了详细地分析和阐述,通过对目前主流的一些自动化测试框架和工具的比较,指出了当前不同端上实施自动化测试的痛点和困难。

Tomcat 优雅关闭之路

2020-02-13
阅读 4 分钟
1.8k
本文通过阅读Tomcat启动和关闭流程的源码,深入分析不同的Tomcat关闭方式背后的原理,让开发人员能够了解在使用不同的关闭方式时需要注意的点,避免因JVM进程异常退出导致的各种非预见性错误。

InnoDB 事务加锁分析

2020-02-10
阅读 5 分钟
1.2k
一般大家对数据库事务的了解可能停留在事务的ACID特性以及事务4种不同的隔离级别层面上,而对于事务 4 种不同隔离级别如何实现了解相对较少。

Tomcat 9.0.26 高并发场景下DeadLock问题排查与修复

2020-01-13
阅读 4 分钟
3k
本文首发于 vivo互联网技术 微信公众号  链接:[链接] 作者:黄卫兵、陈锦霞 一、Tomcat容器 9.0.26 版本 Deadlock 问题 1.1 问题现象 1.1.1  发生 Deadlock 的背景 某接口/get.do压测,3分钟后,成功事务数TPS由1W骤降至0。 1.1.2  Tomcat服务器出现大量的CLOSE_WAIT 被压测服务器,出现TCP CLOSE_WAIT状态个数在200~2W...

Kotlin 协程真的比 Java 线程更高效吗?

2020-01-10
阅读 11 分钟
6.1k
协程的概念本身并不新鲜,使用C++加上内嵌汇编,一个基本的协程模型50行代码之内就可以完全搞出来。早在2013年国内就有团队开源了号称支持千万并发的C++协程库 libco。

Spark 数据倾斜及其解决方案

2019-12-30
阅读 8 分钟
2.6k
本文首发于 vivo互联网技术 微信公众号 [链接] 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平台、移动浏览器、推荐广告和大数据、人工智能等相关开发和架构。目前在vivo智能平台中心从事 AI中台建设以及广告推荐业务。擅长各种业务形态的业务架构、平台化以及各种业务解...

大数据平台架构设计探究

2019-12-23
阅读 5 分钟
5.2k
近年来,随着IT技术与大数据、机器学习、算法方向的不断发展,越来越多的企业都意识到了数据存在的价值,将数据作为自身宝贵的资产进行管理,利用大数据和机器学习能力去挖掘、识别、利用数据资产。如果缺乏有效的数据整体架构设计或者部分能力缺失,会导致业务层难以直接利用大数据大数据,大数据和业务产生了巨大的鸿...

探究JS V8引擎下的“数组”底层实现

2019-12-17
阅读 7 分钟
2.8k
JavaScript 中的数组有很多特性:存放不同类型元素、数组长度可变等等,这与数据结构中定义的数组结构或者C++、Java等语言中的数组不太一样,那么JS数组的这些特性底层是如何实现的呢,我们打开V8引擎的源码,从中寻找到了答案。V8中对数组做了一层封装,使其有两种实现方式:快数组和慢数组,快数组底层是连续内存,通...

JavaScript 引擎 V8 执行流程概述

2019-12-16
阅读 7 分钟
3.5k
本文主要讲解的是V8的技术,是V8的入门篇,主要目的是了解V8的内部机制,希望对前端,快应用,浏览器,以及nodejs同学有些帮助。这里不涉及到如何编写优秀的前端,只是对JS内部引擎技术的讲解。

Glide生命周期原理

2019-12-10
阅读 20 分钟
2.4k
Android App中图片的展示是很基本也很重要的一个功能,在Android平台上有很多的图片加载解决方案,但是官方认可的是Glide。Android App的页面是有生命周期的,Glide比较好的一个功能就是具有生命周期管理功能,能够根据页面和APP的生命周期来管理图片的加载和停止,也开放接口供用户在内存紧张时手动进行内存管理。本文...

一文了解 Consistent Hash

2019-11-25
阅读 8 分钟
1.9k
在分布式环境下面,我们经常会通过一定的规则来进行数据分布的定义,本文描述的取模算法和一致性 Hash(Consistent Hash)是通过一定规则产生一个key,对这个key进行一定规则的运算,得出这个数据该去哪儿。

vivo web service:亿万级规模web服务引擎架构

2019-11-18
阅读 3 分钟
3.1k
vivo web service是开发团队围绕奇点内核打造出的基于vivo手机平台的web服务引擎,该服务引擎从浏览器产品线中经过多年迭代而出。除了提供可靠的基础Web服务,服务引擎还集成了非常强大的扩展功能。本文从架构方面对该服务引擎进行一次简单剖析,帮助读者对vivo web service有一个整体了解。

如何编写高质量的 JS 函数(4) --函数式编程[实战篇]

2019-11-11
阅读 11 分钟
3.2k
本文首发于 vivo互联网技术 微信公众号  链接:[链接] 作者:杨昆 【编写高质量函数系列】,往期精彩内容:《如何编写高质量的 JS 函数(1) -- 敲山震虎篇》介绍了函数的执行机制,此篇将会从函数的命名、注释和鲁棒性方面,阐述如何通过 JavaScript 编写高质量的函数。 《如何编写高质量的 JS 函数(2)-- 命名/注释/鲁...

浅谈Kotlin中的函数

2019-11-04
阅读 13 分钟
1.8k
Kotlin,已经被Android官方宣布 kotlin first 的存在,去翻 Android 官方文档的时候,发现提供的示例代码已经变成了 Kotlin。Kotlin的务实作风,提供了很多特性帮助开发者减少冗余代码的编写,可以提高效率,也能减少异常。

为什么 JavaScript 中 0.1+0.2 不等于 0.3 ?

2019-10-28
阅读 3 分钟
3.2k
在 js 中进行数学的运算时,会出现0.1+0.2=0.300000000000000004的结果,一开始认为是浮点数的二进制存储导致的精度问题,但这似乎不能很好的解释为什么在同样的存储方式下0.3+0.4=0.7可以得到正确的结果。本文主要通过浮点数的二进制存储及运算,和IEEE754下的舍入规则,解释为何会出现这种情况。

深入理解 web 协议(一)- http 包体传输

2019-10-21
阅读 15 分钟
2.8k
开坑这个系列的原因,主要是在大前端学习的过程中遇到了不少跟web协议有关的问题,之前对这一块的了解仅限于用charles抓个包,基本功欠缺。强迫症发作的我决定这一次彻底将web协议搞懂搞透,如果你遇到了和我一样的问题,例如

Glide缓存流程

2019-10-14
阅读 23 分钟
2.3k
Android上图片加载的解决方案有多种,但是官方认可的是Glide。Glide提供简洁易用的api,整个框架也方便扩展,比如可以替换网络请求库,同时也提供了完备的缓存机制,应用层不需要自己去管理图片的缓存与获取,框架会分成内存缓存,文件缓存和远程缓存。本文不会从简单的使用着手,会把重点放在缓存机制的分析上。

如何编写高质量的 JS 函数(3) --函数式编程[理论篇]

2019-10-07
阅读 11 分钟
7.9k
本文首发于 vivo互联网技术 微信公众号  链接:[链接] 作者:杨昆 【编写高质量函数系列】中,《如何编写高质量的 JS 函数(1) -- 敲山震虎篇》介绍了函数的执行机制,此篇将会从函数的命名、注释和鲁棒性方面,阐述如何通过 JavaScript 编写高质量的函数。 《如何编写高质量的 JS 函数(2)-- 命名/注释/鲁棒篇》从函...

Tomcat 应用中并行流带来的类加载问题

2019-09-23
阅读 5 分钟
1.6k
随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)这一特性提升代码执行效率。但是,作者发现在 Tomcat 容器中使用并行流会出现动态加载类失败的情况,通过对比 Tomcat 多个版本的源码,结合并行流和 JVM 类加载机制的原理,成功定位到问题来源。本文对这个问题展开分析,并给出解决方案。

函数式编程杂谈

2019-09-16
阅读 6 分钟
2.1k
比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断演进,逐层推导出复杂的运算。本文通过函数式编程的一些趣味用法来阐述学习函数式编程的奇妙之处。

深入理解 Java 中 SPI 机制

2019-09-09
阅读 6 分钟
2.4k
SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,本文由浅入深地介绍了Java SPI机制。

如何编写高质量的 JS 函数(2) -- 命名/注释/鲁棒篇

2019-09-02
阅读 8 分钟
5k
本文首发于 vivo互联网技术 微信公众号  链接:[链接] 作者:杨昆 上篇 《如何编写高质量的 JS 函数(1) -- 敲山震虎篇 》介绍了函数的执行机制,此篇将会从函数的命名、注释和鲁棒性方面,阐述如何编写高质量的 JS 函数。 (一)函数命名 一、目前前端的函数命名存在什么问题 从上图可以知道,命名和缓存是计算机科学...

如何编写高质量的 JS 函数(1) -- 敲山震虎篇

2019-08-26
阅读 9 分钟
2.8k
如何通过 JavaScript 编写高质量的函数,这是一个很难回答的问题,不同人心中对高质量有自己的看法,这里我将全面的阐述我个人对如何编写高质量函数的一些看法。看法可能不够全面,也可能会有一些错误的见解,欢迎一起讨论,就像过日子的人,小吵小闹总会不经意的出现,一颗包容的心莫过于是最好的 best practice 。

Kafka 原理和实战

2019-08-19
阅读 23 分钟
6.5k
本文首发于 vivo互联网技术 微信公众号 [链接] 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平台、移动浏览器、推荐广告和大数据、人工智能等相关开发和架构。目前在vivo智能平台中心从事 AI中台建设以及广告推荐业务。擅长各种业务形态的业务架构、平台化以及各种业务解...