每日HackerNews RSS

Histo.fyi 是一个包含与主要组织相容性复合体 (MHC) 蛋白相关的数据、图像和氨基酸序列的网站。 英国牛津的研究员 Chris Thorpe 利用称为大语言模型 (LLM) 的人工智能 (AI) 工具将这些信息压缩为可理解的格式。 与 ChatGPT 等流行平台不同,Thorpe 的工具在他的笔记本电脑上本地运行,而不是在线托管。 最近,人们对利用紧凑的“开放重量”版本的法学硕士越来越感兴趣,拥有合适计算机资源的个人可以下载这些版本进行本地操作。 人工智能技术的这些发展使研究人员能够保护患者机密、降低成本并保持可重复性。 微软公司推出了多种紧凑模型,例如Phi-1、Phi-1.5、Phi-2以及Phi-3和Phi-3.5的多个迭代。 与早期较大的型号相比,这些型号在安装到便携式设备上时表现出令人印象深刻的性能。 这些模型效率的提高使科学家能够直接在个人笔记本电脑或智能手机上使用人工智能辅助。 这些进步有望在各个领域取得重大进展,使科学家能够创建适合其独特需求的专门应用程序,并增强本地人工智能能力,以执行在互联网连接有限的偏远地区执行的任务。 其中一个例子是新罕布什尔州的一位生物医学科学家创建了 TurbCat-72b,它是 Qwen 模型的一种变体,他利用科学数据专门针对他们的需求改进了模型。 这个本地应用程序为集思广益、编辑手稿、原型代码和浓缩以前发布的材料提供支持。 此外,这些进步还提供了更好的隐私保护,因为敏感的个人或公司数据不需要发送到外部进行分析。 随着这些工具的不断发展,科学家们可以期待在不久的将来能够轻松获得强大的人工智能辅助技术。

OpenAI 的 LLaMA(大型语言模型架构)是一种专为自然语言理解和生成而设计的人工智能模型。 它可以在各种计算平台上运行,包括 Windows、Linux、Mac 以及 NVIDIA 和 AMD 显卡。 其他推理服务器也可以利用它,尽管与在专用 GPU 上运行相比,它们通常执行速度更慢。 设置 LLaMA 非常简单,只需极少的努力即可启动。 用户只需在开发人员网站上选择所需的模型,然后使用单个命令行或 Docker 容器,无需管理任何依赖项。 LM Studio 或 Jan 等替代工具的操作方式类似,利用 LLaMA 的核心功能并提供基本功能,但缺乏现实代理生成器 (RAG) 或代理等综合平台中的高级功能。 使用 LLaMA 2 进行的基准测试显示,在采用 M3 Max 芯片组的 MBP 14 上,文本生成速度约为每秒 8.5 秒。 该比率反映了大约 80% 的效率,可以满足大多数应用程序的用户需求。 然而,在较长的对话交流中,令牌开始输出之前大约需要 3.5 分钟的时间。 小型专用模型在某些利基应用中表现出色,可能会扰乱大量投资于大型模型的企业。 这些更轻的替代方案可显着节省成本,减少对装有 GPU 的庞大数据中心进行模型训练的需求。 此外,随着公司越来越依赖云存储模型,隐私问题也随之出现,从而导致未经授权访问敏感公司数据的可能性。 本地模型通过提供对外部网络的暴露有限的独立解决方案来减轻这些风险。 总之,LLaMA 提供了一个有吸引力的多功能平台,用于在不同设备上实现轻量级 AI 功能。 其易于部署和兼容性使其成为寻求安全、适应性强和可扩展语言模型的组织的有吸引力的选择。 此外,本地实施满足了人工智能用例中对隐私保护和自治日益增长的需求,确保企业保持对其敏感数据的控制。

为什么要创造如此巨大的图像? 有了这个分辨率,我们就可以非常清楚地看到这幅画的精确物理状态。 铅皂的突起、微小的裂纹、单个颜料颗粒的形状、过去的修饰以及伦勃朗绘画技法的美丽细节都异常清晰。 这使得研究人员能够了解这幅画的状况,以便为未来的保护处理制定最佳计划。 它帮助我们更好地理解伦勃朗的绘画方式,并为《夜巡》历史上的这个时刻创造了精美的“快照”。

