自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 基本语法

C++基本语法C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。对象 -对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。 类 -类可以定义为描述对象行为/状态的模板/蓝图。 方法 -从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。 即时变量 -每个对象都有其独特的即时变量。对象的状态是由这些即时变...

2021-07-29 08:26:19 521

原创 Yarn 安装和使用教程

二、Yarn 介绍Yarn 是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具。 你可以通过它使用全世界开发者的代码,或者分享自己的代码。代码通过包(package)(或者称为模块(module))的方式来共享。 一个包里包含所有需要共享的代码,以及描述包信息的文件,称为package.json。它的优点是更快、更安全、更可靠。它的主要特性有离线模式、确定性、网络性能、多注册、网络恢复能力、扁平模式以及 Emoji。三、Yarn

2021-07-29 08:24:03 417

原创 HTML 简介 HTML 编辑器

HTML 简介HTML 教程 HTML 编辑器实例<html><body><h1>我的第一个标题</h1><p>我的第一个段落。</p></body></html>亲自试一试什么是 HTML?HTML 是用来描述网页的一种语言。HTML 指的是超文本标记语言 (HyperTextMarkupLanguage) HTML 不是一种编程语言,而是一种标记语言(...

2021-07-28 08:14:54 175

原创 jQuery 事件

jQuery 是为事件处理特别设计的。jQuery 事件函数jQuery 事件处理方法是 jQuery 中的核心函数。事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。术语由事件“触发”(或“激发”)经常会被使用。通常会把 jQuery 代码放到 <head>部分的事件处理方法中:实例<html><head><script type="text/javascript" src="jquery.js"></scri

2021-07-27 08:57:01 75

原创 jQuery 选择器

jQuery 选择器在前面的章节中,我们展示了一些有关如何选取 HTML 元素的实例。关键点是学习 jQuery 选择器是如何准确地选取您希望应用效果的元素。jQuery 元素选择器和属性选择器允许您通过标签名、属性名或内容对 HTML 元素进行选择。选择器允许您对 HTML 元素组或单个元素进行操作。在 HTML DOM 术语中:选择器允许您对 DOM 元素组或单个 DOM 节点进行操作。jQuery 元素选择器jQuery 使用 CSS 选择器来选取 HTML 元素。

2021-07-27 08:56:11 44

原创 vscode简介和使用git

vscode简介VSCode是微软推出的一款轻量编辑器,采取了和VS相同的UI界面,搭配合适的插件可以优化前端开发的体验。布局:左侧是用于展示所要编辑的所有文件和文件夹的文件管理器,依次是资源管理器,搜索,GIT,调试,插件,右侧是打开文件的编辑区域,最多可同时打开三个编辑区域到侧边。在初次使用时如果本地没有安装git会提示先安装git,然后重启vscode。git下载地址Downloading Git如果安装过程提示无法添加环境变量到path中,则需要将git安装目录下的cmd目录添加到系统的pa

2021-07-27 08:54:10 175

原创 yarn常用命令

yarn add yarn add [package]@[version] 这将安装您的dependencies中的一个或多个包。 用 --dev 或 -D 会在 devDependencies 里安装一个或多个包。yarn global add <package...>全局安装依赖。对于绝大部分包来说,这是个坏习惯,因为它们是隐藏的。 最好本地安装你的依赖,这样它们都是明确的,每用你项目的人都能得到同样的依赖。注意:yarn add global <package...&gt

2021-07-26 08:03:24 661

原创 jQuery基础知识二

jQuery是一个优秀的、轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+, Opera 9.0+),而jQuery2.0及后续版本将不再支持IE6/7/8浏览器。jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。1、jQuery入口函数与Js入口函数

2021-07-25 22:40:51 94

原创 Jquery和vue对比

Jquery和vue对比前言:很多人说jquey和vue没有什么可比的,应该和Angular,React来比吧,我到觉得他们倒没有多大的可比性,都是基于mvvm思想设计的框架,无非就是实现的方式不一样,在不同场景下性能上会有一些差异。然而从jquery到vue或者说是到mvvm的转变则是一个思想想的转变,是将原有的直接操作dom的思想转变到操作数据上去,难道不是一个根本性的改变吗?1.jquery介绍:想必大家都用过jquery吧,这个曾经也是现在依然最流行的web前端js库,可是现在无论是国内

