阿里面试官的”说一下从url输入到返回请求的过程“问的难度就是不一样!

阿里Java后端实习面经,历经5轮,终已上岸,来看看面试难度。 一面 1. 触发新生代GC,如果存活对象总量大于survivor区容量,咋办 2. 如果任务很多,线程池的阻塞队列会撑爆内存的哪个区域 3. 栈在堆上吗 4. GC root有哪些 5. 实例变量可以是GC root吗 6. 了解哪些GC算法,介绍一下 7. 给个场景,问怎么设置JVM参数 8. 问了很多SQL调优,各种语句能不能命中索引,能命中哪些,怎么优化 9. MySQL的一张表里有三个字段ABC,A的种类有1000种,B有1W种,C有10W种,ABC的联合索引怎么设置,怎么使用 10. Myba.. 阅读详情

前言

年前准备换工作,总结了一波面试最频繁的面试问题跟大家交流。此文章是关于浏览器的常见问题,大概面试10家遇到6家提问类似问题(主要是大厂和中厂)。(面试的部分内容已经忘了,为了串联成一个完整的故事,增加可读性,20%的内容为虚构),目前入职滴滴出行成都团队。

问题: 从浏览器地址栏输入url到请求返回发生了什么

你一看这种烂掉牙的问题,小case,但996面试大佬由此延展的问题已经远远超越了这个问题本身了,不信你就接着看。

我回答了首先会进行 url 解析,根据 dns 系统进行 ip 查找。

话音刚落,此时一位喜欢修福报的公司的大佬打断了我,说url为啥要解析,dns查询规则是什么?我一听就心里想,不按套路出牌啊,网上一般都没问这两个问题,心里再一想,俗话说,万事开头难,扛过这一波,答出来,就是阳光明媚,万物骚动的春天!