一位用户描述了参观阿姆斯特丹国立博物馆的经历,并对这些画作的质量表示失望,认为这些画作毫无趣味,而且主要集中在描绘荷兰黄金时代的富人身上。 然而,该用户强调了一些特定的例外,例如伦勃朗的《夜巡》,他们认为这幅作品因其尺寸和复杂的细节而具有影响力,甚至表示与《蒙娜丽莎》等著名作品相比,它看起来更令人印象深刻。 该用户还提到,与同时期的其他画家相比,对伦勃朗的作品有不同的欣赏。 此外,用户强调了亲自观看艺术而不是数字艺术的重要性,理由是数字媒体无法完全捕捉到比例、色彩准确性、透明度和纹理方面的差异。 针对用户的体验和意见,我总结了以下几点: * 用户发现荷兰黄金时代的传统绘画主要集中在描绘富有的人,并将主题描述为“乏味”。 * 尽管有这种看法,用户还是承认有一些特殊的例外,例如伦勃朗的《夜巡》,他们发现该作品因其尺寸和复杂的细节而具有影响力。 * 与同时期其他画家相比,用户对伦勃朗作品的欣赏有所不同。 * 用户强调了亲自观看艺术作品而不是通过数字方式观看艺术作品的重要性,理由是数字媒体无法完全捕捉到比例、色彩准确性、透明度和纹理方面的差异。 这是一个 100 字的摘要: 该用户参观了国家博物馆,并对荷兰黄金时代的传统绘画中重复关注富人感到失望。 虽然用户承认这一趋势,但他们提到了例外,例如伦勃朗的《夜巡》,他们发现其复杂的细节和令人印象深刻的规模令人着迷。 与同时期其他画家相比,用户对伦勃朗作品的欣赏有所不同。 此外,用户强调了亲自观看艺术而不是数字观看艺术的重要性,并指出数字媒体无法完全体现比例、色彩准确性、透明度和纹理的差异。

Makefile 是类 Unix 操作系统中常用的通用自动化工具,用于简化各种软件项目的构建、测试和部署过程。 它们的吸引力在于它们在多个项目中的简单性和一致性,以及无论使用何种底层技术都能够执行预定义的命令集。 Makefile 通常定义任务(目标),例如“dev”、“build”、“watch”和“deploy”。 这些任务执行启动开发服务器、编译代码、监视文件修改和发布已完成的项目等操作。 通过使用单个“make”命令,用户可以快速设置和运行这些任务,而无需记住每个单独工具或项目的复杂细节。 虽然与 Docker 或 Gulp 等现代构建工具相比,Makefile 可能显得很基本,但由于它们与多种工具和环境兼容,因此它们提供了灵活性,同时需要最少的设置和更少的依赖项。 由于其悠久的历史、易于学习和跨平台的广泛可用性,它们仍然很受欢迎。

Make 是一种多功能构建自动化工具,可简化从各种输入文件(包括源代码、文档和脚本)创建和更新输出的过程。 虽然最初看起来很简单,但其高级功能为管理复杂项目提供了许多好处。 Make 的一项基本功能是它能够处理“.PHONY”等伪目标,允许用户为不生成对象或二进制文件等传统输出文件的操作声明自定义规则。 用户在定义“安装”、“清理”或特定于项目的目标等目标时可以使用此功能。 尽管 Make 自 Unix 早期就已存在,但某些版本仍然缺少诸如“.PHONY”之类的关键元素。 Make 的现代变体包括“.PHONY”,在创建项目工作流程时提供增强的灵活性和实用性。 当尝试使用 Make 同时生成多个输出文件时,会出现另一个挑战。 在这些场景中,用户必须构建自定义机制来满足他们的需求,例如采用递归规则或通过 make 变量实现额外的抽象层。 虽然 Make 可能会因看似过于简单的初始外观而受到批评,但它的适应性使其能够有效地满足各种需求 - 从琐碎的脚本到涉及不同编程语言和组件的大型项目。 为了方便起见,Makefile 通常用于简洁地概述工作流程,提供文档以及必要的说明。 对 Make 的一项普遍抱怨集中在空白敏感性上。 多年来,许多调试问题都源于此设计缺陷,因此需要仔细注意布局和格式。 此外,Make 对一致构建环境的依赖增加了复杂性,特别是在跨操作系统的命令行标志和行为方面的差异。 开发团队可能会建议 Make 作为通用解决方案,尽管它的适用性因项目规模和复杂性等因素而异。 有时,当特定目录(例如“build”或“dev”)出现在项目根目录中时,Makefile 会停止运行。 尽管如此,Make 对于不需要“更好”构建系统的中等复杂项目仍然有效。 经过仔细检查,Make 展示了非凡的功能和实用性,使其成为简化项目工作流程而不牺牲灵活性或可定制性的有吸引力的选择。

