自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (22)
  • 收藏
  • 关注

原创 JAVA常用正则表达式

元字符 描述 \ 将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multil...

2018-10-21 10:21:53 99

原创 各种排序的时间复杂度和空间复杂度,稳定性

  直接插入排序就是把未排序的元素一个一个插入到有序的集合中public static void insertionSort(int []arr){for(int i=1;i<arr.length;i++){ insertToRightPosition(arr,i);}}private static void insertToRightPosition(i...

2018-10-12 21:44:01 1007

原创 spring面试题

 目录 谈谈你对spring IOC和DI的理解,它们有什么区别?BeanFactory 接口和 ApplicationContext 接口有什么区别 ?spring配置bean实例化有哪些方式?简单的说一下spring的生命周期?  请介绍一下Spring框架中Bean的生命周期和作用域绍一下Spring框架中Bean的生命周期和作用Bean注入属性有哪几种方式?...

2018-10-12 21:31:22 441

原创 InnoDB存储引擎的B+索引,提升性能

参考:https://mp.weixin.qq.com/s/ktEBA03Kip4bYYkp2ktiIQ内容摘要: B+树索引在空间和时间上都有代价,所以没事儿别瞎建索引。 B+树索引适用于下边这些情况: 全值匹配 匹配左边的列 匹配范围值 精确匹配某一列并范围匹配另外一列 用于排序 ...

2018-10-12 17:56:35 184

转载 服务熔断、蓝绿部署、滚动部署

什么是服务熔断?熔断这一概念来源于电子工程中的断路器(Circuit Breaker)。在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。这种牺牲局部,保全整体的措施就叫做熔断。如果不采取熔断措施,我们的系统会怎样呢?我们来看一个栗子。当前系统中有A,B,C三个服务,服务A是上游,服务B是中游,服务C是下游。它...

2018-10-10 15:24:52 205

转载 分布式事务(两阶段提交、三阶段提交)

假如没有分布式事务在一系列微服务系统当中,假如不存在分布式事务,会发生什么呢?让我们以互联网中常用的交易业务为例子:上图中包含了库存和订单两个独立的微服务,每个微服务维护了自己的数据库。在交易系统的业务逻辑中,一个商品在下单之前需要先调用库存服务,进行扣除库存,再调用订单服务,创建订单记录。正常情况下,两个数据库各自更新成功,两边数据维持着一致性。但...

2018-10-10 15:13:13 4638

转载 分布式锁:redis(setnx)、zookeeper的分布式(临时顺序节点)、(还可以基于数据库的排他锁、表锁)

目录如何用Redis实现分布式锁?Zookeeper实现分布式锁基于数据库的分布式锁分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一...

2018-10-10 15:03:15 5318 1

转载 tomcat架构解析

目录一、Tomcat顶层架构二、Tomcat顶层架构小结:三、Connector和Container的微妙关系四、Connector架构分析五、Container架构分析六、Container如何处理请求的总结俗话说,站在巨人的肩膀上看世界,一般学习的时候也是先总览一下整体,然后逐个部分个个击破,最后形成思路,了解具体细节,Tomcat的结构很复杂,但是 Tomca...

2018-10-08 22:17:18 105

原创 Linux常用命令之三

目录 LVM逻辑卷管理器RAID独立冗余磁盘阵列linux的安全防护:firewalld和TCP Wrappers 服务iptables 与 firewalld区别linux10-使用 ssh 服务管理远程主机LVM逻辑卷管理器LVM 初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。LVM 技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽...

2018-10-08 20:55:13 286

原创 Linux常用命令之二

目录 文件的隐藏属性文件权限用户身份与文件权限存储结构文件的隐藏属性 chattr命令 用于设置文件的隐藏权限想把某个隐藏功能添加到文件上 则在命令后面追加+参数  如果想要把某个隐藏功能移出文件则需要追加“-参数”  i    无法对文件进行修改 若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件a   仅允许补充(追加)内容,无法覆盖/删除...

2018-10-08 20:42:13 225

原创 Linux常用命令之一

目录 系统命令文件文本编辑命令文件目录管理命令打包压缩与搜索命令输入输出重定向vim编辑器与shell命令脚本系统命令.当前目录 ..上一层目录/dev/null  : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据/dev/zero  : 在类UNIX 操作系统中, /dev/zero 是一个特殊的文件...

2018-10-08 20:37:38 312

原创 Linux常见面试题

1. 在Linux系统中,以 文件 方式访问设备 。2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。3. Linux文件系统中每个文件用 索引节点来标识。Linux文件系统使用索引节点来记录文件信息,作用于Windows的文件分配表类似,索引节点是一个数据结构,它包含了一个文件的文件名,位置,大小,建立或修改时间,访问权限,所属关系等文件控制信息,一个文件系...

2018-10-08 17:57:47 816

转载 JVM解读-调优常用参数

JVM参数1 典型配置/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:SurvivorRatio=8 -XX:MaxTenuring...

2018-10-07 21:23:30 99

原创 B-(B树)、B+

目录简要地介绍B+树:B+树的特征:B+树的优势:数据库索引为什么使用树结构存储呢?树的查询效率高,而且可以保持有序为什么索引没有使用二叉查找树来实现呢?二叉查找树查询的时间复杂度为O(logN),二叉查找树的查找速度和比较次数都是最小的。但是索引存在磁盘上,数据量比较大的时候,索引的大小可能有几个G甚至更多。当我们需要利用索引查询的时候,不能把整个索引全部加在到内...

2018-10-07 21:20:15 11443

原创 mysql数据库的锁 有表锁(表共享读锁,表独占写锁)、行锁(共享锁、排他锁)

一、概述数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各...

2018-10-07 19:45:57 5223 1

翻译 Java 读写锁实现原理

为什么需要读写锁?与传统锁不同的是读写锁的规则是可以共享读,但只能一个写,总结起来为:读读不互斥,读写互斥,写写互斥,而一般的独占锁是:读读互斥,读写互斥,写写互斥,而场景中往往读远远大于写,读写锁就是为了这种优化而创建出来的一种机制。注意是读远远大于写,一般情况下独占锁的效率低来源于高并发下对临界区的激烈竞争导致线程上下文切换。因此当并发不是很高的情况下,读写锁由于需要额外维护读锁的状态...

2018-10-07 18:45:45 174

翻译 AQS、CAS

AQS核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用CLH队列锁实现的,即将暂时获取不到锁的线程加入到队列中。CLH(Craig,Landin,and Hagersten)队列是一个虚拟的双向队列(虚拟的双向队列即不存在队列实例,仅...

2018-10-07 18:09:43 753

翻译 负载均衡:总结和思考

 古人云,不患寡而患不均。  在计算机的世界,这就是大家耳熟能详的负载均衡(load balancing),所谓负载均衡,就是说如果一组计算机节点(或者一组进程)提供相同的(同质的)服务,那么对服务的请求就应该均匀的分摊到这些节点上。负载均衡的前提一定是“provide a single Internet service from multiple servers”, 这些提供服务的节点被称之...

2018-10-07 17:34:13 210

原创 mysql常用用法

目录 增删改查创建一个简单的存储过程创建视图MySQL语句去建立索引增删改查alter table oldtable rename newtable; #改表名alter table tablename modify name varchar(20);#改表结构alter table tablename change name newname varchar(20)...

2018-10-06 16:46:42 225

原创 计算机网络

tcp/ip五层模型物理层、数据链路层、网络层、传输层、应用层OSI七层模型物理层、数据链路层、网络层、传输层、会话层、表示层、应用层tcp与udp的区别 TCP是面向连接的、可靠的 其实网络的不安全不稳定特性,无论多少次握手都不能保证连接的可靠性 但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性 UDP 无连接的、不可靠 UD...

2018-10-06 16:01:13 131

原创 工厂模式、单例模式、代理模式、spring中常被用到的模式

工厂模式:简单工厂模式(静态工厂):1.定义一个类的基类2.同类的产品实现这个基类3.定义工厂类,其中通过switch-case方式,客户选择哪种产品就哪种缺点:工厂类中定义好了产品,如果需要新增产品就需要修改工厂类扩展性差(我想增加一种面条,除了新增一个面条产品类,还需要修改工厂类方法)2 不同的产品需要不同额外参数的时候 不支持。 抽象工厂模式是工厂方法模式的升级版本,他用来...

2018-10-06 14:50:46 1477

原创 策略模式、模板模式、观察者模式、适配器模式

模板模式模版方法定义了算法的步骤,把这些步骤的实现延迟到了子类。模版方法模式为我们提供了一种代码复用的重要技巧。模版方法的抽象类可以定义具体方法、抽象方法和钩子。抽象方法由子类实现。为了防止子类改变模版方法中的算法,可以将模版方法声明为final模版方法和策略模式都封装了算法,一个用组合(策略模式),一个用继承(模版方法)。泡咖啡和泡茶的案例1.定义一个模板类(流程方法(...

2018-10-06 14:44:39 562

转载 mybatis框架

1、什么是MyBatis?答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。2、讲下MyBatis的缓存答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache...

2018-10-06 14:07:53 124

转载 springMVC框架

1、什么是SpringMvc?答:SpringMvc是spring的一个模块,基于MVC的一个框架,无需中间整合层来整合。2、Spring MVC的优点:答:1)它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java组件.并且和Spring提供的其他基础结构紧密集成.  2)不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖...

2018-10-05 23:42:46 127

原创 Hibernate框架,事务(脏读幻读不可重复读)

1、什么是Hibernate,好处是什么?答: 1)Hibernate是一个操作数据库的框架,实现了对JDBC的封装;  2)Hibernate是一个ORM(对象关系映射)框架,我们在写程序时 ,用的时面向对象的方法,但是在关系型数据库里,存的是一条条的数据,为了用纯面向对象的思想解决问题,所有需要将程序中的对象和数据库的记录建立起映射关系,ORM就是这样的技术,而Hibernat...

