ClickHouse SQL 语法极简教程

ClickHouse SQL 语法极简教程

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。

在传统的行式数据库系统中,数据按如下顺序存储:

Row

WatchID

JavaEnable

Title

GoodEvent

EventTime

#0

89354350662

1

Investor Relations

1

2016-05-18 05:19:20

#1

90329509958

0

Contact us

1

2016-05-18 08:10:20

#2

89953706054

1

Mission

1

2016-05-18 07:38:00

#N

处于同一行中的数据总是被物理的存储在一起。

常见的行式数据库系统有:MySQL、Postgres和MS SQL Server。

在列式数据库系统中,数据按如下的顺序存储:

Row:

#0

#1

#2

#N

WatchID:

89354350662

90329509958

89953706054

JavaEnable:

1

0

1

Title:

Investor Relations

Contact us

Mission

GoodEvent:

1

1

1

EventTime:

2016-05-18 05:19:20

2016-05-18 08:10:20

2016-05-18 07:38:00

这些示例只显示了数据的排列顺序。来自不同列的值被单独存储,来自同一列的数据被存储在一起。

常见的列式数据库有: Vertica、 Paraccel (Actian Matrix,Amazon Redshift)、 Sybase IQ、 Exasol、 Infobright、 InfiniDB、 MonetDB (VectorWise, Actian Vector)、 LucidDB、 SAP HANA、 Google Dremel、 Google PowerDrill、 Druid、 kdb+。

不同的数据存储方式适用不同的业务场景,数据访问的场景包括:进行了何种查询、多久查询一次以及各类查询的比例;每种类型的查询(行、列和字节)读取多少数据;读取数据和更新之间的关系;使用的数据集大小以及如何使用本地的数据集;是否使用事务,以及它们是如何进行隔离的;数据的复制机制与数据的完整性要求;每种类型的查询要求的延迟与吞吐量等等。

系统负载越高,依据使用场景进行定制化就越重要,并且定制将会变的越精细。没有一个系统能够同时适用所有不同的业务场景。如果系统适用于广泛的场景,在负载高的情况下,要兼顾所有的场景,那么将不得不做出选择。是要平衡还是要效率?

OLAP场景的关键特征

  • 绝大多数是读请求
  • 数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。
  • 已添加到数据库的数据不能修改。
  • 对于读取,从数据库中提取相当多的行,但只提取列的一小部分。
  • 宽表,即每个表包含着大量的列
  • 查询相对较少(通常每台服务器每秒查询数百次或更少)
  • 对于简单查询,允许延迟大约50毫秒
  • 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
  • 处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)
  • 事务不是必须的
  • 对数据一致性要求低
  • 每个查询有一个大表。除了他以外,其他的都很小。
  • 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中

很容易可以看出,OLAP场景与其他通常业务场景(例如,OLTP或K/V)有很大的不同, 因此想要使用OLTP或Key-Value数据库去高效的处理分析查询场景,并不是非常完美的适用方案。例如,使用OLAP数据库去处理分析请求通常要优于使用MongoDB或Redis去处理分析请求。

列式数据库更适合OLAP场景的原因

列式数据库更适合于OLAP场景(对于大多数查询而言,处理速度至少提高了100倍),下面详细解释了原因(通过图片更有利于直观理解):

行式

ClickHouse SQL 语法极简教程

Row oriented

列式

ClickHouse SQL 语法极简教程

Column oriented

看到差别了么?下面将详细介绍为什么会发生这种情况。

输入/输出

  1. 针对分析类查询,通常只需要读取表的一小部分列。在列式数据库中你可以只读取你需要的数据。例如,如果只需要读取100列中的5列,这将帮助你最少减少20倍的I/O消耗。
  2. 由于数据总是打包成批量读取的,所以压缩是非常容易的。同时数据按列分别存储这也更容易压缩。这进一步降低了I/O的体积。
  3. 由于I/O的降低,这将帮助更多的数据被系统缓存。

例如,查询«统计每个广告平台的记录数量»需要读取«广告平台ID»这一列,它在未压缩的情况下需要1个字节进行存储。如果大部分流量不是来自广告平台,那么这一列至少可以以十倍的压缩率被压缩。当采用快速压缩算法,它的解压速度最少在十亿字节(未压缩数据)每秒。换句话说,这个查询可以在单个服务器上以每秒大约几十亿行的速度进行处理。这实际上是当前实现的速度。

