自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

笔记别偷看

欢迎大家来学习

  • 博客(38)
  • 资源 (3)
  • 收藏
  • 关注

原创 Java设计模式笔记总结

第 1章 设计模式概述概念软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。简介设计模式(英语 design pattern)是对面向对象设计中反复出现的问题的解决方案。这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。这个术语的含义还存有争议。算法不是设计模式,因为算法致力于解决问题而非设计问题。设

2020-12-22 14:55:10 341

原创 如何学好Java?(看我博客先看这篇)

路游的忠告纸上得来终觉浅,绝知此事要躬行。道理:从书本上得来的知识,毕竟是不够完善的。如果想要深入理解其中的道理,必须要亲自实践才行。卖油翁卖油翁【作者】欧阳修 【朝代】宋-陈康肃公善射,当世无双 ,公亦以此自矜。尝射于家圃,有卖油翁释担而立,睨之久而不去。见其发矢十中八九,但微颔之。 康肃问曰:”汝亦知射乎?吾射不亦精乎?”。翁曰:”无他, 但手熟尔。”康肃忿然曰:”尔安敢轻吾射!”翁曰:”以我酌油知之。”乃取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿。因曰:”我亦无他,

2020-12-21 21:54:54 254

原创 可视化——统计图表介绍

柱状图特点:柱状图使用垂直或水平的柱子显示类别之间的数值比较。柱状图中,一个轴表示需要对比的分类维度,另一个轴代表相应的数值。柱形图又可分为纵向柱状图和横向柱状图。柱状图 VS 条状图相同点:⚫ 两者数据结构相同,都是类别加上对应的离散数值;⚫ 当数据的记录数不大于12条,分类字段的字符长度小于5时,此时柱状图和条形图可以互换。不同点:⚫ 柱状图:如果分类的类目,恰好是时间序列,此时建议使用柱状图,因为柱状图能更好地体现数据随时间的变化情况;⚫ 条形图:当分类的类名长度大于5时,用条形

2020-12-31 00:13:14 3747

原创 IDEA的配置

安装总结从安装上来看,IntelliJ IDEA 对硬件的要求似乎不是很高。可是实际在开发中其实并不是这样的,因为 IntelliJ IDEA 执行时会有大量的缓存、索引文件,所以如果你正在使用 Eclipse / MyEclipse,想通过 IntelliJ IDEA 来解决计算机的卡、慢等问题,这基本上是不可能的,本质上你应该对自己的硬件设备进行升级。查看安装目录结构目录作用bin:容器,执行文件和启动参数等 help:快捷键文档和其他帮助文档 jre64:64 位java

2020-12-30 17:40:08 171

原创 eclipse配置

再创建一个workspace,之前的设置怎么没了原因:我们对Eclipse 做的设置,只对当前使用的 workspace 有效。设置的数据保存在相应workspace 文件夹下的.metadata 文件夹中。如果创建了新的 workspace,则需要重新设置。如何在Eclipse 中查看Java 类库源代码呢?在代码中,综合使用 ctrl + 鼠标左键点击指定结构时,可以调出如下界面:要导入的源码如果是文件方式存在,则选择:External File要导入的源码如果是文件夹方式存在,则选择:

2020-12-30 16:54:55 141 1

原创 Tomcat笔记(介绍,使用,配置)

JavaWeb 的概念什么是JavaWebJavaWeb 是指,所有通过Java 语言编写可以通过浏览器访问的程序的总称,叫JavaWeb。JavaWeb 是基于请求和响应来开发的。什么是请求请求是指客户端给服务器发送数据,叫请求Request。什么是响应响应是指服务器给客户端回传数据,叫响应Response。请求和响应的关系请求和响应是成对出现的,有请求就有响应。Web 资源的分类web 资源按实现的技术和呈现的效果的不同,又分为静态资源和动态资源两种。静态资源: html、cs

2020-12-29 00:02:59 280

原创 XML笔记(语法,格式,java解析xml)

XML 简介什么是xml?xml 是可扩展的标记性语言。xml 的作用?xml 的主要作用有:用来保存数据,而且这些数据具有自我描述性它还可以做为项目或者模块的配置文件还可以做为网络传输数据的格式(现在JSON 为主)。xml 语法文档声明。元素(标签)xml 属性xml 注释文本区域(CDATA 区)xml 格式<?xml version="1.0" encoding="UTF-8"?> xml 声明。<!-- xm