2021-07-24 09:10:30 324

原创 jQuery基础知识笔记一

学习目标 知道jQuery常用选择器的写法 知道jQuery如何操作元素样式 知道jquery的常用事件 知道选项卡的基本实现原理 知道如何制作基本的动画 了解表单验证的基本原理 03-【了解】jquery简介从javascript语言诞生开始,大量的开发人员使用js来完成页面特效,于是有些人就把自己工作中常用的代码段进行封装成函数或者函数库(工具库)并开源给所有开发者使用。所以javascript语言中拥有非常多,优秀的工具库。目前全..

2021-07-24 09:08:32 321

原创 java 中 IO 流分为几种?字符流和字节流的区别?

java 中 IO 流分为几种?•按照流的流向分,可以分为输入流和输出流;•按照操作单元划分,可以划分为字节流和字符流;•按照流的角色划分为节点流和处理流。Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java I0流的40多个类都是从如下4个抽象类基类中派生出来的。•InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。•OutputStream/Writer: 所有输出流的基类,前

2021-07-23 13:18:32 345

原创 Java注解

Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。网上很多关于 Java Annotation 的文章,看得人眼花缭乱。Java Annotation 本来很简单的,结果说的人没说清

2021-07-23 13:14:51 58

原创 Git是什么?

Git是什么?Git中译为混账,是Linus先生花了一个星期写的分布式版本控制系统(VCS,Version Control System),用于Linux内核的协同开发。所谓版本控制系统,个人理解就是可以保存文本文件的历史版本信息,并且可以回溯到某个历史版本的文本文件管理系统。它的设计就是为了方便软件开发的版本迭代和协同开发。比如,你打开电脑的记事本,一个不小心把昨天写的备忘全给删除了,而且还习惯性地按了Ctrl+S,你懵了。一般情况下是找不回来了。除非有版本备份,现在有些云笔记类软件就提供了这样的功能。

2021-07-23 00:01:24 94

原创 常用的Java开发框架

Java开发开发框架有很多,给大家推荐下面几种1、struts2框架,这是最经典的框架(可以说没有“之一”)。可以帮你快速搭建出一个MVC模型出来2、Spring:Spring是轻量级的J2EE应用程序框架。3、Hibernate:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使得Java程序员可以使用对象编程思维来操纵数据库。Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化。它还可以应用在任何使用JDBC的场合,既可以在Java

2021-07-22 00:55:10 257

原创 SSM的简介

什么是springmvc?Springmvc是一个基于mvc的web框架,它是spring框架的一个模块,两者无需通过中间整合进行整合。Springmvc框架的执行步骤第一步:用户发起请求到前端控制器(DispatcherServlet)第二步:前端控制器请求处理器映射器查找Handler第三步:处理器映射器向前端控制器返回Handler第四步:前端控制器调用处理器适配器去执行Handler第五步:处理器适配器去执行Handler第六步:Handler执行完成给适配器返回ModelAndVi

2021-07-22 00:52:39 114

原创 hadoop生态圈各个组件简介

1,HDFS(hadoop分布式文件系统)是hadoop体系中数据存储管理的基础。他是一个高度容错的系统,能检测和应对硬件故障。client:切分文件,访问HDFS,与那么弄得交互,获取文件位置信息,与DataNode交互,读取和写入数据。namenode:master节点,在hadoop1.x中只有一个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户 端请求。DataNode:slave节点,存储实际的数据,汇报存储信息给namenode。secondary namenode:辅

2021-07-22 00:49:18 2939

原创 Spark和Hadoop的区别

一、实现原理的比较Hadoop和Spark都是并行计算,两者都是用MR模型进行计算Hadoop一个作业称为一个Job,Job里面分为Map Task和Reduce Task阶段,每个Task都在自己的进程中运行,当Task结束时,进程也会随之结束;Spark用户提交的任务称为application,一个application对应一个SparkContext,app中存在多个job,每触发一次action操作就会产生一个job。这些job可以并行或串行执行,每个job中有多个stage,stage是sh

2021-07-22 00:47:19 405

原创 hadoop三大组件