先说为什么url要解析(也就是编码)

  • 我回答大概内容是:因为网络标准规定了URL只能是字母和数字,还有一些其它特殊符号(-_.~ ! * ’ ( ) ; : @ & = + $ , / ? # [ ],特殊符号是我下来查的资料,实在背不住这么多,比较常见的就是不包括百分号和双引号),而且如果不转义会出现歧义,比如http:www.baidu.com?key=value,假如我的key本身就包括等于=符号,比如ke=y=value,就会出现歧义,你不知道=到底是连接key和value的符号,还是说本身key里面就有=。
  • 大佬接着毒打我说,那url编码的规则是什么呢,我说utf-8
  • 大佬接着穷追不舍,为啥是utf-8呢,所有浏览器都是这样吗?中文的话用gb2312编码吗,还有就是万一浏览器不是你说的这样统一用utf-8,你怎么保证都是utf-8的编码?
  • 我支支吾吾的说,我了解的大概是这样,不太清楚, 应该和html本身的编码格式有关,然后怎么保证utf-8的编码,我觉得可以用encodeURIComponent
  • 大佬说encodeURIComponent比encodeURI有什么区别?
  • 区别就是encodeURIComponent编码范围更广,适合给参数编码,encodeURI适合给URL本身(locaion.origin)编码,当然项目里一般都是用qs库去处理

然后说说dns解析流程,并且html如何做dns优化

首先dns这个属于很久以前在计算机网络谢希仁版看到过了,有一些细节忘了,但是大致流程是记得的。比如说查询一个网址为:www.baidu.com

1、器中输入https://www.baidu.com 域名,操作系统会先查hosts件是否有记录,有的话就会把相对应映射的IP返回。

2、hosts文件没有就去查本地dns解析器有没有缓存。(这个我没答上来)

3、然后就去找我们计算机上配置的dns服务器上有或者有缓存,就返回

4、还没有的话就去找根DNS服务器(全球13台,固定ip地址),然后判断.com域名是哪个服务器管理,如果无法解析,就查找.baidu.com服务器是否能解析,直到查到www.baidu.com的IP地址

注:后面查资料才发现dns查询有两种模式,一种是转发模式,一种是非转发模式,我上面说的4是非转发模式。

前端的dns优化,可以在html页面头部写入dns缓存地址,比如

<meta http-equiv="x-dns-prefetch-control" content="on" />
<link rel="dns-prefetch" href="http://bdimg.share.baidu.com" />
复制代码

终于抗过了第一轮的猛问,接着我继续说从浏览器地址栏输入url到请求返回发生了什么

查找到IP之后,就是http协议的三次握手(以及后面会涉及到四次分手)

我刚恢复节奏,准备侃侃而谈,修福报的大佬再次打断了我,说三次握手,为啥两次不行,顺便说一下3次握手发生了什么。

我去,大意了,没有闪,这是不是说我每说一句都要夹杂着各种问题,太难了啊!!!

没有办法,继续回答大佬,我说我先回答三次握手发生的事情吧,简答来说:

  • 第一次握手:主机A发送位码为SYN=1的TCP包给服务器,并且随机产生一个作为确认号(这是tcp包的一部分),主机B收到SYN码后直到A要求建立连接;

  • 第二次握手:主机B收到请求后,向A发送确认号(主机A的seq+1),syn=1,seq = 随机数 的TCP包;

  • 主机A收到后检查确认号是否正确,即第一次A发送的确认号是否+1了,以及位码ack是否为1,若正确,主机A会再发送确认号(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

接着补上小问题为什么两次握手不行,因为第二次握手,主机B还不能确认主机A已经收到确认请求,也是说B认为建立好连接,开始发数据了,结果发出去的包一直A都没收到,那攻击B就很容易了,我专门发包不接收,服务器很容易就挂了。

接着,大佬说出个加分题,我看你不是科班出身,能答多少是多少。问题是,从网卡把数据包传输出去到服务器发生了什么,提示我OSI参考模型

我一听,好嘛,这不是计算机网络的知识吗,幸亏之前看过书,但也是好久以前看过了,只能凭借自己的理解解答了。

  • 我说,先从局域网把数据发送到公司的交换机(如果交换机没有缓存本地mac地址和IP地址的映射,此时会通过ARP协议来获得),交换机的好处是可以隔离冲突域(因为以太网用的是CSMA/CD协议,这个协议规定网线上同一时刻只能有一台机器发送数据),这样就可以不仅仅同一时刻只有一台机器发送网络包了
  • 然后交换机再将数据发送到路由器,路由器相当于公司网关(我们公司小),路由器具有转发和分组数据包的功能(路由器通过选定的路由协议会构造出路由表,同时不定期的跟相邻路由器交换路由信息),然后这算是经过了物理层,数据链路层(以太网),开始到网络层进行数据转发了
  • 然后路由器转发IP数据报,一般公司的IP地址都会经过NAT转换,让内网的ip也能够访问外网,我们公司我注意了一下是192.168打头的内网ip地址。通过路由器的分组传输,所有数据到达服务器。
  • 然后服务器的上层协议传输层协议开始发挥作用,根据tcp包里的端口号,让服务器特定的服务来处理到来的数据包,并且tcp是面向字节流的(tcp有四大特性,可靠传输、流量控制、拥塞控制、连接管理),所以我们node的request对象,它的监听事件data事件为什么要用字符串一起拼接起来呢(buffer),就是因为tcp本身就是字节流,request对象使用的data(http层面)是tcp传来的数据块。
  • 最后数据由传输层转交给应用层,也就是http服务(或者https),后端经过一系列逻辑处理,返回给前端数据。

答完这里,我说大佬我只知道大概的流程,具体细节我不是很清楚,但自己后面会补上。。。

大佬让我继续,我就接着3次握手之后接着说道,建立完链接,就该请求html文件了,如果html文件在缓存里面浏览器直接返回,如果没有,就去后台拿

刚说到缓存,立马就有一种不详的预感,果不其然大佬先让把缓存解释一下。缓存这种问烂的问题,本以为能轻松应对,结果还是被问了个满头包。。。。

我说的大概意思是:

  • 浏览器首次加载资源成功时,服务器返回200,此时浏览器不仅将资源下载下来,而且把response的header(里面的date属性非常重要,用来计算第二次相同资源时当前时间和date的时间差)一并缓存;

  • 下一次加载资源时,首先要经过强缓存的处理,cache-control的优先级最高,比如cache-control:no-cache,就直接进入到协商缓存的步骤了,如果cache-control:max-age=xxx,就会先比较当前时间和上一次返回200时的时间差,如果没有超过max-age,命中强缓存,不发请求直接从本地缓存读取该文件(这里需要注意,如果没有cache-control,会取expires的值,来对比是否过期),过期的话会进入下一个阶段,协商缓存

  • 协商缓存阶段,则向服务器发送header带有If-None-Match和If-Modified-Since的请求,服务器会比较Etag,如果相同,命中协商缓存,返回304;如果不一致则有改动,直接返回新的资源文件带上新的Etag值并返回200;

  • 协商缓存第二个重要的字段是,If-Modified-Since,如果客户端发送的If-Modified-Since的值跟服务器端获取的文件最近改动的时间,一致则命中协商缓存,返回304;不一致则返回新的last-modified和文件并返回200;

果不其然,大佬问了一些缓存不常问的,首先就是问我知道什么是from disk cache和from memory cache吗,什么时候会触发?

  • 我说强缓存会触发,这两种,具体什么行为不知道,大概内容如下:
1、先查找内存,如果内存中存在,从内存中加载;
2、如果内存中未查找到,选择硬盘获取,如果硬盘中有,从硬盘中加载;
3、如果硬盘中未查找到,那就进行网络请求;
4、加载到的资源缓存到硬盘和内存;
复制代码

接着大佬又问知道什么是启发式缓存吗,在什么条件下触发?

这个问题给我的感觉就两个字,懵逼!然后如实回答不知道。(查了下资料大概如下)

启发式缓存:

如果响应中未显示Expires,Cache-Control:max-age或Cache-Control:s-maxage,并且响应中不包含其他有关缓存的限制,缓存可以使用启发式方法计算新鲜度寿命。通常会根据响应头中的2个时间字段 Date 减去 Last-Modified 值的 10% 作为缓存时间。

// Date 减去 Last-Modified 值的 10% 作为缓存时间。
// Date:创建报文的日期时间, Last-Modified 服务器声明文档最后被修改时间
  response_is_fresh =  max(0,(Date -  Last-Modified)) % 10
复制代码

接着回答,我说返回html之后,会解析html,这部分知识我提前准备过,但是答的不是很详细,大概意思就是cssom + domTree = html,然后布局和绘制

  • 构建DOM树(DOM tree):从上到下解析HTML文档生成DOM节点树(DOM tree),也叫内容树(content tree);

  • 构建CSSOM(CSS Object Model)树:加载解析样式生成CSSOM树;

  • 执行JavaScript:加载并执行JavaScript代码(包括内联代码或外联JavaScript文件);

  • 构建渲染树(render tree):根据DOM树和CSSOM树,生成渲染树(render tree);

  • 渲染树:按顺序展示在屏幕上的一系列矩形,这些矩形带有字体,颜色和尺寸等视觉属性。

  • 布局(layout):根据渲染树将节点树的每一个节点布局在屏幕上的正确位置;

  • 绘制(painting):遍历渲染树绘制所有节点,为每一个节点适用对应的样式,这一过程是通过UI后端模块完成;

接着面试官问我一些页面渲染层的一些优化手段,大概如下:

页面渲染优化

  • HTML文档结构层次尽量少,最好不深于六层;
  • 脚本尽量后放,放在前即可;
  • 少量首屏样式内联放在标签内;
  • 样式结构层次尽量简单;
  • 在脚本中尽量减少DOM操作,尽量缓存访问DOM的样式信息,避免过度触发回流;
  • 减少通过JavaScript代码修改元素样式,尽量使用修改class名方式操作样式或动画;
  • 动画尽量使用在绝对定位或固定定位的元素上;
  • 隐藏在屏幕外,或在页面滚动时,尽量停止动画;
  • 尽量缓存DOM查找,查找器尽量简洁;
  • 涉及多域名的网站,可以开启域名预解析

最后面试官问我,如何诊断页面渲染时各个性能指标,我大概说了,通过chrome浏览器的工具,比如看网络请求情况的network,还有看页面渲染情况的perfermance,面试下来自己查了一些资料,比如知乎的这篇文章,我觉得写的很详细,以下是摘抄部分,我打算以后有机会自己总结一篇。

了解更多加入我们前端学习圈

【Bug已解决】Codex CLI 报错 apply_patch 失败:无法应用补丁的解决方案 方案适用场景推荐指数统一换行符规范跨平台协作项目的标准配置⭐⭐⭐⭐⭐关闭自动格式化冲突IDE 与 Codex 并发编辑同一文件⭐⭐⭐⭐缩小任务改动范围长期有效的使用习惯优化⭐⭐⭐⭐⭐统一 UTF-8 编码涉及非 UTF-8 遗留文件的项目⭐⭐⭐提示重新读取文件单次失败后的快速恢复方式⭐⭐⭐⭐报错的本质是Codex 生成补丁时读取的文件内容,与实际应用补丁时磁盘上的文件内容出现了不一致,常见诱因包括换行符风格混用、文件被其他工具并发修改、编码问题等。 阅读详情

相关推荐

Linux下Linpack测试GPU和CPU性能

前面的文章已经介绍了如何搭建Linpack环境:https://blog.youkuaiyun.com/liu_feng_zi_/article/details/107429720 接下来说明如何使用 一、编写运行脚本: 新建文件:run_linpack.sh,内容如下: export HPL_DIR =/root/LHC/Linpack/hpl-2.0_FERMI_v15 export MKL_NUM_THREADS=6 export OMP_NUM_THREADS=6 export MKL_DYNAMI.

liu_feng_zi_的专栏 4633

阿里Java实习一面

阿里Java实习一面: 约好了晚上九点,等了一个多小时以为面试官忘了,上床睡觉。 十一点已经睡觉了,手机响起来。 可能是太晚了,没有问很多东西。 1.介绍一下自己 2.介绍项目 3.你在项目中觉得难点是什么,怎么解决的 4.数据库事务了解吗? 5.你知道acid吗? 6.还有常用的设计模式,挑几个熟悉的讲解一下。 7.乐观锁,悲观锁 8.多线程乐观锁和悲观锁是怎么实现的 9.hashmap的底层实...

weixin_45405425的博客 384

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口)

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口) 之前写了一篇关于C++调用海康相机SDK采集图像的文章,有很多人私下发送消息咨询了一些问题,由于工作繁忙,只答复了一部分问题,今天抽出时间从头梳理了一下大家提出的问题,把我能够回答的问题都解答一次。上一次的程序只是简单的实现了图像的采集,没有使用到线程,今天把程序重新做出调整,把线程和多态加进去。文章最后有项目的下载地址。 我使用的是QT Creator这个IDE,版本信息如下: 我把相机采集的图像转换为openC

