小滴课堂-学习笔记:阿里p6后端工程师/技术经理的java集合框架List了解多少

面试分享:两年工作经验成功面试阿里P6总结 前言 本文主要给大家带来一些我面试的经历和经验,希望对正在求职的同学有所帮助。我先大致说下面试之前的个人情况:2017年7月正式入职海康威视数字技术股份有限公司,使用Vue.js技术栈。 我写的篇幅可能有点长,如果只想看成功的面试请直接从阿里企业智能事业部(一面)开始,大家见谅哈。 这里推荐阅读之前写的文章(前面两篇实用型,后面两篇对面试应该会有帮助): Vue CLI 3结合Lerna进行UI框... 阅读详情

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

 

目录

第1集 编程语言面试题之新版javase集合框架List基础篇

第2集 编程语言面试题之新版javase集合框架List 追杀篇《上》

第3集 编程语言面试题之CopyOnWriteArrayList追杀篇《下》

第4集 源码剖析之新版javase扩容机制List暗器篇

第5集 编程语言面试题之新版JDK手写ArrayList大招篇《上》

第6集 编程语言面试题之新版JDK手写ArrayList大招篇《下》

干货文档


第1集 编程语言面试题之新版javase集合框架List基础篇

简介:java集合框架里面List常见基础面试题

  • 考查点:list的基础知识点掌握情况,对应的实现的区别,线程安全、使用场景

  • 难度【***】

  • 说下Vector和ArrayList、LinkedList联系和区别?分别的使用场景

  • 答案:

    • 线程安全

      • ArrayList:底层是数组实现,线程不安全,查询和修改非常快,但是增加和删除慢
      • LinkedList: 底层是双向链表,线程不安全,查询和修改速度慢,但是增加和删除速度快
      • Vector: 底层是数组实现,线程安全的,操作的时候使用synchronized进行加锁
    • 使用场景

      • Vector已经很少用了
      • 增加和删除场景多则用LinkedList
      • 查询和修改多则用ArrayList

 

 

第2集 编程语言面试题之新版javase集合框架List 追杀篇《上》

简介:基于List进行继续追问,初试连环炮

  • 考点: List的掌握情况(追问系列)
  • 难度【***】
  • 如果需要保证线程安全,ArrayList应该怎么做,用有几种方式



方式一:自己写个包装类,根据业务一般是add/update/remove加锁 
​
方式二:Collections.synchronizedList(new ArrayList<>()); 使用synchronized加锁
​
方式三:CopyOnWriteArrayList<>()  使用ReentrantLock加锁
​


 

第3集 编程语言面试题之CopyOnWriteArrayList追杀篇《下》

简介:基于CopyOnWriteArrayList进行继续追问

  • 考点: CopyOnWriteArrayList的掌握情况(追问系列)

  • 难度【** ***】

  • 如果回答到上面的点则继续问,没回到到则问,了解CopyOnWriteArrayList吗?和 Collections.synchronizedList实现线程安全有什么区别, 使用场景是怎样的?

    • CopyOnWriteArrayList:执行修改操作时,会拷贝一份新的数组进行操作(add、set、remove等),代价十分昂贵,在执行完修改后将原来集合指向新的集合来完成修改操作,源码里面用ReentrantLock可重入锁来保证不会有多个线程同时拷贝一份数组

      • 场景:读高性能,适用读操作远远大于写操作的场景中使用(读的时候是不需要加锁的,直接获取,删除和增加是需要加锁的, 读多写少)

       

    • Collections.synchronizedList:线程安全的原因是因为它几乎在每个方法中都使用了synchronized同步*锁

      • 场景:写操作性能比CopyOnWriteArrayList好,读操作性能并不如CopyOnWriteArrayList

     

  • CopyOnWriteArrayList的设计思想是怎样的,有什么缺点?

    答案:设计思想:读写分离+最终一致
    
    缺点:内存占用问题,写时复制机制,内存里会同时驻扎两个对象的内存,旧的对象和新写入的对象,如果对象大则容易发生Yong GC和Full GC
    
    
    
    
    
    

     

 

第4集 源码剖析之新版javase扩容机制List暗器篇

