AI天才研究院
程序员光剑,AI天才研究院和光剑读书创始人兼CEO。
展开
-
类型系统在函数式逻辑编程中的应用
本文将探讨类型系统在函数式逻辑编程中的应用。首先,我们将介绍函数式编程和逻辑编程的基本概念,并解释类型系统的定义及其在编程语言中的重要性。接着,我们将深入探讨类型系统在逻辑编程中的特点和应用,包括逻辑类型的定义、模式匹配和类型约束。最后,我们将通过具体的函数式逻辑编程语言,如Haskell和Scala,展示类型系统在实际编程中的应用和优势。类型系统可以定义为一种机制,用于检查程序中的变量、表达式和函数等的类型是否一致,以及如何进行类型之间的转换和操作。类型。原创 2024-12-04 01:47:06 · 34 阅读 · 0 评论 -
【亲测 Qwen2.5-Coder-7B-instruct】http chunk 输出流式数据、实现 SSE 流式文本输出源代码 golang
在Go语言中,你可以使用HTTP响应的Chunked Transfer Encoding来实现流式输出数据。这种编码方式允许服务器在不知道最终数据大小的情况下逐块传输数据。下面是一个简单的示例,展示如何在Go中实现流式输出数据。示例代码解释这行代码设置了响应头中的Transfer-Encoding为chunked,表示服务器将使用分块传输编码。使用类型断言将w转换为http.Flusher接口,以便调用Flush方法。这个循环模拟了从数据源中逐块读取数据并将其发送给客户端的过程。原创 2024-12-02 16:26:21 · 73 阅读 · 0 评论 -
Java线程与ThreadLocal:深入解析Thread类源码及ThreadLocal实现原理
本文的主要目的是深入解析Java中的Thread类源码和ThreadLocal的实现原理。我们将探讨Java线程模型的核心概念,分析Thread类的关键方法和属性,并详细说明ThreadLocal的工作机制。通过这种深入的分析,我们旨在帮助读者更好地理解Java并发编程的底层原理,从而在实际开发中更有效地使用这些工具。本文将首先介绍Java线程的基本概念,然后深入分析Thread类的源码,包括其重要的方法和属性。接着,我们将详细探讨ThreadLocal的实现原理,包括其内部数据结构和工作机制。原创 2024-10-13 01:00:06 · 143 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】Kotlin 语言编程极简入门教程
Kotlin 是一种现代化的编程语言,由 JetBrains 公司开发。跨平台:可用于开发 Android 应用、服务器端应用、Web 前端等。与 Java 完全兼容:可以在现有的 Java 项目中无缝集成。简洁:相比 Java,Kotlin 的语法更加简洁,提高了开发效率。安全:通过空安全等特性,减少了空指针异常等常见错误。理解 Kotlin 的基本特性有助于我们更好地学习和使用这门语言。stage。原创 2024-09-24 00:21:00 · 716 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】UNIX 环境高级编程极简教程
UNIX 的历史:诞生于 1969 年,由贝尔实验室开发。UNIX 的特点:多用户、多任务、高度可移植性。UNIX 的变种:包括 Linux、macOS、FreeBSD 等。UNIX 哲学:做一件事,做好它;程序应该互相协作。理解这些基本概念将有助于我们更好地掌握 UNIX 环境下的高级编程技巧。stagesolution在这个 UNIX 环境高级编程极简教程中,我们涵盖了许多重要的主题。让我们总结一下关键点和最佳实践:熟悉常用的系统调用和库函数。原创 2024-09-24 02:48:12 · 1013 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】Go 语言编程极简教程 1
Go 语言(又称 Golang)是由 Google 开发的一种静态类型、编译型、并发型,并具有垃圾回收功能的编程语言。它于 2009 年发布,旨在提高编程效率和性能。简洁的语法快速的编译速度内置并发支持强大的标准库跨平台编译在开始编写 Go 代码之前,我们需要安装 Go 环境。可以从官方网站(https://golang.org)下载并安装适合您操作系统的版本。Go 语言简介:介绍了 Go 的主要特点和安装方法。基本语法:包括包声明、导入、主函数、变量声明和基本输出。原创 2024-09-23 03:39:34 · 1156 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】Java 语言编程极简入门教程
面向对象:Java是一种纯面向对象的编程语言。跨平台性:Java程序可以在不同的操作系统上运行,遵循"一次编写,到处运行"的原则。安全性:Java提供了多层次的安全机制。简单性:相比C++,Java的语法更加简洁易懂。理解这些特性有助于我们更好地把握Java语言的优势和应用场景。stagesolutionJava集合框架提供了一套用于存储和操作对象组的统一架构:ArrayList:动态数组实现LinkedList:双向链表实现。原创 2024-09-24 00:19:44 · 1190 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】React 极简入门教程
React 是什么:React 是一个用于构建用户界面的 JavaScript 库。组件化思想:React 应用由多个组件构成,每个组件负责渲染页面的一部分。虚拟 DOM:React 使用虚拟 DOM 来提高渲染效率。JSX:一种 JavaScript 的语法扩展,允许在 JavaScript 中编写类似 HTML 的代码。理解这些基本概念将有助于我们更好地学习 React。stagesolutionReact 基础概念开发环境搭建组件结构和 JSX 语法。原创 2024-09-24 00:18:36 · 516 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】jQuery 极简入门教程
jQuery是一个快速、小巧、功能丰富的JavaScript库。它简化了HTML文档遍历、事件处理、动画设计和Ajax交互。jQuery的口号是"写更少,做更多"(Write less, do more)。它兼容各种主流浏览器,包括IE 6+、FF 2+、Safari 3+、Opera 9+和Chrome。理解这些基本特征有助于我们认识到jQuery的优势和应用场景。stagesolutionjQuery的基本特性和环境设置基本语法和选择器事件处理DOM操作。原创 2024-09-24 00:17:32 · 850 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】C++ 编程极简入门教程
C++ 是一种通用的、高效的编程语言,由 Bjarne Stroustrup 于 1979 年开始设计开发。它是 C 语言的扩展,增加了面向对象编程、泛型编程等特性。兼容 C 语言支持面向对象编程支持泛型编程高效性能广泛应用于系统软件、应用软件、设备驱动程序、嵌入式软件等领域了解 C++ 的基本特性和应用领域有助于我们更好地学习和使用这门语言。stagesolution// 排序// 查找if (it!// 遍历。原创 2024-09-24 00:19:06 · 827 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】NodeJS 极简入门教程
NodeJS 极简入门教程。让我们通过多个角度来探讨这个主题,确保为您提供一个全面而深入的理解。原创 2024-09-24 00:18:13 · 526 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】Android 开发极简入门教程
solution本教程为您提供了 Android 开发的基础入门指南,涵盖了从环境搭建到简单应用开发的全过程。我们讨论了 Android 的基本概念、开发环境搭建、项目结构、UI 设计、Java 编程、应用运行等关键步骤。同时,我们还提供了进阶学习主题、推荐资源和实战项目建议,以帮助您继续深入学习 Android 开发。记住,Android 开发是一个不断学习和实践的过程。通过持续编码、阅读文档和参与社区,你将能够不断提升你的 Android 开发技能。祝你在 Android 开发的道路上取得成功!原创 2024-09-24 00:18:50 · 766 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】C 语言编程极简入门教程
C 语言是一种通用的编程语言,由 Dennis Ritchie 于 1972 年在贝尔实验室创建。高效性:C 语言生成的代码运行速度快,内存利用率高。可移植性:C 程序可以在不同的硬件平台上运行,只需少量或不需修改。低级操作:C 语言允许直接操作内存地址和位。结构化编程:支持函数、模块化程序设计。理解 C 语言的这些特点有助于我们更好地把握其学习重点和应用场景。stagesolutionC 语言简介和环境搭建基本语法结构数据类型和变量运算符和表达式。原创 2024-09-24 00:19:24 · 687 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】Go 语言编程极简教程 2
Go 语言(也称为 Golang)是由 Google 开发的一种开源编程语言。它于 2009 年发布,旨在提高编程效率和性能。简洁的语法高效的并发处理快速的编译速度强大的标准库跨平台支持在开始学习 Go 语言之前,我们需要了解它的基本特性和应用场景。函数是 Go 语言中的基本构建块。以下是函数的定义和使用方法:fmt.Println(square(5)) // 输出:25理解函数的定义和使用可以帮助您组织代码并提高代码的可重用性。Go 语言简介安装 Go 语言环境。原创 2024-09-23 03:39:50 · 1727 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】Rust 语言编程极简入门教程
内存安全:Rust 的所有权系统确保了内存安全,无需垃圾回收。并发安全:通过类型系统和所有权模型,Rust 在编译时就能避免数据竞争。零成本抽象:Rust 允许高级抽象,但不会带来运行时开销。现代语言特性:支持函数式编程、泛型、模式匹配等现代语言特性。理解 Rust 的这些核心特性有助于我们更好地学习和使用这门语言。stage本教程为您提供了 Rust 编程语言的极简入门指南。原创 2024-09-24 00:20:04 · 753 阅读 · 0 评论 -
【10 天学会10门技术极简教程系列】Python极简入门教程
Python是一种高级、解释型、通用编程语言。它以简洁、易读的语法著称。Python支持多种编程范式,包括面向对象、命令式和函数式编程。它有丰富的标准库和第三方库,适用于各种应用场景。理解这些基本特征有助于我们认识到Python的优势和应用领域。stagesolutionPython的基本特性和环境设置基本语法、控制流和函数重要的数据结构面向对象编程基础模块和文件操作一个简单的项目实战这只是Python庞大生态系统的冰山一角。原创 2024-09-23 21:31:01 · 647 阅读 · 0 评论 -
Rust编程基础教程:嵌入式开发入门
Rust 是一款开源、安全的系统编程语言,它支持运行在 Linux、Windows 和 macOS 操作系统上。近年来,Rust 受到了越来越多的人的关注和追捧,它可以用来编写可靠和高效的代码,同时还能保证程序的内存安全。而且,它也拥有强大的生态系统,其中包括大量成熟的 crate(库)。因此,Rust 在嵌入式系统领域得到了广泛应用。本文将教授 Rust 编程知识,让读者对 Rust 有个基本的了解并能够开发出符合自己要求的嵌入式程序。使用命令行工具 cargo 创建一个新的 Rust 项目;原创 2023-10-27 00:41:59 · 898 阅读 · 2 评论 -
Kotlin 入门极简教程
Kotlin 是一种现代、简洁且功能强大的编程语言,非常适合用于 Android 开发和服务器端开发。通过本教程的学习,你应该已经掌握了 Kotlin 的基础语法和核心概念。希望你能在实际项目中灵活运用这些知识,提升开发效率和代码质量。如果你对 Kotlin 有更多的兴趣,建议深入学习其高级特性和应用场景,并尝试开发一些实际项目来巩固所学知识。祝你在 Kotlin 的学习和使用中取得成功!原创 2018-11-05 14:10:00 · 8447 阅读 · 0 评论 -
C++异步编程与Coroutine
在计算机科学中,同步(synchronous)和异步(asynchronous)是两种不同的执行模型。同步编程:一个线程从头到尾依次执行每一行代码,直到该线程的执行流程被阻塞或结束。当一个函数调用发生在同步编程环境下时,调用线程会被阻塞,直到函数执行完成,线程才会继续往下执行。异步编程:允许多个操作并发执行,不需要等待其他操作完成就可以继续执行。当一个函数调用发生在异步编程环境下时,调用线程不会被阻塞,而是立即返回一个可观测对象(Promise),通过该对象可以获取函数返回值或监听函数执行状态。原创 2024-02-05 03:15:57 · 224 阅读 · 0 评论 -
Go必知必会系列:并发模式与锁
Golang从2009年诞生至今已经十多年的时间了,而它的并发特性也已经成为开发者们非常关注的问题。多线程、协程等编程模型虽然可以提高并行处理能力,但同时也带来了复杂性问题,导致编码难度变高,维护困难等一系列问题。为了解决并发编程中的各种问题,Golang在语言层面上提供了一些并发模式和同步机制,使得开发者可以方便地进行多线程和协程编程。这篇文章将要对Golang中最常用的几种并发模式和同步机制做个简要介绍,并结合具体的代码实例进一步阐述其工作原理。原创 2023-11-04 03:09:58 · 143 阅读 · 0 评论 -
Python 入门编程课系列:了解 Python,开启编程之旅
作者:禅与计算机程序设计艺术 1.背景介绍Python 是一种高级语言,它具有简单、易用、功能丰富等特点,并且拥有众多的库、工具和框架支持,是非常适合学习编程的语言。在学习 Python 的过程中,开发者需要掌握一些基础知识、技巧、调试方法等,才能顺利地编写出高质量的代码。另外,为原创 2023-10-28 02:38:13 · 189 阅读 · 0 评论 -
Rust编程基础教程:结构体和枚举类型
Rust 是由 Mozilla Research 开发的一门新兴的现代通用编程语言,它的设计目标是提供高效、可靠和并发的软件。它已经成为 Mozilla Firefox、Google Chrome、Dropbox等知名网站的后台语言,被越来越多的初创公司、小型公司和企业采用。它拥有独特的安全保证、极高的性能、实时性能保证以及活跃的社区支持。Rust语言中的结构体(struct)和枚举类型(enum)都是用来定义数据结构的两种主要方法。原创 2023-10-17 01:38:58 · 342 阅读 · 1 评论 -
【代码实践】A utility class JsonMapper that provides methods for converting Java objects to JSON(Jackson)
这些示例提供了基本的Jackson库使用指南,帮助你进行JSON序列化和反序列化。你可以根据需要进行进一步的定制,例如使用注解来控制字段的序列化和反序列化行为,处理复杂的JSON结构等。Jackson库提供了丰富的功能和选项,以满足不同的需求。Jackson是一个流行的Java库,用于处理JSON数据的序列化和反序列化。然而,我可以为你提供一个详细的Jackson库使用指南的概述,并包含一些关键的示例代码,以帮助你快速上手。Jackson的使用非常简单,只需要导入Jackson的依赖,然后就可以使用了。原创 2023-10-12 11:36:38 · 448 阅读 · 1 评论 -
Kotlin 序列化库介绍以及实践分享
作者:禅与计算机程序设计艺术 1.背景介绍Kotlin Serialization 简介Kotlin 是一个多范型编程语言,同时拥有静态类型检测和动态类型支持,具有安全、易用性强等优点。而它的一个重要特性就是可以编译成原创 2023-10-11 01:28:41 · 1047 阅读 · 5 评论 -
Boost C++ Libraries 教程:从入门到进阶
Boost C++ Libraries 是一组高效且可扩展的C++编程工具箱,包括多种用于并行、图形图像处理、信号处理和数字信号处理领域的算法库和组件。Boost C++ Libraries 的目的是通过提供简洁而易于使用的接口,帮助开发者更加容易地构建出色的软件。Boost C++ Libraries 提供了许多开放源码项目中常用的技术实现,如哈希表、堆栈、队列、优先级队列、串列容器等。原创 2023-10-09 02:00:51 · 1101 阅读 · 6 评论 -
Python编程基础教程:多线程与多进程编程
作者:禅与计算机程序设计艺术 1.背景介绍在软件开发过程中,我们经常需要处理大量的数据,因此需要充分利用计算机的硬件资源,提高我们的处理速度。由于CPU的单核特性,我们只能通过并行计算的方式提高我们的处理效率。但同时,由于CPU的存储、运算能力限制,内存容量往往会成为瓶颈,因此,除了CPU之外,计原创 2023-10-08 01:18:50 · 726 阅读 · 3 评论 -
Rust编程基础教程:物联网应用开发
Rust是一种多样化的编程语言,它具有极高的性能、安全性和可靠性,适合用在关键任务系统软件中。Rust编译器能够进行高效的代码优化,包括栈上分配、类型推断、借用检查、循环优化等等。Rust的并发机制、内存管理、面向对象编程特性使得它成为一个适用于复杂系统的优秀语言。Rust可以用于开发服务器应用程序、嵌入式设备驱动程序、实时系统软件、浏览器插件和游戏引擎。近年来,Rust的热度已经得到了很大的提升。目前,Rust已逐渐成为主流的语言,尤其是在云计算、微服务、区块链等领域。原创 2023-10-06 01:35:54 · 1059 阅读 · 6 评论 -
Go编程基础教程:Go数据结构和算法
Go语言作为Google公司开源的编程语言,它的内置数据类型和标准库提供了丰富的数据结构和算法。本教程将会从实现基本数据结构开始,介绍四个重要的Go数据结构——数组、链表、栈、队列,以及二叉树、哈希表等高级数据结构及其应用。原创 2023-10-07 01:31:55 · 767 阅读 · 4 评论 -
Java编程基础教程:条件语句和循环结构
计算机语言是用来描述计算器或者机器的指令以及对数据的处理方式的集合。不同编程语言之间的语法、结构、运算符号可能都不相同,但它们在很多方面都是相通的。例如,C语言、Java语言、Python语言都是属于通用编程语言,可以用于编写运行于多种平台上的应用软件。Java是由Sun Microsystems开发的一种面向对象、跨平台的编程语言。作为一个资深的技术专家或是程序员,你需要熟练掌握各种编程语言,包括Java语言。因此,掌握Java语言的基本语法是成为高级工程师或是CTO的必备技能。原创 2023-10-06 01:28:27 · 707 阅读 · 3 评论 -
Go必知必会系列:内存管理与垃圾回收
对于任何一门编程语言来说,内存管理和垃圾回收都是其基本功能。在没有GC机制之前,程序员需要自己手动分配和释放内存,来达到动态分配和释放资源的目的。当代码中出现内存泄漏、堆栈溢出等问题时,就需要找出这些内存的泄漏点。而使用GC机制后,这一切都可以自动化处理。对于Go语言来说,GC(Garbage Collection)就是垃圾回收机制,是编译器实现的一种自动内存管理机制。目前的Go语言已经成为了主要的云计算语言。由于其高效的垃圾回收机制,让Go语言成为最受欢迎的静态语言之一。原创 2023-10-06 01:47:02 · 751 阅读 · 5 评论 -
Go必知必会系列:Go语言基础语法与特性
Go(英文全称:Golang)是一种静态强类型、编译型、并发的编程语言,它的特点是快速编译、执行速度快,读写方便简单。它支持并发、函数式编程、面向对象编程等多种编程范式,也有自己独有的垃圾回收机制,经过“GC复制算法”的优化,可以用于开发可伸缩、高性能的服务端应用。Go已经成为云计算领域的标杆语言,被越来越多的公司和组织采用作为主要开发语言。因此,Go语言在国内也有非常广泛的应用。原创 2023-10-06 01:09:53 · 724 阅读 · 5 评论 -
编程语言发展史之:编程语言的未来趋势
编程语言是计算机科学的基础,它们是程序员用来与计算机进行交流的工具。编程语言的发展历程可以追溯到20世纪50年代,从最初的机器语言和汇编语言,到后来的高级语言,如C、C++、Java、Python等,再到今天的函数式编程语言、并发编程语言、数据科学语言等,编程语言的发展一直在不断变化和进步。A: 编程语言是计算机科学的基础,它们是程序员用来与计算机进行交流的工具。A: 函数式编程语言是一种编程范式,它强调函数的重要性,函数可以作为数据处理和计算的单位。原创 2023-10-04 00:12:58 · 711 阅读 · 5 评论 -
面向对象编程的基本特征和代码实例讲解
面向对象的编程(Object-Oriented Programming,OOP)是一种抽象程度很高、编程方式更接近自然语言的方式,具有很强的可维护性和扩展性。抽象化:把现实世界中相似或相关的事物归类到一个集合体中,进而对这个集合体进行操作,提高编程效率和代码的复用性;继承和多态:子类可以继承父类的属性和方法,并根据需要重写其行为,从而避免代码重复;封装:隐藏实现细节,仅向外界提供接口,提高代码的可靠性和安全性;多线程和分布式处理:支持多线程编程,充分利用多核CPU资源,方便开发分布式系统;原创 2023-10-03 01:53:49 · 753 阅读 · 6 评论 -
结合Mocha和Chai来编写一个简单的函数进行单元测试 What is the best way to write clean unit tests in JavaScript
很多人认为学习编程并不仅仅是在学语法、数据结构等基础知识。还有很多其他要素比如业务逻辑、用户体验、性能优化、可靠性保障等都需要考虑到。所以,单元测试也是一个非常重要的环节。本文将会介绍单元测试的相关知识,包括什么是单元测试、为什么要进行单元测试、如何编写干净的单元测试、单元测试的工具链及运行方式等。并且结合Mocha和Chai来编写一个简单的函数进行单元测试。测试驱动开发(TDD)函数式编程(FP)单元测试就是指针对一个模块、一个函数或者一个类来进行正确性检验的过程。原创 2023-10-02 19:30:52 · 755 阅读 · 5 评论 -
C++编程入门——从基础语法开始学起
C++(通称“CPP”)是一种高级、面向对象的、静态ally typed、结构化的编程语言。它不但可以编写系统级程序,而且还可以编写游戏、GUI和Web应用等应用软件。它的开发者为贝尔实验室的史蒂夫·乔布斯(Dennis Ritchie)。目前,C++已经成为众多领域最受欢迎的编程语言。2003年,在一个名叫“龙芯”的计算机实验室里,当时只有3个成员,但很快就扩展到7个人,并于同年发布了第一个C++编译器——GNU C Compiler (GCC)。原创 2023-10-02 19:32:27 · 817 阅读 · 6 评论 -
那就赶快来一起开启美好的函数式编程之旅吧
作者:禅与计算机程序设计艺术 1.简介函数式编程(Functional Programming)一直以来都是一种比较热门的编程范式。从Haskell、Scheme、Lisp到Erlang/Elixir等主流语言都对其提供了支持。它的主要思想就是利用函数式编程中数学归纳、高阶函数等特性来编写出更加优雅、原创 2023-10-02 18:47:13 · 753 阅读 · 4 评论 -
R语言中的并发编程和分布式计算实践
作者:禅与计算机程序设计艺术随着互联网、大数据、云计算等新兴技术的发展,越来越多的人们开始使用这些技术进行数据处理、分析及科技创新。基于数据的分析需要复杂的计算机系统才能实现高效的运算,如何提升计算机资源利用率,解决计算密集型任务的并行计算、分布式计算是机器学习和人工智能领域所面临的挑战。而R语言作为一种跨平台的数据处理、统计分析、可视化语言,其提供了丰富的并行和分布式计算机制。原创 2023-10-02 12:23:13 · 794 阅读 · 0 评论 -
编程语言发展史之:编程语言标准化与社区
在现代社会中,计算机技术不断发展,程序员数量也在日益增长。对程序员而言,编程语言选择直接影响着生产力、职业生涯和个人发展方向。因此,要实现程序员之间的相互沟通,开发软件系统,提高编程能力水平,就需要确保编程语言的统一性与可移植性。为了让编程语言具有更好的维护性、可读性和可扩展性,降低学习曲线,提升效率,使程序员能够更加轻松地编写程序,所以编程语言标准化与社区应运而生。本文试图通过分析编程语言发展历程及其演变过程中的关键因素,阐述编程语言标准化与社区的重要意义。原创 2023-09-26 01:38:12 · 996 阅读 · 2 评论 -
编程语言发展史之:编程语言与量子计算
近年来随着人工智能技术的发展,传统的算法越来越难以应对复杂的问题。因此,工程师们更倾向于采用机器学习、深度学习等新的计算方式,并希望这些计算模型能够解决现实世界中遇到的新问题。在探索新的计算方式时,工程师们需要掌握一些编程语言知识,例如掌握哪些编程语言比较适合量子计算相关的任务。由于我国人工智能领域的蓬勃发展,计算机技术日渐成熟。本文将介绍现代编程语言发展历史、语言之间的区别与联系、常用语言特点、它们所应用的领域及局限性等内容,介绍量子计算领域所使用的编程语言,并提供相应的代码示例。原创 2023-09-25 01:18:12 · 2207 阅读 · 6 评论 -
【10 天学会10门技术极简教程系列】SQL 编程语言极简教程
【10 天学会10门技术极简教程系列】SQL 编程语言极简教程。原创 2023-09-27 12:16:52 · 2173 阅读 · 2 评论