大樱桃的博客 1万+

在浏览器地址栏输入URL,按下回车后究竟发生了什么?

这是一道面试会经常问的问题,平时虽然很常见的操作,但是探究其底层原理,可能并不是一件简单的事情,于是我从各处搜罗整理下全过程,在这里做分享。 第一步:浏览器输入域名 例如输入:www.youkuaiyun.com/ 第二步:浏览器查找域名的IP地址 浏览器会把输入的域名解析成对应的IP,其过程如下: 1.查找浏览器缓存:因为浏览器一般会缓存DNS记录一段时间,不同浏览器的时间可能不一样,一般2-...

jiao_0509的博客 2万+

史上最全的Logisim存储系统实验教程(基于华中科技大学计算机组成原理实验)内赋源码下载

本博客是最全的最好的解释的华中科技大学计算机组成实验存储系统实验,本博客给出了电路实现,也给出了使用电路的原因有利于新手学习十分详细。并且内赋源码下载。

qq_62325622的博客 2万+

Type-C转DP1.4转C双向互传转接线方案

Type-C转DP双向互转方案的核心在于利用Type-C接口中的Alt Mode(交替模式)功能。通过利用Type-C接口的Alt Mode功能,该方案实现了Type-C接口与DP接口之间的双向互传,极大地丰富了用户的视觉体验。在选择Type-C转DP双向互转方案时,用户需要关注兼容性、性能需求、线缆长度和品牌等因素,以确保获得最佳的传输质量和使用体验。因此,Type-C转DP双向互转方案应运而生,旨在实现Type-C接口与DP接口之间的无缝连接,满足用户对高效能和高清晰度视频传输的需求。

