- 博客(75)
- 收藏
- 关注
原创 Gemini 3 Pro:全模态智能的终极进化
想象一下,当你上传一段复杂的化学实验视频,Gemini 3 Pro 不仅能看到试管颜色的变化,还能听到反应时的细微声响,甚至理解实验台的空间结构。它甚至引入了“系统2”思维模式(System 2 Thinking),在面对复杂的逻辑陷阱时,会像人类一样停下来“慢思考”,确保给出的答案严谨可靠。Gemini 3 Pro 的发布,不仅仅是科技巨头的秀肌肉,更是为了赋能像你这样充满创造力和好奇心的每一个个体。无论你是程序员、设计师、作家,还是正在探索世界的学生,它都将是你最强大的副驾驶。
2025-11-24 17:14:31
266
原创 Gemini-3-Pro重新定义AGI的智能边界
当你把镜头扫过一幅画作时,它不仅能告诉你画的名字,还能根据光影变化即时评论画家的笔触技巧,甚至能听到背景中游客的低语并进行翻译。这种全感官的融合,让 AI 交互变得前所未有的自然和流畅。它不再仅仅是一个聊天机器人,它是你外脑的延伸,是探索未知的罗盘。无论你是在和它讨论五年前的一段对话,还是整个人类历史中的某个冷门事件,它都能信手拈来,仿佛一位博闻强强记的智者就在你对面。在人工智能飞速发展的浪潮中,我们见证了无数次“量”的积累,而今天,Google DeepMind 再次为我们带来了“质”的飞跃——
2025-11-24 17:11:39
663
原创 Gemini 3.0:迈向通用人工智能的终极跨越
这意味着,Gemini 3.0 能够像人类一样,同时“看到”视频中的微表情,“听到”语调中的犹豫,并结合上下文进行深度理解。以前的 AI 可能会在长篇大论中“迷失方向”,但 Gemini 3.0 引入了近乎无限的上下文窗口,并配合全新的“动态注意力机制”。无论你输入的是整套的法律法典,还是数百万行的代码库,它都能精准定位到每一个。想象一下,你给它看一段复杂的物理实验视频,它不仅能描述现象,还能直接推导出背后的物理定律。在人工智能的浩瀚星河中,每一次版本的迭代都像是一次超新星爆发,照亮了我们探索未知的道路。
2025-11-22 07:47:55
643
原创 Gemini 3:全模态交互的奇点时刻
尽管拥有了如此强大的算力,Gemini 3 Pro在微调阶段却着重强化了EQ(情商)。它懂得在你的文字中捕捉情绪的微澜,用更具同理心的语气进行回应。它不仅是效率的倍增器,更是你疲惫时的倾听者。Gemini 3 Pro的出现,预示着我们离AGI(通用人工智能)又近了一步。让我们拥抱这个新时代,与AI共同进化,探索未知的星辰大海!
2025-11-22 07:42:10
873
原创 Gemini 3 Pro:通往AGI时代的终极钥匙
Gemini 3 Pro 并不只是一个更聪明的聊天机器人,它是人类智慧的数字化镜像。它既是能在毫秒间处理亿万数据的超级计算机,又是能理解人类情感波动的贴心伙伴。随着它的发布,我们与未来的距离,从未如此之近。
2025-11-21 17:21:56
694
原创 Gemini 3 Pro:重塑认知边界的通用人工智能曙光
Gemini 3 Pro 的出现,不仅仅是参数量的堆叠,它是人类智慧的数字化延伸。无论是在寻找攻克癌症的新药,还是在构思下一部伟大的科幻小说,Gemini 3 Pro 都将是那个最可靠、最聪明的伙伴。未来已来,你准备好与其同行了吗?
2025-11-21 17:00:25
796
原创 Gemini 3 Pro 深度解析:开发者的新一代“神级”全栈副驾驶
Gemini 3 Pro 的出现,可能意味着“面向 Stack Overflow 编程”的时代终结,**“面向 AI 结对编程”**的时代正式到来。作为开发者,我们不应焦虑被替代,而应兴奋于手中多了一把屠龙的宝刀。技术在变,但我们通过代码改变世界的热情不变!共勉!
2025-11-21 16:46:19
351
原创 Rust 中的数据结构选择与性能影响
在 Rust 编程中,数据结构的选择对程序性能有着深远的影响。Rust 的零成本抽象承诺意味着,当我们选择正确的数据结构和抽象层次时,最终生成的机器码可以与手写的底层代码性能相当。通过基准测试验证假设,通过 profiling 工具定位瓶颈,最终实现性能与可维护性的平衡,这才是 Rust 工程实践的精髓所在。虽然查询复杂度为 O(log n),但其 B 树结构对缓存更友好,且保证了键的有序性,在需要范围查询或有序遍历的场景中优势明显。的性能介于两者之间,但在数据量较大时,其对缓存的高效利用开始显现优势。
2025-11-19 20:07:20
914
1
原创 释放计算潜力:Rust 中 SIMD 优化的深度实践与思考
在追求极致性能的系统中,我们总会遇到 CPU 算力瓶颈。现代 CPU 为了解决这个问题,普遍引入了 SIMD(Single Instruction, Multiple Data,单指令多数据流)技术。SIMD 允许 CPU 在一个时钟周期内,对多个数据元素执行相同的操作(例如,同时对 8 个 32 位浮点数执行加法)。Rust 作为一门追求“零成本抽象”和“无畏并发”的系统编程语言,在面对 SIMD 这种底层硬件特性时,提供了一套独特且分层的解决方案。
2025-10-30 00:09:45
699
原创 深入 Rust 编译的心脏:从 `profile` 配置到 PGO 的性能榨取艺术
永远从测量开始 (Benchmark):不要盲目使用 `lo = “fat”。使用cargo bench` 和来验证你的改动。理解你的目标:你是要最小的二进制文件(, `panic = “abort”),最快的运行时(, PGO),还是最快的 CI 编译(使用自定义 Profile:不要只依赖dev和release。为你的 CI、基准测试、生产环境创建不同的profile。Rust 给了我们控制编译器的强大能力,而精通这些配置,就是从“写出能跑的代码”到“写出极致性能代码”的必经之路。
2025-10-30 00:08:37
979
原创 Rust 性能“核武器”:深入剖析 Profile-Guided Optimization (PGO) 实践
PGO 是 Rust 开发者在性能优化的“最后一公里”上最强大的工具之一。它不是一个可以随手打开的开关,而是需要深思熟虑的、数据驱动的工程实践。它迫使我们深入思考:“我的程序实际上在做什么?”,而不仅仅是“我认为它在做什么?当你已经用尽了算法优化、数据结构优化的所有手段,并且(最重要的是)你拥有可以代表真实场景的负载数据时,PGO 将为你带来那至关重要的 5%-20% 的性能飞跃,让你的 Rust 程序在性能之路上登峰造极。加油!不断探索 Rust 性能的边界吧!
2025-10-30 00:06:31
504
原创 仓颉中的UTF-8编码处理:理论与实践深度解读
在传统的低级编程中,开发者常常陷入"字节计数"和"字符计数"的混淆。当你迭代一个包含中文、emoji等多字节字符的字符串时,简单的索引操作可能导致破坏编码完整性,产生乱码甚至程序崩溃。这不仅是语言实现的挑战,更是使用者需要理解的细节。不要盲目信任外部输入;UTF-8处理在仓颉中不再是一个低级的心烦之事,而是一个机会——让你写出既安全又高效的国际化应用。假设需要截取UTF-8字符串的子串,错误地在多字节字符中点切割会导致编码破坏。考虑一个实际需求:给定一个包含中文内容的长字符串,需要频繁访问特定位置的字符。
2025-10-29 12:41:01
740
原创 仓颉语言异常捕获机制深度解析
仓颉的异常捕获机制体现了现代语言设计的进化方向:通过类型系统在编译期保障错误处理的完备性,通过函数式组合子提升代码的表达力,通过分层错误模型平衡安全性与灵活性。深入理解这些机制,能够帮助我们构建更加健壮、可维护的系统架构。
2025-10-29 12:33:26
885
原创 仓颉语言中的Panic处理流程:从机制到实践
仓颉语言的panic处理流程体现了"快速失败、优雅降级"的设计思想。通过合理运用panic、defer和catch机制,我们能够构建既安全又高效的系统。理解panic的本质,不是鼓励滥用,而是在适当场景下利用其简洁性和确定性,这正是专业工程师需要掌握的平衡艺术。
2025-10-29 12:32:30
338
原创 仓颉语言中的变量声明与赋值:从基础到深度实践
仓颉的变量声明与赋值系统看似简单,实则蕴含了类型安全、性能优化、并发友好等多方面的设计权衡。通过深入理解其技术细节和背后的设计理念,我们能够编写出更加健壮、高效的代码,真正发挥仓颉语言的技术优势。
2025-10-29 12:31:33
428
原创 仓颉语言中的运算符深度解析与实践
仓颉遵循标准的优先级规则:一元运算符优先级最高,其次是乘除运算,再次是加减运算,关系运算符次之,逻辑运算符优先级最低。仓颉语言提供了丰富的运算符体系,涵盖算术、逻辑、位运算、比较等多个维度。算术运算符(+、-、*、/、%)不仅支持基本数值类型,还通过运算符重载机制扩展到自定义类型,这为构建领域特定语言(DSL)提供了可能性。=、<、>、<=、>=)则严格遵循类型兼容性规则,避免了隐式类型转换带来的潜在风险。仓颉的运算符系统体现了现代语言设计的平衡之道:既保持了语法的简洁性,又提供了足够的扩展能力。
2025-10-29 12:30:34
295
原创 仓颉语言中的循环语句深度解析与实践
仓颉语言的循环语句设计充分体现了现代编程语言的特点:语法简洁、类型安全、表达力强。通过合理选择for或while循环,配合循环控制语句和高级特性,开发者能够编写出既高效又易维护的代码。深入理解循环语句的本质和最佳实践,是掌握仓颉语言、提升编程能力的重要一步。
2025-10-29 12:29:39
759
原创 仓颉语言中的类与对象:从概念到实践的深度解析
仓颉的类与对象机制不仅继承了面向对象的经典思想,更在类型安全、性能优化和代码表达力之间找到了平衡点。通过深入理解其设计哲学并在实践中灵活运用,我们能够构建出既健壮又高效的软件系统。掌握这些概念和技巧,是成为仓颉语言专家的必经之路。
2025-10-29 12:28:28
249
原创 Rc与Arc的引用计数机制深度解析
Rc和Arc是 Rust 提供的强大工具,但理解其底层机制至关重要。合理选择(单线程用 Rc,多线程用 Arc),警惕循环引用,并认识到性能权衡。真正的专家不是无脑使用工具,而是理解何时使用、为何使用。
2025-10-29 11:09:13
289
原创 Rust 多重借用冲突的深度解决方案
Rust 的借用检查器能够理解字段级别的借用独立性(disjoint borrowing),但前提是借用发生在同一词法作用域内。时,你承担了编译器的责任。将借用检查从编译期推迟到运行时,提供了灵活性但牺牲了零成本抽象原则。Rust 的借用检查器(Borrow Checker)是其内存安全保证的核心机制。然而在实际开发中,这个规则常常与我们的代码结构发生冲突,尤其是在处理复杂数据结构时。Rust 的借用检查器不是障碍,而是引导我们写出更清晰、更安全架构的指南针。这是最优雅且零成本的解决方案。
2025-10-29 11:06:46
233
原创 Rust 生命周期注解:从语法到深度实践
生命周期注解是 Rust 零成本抽象的基石,它将内存安全从运行时检查转移到编译时证明。掌握生命周期需要转变思维:不是"这个变量活多久",而是"这些引用的关系如何约束"。通过实践复杂场景,我们能深刻理解 Rust 的设计哲学:在不牺牲性能的前提下,实现内存安全的静态保证。它不是创造引用的生命周期,而是描述引用之间的关系,帮助编译器验证内存安全。本文将深入探讨生命周期注解的语法规则,并通过实践案例展现其设计哲学。独立演化,允许配置和数据有不同的生命周期。生命周期注解使用撇号开头的标识符,如。
2025-10-29 11:02:06
376
原创 【Python爬虫实战】深入解析 Scrapy 管道:数据清洗、验证与存储的实战指南
Scrapy 是一个功能强大的 Python 爬虫框架,在其中,管道(Pipeline) 是处理抓取到的数据的核心部分。管道的作用是对爬虫抓取到的 Item 进行后续处理,例如清洗、验证、存储等操作。本节将从多个方面详细介绍 Scrapy 管道的使用,包括管道的基本功能、配置方法、数据存储的实现、管道的多样化处理逻辑以及注意事项。管道是 Scrapy 爬虫项目中处理数据的核心组件。通过管道,可以对抓取的数据进行清洗、验证、存储等操作。
2024-12-16 22:49:37
2095
25
原创 【Python爬虫实战】Scrapy 翻页攻略从入门到精通的完整教程
Scrapy 是一个强大的网页爬虫框架,广泛用于从网站中抓取数据。在使用 Scrapy 进行数据抓取时,翻页请求是常见的需求。本文将详细介绍 Scrapy 发起翻页请求的原理与实现方式,包括如何通过 Scrapy 框架进行翻页请求、如何自定义请求参数,以及如何处理多页面的数据提取。Scrapy 提供了一种高效而灵活的方式来处理翻页请求。通过对象,我们可以轻松地发送请求并处理响应。同时,Scrapy 还提供了强大的数据传递机制(如meta参数)和优化手段(如重写方法),使得分页抓取的实现更加灵活和高效。
2024-12-16 21:48:17
2178
44
原创 手机发展史介绍
从第一台移动电话诞生到如今的智能手机,手机的进化不仅仅是科技进步的体现,更是人类生活方式变革的缩影。手机让人们能够更方便地联系彼此,更便捷地获取信息,并通过社交媒体让我们与世界紧密相连。尽管手机也带来了诸如隐私、健康等方面的问题,但它在改善生活质量、推动社会进步方面的作用是毋庸置疑的。随着科技的不断发展,手机还将继续演变,为人类的未来生活带来更多可能性。
2024-12-16 21:24:41
12041
79
原创 卡达掐发展史
自行车作为一种历史悠久而又不断创新的交通工具,在现代社会中展现出多维的价值。它不仅承载着环保、健康、自由的理念,也为城市发展和人类生活方式的多样化提供了丰富的可能。无论是骑行爱好者,还是日常通勤者,自行车都在以其独特的方式,默默地改善着我们的生活。
2024-12-16 21:24:31
1512
44
原创 【Python爬虫实战】深入解析 Scrapy:从阻塞与非阻塞到高效爬取的实战指南
在大数据时代,网络爬虫成为获取信息的重要工具,而 Scrapy 是其中的佼佼者。作为一个功能强大且高效的 Python 爬虫框架,它不仅支持复杂的网页抓取,还能通过非阻塞的异步机制极大提升爬取性能。然而,许多人在初学时常常被阻塞与非阻塞的概念以及 Scrapy 的模块化设计弄得一头雾水。这篇文章将从基础的阻塞与非阻塞概念出发,逐步深入解析 Scrapy 的工作流程和模块作用,最后通过一个完整的入门实例,帮助你快速掌握这款高效爬虫框架。
2024-11-26 21:06:51
1766
73
原创 【Python爬虫实战】深入解析 Scrapy 爬虫框架:高效抓取与实战搭建全指南
在大数据时代,网络爬虫已经成为数据收集的重要工具。而 Scrapy 作为一个功能强大且高效的 Python 爬虫框架,以其模块化、异步处理和高度可扩展性,广泛应用于数据挖掘、监控和分析等领域。本指南将从 Scrapy 的基础概念到项目实践,带你全面了解如何搭建和优化一个 Scrapy 爬虫项目,不论是新手还是经验丰富的开发者,都能从中获益。Scrapy 是一个广泛使用的 Python 爬虫框架,专为高效抓取和处理网络数据而设计。
2024-11-21 21:53:32
2303
71
原创 【Python爬虫实战】从入门到精通:全面解析IP代理池的原理与实战应用
在当今互联网时代,IP代理池成为了网络爬虫、隐私保护以及突破访问限制的重要工具。无论是初学者还是资深开发者,掌握代理池的搭建与使用技巧都能极大提升网络爬取的效率和稳定性。本篇文章将从基本概念出发,详细讲解IP代理池的核心功能、工作原理及应用场景,同时提供免费代理IP采集和使用的完整代码示例,助力你轻松应对各种实际需求。总结来说,IP代理池是一种灵活、强大的工具,在数据抓取、网络访问优化和隐私保护等方面应用广泛。然而,要根据具体需求选择适合的方案,权衡代理池的质量、稳定性与成本。
2024-11-18 21:25:30
2874
68
原创 【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解
在信息爆炸的时代,自动化网页爬取和数据获取逐渐成为必备技能。是一个基于 Selenium 和 Requests 的 Python 库,通过和WebPage两大模块,简化了网页的自动化操作与数据抓取。使用 HTTP 请求实现轻量级、高效的静态页面爬取,而WebPage则结合了动态页面操作和数据提取的强大功能。本教程将详细讲解和WebPage的使用方法及其核心功能,带您高效掌控网页数据。是中用于轻量级爬取的模块,适合在 Windows、MacOS 和 Linux 等环境下进行静态页面爬取。它通过封装。
2024-11-13 00:02:15
19983
138
原创 【Python爬虫实战】深入解锁 DrissionPage:ChromiumPage 自动化网页操作指南
随着网络自动化需求的增加,Python 开发者需要一种简洁而高效的工具来实现浏览器控制与网页操作。DrissionPage 作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持。本文将聚焦 DrissionPage 中的,涵盖从基础的浏览器启动、元素操作到iframe切换的核心功能。无论是新手入门还是资深用户的进阶需求,本文都将为您提供实用的参考指南,助您轻松掌控网页自动化任务。DrissionPage 的。
2024-11-09 00:30:38
4734
35
原创 【Python爬虫实战】全面解析 DrissionPage:简化 Python 浏览器自动化的三种模式
在数据抓取与自动化测试领域,处理静态和动态网页的需求日益增加。传统的工具如requests和selenium虽然各有优势,但往往需要根据需求在二者之间切换,增加了代码的复杂度。则创新性地整合了这两种模式,提供了统一的 API,使得静态和动态网页的处理变得更加简洁高效。此外,的模块结合了Playwright的强大性能,专为处理复杂的动态网页而设计,让开发者可以在无头浏览器中高效执行 JavaScript、进行模拟操作,为网页自动化和数据抓取提供了理想的解决方案。
2024-11-07 23:41:39
7374
68
原创 【Python爬虫实战】深入 Selenium:从节点信息提取到检测绕过的全攻略
在使用 Selenium 进行网页自动化时,不仅需要掌握基本的节点信息提取和选项卡管理,还需要考虑到如何高效等待加载,以及如何绕过网站对自动化工具的检测。这篇文章将详细介绍如何使用 Selenium 获取节点信息、处理延时等待、管理多选项卡,并分享多种绕过检测的方法,帮助开发者应对各种自动化测试中的挑战。在 Selenium 自动化测试中,掌握节点信息获取、延时等待和选项卡管理是实现流畅操作的基础,而面对网站的反自动化检测,绕过检测的方法则是实现稳定自动化的关键。
2024-11-05 21:13:02
5302
104
原创 【Python爬虫实战】全面掌握 Selenium 的 IFrame 切换、动作链操作与页面滚动技巧
在使用 Selenium 进行网页自动化测试或数据抓取时,我们经常会遇到需要操作 iframe、模拟复杂的 用户交互动作,以及处理 动态加载页面 的情况。这些操作是实现稳定且高效自动化流程的关键。本指南将详细介绍如何切换 iframe、使用动作链执行复杂交互,以及如何通过页面滚动加载更多内容。无论是自动化测试还是爬取动态网页,这些技巧都能帮助你更好地控制浏览器。页面滚动在 Selenium 中非常常见,主要用于:模拟用户浏览页面的行为。处理无限滚动页面中的动态内容。滚动到页面中特定元素,以实现交互。
2024-10-30 17:05:06
1994
26
原创 【Python爬虫实战】深入解析 Selenium:从元素定位到节点交互的完整自动化指南
Selenium 是进行网页自动化操作的强大工具,在测试、数据抓取、用户行为模拟等领域广泛应用。本指南将带您详细了解如何在 Selenium 中查找和定位页面元素,并深入介绍各种节点交互方法,包括点击、输入文本、选择选项等操作。无论您是初学者还是经验丰富的开发者,本篇文章将帮助您掌握 Selenium 自动化的核心技能,实现更高效的网页自动化操作。查找节点是 Selenium 自动化测试和数据抓取的关键步骤。
2024-10-28 15:38:22
3001
42
原创 【Python爬虫实战】Selenium自动化网页操作入门指南
在现代网络开发和数据爬取中,Selenium 已成为不可或缺的自动化工具之一。无论是用于测试、数据抓取,还是模拟用户行为,Selenium 都可以在不干预的情况下自动化浏览器操作,为开发者节省大量时间和精力。本指南将带您从 Selenium 的安装配置到高级操作,逐步掌握网页自动化的核心技巧。Selenium 提供了强大的网页自动化功能,适合广泛的应用场景。通过掌握基础配置、元素定位、多窗口处理、弹窗管理等技巧,您将能够轻松应对复杂的网页自动化任务。
2024-10-26 17:50:00
2755
24
原创 【Python爬虫实战】深入理解Python异步编程:从协程基础到高效爬虫实现
随着网络和数据的迅速发展,越来越多的场景需要高效处理大量请求和数据。传统的同步编程模式在处理I/O密集型任务时会浪费大量等待时间,而Python的异步编程技术提供了一种更高效的方式。本文从Python异步编程的基础概念出发,深入讲解协程、asyncio库及其核心功能。通过详细的代码示例与解释,我们将逐步探索异步编程的应用场景await asyncio.sleep(1) # 模拟异步操作# 运行协程my_task是一个协程,使用async def定义。模拟一个异步操作。
2024-10-25 17:23:29
2435
18
原创 【Python爬虫实战】多进程结合 BeautifulSoup 与 Scrapy 构建爬虫项目
在大数据时代,爬虫技术是获取和处理网络数据的利器。面对需要处理大量网页的爬取任务,如何提升效率成为了一个重要的问题。Python 的多进程技术结合和Scrapy,可以在保证解析能力的同时,大大提高并发抓取的效率。这篇文章将详细介绍如何利用多进程模块进行爬虫、结合管理任务,以及在更复杂的场景中使用和Scrapy,打造功能强大的爬虫项目。使用多进程结合来实现爬虫,可以有效管理任务的执行和跟踪任务完成情况。允许你在所有任务完成后进行一些后续操作,这对于处理大量网页的爬虫项目非常有用。以下是一个使用。
2024-10-25 16:50:32
1875
42
原创 【Python爬虫实战】从单线程到线程池:掌握三种高效爬虫实现方式
在现代网络爬虫的开发中,性能和效率往往是关键考量因素。无论是初学者还是有经验的开发者,了解不同爬虫实现方式及其优缺点,都是提升爬虫效率的必经之路。本文将深入探讨三种常见的爬虫实现方式:单线程爬虫、多线程爬虫,以及使用线程池的多线程爬虫,并通过详细的代码示例帮助读者掌握如何高效进行网页数据抓取。无论你的目标是爬取少量页面还是大规模数据,本文都将提供有效的解决方案。通过本篇文章,读者不仅能够理解单线程、多线程和线程池爬虫的工作原理,还能够通过具体的代码实例掌握如何在不同场景下选择合适的爬虫策略。
2024-10-21 17:33:11
2053
92
原创 【Python爬虫实战】高效数据去重:利用Redis优化爬虫性能
在网络爬虫的开发过程中,数据的去重是一个至关重要的环节。随着信息的快速增长,重复的数据不仅占用了宝贵的存储空间,还可能导致后续的数据处理效率降低。因此,掌握有效的去重方法可以帮助开发者提高爬虫的性能和可靠性。本文将深入探讨多种数据去重的策略,尤其是如何利用Redis这一高效的工具来优化去重流程。Set适合中小规模数据的去重。Bitmap适合大规模数据的高效去重。适合基数估算场景,不适合精确去重。Sorted Set适合去重同时需要附加排序或额外信息存储的场景。
2024-10-21 16:44:30
3246
43
原创 提取图片内容的 Python 程序
要编写一个提取图片内容的 Python 程序,可以使用 OCR(光学字符识别)技术。常用的库是,它结合了TesseractOCR 引擎。本次需求是使用python程序读取指定文件夹中的图片,提取图片中的文字内容,并且将提取的内容生成txt档案,txt档案与识别的图片单独放在一个文件夹中。由于图片中的内容是中文,还需要下载安装chi_sim.traineddata文件。
2024-10-21 16:42:08
1469
10
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