自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 comfyui便携版(绿色版)安装CLIP报错no module named ‘CLIP‘

使用这个命令,默认是从pypi这个包管理网站的服务器获取名字是小写的clip,但它又恰好跟openai里的CLIP同名(只是大小写不同),这就导致我们看似安装了对方要求的东西,实际上却没有,因而没法继续后面的流程。这里有一个细节需要注意,它的提示是no module named ‘CLIP’,这里的CLIP是大写的。它跟我们一般情况下碰到的模块缺失报错提示不一样,一般的通常是小写的模块名。这样的形式(以模块化的形式安装到当前便携版的python库里,不会污染全局环境下的python)。

2024-04-11 03:47:52 558

原创 comfyui便携版自带的pip工具怎么升级?

comfyui便携版自带一个python环境,不过里面的pip工具不是24版而是23版,经常在使用它的时候会提示不是24版本,虽然不影响使用,但是看着总感觉碍眼。第四步,使用命令安装该pip工具,这里假设该pip安装压缩包解压在D盘下(如果解压到别的路径了,就填你解压的那个setup.py所在的路径)因为前面进入到了它的python.exe所在目录,所以查找的优先级比全局变量高,直接从当前路径下读取python解释器。如果还是有升级提示,那就再用第二步的方法卸载一遍,似乎这样会默认把旧版pip卸载。

2024-04-10 13:17:48 864

原创 pyside6怎么使用Qt Designer设计自定义组件

可能有人注意到,Qt Designer中给了带字符串参数的示例参考,但我这里却填的str而非QString,这是因为QString是qt5以及之前的标准,咱们这里用的是pyside6,而pyside6已经跟python本身的字符串表示保持一致了,直接用str即可。左边是信号,右边是槽,可以看到槽的列表是灰色不可编辑状态,这是因为该组件我们还没有提升为自定义组件,一旦将其提升为自定义组件,该组件的槽便可编辑了。在导入的时候,就不用单独导入自定义组件了,把总的那个UI文件的类导入即可。

2024-04-06 21:44:27 842

原创 ComfyUI当中自己写自定义节点,出现输出字符串只有首个字或者字母的情况该怎么解决

归根结底,是没有遵照官方的示例样式,出现的问题。但是现在AI很流行,所以出现这个问题的概率大增(因为有可能会有人让AI写这个代码,而恰好又写出来一个返回值是非元组的函数)。它所返回的并不是一个image对象,而是一个元组。如果有人想编写一个输出字符串的节点,而使用了。这样的返回形式,就会出现只输出一个字或者字母的情况,在我这个例子当中,就会出现输出“测”字。我们重点关注最后return的部分。

2024-04-04 07:45:31 389

原创 flutter关于发请求和响应的编码问题,为什么会出现乱码

另外,如果服务器响应的时候,响应头没有指定响应类型的编码,而它发过来的即便确实是个UTF-8的编码格式,根据dart的默认习惯,未检测到响应类型编码,会默认以latin-1的编码形式来解码,这就会大概率导致乱码。解决的方法是,当服务器响应的内容是UTF-8的编码但未指明的情况下,我们通过手动指定来防止默认以latin-1的形式解码。如果我们没有在请求头中设置utf-8的编码,它默认也是用UTF-8的编码格式向服务器发请求的。我们一般发请求,会使用一个很流行的第三方包http来发请求。

2024-04-02 05:29:24 540

原创 windows平台上出现LINK : fatal error LNK1181: 无法打开输入文件“aio.lib”的解决办法(安装deepspeed的时候出问题)

当然,也可以直接在当前CMD窗口输入诸如set DS_BUILD_AIO=0来临时设置(需要4个都这么填,也就是set XXX=0,其中XXX就是那四个变量名,还是挺麻烦的),但是这种方式只作用于当前CMD窗口,一旦关了,这个设置就不生效了。不管是在电脑的环境变量设置里面自己新增环境变量,还是临时在cmd命令窗口输入set xxx=0,效果都是一样的,区别只是后者只是临时生效,不会在电脑里保留对应的环境变量,如果新建环境变量后,嫌它们碍眼,能跑起来之后再删掉即可。设置4个环境变量的值为0。