Container Desktop 是一款兼容 Windows、Mac 和 Linux 的跨平台桌面应用程序,提供统一的用户界面 (UI)。 它作为“podman”命令行界面的学习工具,有助于更好地理解这个强大的工具。 其仪表板专注于提供必要的功能,确保为用户提供直观的体验。 该应用程序允许管理容器,显示有关容器来源和状态的信息。 用户可以快速访问日志、环境变量、已安装的驱动器、开放端口和监控统计信息。 可以轻松执行停止、启动和移除容器等定期维护任务。 浏览器可以访问容器内公开的服务。 还可以通过 Container Desktop 管理图像。 有关其来源和状态的信息以及注册表、名称和标签等详细信息都很容易获得。 新容器可以直接从现有映像生成,允许修改名称、端口映射和可用安装点。 可以检查映像的构建、影响和设置,同时可以执行常见的维护操作,例如提取最新更新或将更改推送到分布式映像项目。 该应用程序提供广泛的安全通知,让用户了解潜在的漏洞并帮助他们构建和维护安全系统。 它支持网络创建和重用,从而可以详细了解各个网络配置。 此外,它还在兼容引擎上提供完整的 Pod 功能,允许探索日志、运行进程和其他相关细节。 虚拟机管理、秘密处理、卷共享以及更多高级功能增强了 Container Desktop 的综合性。

本文讨论了了解 Kubernetes 的个人旅程,Kubernetes 是一个用于部署和扩展容器化应用程序的流行平台。 作者分享了他们的观点,即 Kubernetes 对于简单项目来说并不是必需的,但在涉及多个组件和层的复杂项目中却非常有用。 他们对图形界面 (GUI) 表示赞赏,因为图形界面可以更轻松地进行管理,而无需深入的命令行界面 (CLI) 专业知识。 作者提到,他们以前很喜欢拆开收音机等电子设备来了解它们,并将此过程视为类似于 GUI 提供的渐进学习过程。 他们承认 Kubernetes 主要是由个人开发的,并认为其开发类似于修补电子产品。 此外,作者还赞扬了 OrbStack 应用程序,它是其他 Kubernetes 桌面客户端的更轻量级替代品,因为它易于使用、启动时间更快、内存使用量更低,并且生活质量得到了提高。 然而,他们在 macOS 上的初始设置过程中遇到了问题。 最后,作者澄清说,另一个 Kubernetes 客户端 Container Desktop 确实内置了 Podman 安装,这与第一印象相反。 总的来说,作者强调了可访问且用户友好的工具对于管理容器化应用程序的重要性,特别是对于那些刚开始使用命令行界面的人来说。

该论文介绍了“AnySkin”,这是一种新型触觉传感器,旨在通过解决与灵活性、耐用性和易于更换相关的问题来改进以前的传感器。 与视觉或本体感觉相比,触觉在机器人技术中尚未得到充分利用。 设计师从“ReSkin”中汲取灵感,但进行了改进,例如将传感硬件与皮肤界面分离,从而更容易实现,类似于连接手机壳。 此外,与许多当前的解决方案不同,该设备可以学习跨不同实例的操作技能(跨实例泛化)。 提出了三项主要进展:设计更简单的制造工艺和工具,用于创建非粘性、坚固、可互换的磁性触觉传感器; 使用 AnySkin 传感器分析摩擦和训练动作; 最后,展示使用一种 AnySkin 创建的模型对各种其他 AnySkin 的适用性,并与 DIGIT 和 ReSkin 等已建立的触觉系统进行对比。

我们刚刚发布了一款非常令人兴奋的触摸传感器,它最终简化了机器人的触摸感应。我们最令人兴奋的结果:学习了用于精确任务(例如插入 USB 和刷信用卡)的视觉触觉策略,当您更换皮肤时,这些策略可以开箱即用! 据我们所知,任何现有的触觉传感器都从未证明过这一点。为什么这很重要? 现在,您第一次可以在一个传感器上收集数据并训练模型,并期望它们推广到传感器的新副本 - 为彻底改变视觉和语言推理的大型基础模型打开了大门。 聆听社区的问题、想法和评论!