简介:基于List进行继续二次追问,进阶扩容机制+源码剖析

  • 考点:List集合扩容机制
  • 难度【** * **】
  • 说下ArrayList的扩容机制是怎样的

    
    
    
    注意:JDK1.7之前ArrayList默认大小是10,JDk1.7之后是0
    ​
    未指定集合容量,默认是0,若已经指定大小则集合大小为指定的;
    当集合第一次添加元素的时候,集合大小扩容为10
    ArrayList的元素个数大于其容量,扩容的大小= 原始大小+原始大小/2
    ​

     

 

  • 源码解读 JDK ArrayList 扩容核心源码




调试代码
​
List<String> list = new ArrayList<>();
​
for(int i=0;i<10;i++){
    list.add(""+i);
}
System.out.println(list.size());
​
list.add("xdclass.net");
​
System.out.println(list.size());




第5集 编程语言面试题之新版JDK手写ArrayList大招篇《上》

简介:基于List进行继续追问,进阶连环炮,代码实战

  • 考点:源码设计思想、代码编写规范
  • 难度【** * **】
  • 设计一个简单的ArrayList【需要包含 构造函数(有参和无参)、add(obj)、 扩容机制】



 //计算容量+确保容量
    private void ensureCapacityInternal(int minCapacity){
​
        //如果是初次扩容,则使用默认的容量
        if(elementData == EMPTY_ELEMENT_DATA){
            minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
        }
​
        //是否需要扩容,需要的最少容量大于现在数组的长度则要扩容
        if(minCapacity - elementData.length > 0){
            int oldCapacity = elementData.length;
​
            int newCapacity = oldCapacity + (oldCapacity>>1);
​
            //如果新容量 < 最小容量, 则讲最新的容量赋值给新的容量
            if(newCapacity - minCapacity < 0){
                newCapacity = minCapacity;
            }
​
            //创建新数组
            Object[] objects = new Object[newCapacity];
​
            //将旧的数组复制到新的数组里面
            System.arraycopy(elementData,0, objects,0,elementData.length);
​
            //修改引用
            elementData = objects;
​
        }
​
    }








 

 

第6集 编程语言面试题之新版JDK手写ArrayList大招篇《下》

简介:基于List进行继续追问,进阶连环炮,代码实战

  • 考点:源码设计思想、代码编写规范
  • 难度【** * **】
  • 设计一个简单的ArrayList【remove(index)、get(index) 、indexOf(o) ,set(int index,Object obj)】

 




System.arraycopy(Object src, int srcPos, Object dest, int destPos,int length)参数介绍
​
Object src : 原数组
int srcPos : 从元数据的起始位置开始
Object dest : 目标数组
int destPos : 目标数组的开始起始位置
int length  : 要copy的数组的长度


 

干货文档

 

 

 

 

最新阿里Java后端开发面试题100道(P6-P7) 面试题 1、什么是字节码?采用字节码的好处是什么? 2、 Oracle JDK 和 OpenJDK 的对比? 3、Arrays.sort 和 Collections.sort 实现原理和区别 4、wait 和 sleep 的区别是什么? 5、数组在内存中如何分配? 6、HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的? 7、HashMap 的扩容过程 8、HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)? 9、HashSet 是如何. 阅读详情

相关推荐

VIVADO & VITIS 报错记录

问题详情:使用BD用DMA上传少量数据,根据ILA监测到的AXI总线数据正常,VALID信号和READY信号都正常,但是在PS端的cache缓冲区示数为0,打印为0。可能是因为print和printf混用导致。解决方案:修改缓冲区的对齐参数。

Mulun_Zhu的博客 715

小滴课堂-学习笔记:(10)Java高级核心之玩转JDK9常见特性讲解

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 第1集 新版JDK13下载和本章课程说明 第2集 java高级核心之JDK9常用Jshell实战 第3集 接口方法进阶之JDK9私有方法 第4集 JDK9新特性之增强try-with-resource 干货文档 第1集 新版JDK13下载和本章课程说明 简介:讲解JDK13版本的下载和后续课程说明 为什么用JDK13 版本太多,直接用最新的进行安装讲解 JDK.

dev666的博客 303

Windows7 64位系统PL2303驱动无法安装问题解决

问题描述:电脑安装的是Win7 64位的旗舰版,USB to RS232这种线很简单,对于笔记本如果要用串口,就不能少了它了。USB to RS232转换芯片种类繁多,常见的有ch340,0108,PL2303,FT232等,这里面FT232的应该价格是相对比较贵的,因为FTDI的芯片本身比较贵。由于买了一根PL2303芯片的USB to RS232转换线,于是插上后发现驱动无法安装,又是在设备管