CPU

由于执行一个查询需要处理大量的行,因此在整个向量上执行所有操作将比在每一行上执行所有操作更加高效。同时这将有助于实现一个几乎没有调用成本的查询引擎。如果你不这样做,使用任何一个机械硬盘,查询引擎都不可避免的停止CPU进行等待。所以,在数据按列存储并且按列执行是很有意义的。

有两种方法可以做到这一点:

  1. 向量引擎:所有的操作都是为向量而不是为单个值编写的。这意味着多个操作之间的不再需要频繁的调用,并且调用的成本基本可以忽略不计。操作代码包含一个优化的内部循环。
  2. 代码生成:生成一段代码,包含查询中的所有操作。

这是不应该在一个通用数据库中实现的,因为这在运行简单查询时是没有意义的。但是也有例外,例如,MemSQL使用代码生成来减少处理SQL查询的延迟(只是为了比较,分析型数据库通常需要优化的是吞吐而不是延迟)。

请注意,为了提高CPU效率,查询语言必须是声明型的(SQL或MDX), 或者至少一个向量(J,K)。 查询应该只包含隐式循环,允许进行优化。

ClickHouse有2类解析器:
完整SQL解析器(递归式解析器),以及
数据格式解析器(快速流式解析器).

除了 INSERT 查询,其它情况下仅使用完整SQL解析器。

INSERT查询会同时使用2种解析器:

INSERT INTO t VALUES (1, 'Hello, world'), (2, 'abc'), (3, 'def')

含INSERT INTO t VALUES 的部分由完整SQL解析器处理,包含数据的部分 (1, ‘Hello, world’), (2, ‘abc’), (3, ‘def’) 交给快速流式解析器解析。通过设置参数
input_format_values_interpret_expressions,你也可以对数据部分开启完整SQL解析器。


input_format_values_interpret_expressions = 1 时,ClickHouse优先采用快速流式解析器来解析数据。如果失败,ClickHouse再尝试用完整SQL解析器来处理,就像处理SQL expression 一样。

数据可以采用任何格式。当CH接收到请求时,服务端先在内存中计算不超过 max_query_size 字节的请求数据(默认1 mb),然后剩下部分交给快速流式解析器。

当 INSERT 语句中使用 Values 格式时,看起来数据部分的解析和解析SELECT 中的表达式相同,但并不是这样的。 Values 格式有非常多的限制。

空白

sql语句的语法结构部分之间(标识符之间、部分符号之间、包括sql的起始和结束)可以有任意的空白字符,这些空字符类型包括:空格字符,tab制表符,换行符,CR符,换页符等。

注释

ClickHouse支持SQL风格或C语言风格的注释:

SQL风格的注释以 — 开始,直到行末,– 后紧跟的空格可以忽略
C语言风格的注释以 /* 开始,以 / 结束,可以跨行,同样可以省略 / 后的空格

关键字

以下场景的关键字是大小写不敏感的:

标准SQL。例如,SELECT, select 和 SeLeCt 都是允许的
在某些流行的RDBMS中被实现的关键字,例如,DateTime 和 datetime是一样的
你可以在系统表 system.data_type_families 中检查某个数据类型的名称是否是大小写敏感型。

和标准SQL相反,所有其它的关键字都是 大小写敏感的,包括函数名称。

关键字不是保留的;它们仅在相应的上下文中才会被认为是关键字。如果你使用和关键字同名的 标识符 ,需要使用双引号或反引号将它们包含起来。例如:如果表 table_name 包含列 “FROM”,那么 SELECT “FROM” FROM table_name 是合法的

标识符

标识符包括:

集群、数据库、表、分区、列的名称

函数

数据类型
表达式别名
变量名可以被括起或不括起,后者是推荐做法。

没有括起的变量名,必须匹配正则表达式 ^[a-zA-Z_][0-9a-zA-Z_]*$,并且不能和 关键字相同,合法的标识符名称:x,1,X_y__Z123等。

如果想使用和关键字同名的变量名称,或者在变量名称中包含其它符号,你需要通过双引号或反引号,例如: “id”, id

字符

字符包含数字,字母,括号,NULL值等字符。

数字

数字类型字符会被做如下解析:

首先,当做64位的有符号整数,使用函数 strtoull
如果失败,解析成64位无符号整数,同样使用函数 strtoull

如果还失败了,试图解析成浮点型数值,使用函数 strtod

最后,以上情形都不符合时,返回异常

数字类型的值类型为能容纳该值的最小数据类型。
例如:1 解析成 UInt8型,256 则解析成 UInt16。更多信息,参见 数据类型

例如: 1, 18446744073709551615, 0xDEADBEEF, 01, 0.1, 1e100, -1e-100, inf, nan.

字符串

ClickHouse只支持用单引号包含的字符串。

特殊字符可通过反斜杠进行转义。下列转义字符都有相应的实际值: \b, \f, \r, \n, \t, \0, \a, \v, \xHH。其它情况下,以 \c形式出现的转义字符,当c表示任意字符时,转义字符会转换成c。这意味着你可以使用 ‘和\。该值将拥有String类型。

在字符串中,你至少需要对 ‘ 和 \ 进行转义。单引号可以使用单引号转义,例如 ‘It’s’ 和 ‘It”s’ 是相同的。

复合字符串

数组都是使用方括号进行构造 [1, 2, 3],元组则使用圆括号 (1, ‘Hello, world!’, 2)
从技术上来讲,这些都不是字符串,而是包含创建数组和元组运算符的表达式。
创建一个数组必须至少包含一个元素,创建一个元组至少包含2个元素
当元组出现在 SELECT 查询的 IN 部分时,是一种例外情形。查询结果可以包含元组,但是元组类型不能保存到数据库中(除非表采用 内存表引擎)

NULL值

代表不存在的值。

为了能在表字段中存储NULL值,该字段必须声明为 空值 类型。
根据数据的格式(输入或输出),NULL值有不同的表现形式。更多信息参见文档 数据格式

在处理 NULL时存在很多细微差别。例如,比较运算的至少一个参数为 NULL ,则该结果也是 NULL 。与之类似的还有乘法运算, 加法运算,以及其它运算。更多信息,请参阅每种运算的文档部分。

在语句中,可以通过 IS NULL 以及 IS NOT NULL 运算符,以及 isNull 、 isNotNull 函数来检查 NULL 值

函数

函数调用的写法,类似于一个标识符后接被圆括号包含的参数列表(可能为空)。与标准SQL不同,圆括号是必须的,不管参数列表是否为空。例如: now()。

函数分为常规函数和聚合函数(参见“Aggregate functions”一章)。有些聚合函数包含2个参数列表,第一个参数列表中的参数被称为“parameters”。不包含“parameters”的聚合函数语法和常规函数是一样的。

运算符

在查询解析阶段,运算符会被转换成对应的函数,使用时请注意它们的优先级。例如:
表达式 1 + 2 * 3 + 4 会被解析成 plus(plus(1, multiply(2, 3)), 4).

数据类型及数据库/表引擎

CREATE 语句中的数据类型和表引擎写法与变量或函数类似。
换句话说,它们可以包含或不包含用括号包含的参数列表。更多信息,参见“数据类型,” “数据表引擎” 和 “CREATE语句”等章节

表达式别名

别名是用户对表达式的自定义名称

expr AS alias

AS — 用于定义别名的关键字。可以对表或select语句中的列定义别名(AS 可以省略)
例如, SELECT
table_name_alias.column_name FROM table_name table_name_alias.
在 CAST函数 中,AS有其它含义。请参见该函数的说明部分。

expr — 任意CH支持的表达式.
例如, SELECT column_name * 2 AS double FROM some_table.

alias — expr 的名称。别名必须符合 标识符 语法.
例如, SELECT “table t”.column_name FROM table_name AS “table t”.

用法注意
别名在当前查询或子查询中是全局可见的,你可以在查询语句的任何位置对表达式定义别名

别名在当前查询的子查询及不同子查询中是不可见的。例如,执行如下查询SQL: SELECT (SELECT sum(b.a) + num FROM b) – a.a AS num FROM a ,ClickHouse会提示异常 Unknown identifier: num.

如果给select子查询语句的结果列定义其别名,那么在外层可以使用该别名。例如, SELECT n + m FROM (SELECT 1 AS n, 2 AS m).

注意列的别名和表的别名相同时的情形,考虑如下示例:

CREATE TABLE t
(
    a Int,
    b Int
)
ENGINE = TinyLog()

SELECT
    argMax(a, b),
    sum(b) AS b
FROM t


Received exception from server (version 18.14.17):
Code: 184. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Aggregate function sum(b) is found inside another aggregate function in query.

在这个示例中,先声明了表 t 以及列 b。然后,在查询数据时,又定义了别名 sum(b) AS b。由于别名是全局的,ClickHouse使用表达式 sum(b) 来替换表达式 argMax(a, b) 中的变量 b。这种替换导致出现异常。

星号

select查询中,星号可以代替表达式使用。详情请参见“select”部分

表达式

表达式是函数、标识符、字符、使用运算符的语句、括号中的表达式、子查询或星号。它也可以包含别名。
表达式列表是用逗号分隔的一个或多个表达式。
反过来,函数和运算符可以将表达式作为参数。

本文链接:https://www.dzdvip.com/34361.html 版权声明:本文内容均来源于互联网。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 395045033@qq.com,一经查实,本站将立刻删除。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年7月2日 23:11
下一篇 2022年7月3日 13:29

相关推荐

  • 360推广霸屏技术能够优化关键词的排名效果

    什么叫软文推广?就是用软文的形式来推广,用大众非常能接受的方式来推广,可以一篇日志,也可以是新闻,还可以是几句话简短通俗的帖子,总之,只要是能在字里行间不知不觉的渗透产品信息,并且利用该文字来做推广的就叫做软文推广。 其实在目前所有的网站都是可以发新闻的。因为一个网站想要具有流量,就是需要依靠内容来吸引网友的。而这里所说的内容自然就是指新闻了。但是需要指出的是,网站平时所发布的新闻和进行营销推广时候所发布的新闻软文是非常不同的。因此,这里所说的什么网站可以发新闻,其实主要说的是发软文。这就比较麻烦了。虽然说一些网站不会接受软文,但是在当前的网站上面,大部分还是拥有软文的存在的。这当然是因为在硬广逐渐开始不受重视的情况下,软文也是很多网站的盈利模式之一。而这也注定了软文价格比较高。 信息霸屏 其实,做到合适的软文给合适的人看是需要注意的,也是很重要的。我做的是一个返利网站,我认为我的目标人群主要有三类,一是消费群体,对于这类人群,我一般会写一些用户体验的分享软文来刺激他们的购买欲望,发布到一些论坛或是个人站群上,促进成交量。第二类是一些寻求合作的网店店主,我会写返利网的赢利模式,加入的好处以及未来的发展前景等行业相关性高的新闻软文来推广,然后登陆云爪直通车将写好的文章发到新浪或是网易上,增加稿件的权威性和可信度。第三类人群是一些和我同样有梦想的建站人,或者叫站长,针对他们我多会写一些建站的经验或是推广方面的知识以及推荐一些好的软文营销网之类的,和他们建立联系,增加流量。 除了新闻推广的操作方式,发布平台的选择对软文营销的效果起着同样决定性的作用。一般来说,企业都喜欢讲自己的新闻发布到一些知名的媒体上,来增加新闻的浏览量。不过需要注意的是,并不是只要将软新闻发布到媒体网站上就会引来高的流量,还要根据企业的宣传对象、产品特点以及新闻投放的目的来具体的选择板块和栏目,这样才能确保有很多的人群来关注,达到新闻推广的目的。

    2021年5月30日
    13
  • 百度贴吧发帖的10个方法技巧

    百度贴吧的引流效果毋庸置疑,这里的流量大的你不敢想象,无论卖产品还是项目都是很好的流量池,不然也不会有人买百度贴吧不删帖技术了,同时也会有很多商家在里面活动,而很多商家都在发帖来吸引潜在的用户,最终达成产品项目成交的目的,不过方法各种各样,效果也就是千差万别了。 很多人都习惯在百度贴吧发帖加粉引流,但是由于百度贴吧管理很严,很多帖子刚发就被删掉,更有甚者,账号也被封禁,导致发帖的成功率并不高,结果就不堪入目了,所以今天我们就来分析一下百度贴吧发帖的方法技巧。 1、发帖前的准备 百度贴吧是百度搜索引擎包含的一个论坛,百度贴吧有个人的,名人的,企业的,地区的等等,具体贴吧汇聚多少人在这里不是很清楚,但是百度贴吧是一个分享,学习的好地方。 (1)首先准备一个贴吧的账号(可以自己申请)。 (2)账号的设置:账号的名称可以用自己的微信/QQ号,能让别人更方便联系到你,也可以取个引人注意的名字,然后把微信/QQ二维码作为头像,亦或者用美女头像上加个水印写上自己的联系方式。 (3)选一个合适的贴吧:人气不能太低,太低的话就算你发的帖子每天都置顶也不会有人看到,人气不能太高,人气太高刚发的帖子第一页就看不到了。 (4)要选择跟你目标人群相关的贴吧,另外最好关注一下贴吧,这样以后发帖会更方便,不用每次都去找。 (5)帖子的标题一定要能吸引人,这样帖子的点击率才会高,标题可以从利用好人的好奇心和贪婪心着手。 (6)帖子的内容要有价值,要发一些目标人群最感兴趣的东西,最好是看过之后有想要联系你的冲动。 2、选择贴吧要有侧重点 发在哪这个问题是比较关键的,不管你发什么内容,如果你发的地方不对,很快就会被删除,所以最好的办法就是选好相应的贴吧,这里建议大家不要追大贴吧,有些人想我可能可以去什么“魔兽世界吧”这些热门的地方发一发,反正蹭在一堆帖子中间别人也发现不了,可是你忘记了网民眼睛是雪亮的,总有无聊的人没事去投诉你一下。 只需要成功一次你,号一封以前的内容都无效了,所以最好的办法是发相关性和冷门的贴吧,冷门的贴吧主要是指那种没有管理员的贴吧,相关性不用多说,冷门的贴吧重点关注一下,主要是发主题帖,我采取的方案是热门的只发回复,冷门的发主题,这样会尽量减少被删几率。 在选择发帖的贴吧是要有侧重点,如果单纯为了留外链,最好选择一些冷门的贴吧,有吧主的贴吧管理一般都比较严格,发外链、发广告很容易…

    2021年6月1日
    28
  • 围棋入门基本知识(围棋入门知识点总结3分钟学会)

    棋盘上有纵横各十九条,交叉点361 个,简称点。棋盘上可划分为左上角、右上角、左下角、右下角、左边、右边、上边、下边和上腹九个部分。 今天,以最简单的方式跟大家聊聊围棋的基本规则。 1、落子:黑先白后,一人一步,交替落子。棋子下在交叉点上 2、气:棋子直线相邻的交叉点,为“气”,无气被吃。直线连接的棋子是一个整体,共享气 3、禁着点:落子后无气的点,禁止落子(反杀除外) 4、打劫:禁止全局同形 5、输赢:黑棋185子胜 1、落子:黑先白后,一人一步,交替落子。棋子下在交叉点上。 图1 如图1,这样我们就可以开始下围棋了,记住:落子无悔。 2、气:棋子直线相邻的交叉点,为“气”,无气被吃。直线连接的棋子是一个整体,共享气。 图2 如图2,X是黑棋的气,黑棋有4口气;▲是白棋的气,白棋有3口气。 图3 如图3,当一方棋子的气,被另一方占据,就没有气了,会被吃掉。 图4 如图4,当棋子连在一起时,“共享气”,这里的3颗黑棋,有7口气 图5 如图5,这里的黑棋A、B没有直接相连,所以,他们的气不能共享。 黑棋A的气:是4个绿色圆点,黑棋B的气:是4个红色方块。 3、禁着点:落子后无气的点,禁止落子(反杀除外) 图6 如图6,黑棋不能在A点落子,因为放进去,黑棋处于无气状态,所以不能下。这里的A点称为:禁着点。 图7 如图7,如果可以反杀,就不是禁着点。黑棋下在A点,可以把▲标记的白棋吃掉,所以,A点不是黑棋的禁着点。 4、打劫:禁止全局同形 图8 如图8,接图7,当黑棋下在A点,吃掉白棋后,白棋不能在▲处马上吃掉黑A。 图9 如图9,白1在别的地方落子后,白3才能在▲处吃黑棋。接下来黑棋同理,也不能马上吃掉白3,需要下别的地方落子后,才能吃回来。 5、输赢:黑棋185子胜 学会以上几个最基本的围棋知识,我们就可以开始下棋了。但是,下完之后,怎么知道谁输谁赢呢? 中国用的数子法,双方确认不再落子,就可以数子。 数一方活着的棋子+这些棋子围住的空交叉点,黑棋超过185,就是获胜。  

    2022年8月23日
    30
  • 如何通过品牌战略打造品牌核心竞争力

    品牌战略,就是为了实现品牌竞争目的而对品牌建设手段的运用,这是一个持续性的过程。在品牌竞争日益激烈的当今,拥有品牌核心竞争力才能在偌大的市场中杀出重围,通过品牌战略打造品牌核心竞争力就是一个明智之举。 一、为什么要有品牌核心竞争力? 各行各业现在竞争都日益激烈。竞争者逐渐增多,竞争手段更加先进, 当市场经历单一的产品竞争,质量竞争,价格竞争, 广告竞争等等之后,品牌竞争势在必行,市场,企业,消费者对品牌的需求趋于旺盛,品牌竞争力逐渐成为企业的核心竞争力。 品牌竞争力是品牌具有较同类产品品牌更大市场影响力, 更高占有率, 更高附加值,产品和用户生命周期长的深层次原因。 是企业的品牌拥有区别和领先于其他竞争对手的独特能力, 能够在市场竞争中显示品牌内在的品质, 技术,性能和完善服务, 并引起消费者的品牌联想进而促进其购买行为。 二、找到品牌发展不同阶段的品牌核心竞争力 能够生存下来的企业必然有一定的竞争力,因为市场就是没有硝烟的战争。 战场如杀场。 那如何知道一家企业的核心竞争力是什么吗? 其实在回答这个问题之前,需要清楚一件事,就是品牌发展有很多阶段,每个阶段都需要对企业发展起到最大作用的品牌核心竞争力,甚至不同的行业处在不同的发展阶段,有着不一样的品牌核心竞争力:比如电子烟尚处在行业早期,由于各种监管限制,谁先占领有限的渠道资源,谁就能胜出。 所以电子烟行业现在是渠道为王, 悦刻就是凭借早期的线上销售垄断和后来的线下渠道拓展成为电子烟品牌第一股。 所以在行业这个阶段, 渠道是电子烟品牌的核心竞争力, 谁能快速占领渠道,谁就能拓展市场占有率, 就能在用户心智上形成 比如悦刻=第一电子烟品牌这样的品牌认知,建立牢牢的品牌护城河,让其他品牌望尘莫及。 这时候就是要简单粗暴做销售, 这个时候谈情感营销, 谈内容营销对于品牌核心竞争力并没有太大的用处。 耳机行业现在是一个早已品牌林立,渠道非常成熟的行业。用户选择耳机的时候,更多的是选择有信赖感的品牌,如beats、bose等。在行业这个阶段,品牌化营销即品效合一在做品牌化,增强品牌认知的同时,扩大使用用户数量和市场占有率。这个时候的品牌影响力是品牌的核心竞争力。 而TWS真无线耳机,算是属于耳机里面的新品,渗透率还不是很高, 这个时候如果某个耳机企业能够实现新品的创新,引领潮流,就能领先竞争对手。 所以对于像这种新需求, 品…

    2021年6月28日
    8
  • 跳跳糖为什么会跳的原理(跳跳糖能跳的原因是什么)

    “跳跳糖是由白糖、玉米糖浆、水和调味料制成的。把这些东西混合起来先使糖融化,然后把混合物中的水分全部煮干,接着继续升高温度,这样就可以制作出纯的糖浆,当糖浆变凉之后就变成了硬块糖。 而在制作跳跳糖时,要在热的糖浆里加入高压的二氧化碳气体。二氧化碳气体会在糖里形成细小的高压气泡。当你把糖块放入口中,你会听到“嘣嘣”的响声,那实际上就是二氧化碳气体从每一个气泡中释放出来的过程,这感觉就像有糖豆在你嘴里蹦跳一样。” 相信大家小时候一定吃过“跳跳糖”,就是发在嘴里会发出嘣嘣的声音,还会在你的嘴里不停的跳跃。那么,为什么跳跳糖会“跳”呢? 跳跳糖里含有很多微小的气孔,每个气孔里都存有高压的二氧化碳。当跳跳糖在袋子里隔绝空气和水分储存时,不会发生什么变化。 但是一旦接触到水分,跳跳糖外壳的糖衣开始融化,高压的二氧化碳会争先恐后的从跳跳糖里喷出来。 失去保护的二氧化碳气泡遇到唾液,就会发生微小的爆破,并发出类似跳跃的声响,让你感觉嘴里的糖好像在不停地跳跃。 跳跳糖和泡泡糖。中新网记者 翟璐 摄 所以跳跳糖并不是真的在我们嘴里跳,而是二氧化碳爆炸的过程,让我们感觉有东西在跳。 而且发明跳跳糖的并不是一个吃货,而是一个正儿八经的化学家。 不过跳跳糖的发明也和许许多多的发明一样是个美丽的意外。1956年的时候,一个叫做威廉·A·米切尔的化学家,想要制造一种“速溶可乐”,差不多就是和洗衣粉一样,往水里一搁就会扑哧扑哧冒泡的那种可乐。 可惜“洗衣粉”可乐没有研制成功,却意外的做成了跳跳糖,不过当时很多美国人并不敢吃它。就算到了现在,跳跳糖也有很多谣言,导致很多人依然不太敢吃它。 有人谣传吃了跳跳糖会撑破胃;也有人说跳跳糖和可乐一起会爆炸…..小青娃在这里负责任的告诉你们,这些都是假的!!! 跳跳糖里的二氧化碳成分非常少,是绝对威胁不到人体的,何况跳跳糖在嘴里碰到唾液便融化,二氧化碳在口中就已经释出大半,其实会进到你肠胃的机率更低。 因此担心食用跳跳糖会导致胃撑破,实在是过度担忧了。 那些陪伴我们长大的零食 中新网记者 翟璐 摄 大白兔奶糖 前两天收到了同事的喜糖,里面就有大白兔奶糖,不禁勾起了许多关于童年的美好记忆。有糖果一定会分给最好的小伙伴。可惜,妈妈总怕我们牙被虫蛀,不让多吃。 高乐高 每个人的回忆里一定有这部经典的电视连续剧《家有儿女》。除了搞笑的一家人之外,多年之后才…

    2022年7月29日
    81
  • 搜索用户体验是什么?搜索引擎是如何判断好的用户体验?

    用户体验”被越来越多的人提及,也越来越引起大家的注意。一个有着良好用户体验的网站,不仅能吸引一批又一批的忠实用户,更能赢得百度搜索的认可,获得更多的内容展现机会。究竟,怎样才算好的搜索用户体验?“用户体验”近几年在SEO行业比较火,被提及次数也越来越多,也算是一个老生常谈的问题。 因为百度官方也强调过多次:只有用户体验良好的网站,才能吸引一批又一批的忠实用户,进而获得百度搜索的认可,最终才能获得更多的内容展现机会。 由此可见,用户体验对于网站持续发展起着举足轻重的作用。但大家老说的用户体验,应该如何打造才能让百度搜索优先选择你的内容,你真的都清楚了吗? 针对这方面疑问,12月11日,百度产品经理陈敏杰在《百度搜索线上公开课》“倾听用户的声音——搜索用户体验整体解读”中做了详细的分析。所以,今天继续来看下相关的内容。(文末同样附送公开课PPT) 大家也可以通过下面的思维导图,快速了解本文的内容。 一、互联网内容生态的变化 要想了解怎样的用户体验才是良好的,首先我们必须要清楚现在整个互联网内容生态的变化,毕竟“内容为王”逐渐成为主旋律,图文、短视频、直播等内容形式更是让人目不暇接。 目前,互联网内容生态的变化呈现三个特点: 1、分发场景多样化:搜索分发–>FEED分发 2、内容形态多样化:图文–>视频、语音、直播等多模态 3、内容生产者多样化:站–>号 互联网内容生态的变化,也导致百度搜索排序的指导标准随之升级。 ● 分发场景多样化–>看重需求满足程度,而非文本相关性● 内容形态多样化–>扩宽内容质量范畴,可深度专业可生动有趣● 内容生产者多样化–>加强好作者等级区分度,让优质号脱颖而出 二、新生态下的百度搜索排序原则 关于搜索排序的原则,百度官方给出了标准答案:按综合需求满足程度从高到低排序。而对综合需求满足程度的考察维度,会从“重点考察、基本需求、不准入”三个方面来衡量: 下面来详细看下这3方面的相关内容,百度官方究竟是如何要求的。 1、重点考察 1)内容质量:资源本身所传递的价值高低 2)权威性:资源背后的生产者的专业程度 对于资源背后的生产者的专业程度,百度官方的重要判断标准之一是“权威性”,特别是医疗、法律等权威敏感的需求,备案的网站或者认证的个人/机构…

    2021年7月19日
    25