自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SPRINGBOOT视图跳转问题

spring boot使用 ModelAndView 视图跳转:①将html文件存储在templates文件夹下,可以直接存储,也可以创建子文件夹存储②导入thymeleaf依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependenc.

2022-02-23 15:23:27 813 1

原创 211228 --- JavaScript实现IP访问限制

JavaScript实现IP访问限制

2021-12-29 09:14:07 1548

原创 Git(10) —— 关于Git中分支的说明

1.分支管理分支在GIT中相对较难,分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!分支的意义首先要明白,整个项目应该有且仅有一个主分支,主分支永远存储的是我们完整没有bug可以正常运行的仓库文件,比如我们将一个超市管理系统开发完毕,基本的需求全部实现了,经过了测试,最终可以上线运行了,那么这个项目就应该放在master主分支中但是突然我们想要为这个超市管理系统增加一个功能,比如财务管理模

2020-10-20 17:17:47 455

原创 Git(9) —— IDEA中集成Git

目录1.IDEA中集成Git1.新建项目绑定git2. 修改文件,使用IDEA操作git3.忽略文件1.IDEA中集成Git默认情况下我们的IDEA是没有集成Git的,所以我们想要在IDEA中使用Git,需要手动集成在IDEA中绑定和使用Git只需要3步新建项目绑定git修改文件,使用IDEA操作git提交测试1.新建项目绑定git绑定方法很简单,先创建项目,然后在项目文件夹中克隆远程仓库中的文件即可;或者我们可以先将仓库克隆下来,再创建项目,最后将本地克隆仓库直接粘贴过去刚

2020-10-20 16:17:59 266

原创 Git(8) —— 码云的注册和使用

github 是有墙的,比较慢,在国内的话,我们一般使用 gitee ,公司中有时候会搭建自己的gitlab服务器1.码云的使用注册登录码云,完善个人信息设置本机绑定SSH公钥,实现免密码登录!(免密码登录,这一步挺重要的,码云是远程仓库,我们是平时工作在本地仓库,如果不设置免密码登陆,那么每一次我们在本地提交更新到远程仓库,或者从远程拉取新的仓库文件到本地,我们都需要进行登陆,步骤繁琐且浪费时间).参考链接# 进入 C:\Users\Administrator\.ssh 目录# 生成公钥s.

2020-10-20 15:11:36 419

原创 Git(7) —— Git的基本操作命令

目录1.文件的四种状态2.查看文件状态3.忽略文件1.文件的四种状态版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为StagedUnmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为

2020-10-20 12:47:40 182

原创 Git(6) —— Git项目创建以及克隆

目录1.创建工作目录与常用指令2.仓库搭建1.本地Git仓库搭建2.克隆远程仓库1.创建工作目录与常用指令工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文日常使用只要记住下图6个命令:甚至上图中的6个git命令我们只用掌握其中4个,其他两个基本不用,主要掌握将本地仓库文件提交到远程仓库的3个git命令:add、commit、push + 从远程仓库拉取最新仓库文件到本地的命令:clone有了工作目录之后,我们就需要获

2020-10-20 12:01:30 207

原创 Git(5) —— Git的工作原理