2018-10-05 23:12:58 912

原创 struts2框架

struts2的核心控制器为一个filter(过滤器)而struts1是一个servletServlet能做的事情,过滤器也可以做到。并且过滤器比Servlet还多了一个放行的功能,因此过滤器比Servlet功能更为强大。结论就是:过滤器同样也适合做控制器。使用struts2流程:1.拷jar包2.建立Struts2的配置文件3.在web.xml配置控制器4.写stru...

2018-10-05 21:43:09 96

原创 Redis

Redis允许的value数据结构类型有5种:String(字符串)String类型是最简单的类型,可以保存二进制字节序列。从内部看是一个byte数组,最大上限是1G字节。List(列表)list在Redis存储为有序的字符串序列,其实就是每个子元素都是string类型的双向链表。最大长度为2^32。Set(集合)是一个字符串序列,set 内部使用hash表保持唯一性。用来做交集、并集...

2018-10-05 00:08:49 183

原创 redis的持久化策略

redis的持久化方式有俩种,持久化策略有4种:RDB(数据快照模式),定期存储,保存的是数据本身,存储文件是紧凑的 AOF(追加模式),每次修改数据时,同步到硬盘(写操作日志),保存的是数据的变更记录 如果只希望数据保存在内存中的话,俩种策略都可以关闭 也可以同时开启俩种策略,当Redis重启时,AOF文件会用于重建原始数据RDBRDB定时备份内存中的数据集。服务器启动的时候,可...