suxiang198的博客 5809

阿里巴巴后端开发P6:收到字节和pdd的offer,两边总包都是100w左右,犹豫去哪......

一位在阿里巴巴职级为P6的员工,在阿里时总包是75w左右。目前收到了字节和pdd的offer,他表示两边的总包都在100w左右,但是pdd额外多了两个月加班费。他听说字节又卷又心累,pdd只累身体不累心,现在有点犹豫应该是哪边?

人生不怕起点低,就怕没追求 870

告别底噪和发热:TPA3255的PCB布局与散热设计保姆级教程(附嘉立创EDA文件)

本文详细解析TPA3255 Class D音频功放的PCB布局与散热设计,提供从电源系统分层架构到热管理系统的全流程优化方案。通过实战案例展示如何消除底噪、降低发热,并附嘉立创EDA文件,助力工程师快速设计高性能音频功放。

weixin_29208077的博客 376

抓包工具:Fiddler下载、安装、使用 教程

文章目录抓包工具:Fiddler下载、安装、使用 教程一、Fiddler 下载二、Fiddler 安装三、Fiddler 使用3、Statistics 请求的性能数据分析4、Inspectors 查看数据内容5、AutoResponder 允许拦截指定规则的请求6、Composer 自定义请求发送服务器7、Filters 请求过滤规则8、Timeline 请求响应时间9、Fiddler 设置解密HTTPS的网络数据10、Fiddler 内置命令与断点 抓包工具:Fiddler下载、安装、使用 教程 Fidd

Sumarua的博客 17万+

关于软件外包的一些看法(转)

关于软件外包的一些看法 2010-05-30 其实大家每天心里都像明镜一样的明白“低技术含量的外包没有前途”,好多人都认为外包没有技术,其实这种思想不对,国外有大量的高端技术外包业务等着我们干,但是反问一句“你们能干吗?”,现在大部分的公司都是平均每个项目开发4个月,干完就再转一个组再做别的项目,从Java .NET C C++ 到你们没有听说过的RPG,一个有着7年开发经验的外包人员可以说自...

weixin_30889885的博客 4700

Ubuntu零基础入门到精通【1.2讲】:Ubuntu 与 Linux 的关系 —— 你用的到底是什么?

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 3105

Java后端技术栈---阿里P6架构师倾情分享!

Java后端技术栈,到底如何深入学习?废话不多说,直接上干货:(如下图)一、阅读源码阅读源码二、1.分布式架构分布式架构2.分布式架构分布式架构3.分布式架构分布式架构三、微服务架构微服务架构四、并发编程并发编程五、性能优化性能优化六、DevOpsDevOps电商项目实战再牛 x 的梦想也抵不住傻 x 似的坚持!只要坚持就能成功。加Java后端高级技术群:479499375 ,免费领取 以上价值1...

weixin_34367257的博客 1252

Python爬虫实战:使用Scrapy+Playwright高效获取电力市场数据

本文将详细介绍如何使用Python构建一个高效的电力市场数据爬虫系统。我们将结合Scrapy框架和Playwright浏览器自动化工具,解决电力市场网站常见的反爬机制,实现数据的稳定抓取。文章包含完整的项目搭建流程、代码实现、数据处理方案以及部署建议,帮助读者掌握现代爬虫开发的核心技术。关键词:Python爬虫、Scrapy、Playwright、电力市场、数据采集、反爬对策python复制下载# 基本字段region = scrapy.Field() # 区域。

2201_76125261的博客 1881

《QGIS快速入门与应用基础》079:KML/KMZ格式:Google Earth兼容

KML/KMZ是专为地理可视化设计的空间数据格式,原生兼容Google Earth,支持点线面要素标注与多媒体集成。KML为XML文本格式,KMZ是其压缩版本。该格式优势在于可视化表现力强、跨平台共享便捷,适合地理标注、路线分享等场景,但存在属性支持弱、大数据量处理效率低等局限。QGIS中可便捷加载和导出KML/KMZ数据,需注意编码设为UTF-8、勾选"导出样式"以保留可视化效果。建议中小规模标注数据使用KMZ格式,确保关联资源完整,提升共享效率。

LuckyHanMo的博客 766

