自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 CSS基本语法?

CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明:选择器通常是您需要改变样式的 HTML 元素。每条声明由一个属性和一个值组成。属性(property)是您希望设置的样式属性(style attribute)。每个属性有一个值。属性和值被冒号分开。1.CSS 实例CSS声明总是以分号(;)结束,声明组以大括号({})括起来: p { color:red; text-align:center; }2.CSS 注释注释是用来解释你..

2021-08-23 15:21:07 691

转载 01-mac flutter环境搭建

mac flutter环境搭建安装国内镜像export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn下载flutter下载flutterflutter官网下载地址flutter github下载地址进入你想放置flutter的目录cd ~/development解压下载文件,记住改为你自己下载的版本号,按Y确认即可unzip.

2021-08-22 08:20:10 784

转载 Angular框架

一、如何安装Angular  在文件夹中打开cmd,输入nmp init创建一个package.json。这个可以一路回车跳过(如果没有特别要注明)。nmp是前台的包,用于管理后台。成功创建package.json后再输入nmp install bower -g,bower推荐安装到全局,这里bower是需要Git的支持,所以需要安装一个Git软件,然后在配置一下计算机的环境变量,将Git的路径复制到PATH变量的后面(不配置有时候会出错)。然后在cmd中输入bower install angular .

2021-08-21 08:20:04 912

转载 行为型模式:备忘录模式

十一大行为型模式之九:备忘录模式。简介姓名 :备忘录模式英文名 :Memento Pattern价值观 :凡事要有备份个人介绍 :Without violating encapsulation,capture and externalize an object's internal state so that the object can be restored to this state later.在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将...

2021-08-20 15:21:15 351

转载 对象关系之聚合关系

概念背景现实世界中的实体被看成对象,对象之间可能存在着联系或关系,基于对象之间可能存在的关系,引入了对象关系的概念。对象关系的定义对象之间存在的关系称为对象关系。对象关系的分类根据对象之间存在的关系的性质,对象关系分为1)关联关系2)聚合关系3)继承关系其中聚合关系又可分为1)组合关系2)非组合关系下面较详细地介绍一下聚合关系及其来源。聚合关系什么是聚合?什么是组合?什么是非组合?首先来说明它们的概念。聚合是将几个对象收集在一起生成一个新对象的行为,其特性是聚合的内部对..

2021-08-20 08:20:04 1409

转载 为什么要前后端分离?各有什么优缺点?

一、前端前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。核心思想是前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互。在互联网架构中,名词解释:Web服务器:一般指像nginx,apac.

2021-08-13 08:20:05 712

转载 netty框架概述

概述最近在学习netty的相关知识,也在看netty的源码,光看不练假把式,所以也正好利用自己学习的机会写几篇netty的分析文章,主要还是一些源码解析的文章,一方面有输出会促使自己在看源码,学习原理的过程中更系统,更深入,同时也能加强记忆,巩固对知识的理解。关于netty的简介和应用我就不做介绍了,在网络上都能搜索到相关的资料。netty是一个性能非常优秀的网络框架,采用reactor模式,使用非常高效的基于事件驱动的io线程模型,即经典的多路复用的io模式。关于io线程模型其实又是一个很大的话题.

2021-08-11 15:21:14 261

转载 Spring Cloud Alibaba | Nacos配置管理

Spring Cloud Alibaba | Nacos配置管理Springboot: 2.1.6.RELEASESpringCloud: Greenwich.SR1如无特殊说明,本系列文章全采用以上版本目录Spring Cloud Alibaba | Nacos配置管理1. pom.xml 项目依赖2. 在 bootstrap.properties 中配置 Nacos server 的地址和应用名3. 通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动.

2021-08-09 08:20:05 143

转载 做一个不复制粘贴的程序员[1]: 使用模板方法模式(1)- 分页查询实例

对于重复的代码,如果是重复的字符串,我们会想到提出一个变量。如果是重复的代码块,我们会想到提取出一个方法。但如果这重复的代码块中有一处或几处是会变化的,那么就没那么容易提取出一个方法。说起来有点抽象,下面看一个例子。一、分页查询写过CRUD的同学肯定写过很多分页查询,分页查询的主要步骤是先校验前端传过来的查询条件(包括哪一页以及每页显示记录数等),如果不合法则设置默认值。然后根据条件查询符合条件的总记录数,以及查询符合条件的一页记录,最后经过处理返回给前端。这一段话中会变的部分,也就是每个分页查询.

2021-08-07 20:21:13 142