2020-12-28 23:25:44 249

原创 jQuery(属性操作,DOM 的增删改,CSS 样式操作,事件操作)

jQuery 的属性操作html() 它可以设置和获取起始标签和结束标签中的内容。跟dom 属性innerHTML 一样。text() 它可以设置和获取起始标签和结束标签中的文本。跟dom 属性innerText 一样。val() 它可以设置和获取表单项的value 属性值。跟dom 属性value 一样val 方法同时设置多个表单项的选中状态:<!DOCTYPE html><html lang="zh_CN"><head><meta chars

2020-12-27 23:52:28 196

原创 jQuery(基础用法,选择器,$(this))

jQuery 介绍什么是jQuery ?jQuery,顾名思义,也就是JavaScript 和查询(Query),它就是辅助JavaScript 开发的js 类库。jQuery 核心思想!!!它的核心思想是write less,do more(写得更少,做得更多),所以它实现了很多浏览器的兼容问题。jQuery 流行程度jQuery 现在已经成为最流行的JavaScript 库,在世界前10000 个访问最多的网站中,有超过55%在使用jQuery。jQuery 好处!!!jQuery 是

2020-12-27 23:00:03 2897

原创 DOM 模型(文档对象模型)重点

DOM 模型DOM 全称是Document Object Model 文档对象模型大白话,就是把文档中的标签,属性,文本,转换成为对象来管理。那么它们是如何实现把标签,属性,文本转换成为对象来管理呢。这就是我们马上要学习的重点。Document 对象(*****重点)Document 对象的理解:第一点:Document 它管理了所有的HTML 文档内容。第二点:document 它是一种树结构的文档。有层级关系。第三点:它让我们把所有的标签都对象化第四点:我们可以通过document 访

2020-12-26 22:37:34 194 2

原创 Javascript 事件(静态注册和动态注册)

js 中的事件什么是事件?事件是电脑输入设备与页面进行交互的响应。我们称之为事件。常用的事件:onload 加载完成事件: 页面加载完成之后,常用于做页面js 代码初始化操作onclick 单击事件: 常用于按钮的点击响应操作。onblur 失去焦点事件: 常用用于输入框失去焦点后验证其输入内容是否合法。onchange 内容发生改变事件: 常用于下拉列表和输入框内容发生改变后操作onsubmit 表单提交事件: 常用于表单提交前,验证所有表单项是否合法。事件的注册又分为静态注册和动态注册两

2020-12-26 21:01:59 3167

原创 JavaScript基础(变量,数组,函数,对象)

JavaScript 介绍Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行JavaScript 代码。JS 是Netscape 网景公司的产品,最早取名为LiveScript;为了吸引更多java 程序员。更名为JavaScript。(与Java无关)JS 是弱类型,Java 是强类型。特点:交互性(它可以做的就是信息的动态交互)安全性(不允许直接访问本地硬盘)跨平台性(只要是可以解释JS 的浏览器都可以执行,和平台无关)J

2020-12-26 19:56:57 288

原创 CSS笔记

CSS 技术介绍CSS 是「层叠样式表单」。是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。CSS 语法规则:选择器:浏览器根据“选择器”决定受CSS 样式影响的HTML 元素(标签)。属性(property) 是你要改变的样式名,并且每个属性都有一个值。属性和值被冒号分开,并由花括号包围,这样就组成了一个完整的样式声明(declaration),例如:p {color: blue}多个声明:如果要定义不止一个声明,则需要用分号将每个声明分开。虽然最后一条声明的最后

2020-12-26 11:24:41 272

原创 HTML笔记

HTML 简介Hyper Text Markup Language (超文本标记语言) 简写:HTMLHTML 通过标签来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)HTML 文件的书写规范<html> 表示整个html 页面的开始<head> 头信息<title>标题</title> 标题</head&g

2020-12-25 18:12:32 146

原创 类选择器和ID选择器的区别