hadoop三大组件:1、HDFS一个高可靠、高吞吐量的分布式文件系统存储海量数据分布式安全性副本数据数据是以block的方式进行存储的,128M比如:200M—128M 72M2、MapReduce一个分布式的离线并行计算框架对海量数据的处理分布式思想:分而治之大数据集分为小的数据集每个数据集进行逻辑业务处理(map)合并统计数据结果(reduce)3、Yarn分布式资源管理框架管理整个集群的资源(内存、CPU核数)分配调度集群的资源...

2021-07-22 00:45:00 719

原创 什么是线程阻塞?

什么是线程阻塞?在某一时刻某一个线程在运行一段代码的时候,这时候另一个线程也需要运行,但是在运行过程中的那个线程执行完成之前,另一个线程是无法获取到CPU执行权的(调用sleep方法是进入到睡眠暂停状态,但是CPU执行权并没有交出去,而调用wait方法则是将CPU执行权交给另一个线程),这个时候就会造成线程阻塞。为什么会出现线程阻塞?1.睡眠状态:当一个线程执行代码的时候调用了sleep方法后,线程处于睡眠状态,需要设置一个睡眠时间,此时有其他线程需要执行时就会造成线程阻塞,而且sleep方

2021-07-19 13:12:55 118

原创 什么就叫递归算法

递归算法(英语:recursion algorithm)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。计算理论可以证明递归的作用可以完全取代循环,因此在很多函数编程语言(如Scheme)中习惯用递归来实现循环。...

2021-07-19 13:02:25 171

原创 StringBuffer 和 StringBuilder的区别

StringBuffer 和 StringBuilder 它们都是可变的字符串,不过它们之间的区别是 Java 初中级面试出现几率十分高的一道题。这么简单的一道题,栈长在最近的面试过程中,却经常遇到很多求职者说反,搞不清使用场景的情况。今天,栈长我带大家彻底搞懂 StringBuffer 和 StringBuilder 的几个区别和它们的应用场景,如果你是大牛,请略过,如果你是菜鸟,或者对这两个不是很清楚,可以学习一下,也可以为年底的面试加油冲刺。先看看 StringBuffer 和 StringB

2021-07-19 12:58:37 34

原创 线程的五种状态?

1.新建状态当用new操作符创建一个线程时。此时程序还没有开始运行线程中的代码。2.就绪状态一个新创建的线程并不自动开始运行,要执行线程,必须调用线程的start()方法。当线程对象调用start()方法即启动了线程,start()方法创建线程运行的系统资源,并调度线程运行run()方法。当start()方法返回后,线程就处于就绪状态。处于就绪状态的线程并不一定立即运行run()方法,线程还必须同其他线程竞争CPU时间,只有获得CPU时间才可以运行线程。因为在单CPU的计算机系统中,不可能同

2021-07-18 18:20:52 478

原创 线程中,什么是同步,什么是异步?

线程同步:是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制异步处理就是,你现在问我问题,我可以不回答你,等我用时间了再处理你这个问题.同步不就反之了,同步信息被立即处理 -- 直到信息处理完成才返回消息句柄;异步信息收到后将在后台处理一段时间 -- 而早在信息处理结束前就返回消息句柄...

2021-07-18 18:19:45 158

原创 线程中常用的锁,有哪几种?

线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能越强大,性能就会越低。1、互斥锁互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线程和一个任务队列。任何是一个线程都要使用互斥锁互斥访问任务队列,以避免多个线程同时访问任务队列以发生错乱。在某一时刻,只有一个线程可以获取互斥锁,在释放互斥锁之前其他线程都不能获取该互斥锁。如果其他线程想要获取这个互斥锁,那么这个线程只能以阻塞方式

2021-07-18 18:18:29 13336

原创 Flume总结

一、简介:Flume是一个分布式,可靠可用性高的日志收集系统,能够采集,集合和传输数据,采用数据流模式。核心概念有事件与进程,事件由数据单元,消息头与消息体组成。进程由source,channel与sink组成。Flume的优势在于它可以将数据发送到任何集中存储器上,其次当数据收集速度超过数据写入速度时,系统会自行做出调整,在数据生产者与数据收容器之间形成平衡。一共有三种级别的可靠性保障以及三种架构,分别为agent,collector与storage二、数据流:Flume的核心是数据流,将数据从