转载 设计模式之工厂模式(上篇)

为了面向接口编程,而不是面向实现编程,所以此时我么就不能再直接使用new了,因为当看到“new”时,我们就会想到“具体”。下面来看一个例子,假如你有一个披萨店,你的代码可能这么写: 1 Pizza orderPizza(){ 2 Pizza pizza = new Pizza(); 3 4 pizza.prepare(); 5 pizza.bake(); 6 pizza.cut(); 7 .

2021-08-06 20:21:10 109

转载 创建型设计模式 -- 建造者模式

一、小案例分析1、功能需求:  现需要建房子,建房流程:挖地基、砌墙、封顶。对于不同种类的房子(高楼,别墅),流程虽然一样,但是具体功能实现不同。如何实现建房子?2、小菜鸡的答案:(1)定义一个抽象接口,并定义三个抽象方法(挖地基、砌墙、封顶)。(2)对于不同种类的房子,实现该接口,并重写相关方法即可。(3)代码实现:package builder.pattern;/** * 测试类 * */public class BuilderDemo { public static .

2021-08-06 08:20:05 148

转载 设计模式

  没有什么设计模式是完美无缺的,一个设计模式就是解决一类的问题,通常设计模式在解决一类问题的同时,还会带来别的问题,我们设计者要做的事,就是扬长避短。1、创建型设计模式,5个===》关注对象的创建2、结构型设计模式,7个===》关注类与类之间的关系3、行为设计模式,11个====》关注对象和行为的分离  设计模式六大原则:单一职责、里氏替换原则、依赖倒置原则、迪米特法则、接口隔离原则、开闭原则。这些只能叫原则,是建议,没有实际的招数。  面向对象23中设计模式:    面向对象语言开发过程中.

2021-08-03 15:21:05 92

转载 SSH框架之Spring第三篇

1.1 AOP概述 1.1.1 什么是AOP? AOP : 全称是Aspect Oriented Progamming既 : 面向切面编程.通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. 简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强. 1.1.2 AOP的作用及优势 作用 : ..

2021-08-02 20:21:10 138

转载 QQ是怎样创造出来的?——解密好友系统的设计

本篇介绍笔者接触的第一个后台系统,从自身见闻出发,因此涉及的内容相对比较基础,后台大牛请自觉略过。什么是好友系统?简单的说,好友系统是维护用户好友关系的系统。我们最熟悉的好友系统案例当属QQ,实际上QQ是一款即时通讯工具,凭着好友系统沉淀了海量的好友关系链,从而铸就了一个坚不可摧的商业帝国。好友系统的重要性可见一斑。熟悉互联网产品的人都知道,当产品有了一定的用户量,往往会开发一个好友系统。其主要目的是增加用户粘性(有了好友就会常来)或者增加社区活跃度(有了好友就会多交流)。而我的后台开发生涯就是..

2021-07-29 08:20:05 282

转载 ObjectPool 对象池设计模式

Micosoft.Extension.ObjectPool源码架构、模式分析:三大基本对象:ObjectPool抽象类ObjectPoolProvider抽象类IPooledObjectPolicy接口ObjectPool的默认实现是DefaultPool,对象池的创建由ObjectPoolProvider抽象类的默认实现DefaultObjectPoolProvider类实现。public class DefaultObjectPoolProvider : ObjectPoolProvid.

2021-07-27 20:21:10 187

转载 大白话抽象工厂模式(Abstract Factory Pattern)

实例分析大白话工厂方法模式(Factory Method)一文中,我们讲解了日产4S店工厂规模的扩大,创建了针对不同车型的工厂,减少了工厂的工作内容,提高了效率。下面我们继续以4S店的故事讨论抽象工厂模式。为了满足各个阶层的客户,日产公司推出了豪华系列品牌英菲尼迪,而且为了吸引客户购买,购车赠送行车记录仪,购买日产汽车赠送日产行车记录仪。购买英菲尼迪汽车赠送英菲尼迪行车记录仪。通过上面的描述我们引出产品族和等级结构的定义。产品族:即来自一个家族,比如英菲尼迪汽车和英菲尼迪行车记录仪都来自英菲尼迪家.

2021-07-26 15:21:05 150

转载 OO第二单元--多线程电梯

一、设计策略(1)单电梯:  a、线程分工:    elevator、request两个线程。      elevator线程主要负责乘客的接送和进出。      request线程是接收乘客信息。    control是缓冲器,用来保存elevator和request两个线程共享的乘客队列。  b、调度策略:    以电梯当前楼层和运行状态为基准,如果电梯是上行的,并且高于当前楼层还有乘客要进出就上行,否则判断是否低于该楼层有需求,如果有就下行。反之亦然,若是没有需求,则令电梯停止。对于.

2021-07-20 08:20:05 242

转载 特征服务典型场景-离线与实时统计

例如有这样一个需求:业务方希望获取司机实时更新的累计完单量,需保证收到完单事件后秒级更新。由于滴滴订单量很大,单个司机的完单量从几单到几万单不等,直接查询底层存储如MySQL、ElasticSearch等存储,会对底层存储造成很大查询压力,并且延时也较高,在高并发等情况下容易出现各种问题。在特征服务这边采用批处理+流处理这样的Lambda架构来实现这类需求,整个的数据流如下:可以看到这是一个典型的Lambda架构,不了解的可以参考维基百科:Lambda architecture在统计特征汇总历史完单.

2021-07-17 20:21:10 318

转载 C#设计模式-外观模式(Facade Pattern)

引言在软件测试中,一般都是在功能测试稳定的情况下再进行UI自动化测试、或者进行性能测试。如果一个一个进行太麻烦,此时可以使用对外提供一个简单接口,通过这个接口可以访问内部一群接口。例如进行UI自动化测试, 那么执行功能测试后再执行自动化测试。在软件开发过程中,将对外提供了一个统一的接口,用来访问子系统中的一群接口的模式称为外观模式。这种模式可以应对客户端程序与复杂系统的内部子系统进行耦合而导致客户端程序随着子系统的变化而变化,将复杂系统的内部子系统与客户端之间的依赖解耦。概念外观模式(Facade .

2021-07-09 08:20:05 201

转载 软件架构C4模型介绍

软件架构C4模型介绍 “C4 模型”: 代表上下文(Context)、容器(Container)、组件(Component)和代码(Code)——一系列分层的图表,可以用这些图表来描述不同缩放级别的软件架构,每种图表都适用于不同的受众。为代码创建地图,首先需要一组通用的抽象来创建一种无处不在的语言,用来描述软件系统的静态结构。C4 模型使用容器(应用程序、数据存储、微服务等)、组件和代码来描述一个软件系统的静态结构。它还考虑到使用软件系统的人。示例第1 层是系统上下文图,它显示了正在构建的软件系统,以及系.

2021-07-08 08:20:05 1208

转载 Bridge桥接模式

>>返回《C#常用设计模式》1. 简介2. 示例3. 优缺点3.1. 优点3.2. 缺点3.3. 适用的环境1. 简介定义将抽象部分与它的实现部分解耦,使得两者都能够独立的变化蜡笔与毛笔蜡笔有不同的大小和颜色,需要用哪个笔就用哪个笔毛笔分为不同大小,却只有一个调色盘,里面装着不同的颜料,我们需要什么颜色,就用对应大小的毛笔去蘸对应的颜料二者相比,我倒是觉得还是蜡笔方便,但是,试想一下,如果我们笔的大小变化有很多,颜色我也要越多越好,以应对变化毛笔只要提供对应大.

2021-07-07 08:20:05 97

转载 从框架源码学设计模式-模板方法模式

一、模板方法模式介绍定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。二、结构和代码package com.wjh.Mytest.templateMethod;public class Parent { protected void template(){ start(); commonParts(); end(); } public void start(){ } private .

2021-07-06 15:21:11 102

转载 Intellij IDEA就这样配置,快到飞起!

目录1.设置maven2.IDEA 设置代码行宽度3.IDEA 提示不区分大小写4.IntelliJ强制更新Maven Dependencies5.idea的环境配置默认保存位置6.隐藏不想看到的文件或者文件夹(类似eclipse的filter功能)7.修改为Eclipse快捷键8.修改默认设置--default setting9.修改智能提示快捷键10.查找快捷键冲突问题处理11.显示行号12.代码智能提示,忽略大小写13.用*标识编辑过的文件14.关闭自动代码提示15.常.

2021-07-03 20:21:16 716

转载 flask_migrate数据库迁移遇到的问题

本人使用的python和pip版本都是3.6,以下例子基于此版本。本人编写的manager.py文件# coding:utf-8from flask_script import Managerfrom flask_migrate import Migrate, MigrateCommandfrom ihome import create_app, dbapp = create_app('development')manager = Manager(app)# 集成数据库的迁移.

2021-07-03 15:21:11 252

转载 DeferredResult异步处理spring mvc Demo

一、概述spring mvc同步接口在请求处理过程中一直处于阻塞状态,而异步接口可以启用后台线程去处理耗时任务。简单来说适用场景:1.高并发;2.高IO耗时操作。二、DemoSpring MVC3.2之后支持异步请求,能够在controller中返回一个Callable或者DeferredResult。1.Callable实例@Controllerpublic class CallableController { @RequestMapping(path = "/async1", .

2021-07-01 15:21:05 207

转载 针对Java面试来学习JAVA内容,让你事半功倍

最近我在网上看到不少在校的同学在学java,有不少在校生同学来提问,java该怎么学。 对于那些已经工作的同学,哪怕才工作不久,毕竟也能从项目实践里总结和探索java的学习途径和相关方法。但在校生同学由于没机会接触实际项目,在学习内容、进阶途径和学成标准这些方面都是两眼一抹黑,而大学里的内容可能偏重于理论,讲述的技术往往也和软件公司里常用的技术不匹配。 这就导致了很多上心的在校生,虽然很努力,但到毕业时,才发现自己起早贪黑学成的技能并不能帮他们找到工作。在本文里,就将结合我面试实习...

2021-06-29 20:21:10 193

转载 让同事小姐姐都喜欢的IDEA主题!

介绍IDEA,全称 IntelliJ IDEA ,是 Java 语言的集成开发环境, IDEA 在业界被公认为是最好的 java 开发工具之一,尤其在智能 代码助手、代码自动提示、重构、 J2EE支持、 Ant 、 JUnit 、 CVS 整合、代码审查、创新的GUI 设计等方面的功能可以说是超常的。IDEA的官网下载地址:IDEA下载地址:https://www.jetbrains.com/idea/download/平时开发中由于频繁用眼的原因,导致许多开发人员视力下降,主题插件虽然..

2021-06-29 15:21:09 315

转载 frida对于map对象的处理,提取其中的key和values

1.直接上代码自己领悟Java.perform(function () { var xx = Java.use("xxx"); //其中a为方法名,overload为重加载 ,"android.content.Context", "java.util.Map"为方法入参的数据类型 xxx.b.overload('java.util.Map').implementation = function (args1) { var result = ""; .

2021-06-27 15:21:11 1836

转载 Python爬虫:输入公司名称,爬取企查查网站中的公司信息

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。以下文章来源于Python爬虫数据分析挖掘 ,作者:李运辰根据输入的公司名称来爬取企查查网站中公司的详细信息1、获取headers2、登录成功后,可根据输入的公司名称进行查询操作,得到所需要的内容。3、将获取到的文本进行文本特殊化处理,并将其汇总成一个dataframe,方便后面保存为csv4、输入公司名称5、最后执行此代码,查询companys列表中所有公司名称的详细信息并保存为..

2021-06-23 08:20:05 27933 12

转载 Docker 命令自动补全?要的

前言不知道这个小伙伴有多久没用过 Docker 了, 突然对我说 Docker 命令怎么发生变化了docker run ...#变成了docker container run ...他说,本来对 Docker 命令就不熟悉,这下感觉更加混乱了。其实个人看来,这么变化还使得命令看着更加规整当在命令行直接输入 docker 然后回车:从图中可以看出,Docker 将命令结构化的划分了两大类,Management Commands 和 Commands,其实前者就是一级命令,后者就是子命令 (.

2021-06-22 15:21:08 303

转载 10 动态SQL

10 动态SQL介绍什么是动态SQL?动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句。官网描述:MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强.

2021-06-20 08:20:08 112

转载 JAVA线上故障排查套路

线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jmap伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用jstac.

2021-06-14 20:21:09 95

转载 如何在Python中过滤字符串列表

Python使用列表数据类型在顺序索引中存储多个数据。它的工作方式类似于其他编程语言的数字数组。filter()方法是Python的一种非常有用的方法。可以使用filter()方法从Python中的任何字符串、列表或字典中过滤一个或多个数值。它根据任何特定条件过滤数据。当条件返回true时,它将存储数据,而返回false时将丢弃数据。本文通过使用不同的示例展示了如何在Python中过滤列表中的字符串数据。您必须使用Python 3+来测试本文的示例。使用另一个列表过滤字符串列表本示例说明了如何在不使用.

2021-06-11 15:21:04 3948

转载 maven~多个plugin相同phase的执行顺序

对于maven进行项目构建时,我们会使用到插件,对构建过程进行一些控制,加工,加密,重写,依赖打包等工作,一般我们打包时会把phase定为package,意思是说,当进行package动作后,处理你的插件。多个相同phase的顺序当我们有多个plugin,并且相同phase时,有时需要考虑到顺序问题,因为你的plugin可能会有某个其它plugin的结果的依赖,所以我们需要控制<plugins> <plugin> <artifactId>maven-sh.

2021-06-09 20:21:09 710

转载 Java基础之:List——ArrayList &amp; Vector

Java基础之:List——ArrayList & VectorArrayList简单介绍ArrayList实现了List接口,底层是一个数组,并实现了可变的功能。底层属性(transient Object[] elementData;)在序列化时,忽略该属性。ArrayList实现了List接口,所以它可以允许出现重复值,也可以使用List中的所有方法。ArrayList与Vector基本相同,ArrayList是线程不安全的,但比Vector效率更高。ArrayLis...

2021-06-07 15:21:04 76

转载 新手如何自学一个领域?这里有一份全指南

原创LachelL先生说以前写过不少跟学习相关的文章,但大都是集中于某个点,欠缺系统性。今天,我想通过这篇详细的文章,把「学习」这个问题,简单梳理一下。当然,这是一个巨大的话题,难免挂一漏万。以后有机会,再慢慢补充,形成一整个关于学习的系列。希望能够帮到你。1. 框架不少读者朋友问过我「刚刚入门一个领域,什么都不懂,怎么学?」我的回答永远都是一样的:一定要先从搭框架开始。什么叫搭框架呢?简而言之,就是给你的大脑一个铺垫,让它准备好,告诉它:在未来...

2021-06-04 20:21:18 104

转载 XINDOO的2020总结

对于大多数人来说,2020年啥也没干,就光见证历史了。前一段时间华盛顿邮报向读者征集如何描述2020年,一个九岁小孩拔得头筹。 过马路前你左右都看了,结果被潜水艇给撞了。 一句简单的调侃却道出了这一年的魔幻。记得武汉封城那天晚上,我正好在回家的火车上,窗外车轮撞击铁轨声音吵得人无法入眠。当我打开微博看到武汉封城的通知,才意识到问题的严峻性,那一刻我隐约感觉到今年注定是不平凡的一年。作为一个互联网宅男,我的2020受疫情影响很小,毕竟闭门不出是肥宅的日常。但我深知2020波澜不惊的我,要感谢很多人无畏.

2021-05-30 20:21:15 247

转载 你是如何保证 ,Redis 缓存与数据库双写一致性的?

在做系统优化时,想到了将数据进行分级存储的思路。因为在系统中会存在一些数据,有些数据的实时性要求不高,比如一些配置信息。基本上配置了很久才会变一次。而有一些数据实时性要求非常高,比如订单和流水的数据。所以这里根据数据要求实时性不同将数据分为三级。第1级:订单数据和支付流水数据;这两块数据对实时性和精确性要求很高,所以不添加任何缓存,读写操作将直接操作数据库。第2级:用户相关数据;这些数据和用户相关,具有读多写少的特征,所以我们使用redis进行缓存。第3级:支付配置信息;这些数据和用户无..

2021-05-24 20:21:09 77

转载 [labuladong算法小抄]如何k个一组反转链表

摘自labuladong算法小抄,使用go语言重新描述之前的文章「递归反转链表的一部分」讲了如何递归地反转一部分链表,有读者就问如何迭代地反转链表,这篇文章解决的问题也需要反转链表的函数,我们不妨就用迭代方式来解决。本文要解决「K 个一组反转链表」,不难理解:这个问题经常在面经中看到,而且 LeetCode 上难度是 Hard,它真的有那么难吗?对于基本数据结构的算法问题其实都不难,只要结合特点一点点拆解分析,一般都没啥难点。下面我们就来拆解一下这个问题。一、分析问题首先,前文学习数据结..

2021-05-24 15:21:04 106

转载 PMP基本概念

商业文件:商业论证和效益管理计划,可以找到关于项目目标以及项目对业务目标的贡献的相关信息商业论证:经批准的商业论证或类似文件是最常用语指定项目章程的商业文件效益成本分析:是项目启动时考虑项目是否值得做的分析方法效益管理计划:项目效益管理计划描述了项目实现效益的方式和时间,以及应制定的效益衡量机制。项目效益指为发起组织和项目预期受益方创造价值的行动、行为、产品、服务或成果的结果。项目生命周期早期应确定目标效益,并据此制定效益管理计划。它描述了效益的关键要素,可能包括(但不限于)记录以下内容:.

2021-05-22 15:21:08 586

空空如也

空空如也

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

TA关注的人

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