小滴课堂-学习笔记:Javaweb开发核心知识之Listener监听器

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 第1集 Javaweb开发核心之初识Listener监听器 第2集 监听器实战ServletContextListener全局配置加载 第3集 监听器实战HttpSessionListener统计当前在线人数 第4集 监听器实战ServletRequestListener统计网站请求量 干货文档 第1集 Javaweb开发核心之初识Listener监听器 简介:讲解Servlet里面的监听器.

dev666的博客 270

基于Simulink的双向DC-DC变换器在储能系统中的应用仿真

摘要:本文详细介绍了基于Simulink的双向DC-DC变换器在光伏储能系统中的仿真实现。主要内容包括:1)采用非隔离型双向Buck-Boost拓扑作为储能系统枢纽;2)针对750V直流微网中的20kWh锂电池接口场景进行建模;3)详细阐述双闭环控制器设计(电压外环+电流内环)、工作模式判断逻辑等关键步骤;4)通过仿真验证了系统在功率阶跃和模式切换下的性能。文章提供了完整的建模流程和控制方法,为储能系统接口设计提供了实用参考。

amy_mhd的博客 178

阿里p6和p7的主要区别是什么?

接触阿里系的朋友比较多,网上关于P6、7、8的官方定义都很多,一搜一大把 p6 高级专员独立完成工作点p7 专家多点成线 团队内交流 熟悉P6:高级工程师,也就是熟手的执行者,工作年限1~5年都可以升到,他能按照上级分拆的任务高效完成;P6+表示已经具备非常熟练的任务执行能力,工作年限5年+,但还稍微缺乏对于复杂项目的阅读能力与大局观P7:技术专家,工作年限5~10年,他...

Java架构技术交流 6253

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

小滴课堂-学习笔记:前端-后端项目云服务器生产环境部署核心知识

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 第1集 小滴课堂互联网架构之应用部署上线核心知识 第2集 云服务器介绍和阿里云服务器ECS服务器选购 第3集 阿里云服务器远程登录和常用工具 生产环境Linux CentOS云服务器常见相关软件安装 第1集 阿里云Linux服务器Centos7 安装JDK8环境 第2集 生产环境Linux服务器上Nginx介绍和安装 第3集 生产环境Linux服务器上Mysql安装和导入数据 小滴课堂综合.

dev666的博客 2390

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

小滴课堂-学习笔记:(1)JAVASE课程

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 第1集 茫茫人海中为何选择java这门语言 第2集 速成系列java从入门到告诉高手课程介绍 第3集 Java语言编程发展历程和JVM概述 第4集 概念理解面向对象编程和特点 第二章 Java开发环境准备和基础语法第一季 第2集 新版Java环境变量配置 第3集 完成你的第一个Java程序Hello World 第4集 Hello World程序剖析Java语法 第三章 集成开发环..

dev666的博客 2015

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Linux基础和常用命令(一)

Linux的7种文件类型 普通文件:存在于外部存储器,用于存储普通数据。 目录文件:用于存放目录项,是文件系统管理的重要文件类型 连接文件:用于间接访问另外一个文件目标(windows快捷方式) 管道文件:一种用于进程间通信的特殊文件 套接字文件:一种用于网络间通信的特殊文件 块设备文件:就是存储数据以供系统存取的借口设备,简单而言就是硬盘 字符设备文件:字符设备在应用层的访问接口 linux系统目录树架构就是以根目录为主,然后向下呈分支状的目录结构。

weixin_43978088的博客 267

小滴课堂-第十六章学习笔记:小滴课堂微服务架构+编写面试BAT高级工程师简历

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 ​愿景:"让编程不再难学,让技术与生活更加有趣" 第1集 你知道未来的小滴课堂微服务架构图吗? 第2集 你知道怎么编写一份合格的初级+高级工程师简历吗 第3集 编写面试大厂月薪20k+的高级工程师简历【原创】 第5集 简历项目经验之电商核心支付网关 第6集 简历项目经验之用户中心的作用 第7集 简历项目经验之营销插件服务 第1集 你知道未来的小滴课堂微服务架构图吗? 简介:概述分...

dev666的博客 852