m0_70875024的博客 4976

从浏览器地址栏输入url到请求返回发生了什么?

1、进行域名解析、根据DNS进行IP查找 URL 常见的RUL是这样的:http://www.baidu.com,这个域名由三部分组成:协议名、域名、端口号。 除此之外URL还会包含一些路径、查询和其他片段,例如:http://www.baidu.com/search?k=E5S56。 我们最常见的的协议是HTTP协议,除此之外还有加密的HTTPS协议、FTP协议、FILe协议等等。 mailto: 协议指示浏览器打开邮件客户端;ftp:协议指示浏览器处理文件传输。 URL的中间部分为域名或者是IP,之后就

renxing的博客 966

神经形态芯片:IBM TrueNorth技术详解以及应用案例

2018年的一项演示中,机器人使用TrueNorth处理了复杂的路径规划,功耗仅为传统系统的1/10。它通过模仿人脑的结构,解决了传统芯片在功耗和并行性上的痛点,并在图像识别、物联网和机器人等领域展现了强大潜力。:不同于传统芯片的时钟驱动,TrueNorth是事件驱动的。例如,工厂中的振动传感器使用TrueNorth检测设备故障的早期迹象,实现了更高效的维护策略,避免了停机时间。:在医疗领域,TrueNorth可以用于可穿戴设备,比如一个智能助听器,它能过滤噪音并增强特定声音,功耗低到可以用纽扣电池供电。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2477