2024-03-31 01:10:05 1330 4

原创 marvelous designer打开发现gizmo(变换控制器)只有一个方向上有面控制器,缺另外两个面控制器

在3D界面下空白处点右键,选择gizmo,然后选择屏幕坐标系之外别的选项就能恢复到常规有多个面的控制器。出现这种问题,其实是因为选中了屏幕坐标系。

2024-03-25 17:55:09 168

原创 搞了半天blender整动画这么爽,骨骼重定向一回,动作就可以到处套用,和音频对轨也好使

在blender的大纲视图里,对应模型下方可以找到动画(就叫动画,英文Animation),接着在动画下方可以看到一个跟动画摄影表一样图标的对象。那个就是具体的动作。我们假定用的是Tpose的模型(因为我这个bvh文件是Tpose用的,所以为了动作映射不出问题,优先整的这种模型),需要给它套上运动数据。当我对其中一个模型进行骨骼重定向/映射(都是一个意思)之后,该模型的动作属性可以任意赋给别的那四个模型。我们搞到了运动数据(可能是bvh文件,也可能是fbx文件)之后,想要让某个静态的模型动起来。

2024-03-23 04:15:38 971

原创 blender出现“无可供烘焙”并且提及与自定义属性有关

我自己因为是别的插件搞出来的模型,拿来编辑动作,并尝试烘焙动作,出现的报错。恰好那个自定义属性对我来讲又没用,就索性删了。我有一点疑惑的是,为什么要取消“仅选中的骨骼”这个选项,并勾选可视插帧,才能成功烘焙,而且时灵时不灵的,不是每次都成功。那可能是跟自定义属性存在冲突,尝试删除相关自定义属性,排查问题来解决。

2024-03-23 03:12:43 333

原创 打印torch.cuda.is_available()得到False怎么办?

打印torch.cuda.is_available()变成True了,我也很懵逼。卸载了一遍torch(用那个pip uninstall torch),然后重装一下。查看了驱动版本(显卡本身的驱动版本和额外安装的cuda的版本),发现兼容。查看了环境变量,也没设置旧版本的cuda路径啊。

2024-03-09 21:56:35 361

原创 flutter无法在windows平台上拖拽文件到它的窗口中

真的烦,搜了半天也没找到一个现成的解决方案。大家碰到这个问题先凑合构建一下,不在调试模式下使用吧。我还没解决怎么在调试模式下拖拽文件到flutter窗口的问题,估计要修改这个文件,添加上允许拖拽以及相应的处理逻辑。该文件位于flutter项目文件夹下/windows/runner这个文件夹中。跟AI对话之后,推测一个可能的解决方法是修改flutter_window.cpp文件的代码。推测是在构建的过程中,flutter往windows包裹代码中加了东西。我碰到的问题是调试模式下没办法拖拽。

2024-03-08 19:10:56 818

原创 windows右键新建文件没有txt文本文档怎么办?

我碰到此问题,按照以下方法改了注册表, 重启之后就正常了(没有注销,只是单纯重启)。以下方法来自AI:如果在注册表的.txt路径下没有找到ShellNew键,你可以尝试手动创建这个键和所需的值来恢复右键新建文本文件的选项。请按照以下步骤操作,但需要注意,修改注册表之前,请务必备份注册表,以防不小心造成系统不稳定或其他问题。

2024-03-07 20:14:16 2318 2

原创 在Windows终端中使用export报错的原因竟是搞错了平台

你遇到的错误信息表明你可能在Windows的PowerShell环境中使用export命令,而不是在Linux或Unix的shell环境中。根据你遇到的错误信息,建议你检查你正在使用的shell类型,并根据该环境选择正确的方法来设置或修改环境变量。如果你确实需要在PowerShell中操作,上述提供的PowerShell命令将是正确的方式。要永久设置环境变量,你需要使用[System.Environment]::SetEnvironmentVariable()方法,这样设置的环境变量将对所有新的会话有效。

2024-02-29 07:22:40 866

原创 小心requirements.txt给自己挖坑导致的依赖错误