目录1.三个区域2.工作流程1.三个区域Git本地有三个工作区域:工作目录(Working Directory,平时我们存放文件的文件夹)、暂存区(Stage/Index,一个文件)、本地仓库/资源库(Repository/Git Directory/History)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域,文件在这四个区域之间的转换关系如下:下图显示的提交实现流程:工作区–(git add file,提交)–>暂存区–(git commit

2020-10-20 10:53:42 209

原创 Git(4) —— Git的必要配置

目录1.Git配置2.设置用户名与邮箱(用户标识,必须要配置)1.Git配置所有的配置文件,其实都保存在本地Git相关的配置文件在本地的位置:- Git安装目录\etc\gitconfig文件 :Git 安装目录下的 gitconfig --system 系统级- C:\用户\用户名\ .gitconfig 只适用于当前登录用户的配置 --global 全局查看配置 git config -l查看不同级别的配置文件:#查看系统configgit config -

2020-10-20 10:34:37 196

原创 Git(3) —— 安装Git及环境配置

目录1.软件下载2.卸载老版本Git以及安装新Git3.常用的Linux命令1.软件下载打开 Git官网,下载git对应操作系统的版本。所有国外的东西下载慢的话就可以去找国内的镜像,下载国内镜像就会很快了!官网下载太慢,我们可以使用淘宝镜像下载2.卸载老版本Git以及安装新Git首先清理包含Git的环境变量卸载安装的Git无脑安装安装包即可Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多Git CMD:Windows风格的命令行Git GUI

2020-10-20 10:12:31 304

原创 Git(2) —— Git历史

1.Git历史同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代Linux 内核开源项目有着为数众广的参与者,绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码Linux社区中存在很多的大佬,想要破解研究 BitKeeper !到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他

2020-10-20 09:33:28 249

原创 Git(1) —— 版本控制

学习git之前,需要先明白的概念,版本控制!目录1.什么是版本控制/版本迭代2.常见的版本控制工具3.版本控制分类1.本地版本控制2.集中版本控制 (svm)3.分布式版本控制 (代表产品:Git)4.Git和SVN最主要区别1.什么是版本控制/版本迭代版本控制(Revison control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术实现跨区域多人协同开发追踪和记载一个或者多个文件的历史记录组织和保护

2020-10-20 09:24:58 281

原创 Linux(16) —— yum安装docker以及宝塔面板使用

目录1.Docker(yum安装)2.宝塔面板安装1.Docker(yum安装)yum安装是在线安装,所以使用yum安装的时候必须是在联网的情况下进行注意:以下操作都是在CentOS 7中进行的,不同版本的CentOS的命令有所区别安装我们的准备环境yum -y install 包名称 #yum install为我们的yum安装命令,-y参数表示安装的时候所有的提示都是yes#首先我们需要安装gcc环境yum -y install gcc#然后需要安装c++环境yum -y ins

2020-10-19 21:51:52 735

原创 Linux(15) —— 解压缩Tomcat并发布

在上一篇博客中我们安装了JDK,并且发布了一个spring boot项目,并在本地对远程服务器上的spring boot项目进行了成功的访问,但是我们打的jar包,但是有些项目打的war包,打的war包我们就需要使用tomcat运行它,所以我们需要安装tomcat1.解压缩安装tomcat官网下载tomcat,apache-tomcat-9.0.39.tar.gz解压这个文件,命令:tar zxvf .tar.gz压缩包名称启动tomcat测试,和Windows中和在Windows.

2020-10-19 20:18:52 751

原创 Linux(14) —— rpm安装JDK上线项目

目录1.小结前面学习的Linux基本命令2.环境安装1.JDK安装1.安装Java环境2.发布一个Java项目3.小结1.小结前面学习的Linux基本命令目录管理文件基本属性管理文件内容查看vim编辑器用户/账号管理用户组管理磁盘管理进程管理2.环境安装Linux中环境的安装有3种方式rpm(案例:安装JDK,并在线发布一个SringBoot项目)解压缩(案例:安装tomcat,启动并通过外网访问,即发布网站)yum在线安装(案例:安装docker,直接安装运行跑起来

2020-10-19 19:31:11 227 1

原创 Linux(13) —— Linux进程管理学习

目录1.Linux中的进程的基本概念2.Linux中的进程的命令1.查看进程信息2.结束进程3.小结1.Linux中的进程的基本概念在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号!(和Windows中每一个进程的PID是一样的)每一个进程呢,都会有一个父进程!进程可以有两种存在方式:前台(当前可得到的),后台(当前看不到的)运行一般服务都是在后台运行的,基本的程序都是在前台运行的2.Linux中的进程的命令1.查看进程信息命令:ps,用于 查看当前系统中正在

2020-10-19 15:29:24 139

原创 Linux(12) —— Linux磁盘管理学习

目录1.df和du命令2.磁盘挂载与卸除3.小结1.df和du命令df:检查文件系统的磁盘空间占用情况,可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。它会列出整个服务器上所有 文件系统/磁盘 的磁盘使用量,类似于我们在Windows上打开"此电脑"的时候看到的场景使用语法:df [参数选项] [目录或文件名]选项参数:-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;-k :以 KBytes 的容量显示各文件系统;-m :以 MBytes 的容量显

2020-10-19 11:14:33 127

原创 Linux(11) —— Linux用户组管理学习

目录1.什么是用户组以及它的作用2.创建一个用户组 groupadd3.删除用户组 groupdel4.修改用户组的权限信息和名字 groupmod -g -n5.用户需要切换所属的用户组:newgrp 要切换的组名称6.文件的查看!1./etc/passwd文件是用户管理工作涉及的最重要的一个文件2.拥有帐户文件/用户口令存储文件/etc/shadow3.用户组的所有信息都存放在/etc/group文件中7.小结1.什么是用户组以及它的作用注意区别概念:属主(文件的归属者)、属组(用户的归属组)

2020-10-19 09:49:10 216

原创 Linux(10) —— Linux账号管理学习

Linux是一个多用户的系统,所以我们掌握账户管理是很必要的目录1.什么是Linux的账号管理2.用户账号的管理3.useradd 命令 添加用户4.删除用户 userdel5.修改用户 usermod6.切换用户!7.用户的密码设置问题!8.锁定账户!9.小结1.什么是Linux的账号管理Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,.

2020-10-19 00:04:23 205

原创 Linux(9) —— Vim编辑器的使用

参考链接目录1.什么是Vim编辑器2.vim编辑器的三种使用模式3.vi/vim 按键说明1.第一部分:一般/命令模式可用的光标移动、复制粘贴、搜索替换等2.第二部分:一般模式切换到编辑模式的可用的按钮说明(重要,都要掌握)3.第三部分:一般模式切换到指令行模式的可用的按钮说明1.什么是Vim编辑器Vim通过一些插件可以实现和IDE一样的功能!Vim是从 vi 发展出来的一个文本编辑器,是vi的一个升级版,比如代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。尤.

2020-10-18 19:41:33 145

原创 Linux(8) —— 硬链接和软链接

目录1.Linux 链接的概念2.命令小结1.Linux 链接的概念Linux的链接分为两种:硬链接、软链接!硬链接:文件A—文件A的硬链接B,假设B是A的硬链接,那么它们两个指向了文件系统中的同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删!【它的本质为创建多个链接指向磁盘上的同一个文件,只要没有将所有的硬链接和源文件都删除,这个文件就不会被真正的删除,而是只将其中我们指定指向它的那个文件链接删除了】软链接:又叫符号链接, 类似Window下的快

2020-10-18 16:14:55 286 1

原创 Linux(7) —— 多种查看文件内容的方式学习

目录1.文件内容查看2.需要记住的一些东西1.文件内容查看我们会经常使用到文件查看!Linux系统中使用以下命令来查看文件的内容:(全部掌握,高亮的是常用的命令)cat 由文件的第一行开始显示文件的全部内容,用来读文章,或者读取配置文件啊,都使用cat名由于我们现在没有什么文件可以查看,所以我们可以去查看系统的配置文件来上手上面的文件查看命令我们的系统配置都放在/etc/sysconfig中,所以我们可以先进入该文件目录tac 从最后一行开始显示,可以看出 tac 是 ca

2020-10-18 15:12:34 465

原创 Linux(6) —— 文件属性查看和修改学习

文件基本属性在Linux中文件的属性就由10个字母代替,1个文件类型+3组文件操作权限(每3个字母一组)目录文件基本属性1.看懂文件属性2.修改文件属性3.小结1.看懂文件属性Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限【比如root用户的权限最高,其他用户的权限都低于root用户】为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定在Linux中我们可以使用ll 或ls –l或ls -ll或ls -al命令

2020-10-18 11:47:12 219

原创 Linux(5) —— 目录相关命令学习

目录管理目录目录管理1.绝对路径、相对路径2.ls (列出目录)3.cd 命令 切换目录4.pwd 显示当前用户所在的目录5.mkdir 创建一个目录6.rmdir 删除目录7.cp (复制文件或者目录)8.rm (移除文件或者目录)9.mv 移动文件或者文件夹&重命名文件或文件夹10.小结1.绝对路径、相对路径绝对路径:路径的全称(从盘符开始到文件名称为止):C:\ProgramData\360safe\xxx.xx相对路径:文件相对于当前用户所在位置的相对位置(从当前位置开始到文

2020-10-18 10:30:54 435

原创 Linux(4) —— 开机和关机以及基本目录结构介绍

目录1.开机登录2.关机3.系统目录结构1.开机登录开机会启动许多程序。它们在Windows叫做"服务"(service,在Windows中一开机就被自动开启运行提供基础服务的进程,在Windows中称为服务),在Linux就叫做"守护进程"(daemon,在Linux也有需要一开机就开启用来提供基础服务的进程,在Linux中称为守护进程)即在Linux中服务不叫服务,叫守护进程开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用

2020-10-18 00:11:17 290

原创 Linux(3) ——连接并使用远程的云服务器

目录1.环境搭建1.本地安装CentOS(不推荐)2.购买云服务器(推荐)1.安全组配置2.获取公网IP+重置实例密码3.安装xshell+xftp1.使用xshell远程连接云服务器2.使用xftp实现文件上传3.运行上传的tomcat1.环境搭建Linux 的安装,安装步骤比较繁琐(操作系统本身也是一个软件),现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用用!1.本地安装CentOS(不推荐)在本地安装,这个不太建议,如果没有经济来源的话,可以考虑在本地搭

2020-10-17 21:46:40 1581 2

原创 Linux(2) —— Linux入门概述

目录1.为什么要学习Linux2.Linux简介3.Linux 发行版4.Linux 应用领域5.Linux vs Windows1.为什么要学习Linuxlinux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板。就如同在国内再搞一个社交软件取代腾讯一样,想想而已基本不可能,因为用户已经习惯于使用微信交流,不是说技术上实现不了解而是老百姓已经习惯了,想让他们不用,即使他们自己不用亲戚朋友还是要用,没有办法的事情用习惯了windo

2020-10-17 19:49:33 329 1

原创 Linux(1) —— 学习简介

1.为什么要学Linux通过前面的学习,Java这条路我们已经学习了JavaSE、MySQL、前端(HTML、CSS、JS)、JavaWeb、SSM框架、spring boot、Vue、spring cloud,还需要学习MybatisPlus和Git的使用后面需要学习的消息队列(kafka、RabbitMQ、RockeetMQ)、缓存(Redis)、搜索引擎(ElasticSearch)、集群分布式都不是一台电脑就能够跑起来的,而是需要多台计算机合作运行,所以我们需要买一些服务器,而这些服务器都在云

2020-10-17 18:59:49 149 1

原创 SpringCloud(21) —— SpringCloud总结和展望

1.总结SpringCloud2.后期怎么学习框架源码设计模式新的知识探索/学习【新技术】Java版本的新特性框架底层HTTP、TCP/IP原理和源码JVM[参考书:深入理解Java虚拟机]数据结构与算法

2020-10-17 16:15:22 260 1

原创 SpringCloud(20) —— Config:远程配置实战测试

在前一篇博客中,我们分别创建了两个子model:springcould-config-server-3344和springcould-config-client-3355用来作为spring cloud config分布式配置中心的服务端和客户端,我们已经实现了通过服务端连接远程仓库,通过客户端连接服务端实现读取远程仓库中配置文件的功能但是在实际的开发中,我们应该将我们编写的服务提供者、消费者和注册中心的配置放在远程仓库,并将它们作为config的客户端去访问远程仓库中的配置文件,这样就实现了配置和编码.

2020-10-17 15:36:12 258

原创 SpringCloud(19) —— Config:服务端连接Git配置和客户端连接服务端访问远程仓库实现

在学习spring cloud的时候我们就说了,它是一个C/S架构,所以我们至少写两个服务,一个是server,一个是client1.spring cloud config 服务端实现先创建server模块:springcould-config-server-3344导入依赖<dependencies> <!--config--> <dependency> <groupId>org.springframework.c.

2020-10-17 12:57:05 342

原创 SpringCloud(18) —— Config:Git环境搭建

1.Spring Cloud Config 分布式配置1.概述1.分布式系统面临的–配置文件问题微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的微服务,由于每个微服务都需要必要的配置信息才能运行,所以一套集中式的,动态的配置管理设施是必不可少的。spring cloud提供了config Server来解决这个问题,我们每一个微服务自己带着一个application.yml,那上百个的配置文件修改起来,令人头疼!2.什么是SpringCloud

2020-10-17 09:43:03 235

原创 SpringCloud(16) —— Zuul:路由网关

目录1.什么是zuul2.zuul的功能3.入门案例4.使用zuul隐藏真正提供服务的服务提供者注册的服务的名称5.小结1.什么是zuulZull包含了对请求的路由(用来跳转的)和过滤两个最主要功能其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他服务的消息,也即以后的访问微服

2020-10-16 23:13:57 232

原创 SpringCloud(15) —— Hystrix:Dashboard流监控

目录1.什么是Hystrix Dashboard2.Hystrix Dashboard入门案例3.小结1.什么是Hystrix DashboardHystrix提供了对于微服务调用状态的监控信息,但是需要结合spring-boot-actuator模块一起使用Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command实时的请求响应时间, 请求成功率等数据,可以帮助我们快速发现系统中存

2020-10-16 16:20:22 289

原创 SpringCloud(14) —— Hystrix:服务降级

注意:上一篇博客讲的服务熔断只是Hystrix的一种作用,它还有很多作用,不要把它仅仅限制于做服务熔断,这篇博客就讲一讲通过Hystrix实现服务降级目录1.什么是服务降级2.入门案例3.小结4.对比服务熔断和服务降级1.什么是服务降级​服务降级是指当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心业务正常运作或高效运作。说白了,就是尽可能的把系统资源让给优先级高的服务​资源有限,而请求是无限的。如果在并发高..

2020-10-16 09:53:07 268

原创 SpringCloud(13) —— Hystrix:服务熔断

目录1.分布式系统面临的问题2.服务雪崩3.什么是Hystrix?4.Hystrix的作用5.服务熔断1.什么是服务熔断2.入门案例3.显式提供服务的服务器的IP4.小结1.分布式系统面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免失败!2.服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”,如果扇出的链路上某个微服务的调用响应时间过长,或者不可用,对微服务A的调用就会占

2020-10-16 00:35:34 345

原创 SpringCloud(12) —— Feign:使用接口方式调用服务

1.Feign简介Feign是声明式Web Service客户端,它让微服务之间的调用变得更简单,类似controller调用service。SpringCloud集成了Ribbon和Eureka,可以使用Feigin提供负载均衡的http客户端只需要创建一个接口,然后添加注解即可使用FeignFeign,主要是社区版,大家都习惯面向接口编程。这个是很多开发人员的规范。调用微服务访问两种方法微服务名字 【ribbon,即前面我们使用ribbon实现负载均衡的时候选中哪一个服务集群是依据注册中心

2020-10-15 21:57:52 50124 9

原创 SpringCloud(11) —— Ribbon:自定义负载均衡算法

在上一篇博客中我们测试了ribbon的默认负载均衡算法,就是轮询,但是我们还可以自定义它的负载均衡算法,代替它的默认轮询算法

2020-10-15 13:01:36 553

原创 SpringCloud(10) —— Ribbon:使用Ribbon实现负载均衡

在上一篇博客中,我们只是在消费者端集成了ribbon,但是并没有明显的感受到ribbon的作用,原因是因为我们的服务提供者只有一个,不是集群,ribbon不能进行负载均衡,所以为了测试ribbon的功能,我们需要实现服务提供者的集群现在已有的服务提供者端口为8001,扩展两个服务提供者8002和8003,但是需要注意:前面在编写服务消费者的时候虽然模块名称上写的是80端口,但是在实际使用的时候发现80端口已经被占用,所以改成使用其他端口,就改成了8002端口,这就和下面要实现的一个注册服务提供者的端口冲.

2020-10-14 21:17:40 258

原创 SpringCloud(9) —— Ribbon:负载均衡及Ribbon

目录1.Ribbon是什么?2.Ribbon的作用3. 集成Ribbon4.小结1.Ribbon是什么?Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套 客户端 负载均衡 的工具3个关键词,表明了Ribbon 是与客户端相关的,所以我们在使用它的时候需要在客户端的中使用;并且它是实现客户端负载均衡的一个工具;对于负载均衡就是对于集群技术中每个站点使用不均衡的情况,简单的解决办法可以使用轮询解决集群中的服务器均摊客户端请求,除了使用轮询我们还可以使用h

2020-10-14 17:47:03 264

空空如也

空空如也

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

TA关注的人

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