- 博客(46)
- 收藏
- 关注
转载 前端网页技术 Vue
VueVue概念同类产品JavaScript在1995年由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。近年来发展非常迅速,标准也在不断完善已经达到ES6时代。ECMAScript 6.0(简称 ES6)是JavaScript语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标是让JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言,洗白其一直被"鄙视"的脚本语言的前身。随着js的强大,三大巨头横空推出,形成鼎足之势
2021-08-12 18:56:42
505
转载 前端网页技术JavaScript
静态网页和动态网页动态网页我们有了html超文本标记语言实现了网站页面展现,展现文字、表格、图片、超链接等,有了css样式表实现了页面的美化,这些技术实现了静态网页。日常展现是已经足够了,但是如果我们要做个注册功能呢?如论坛,我们注册个论坛来发文章,聊天。这就带来一个问题,信息如何根据不同的使用者,展现不同的内容呢?再如我注册登录和你注册登录,我们在网站上显示的登录名称就不同。这html+css就无能为力了,它们无法实现,那谁能办到呢?这时javascript就派上用场了。它能实现浏览器用户和后台服
2021-08-10 20:15:00
530
转载 前端网页技术CSS
CSS技术什么是CSSCSS全称叫做层叠样式表stylesheet,是用来修饰HTML网页的一门技术,增强网页的展示能力。主要是使用CSS属性来实现,最终可以将css代码和HTML网页代码进行分离,也可以提高css代码的复用性。CSS的用法需求::将单元格内文字居中显示<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>cs...
2021-08-10 20:07:56
226
转载 前端网页技术HTML
前端技术:学习方法前端要怎么学?前端位于整个项目首要要开发的内容,直接和用户打交道,实现页面的展现和交互功能,所以在分类上俗称为前端。随着软件技术的日趋成熟,前端内容也呈现爆炸式的增长,和革命性的变革,前端借鉴后端的发展经验,也开始应用分层体系,也开始术有专攻,解决一个专项的问题,也开始变得庞大和臃肿。从简单单一功能向框架过渡。今天的前端技术已经变得不简单,不亚于后端开发,甚至难度超越了后端开发。但从整体来看(前端占软件开发总量的百分之十左右,地位可见一斑);从技术的含金量来看(如:业务功能是核心
2021-08-10 20:05:15
668
转载 数据库从入门到精通03
事务 transaction什么是事务数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。简单的说:事务就是将一堆的SQL语句(通常是增删改操作)绑定在一起执行,要么都执行成功,要么都执行失败,即都执行成功才算成功,否则就会恢复到这堆SQL执行之前的状态。下面以银行转账为例,A转100块到B的账户,这至少需要两条SQL语句:给A的账户减去100元;update 账户表 set money=money**-100
2021-08-10 19:59:14
213
转载 数据库从入门到精通02
条件查询distinct使用distinct关键字,去除重复的记录行SELECT loc FROM dept;SELECT DISTINCT loc FROM dept;where注意:where中不能使用列别名!!select * from empselect * from emp where 1=1 --类似没条件select * from emp where 1=0 --条件不成立select * from emp where empno=100 --唯一条件sel
2021-08-10 19:39:13
90
转载 数据库从入门到精通01
数据库应用概念什么是数据库简而言之,就是存储数据,管理数据的仓库。常见的数据库分为:关系型数据库, Oracle、MySQL、SQLServer、Access非关系型数据库, MongoDB、Redis、Solr、ElasticSearch、Hive、HBase关系型和非关系型早期发展的数据库建立在数据的紧密关系基础之上(如:父子关系、师生关系),我们称其为关系型数据库,也称为传统数据库;现今数据库建立在数据的松散关系基础之上(如:中国人和美国人、中国人和印度人、视频、音频),我们称其
2021-08-10 19:33:28
139
转载 29 初识JAVA内部类
1 内部类概述如果一个类存在的意义就是为指定的另一个类,可以把这个类放入另一个类的内部。就是把类定义在类的内部的情况就可以形成内部类的形式。A类中又定义了B类,B类就是内部类,B类可以当做A类的一个成员看待:2 特点1) 内部类可以直接访问外部类中的成员,包括私有成员2) 外部类要访问内部类的成员,必须要建立内部类的对象3) 在成员位置的内部类是成员内部类4) 在局部位置的内部类是局部内部类3 练习 : 内部类入门案例创建包: cn.tedu.innerclass创建类: Test
2021-08-09 08:58:52
82
转载 28 反射学习
1 什么是反射?Reflection(反射) 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,也有称作“自省”。反射非常强大,它甚至能直接操作程序的私有属性。我们前面学习都有一个概念,被private封装的资源只能类内部访问,外部是不行的,但这个规定被反射赤裸裸的打破了。反射就像一面镜子,它可以在运行时获取一个类的所有信息,可以获取到任何定义的信息(包括成员变量,成员方法,构造器等),并且可以操纵类的字段、方法、构造器等部分。2 为什么需要反射?
2021-08-09 08:56:30
115
转载 27 注解与自定义注解
1 注解注解很厉害,它可以增强我们的java代码,同时利用反射技术可以扩充实现很多功能。它们被广泛应用于三大框架底层。传统我们通过xml文本文件声明方式(如下图,但是XML比较繁琐且不易检查),而现在最主流的开发都是基于注解方式,代码量少,框架可以根据注解去自动生成很多代码,从而减少代码量,程序更易读。例如最火爆的SpringBoot就完全基于注解技术实现。注解设计非常精巧,初学时觉得很另类甚至多余,甚至垃圾。有了java代码干嘛还要有@注解呢?但熟练之后你会赞叹,它竟然可以超越java代码的功能,
2021-08-09 08:54:20
95
转载 26 设计模式之单例设计模式
1 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。JAVA一共有23种设计模式,我们今天首先来学其中一种:单例设计模式2 单例设计模式单例模式可以说是大多数开发人员在实际中使用最多的,常见的Spring默认创建的bean就是单例模式的。单例模式有很多好处,比如可节约系统内存空间,控制资源的使用。其中单
2021-08-09 08:53:03
146
转载 25 同步锁-线程安全问题解决方案
1 同步锁1.1 前言经过前面多线程编程的学习,我们遇到了线程安全的相关问题,比如多线程售票情景下的超卖/重卖现象.上节笔记点这里-进程与线程笔记我们如何判断程序有没有可能出现线程安全问题,主要有以下三个条件:在多线程程序中 + 有共享数据 + 多条语句操作共享数据多线程的场景和共享数据的条件是改变不了的(就像4个窗口一起卖100张票,这个是业务)所以思路可以从第3点"多条语句操作共享数据"入手,既然是在这多条语句操作数据过程中出现了问题那我们可以把有可能出现问题的代码都包裹起来,一次只
2021-08-09 08:51:09
289
转载 24 进程与线程
进程与线程1 进程1.1 进程的概念进程就是正在运行的程序,它代表了程序所占用的内存区域1.2 进程的特点独立性进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间,在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间动态性进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合,程序加入了时间的概念以后,称为进程,具有自己的生命周期和各种不同的状态,这些概念都是程序所不具备的.并发性多个进程可以在
2021-08-09 08:48:44
336
转载 23 Set HashSet Map HashMap
1 Map接口1.1 概述Java.util接口Map<K,V>类型参数 : K - 表示此映射所维护的键 V – 表示此映射所维护的对应的值也叫做哈希表、散列表. 常用于键值对结构的数据.其中键不能重复,值可以重复1.2 特点Map可以根据键来提取对应的值Map的键不允许重复,如果重复,对应的值会被覆盖Map存放的都是无序的数据Map的初始容量是16,默认的加载因子是0.75TIPS:源码摘抄:static final int DEFAULT_INITIAL_CAP
2021-08-09 08:42:35
173
转载 22 泛型 Collection List Set
集合我们接下来要学习的内容是Java基础中一个很重要的部分:集合1 Collection接口1.1 集合前言Java语言的java.util包中提供了一些集合类,这些集合类又称之为容器提到容器不难想到数组,集合类与数组最主要的不同之处是,数组的长度是固定的,集合的长度是可变的,而数组的访问方式比较单一,插入/删除等操作比较繁琐,而集合的访问方式比较灵活常用的集合类有List集合,Set集合,Map集合,其中List集合与Set集合继承了Collection接口,各个接口还提供了不同的实现类.
2021-08-09 08:40:04
148
转载 拓展补充9 编码转换流 OutputStreamWriter InputStreamReader
编码转换流字节流:针对二进制文件字符流:针对文本文件,读写容易出现乱码的现象,在读写时,最好指定编码集为UTF-81 概述编码转换流(InputStreamReader/OutputStreamWriter)主要进行编码的转换,用来解决字符流读写乱码的问题12 工具API学习OutputStreamWriter :OutputStreamWriter(OutputStream out)把传入的字节流转成字符流OutputStreamWriter(OutputStream out ,Str
2021-08-08 09:02:35
195
2
转载 21 初识序列化与反序列化
初识序列化与反序列化1 概述序列化是指将对象的状态信息转换为可以存储或传输形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后可以通过从存储区中读取或者反序列化对象的状态,重新创建该对象.序列化:利用ObjectOutputStream,把对象的信息,按照固定的格式转成一串字节值输出并持久保存到磁盘反序列化:利用ObjectInputStream,读取磁盘中之前序列化好的数据,重新恢复成对象2 特点/应用场景需要序列化的文件必须实现Serializable接口,用来启用序
2021-08-08 08:59:31
141
转载 20 IO流 File 字节流 字符流
IO简介1 流Stream在学习IO流之前,我们首先需要学习的概念就是Stream流为了方便理解,我们可以把数据的读写操作抽象成数据在"管道"中流动,但需注意:1.流只能单方向流动2.输入流用来读取 → in3.输出流用来写出 → out4.数据只能从头到尾顺序的读写一次所以以程序的角度来思考,In/out 相对于程序而言的输入(读取)/输出(写出)的过程.2 IO流的继承结构在java中,根据处理的数据单位不同,可以把流分为字节流和字符流字节流 : 针对二进制文件字符流 : 针
2021-08-08 08:56:21
104
转载 拓展补充8 API手册使用方式说明
API手册使用方式其实我们在API阶段,更多是要去学习别人已有内容,比如方法的使用但是这么多的方法对于新手来说其实是不太友好的,刚开始根本记不住呀所以API手册就是我们的一个好帮手,我们可以在API手册查到目标内容的介绍类似于小学刚学字的时候,不会的字就可以去查字典,API手册就类似于"字典"接下来就介绍一下API手册该怎么使用~(本处以JDK API 1.6.0 中文版为例)双击打开API手册可以看到有根据包名/根据类名/对类的简单介绍3个部分我们也可以通过搜索快速定位到自己想要查看的内
2021-08-08 08:52:39
101
转载 19 正则表达式 包装类 自动装箱/自动拆箱 BigDecimal
1 正则表达式Regex1.1 概述正确的字符串格式规则。常用来判断用户输入的内容是否符合格式的要求,注意是严格区分大小写的。1.2 常见语法1.3 String提供了支持正则表达式的方法Matches(正则) : 当前字符串能否匹配正则表达式replaceAll(正则,子串) : 替换子串split(正则) : 拆分字符串1.4 练习:测试输入身份证号创建包: cn.tedu.api创建类: TestRegex.javapackage cn.tedu.api;impo
2021-08-08 08:50:59
187
转载 18 API Object String StringBuffer/StringBuilder
1 前言亲爱的小伙伴萌,目前我们看到的是Java基础部分的一个新的部分API,这是个啥,又能做啥呢?其实可以概括成一句话:帮助我们站在巨人的肩膀上,实现更加高效的开发,那么我们来一探究竟吧~2 什么是APIAPI(Application Programming Interface,应用程序接口)是一些预先定义的函数。目的是提供应用程序与开发人员基于某软件可以访问的一些功能集,但又无需访问源码或理解内部工作机制的细节.API是一种通用功能集,有时公司会将API作为其公共开放系统,也就是公司制定自己
2021-08-08 08:48:13
72
转载 17 接口 面向接口开发
接口1 接口的概念与之前学习过的抽象类一样,接口( Interface )在Java中也是一种抽象类型,接口中的内容是抽象形成的需要实现的功能,接口更像是一种规则和一套标准.2 接口格式3 接口的特点:通过interface关键字来定义接口通过implements让子类来实现接口接口中的方法全部都是抽象方法(JAVA8)可以把接口理解成一个特殊的抽象类(但接口不是类!!!)类描述的是一类事物的属性和方法,接口则是包含实现类要实现的方法接口突破了java单继承的局限性接口和类之间可
2021-08-08 08:45:08
184
转载 16 抽象类
抽象类1 概念Java中可以定义被abstract关键字修饰的方法,这种方法只有声明,没有方法体,叫做抽象方法.Java中可以定义被abstract关键字修饰的类,被abstract关键字修饰的类叫做抽象类如果一个类含有抽象方法,那么它一定是抽象类抽象类中的方法实现交给子类来完成2 抽象方法的格式3 特点abstract 可以修饰方法或者类被abstarct修饰的类叫做抽象类,被abstract修饰的方法叫做抽象方法抽象类中可以没有抽象方法如果类中有抽象方法,那么该类必须定义为一
2021-08-08 08:42:35
99
转载 15 异常
异常1 概述异常是一些用来封装错误信息的对象它由异常的类型、提示信息、报错的行号提示三部分组成2 异常的继承结构3 异常的处理方式当程序中遇到了异常,通常有两种处理方式:捕获或者向上抛出当一个方法抛出异常,调用位置可以不做处理继续向上抛出,也可以捕获处理异常大家可以结合生活中的例子:如果工作中遇到了问题,我们可以选择自己处理(捕获),或者交给上级处理(抛出)捕获方式:抛出方式:对于不想现在处理或者处理不了的异常可以选择向上抛出方式:在方法上设置异常的抛出管道,即:在可能
2021-08-08 08:40:01
98
转载 14 面向对象之多态
多态1. 概念多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。比如,你的女盆友让你买点水果回来,不管买回来的是苹果还是西瓜,只要是水果就行,这个就是生活中多态的体现再比如,小猫、小狗、小猪我们可以把他们都归纳成小动物,每种小动物都需要吃东西,所以我们可以统一设置他们都必须吃,但是每种小
2021-08-08 08:38:25
83
转载 13 static final 静态/构造/局部代码块之间的关系
1 static1.1 概念是java中的一个关键字用于修饰成员(成员变量和成员方法)1.2 特点可以修饰成员变量与成员方法随着类的加载而加载,优先于对象加载只加载一次,就会一直存在,不再开辟新空间, 直到类消失才一起消失静态资源也叫做类资源,全局唯一,被全局所有对象共享可以直接被类名调用静态只能调用静态,非静态可以随意调用static不能和this或者super共用,因为有static时可能还没有对象1.3 练习:static入门案例创建包: cn.tedu.oopstatic
2021-08-07 11:19:38
100
转载 12 继承 super
1 继承1.1概念继承是面向对象最显著的一个特征继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并扩展新的能力.Java继承是会用已存在的类的定义作为基础建立新类的技术新类的定义可以增加新的数据或者新的功能,也可以使用父类的功能,但不能选择性的继承父类(超类/基类)这种继承使得复用以前的代码非常容易,能够大大的缩短开发的周期,降低开发费用.1.2 特点使用extends关键字来表示继承关系相当于子类把父类的功能复制了一份Java只支持单继承继承可以传递(爷爷/儿子
2021-08-07 11:11:54
257
转载 11 面向对象2 构造函数 构造代码块 this
1 构造方法1.1 概念构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法构造方法的主要功能就是完成对象创建或者初始化当类创建对象(实例化)时,就会自动调用构造方法构造方法与普通方法一样也可以重载.1.2 形式与类同名,且没有返回值类型,可以含参也可以不含参1.3 练习:构造方法创建对象/构造方法赋值创建包: cn.tedu.oop创建类: TestConstructor.javapackage cn.tedu.oop;/**本类用于测试构造方法*/publi
2021-08-07 11:08:50
107
转载 10 面向对象 类 对象 封装
面向对象概念在学习面向对象之前,我们可以先了解一下面向过程。面向过程是一种思想,意思是我们要做任何事,都需要亲力亲为,强调的是过程。面向对象也是一种编程思想,相对于面向过程,我们可以由原来问题的执行者变为指挥者,进而把生活中很多复杂的问题变得简单化。面向过程强调的是过程,比如,把大象装冰箱,一共分3步:第1步:打开冰箱门第2步:把大象放进去第3步:关上冰箱门而面向对象强调的是结果,比如:什么样的冰箱?什么样的大象?谁负责把大象装进去?有没有发现,如果是面向对象的话,干这件事的主体并不是你
2021-08-07 11:05:33
89
转载 拓展补充7 IDEA使用手册
IDEA 新手使用手册1 简介IDEA的全称是IntelliJ IDEA,这是一个java编程语言开发的集成环境。IDEA的每一个方面都是为了最大限度地提高开发人员的工作效率而设计的,它的智能编码辅助和人机工程学设计会让开发过程变得愉悦且高效。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Java,Kotlin等少数语言。IntelliJ在业界被
2021-08-07 10:48:00
153
转载 拓展练习贴1
练习题:通过代码编写,输出一句话:“我要开始学习JAVA了,今天又是知识量满满的一天~”package cn.cxy.exec;public class TestPrint { public static void main(String[] args) { System.out.println("我要开始学习JAVA了,今天又是知识量满满的一天~"); }}练习题:打印个人信息案例,将一个人的一些个人信息打印输出package cn.cxy.exec;pub...
2021-08-07 10:46:52
1361
转载 拓展补充6 冒泡排序
冒泡排序1 概念冒泡排序(Bubble Sort),是计算机科学领域中较简单的一种排序算法。它重复地走访需要进行排序的元素,依次比较两个相邻的元素,如果元素的顺序(如从大到小、首字母从A到Z)错误就把元素的位置互换。走访元素是重复进行的,直到没有任何相邻位置上的元素需要交换位置,排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。光看理论可能会有些迷糊,没有关系,接下来我们详细学习一
2021-08-07 10:24:05
190
转载 09 数组 数组工具类 二维数组
1 数组1.1 概念数组Array,标志是[ ] ,用于储存多个相同类型数据的集合想要获取数组中的元素值,可以通过脚标(下标)来获取数组下标是从0开始的,下标的最大值是数组的长度减11.2 创建数组数组的创建方式一般分为动态初始化和静态初始化动态初始化int[] a = new int[5];静态初始化int[] b = new int[]{1,2,3,4,5};int[] c = {1,2,3,4,5};1.3 创建数组过程分析程序创建数组 int[] a = new in
2021-08-07 10:21:02
163
转载 08 嵌套for循环 while do-while
1 嵌套for循环1.1 概述存在至少2层for循环,根据外层的条件,判断里层能否执行如果能执行,就把里层代码都循环完毕后,再继续判断是否执行外层循环的下一次循环1.2 嵌套for形式1.3 练习:嵌套for循环入门案例创建包: cn.tedu.basic创建类: TestForDemo.java总结1:外循环执行1次,内循环执行多次总结2:外循环控制行,内循环控制列package cn.tedu.basic;/*本类用于测试嵌套for循环*/public class Tes
2021-08-07 10:18:41
313
转载 07 局部变量 成员变量
1 变量1.1 概念可以改变的数,称为变量。在Java语言中,所有的变量在使用前必须声明。一般通过“变量类型 变量名 = 变量值 ;”这三部分来描述一个变量。如:int a = 3 ;变量的使用原则:就近原则,即尽量控制变量的使用范围到最小1.2 局部变量位置:定义在方法里或者局部代码块中注意:必须手动初始化来分配内存.如:int i = 5;或者int i; i = 5;作用域:也就是方法里或者局部代码块中,方法运行完内存就释放了1.3 成员变量位置:定义在类里方法外注意:不用初
2021-08-07 10:15:46
50
转载 拓展补充5 Debug 断点调试工具
前言很多新手小白在学习的时候总会遇到一个问题:我们一运行程序,只能看到程序最后的结果,但是这个程序究竟是怎么一步步运行出这样的结果呢?如果有一个工具能够让我们看到我们程序的执行流程该有多好~这就需要用到新手小白编程的利器——断点调试工具Debug了。啥是Debug?首先,对Debug做一个简单的描述:Debug:是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。它的两大作用,查看程序执行流程,调试程序。Debug怎么用?我们将从以下几个角
2021-08-06 18:21:21
65
转载 06 分支结构 switch结构 for循环
1 分支结构1.1 概述顺序结构的程序虽然能解决计算、输出等问题但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构1.2 形式1.3.1 练习:商品打折案例创建包: cn.tedu.basic创建类: TestDiscount.java需求: 接收用户输入的原价。满1000打9折;满2000打8折;满5000打5折package cn.tedu.basic;import java.util.Scanner;/**需求:接收用户输入的原价,满1000打9折,满20
2021-08-06 18:15:22
102
转载 05 初识JAVA运算符
1 运算符1.1 概述运算符 用于连接 表达式 的 操作数,并对操作数执行运算。例如,表达式num1+num2,其操作数是num1和num2,运算符是”+”。在java语言中,运算符可分为5种类型:算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符。根据操作数的不同,运算符又分为单目运算符、双目运算符和三目运算符。单目运算符只有一个操作数,双目运算符有两个操作数,三目运算符则有三个操作数。位运算符涉及到二进制位的运算,在java 程序中运用不是很多。1.2 运算符速查表1.3
2021-08-06 18:13:42
78
转载 拓展补充4 eclipse小技巧 新建类时自动添加作者与时间信息
eclipse中新建类添加作者与时间信息在企业级产品开发中, 对注释的要求取决于项目的规模和团队的正规化程度。对于一个专业的软件开发人员来说, 对 javadoc 的使用程序有时候直接决定这在项目中的角色, 也会影响面试的结果和薪水的水平, 因为它能够反映开发人员参与过项目的规模, 以及之前躲在团队的专业化程度。所以对注释的重视也是一个专业团队必不可少的一部分。 你 GET 到了吗?补充: eclipse 中设置作者等信息点击 Windows->Preferences->Java
2021-08-06 18:10:30
62
转载 拓展补充3 ASCII编码表
ASCII编码表ASCII(American Standard Code for Information Interchange)编码表,美国标准信息交换代码。在计算机中,所有的数据在存储和运算时都要使用二进制数表示。a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号, 在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则。于是美国有
2021-08-06 18:08:02
124
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人