我的意思是,如果碰到这种使用requirements.txt进行一键安装的时候,碰到错误了,不妨进这个文件去看看各种依赖的版本,说不定一下子就能找到问题症结了。好在它这个起冲突的地方主要就是围绕我卸载的那个库来的。我碰到的情况是,电脑环境中已经有新版的某个库,但它的依赖还是填的旧版的。我们使用一些开源项目的时候,项目的创建者往往会提供一个依赖文件,用于方便别的程序员快捷安装依赖。但是,可能这个项目久了没更新,然而使用者的电脑环境,已经是一些新的库了。当然,具体问题具体分析,有的时候这样改也不行。

2024-02-28 07:37:35 392

原创 给自己留个备忘,blender是右手坐标系

坐标系

2024-02-24 02:51:29 709

原创 将多种现有技术结合在一起,达成高效修改虚拟世界的可行性分析

配合上手部识别的能力,就能将现实中的手伸入虚拟世界,抓取虚拟世界中的物体。我们使用3d软件进行建模的时候,很多时候要实现的效果,可能会涉及到复杂的菜单调用,就拿blender来举例,假设我们想做一个表面有一个坑洞的金属小球,可能会涉及到创建小球、对表面进行修改、赋予金属材质等多个步骤。另外,识别我们要选取的物体,通过脑机接口这种技术,未来可以比眼部追踪来得更为准确和高效,因为眼部追踪在盯着某个物体的时候,可能会存在误判,比如我们余光看到了一个东西,想要选取它,这个时候眼部追踪就有点力不从心了。

2024-02-18 05:40:19 394

原创 blender在几何节点中的这些变换中的旋转,其实可以是两种旋转顺序

那就是,如果参照全局坐标系,按xyz的顺序进行欧拉旋转,就等于参照局部坐标系,按zyx的顺序进行欧拉旋转。我们知道,在blender中有局部旋转和全局旋转。但其实这两者在某种情况下可以等价。看似xyz的旋转角度,但如果按照欧拉角来谈它的旋转,就大有学问了。欧拉旋转xyz和zyx顺序演示。

2024-02-14 23:27:16 652

原创 blender怎么保存窗口布局,怎么设置默认输出文件夹

关键问题在于,自己调好了窗口布局,或者设置好了输出文件夹之后,怎么能让blender下次启动的时候呈现出自己设置好的窗口布局,或者输出文件夹变成自己改了之后的文件夹。进行窗口布局大家都会,按照自己喜好来就行了,设置输出文件夹如图。这就需要保存默认启动设置了。

2024-02-11 00:06:57 1088

原创 blender用几何节点,先想明白数学算法,再动手实现

比如要做一个扎头发的形状,对于头发对应的曲线是什么形状的,如果能找到一个数学上的对应曲线,用于描述这些头发的形状(也可能因为发型复杂的原因,一根头发会分成多段,用不同的方程表示)。为了便于理解,多画图,以及使用python代码之类的工具,从图形、数学等角度搞明白自己要的效果的本质(或者说搞明白这个算法),再去建立节点工作流,可以事半功倍。

2024-02-10 03:23:26 415

原创 blender几何节点中样条线参数中的系数(factor)是个什么概念?

调整控制柄的向量,并对曲线重采样,看起来明明只调整了控制柄,怎么系数会跟着发生变化?原始的贝塞尔线段的起始点确实没有变,但是经过控制柄的改变以及曲线重采样之后,得到的这11个控制点,在该曲线上,不再是均匀排列的,也就是说,相邻两个控制点在曲线上的这一小段曲线的长度,不再是0.1了。相当于把它分成了十段,那每一段可以看到x、y都是0,唯独z每次增加0.1,那就是说,平均每段都是0.1的间隔。比如索引(index)为6的这一行,系数是0.6,其实就是在这根样条线上,从起始点到索引为6这个点上的长度。

2024-02-09 21:14:36 960

原创 blender关于几何接近(geometry proximity)节点的理解

当我们看到一个菱形的输入项时,一般分两种情况,那就是中间带点和不带点的,带点的通常意味着它有一个显式的固定值(什么叫显式的固定值,就是说,你一眼就能看出它具体是个什么值的情况,比如直接输入了一个(3,3,3)的vector常量),而不带点的则意味着它的数据要根据上下文进行推断。而立方体顶部的四个点,则贴靠到圆锥的侧边面上去了。当选择面的时候,就是从目标的面上查找离源位置上各点最近的点,而选择边的时候,则是从边上找离源位置上各点最近的点,至于选择点的时候,则是从目标的各点上找离源位置最近的点。