区别 1:与类不同,在一个 HTML 文档中,ID 选择器会使用一次,而且仅一次。下面代码是正确的:<p>三年级时,我还是一个<span class="stress">胆小如鼠</span>的小女孩,上课从来不敢回答老师提出的问题,生怕回答错了老师会批评我。就一直没有这个<span class="stress">勇气</span>来回答老师提出的问题。</p>而下面代码是错误的:<p>三年级时,我还

2020-12-24 18:01:18 15715 2

原创 责任链模式(职责链模式)(Chain of Responsibility Pattern)

学校OA 系统的采购审批项目:需求是采购员采购教学器材如果金额小于等于5000, 由教学主任审批(0<=x<=5000)如果金额小于等于10000, 由院长审批(5000<x<=10000)如果金额小于等于30000, 由副校长审批(10000<x<=30000)如果金额超过30000 以上,有校长审批( 30000<x)请设计程序完成采购审批项目传统方案解决OA 系统审批,传统的设计方案(类图)传统方案解决OA 系统审批问题分

2020-12-22 14:08:37 792 2

原创 策略模式(Strategy Pattern)

编写鸭子项目,具体要求如下:有各种鸭子(比如野鸭、北京鸭、水鸭等, 鸭子有各种行为,比如叫、飞行等)显示鸭子的信息传统方案解决鸭子问题的分析和代码实现传统的设计方案(类图)传统的方式实现的问题分析和解决方案其它鸭子,都继承了Duck 类,所以fly 让所有子类都会飞了,这是不正确的上面说的1 的问题,其实是继承带来的问题:对类的局部改动,尤其超类的局部改动,会影响其他部分。会有溢出效应为了改进1 问题,我们可以通过覆盖fly 方法来解决=> 覆盖解决问题又来

2020-12-22 13:42:40 165 1

原创 状态模式(State Pattern)

APP 抽奖活动问题请编写程序完成APP 抽奖活动具体要求如下:假如每参加一次这个活动要扣除用户50 积分,中奖概率是10%奖品数量固定,抽完就不能抽奖活动有四个状态: 可以抽奖、不能抽奖、发放奖品和奖品领完活动的四个状态转换关系图(下图)状态模式基本介绍基本介绍状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换当一个对象的内在状态改变时,允许改变其行为,这个对

2020-12-21 22:33:26 6082 1

原创 解释器模式(Interpreter Pattern)

