- 博客(597)
- 收藏
- 关注
转载 JavaScript函数
1.1JScontinue语句定义和用法:continue 用于跳过循环中的一个迭代,并继续执行循环中的下一个迭代。continue 与 break 语句的区别是:break 是结束整个循环体,continue是结束单次循环。但是,在执行 continue 语句时,表现出了两种不同类型的循环:在 while 循环中,会先判断条件,如果条件为 true,循环再执行一次。在for循环中,自增长表达式(如:i++)会先计算,然后再判断条件是否为true,再决定是否执行迭代。...
2021-08-23 20:21:09
2080
1
转载 020_CSS3
目录如何学习CSS什么是CSS发展史快速入门css的优势三种CSS导入方式拓展:外部样式两种写法选择器基本选择器层次选择器结构伪类选择器属性选择器美化网页元素为什么要美化网页span标签:需要重点突出的文字,使用span套起来,单独设置样式字体样式文本样式超链接伪类和阴影列表样式背景渐变盒子模型什么是盒子模型边框内外边距圆角边框阴影浮动displayfloat父级边框塌陷的问题定位相对定位-相对于自己原来的位置进行偏移绝对定位-相对于父级或浏览器进行偏移固定定位-fixedz-indexCSS3动画总结.
2021-08-22 15:21:09
567
转载 Vue.js 多选列表(Multi-Select)组件
搬运公众号早前文章多选列表 (Multi-Select) 是一种将所有选项列出,并允许用户利用 Ctrl/Shift 键进行多选的 UI 元素。这是一种常见的设计元素。有时候为了节省空间,我们会将选项折叠于 Combo Box 中。为了方便用户操作,这个组件还将添加 Select All 和 Clear All 两个按钮,允许用户快速选择或清除选择。这个 UI 元素曾被运用于 Correlation Plot App 中。注册组件注册 Multi-Select 组件,简单来说就是复制粘贴已封装好的.
2021-08-21 20:21:09
1777
转载 JavaScript对象的两类属性(数据属性与访问器属性)
对JavaScript来说,属性并非只是简单的名称和值,JavaScript用一组特征(attribute)来描述属性 (property)。第一类属性数据属性具有四个特征。value:就是属性的值。 writable:决定属性能否被赋值。 enumerable:决定for in能否枚举该属性。 configurable:决定该属性能否被删除或者改变特征值。在大多数情况下,我们只关心数据属性的值即可。第二类属性是访问器(getter/setter)属性,它也有四个特征。getter:函数或.
2021-08-21 15:21:16
715
转载 设计模式之欢迎来到设计模式世界(一)
亲爱的朋友,欢迎你来到对象村,开始走进设计模式的世界。这里的每个人都很熟练的使用设计模式,很快我和你们一起,都会学习的很好,通过设计模式,跻身上流社会。计划每一章节的学习,通过几个篇幅来完成,理论+实践的方式。书中很多地方用到了图形表示,小编尽量用图文的方式和大家互动。先用理论建立知识,再用图形象地描述巩固学习。每篇文章给出书中的思考题和大家互动,在后文给出答案。力争让没读过此书的朋友也能有个理解。小编第一次尝试书本跟读,希望大家多给意见,同大家一起进步。记得大学的时候,C++的老师在教我们面向对象的.
2021-08-20 20:21:16
114
转载 .net之设计模式
在上一篇文章里我通过具体场景总结了“.net面向对象的设计原则”,其中也多次提到一些设计模式方面的技术,可想而知,设计模式在我们的开发过程中也是必不可少的。今天我们就来简单交流下设计模式。对于设计模式的介绍呢,网上流行这么一句话“想要搞好对象,必须要熟知套路”,所以百度中说设计模式简介时“设计模式一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结”一点也没错,在开发过程中通过渗入一些设计模式,我们的设计效果又会怎么样呢?话不多说,直接进入正题吧! 一、设计模式的分类...
2021-08-20 08:20:07
1867
转载 Istio入门实战与架构原理——使用Docker Compose搭建Service Mesh
本文将介绍如何使用Docker Compose搭建Istio。Istio号称支持多种平台(不仅仅Kubernetes)。然而,官网上非基于Kubernetes的教程仿佛不是亲儿子,写得非常随便,不仅缺了一些内容,而且还有坑。本文希望能补实这些内容。我认为在学习Istio的过程中,相比于Kubernetes,使用Docker Compose部署更能深刻地理解Istio各个组件的用处以及他们的交互关系。在理解了这些后,可以在其他环境,甚至直接在虚拟机上部署Istio。当然,生产环境建议使用Kubernetes.
2021-08-19 15:21:14
622
转载 设计模式之装饰者模式(三)
欢迎大家的持续关注。上一次,我们结合第一篇推导出来的类图,到第二篇根据类图进行实际代码的编写,对装饰者模式有了一个整体的概念以及实战。不知道对你帮助如何呢?小编已经有门道了,看完接下来的一部分,你会恍然大悟,原来实际编码中你一直在用装饰者模式。真实世界的装饰者:Java I/O看到标题,是不是就很想往下看,到底是I/O中的什么呢,让你早已经拥有了装饰者模式的实践?就如书上给的描述,你第一次(还有第二次和第三次)看到这些API发出“哇”的惊叹时,放心,你不是唯一收到惊吓的人。下面,我们马上给出一个典型的.
2021-08-18 20:21:09
122
转载 年纪大了,是否该往管理方向转型?
背景很多人心里是想一直做技术的,但是担心随着年纪增加,会造成在技术方面的竞争力不足。加上迫于经验人士的压力,就在纠结要不要转管理岗。不是什么权威意见,仅仅谈谈个人看法。个人观点:做自己想做的事。优劣势技术和管理两个路线各有优劣势。用SWOT分析来展现两个维度的关系。如果有朋友对到底是走哪个路线比较纠结。可以自己列出所有的优劣势,给每一项设置一个权重。计算总体得分,定好方向就不要再纠结了。常见误区1. 管理更高大上?目前国内技术公司的趋势是技术和管理逐渐分离。一个leade...
2021-08-16 08:20:05
144
转载 关于通用框架的一些想法
前言前几天跟朋友谈起框架的事情,回顾了一下当前框架的发展,尤其是Spring Boot,已经把程序员的开发简化到了最初的一个 class 的形式了。这个也是我为什么喜欢领域驱动设计(DDD)的原因,真正回归了本源。回头看历史上的各种框架,从struts开始,到Tapestry、Wicket、SpringMVC,最后到Spring Boot,就是逐渐破坏面向对象(OO)的封装性,再慢慢回归到面向对象的历程。通用框架的一些概念我画了一个图,是应用程序的结构,貌似是Spring Cloud/Boot的结构.
2021-08-13 20:21:10
348
转载 CQRS之旅——旅程3(订单和注册限界上下文)
旅程3:订单和注册限界上下文CQRS之旅的第一站“寓言家和鳄鱼是一样的,只是名字不同” --约翰·劳森描述:订单和注册上下文有一部分职责在会议预订的过程中,在此上下文中,一个人(注册者)可以购买特定会议的座位。还可以为已购买的座位分配与会者的名称(这在第5章“准备发布V1版本”中进行了描述)。这是我们CQRS旅程的第一站,因此团队决定实现一个核心的、但自包含的系统部分——订单和注册。对与会者来说,注册过程必须尽可能地轻松。该流程必须确保业务客户能够预订到尽可能多的座位,并为他们提供灵活的,在.
2021-08-13 15:21:05
212
转载 HeadFirst设计模式(一)策略者模式
最近在看HeadFirst设计模式一书,作为一个半路出家的程序员,感觉很多东西需要学习,学习的路程中有些东西学了当时觉得理解了,但日常工作中没有使用到渐渐的自己就忘记了。----------------------上面就是写者系列的博客的原因,主要是为了巩固知识,忘记在那个博主那边看过这么一句话,知识学了后总结了才变成自己的。策略者模式----定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。当然这只是理论的东西,说实话我现在都没理解这个理论是啥,下面我用..
2021-08-10 15:21:11
408
转载 PDO封装增删改查
<?phpclass db{ public $table=null; public $pdo; public $where=null; //where 条件 public $field=null; //要查询的条件 public function __construct() { $this->pdo=new PDO("mysql:host=127.0.0.1;dbname=1611b","root","root"); } .
2021-08-09 08:20:08
133
转载 为什么大多数公司都不重视技术?
前言今年年初来了一家国内某电器大厂,本来技术面试的时候提供的offer说的是架构组岗位,主要是搭建公司平台的基础设施,不会接触业务或者离业务很远,刚开始以为很有技术含量,公司又是大厂,offer就接下来了,但是进来后才知道是业务导向型团队,因为当时面试我的技术经理离职,所以我就跟了新的领导我入职后领导就以熟悉公司为由,安排我去业务组参与了几个月的业务功能开发。所以我就在业务团队和大家打拼了几个月,我换过的公司不多,原先公司都是比较尊重技术人员,因为大家觉得开发岗位工作比较有技术含量,但是我来到这边后..
2021-08-06 08:20:11
650
转载 装饰者模式
装饰者模式能够动态地将责任附加到对象上,在扩展对象功能方面比继承更加灵活,具体来说,装饰者模式将行为委托给相应的包装对象,并添加上自己的对应逻辑来实现特定的功能。装饰者模式的UML图如下: 首先需要有被装饰的组件接口和具体组件,然后有装饰者对象,由于装饰者对象需要能够代替组件,所以要继承组件接口,并组合组件对象来完成委托任务。 下面以一个简单的快餐店为例子来介绍装饰者模式的用法。快餐店会有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱...
2021-08-02 08:20:08
120
转载 大话设计模式笔记(二十四)の解释器模式
解释器模式定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。目的如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。UML图好处容易改变和扩展文法,因为该模式使用类来表示文法规则,你可使用继承来改变或扩展该文法。也比较容易实现文法,因为定义抽象语法树中各个节点的类的实现大体类似,这些类都易于直接编写。不足解释器模式为文法中的每.
2021-07-27 20:21:13
109
转载 小白的springboot之路(十)、全局异常处理
0、前言 任何系统,我们不会傻傻的在每一个地方进行异常捕获和处理,整个系统一般我们会在一个的地方统一进行异常处理,spring boot全局异常处理很简单; 介绍前先说点题外话,我们现在开发系统,都是前后端完全分离的,后端只提供RESTfull API,禁止涉及任何界面,什么thymeleaf、JSP那些后端模板,是绝对禁止使用的,那些东西请扔垃圾箱,不要浪费大好青春去研究,那是堕落;前端则负责界面相关,常用Vue;如果公司还没前后端分离,还在thymeleaf还在前后端一起写,那你还是早做跳槽打.
2021-07-27 15:21:05
185
转载 java设计模式学习笔记——里氏替换原则
oo中的继承性的思考和说明1、继承包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些七月,但是如果子类对这些已经实现的方法任意修改,就会对整个继承体系造成破坏。2、继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵入性,程序的可移植性降低,增加对象间的耦合性,如果一个类被其他的类所继承,则当这个类需要修改时,必须考虑到所有的子类,并且父类修改后,所有涉及到子类的功能都有可能产生故障。3、问题提出:在编程中,如何正确的使.
2021-07-26 08:20:08
92
转载 微服务优化之使用gRPC做微服务的内部通信
使用gRPC做微服务的内部通信gRPC是一个由Google开源的远程服务调用框架,具有多路复用和双向流式通信的特性。大家好,在本文中将为大家介绍为什么我们应该使用gRPC代替RESTful或JSON,来开发微服务内部的通信接口。什么是gRPC?gRPC是一个高性能的、开源的、普遍通用的RPC框架。简单地说,它能够帮助我们建立透明的服务端和客户端通信系统。Google开发了GRPC并且将其开源。 通过它,一个客户端消费者服务可以像调用本地方法一样,调用另一台主机上面的服务端方法。 gRPC本质上仍然.
2021-07-23 08:20:08
176
转载 单例模式,反射破环?
饿汉式// 饿汉式单例public class Hungry { //构造器私有 private Hungry(){ } // 一上来就把这个类加载了 private final static Hungry HUNGRY = new Hungry(); public static Hungry getInstance(){ return HUNGRY; }}// 饿汉式单例public class Hu..
2021-07-18 15:21:05
103
转载 Spring Cloud Alibaba系列(五)sentinel实现服务限流降级
一、sentinel是什么sentinel的官方名称叫分布式系统的流量防卫兵。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。在Spring Cloud项目中最开始我们使用的是Hystrix,目前已停止更新了。现在Spring Cloud官方推荐的是rensilience4j。当然还有我们今天学习的sentinel。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流.
2021-07-17 08:20:08
306
1
转载 业务网关-操作手册
这里从部署运维的角度描述如何将网关系统动作起来,由于线上实战的系统是分布式,所以项目依赖的组件会相对多一些,为了简化,将配置组件(apollp)做了移除。这篇以网关最基本的分流组件做为演示,其它组件的应用不在此篇中描述。依赖组件基础组件以下组件需要提前安装好,本地跑的话建议用docker跑。1、redis用于缓存数据2、zookeeper用于在分布式系统中同步数据3、mysql用于存储网类的配置数据,比如分流规则,RPC协议转换等数据。应用组件以下组件是基于应用层面的应用.
2021-07-14 15:21:05
319
转载 Django—— 多表操作之基于对象的跨表查询(正反向查),基于双下划线的跨表查询,进阶连续跨表查询
一、基于对象的跨表查询(正向反向查询)# 跨表查询有两种方式 -基于对象的跨表查询:子查询 -基于双下划线的跨表查询:关联查询,连表查询 # 基于对象的跨表查询 -查询主键为1的书籍的出版社所在的城市 # 基于对象的跨表查询(子查询) # 一对多 # 查询主键为1的书籍的出版社所在的城市 # book=models.Book.objects.get(id=1) # 第一次查询 # # book=models..
2021-07-10 20:21:10
287
转载 【Java】log4j2-spring.xml
<?xml version="1.0" encoding="UTF-8"?><configuration status="INFO" monitorInterval="60"> <Properties> <Property name="app.name"></Property> <Property name="log.home">D:/logs/</Property> .
2021-07-05 20:21:10
589
转载 MyBatis学习02(配置解析)
配置解析核心配置文件mybatis-config.xml 系统核心配置文件MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。能配置的内容如下:configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)transact.
2021-07-04 08:20:13
118
转载 把 Spring Cloud 给拆了!详解每个组件的作用,值得收藏!
目录EurekaRibbon和FeignZuulHystrixConfig总结如下EurekaRibbon和FeignZuulHystrixConfig总结如下我们先认识一下SpringCloud的各个组件,然后知其所以然。原理讲解前,先看一个最经典的业务场景,如开发一个电商网站,要实现支付订单的功能,流程如下:创建一个订单之后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付”扣减相应的商品库存通知仓储中心,进行发...
2021-07-02 15:21:05
129
转载 精尽MyBatis源码分析 - 插件机制
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址、Mybatis-Spring 源码分析 GitHub 地址、Spring-Boot-Starter 源码分析 GitHub 地址)进行阅读MyBatis 版本:3.5.2MyBatis-Spring 版本:2.0.3MyBatis-Spring-Boot-Starter 版本:2.1.4该系列其他文档请查看:《精尽 MyBatis 源码分析 - 文章..
2021-07-02 08:20:05
150
转载 Mybatis源码阅读(二)
本文主要介绍Java中,不使用XML和使用XML构建SqlSessionFactory,通过SqlSessionFactory 中获取SqlSession的方法,使用SqlsessionManager管理Sqlsession复用等等..以及相关的示例代码SqlSessionSqlSessions 是由 SqlSessionFactory 实例创建的。SqlSessionFactory 对象包含创建 SqlSession 实例的各种方法。而 SqlSessionFactory 本身是由 SqlSess.
2021-07-01 15:21:08
217
转载 Python爬虫必学知识点:正则表达式讲解
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。以下文章一级AI入门学习 ,作者小伍哥刚接触Python的新手、小白,可以复制下面的链接去免费观看Python的基础入门教学视频https://v.douyu.com/author/y6AZ4jn9jwKW前言正则表达式(Regular Expression),就是具有一定规则的表达式。通过正则表达式引擎,将这些规则转换为正则表达式对象,然后再去文本中搜索能够与之匹配的字符串。正则...
2021-06-30 20:21:12
269
转载 25 代码块
25 代码块1.定义用"{}"括起来的一段代码2.分类a.普通代码块//直接在方法或语句中定义的代码块public class Test { public static void main(String[] args) { { int x=30; System.out.println("普通代码块--x="+x); } }}//第4行到第7行即普通代码块b.构造块//直接写在类中的代码块.
2021-06-29 20:21:19
80
转载 Python爬取新笔趣阁小说
Python爬取小说,并保存到TXT文件中我写的这篇文章,是利用Python爬取小说编写的程序,这是我学习Python爬虫当中自己独立写的第一个程序,中途也遇到了一些困难,但是最后迎刃而解了。这个程序非常的简单,程序的大概就是先获取网页的源代码,然后在网页的源代码中提取每个章节的url,获取之后,在通过每个url去获取文章的内容,在进行提取内容,然后就是保存到本地,一TXT的文件类型保存。大概是这样1:获取网页源代码2:获取每章的url3:获取每章的内容4:下载保存文件中1、首先就是先安装...
2021-06-28 20:21:13
1440
1
转载 发现了一个关于 gin 1.3.0 框架的 bug
gin 1.3.0 框架 http 响应数据错乱问题排查问题概述客户端同时发起多个http请求,gin接受到请求后,其中一个接口响应内容为空,另外一个接口响应内容包含接口1,接口2的响应内容,导致响应数据错乱(偶现问题)图1红框标注部分为正常请求响应图1蓝框标注部分为异常请求响应(可以看到编号2531的响应数据只有一个状态码信息,并没有具体的返回内容)图2 可以看到编号2533的响应数据包含两组object对象信息,其中第一条object信息应该是2531的响应数据图1:图2:问题分析因.
2021-06-26 08:20:07
483
转载 Java 虚拟机垃圾收集机制详解
本文摘自深入理解 Java 虚拟机第三版垃圾收集发生的区域之前我们介绍过 Java 内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈三个区域随线程共存亡。栈中的每一个栈帧分配多少内存基本上在类结构确定下来时就已知,因此这几个区域的内存分配和回收都具有确定性,不需要考虑如何回收的问题,当方法结束或线程结束,内存自然也跟着回收了而 Java 堆和方法区这两个区域则有显著的不确定性,只有在程序运行时我们才能知道程序究竟创建了哪些对象,创建了多少对象,所以这部分内存的分配和回收是动态的,垃..
2021-06-25 20:21:10
117
转载 手写Json解析器学习心得
一. 介绍一周前,老同学阿立给我转了一篇知乎回答,答主说检验一门语言是否掌握的标准是实现一个Json解析器,某大厂过去的Python入门培训作业之一就是五天时间实现一个Json解析器。知乎回答---链接该回答对应的问题提及了一个开源的“从零开始的JSON库教程”,恰好我刚开始学习go语言,对Json的理解也仅停留在一种端到端之间交互的数据格式,于是便跟着教程写了一遍,受益良多,至少对我这种编程经验少的人来说十分有帮助,以下是我的学习心得。从零开始的JSON库教程地址---链接自己的实现---链..
2021-06-23 20:21:10
415
转载 Python制作提取指定站点的空气质量数据监控脚本
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。以下文章来源于Python干货铺子 ,作者INUYASHA123前言对于我们下载的多数数据集,我们可能需要提取其中指定的来使用,比如这个空气质量数据集,全国那么多站点,我只想要我研究的区域的站点数据,然而,当我打开文件夹的时候,失望了,因为这些数据都是一个一个的csv文件。有一个方法就是excel可以用脚本把这些单独的csv合并为一个csv,但可能伴随的问题就是数据超出excel的存储上限,so..
2021-06-20 20:21:10
157
转载 竟然有人说学Java并发编程只是为了应付面试?怪不得你只能拿10K!
前言招聘黄金季,大厂每月都要吸纳几十名 Java 开发,对普通人来说,那可是几十张通往财务自由的船票。经验要求一般 3 年起,但很多 3 年经验的 Java,却在一面就挂得很惨。Java 3 年的“坎”,究竟是什么呢?耐心看完,一定对你有帮助。技术岗,不是靠工作年限吃饭的岗位。3年经验是个幌子,我整理过一份详细的大厂岗位需求表,很多 20K 以上的 Java 岗,基本都要求具备高并发分布式的相关经验。老练的面试官知道,对于一个 Java 程序员而言,如果对并发编程有全面而深入的了解,那说明技术功底足够.
2021-06-19 08:20:04
115
转载 Python reversed函数及用法
reserved() 是 Pyton 内置函数之一,其功能是对于给定的序列(包括列表、元组、字符串以及 range(n) 区间),该函数可以返回一个逆序序列的迭代器(用于遍历该逆序序列)。reserved() 函数的语法格式如下:reversed(seq)其中,seq 可以是列表,元素,字符串以及 range() 生成的区间列表。下面程序演示了 reversed() 函数的基本用法:#将列表进行逆序print([x for x in reversed([1,2,3,4,5])])#将元.
2021-06-14 15:21:04
2527
转载 最近最火的《大秦赋》,用Python抓取相关数据,发现了秘密
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。以下文章来源于数据分析与统计学之美 ,作者黄伟呢Python 数据分析入门案例讲解https://www.bilibili.com/video/BV18f4y1i7q9/前言最近,最火的电视剧莫过于《大秦赋》了,自12月1日开播后,收获了不错的口碑。然而随着电视剧的跟新,该剧在网上引起了激烈的讨论,不仅口碑急剧下滑,颇有高开低走的趋势,同时该剧的评分也由最初的8.9分,下降到了现在的6.5..
2021-06-12 15:21:04
143
转载 超详细解析微服务架构,写得太好了!
作者:古霜卡比www.cnblogs.com/skabyy/p/11396571.html本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节。要理解微服务,首先要先理解不是微服务的那些。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序。从单体应用到微服务并不是一蹴而就的,这是一个逐渐演变的过程。本文将以一个网上超市应用为例来说明这一过程。最初的需求几年前..
2021-06-12 08:20:04
515
转载 nonlocal关键字
1、nonlocal的作用是什么?是基于python的什么特点? 通过nonlocal关键字,可以使内层的函数直接使用外层函数中定义的变量。 在Python中,函数的定义可以嵌套,即在一个函数的函数体中可以包含另一个函数的定义。2、Demo不使用nonlocal关键字案例def outer(): #定义函数outer x=10 #定义局部变量x并赋为10 def inner(): #在outer函数中定义嵌套函数inner x=20 #将x赋为20 print(.
2021-06-11 08:20:04
1043
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人