此提交不属于此存储库上的任何分支,并且可能属于存储库外部的分支。 您目前无法执行该操作。

所提供的文本描述了幻想景观中时间、天气条件和地理方向的视觉表示的概念。 这是一个简化版本: 1. 树木充当风向指示器,弯曲的树木代表风从其方向吹来。 北和南是根据树倾斜的方向来区分的,要么背向(向外),要么向前倾斜(向内)。 风的强度以树木变形的程度来表示。 2. 日出和日落被描绘为太阳在地平线上方的升起和落下,而月亮则代表夜晚。 3. 白天和夜晚的天空颜色不同。 4.场景不是从当前时间开始,而是从预定时间点(例如早晨或午夜)开始,通过场景内结构的定位来识别当前情况(例如,指示“现在”的房子)。 5. 与现有的天气应用程序进行比较,这些应用程序具有用户友好的界面,以水平格式(时间线视图)清晰地描述时间进程、天气数据和大气信息。 给出的一个例子是“Windy.com”应用程序,其中各种天气元素(如降水量、风向和风速)显示在从左到右移动的一条整齐的线上。

此提交不属于此存储库上的任何分支,并且可能属于存储库外部的分支。 您目前无法执行该操作。

以下是所提供文本的简要摘要: 在量子力学中,哈密顿矩阵对系统中粒子的允许行为和能级进行编码。 该矩阵的特征值决定了稳定的电子态及其相应的能量,而特征向量给出了系统内某些现象发生位置的空间信息。 作者使用 Python 包 CuPy 来计算给定矩阵的特征值,发现与执行此特定任务的其他方法相比,它的速度要快得多。 然而,当同时考虑特征值和特征向量时,速度优势会降低,但仍然很大。 最后,作者提到了 Jax 的“数组树”的概念,它允许将复杂的数据结构传递给函数,同时在自动微分和涉及此类树的其他操作期间保持轻松性。

为了使人工智能模型在特定环境中发挥作用,它们需要特定的背景知识。 此类模型的示例包括客户服务聊天机器人,需要了解其所服务的特定业务,或者需要详细的历史法律案例的法律分析机器人。 开发人员扩展人工智能模型知识的一种方法是通过检索增强生成(RAG),这种方法从知识库中提取相关信息并将其合并到用户的请求中,从而提高人工智能模型的响应质量。 尽管 RAG 已被证明是有益的,但当前的方法在编码信息时往往会丢失关键上下文,从而导致不相关的响应。 最近一项名为“上下文检索”的创新解决了这个问题。 通过采用两种互补方法(上下文嵌入和上下文 BM25),上下文检索将错误信息检索减少了 49%,而与重新排名相结合,将错误信息检索减少了 67%。 这些进步带来了卓越的检索精度,最终有助于提高后续任务的性能。 部署上下文检索需要最少的努力,因为您可以与 Claude 一起使用它,如我们的食谱中所述。 如果您的知识库少于 200,000 个标记(大约 500 页数据),则会出现另一种简单的解决方案。 在这种情况下,您可以将完整的知识库添加到用户输入中,而无需使用 RAG 等其他方法。 就在最近,我们为 Claude 引入了即时缓存,从而以更高的效率和节省加速了这一策略。 然而,随着知识库的扩展,您将需要更灵活的选择。 这正是上下文检索的价值所在。 传统上,RAG 已被证明在处理超出单个提示范围的更大知识库时至关重要。 大型知识库最初被分解为许多较小的文本片段,称为块。 每个块的重要性是通过利用嵌入模型创建捕获含义的向量表示来确定的。 将这些向量表示存储在数据库中可以实现基于语义相似性的快速搜索。 在运行时,用户的查询会触发在数据库中搜索最相关的块。 随后将顶部块添加到生成模型的输入中以产生答案。 虽然嵌入模型擅长捕获语义链接,但它们可能会忽略重要的精确匹配。 BM25(最佳匹配

一个团队为政府组织开发了相关性和等级 (RAG) 系统。 他们采用了各种技术,包括混合检索(结合语义和向量搜索)和基于语言模型 (LLM) 的重新排名。 然而,当使用综合生成的评估问题进行测试时,这些方法产生的变化微不足道。 另一种方法称为 HYDRA,它显着降低了响应的有效性和检索质量。 尽管需要对专家和现实世界的问题进行进一步评估,但该研究证实,仅 Azure AI 搜索中的语义搜索就足以满足企业 RAG 应用程序的需求,补充了矢量相似性搜索。 使用不同方法对 RAG 进行实验测试表明,混合检索对于使用综合评估问题几乎没有影响。 此外,当使用综合查询进行评估时,HYDRA 技术导致答案和检索质量严重下降。 为了证实这些发现,有必要利用现实世界和专家问题进行进一步检查。 无论如何,研究人员发现,将 Azure AI 搜索中的语义搜索与向量相似性相结合,可为企业 RAG 应用程序带来有利的结果。 根据具体情况,其他方法(例如 Best Match 25 或精细调整的查询后处理分数归一化矩阵)也可能被证明是有效的。 本质上,关键信息是根据每个应用程序的独特需求来探索、试验并选择适当的选项。 未来的计划包括实施 RAG 的递归答案传播转换器 (RAPTOR-RAG)、自相关评估生成器、Agentic RAG、查询细化(扩展和子查询)和 GraphRAG 学习算法。 研究人员在尝试使用 RAGAS 等工具或类似指标来拒绝零假设时,强调基线和实验。 此外,他们建议将评估问题分为三类:1)专家编写的问答,2)从用户日志数据中得出的问题,以及3)根据源材料综合创建的问答。 尽管熟悉传统的搜索实践,但作者在考虑矢量搜索时发现了局限性。 尽管如此,该文章在继续使用 Fusion 进行重新排名 (rrf) 之前,介绍了 Contextual BM25 与其他混合方法的对比。 对于问答任务来说,毫无疑问向量搜索和语义搜索