2018-10-05 00:08:12 910

原创 redis主从模式、哨兵sentinel模式、集群模式

该文章参考 https://blog.csdn.net/keketrtr/article/details/78802571redis主从模式主从模式指的是使用一个redis实例作为主机,其余的实例作为备份机。主机和从机的数据完全一致,主机支持数据的写入和读取等各项操作,而从机则只支持与主机数据的同步和读取,也就是说,客户端可以将数据写入到主机,由主机自动将数据的写入操作同步到从机。主从模式...

2018-10-04 23:48:19 278

原创 Linux下IO复用:epoll和select浅薄认识

首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。    不管是文件,还是套接字,还是管道,我们都可以把他们看作流。    之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读如数据,但是服务...

2018-10-04 22:22:53 160

原创 Java序列化的方式、object类中的方法、接口和抽象类的区别、ArrayList在循环过程中删除

Java序列化的方式a.是相应的对象实现了序列化接口Serializable,这个使用的比较多,对于序列化接口Serializable接口是一个空的接口,它的主要作用就是标识这个对象时可序列化的,jre对象在传输对象的时候会进行相关的封装。b.Externlizable接口继承了java的序列化接口,并增加了两个方法:     void writeExternal(ObjectOut...

2018-10-03 12:32:50 364

原创 hashmap实现原理(哈希值计算,put方法,扩容) jdk1.8带来的优化 hashmap并发安全 ConcurrentHashMap

        HashMap的源码,实现原理,JDK8中对HashMap做了怎样的优化。ArrayList和LinkedList的优缺点——数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。hashmap底层是由数组加链表构成,将需要存放的元素算出hash值,在对数组长度取余,得到下标。因为取余得到的值,可能相同。于是该...

2018-10-03 12:23:29 706

原创 线程池实现原理(Executor框架),java提供常用的几种线程池、死锁产生条件和避免

 为什么使用线程池服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。如果每个请求对应一个线程(thread-per-request)方法的不足之一是:为每个请求创建一个新线程的开销很大;为每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源要比花在处理实际的用户请求的时间和资源更多。在一个 JVM 里创建太多的线程可能会导致系统由于过度消耗内存而...

2018-10-02 13:26:39 630

原创 volatile,Lock、ReentrantLock、Theadlocal与synchronized的区别

volatile与synchronized1)volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住.2)volatile仅能使用在变量级别,synchronized则可以使用在变量,方法.3)volatile仅能实现变量的修改可见性,而synchronized则可以保证变...