【Java视频教程等百度云资源分享】

  韩顺平javase(87讲)密码:hsp789 链接:https://pan.baidu.com/s/1eNCyvFcVHsd7P4gdvrFqtw密码:el1y   韩顺平javaee(66讲)密码:hsp789 链接:HTTPS://pan.baidu.com/s/1UXDG6a66Q8qo-uwFphg9hA密码:ngq4   韩顺平J2EE视频实战教程(20讲)密码:hs...

超级大白 4万+

阿里 P6 到底应该具备哪些核心能力?

见字如面,我是军哥。有一位读者朋友联系我,说他有阿里的技术人才能力模型,但是不能完全理解,想问问能不能解读一下,我看了一下内容确实很棒,于是我决定来解读一下,这个模型分为初级、中级和高级,...

chengjun_java的专栏 5178

面阿里P6需要掌握的部分技术

Java集合:HashMap和ConcurrentHashMap,平时最好有读一些源码,最好知道每个参数为什么设置成这么大?有什么好处? JUC包肯定要学,即使平时的编程根本不用,也必须得会。至少要知道aba,cas,aqs,unsafe,volatile,sync,以及常见的各种lock,死锁,线程池参数等,也必须要明白自旋,阻塞,死锁和它如何去定位,oom如何定位问题,cpu过高如何定位等基本的操作,你可以没有生产调试经验,但不代表你可以不会top,jps,jstack,jmap这些可能会问的东西。以.

牧xin的博客 1523

阿里p6的大数据开发工程师都要学什么?

又涨啦!据第三方数据统计,2020年9月全国招收程序员352733人,9月全国程序员平均工资14469元,相比8月的14401元涨了68元。但不少人却说薪资根本没有这么高,其实虽然都是程...

Java后端技术 1118

小滴课堂-学习笔记:小滴课堂面试专题介绍+简历分析+投递

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 第1集 小滴课堂面试专题课程介绍+适合人员+学后水平 第2集 小滴课堂面试专题第一季大纲速览,你知道多少 第3集 互联网公司校/社招的招聘要求解读 第4集 学历/部分招聘条件不符合? 互联网公司简历投递技巧 第5集 BAT大厂社招、校招、内推常见的面试形式有多少 第6集 拿到面试通知,怎样应对互联网公司的多轮面试 第7集 社招+校招被技术面试完虐系列之多方位考查点 干货文档 第1集 小滴.

dev666的博客 2399

小滴课堂-学习笔记:(7)提效神器之代码自动生成MybatisPlus-Generator+Lombok

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 第1集 项目引入Mybatis-plus-generator代码自动生成工具 第2集 自动化生成代码-加入项目和自动化工具思考 第3集 提效神器-MyBatisPlus课程总结 干货文档 第1集 项目引入Mybatis-plus-generator代码自动生成工具 简介:介绍Mybatis-plus-generator代码自动化生成工具 Mybatis-plus-generator..

dev666的博客 1061

小滴课堂-学习笔记:(19)【高级篇】AlibabaCloud微服务阿里云ECS容器化部署

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 第1集 配置文件Bug修复-网关重新打包推送 第2集 网关配置迁移阿里云Nacos配置中心和服务启动 第3集 视频和订单服务迁移阿里云Nacos配置中心和镜像打包 第4集 阿里云ECS服务器快速安装Mysql数据库 第5集 AlibabaCloud视频和订单服务阿里云启动 第6集 微服务阿里云部署全链路验证和线上测试 干货文档 第1集 配置文件Bug修复-网关重新打包推送 简介:脚..

dev666的博客 692

小滴课堂-学习笔记:(7)你知道结构型设计模式装饰器+代理模式 ?留下来聊聊

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 第1集 如虎添翼的设计模式-装饰器设计模式介绍 第2集 满足老王的改装搭配-玩转装饰器设计模式案例实战 第3集 JDK源码里面的Stream IO流-装饰器设计模式应用 第4集 加盟商来啦-你需要掌握的代理设计模式《上》 第5集 加盟商来啦-你需要掌握的代理设计模式《下》 第6集 大量使用第三方SDK-它们常用的外观设计模式你知道多少? 第7集 案例实战-外观设计模式在多渠道消息推送里..

dev666的博客 593
上一篇: 小滴课堂-学习笔记:应聘大厂工程师/技术经理的你编程基础是否牢固《下》(大厂校招+社招必备)
下一篇: 小滴课堂-学习笔记:面试BAT高级工程师/技术经理的java集合框架Map
dev666
博客等级 码龄9年 100粉丝 106原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值