数字签名是一种用于确认电子消息或文档真实性的方法。 Alice 可以使用她的私钥对消息进行签名,Bob 可以使用她的公钥验证消息的真实性和完整性。 数字签名通常用于软件更新验证、SSL 连接身份验证和其他应用程序。 然而,从密码学家的角度来看,数字签名具有一些有趣的特征。 他们对数字签名的理解超出了基本用例。 数字签名的起源源于交互式识别协议,特别是 Schnorr 协议。 开发人员通常认为签名主要是为了签署消息,而密码学家则将其视为身份验证方法的自动化版本。 数字签名充当身份验证和授权机制,允许在允许访问或执行权限之前确认身份。 将身份验证协议与数字签名进行比较时,存在差异。 身份验证协议交互发生在两个特定实体之间,而数字签名是普遍适用的,不需要上下文来验证真实性。 此外,身份验证协议的运行仅限于单个实例,而数字签名无论使用多少次都仍然有效。 签名的主要优点在于它们能够无限期地提供作者身份证明,甚至可以跨多个平台,这与传统的身份验证协议不同,传统的身份验证协议一旦用户注销或会话终止,其有效性就会消失。 然而,当寻求在特定交易或环境中建立信任时,这种优势就会成为弱点。 由于签名是通用的,验证其合法性需要进一步的上下文检查,以确定消息是否源自预期来源以及目标接收者。 此外,必须采取措施防止重复使用相同的签名,从而避免潜在的重放攻击。 虽然 Schnorr 协议是许多当代数字签名技术(例如 EdDSA)的基础,但它提出了有关特殊健全性的问题,这意味着意外重用承诺会暴露私钥。 因此,一些签名采用通过私钥和消息的散列生成的确定性承诺,确保承诺仅匹配相同的消息,从而避免泄露敏感细节。 总之,数字签名在网络安全和网络服务中发挥着重要作用。 虽然它们擅长提供通用身份验证功能,但在正确实施和应用方面应谨慎行事,