从url输入到页面到底发生了什么?(详解)

从url输入到页面发生的过程详解。

weixin_47818125的博客 1191

Handler相关面试题

常见面试题: Handler相关 一.谈一谈你对handler的认识,例如:机制和实现等。 handler机制图解: handler常见使用过程: ①.子线程向主线程发送消息: 在主线程中新建Handler实例,并重写handleMessage()方法用于处理子线程传过来的message; 通过Message.obtain()方法获取到消息msg,然后将需要传递给主线程的信息通过msg的what、obj等字段传递; 通过handler的sendMessage发送msg消息,然后在hand

龚礼鹏的博客 3170

光学防抖OIS介绍与标定

前言:先看一下有无ois系统的效果。 1. OIS系统的作用就是消除镜头的抖动。 Gyro感受方向,Hall感受位移,Actuator驱动马达来矫正抖动方向和位移。 2.ois系统的结构构成 从上面来看ois系统主要有Hall,...

camerall 1万+

从浏览器地址栏输入 URL 到请求返回发生了什么?

从浏览器地址栏输入 URL 到请求返回发生了什么?

ProgramNovice的博客 1388

20、超声多普勒成像技术全解析

本文全面解析了超声多普勒成像技术,涵盖彩色血流成像(CFI)、能量多普勒成像、超快多普勒成像和矢量多普勒成像的原理、流程、优势及临床应用场景。详细探讨了各成像模式的特点,如CFI的血流方向与速度可视化、能量多普勒对小血管的高灵敏度、超快多普勒的高帧率分析能力,以及矢量多普勒消除角度依赖性的创新方法。同时分析了技术面临的挑战及未来发展趋势,包括更高分辨率、人工智能辅助诊断和便携式设备的发展,为医学影像研究和临床诊断提供重要参考。

z2a3b4c5d的博客 277