2021-07-17 08:31:11 523

原创 mybatis总结

使用jdbc开发时,和mybatis相比的不足1,数据库连接,使用时就创建,不使用就释放,对数据库进行频繁连接开关和关闭,造成数据库资源浪费,影响数据库的性能解决:使用数据库连接池管理数据库的连接2,sql语句使用硬编码在java程序中,修改sql语句,就需要重新编译java代码,不利于系统维护解决:把sql语句放在xml配置文件中,修改sql语句也不需要重新编译java代码3,向预编译语句PreparedStatement中设置参数,对占位符位置和设置参数值,硬编码,修改sql语句也不需要重新编

2021-07-17 08:28:04 112

原创 Java面试题

线程的概念线程进程区别在Java中如何实现线程我们应该是使用Runnable还是Thread?Thread类的start()和run()方法的区别start()方法会创建新的线程并启动该线程,所以该方法会调用其他native方法,而run()方法就是:正常的Java方法调用,即在原来的线程中执行java代码。Java中Runnable和Callable的区别Runnable和Callable都代表要线程中执行的任务。Runnable是JDK1.

2021-07-17 08:22:06 45

原创 “大数据“时代

概念最早提出"大数据"时代到来的是全球知名咨询公司麦肯锡,麦肯锡称:"数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。" "大数据"在物理学、生物学、环境生态学等领域以及军事、金融、通讯等行业存在已有时日,却因为近年来互联网和信息行业的发展而引起人们关注。简单来说:大量数据 + 云计算 = 大数据时代创一个小群,供大家学习交流聊天如果有对学大数据方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交

2021-07-17 08:14:45 638

原创 JavaScript对象、内置对象、值类型和引用类型详解

对象JS中的对象是属性和行为的结合体,其中属性是对象的静态特征,行为又称方法,是对象的动态特征。JavaScript中的对象主要分为三大类: 内置对象 由ES标准中定义的对象 在任何的ES的实现中都可以使用,比如Math String Number Boolean Function Object 宿主对象 由JS的运行环境提供的对象,目前来讲主要是浏览器提供的对象,比如BOM DOM 自定义对象 由开发人员自己创建的对象对象的定义定义非空对象...

2021-07-16 08:17:00 90

原创 Python爬虫

爬虫网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。为什么我们要使用爬虫互联网大数据时代,给予我们的是生活的便利以及海量数据爆炸式的出现在网络中。过去,我们通过书籍、报纸、电视、广播或许信息,这些信息数量有限,且是经过一定的筛选,信息相对而言比较有效,但是缺点则是信息面太过于狭窄了。不对称的信息传导,以致于我们视野受限,无法了解到更多的信息和知识。互联网大

2021-07-16 08:11:54 83

原创 数据库Hive 总结