四则运算问题通过解释器模式来实现四则运算,如计算a+b-c 的值,具体要求先输入表达式的形式,比如a+b+c-d+e, 要求表达式的字母不能重复在分别输入a ,b, c, d, e 的值最后求出结果:如图传统方案解决四则运算问题分析编写一个方法,接收表达式的形式,然后根据用户输入的数值进行解析,得到结果问题分析:如果加入新的运算符,比如* / ( 等等,不利于扩展,另外让一个方法来解析会造成程序结构混乱,不够清晰.解决方案:可以考虑使用解释器模式, 即: 表达式->

2020-12-21 21:22:23 208

原创 备忘录模式(Memento Pattern)

游戏角色状态恢复问题游戏角色有攻击力和防御力,在大战Boss 前保存自身的状态(攻击力和防御力),当大战Boss 后攻击力和防御力下降,从备忘录对象恢复到大战前的状态传统方案解决游戏角色恢复传统的方式的问题分析一个对象,就对应一个保存对象状态的对象, 这样当我们游戏的对象很多时,不利于管理,开销也很大.传统的方式是简单地做备份,new 出另外一个对象出来,再把需要备份的数据放到这个新对象,但这就暴露了对象内部的细节解决方案: => 备忘录模式备忘录模式基本介绍基本介绍

2020-12-20 22:40:52 173 1

原创 中介者模式(Mediator Pattern)

智能家庭项目智能家庭项目:智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘等主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下->电视机开始播放传统方案解决智能家庭管理问题闹钟发送信息给咖啡机,咖啡机发送信息给电视机。。。。传统的方式的问题分析当各电器对象有多种状态改变时,相互之间的调用关系会比较复杂各个电器对象彼此联系,你中有我,我中有你,不利于松耦合.各个电器对象之间所传

2020-12-19 01:11:23 178 1

原创 观察者模式(Observer)

天气预报项目需求,具体要求如下:气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。需要设计开放型API,便于其他第三方也能接入气象站获取数据。提供温度、气压和湿度的接口测量数据更新时,要能实时的通知给第三方天气预报设计方案1-普通方案WeatherData 类 传统的设计方案通过对气象站项目的分析,我们可以初步设计出一个WeatherData类说明:通过getXxx方法,可以让第三方接入,并得到相关信息.当数据有更新时,气

2020-12-17 18:04:32 225

原创 迭代器模式(iterator)

看一个具体的需求编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如图:19.2 传统的设计方案(类图)传统的方式的问题分析将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的实际上我们的要求是:在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,不能很好实现的遍历的操作解决方案:=> 迭代器模式迭代器模式基本介绍基本介绍迭代器模式(

2020-12-17 14:20:43 206

原创 访问者模式-双分派

测评系统的需求完成测评系统需求将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价有不同的种类,比如成功、失败等)传统方案传统方式的问题分析如果系统比较小,还是ok 的,但是考虑系统增加越来越多新的功能时,对代码改动较大,违反了ocp 原则, 不利于维护扩展性不好,比如增加了新的人员类型,或者管理方法,都不好做(例如加个待定,必须改类)引出我们会使用新的设计模式– 访问者模式访问者模式基本介绍访问者模式(Visitor Pa

2020-12-16 22:29:48 360

原创 命令模式(源码讲解)

智能生活项目需求看一个具体的需求我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装app 就可以控制对这些家电工作。这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个App,分别控制,我们希望只要一个app就可以控制全部智能家电。要实现一个app 控制所有智能家电的需要,则每个智能家电厂家都要提供一个统一的接口给app 调用,这时就可以考虑使用命令模式。命令模式可将“动作的请求者”从“动作的执行者”对象中解耦出来.在我们的例子中,动作的请求者

2020-12-16 00:48:32 308

原创 模板方法模式(模板模式)——钩子方法

豆浆制作问题编写制作豆浆的程序,说明如下:制作豆浆的流程选材—>添加配料—>浸泡—>放到豆浆机打碎通过添加不同的配料,可以制作出不同口味的豆浆选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的请使用模板方法模式完成(说明:因为模板方法模式,比较简单,很容易就想到这个方案,因此就直接使用,不再使用传统的方案来引出模板方法模式)模板方法模式基本介绍基本介绍模板方法模式(Template Method Pattern),又叫模板模式(Te

2020-12-15 16:17:40 3494 3

原创 代理模式(静态代理,动态代理,Cglib 代理)

代理模式(Proxy)代理模式的基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式, 主要有三种静态代理、动态代理(JDK 代理、接口代理)和Cglib 代理(可以在内存动态的创建对象,而不需要实现接口, 他是属于动态代理的范畴) 。代理模式示意图静态代理静态代码模式的基本介绍

2020-12-13 20:02:03 188

原创 享元模式(蝇量模式,池原理)

展示网站项目需求小型的外包项目,给客户A 做一个产品展示网站,客户A 的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同:有客户要求以新闻的形式发布有客户人要求以博客的形式发布有客户希望以微信公众号的形式发布传统方案解决网站展现项目直接复制粘贴一份,然后根据客户不同要求,进行定制修改给每个网站租用一个空间方案设计示意图传统方案解决网站展现项目-问题分析需要的网站结构相似度很高,而且都不是高访问量网站,如果分成多个虚拟空间来处理,相当于一个相同网站的实例对象很多

2020-12-12 23:47:56 203

原创 外观模式(过程模式)

影院管理项目组建一个家庭影院:DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为:直接用遥控器:统筹各设备开关开爆米花机放下屏幕开投影仪开音响开DVD,选dvd去拿爆米花调暗灯光播放观影结束后,关闭各种设备传统方式解决影院管理传统方式解决影院管理问题分析在ClientTest 的main 方法中,创建各个子系统的对象,并直接去调用子系统(对象)相关方法,会造成调用过程混乱,没有清晰的过程不利于在ClientTest 中,去维护对子

2020-12-12 19:06:40 393

原创 抽象类和接口的区别(什么时候用抽象类,什么时候用接口?)

什么时候用如果在你的程序中有下面的这些情况,那你就要考虑使用抽象类了:你想要在几个关联紧密的类之间共享代码。你想要继承抽象类的那些类有一些公共方法或属性抑或是有修改protected或private属性的权限。这时你也可以考虑使用抽象类。你想要声明非静态或者是非最终执行的属性。你可以获得并且修改这些属性所属的对象的状态。当有下面的情形的时候,我们可以考虑使用接口:用相互之间无关的类实现你的接口。举例来说,可比较的和可克隆的那些接口可以使用无关的类来实现。你想指定一个特定

2020-12-12 14:45:26 2960 2

原创 组合模式(部分整体模式)

看一个学校院系展示需求编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如图:传统方案解决学校院系展示(类图)传统方案解决学校院系展示存在的问题分析将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的实际上我们的要求是:在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,**不能很好实现的管理的操作,**比如对学院、系的添加,删除,遍历等解决方案:把学校、院、系都

2020-12-12 01:28:03 534

原创 装饰者模式(通俗易懂)

星巴克咖啡订单项目(咖啡馆):咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡)调料:Milk、Soy(豆浆)、Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用OO 的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖啡+调料组合。方案1-解决星巴克咖啡订单项目方案1-解决星巴克咖啡订单问题分析Drink 是一个抽象类,表示饮料des 就

2020-12-11 22:36:39 9460 4

原创 可视化——matplotlib(图表的绘制:线形图 ,和环形图,柱状图 ,直方图 ,散点图和气泡图 ,箱型图,极坐标图)

pyplot的17个基础图标函数函数说明plt.plot(x,y,fmt,……)绘制一个坐标图plt.boxplot(data,notch,position)绘制一个箱形图plt.bar(left,height,width,bottom)绘制一个条形图plt.bar(width,bottom,left,height)绘制一个横向条形图plt.polar(theta,r)绘制极坐标图plt.pie(data, explode)绘制饼图plt

2020-12-11 18:14:58 1257

原创 数据可视化(pylot的函数,中文显示,文本显示,子绘图区域)

plt.subplot(‘行’,‘列’,‘编号’)

2020-12-11 16:45:49 1029

原创 桥接模式(Bridge)

手机操作问题传统方案解决手机操作问题传统方法对应的类图传统方案解决手机操作问题分析扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本.解决方案-使用桥接模式桥接模式(Bridge)-基本介绍基本介绍桥接模式(Bridge 模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。是一

2020-12-11 13:12:00 1556 1

原创 适配器模式(类适配器,对象适配器,接口适配器)

现实生活中的适配器例子泰国插座用的是两孔的(欧标),可以买个多功能转换插头(适配器) ,这样就可以使用了。基本介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式属于结构型模式主要分为三类:类适配器模式、对象适配器模式、接口适配器模式工作原理适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容从用户的角度看不到

2020-12-09 01:08:21 1671 1

原创 建造者模式(案例分析,四个角色)

盖房项目需求需要建房子:这一过程为打桩、砌墙、封顶房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的.请编写程序,完成需求.传统方式解决盖房需求思路分析(图解)代码的演示AbstractHouse.javapackage com.atguigu.builder;public abstract class AbstractHouse { //打地基 public abstract void buildBasic(); //砌墙 pub

2020-12-08 17:40:54 1224

原创 类名 对象名= new 类名()和 对象名= new 类名()的区别

类名 对象名= new 类名();其实有两个步骤(申明加初始化)申明变量 类名 对象名初始化 对象名= new 类名();总结:new出来的对象赋给一个变量如果后面再次需要用的时候直接初始化就可以(已经声明的就不可以再申明)直接初始化:对象名= new 类名();...

2020-12-03 23:09:31 8264 9

factory.zip

工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式) 笔记内容:https://blog.csdn.net/weixin_46168350/article/details/110285717

2020-11-29

huffmancode

赫夫曼编码,哈夫曼编码(Huffman Coding),又称霍夫曼编码,案例分析,了解赫夫曼编码的实现,数据无损压缩,文件压缩,解压

2020-11-03

泛型和集合案例.7z

结合https://blog.csdn.net/weixin_46168350/article/details/107755203学习

2020-08-08

空空如也

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

TA关注的人

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