2024-01-30 20:55:01 870

原创 blender当多个几何体发生重叠,为了便于观察理解,可用网格转曲线的方式进行处理

如图,加上这个网格转曲线的几何节点,就能很轻松地理解网格是怎么变化的了。

2024-01-30 02:52:29 435

原创 blender几何节点切换查看器的快捷键(The Blender geometry node toggle viewer shortcut key)

Ctrl+Shift+鼠标左键 (用左键点击需要查看的节点)

2024-01-26 11:11:45 551

原创 flutter desktop(也就是windows端)使用第三方包sqflite_common_ffi打包/构建的程序不显示窗口

命令打包了一个exe的可执行程序之后,发现运行的时候压根儿弹不出窗口,只在后台进程显示相应的进程,因为此时我已经用的是比较新的flutter版本(3.16)了,所以跟网上流传的那个不弹出窗口的BUG其实并不一样。这里之所以不弹出来,估计是构建程序没有把数据库的动态链接库文件(使用这个sqflite_common_ffi其实用的是流传很广的那个sqlite3的功能,所以需要SQLite3.dll这个文件)打包进来,导致只有一个孤零零的flutter_windows.dll文件。我使用这样的命令引入的。

2023-12-31 16:35:04 758 2

原创 win10和win11上解决乱码的一个有点偏门的方法,不算很完美

有的时候,我们需要看一些控制台中的报错日志,但里面有部分乱码的情况,就可以临时将系统编码改成UTF-8的(简体中文系统一般默认是GBK的编码),等到不需要之后,又想恢复正常的GBK编码的时候,再改回来就是。也算一个迫不得已的办法。因为各种IDE编辑器,里面有时候可能在控制台出现多种编码混合的情况(估计搞JAVA开发的应该深有体会),而编辑器里面可能又有各种独立的配置,折腾半天可能都不见得能把乱码问题解决。坏处也不是没有,因为有些程序设计可能本就用GBK的编码,对UTF-8兼容性不好的,就容易出问题。

2023-12-31 08:34:12 2316

原创 flutter使用 flutter doctor -v命令,提示cmdline-tools component is missing

先找到安装AndroidSDK的目录,如果里面没有cmdline-tools这个文件夹,就手动建立一个,cmdline-tools里面还需要建立一个latest文件夹,再把刚才这几个又是bin和lib,又是文本文件的内容复制到latest下面。注意,要把android_sdk替换成自己实际的AndroidSDK的目录的路径,把version替换成具体的需要的数字版本的版本号,或者干脆填个latest,实际的路径可能长这样。解压之后会得到一个文件夹,里面有些bin和lib之类的文件夹,还有一两个文本文件。

2023-12-30 11:56:03 747

原创 android studio官方网站关于android SDK环境变量的设置说明晦涩难懂

当然,因为特定程序的要求,通常名字也是它们指定了的。比如安卓这个,它要求你新建的环境变量的名字是ANDORID_HOME,你就得照着它这个来,不然人家程序不认识,这个值是对应的Android SDK的路径。我先说说我的理解,对于大部分的程序员来讲,其实都知道怎么设置环境变量,如果需要系统级别的,就在系统那个环境变量上改,如果需要用户级别的,就在用户级别的环境变量上改。剩下两个也是同样理解,只要使用了%ANDROID_HOME%,就等于用了安卓SDK的路径,只不过后面跟的目录不同,就对应到不同的路径了。

2023-12-30 11:05:24 1434

原创 这个注释快捷键真的太实用了,配合编辑器的自动找框功能更是无敌!

经常在面对那种层级结构的的代码的时候,尤其是构筑界面的情况下,一个框框套另一个框框,虽然能通过编辑器(我用的VScode)点击一个前括号,或者一个前大括号,自动找到后括号或者后大括号,但是经常因为代码编辑器或者插件的自动补齐功能,导致冲突,然后就不得不手动一个字母一个字母地敲,尽可能避免自动补齐功能覆盖到不想被覆盖的代码。使用这个快捷键,就可以先确定好要替换的范围,再将其注释掉。关键在于首尾不需要注释的代码,不会被注释掉。用一次就是对代码块进行注释,再用一次,就是取消该注释。

