- 博客(454)
- 资源 (129)
- 收藏
- 关注
原创 造数据,别慌!使用python faker创建大批量随机测试数据
在数据库的使用过程中,有很多场合是要自行去构造大规模数据,以供测试、性能功能验证使用。PostgreSQL - 大规模随机数据生成方法里介绍了PostgreSQL中生成大规模随机数据的方法。这种方法,生成数据比较快,但是数据大多是对业务场景没有太大意义的数据,或者说对业务不够友好。本文再介绍通过一些第三方库,插入一些相对友好的随机数据。那就是通过Python faker库来生成数据。Faker是一个Python软件包,可为您生成伪造数据。
2024-04-14 09:57:56 595 1
原创 DBA,35岁“危机“, 该如何面对?
如果翻一翻最近一两个月的公众号,到处都在散播着,过了35岁,DBA面临着失业的风险。因为再也不需要那么多的DBA了。而一旦失业,再重新找工作,难度相对于年轻的竞争者,不再有那么大的优势了。事实果真如此吗?如果遇到了,该如何面对?啰啰嗦嗦地说了些个人体会,其实,不当对DBA,对于所有从事IT相关工作的人,或许都有些启发。祝看到本文的广大老铁,与身体和平相处,能顺利应对各类变化,可以有远虑,行动配套上就足矣。微信公众号:数据库杂记 个人微信: _iihero我是iihero. 也可以叫我Sean.
2024-04-05 19:09:32 705
原创 PostgreSQL中vacuum 物理文件truncate发生的条件
前段时间,有些同学说到vacuum截断的行为时,认为,只要末尾是空页,无论多少,都会被截断,真是这样的吗?PostgreSQL当中,由于vacuum的操作并不总能将死元组的空间进行”物理截断”,虽然说是回收了(表示空间可重用),但是真正的物理文件的大小依然不会收缩。那么什么时候这个空间会被真正截断呢?摘自: src/backend/access/heap/vacuumlazy.c/**//**/if (!
2024-03-15 20:03:59 1017
原创 聊聊装机使用量最大的SQLite数据库
我曾经在DuckDB与PostgreSQL结合一下,PostgreSQL会如虎添翼一文中简要提过DuckDB与SQLite两者之间的关系。在嵌入式开源数据库里头,SQLite是绝对的OLTP的王者,而DuckDB则是或者将是OLAP的王者。本文就简单聊聊SQLite数据库。SQLite的代码质量非常高,一个重要的保证是它的测试覆盖率几乎100%。这种要求尽乎苛刻。盈利思路也非常明确。以它目前的财务状况,很容易支撑到20年后。但是有很重要的一点是,它的专业服务与支持是它生存的亮点。
2024-04-08 08:49:39 1015 1
原创 也说说Sybase ASE中的空间膨胀及应对方案
直观来讲,数据库是典型的以空间换时间的思路去提高数据检索的效率。我们先把数据“入”进去,组织好,建好索引,都为了什么?相当大一部分只不过是为了最终能快速得到查询的结果。当然这又引发了好多子项,比如,怎么“入”得快而又不发生冲突,怎么在相对少的资源的情况下得到相同的效果。这其间,空间的膨胀,几乎不可避免,重要的是,膨胀是否理?是否在物理资源的承受范围之内?前边提到了PostgreSQL的空间膨胀,这篇短文将提到ASE中比较典型的空间膨胀现象,以及如何有效的去避免它。
2024-04-07 10:11:44 33
原创 理解PostgreSQL中的postmaster.pid
在PG中,一个简要的体系结构图可以大致画成下边的样子:Server端基本上分成backend process和若干background process。这些process都是一个名为postmaster进程的子进程。而postmaster则是postgres进程的别名。
2024-04-07 10:06:11 324
原创 关于PostgreSQL JDBC中的log输出是怎么回事?
挖一挖:PostgreSQL Java里的double类型存储到varchar精度丢失问题写完之后,有热心的朋友, 就发留言问,那个log配置了半天,好像不太管用。就是说,用了自定义的配置文件,最后都不起作用,看不到有效的输出。首先强调一下,PG数据库的外围生态是非常完善的,就是说,它几乎支持各种主流的访问接口,这个完全为亚于当规模最大使用范围最广的一些大型商用数据库。从这个角度来看,它的发展前景不可限量 ,最贴近它自身的外围用户不就是使用这些访问接口的广大开发人员吗?内容与上边定义的相同。
2024-04-04 13:50:58 545
原创 也聊聊PostgreSQL中的空间膨胀与AutoVacuum
PostgreSQL数据库,由于其自身特有的MVCC机制,它没有自己的Undo Log。更新操作相当于一个删除叠加一个插入操作,反映在表数据文件当中就是内部的一条新增记录,加上原有记录的删除。那些已被删除的元组(死元组)所占的空间如果得不到及时的回收,那么表数据文件所用空间将会不断膨胀,查询及其它CUD操作也会变慢,直到系统不可承受。这就是AutoVaccum存在的原因。
2024-04-04 08:58:44 1336
原创 Sybase ASE中的char(N)的坑以及与PostgreSQL的对比
昨天,一朋友向我咨询Sybase ASE中定长字符串类型的行为,说他们的客户反映,同样的char类型的数据,通过jdbc来查,Sybase库不会带空格,而PostgreSQL会带。而varchar(N) NULL与NOT NULL,行为也一致,无论是直接取值,还是拼接后再取值,都留一个多余的字符(长度够宽的话)。这样来看,只要不在SQL语句里头拼接,那么char(N) NULL或NOT NULL,两种数据库的行为应该是一样的。如果是Not Null的char(N),则不会截掉空格,无论是否与其它字符拼接。
2024-04-04 08:54:46 400
原创 挖一挖:PostgreSQL Java里的double类型存储到varchar精度丢失问题
try {// 连接到数据库)";= null) {发现 PostgreSQL11和12及以后的版本,插入到表t1中的记录值不一样。a48(3 rows)a------4848.148.9(3 rows)这个问题如何分析?从驱动层来看,发送过去的内容或指令应该是一样的。
2024-04-01 07:32:27 969
原创 HANA中的内存及磁盘使用统计
在实际使用中,通过HANA的admin控制台,确实可以得到很多重要的信息。但有的时候不如人愿,你需要提供相应的SQL语句得到具体的信息。将上述统计信息纳入日常监控,就可以对数据库表的使用情况了如指掌。结合表的记录条数信息。非常有助于HANA数据库的日常监控与维护。比如,我要得到所有的行表的内存及磁盘占用信息;我需要得到所有列表的内存及磁盘占用信息。实际上HANA是有这些统计的SQL语句的。
2024-03-31 11:41:17 489
原创 深入PostgreSQL中的pg_global表空间
默认情况下,所有新建的数据库对象都建立在这个表空间下,对应的根目录是$PGDATA/base。而pg_global对应的是全局表空间,对应的根目录是$PGDATA/global。它到底指的是哪个表空间,显而易见,它就是pg_default表空间。我们可以想象,你database, tablespace之类的,甚至还有role之类的定义,肯定要放到全局共享的地方,以保证每个数据库在检索的时候,可以检索得到。官方文档中的定义是,pg_global中存放的都是同一个实例当中全局共享的对象。我们一样也可以得到。
2024-03-31 11:36:53 1041
原创 小小狠招:巧妙使用HANA数据库的jdbc driver
一个小小的jdbc驱动,HANA数据库为它提供的功能还是比较强悍的。在关键的时候,能起到非常大的作用。如果只是一些非常简单的连接性需求,甚至不需要任何第三方工具,直接使用简单的命令行就可以顺利完成。
2024-03-31 07:00:23 626
原创 【重磅消息】HANA Cloud QRC1/2024发布了
SAP HANA Cloud中引入了用户自定义的应用锁。这是用于自定义应用程序的,可以通过调用过程获得或释放。详细的锁的功能介绍见文档:sap-hana-cloud-sap-hana-database-administration-guide/locks[3]
2024-03-30 07:47:43 1004
原创 PG中的一例简单的update看表膨胀
PostgreSQL数据库的MVCC机制中,一个明显的特点是,在执行DELETE操作,它一般并不立即擦除要删的数据,通常只是做一个标记,留给VACUUM进程去做相应的清理,并且是有条件的清理。再补充一个小的验证性测试,如果我们将fillfactor调整为20, 预留80%的空间给update操作,看看第1种情况下,花的时间是啥样的?在实际使用当中,对于高频的更新操作的表,为减轻vacuum的负担,可以建议性的将fillfactor调整为80或75,给Update操作预留适当的空间。这些都是要占有空间的。
2024-03-28 06:32:56 389
原创 使用GO对PostgreSQL进行有意思的多线程压测
针对PostgreSQL进行压缩,有很多相关的工具。有同学又要问了,为何还要再搞一个?比如,pgbench, sysbench之类的,已经很强大了。是的,它们都很强大。但有时候,在一些特殊的场景,可能自己构造一个更能接近真实的生产环境。这里,我半写,半借助于ChatGPT,搞出一个代码片段来模拟启动一段多线程并发SQL请求,作用于PostgreSQL数据库。然后,你可以对请求执行完以后的结果进行观测,尤其是表膨胀,受影响记录条数之类的。基于此,我们还可以进行持续改造,快速用于工作之中。
2024-03-28 06:28:41 814
原创 35岁,害怕失业吗?程序员该如何破解“生涯天花板”
只要拥有对技术的热爱、强烈的自我驱动力和不断进步的意愿,任何年纪的程序员都不会被“淘汰”。从我个人的角度来理解,从中国国内的实际情形来看,随着年龄的增长,35岁以上,确实存在着一旦失业,再找工作,难以找到自认为与以并薪水相匹配的工作。不论年纪大小,不断更新自己的知识储备,跟上行业动态,并努力掌握新的技能,可以帮助程序员应对新兴技术的挑战。最后总结,任何时候,不要以躺平的心态去工作,那样只会错失很多机会,机会是自己通过持续学习和积累去赢得的,天下没有免费白送的午餐。所以,忧患意识的产生也是可以理解的。
2024-03-27 14:08:13 431
原创 SAP BTP云上一个JVM与DB Connection纠缠的案例
最近在CF (Cloud Foundry) 云平台上遇到一个比较经典的案例。因为牵扯到JVM (app进程)与数据库连接两大块,稍有不慎,很容易引起不快。在云环境下,有时候相互扯皮的事蛮多。如果是DB的问题,就会找DB相关部门。关键是如何自证。涉及到职场生存法则,大家都不愿意去背锅,谁背锅,意味着谁要担责。下边我们看看这个案例。有的时候,问题不是孤立存在的,从各个层面进行分析,逐个排错,最后还是能找到出问题的原因。如何规避此类事件再次发生,只能进一步加强监控。
2024-03-26 06:57:11 1411
原创 强力工具(欢迎fork):Java版本的Sybase ASE ISQL命令行
就是说,你不能在远程直接通过ASE的isql命令行连接cloud上的数据库,必须通过特定的tunnel。曾经,经常遇到有人问,Sybase (ASE, 国内基本上把以前的Sybase ASE数据库简称为Sybase数据库, 现在官方已经叫做SAP ASE,在我看来无所谓。基于上述需求,我开源了一个短小的ase.isql命令行工具,完全java实现,基于现有的Sybase Jconn JDBC驱动。于是,既能提供日常操作,同时又能调用SQL脚本用于远程执行的Java isql客户端,就有存在的必要了。
2024-03-25 07:09:52 199
原创 秒懂快速熟悉: PostgreSQL中的Copy(快速加载)
这里简要介绍一下PG中的Copy以及\Copy快速加载数据的基本用法及注意事项。同时也比较了Batch Insert与Copy之间的性能差异。它们在PG日常维护与使用的场景中经常要用到。
2024-03-25 06:57:42 30
原创 PostgreSQL FDW(外部表) 简介
创建file_fdw 扩展创建外部表(file_fdw)24 empno int, -- primary key, 此处不能加外键7 age int,像普通表一样访问外部表使用元命令 \des 和 \det 查看库中有哪些外部表和外部服务器模块提供了外部数据包装器,它可以被用来访问存储在外部PostgreSQL服务器中的数据。这个模块提供的功能大体上覆盖了较老的dblink模块的功能。但是提供了更透明且更兼容标准的语法来访问远程表,并且可以在很多情况下给出更好的性能。
2024-03-25 06:53:18 321
原创 史上最全:PostgreSQL SQL的基础使用及技巧
refer to: https://www.postgresql.org/docs/14/datatype.html为避免一些不必要的麻烦,不要用关键字去定义数据库对象的名字。它会给PG的解析造成潜在的问题。尤其是在生产环境中,不要给自己制造麻烦。E前缀,C风格的转义符位串常量,二进制使用B前缀,16进制采用X作前缀3、简单SQL3.1、基础SQL建表删表更改表see: https://www.postgresql.org/docs/14/sq
2024-03-24 08:31:44 666 1
原创 PostgreSQL数据库中表的物理大小, 妙懂
PostgreSQL中对于稍长一点的列,直接使用了TOAST表来存储,默认是会对表中的数据进行压缩的。关于TOAST, 以后或有时间专门做简单介绍。这是一个很有意思的话题。尤其是在我们做物理设计和空间大小评估的时候。这里以table相关size为例,重点介绍一下。如何计算对应的toast表相关的空间大小?数据库中表的物理大小。
2024-03-24 08:12:59 202
原创 PostgreSQL中控制文件的解析与恢复
它的路径位于:控制文件里存储了数据库唯一系统标识符、系统状态数据、数据库启动前系统必须恢复到的检查点信息、数据库的配置兼容backend进程执行的参数、指明类型timestamp、interval、time内部格式的标志、指明不同类型传值(pass-by-value)状态的标志以及一些数据库的重要信息。我们可以通过pg_controldata命令直接读取PostgreSQL控制文件内容。控制文件内容主要分为是三部分,初始化静态信息、WAL及检查点的动态信息、一些数据库配置信息。
2024-03-23 22:33:08 1019
原创 使用下SAP HANA强大的Cloud控制台
SAP的HANA数据库(注:这里指是云平台版本,不是platform的本地部署版本)的版本发布,基本上每个季度都有一次发布。2024年的第一个版本内部已经Release了,很快就会推到生产环境当中。当前要发布的版本是:2024.2.6 (QRC 1/2024)。而且每个版本的维护周期最长不会超过7个月(等于半年之后有一个月的缓冲期)。更新迭代相当快。也是为了适应云环境的需求。本文并不打算介绍2024. QRC 1的新功能,待正式发布之后再进行有关功能的详细介绍。
2024-03-23 03:50:07 29
原创 扩展一下BenchmarkSQL,新增支持ASE/HANA/DB2/SQLServer,可以随便用了
不多说,已经在github上开源:https://github.com/iihero/benchmarksql-v5。
2024-03-23 03:40:53 218 1
原创 高可用: 体验使用Odyssey连接池(一)
关于 Odyssey ,它是一种相对高级的多线程 PostgreSQL 连接池。内部采用异步的多线程体系结构,使用事件驱动的异步方式来实现 内部逻辑,但是对外提供的接口看起来仍像是同步的过程方式,而没有采用回调的方式来实现,便于开发人员使用。从支持程度来讲,它的多线程方式比pgbouncer似乎更胜一筹,单个应用能更好的利用CPU,并且可以支持更大规模的并发。最近在总结PG的一些连接池的使用时,体验了一把Odyssey(奥德赛)连接池。顺便说一句,俄国的工程师水平还是相当不错的。
2024-03-23 03:30:20 19
原创 PG中一个表的3~8个文件是怎么来的?
微信公众号:数据库杂记 个人微信: _iihero我是iihero. 也可以叫我Sean.Sean@墨天轮 (https://www.modb.pro/u/16258)数据库领域的资深爱好者一枚。SAP数据库技术专家与架构师,PostgreSQL ACE.水木早期数据库论坛发起人db2@smth. 早期多年水木论坛数据库版版主。国内最早一批DB2 DBA。前后对Sybase, PostgreSQL, HANA,Oracle, DB2, SQLite均有涉猎。
2024-03-21 06:31:58 963
原创 PostgreSQL中的事件触发器,用途多多
DBA的工作范围以内,比较头疼的几件事之一,恐怕就是数据被误删。于是经常看到网上的一些文字,诸如:”删库跑路“。那也只是戏说,真正追究起来,跑是不跑不掉的。所以,千万不要干傻事。经验老道的DBA,向来是拿”备份“技术作为生存第一要素。数据丢了,连过去的有效备份都不具备的话,那可真是要被迫跑路了。本文试着从另外一个角度,即防御角度,看看PostgreSQL中如何通过事件触发器来阻断用户的drop table或truncate table之类的操作。顺便对PostgreSQL中的事件触发器的使用做些介绍。
2024-03-21 06:25:34 872
原创 Redis 7.0.X 在Windows下编译支持TLS连接,遇坑埋坑
Redis在版本6以及以后,基于安全的需要,就开始支持TLS连接了。基于Windows版本的维护,在网上以前有两个库,一个是微软维护的,维护到3.x之后就变成archive了,见后边的参考链接。另一个库也只维护到5.x。还没有一个windows版本维护到6及以上的版本。如果仔细推敲其原因,可能还是在windows平台上用的不多吧。简单的非TLS的在windows上跑跑也不差不多了。那到底有没有可能编译出一份支持TLS的windows版本呢?
2024-03-19 07:00:42 1137
原创 好用的Redis 客户端工具有几个? 这里推荐两三个
记得前边为了使用windows上的命令行客户端去连接Cloud上边的 hyperscale Redis, 很是费了半天劲,才折腾出一个可以连接的支持TlS的版本。里边要用到msys + mingw,而且接连几个坑。Redis 7.0.X 在Windows下编译支持TLS连接,遇坑埋坑那么有没有单独的GUI式的客户端工具可以连接呢?如果有可能,将两者结合起来用,看着也是蛮不错的。Redis作为一款优秀的开源K/V数据库,挑选合适的GUI客户端工具还是蛮重要的。
2024-03-19 06:58:45 1547
原创 PostgreSQL中的CTE(公共表表达式)知多少? - (中级)
PostgreSQL中的CTE:公共表表达式是一种更好的临时表. 用于较大查询的辅助语句.用于只在一个查询中存在的临时表。在WITH子句中的每一个辅助语句可以是一个SELECTINSERTUPDATE或DELETE,并且WITH子句本身也可以被附加到一个主语句,主语句也可以是SELECTINSERTUPDATE或DELETE。这也是PostgreSQL的一个非常重要的功能。有很多商用关系数据库甚至还没有这个特色功能。仔细再读了下这篇文档,感觉组织的不是很理想。试图重新组织一下,便于理解其中的使用方法。
2024-03-18 11:01:27 1467
原创 SQLAnywhere1701的Non-Install手动制作
话说我好多年没有制作这种non-install的版本了。有时候从下载到安装一套Sybase ASA (SQLAnywhere),到安装完成,挺花时间的。现在的ASA已经从很早以前的8.0发展到了17.0.1了。过去,曾经做过Oracle 9, Oracle 10, Oracle 11,到了Oracle 12就彻底不做了。时间精力上不允许。Sybase ASE也做过类似的。以上这些,指的都是Windows下边。Linux上就不说了,因为linux上基本上只是一些copy动作,不需要过多的介绍。
2024-03-18 10:58:48 273
原创 “趣说“Sybase ASE中有关字段大小计算
如果您看过我以前写的一些有关Sybase ASE数据库避免表膨胀的短文,可能还会有一些印象。也说说Sybase ASE中的空间膨胀及应对方案。实际上,如果不小心使用的话,仍然会遇到一些你不曾经预料的问题。
2024-03-16 15:52:11 1012
原创 DBA会被云淘汰吗?会被AI淘汰吗?
今天晚上终于挤出点时间听了听OSC的现场直播,视频太卡,还好能听到各位大牛的声音。讨论的是DBA这个职业或者工种会不会被“云”的大环境淘汰。既然将这种话题列到直播现场,除了吸引大家的关注以外,本身也意味着不少相关技术人员对于DBA这个工作方向存在带有焦虑。人无远虑,必有近忧。讨论这个问题的前提,没有在讨论前下明确界限,就很容易造成相互的“扯”,你认为这个是DBA工作范围,他认为不是,认为DBA工作内容是别的***。
2024-03-15 20:13:47 412
原创 [善用佳软]推荐掌握小工具:Json解析的命令行工具jq
我们在各种生产环境或者开发测试环境中,一定遇到有很多信息都是使用JSON串或者文本文件作为输入的。在没有JQ命令行工具之前,我们要从中获取真正的输入,大都把它复制到文本里头,然后使用文本编辑器进行加工整理。比如,提取用户名(username)、密码(password)、连接的url、证书(certificate)等。b73"上边的信息已经做过脱敏处理。我们使用jq就可以快速得到相关项的值。上边所有内容只是很基础的一部分使用。
2024-03-15 20:02:14 896
原创 【New Release】PostgreSQL小版本(16.2, 15.6, 14.11, 13.14,12.18) 发布了
PostgreSQL遵循小版本的发布规律,这一个季度的小版本又发布了。可以算作是2024年第一个季度的版本发布。如果总结其规律:大概就是2月、5月、8月、11月的样子。通常因为11月配合大版本的发布,它是起点,也有可能就是终点。起点可能是*.0,也有可能是*.1。于是你在标题里头,可以看到14.11这样的版本号。(正常情况,应该是14.8)。但是总体来说应该是每个季度一次小版本的发布更新。CVSS v3 Base Score 分数达到8.0分。超过7/7.5分的,一般都属于高等级的安全问题了。
2024-03-15 19:59:18 933
原创 关于身份证号及行政区划的有意思的知识, 你知道多少?
最近发生了很多事。OpenAI的sora,已经可以通过文本指令生成1分钟连续的逼真视频了。然后是2月29号这种四年一闰月的计时,也引起了少量系统出现故障。AI的快速发展,也让黄仁勋的英伟达这支美股股价暴涨。这是一个华丽的转身。记得最开始这家公司是卖给游戏玩家做显卡驱动的,然后由于比特币的诞生,大量的专业挖币的需求催生了高端显卡的强需求,然后是它为AI提供专有的计算平台。GPU->比特币->AI。由此形成很好的一个需求链,而且基本上没啥竞争对手。这也是它的市值快速达到2万亿的一个重要原因。
2024-03-15 19:57:14 552
x64_linux下Sybase ASE15.7(4之4)
2012-11-27
x64_linux下Sybase ASE15.7(4之2)
2012-11-27
x64_linux下Sybase ASE15.7(4之1)
2012-11-27
正式发布jmyetl-1.0.2
2012-06-11
oracle11.2.0server非安装版(学习使用)
2012-03-11
Sybase ASE 12.5.4 ODBC驱动包
2011-12-13
Windows下MySQL自动下载并安装为服务mini工具包
2011-01-23
Sybase ASE ado.net2.0 驱动包AdoNet2.AseClient
2010-12-21
ASA (Sybase SQL Anywhere 11.0)文档
2010-12-06
hisqlapi_1.0.0.9 数据库通用API C++ wrapper
2010-07-04
oracle10g for windows 32平台精简版(2之2)
2010-05-29
oracle10g for windows 32平台精简版(2之1)
2010-05-29
Sybase ASE15.0.2 Linux 32bit x86版(10之9)
2010-05-25
Sybase ASE15.0.2 Linux 32bit x86版(10之8)
2010-05-25
Sybase ASE15.0.2 Linux 32bit x86版(10之7)
2010-05-25
PostgreSQL 15.6 Document 帮助文档 chm文件格式
2024-03-26
史上最新PostgreSQL16.2的帮助文档 all-in-1-chm 文件
2024-03-24
史上最新PostgreSQL15.2的帮助文档 all-in-1, chm格式,非常方便
2024-03-24
史上最新PostgreSQL14.4的帮助文档 all-in-1-chm文件
2024-03-23
SAP Sybase ASE 16 JDBC 最新驱动:
2022-06-13
Sybase (ASE) jdbc 官方驱动包 (最新版)
2019-05-06
Sybase ASA (SQLAnywhere) 17.0文档安装版
2019-05-06
SAP Sybase IQ命令行客户端
2014-03-20
SAP Sybase ASA160开发版Windows版 2之2
2013-12-27
SAP Sybase ASA160 Windows版 文件2之1
2013-12-27
SAP Sybase ASA160 Linux版开发人员版(之二,最后一个文件)
2013-12-20
SAP Sybase ASA160 Linux版开发人员版(之一)
2013-12-20
支持Sybase ASA9 (SQLAnywhere9/8/10)数据库访问的Sybase Central客户端
2013-12-19
SAP Sybase ASE15.7解压缩版客户端(ScjviewASE157.zip)
2013-12-18
解压缩版Sybase ASA12.0客户端工具,非常好用
2013-11-28
Windows下MySQL自动下载安装小工具包(更新)V1.2
2013-11-24
x64_linux下Sybase ASE15.7(4之3)
2012-11-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人