草庐IT

Angular SSR 探究

一般来说,普通的Angular应用是在浏览器中运行,在DOM中对页面进行渲染,并与用户进行交互。而AngularUniversal是在服务端进行渲染(Server-SideRendering,SSR),生成静态的应用程序网页,然后在客户端展示,好处是可以更快地进行渲染,在提供完整的交互之前就可以为用户提供内容展示。本文是在Angular14环境中完成,有些内容对于新的Angular版本可能并不适用,请参考Angular官方文档。使用SSR的好处对SEO更加友好虽然现在包括Google在内的某些搜索引擎和社交媒体声称已经能支持对由JavaScript(JS)驱动的SPA(Single-PageA

算法落地探究:智能运维远没有说得“智能”

一、智能运维现状大家对智能问答系统都很熟悉,目前许多APP都有智能问答系统——后台是一个机器人,而不是真正的人回答问题。当前众多研究者在对智能问答系统进行研究,提出了许多算法和技术,GoogleScholar上关于智能问答系统的文章有30多万不到35万篇。但实际上,智能问答系统远没有达到真正的智能,回答的结果时常是答非所问,那么就会造成海量的算法和技术与差强人意的效果之间的偏差。智能运维到现在大概有六七年的发展历程,在此期间智能运维算法一直在快速地发展,包括对性能指标的时间序列的数据、对日志告警的数据以及近两年对CMDB、调用链等图的数据。算法的类型和效果也在不断提升,包括指标异常检测、容量预

算法落地探究:智能运维远没有说得“智能”

一、智能运维现状大家对智能问答系统都很熟悉,目前许多APP都有智能问答系统——后台是一个机器人,而不是真正的人回答问题。当前众多研究者在对智能问答系统进行研究,提出了许多算法和技术,GoogleScholar上关于智能问答系统的文章有30多万不到35万篇。但实际上,智能问答系统远没有达到真正的智能,回答的结果时常是答非所问,那么就会造成海量的算法和技术与差强人意的效果之间的偏差。智能运维到现在大概有六七年的发展历程,在此期间智能运维算法一直在快速地发展,包括对性能指标的时间序列的数据、对日志告警的数据以及近两年对CMDB、调用链等图的数据。算法的类型和效果也在不断提升,包括指标异常检测、容量预

探究Presto SQL引擎(4)-统计计数

一、背景学习Hadoop时接触的第一个样例就是wordcount,即统计文本中词的数量。各种BI、营销产品中不可或缺的模块就是统计报表。在常见的搜索分页模块,也需要提供总记录数。统计在SQL引擎中可谓最基础、最核心的能力之一。可能由于它太基础了,就像排序一样,我们常常会忽视它背后的原理。通常的计数是非常简单的,例如统计文本行数在linux系统上一个wc命令就搞定了。除了通常的计数,统计不重复元素个数的需求也非常常见,这种统计称为基数统计。对于Presto这种分布式SQL引擎,计数的实现原理值得深入研究,特别是基数统计。关于普通计数和基数计数,最典型的例子莫过于PV/UV。二、基数统计主要算法在

探究Presto SQL引擎(4)-统计计数

一、背景学习Hadoop时接触的第一个样例就是wordcount,即统计文本中词的数量。各种BI、营销产品中不可或缺的模块就是统计报表。在常见的搜索分页模块,也需要提供总记录数。统计在SQL引擎中可谓最基础、最核心的能力之一。可能由于它太基础了,就像排序一样,我们常常会忽视它背后的原理。通常的计数是非常简单的,例如统计文本行数在linux系统上一个wc命令就搞定了。除了通常的计数,统计不重复元素个数的需求也非常常见,这种统计称为基数统计。对于Presto这种分布式SQL引擎,计数的实现原理值得深入研究,特别是基数统计。关于普通计数和基数计数,最典型的例子莫过于PV/UV。二、基数统计主要算法在

探究Presto SQL引擎(2)-浅析Join

在《探究PrestoSQL引擎(1)-巧用Antlr》中,我们介绍了Antlr的基本用法以及如何使用Antlr4实现解析SQL查询CSV数据,更加深入理解Presto查询引擎支持的SQL语法以及实现思路。本次带来的是系列文章的第2篇,本文梳理了Join的原理,以及Join算法在Presto中的实现思路。通过理论和实践的结合,可以在理解原理的基础上,更加深入理解Join算法在OLAP场景下的工程落地技巧,比如火山模型,列式存储,批量处理等思想的应用。一、背景在业务开发中使用数据库,通常会有规范不允许过多表的Join。例如阿里巴巴开发手册中,有如下的规定:【强制】超过三个表禁止Join。需要Joi

探究Presto SQL引擎(2)-浅析Join

在《探究PrestoSQL引擎(1)-巧用Antlr》中,我们介绍了Antlr的基本用法以及如何使用Antlr4实现解析SQL查询CSV数据,更加深入理解Presto查询引擎支持的SQL语法以及实现思路。本次带来的是系列文章的第2篇,本文梳理了Join的原理,以及Join算法在Presto中的实现思路。通过理论和实践的结合,可以在理解原理的基础上,更加深入理解Join算法在OLAP场景下的工程落地技巧,比如火山模型,列式存储,批量处理等思想的应用。一、背景在业务开发中使用数据库,通常会有规范不允许过多表的Join。例如阿里巴巴开发手册中,有如下的规定:【强制】超过三个表禁止Join。需要Joi

探究Presto SQL引擎(1)-巧用Antlr

一、背景自2014年大数据首次写入政府工作报告,大数据已经发展7年。大数据的类型也从交易数据延伸到交互数据与传感数据。数据规模也到达了PB级别。大数据的规模大到对数据的获取、存储、管理、分析超出了传统数据库软件工具能力范围。在这个背景下,各种大数据相关工具相继出现,用于应对各种业务场景需求。从Hadoop生态的Hive,Spark,Presto,Kylin,Druid到非Hadoop生态的ClickHouse,Elasticsearch,不一而足...这些大数据处理工具特性不同,应用场景不同,但是对外提供的接口或者说操作语言都是相似的,即各个组件都是支持SQL语言。只是基于不同的应用场景和特性

探究Presto SQL引擎(1)-巧用Antlr

一、背景自2014年大数据首次写入政府工作报告,大数据已经发展7年。大数据的类型也从交易数据延伸到交互数据与传感数据。数据规模也到达了PB级别。大数据的规模大到对数据的获取、存储、管理、分析超出了传统数据库软件工具能力范围。在这个背景下,各种大数据相关工具相继出现,用于应对各种业务场景需求。从Hadoop生态的Hive,Spark,Presto,Kylin,Druid到非Hadoop生态的ClickHouse,Elasticsearch,不一而足...这些大数据处理工具特性不同,应用场景不同,但是对外提供的接口或者说操作语言都是相似的,即各个组件都是支持SQL语言。只是基于不同的应用场景和特性

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

探究PrestoSQL引擎系列:第1篇《探究PrestoSQL引擎(1)-巧用Antlr》介绍了Antlr的基本用法以及如何使用Antlr4实现解析SQL查询CSV数据,在第2篇《探究PrestoSQL引擎(2)-浅析Join》结合了Join的原理,以及Join的原理,在Presto中的思路。本文是系列第3篇,介绍基于Antlr实现where条件的解析原理,并对比了直接解析与代码生成实现两种实现思路的性能,经实验基于代码生成的实现相比直接解析有3倍的性能提升。一、背景问题业务开发过程中,使用SQL进行数据筛选(where关键词)和关联(join关键词)是编写SQL语句实现业务需求最常见、最基础