知识大胖
这个作者很懒,什么都没留下…
展开
-
为什么不应在代码中使用存储过程 改变清洁架构原则
这是至今仍然令我惊讶的少数主题之一……存储过程从一开始就存在。每个人都很高兴在他的代码库中拥有这些内容,但令我惊讶的是这个主题如何在当今世界不断重新出现。如果它没有坏,就不要修理它!我同意,但我觉得奇怪的是,一些最资深的开发人员和工匠仍然主张在全新的系统中使用存储过程。原创 2023-07-22 09:56:21 · 48 阅读 · 0 评论 -
SQL 中最难做的 5 件事 (含现实的例子)
我们中的许多人都体验过在云数据仓库中集中计算所带来的速度和效率的核心力量。虽然这是事实,但我们中的许多人也意识到,与任何事物一样,这种价值观也有其自身的一系列缺点。这种方法的主要缺点之一是您必须学习和执行不同语言的查询,特别是 SQL。虽然编写 SQL 比建立辅助基础设施来运行 Python(在您的笔记本电脑或办公室服务器上)更快且更便宜,但它具有许多不同的复杂性,具体取决于数据分析师希望从云仓库中提取的信息。转向云数据仓库增加了复杂 SQL 与 Python 的实用性。原创 2023-06-06 14:38:43 · 131 阅读 · 0 评论 -
SQLBOILER- 从单个连接查询多个数据库
SQLBoiler是一种工具,用于生成适合您的数据库模式的 Go ORM。它是一个“数据库优先”的 ORM,而不是“代码优先”(如 gorm/gorp)。这意味着您必须首先创建数据库模式。这是我一直在使用它的方式:在过去的几年里,在我们的单租户架构中,我一直在使用 CockroachDB 和 SQLBoiler 的组合。在此设置中,我们启动了一组服务器(假设为 A-12),这些服务器使用指定用户(A-12)专门与特定数据库(A-12)通信,并且访问权限仅限于该特定数据库(A-12) .原创 2023-06-06 14:29:58 · 150 阅读 · 0 评论 -
通过实际示例了解 SQL Server 中的 INNER JOIN
INNER JOIN 是 SQL Server 中的一种联接,它只返回联接所涉及的两个表中具有匹配值的行。它根据相关列(称为连接条件)组合来自两个或多个表的行。INNER JOIN 的结果集仅包含在连接条件中具有匹配值的行。INNER JOIN 的语法。原创 2023-06-06 14:27:07 · 690 阅读 · 0 评论 -
了解 SQL 查询中的执行顺序
使用关系数据库时,理解 SQL 查询的执行顺序至关重要。它不仅有助于优化查询性能,还允许开发人员理解数据检索和操作的逻辑流程。在这篇博文中,我们将逐步探索典型关系数据库管理系统 (RDBMS) 中 SQL 查询的执行顺序。原创 2023-06-06 14:12:16 · 316 阅读 · 0 评论 -
使用 Bazel 和 SQLFluff 实现 SQL Lint
在 SQL 版本控制之后,需要在 CI/CD 管道中进行 SQL lint 步骤。它的好处是我们能够在执行 SQL 之前找出 SQL 中的问题。在这篇博客中,我们将结合 Bazel 和 SQLFluff[1] 来实现 linting SQL。SQLFluff 是一个用 Python 编写的 SQL lint 工具,支持很多 SQL 方言。它具有的特点:在我看来,有两种方法可以在 CI/CD 管道中实现 SQL lint:方式一:在pipeline中添加一个SQL lint step;方式二:将SQL li原创 2023-06-06 14:06:43 · 260 阅读 · 0 评论 -
优化 SQL 代码并提高数据质量:SQLFluff 和 Delta Lake 的深度指南
SQLFluff 是一个开源的 SQL linter 和格式化程序,它通过实施最佳实践、可读性和一致性来帮助提高 SQL 代码的质量。它支持多种 SQL 方言,特别是 Spark SQL、Databricks、ANSI SQL、Postgres SQL 等。本博客将重点介绍如何将 SQLFluff 与 Spark SQL 和 Databricks 结合使用,并结合 Delta Lake 扩展。使用 SQLFluff,工程师可以编写更简洁、更易于维护的 SQL 代码,这些代码符合既定的准则和标准。原创 2023-06-06 14:03:54 · 473 阅读 · 0 评论 -
SQL:了解和使用结构化查询语言的初学者指南
SQL,或结构化查询语言,是一种用于管理和操作数据库中数据的强大工具。世界各地的企业、组织和个人都使用它来组织、分析和理解大量信息。SQL 最强大的方面之一是它能够以多种方式过滤、排序和聚合数据。这使它成为一个非常通用的工具,可用于从生成报告到分析客户行为的广泛任务。要理解为什么以及如何使用 SQL,考虑一个真实的示例会很有帮助。假设您经营一家小型在线商店,并拥有一个包含有关您的客户、产品和订单的信息的数据库。您想要分析您的销售数据以更好地了解哪些产品卖得好,哪些产品卖得不好。原创 2023-01-29 09:55:22 · 117 阅读 · 0 评论 -
使用SQL的数据分析项目,使用 SQL(MySQL) 分析数据科学工作薪水的数据
我们将使用的数据集是关于数据科学工作薪水的(在文章底部),您可以在下图中看到有关数据集中存在的列的所有信息:好吧,粗略地了解未来会发生什么,让我们更深入地研究我们的数据集,看看我们是否能找到他的任何问题执行上面的查询我们可以看看我们的表我们只能看到几行,因为数据集很大。但是我们已经可以在特定的列中看到一些奇怪的东西。名称“Unknown Column”看起来不正确。让我们将此名称更改为“employee_id”,这将更有意义看起来好多了。原创 2023-01-17 12:45:15 · 201 阅读 · 0 评论 -
如何在 MySQL 中使用 JSON 数据,在 MySQL 中学习“NoSQL”
在本文的第一节中,我们将介绍如何使用简单的语句从 MySQL 中的 JSON 字段中提取数据。在第二部分中,我们将介绍如何将 MySQL 表中的数据聚合成 JSON 数组或对象,然后可以方便地在您的应用程序中使用。在第二部分中,我们做了相反的操作,将规范化数据聚合到 JSON 数组或对象中,然后可以直接在您的程序中使用。但是,如果要从嵌套的 JSON 数组或 JSON 对象中提取数据,则不能使用 chained->或->>. 您只能将->and->>用于顶层,而需要JSON_EXTRACT用于嵌套层。原创 2023-01-17 12:18:08 · 262 阅读 · 0 评论 -
每个开发人员的 10 个基本 SQL 命令
数据总是有更好的主意——相信它。原创 2023-01-16 11:26:23 · 93 阅读 · 0 评论 -
4 个杀手级 SQL 命令,让你的 SQL 技能更上一层楼
SQL 是一种通常可以自学的语言。它的简单性和快速学习曲线使其成为融入数据科学的完美语言。我很确定你已经自学了 SQL,而且你已经很擅长了。然而,随着数据量的增加,对熟练且合格的数据专业人员的需求达到了前所未有的最高水平。具体而言,越来越需要精通 SQL 的专业人员,而不仅仅是初学者。这就是了解高级 SQL 概念还不够的原因,您应该能够在工作中有效地实施它们。因此,我在这里列出了 4 个高级 SQL 概念以及解释和查询示例,你应该知道掌握 SQL。原创 2023-01-16 11:10:02 · 220 阅读 · 0 评论 -
SQL 中的 COALESCE 函数初学者指南
这将返回col1if 不为 null 的值,或者col2ifcol1的值为 nullcol2且不为 null 的值,或者col3ifcol1和col2均为 nullcol3且不为 null 的值。在 SQL 中的 COALESCE 函数上下文中,它指的是函数将多个表达式组合或“合并”为单个结果的方式。请注意,COALESCE 函数用于获取管理器的名称(如果它不为空)或“无”(如果管理器为空)。如果该COALESCE函数不为空,则该函数用于获取经理的姓名,如果为空,则为“None”。原创 2022-12-22 15:25:13 · 2087 阅读 · 0 评论 -
使用 Pandas 和 SQL 进行实用数据分析,让我们用 pandas 和 SQL 进行数据分析并实际理解它们(教程含数据csv)
Pandas是一种快速、强大、灵活且易于使用的开源数据分析和操作工具,构建于 Python 编程语言之上。SQL代表结构化查询语言。SQL 允许您从 RDBMS(关系数据库管理系统)访问数据,并可用于数据分析。Pandas 和 SQL 都广泛用于数据分析。在这篇博客中,我们将使用pandas和SQL对IPL(Indian Premiere League)数据进行数据分析。让我们通过 SQL 和 pandas 来回答一些问题。原创 2022-12-02 11:01:45 · 903 阅读 · 1 评论 -
MS Access 教程之如何将 MDB 文件转换为 SQLite 数据库
出于这个原因,我创建了一个解决方案,允许我将 MS Access 数据库导出到 SQLite 数据库。我将代码上传到el3um4s/how-to-export-mdb-to-sqlite-3存储库中的 GitHub。我可以选择源数据库、目标文件夹、要导出的表和目标文件。创建一个空的 SQLite 数据库后,我可以开始导出 MS Access 数据库的各种表。我用 Access 打开文件,转到表列表,选择要导出的表。按钮),我设置参数然后单击OK以完成从 Access 到 SQLite 的表的导出。原创 2022-11-14 14:05:21 · 1373 阅读 · 0 评论 -
SQLite SQL教程之如何实现contains函数,left join 判断一个字符串包含另外一个(教程含源码)
我目前的选择基于具有相同值的列…但是,如果我想根据“包含”字符串值的列之一返回一行怎么办?原创 2022-11-13 22:03:49 · 1082 阅读 · 0 评论 -
PySpark 教程之为并行效果调整 JDBC(教程含源码)
它花费了将近 1/3 的时间,从而使读取速度提高了 3 倍,并且我们的数据现在也被分区了。现在,如果您关注我 — 上一篇文章分享了一些通过 JDBC 读取 SQL 数据源的性能优化技术。让我们创建我们的 SparkSession,其中包含使用 JDBC 从 SQLite 数据源读取所需的库文件。今天让我们进一步调整 JDBC 连接,以充分利用 SQL 数据源读取的每一盎司性能优势。如您所见,完整读取是通过与数据库的单一连接进行的。所以,让我们用上面的参数调整我们的 JDBC 连接。原创 2022-10-24 11:54:27 · 551 阅读 · 0 评论 -
PySpark结构化流的基础Spark Structured Streaming 增强流计算的能力
因此,如果您熟悉 Spark 上的 DataFrame、Dataset 和 SQL,那么这一点会很容易。结构化流框架可以假设为微批处理框架,它将数据连续附加到表的末尾。为了开始并保持简单,我们可以将结构化流分成 4 个部分——什么、如何、何时和何地?它涉及转换(与批处理相同,但限制很少)和接收器的输出模式。目前,所有这些听起来可能有点新奇或奇怪,但在接下来的文章中,我们将通过示例来介绍所有这些。并非所有输出接收器都支持所有输出方法。我们将在运行示例时讨论所有这些。其中:定义将显示/存储数据的输出接收器。原创 2022-10-24 11:47:32 · 722 阅读 · 0 评论 -
PySpark 教程之 Count(1) vs Count(*) vs Count(col_name),那个是正确的方式从表中获取计数
如果您注意到解释计划中突出显示的部分,count(1) 和 count(*) 具有相同的计划(function = [count(1)]),完全没有变化,而在 count(city_id) 中 - Spark 应用函数=[count(city_id)],它必须遍历列以检查空值。结论:在 count(1) 和 count(*) 的情况下,我们的性能几乎相同(因为解释计划是相同的)但是使用 count(col_name) 我们可能会受到轻微的性能影响,但这没关系,因为有时我们需要得到正确的基于列计数。原创 2022-10-24 11:14:28 · 871 阅读 · 0 评论 -
PySpark 集群配置
Spark 应用程序非常依赖用于执行的集群配置。重要的是事先了解集群大小,以提高效率,为处理提供足够的资源。Spark 通过分布式并行处理能力实现其强大功能。为了获得更好的结果,我们总是必须从所有可能性中调整和估计正确的配置。Spark确定并行度=执行器数量X每个执行器的核心数让我们考虑以下示例:我们有一个包含10 个节点、26 个核心/节点和256GB 内存/节点的集群。原创 2022-10-24 11:07:04 · 836 阅读 · 0 评论 -
Spark-Radiant 1.0.4 有什么新功能?
Spark-Radiant是 Apache Spark 性能和成本优化器。产品 Spark-Radiant 将帮助优化性能和成本,考虑到催化剂优化器规则、Spark 中增强的自动缩放、收集与 Spark 作业相关的重要指标、Spark 中的 BloomFilter 索引等。我之前的博客中介绍了 Spark Radiant 项目。Spark-Radiant 1.0.4 现已上市并可以使用。Spark-Radiant 1.0.4 的依赖项在maven central中可用。原创 2022-10-24 11:01:55 · 479 阅读 · 0 评论 -
SQL教程之使用 dbt 和 SQLfluff 整理 SQL
在广泛的数据分析师和工程师团队中工作时,您是否曾为不同的 SQL 风格而苦苦挣扎?上/下关键字、前导/尾随逗号、缩进、别名规则等。随着模型数量的增长,拥有一致的风格变得有益,以简化代码审查、新成员的入职等。SQLfluff 来拯救,它是 SQL 文件的 CLI linter。它可以突出显示并经常修复样式违规。dbt 是另一个令人惊叹的工具,可以简化数据建模、跟踪模型之间的依赖关系并减少样板代码的数量。在本文中,我想分享结合这两种工具并在团队中采用它的方法。原创 2022-10-24 10:43:44 · 930 阅读 · 0 评论 -
阅读这 5 本数据分析书籍,开启您的数据分析职业生涯
您是否想转变为数据分析师的角色,但不确定从哪里开始?您是否在工作中进行分析,并想了解更多有关数据大图的信息?您是否正在寻找一本出色的数据分析书籍来阅读?在本文中,您将找到我们精选的有关数据分析的最佳书籍!如果您是一名商业专业人士,正在考虑学习数据分析技能,您可能想知道应该如何开始。如果您在一家数据驱动的公司工作,或者如果当前的数据民主化趋势正在影响您的组织,那么了解数据分析特别有用,这样您就可以使用数据来回答业务问题。然而,数据分析是一个庞大的话题,并且有大量的材料。原创 2022-10-19 10:34:40 · 465 阅读 · 0 评论 -
学习SQL 最佳书籍推荐2022年版
SQL 或结构化查询语言已成为招聘人员在数据相关工作中所需的顶级技能之一。哪些书可以帮助您学习 SQL 并提高您的技能?SQL 是一种编程语言,允许您检索和操作存储在数据库中的数据。其类似英语的语法使您能够在几秒钟内浏览千兆字节的有用信息。难怪想要学习 SQL 的人数比以往任何时候都多!而且还有比以往更多的资源可供学习。随着围绕在线学习和教育的讨论日益增多,书籍通常会被忽视——尤其是涉及数字或数据相关技能的课程。虽然在线学习绝对是伟大而有用的,但不同的学习媒介应该相互补充(而不是取代)。在本文中,我专门讨论原创 2022-10-19 10:27:02 · 1066 阅读 · 0 评论 -
为何要使用SQL管理公司数据, Excel 可能无法满足公司所有数据需求的 6 大原因
SQL 能够增强整个公司的能力和绩效。但是,如果您不亲自动手并尝试了解SQL,您将永远不会意识到该语言的巨大潜力。SQL或结构化查询语言,是您扩大业务或组织范围和结果的门票,无论您在哪个部门经营。无论您是公司的所有者或经理,还是只是对改善运营感兴趣的员工, 学习 SQL 无疑对你来说是毫无疑问的。我们整理了这份简短的指南,以帮助您了解简单的 SQL 如何在很短的时间内对您的业务成功产生重大影响。SQL 不仅仅是软件开发人员和技术天才儿童在真空中使用的“另一种编程语言”。SQL 帮助用户,从开发人员到营销人员原创 2022-10-19 10:15:37 · 452 阅读 · 0 评论 -
SQL教程之如何开始像 SQL 请求一样思考
用 SQL 思考将帮助您了解 SQL 查询的作用、如何创建和更改它们,以及如何根据您获得的数据创建报告。如果你想知道如何编写更好的 SQL 查询,你必须改变你对代码的看法。让我们开始我们的 SQL 思维之路,帮助您理解重要的 SQL 概念并学习如何编写更好的SQL 查询!原创 2022-10-08 12:36:57 · 265 阅读 · 0 评论 -
SQL教程之SQL 查询中要避免的 5 个可怕的错误
我们都会犯错误并从中吸取教训。“犯错但以后不要重蹈覆辙是一种很好的做法”。在学习的过程中,我们经常会遇到错误并试图解决它们,但在开始的时候,我们需要指导哪些过程可以遵循,哪些不应该遵循。本文将描述我们通过经常练习 SQL 可以避免的所有常见错误以及如何解决这些错误。原创 2022-10-08 12:32:26 · 286 阅读 · 0 评论 -
SQL教程之一篇文章理解第一范式、第二范式、第三方式(SQL规范化含案例)
为什么我们要规范化数据?这个问题突然出现在我们的脑海中对吧?!Well 数据通常非常混乱和肮脏,有 Null、重复、空白和大量冗余数据。现在我们将研究重复和冗余之间的区别。重复是指创建了一条数据的精确副本,正如您在下面看到的第二条记录已被复制并可能导致问题。冗余是指数据中有两个具有相似含义但不重复的值。数据完整性受到冗余和重复数据的挑战。原创 2022-09-22 17:47:57 · 335 阅读 · 0 评论 -
SQL教程之 了解 SQL EXISTS 子句,当你应该考虑使用它时
该EXISTS子句是一组子查询表达式的一部分。有关可用子查询表达式的更多信息,您可以转到PostgreSQL 文档。该EXISTS子句用于比较两个表并检查您的表是否具有另一个表中存在的值。还有一个NOT EXISTS子句,用于检查不在其他参考表中的那些项目。当比较一个表是否存在另一个表中的记录时,这称为“半连接”。每当您使用WHERE带有IN关键字的子句时,这也称为半连接。Microsoft 使用此定义来描述半联接,“半联接是 U-SQL 的一种方式,它根据行集包含在另一个行集中的行来过滤行集”²。原创 2022-09-13 14:22:08 · 321 阅读 · 0 评论 -
为什么 SQL 是 2022 年收入最高的编程语言
当我们谈论世界领先的编程语言时,有几种语言需要学习,这些语言将来会很受欢迎。其中之一是 SQL(结构化查询语言)。SQL 太旧了!数据库中的数据组织可以追溯到半个世纪前计算机科学家 Edgar Codd 的提议。不久之后,SQL 诞生了。从那时起,它在世界各地被广泛使用。然而,在 2022 年,为什么有人会认真对待数据研究这个“旧”编程语言的职业呢?为什么不花时间学习Python或 R 或者专注于“更性感”的数据能力,比如深度学习、Scala 或 Spark?原创 2022-09-02 14:32:01 · 439 阅读 · 0 评论 -
SQL教程之在SQL中使用经纬度获取两点的距离
我们可以使用空间数据来计算 SQL Server 中两个点位置之间的距离。空间数据有两种类型的数据。几何数据类型支持平面或欧几里得(平面地球)数据,地理数据类型存储椭圆体(圆形地球)数据,例如 GPS 纬度和经度坐标。...原创 2022-09-01 09:28:47 · 214 阅读 · 0 评论 -
SQL教程之每个分析工程师都需要知道的 5 个 SQL 函数
SQL 是每个分析工程师需要知道的最重要的技能。它是数据从业者的顶级技能中的基础,但经常被忽视。因为它不是什么“新”或“花哨”,所以它被推到了次要位置。但是,为了编写高质量的数据模型,您需要能够编写干净、简洁的 SQL 代码。SQL 是数据建模的核心。虽然它不是数据建模的唯一方面,但它占了很大一部分。尽管您也可以在不了解 SQL 的情况下编写数据模型,例如使用为您编写 SQL 函数的拖放模型,但大多数分析工程师仍然使用 SQL 来构建他们的数据模型。...原创 2022-08-28 21:23:15 · 265 阅读 · 0 评论 -
SQL教程之作为 SQL 数据分析师给初学者的5个技巧提升
SQL,数据分析的通用语——您是否正在寻找成为更好的数据分析师的技巧?你想知道你可能面临的错误和问题吗?我为您的日常工作收集了五个技巧。对于每个提示,我将为您提供它们发生的背景,解释它们的重要性,并提供一些后续资源。让我们从 SQL 查询的主题开始。......原创 2022-08-17 07:43:45 · 235 阅读 · 0 评论 -
SQL教程 之查看 SQL 的执行顺序
在编写了大量 SQL 脚本之后,您可能会在性能方面达到某种形式的平台期。您使用相同的策略提取见解并遇到相同类型的错误。幸运的是,您可以通过花时间了解如何评估 SQL 中的子句来改善编写查询的体验。在这里,我们讨论 SQL 中的执行顺序并解释它的重要性。......原创 2022-08-17 07:43:21 · 818 阅读 · 0 评论 -
SQL教程之 开始学习用于数据分析的的五个SQL 命令 (教程含源码)
将时间戳缩短(截断)到特定粒度,从微秒到千年。SQL 命令date_trunc()用于根据小时、天、周或月“截断”间隔,并提供可操作且更精确的间隔或时间戳。评估列表以查找非空值;即具有已知值的数据点。SQL 命令coalesce()主要在数据清理和聚合过程中使用,以填充空值并使数据集更加业务友好和易于阅读。当较大数据集中的数据点满足特定条件时返回一个值。SQL 命令case用于根据有形参数组织数据,生成类别或将数据点分类,或从各种数据中生成可操作的信息。...原创 2022-08-14 11:54:42 · 364 阅读 · 0 评论 -
SQL教程之SQL Left Join 中的 5 条编写规则
Join是想要追求SQL编程语言需要学习的基本技能之一。因为有了 SQL Join,我们可以直接进行合并操作,而无需移动单个数据。在数据库中可用的大量数据的背后,允许程序员或开发人员需要一个特殊的公式。幸运的是,SQL 有许多用于在数据库中执行操作的公式。经常使用的 SQL 连接操作之一是 LEFT JOIN。LEFT JOIN 是 SQL 中的一种连接命令,用于将所有数据显示到表的左侧。从联接表的左侧开始,它将在右侧显示与联接条件匹配的数据。如果显示左右字段存在差异,系统将自动将该值设置为 NULL。..原创 2022-08-12 11:26:59 · 629 阅读 · 0 评论 -
SQL 教程之为什么 SQL 正在击败 NoSQL,以及这对数据的未来意味着什么
自计算诞生之日起,我们就一直在收集呈指数增长的数据量,不断地从我们的数据存储、处理和分析技术中提出更多要求。在过去的十年中,这导致软件开发人员抛弃了 SQL,认为它无法随着这些不断增长的数据量而扩展,从而导致 NoSQL 的兴起:MapReduce 和 Bigtable、Cassandra、MongoDB 等等。然而今天 SQL 正在复苏。...原创 2022-08-12 11:14:21 · 156 阅读 · 0 评论 -
SQL教程之 10 个终极 SQL JOIN 问题和答案
SQL中的JOIN命令用于根据这些表之间的公共列组合来自两个或多个表的数据。当您需要的数据位于不同的表中时,SQL JOIN 允许您将这些表组合到一个或多个公共列中。然后您可以选择记录,这些记录可能有也可能没有来自两个表的列。这将返回两个表的所有可能组合。所以第一个表的每一行都与第二个表的每一行组合。最终,如果不使用子句,则返回的记录总数CROSS JOIN是两个表中记录数的乘积。WHERE这种类型的 JOIN 生成的结果也称为两个表的笛卡尔积。例如,假设您有两个如下表,...原创 2022-08-07 14:14:27 · 321 阅读 · 0 评论 -
SQL教程之 掌握 SQL GROUP BY 的 5 个实用 SQL 示例(含完整sql与测试数据)
SQL中的GROUP BY,解释SQL — 结构化查询语言 — 被广泛用于从关系数据库中提取数据并对其进行转换的工具。没有数据聚合,数据转换是不完整的,这是 SQL 中的一个重要概念。如果没有 GROUP BY,数据聚合是不可能的!因此,掌握 GROUP BY 以轻松执行所有类型的数据转换和聚合非常重要。在 SQL 中,GROUP BY 用于数据聚合,使用聚合函数。如SUM()、MIN()、和。但是,为什么聚合函数要和 GROUP BY 一起使用呢?...原创 2022-08-07 09:31:05 · 494 阅读 · 0 评论 -
SQL教程之递归 CTE Common Table Expression
大家好,今天给大家带来递归CTE(Common Table Expression)。这是我最近遇到的一个功能,我想用一个简单的例子来分享这个。但首先,非递归 CTE 和递归 CTE 有什么区别?原创 2022-08-03 08:10:08 · 244 阅读 · 0 评论