一、数据仓库的介绍1.1 数据仓库的基本概念数据仓库,英文名称为 Data Warehouse,可简写为 DW 或 DWH。数据仓库顾名思义,是一个很大的数据存储集合,出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。它为企业提供一定的 BI (商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。在这里插入图片描述1.2 数据仓库的主要特征数据仓库是 面向主题的(Su

2021-07-16 08:04:32 203

原创 Linux从入门到秃头

Linux发展史1、 诞生Multics项目,MIT、Bell实验室1970年(Unix元年),Unix诞生,在Multics基础上开发,使用汇编,时间戳(从1970-1-1 00:00:00 至今的秒数)1973,汇编对于计算机硬件过于依赖,移植性不好,用C重写了Unix1991, Linux之父:李纳斯,0.0.1版本2、系统特点开放性(开源)多用户, 允许同时登录多个用户多任务,允许用户同时进行多个操作任务良好的用户界面优异的性能与稳定性3、Linux分支​ 乌班图ubunt

2021-07-15 08:50:45 236

原创 计算机网络的 89 个核心概念

主机:计算机网络上任何一种能够连接网络的设备都被称为主机或者说是端系统,比如手机、平板电脑、电视、游戏机、汽车等,随着 5G 的到来,将会有越来越多的终端设备接入网络。通信链路:通信链路是由物理链路(同轴电缆、双绞线、光纤灯)连接到一起组成的一种物理通路。传输速率:单位是 bit/s 或者 bps ,用来度量不同链路从一个端系统到另一个端系统传输数据的速率。分组:当一台端系统向另外一台端系统发送数据时,通常会将数据进行分片,然后为每段加上首部字节,从而形成计算机网络的专业术语:分组。这些分组通过网络发

2021-07-15 08:48:20 417

原创 java日期日历类总结

1. Date类概述:java.util.Date类表示特定的瞬间,精确到毫秒。Date的无参构造函数public Date(): 分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)public Date(long date): 分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。12注意:由于我们处在东八区,所以我们的基准时间为1970年1月1日8时0分0秒。常用方法:..

2021-07-15 08:46:41 124

原创 Java中的异常

一、 异常机制的概述 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。 程序错误分为三种:1.编译错误;2.运行时错误;3.逻辑错误。 (1)编译错误是因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和位置,这个也是大家在刚接触编程语言最常遇到的问题。 (2)运行时错误是因为程序在执行时,运行环境发现了不能执行的操作。 ...

2021-07-14 08:11:49 28

原创 单例模式(懒汉式和饿汉式)

1.懒汉模式:顾名思义,他是一个懒汉,他不愿意动弹。什么时候需要吃饭了,他就什么时候开始想办法搞点食物。即懒汉式一开始不会实例化,什么时候用就什么时候new,才进行实例化。2.饿汉模式:顾名思义,他是一个饿汉,他很勤快就怕自己饿着。他总是先把食物准备好,什么时候需要吃了,他随时拿来吃,不需要临时去搞食物。(1) 线程安全:饿汉式在线程还没出现之前就已经实例化了,所以饿汉式一定是线程安全的。懒汉式加载是在使用时才会去new 实例的,那么你去new的时候是一个动态的过程,是放到方法中实现的,比如:.

2021-07-14 08:09:15 142

原创 Hbase知识点总结

一、HBase介绍1、基本概念HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键、列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平台。HBase不限制存储的数据的种类,允许动态的、灵活的数据模型,不用SQL语言,也不强调数据之间的关系。HBase被设计成在一个服务器集群上运行,可以相应地横向扩展。2、HBase使用场景和成功案例互联网搜索问题:爬虫收集网页,存储到BigTable里,MapReduce计算作业扫描全表生成搜索索

2021-07-13 08:49:38 480

原创 Hive 知识点总结一

1、Hive使用方式方式1:学习时使用的最基本的简单查询:bin/hive //启动hivehive>select * from t_test; //进行简单使用方式2:作为服务启动并使用:bin/hiveserver2 -hiveconf hive.root.logger=DEBUG,console //前台启动nohup bin/hiveserver2 1>/dev/null 2>&1 & //后台启动通过服务启动成功后,可以去别的节点...

2021-07-13 08:46:56 107

原创 2021-07-13

Python基础知识与常用数据类型一、Python概述:1.1、Python的特点:1、Python是一门面向对象的语言,在Python中一切皆对象2、Python是一门解释性语言3、Python是一门交互式语言,即其在终端中进行命令编程4、Python是一门跨平台的语言【没有操作系统的限制,在任何操作系统上都可以运行Python代码】5、Python拥有强大和丰富的库,又被称为胶水语言,能把其他语言(主要c/c++)写的模块很轻松的结合在一起1.2、Python的优缺点:

2021-07-13 08:41:12 202

原创 MySQL与NoSQL之间的区别

MySQL与NoSQL之间的区别:1、MySQL是一个基于表格设计的关系数据库,而NoSQL本质上是非关系型的基于文档的设计。2、MySQL数据库,覆盖了巨大的IT市场;具有固定市场的MySQL数据库包含一个庞大的社区。而NoSQL数据库是最新的到来,与MySQL相比,社区正在慢慢发展。3、MySQL的严格模式限制并不容易扩展,而NoSQL可以通过动态模式特性轻松扩展。4、MySQL中创建数据库之前需要详细的数据库模型,而在NoSQL数据库类型的情况下不需要详细的建模。5、MySQL提供了大量的报告工具,

2021-07-12 23:28:26 531

空空如也

空空如也

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

TA关注的人

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