2018-10-01 23:55:28 396

转载 ThreadLocal简介、实现、使用步骤

线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾...

2018-10-01 23:55:04 113

转载 Lock、ReentrantLock(可重入锁,非公平锁(默认))ReadWriteLock(读共享锁,写独享锁)

public interface Lock { //尝试获取锁,获取成功则返回,否则阻塞当前线程void lock(); //尝试获取锁,线程在成功获取锁之前被中断,则放弃获取锁,抛出异常 void lockInterruptibly() throws InterruptedException; //尝试获取锁,获取锁成功则返回true,否则返回false boolean t...

2018-10-01 22:28:53 887

转载 锁优化:偏向锁,轻量锁,重量锁(对象锁)自旋锁 锁粗化 锁消除 乐观锁和悲观锁的区别

jdk1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。 锁主要存在四中状态,依次是:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态,他们会随着竞争的激烈而逐渐升级。注意锁可以升级不可降级,这种策略是为了提高获得锁和释放锁的效率。每次设置锁,都需要操作系统的配合,需要操作系统在内核中维护一个Mutex(互斥量)的东西。这将带...

2018-10-01 00:19:43 764

数仓相关的pdf文档,维度建模

数仓相关的pdf文档,维度建模

2023-08-28

互联巨头面试题.zip

2019年最新总结,阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。内容分为阿里篇、华为篇、百度篇、腾讯篇、美团篇、头条篇、滴滴篇、京东篇、MySQL篇、Redis篇、MongDB篇、Zookeeper篇、Nginx篇、算法篇、内存篇、cpu篇、磁盘篇、网络通信篇、安全篇、并发篇

2019-07-22

jQuery实现带视差的搜索框页面背景页面代码

jQuery实现带视差的搜索框页面背景页面代码,非常炫酷,可以作为首页展示效果

2019-04-12

jquery实现百度搜索关键字输入下拉框提示

jquery实现百度搜索关键字输入下拉框提示,非常有效果,本人亲测超级好用

2019-04-12

Flink入门案例程序(中华石杉的课堂代码)

Flink入门案例程序(中华石杉的课堂代码)代码分功能打包,清晰简单易懂,适合对flink有些功能函数不熟悉的人群

2019-04-12

curl(url语法在windows系统的命令行)

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。

2019-03-23

kafka-connect-oracle-1.0

该jar包是kafka连接oracle必备connector,可实现oracle增量变化后发送到kafka,供消费者消费

2019-03-23

flume-ng-sql-source.jar

flume是一个日志收集器,更多详细的介绍可以参照官网:http://flume.apache.org/ flume-ng-sql-source实现oracle增量数据读取 有了这个jar文件即可从关系型数据库拉去数据到flume

2019-03-23

ansj中文分词器源码

分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上目前实现了.中文分词. 中文姓名识别 . 用户自定义词典,关键字提取,自动摘要,关键字标记等功能

2018-08-07

敏捷开发的技术思想

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征

2018-07-18

区块链技术发展现状与展望

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。也是未来发展趋势之一

2018-07-17

easyXdemo源代码

EasyX 是针对 C++ 的图形库,可以帮助 C++语言初学者快速上手图形和游戏编程。比如,可以用 VC + EasyX 很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏

2018-07-17

c++应用程序,实现用鼠标拖动方式在窗口中画自由曲线,在鼠标拖动画线过程中,当光标设置为十字形。

c++应用程序,实现用鼠标拖动方式在窗口中画自由曲线,在鼠标拖动画线过程中,当光标设置为十字形。

2018-06-24

中文分词器IK Analyzer 2012

中文分词器IK Analyzer 2012优化的词典存储,更小的内存占用。支持用户词典扩展定义。特别的,在 2012 版本, 词典支持中文,英文,数字混合词语。

2018-06-22

常用数据库的jar集合,包含mysql,oracle,sqlserver,Access等数据库

这是本人用过的数据库的jar包集合,都可以用JDBC连接数据库,包含mysql,oracle,sqlserver,Access等数据库

2018-06-22

大学期间写的代码合集包括安卓程序c语言程序C++程序

这个资源记录了我大学从大一开始到大三所写过的代码,应该比较全,但少了java程序,其中C程序居多。

2018-06-09

安卓反编译 apktool dex2jar jd-gui及详细教程

apktool 作用:用于安卓反编译资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar 作用:将apk反编译成java源码(classes.dex转化成jar文件) jd-gui 作用:查看APK中classes.dex转化成出的jar文件,即源码文件

2018-06-09

Android编程实验报告数据存储和天气预报

要为登录界面添加记住我的复选框,当复选框选中时,使用SharedPreferences存储类在合适的时机实现登录名和密码的保存,下次登录时直接登录。登录成功后显示多个城市的天气预报效果。天气信息使用XML文档和JSON文档两种方式实现,并在程序中解析使用。

2018-05-17

VC实验报告MFC应用程序设计中的常用控件

成绩计算的程序,2.创建一个简单的调色板程序,程序界面中可以利用滚动条进行红、绿、蓝三种颜色分量值的调整,也可以直接在文本框中输入红、绿、蓝三种颜色分量值,在颜色分量值调整变化的同时,变化的颜色效果通过一个圆形色块进行现式。在完成上述基本功能前提下,可以进一步进行功能扩展。

2018-05-17

VC实验报告之应用程序对键盘与鼠标的响应

实现在不同语言菜单间的切换,鼠标应用程序,实现用鼠标拖动方式在窗口中画直线,键盘程序,当按Ctrl键时,画一个圆,当按Shift键时,画一个矩形

2018-05-17

班级事务管理系统

班级事务管理系统实现了学生管理,发布班级信息,网上报名,网上签到等功能

2017-12-18

空空如也

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

TA关注的人

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