会话 Cookie 与 JSON Web 令牌 (JWT) - 会话 Cookie 将用户信息存储在浏览器中,允许快速访问用户数据,而无需往返服务器。 然而,如果未安全存储,它们可能容易受到未经授权用户的潜在操纵。 JSON Web 令牌 (JWT) 是一种将用户数据编码在令牌中的标准化方法,然后根据每个请求将其发送到服务器并由服务器进行验证。 与传统会话 cookie 相比,JWT 通过加密和使用 HMAC 来确保数据完整性,从而提供增强的安全性。 当预计会有大量请求时,或者当应用程序需要可扩展性时,JWT 可能更适合,因为它们易于跨各种平台和技术实施。 加密允许在令牌本身内存储敏感信息,而不需要在后端进行额外的状态管理,从而减少延迟并提高整体系统效率。 签名 cookie 的用途与 JWT 类似,但对于复杂性有限的小型应用程序来说,通常被认为是过度杀伤力。 它们提供了额外的安全优势,例如防止恶意脚本注入攻击,但计算成本和实现复杂性方面的开销增加,使得它们不太适合资源较少的简单系统。 对于严重依赖实时交互和低延迟的应用程序,尽管需要在安全性和资源利用率之间进行权衡,但使用加密会话 cookie 可能仍然是首选。

开源项目维护者面临的挑战: 1. 大多数维护者的工作没有得到经济奖励,导致人口老龄化和新进入者减少。 2. 由于网络威胁的增加以及对“xz”等事件的担忧,花在安全问题上的时间增加了两倍。 3. 对新贡献者的信任度有所下降,特别是在“xz”后门事件之后。 4. 维护者主要是欧洲和北美男性,很少有女性或非二元个体参与。 5. 维护人员将大部分时间花在日常维护任务、功能开发和安全措施上。 6. 对 NIST 安全软件开发框架 (SSDF)、OpenSSF 记分卡、SLSA 框架、CISA 的安全设计承诺等行业安全标准的认识正在增强,但实施滞后。 7. 付费维护者比无酬维护者更有可能遵守最佳实践。 8. 维护者通过捐赠、雇主工资(包括开源职责)或 Tidelift 支持合同来赚取收入。 9. 来自企业、开源基金会和政府实体的融资仍然很少。 10. 由于潜在的问题,例如需要额外修复的错误代码生成和过多的拉取请求量,许多维护者对人工智能工具持保留态度。 11. 维护者可能不太欢迎使用人工智能编码工具的贡献者。 开源项目维护人员面临的情况需要引起关注,因为他们对于维护重要的软件组件至关重要,但也面临着众多挑战,例如薪酬低、安全时间需求增加、数量减少以及对人工智能日益增长的担忧。 为了确保开源项目的持续健康和发展,必须解决这些困难,确保维护者得到公平的补偿和支持,同时吸引各种各样的贡献者。

当然,让我们讨论一下开源和软件自由。 首先,重要的是要理解开源和软件自由是相关但不同的概念。 开源是指通常在标准化许可下向公众免费访问软件源代码的做法,允许对其进行修改和重新分发。 另一方面,软件自由包含更广泛的道德原则,强调赋予个人控制自己的技术和保护其数字权利的重要性。 自由软件基金会定义了与软件自由相关的四个基本自由:出于任何目的按照您的意愿运行程序的自由,研究和修改程序、重新分发副本和改进程序的自由,以及分发修改后的程序的自由。 程序的版本。 开源项目旨在为各个领域创建高质量、可扩展的软件解决方案,同时提供定制和适应特定要求的灵活性。 然而,重要的是要承认开源并不一定意味着软件自由,因为某些开源许可证可能带有与自由软件运动定义的基本自由相冲突的限制。 另一个需要考虑的方面是企业和商业利益在开源社区中的作用。 尽管许多公司积极支持开源计划,但他们往往优先考虑自己的经济利益,这可能会导致与开源精神的紧张关系。 公司可能会试图获取知识产权、寻求独家交易并操纵项目治理来推进自己的议程,从而损害开源项目的长期可持续性。 最后,必须认识到开源开发在很大程度上依赖于自愿贡献,这些贡献主要来自那些投入时间和专业知识来推进开源项目的充满热情的个人。 不幸的是,开源的这种自愿性质带来了一些挑战,包括贡献者缺乏多样性、责任分配不均以及关键贡献者的倦怠。 总体而言,开源提供了巨大的好处,促进协作、创新和快速原型设计,同时提供对有价值的软件资产的访问。 然而,为了确保开源与软件自由的基本原则保持一致,培养支持性社区、促进包容性实践并鼓励企业和政府的道德参与至关重要。

更多

联系我们 contact @ memedata.com