2023-12-29 04:38:26 338

原创 一个复现BUG的好方法

如果涉及到数据库操作,最好将数据库的可视化界面调出来(推荐使用DBeaver,免费且可设置一秒刷新一次数据库信息)。之所以要这么大费周章,是因为某些BUG复现不太容易,有时候会触发,有时候又不触发,而一通乱操作,好不容易触发后,却记不住当时都进行了哪些操作。将屏幕录制的视频放到视频剪辑软件中(诸如剪映这类),将前面和操作无关的视频片段删除,排除干扰。为了验证自己的猜测,同时可以调整代码,作出试探性更改,运行以验证猜测是否正确。一旦复现了BUG,就停止屏幕录制。使用屏幕录制软件,将整个屏幕的内容囊括进去。

2023-12-29 03:44:25 599

原创 flutter使用riverpod对选择状态进行监听,更改了编辑状态和选择状态却不生效。

在我的逻辑判断当中,明明已经退出编辑状态,并且清空了对应的选择集合,那理论上就应该既显示编辑按钮,又隐藏删除按钮才对。搞了很久才弄明白,在逻辑中单纯地调整对应的状态并不够,还要对应的监视效果(也就是ref.watch什么什么的)所监视的项目跟上才行。单纯在逻辑中调整对应项的值,并不会触发界面的重构,只有当监视着的目标发生变化,才会引起界面重构。加进来,导致即便在逻辑代码里面调整了编辑模式的值,实际上并未引发对应的界面重构。如图,我预期的效果是:点击删除按钮,会删除勾选项,并退出编辑状态,同时隐藏删除按钮。

2023-12-28 11:41:57 601

原创 flutter怎么对ReorderableListView中的用于排序的控制手柄进行显示或隐藏

答案很简单,就是在它的属性当中有一个叫做:buildDefaultDragHandles的,只需要给它一个false,就可以将其隐藏,反之则会显示该控制手柄。控制手柄的图标为两根等长的横线。我在使用ReorderableListView创建可排序列表的时候,需要在编辑的时候才显示右侧的控制排序的手柄。研究了半天,配合搜索引擎,才找到正确的方案。

2023-12-26 07:09:20 371

原创 flutter在vscode中怎么定位出错的组件(也就是抛异常的时候怎么确定是哪里出了错)

正确的做法是,当出现异常后,点击vscode上方的调试错误的那个横条工具栏。里面一般在左边有一个一步一步往下运行的按钮,点击它,直到在调试控制台出现异常报错信息。当运行程序出现异常的时候,虽然会定位到具体的代码,但是却指向的是flutter自带的代码,这种大段代码看起来就比较费时间。通常会用红字显示异常,内容大概是以“═══════ Exception caught by”开头,这个时候调试控制台就会很贴心地给出出错的代码是在哪个组件的哪行代码处出的问题。接着根据它的提示就可以找到出错的位置了。

2023-12-25 19:47:43 461

原创 flutter定义statefulwidget如果必须接收关键字但具体值不确定的情况下,可以使用required

就像这段代码中的required this.sortid,因为前面final修饰的时候,我知道它是int类型,但是加了int这个类型,后面就得给它指定一个int的值。而这个值我暂时还不知道(必须得等到需要创建该组件的时候,根据序号,动态传给它),所以就得用required来修饰,这样可以让我不必在此赋值。这地方卡了我老半天,

2023-12-19 04:33:23 552

原创 在vscode中,某项目明明能使用git功能,却看不到.git文件的可能原因

上级目录中的 .git 目录:如果你的项目目录是另一个更大项目的一部分,Git 仓库的 .git 文件夹可能位于上级目录中。子模块或链接的仓库:如果你的项目是作为 Git 子模块(submodule)或通过符号链接(symlink)连接到另一个仓库的,.git 目录可能位于原始仓库中,而不是在你当前工作的目录中。我发现自己属于第一种情况,.git文件夹(文件夹的名字就是【.git】),通过在资源管理器去查看隐藏文件或隐藏文件夹,发现确实有这么个文件夹,但是在vscode里面,默认是看不到的。