阿里面试官的 "说一下从url输入到返回请求的过程" 问的难度就是不一样!

来源:juejin.cn/post/6928677404332425223前言年前准备换工作,总结了一波面试最频繁的面试问题跟大家交流。此文章是关于浏览器的常见问题,大概面试10家遇到6家...

Java笔记虾 396

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

阿里面试官问“说一下从 url 输入到返回请求的过程”的难度就是不一样!

点击上方前端瓶子君,关注公众号回复算法,加入前端编程面试算法每日一题群加入我们一起学习,天天进步前言年前准备换工作,总结了一波面试最频繁的面试问题跟大家交流。此文章是关于浏览器的常见问题...

我本可以容忍阳光,如果我不曾见过太阳,然而阳光已使我荒凉,成为更新的荒凉。 155

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

阿里面试官:说一下从url输入到返回请求的过程,问的难度就是不一样!

前言年前准备换工作,总结了一波面试最频繁的面试问题跟大家交流。此文章是关于浏览器的常见问题,大概面试10家遇到6家提问类似问题(主要是大厂和中厂)。(面试的部分内容已经忘了,为了串联成一个...

lxw1844912514的博客 687

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

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

阿里面试官:“说一下从 url 输入到返回请求的过程”!网友:直接收藏本文a...

点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐]前言年前准备换工作,总结了一波面试最频繁的面试问题跟大家交流。此文章是关于浏览器的常见问题,大概面试10家遇到6家提问类似问题(...

全栈开发者社区 231

完爆面试官!面试字节跳动两轮后被完虐,吊打面试官系列!

Android没凉,只是比以前难混了 多年前Android异军突起,成了新的万亿级市场,无数掘金人涌入,期待可以一展拳脚。 那时候大环境下的手游圈,只要你能有个可以运行的连连看就能找到工作,走上赛道被浪潮推着前进,这个行业不可谓不光明。 如今浪潮速度放缓,漫天飞舞着唱衰Android的讯息,“凉凉”是最多的字眼。 但放心,Android真的没凉! Android入门相对简单,初级Android很多很多,趋近饱和,你随意打开一个招聘app就能很直观的判断出来,现在Android准入的条件越来越高了。 一面(

m0_57081438的博客 472

面试官慌了!阿里内部流传的“P8架构师学习路线”外泄,从此学习java再无压力!

前言 最近老是有粉丝私信我说感觉自己学java越来越难了,这其中有刚毕业的应届生说自己的技术找不到满意的工作,也有在学校的大学习说找不到学习方式,更多的是正在工作的java开发人员说是现在的技术更新太快,自己很难跟得上大厂的需求跳槽太难!针对粉丝跟我说的这些情况我为大家整理了java全栈的这一套学习路线,深入浅出,简单好学!满满的干货都放在下面了! Java 入门 学什么? Java 语言从诞生到现在已经有20多年了,从Tiobe排行榜上来看,Java 语言常年霸榜经久不衰,所以不要怕学完 Java 后突然

weixin_53224039的博客 687

百度+阿里+腾讯+笔试题目(2020届)

百度度秘事业部 百度是我第一家面试的公司,而且还是bat的大厂级别,那时的我也不知道自己啥水平,接到面试电话慌的不行,面试第一次非常难忘。下午3点,面试40分钟! 百度一面: 1、实验室项目里面使用什么建模的 2、进程和线程具体的区别 3、协程 4、ngnix高性能服务器,为啥高性能 5、输入一个URL,如何显示页面的过程 6、TCP三次握手 7、为什么需要三次握手 8、Time_w...

WangY.H 5500

职场人深夜啪啪啪大赏,HR会的也太多了叭!

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍点击上方 "编程技术圈"关注,星标或置顶一起成长后台回复“大礼包”有惊喜礼包!每日英文When you have determined...

程序员小乐 4万+
上一篇: 【建议收藏】2021字节跳动、腾讯、阿里巴巴等一线互联网校招前端面试真题解析
下一篇: 最佳实践React性能优化
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值