作为前端开发者,事件循环(Event Loop)是必须掌握的内容,它是前端极其重要的基础知识。在日常的工作或者面试中也是一个非常高频的话题。 理解 JavaScript 的事件循环往往伴随着宏任务和微任务、JavaScript 单线程执行过程及浏览器异步机制等相关问题,而浏览器和 NodeJS 中的事件循环实现也是有很大差别。熟悉事件循环,了解浏览器运行机制将对我们理解 JavaScript 的执行过程,以及在排查代码运行问题时有很大帮助。 本文将在浏览器异步执行原理和事件驱动的理解基础上,详细介绍 JavaScript 的事件循环机制以及在浏览器和 NodeJS 中的不同表现。
哈啰好物商城中,存在大量的长列表数据,例如下图列出的商品瀑布流、特卖会场列表等。用户滑动到页面底部,则加载新的数据进来,页面上的DOM节点越来越多,容易导致页面卡顿,交互不流畅。针对这种长列表的场景,我们可以采用虚拟列表来做优化。
K8s丰富的controller为容器编排提供了极大的便利,其中针对单次任务和定时任务的需求,K8s提供了Job和Cronjob控制器来满足非常驻容器编排的需要。由于这种非常驻的特征,任务容器的时长可能很短(如定时清理数据的任务),甚至有些任务因为一启动就运行失败出现秒退的情况,这给采集Job日志带来了很大的挑战。 本文将基于高性能轻量级可观测采集器iLogtail探讨Job日志的多种采集方案,分析这些方案在不同场景下对日志采集所能做到稳定性保证以及方案优化空间。
为了给用户提供更好的视频观看体验,B站已研发出很多先进的视频图像分析与处理算法。在视频转码任务中,这些算法既可以改善视频画质,也可以促进转码效率的提升,从而实现更高清、更流畅的视频效果。研发的算法种类繁多,用途各异,同时B站不同业务对于算法的要求也各不相同。为了能够对各种基本算法进行高效部署和管理,同时向各个业务方提供简单灵活且统一的调用接口,B站研发了一套功能强大的视频图像分析与处理引擎——BANG(Bilibili video/image Analyzing and processiNg enGine)。
首页作为严选APP的核心页面和应用入口,保障线上业务的稳定可靠是其基本职责。从用户维度来看,首页分为新客和老客两条独立的业务线,聚合了APP内各类频道入口进行流量分发。作为一个电商类应用,首页还承载着每年各类大促活动会场入口。在算法推荐方面,首页“猜你喜欢”模块根据个性化将商品feeds流和各类卡片进行混排展示。复杂、异构的页面布局在性能上提出了较高的要求,通过组件化界面方案使APP首页具备较好的性能表现和一定的灵活性,并且有效的兼顾了Android、iOS双端一致性。随着业务的飞速迭代,首页还需要具备一定的动态化能力,以应对多变的产品需求。这篇文章主要从基础架构方面来总结严选APP首页的技术演进之路。
微服务架构的快速发展使得分布式链路追踪系统成为观测体系中越来越重要的组件。字节跳动的分布式链路追踪系统经历了数年的发展后,已覆盖了字节的绝大部分在线业务,完成了对数万微服务和数百万微服务实例的在线链路追踪。在经典的指标观测分析和单请求链路追踪的基础上,如何从浩瀚如海的分布式链路数据中进一步挖掘出更高层次的信息,为业务的架构优化、服务治理、成本优化等场景提供更高效的数据支持,成为了下一步亟待回答的问题。 本次分享主要介绍我们构建海量链路数据分析计算系统的实践经验,以及一些具体的落地场景。
本文从装饰者模式的核心思想到与其他设计模式的横向对比,从代码示例到业务实战,向读者娓娓呈现装饰者模式的真貌。深入浅出的JDK源码透析,使用场景的利弊权衡,真的值得一阅!
什么是微前端 简单来说:微前端是一种架构风格,将独立交付的前端应用程序组合成一个更大的整体。保证产品体验的同时提升开发体验。 目前较为流行的微前端架构的实现方案:在主应用中通过 loader 加载子应用,通过 router 判断子应用的加载时机,通过 store 来处理跨应用间的数据共享。在用户无感知的情况下将前端应用拆分为可独立运行、维护的多个子应用。