2023-12-14 19:09:55 1268

原创 flutter使用Listener控件的onPointerMove捕捉不了鼠标移动

2.如果没有设置behavior属性,或者behavior属性的值没设置对,也不会生效。似乎是因为没给它里面加子组件,导致命中判定的时候会出问题。通过加上behavior属性,成功激活这个鼠标检测(或者说鼠标监听):Listener(1.当使用鼠标时,这种onPointerMove只在按下鼠标左键之后才能触发。为什么说是坑,因为即便不写behavior,也不会报错。运行半天也没任何提示。

2023-12-14 17:51:22 464

原创 flutter调试器查看不了副页面(非主页面/子页面)

刚接触flutter,写了两个页面,通过按钮,可以从主页面跳转到副页面,副页面我自己写的一个独立的dart文件,在主页面的代码中导入使用。但是当我运行代码后,点击跳转的时候,却发现查看不到对应的副页面的widget tree结构。原来需要把右侧的Widget Inspector上方那个选择按钮打开。接着在运行后的界面(是那个实际运行起来的程序界面,而非调试器下这些东西)上,点击副页面上任意元素,即可自动打开副页面的组件树(widget tree)了。

2023-12-13 22:52:33 555

原创 python代码改了没效果,原来是解释器指定错误

我仔细琢磨了一下,估计是因为在vscode当中,会默认指定一个python解释器,而这个解释器,跟comfyui调用的解释器不一致。而实际comfyui运行的却是一个独立的python环境,所用的是另外一套库文件,我改的这个虽然跟那个文件同名,但人家运行压根儿用不上这个,自然就没有半点儿反应了。再对这个正确的库文件进行修改,才能看到改变的效果。使用comfyui,碰到问题去参考官方的代码,但是尝试修改官方代码,打印某参数的情况下,发现不生效,但是按照常理来讲,我改的这部分代码必然会运行到。

2023-11-23 07:48:54 420

原创 关于一个屏幕取词程序,AI给的创建思路及指导

通过将这些组件和步骤结合起来,你可以创建一个能够捕获屏幕上英文单词并将其添加到生词本中的工具。这将是一个综合性的项目,涉及到图像处理、文字识别和用户界面设计。:我在windows上,经常碰到各种软件当中有自己不认识的英文,请问如果要用python开发一个随时添加屏幕上任意英文单词到生词词典种的软件,该怎么进行?:开发一个能够从屏幕上捕获英文单词并将其添加到生词词典中的Python应用涉及到几个关键步骤和技术。为了让用户能选择屏幕上的特定区域或单词,需要一个GUI。这可以是整个屏幕或用户自定义的一个区域。

2023-11-16 06:16:32 268

原创 一个非常疑惑的地方,暂未解决vscode上全局变量的python版本和实际不符

vscode上面,按住ctrl+shift+p,可以选择python解释器,但是上面显示全局是python311的版本,而我真正在cmd里面测试(在多个不同的目录下打开cmd),输入python --version,得到的都是python310。我去查看系统环境变量,找到的也是python310的路径排在python311前面,按理说这种就确定是python310才是全局python的版本,为什么vscode的选项上面总是给python311标的全局字样呢?

2023-11-06 03:59:47 221 2

原创 从AI学到的音频检测知识,原来完整的音频可以随意切割,但音频流就不一定了

因此,您可以将音频数据分为较小的子块,而不需要担心音频流的持续时间或数据传输问题。设置为512,因为音频数据已经预先加载到内存中,您可以将音频数据分为较小的子块,而不需要担心音频流的持续时间或数据传输问题。设置为512是合适的,因为音频数据已经预先加载到内存中,您可以将音频数据分为较小的子块,而不需要担心音频流的持续时间或数据传输问题。更改为1536时,您实际上是将音频流分为与模型期望的输入样本数相匹配的子块,这使得模型能够正常处理这些子块并避免输入溢出错误。然而,在实时处理音频流时,您可能需要将。

2023-11-04 19:39:05 220 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除