环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

环信客服云

环信客服云

无需下载,注册即用
声网开发者社区

声网开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有
0
评论

iOS Runtime (四)Runtime的消息机制 iOS

iOS开发雨淋湿了天空 发表了文章 • 38 次浏览 • 2021-10-21 11:00 • 来自相关话题

引言 iOS的消息转发机制,在我们开发中有时候忘记实现某个声明的方法,从而在运行过程中调用该方法出现崩溃, 当然这类问题是可以解决的,在当前对象或者父类对象中添加对象的方法实现,再重新运行,调用该方法就能解决这个问题,又或者在我们运行的时候动态的去添加接收者中... ...查看全部
0
评论

Java正则表达式语法大全 正则表达式

技术精选王二蛋和他的张大花 发表了文章 • 45 次浏览 • 2021-10-21 09:35 • 来自相关话题

在我们日常开发项目中经常用到正则表达式/比如邮箱/电话手机号/域名/ip等)都会经常用到其实一个字符串就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串。.(点号)也是一个正则表达式,... ...查看全部
0
评论

熬夜再战Android之修炼Kotlin-【Get和Set】、【继承】、【抽象类/嵌套类/内部类】篇 kotlin

技术精选王二蛋和他的张大花 发表了文章 • 33 次浏览 • 2021-10-21 09:33 • 来自相关话题

前提 当前环境 2021年10月8日最新下载2020.3.1 Patch 2 版本 👉实践过程 😜Get和Set 其实Kotlin声明实体类之后,里面的变量默认就带有set和get的属性功能了。除非想要特殊业务内容。 比如set需要结合项目进行其他业务处理,g... ...查看全部
0
评论

使用BlackHook(黑钩) 可以Hook一切java或者kotlin方法 Hook

技术精选王二蛋和他的张大花 发表了文章 • 31 次浏览 • 2021-10-21 09:32 • 来自相关话题

前言 之前做内存优化的时候,为了实现对线程的使用监控,借助了一个第三方的hook框架(epic),这个框架可以hook一切java方法,使用也简单,但是最大的问题是它有较严重的兼容性问题,部分机型会出现闪退的现象,这就导致它不能被带到线上使用,只能在线下使用,... ...查看全部
0
评论

扒一扒Android的.9图 .9图 Android

技术精选柳天明 发表了文章 • 48 次浏览 • 2021-10-20 14:42 • 来自相关话题

前言相信大家对.9图都不陌生,我们在开发当中当有控件的背景需要对内容的大小做自适应的时候,可能就需要用到.9图。如下图所示,就是一张.9图。官方是这么定义的:NinePatchDrawable 图形是一种可拉伸的位图,可用作视图的背景。Android... ...查看全部
0
评论

在Android中使用Netty进行通讯,附带服务端代码 IM Netty

技术精选柳天明 发表了文章 • 53 次浏览 • 2021-10-20 14:41 • 来自相关话题

NettyNetty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。 Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke's Choice Award... ...查看全部
0
评论

再谈协程之第三者Flow基础档案 协程 kotlin

技术精选柳天明 发表了文章 • 39 次浏览 • 2021-10-20 14:32 • 来自相关话题

该来的还是来了,LiveData提供了响应式编程的基础,搭建了一套数据观察者的使用框架,但是,它相当于RxJava这类的异步框架来说,有点略显单薄了,这也是经常被人诟病的问题,因此,Flow这个小三就顺应而生了。Flow作为一套异步数据流框架,几乎可以约等于R... ...查看全部
0
评论

Hilt 扩展 | MAD Skills 依赖注入 hilt Android

技术精选柳天明 发表了文章 • 30 次浏览 • 2021-10-20 14:29 • 来自相关话题

案例: WorkManager 扩展Hilt 扩展是一个生成代码的库,常通过注解处理器实现。生成的代码作为构成 Hilt 依赖项注入关系图的模块或入口点。Jetpack 中 WorkManager 的集成库就是一个扩展的例子。WorkManager ... ...查看全部
0
评论

面试官:Java从编译到执行,发生了什么? 编译

技术精选王二蛋和他的张大花 发表了文章 • 38 次浏览 • 2021-10-20 09:36 • 来自相关话题

面试官:今天从基础先问起吧,你是怎么理解Java是一门「跨平台」的语言,也就是「一次编译,到处运行的」?候选者:很好理解啊,因为我们有JVM。候选者:Java源代码会被编译为class文件,class文件是运行在JVM之上的。候选者:当我们日常开发安装JDK的... ...查看全部
0
评论

面试官:双亲委派模型你了解吗? 双亲委派

技术精选王二蛋和他的张大花 发表了文章 • 42 次浏览 • 2021-10-20 09:35 • 来自相关话题

面试官:要不你今天来详细讲讲双亲委派机制? 候选者:嗯,好的。 候选者:上次提到了:class文件是通过「类加载器」装载至JVM中的 候选者:为了防止内存中存在多份同样的字节码,使用了双亲委派机制(它不会自己去尝试加载类,而是把请求委托给父加载器去完成,依次向... ...查看全部
0
评论

Flutter 快速开发框架 Flutter

技术精选王二蛋和他的张大花 发表了文章 • 31 次浏览 • 2021-10-20 09:32 • 来自相关话题

项目简介 此框架旨在将常规的Flutter项目中使用到的通用(与业务无关)的功能从剥离出来,构成Flutter开发项目的框架,在开发新的Flutter项目时,可以直接引用本项目 import 'package:framework/framework.dart'... ...查看全部
0
评论

都 2021 年了,还有人在研究 Handler? handler

技术精选王二蛋和他的张大花 发表了文章 • 40 次浏览 • 2021-10-20 09:28 • 来自相关话题

我们经常使用和提及 Android 中特有的线程间通信方式即 Handler 机制,缘于该机制特别好用、极为重要! 初尝 Handler 机制的时候,原以为 Handler 类发挥了很大的作用。当你深入了解它的原理之后,会发现 Handler 只是该机制的调用... ...查看全部
0
评论

【知识点】OkHttp 原理 8 连问 okhttp

技术精选王二蛋和他的张大花 发表了文章 • 34 次浏览 • 2021-10-20 09:27 • 来自相关话题

前言 OkHttp可以说是Android开发中最常见的网络请求框架,OkHttp使用方便,扩展性强,功能强大,OKHttp源码与原理也是面试中的常客 但是OKHttp的源码内容比较多,想要学习它的源码往往千头万绪,一时抓不住重点. 本文从几个问题出发梳理OKH... ...查看全部
0
评论

写给vue转react的同志们(4) react vue

Web开发马师傅 发表了文章 • 41 次浏览 • 2021-10-19 22:56 • 来自相关话题

下一篇应各位老爷要求,这篇文章开始拥抱hooks,本文将从vue3与react 17.x(hooks)对比来感受两大框架的同工异曲之处。 今天的主题:vue3与react 定义与修改数据vue3与react 计算属性vue3与react 实现监听 vue3与r... ...查看全部
0
评论

写给vue转react的同志们(3) 前端面试 react vue

Web开发马师傅 发表了文章 • 47 次浏览 • 2021-10-19 22:54 • 来自相关话题

下一篇我们都知道vue上手比较容易是因为他的三标签写法以及对指令的封装,他更像一个做好的包子你直接吃。 相比react他的纯js写法,相对来说自由度更高,这也意味着很多东西你需要自己手动封装,所以对新手没那么友好,所以他更像面粉,但可以制作更多花样的食物。 今... ...查看全部
0
评论

写给vue转react的同志们(2) react vue

Web开发马师傅 发表了文章 • 34 次浏览 • 2021-10-19 22:51 • 来自相关话题

下一篇react中想实现类似vue中的插槽 首先,我个人感觉jsx的写法比模板写法要灵活些,虽然没有像vue那样有指令,这就是为啥vue会上手简单点,因为他就像教科书一样教你怎么使用,而react纯靠你手写表达式来实现。 如果你想实现类似插槽的功能,其实大部分... ...查看全部
0
评论

写给vue转react的同志们(1) react vue 前端面试

Web开发马师傅 发表了文章 • 44 次浏览 • 2021-10-19 22:49 • 来自相关话题

学习一个框架最好的办法就是从业务做起。首先我们要弄清做业务需要什么知识点去支持 今天的主题:react 是怎么样传输数据的react 怎么封装组件react 的生命周期 实际上vue熟练的同学们,我觉得转react还是比较好上手的,就是要适应他的纯js的写法以... ...查看全部
1
回复

这个redpacketlibrary包是环信官方的吗??? 环信_Android

Android开发转角45°、嫣然一笑 回复了问题 • 2 人关注 • 48 次浏览 • 2021-10-19 17:41 • 来自相关话题

0
评论

iOS Runtime (三)Runtime的消息机制 iOS

iOS开发雨淋湿了天空 发表了文章 • 46 次浏览 • 2021-10-19 11:19 • 来自相关话题

消息发送 消息机制就是向接收者发送消息,并带有参数,根据接收者对象的数据结构,找到相关发放实现,最后达到这个消息的目的。 objc_msgSend是Runtime的核心,Objective-C中调用对象方法就是消息传递。 objc_msgSend并不是直接调用... ...查看全部
0
评论

iOS Runtime (二) Runtime底层详解 iOS

iOS开发雨淋湿了天空 发表了文章 • 42 次浏览 • 2021-10-19 11:18 • 来自相关话题

Runtime的定义? 为了更好的认识类是怎么工作的,我们将要将一段Object-C的代码用clang看下底层的C/C++的写法。 在Object-C中的NSObject对象中@interface NSObject <NSObject> { ... ...查看全部
0
评论

iOS Runtime (一) 什么是Runtime? iOS

iOS开发雨淋湿了天空 发表了文章 • 47 次浏览 • 2021-10-19 11:15 • 来自相关话题

一:Runtime是什么? 1,运行时(Runtime)是指将数据类型的确定由编译时推迟到了运行时。 2,Runtime是一套比较底层的纯C语言API, 属于1个C语言库, 包含了很多底层的C语言API。 3,平时编写的OC代码,在程序运行过程中,其实最终会... ...查看全部
0
评论

Android中Window 和 WindowManager Windows Android

技术精选柳天明 发表了文章 • 50 次浏览 • 2021-10-19 10:44 • 来自相关话题

Window 是一个抽象类,具体实现是 PhoneWindow,通过 WindowManager 创建。WindowManager是外界访问Window的入口,Window 的具体实现位于 WindowManagerService 中WindowManager... ...查看全部
0
评论

一篇文章带你走近Android自定义view 自定义View Android

技术精选柳天明 发表了文章 • 42 次浏览 • 2021-10-19 10:42 • 来自相关话题

前言从专科到本科,目前本科大四,已经是学习Android的第四个年头了,本打算积累一下冲23考研,但是最近被大佬洗脑后准备冲一冲22的考研,所以后续出文章的几率会很小,但是在前不久答应粉丝整理一个较为详细的Android自定义view教程,恰巧最近报名被华为选... ...查看全部
0
评论

Retrofit流程极简解析 retrofit Android

技术精选柳天明 发表了文章 • 53 次浏览 • 2021-10-19 10:41 • 来自相关话题

Retrofit流程极简解析以SandwichDemo为例子来解析。github地址创建Retrofitprivate val retrofit: Retrofit = Retrofit.Builder() .client(okHttpClient) .bas... ...查看全部
0
评论

FLutter即时通讯 Flutter

技术精选王二蛋和他的张大花 发表了文章 • 57 次浏览 • 2021-10-19 10:36 • 来自相关话题

1. 即时通讯简述 即时通讯是端开发工作中常见的需求,本篇文章以作者工作中使用FLutter开发社交软件即时通讯需求为背景,描述一下即时通讯功能设计的要点。 2. 重要概念 即时通讯需要前后端配合,约定消息格式与消息内容。本次IM客户端需求开发使用了公司已有的... ...查看全部
0
评论

看动画学算法之:平衡二叉搜索树AVL Tree 平衡二叉搜索

技术精选王二蛋和他的张大花 发表了文章 • 49 次浏览 • 2021-10-19 10:33 • 来自相关话题

简介 平衡二叉搜索树是一种特殊的二叉搜索树。为什么会有平衡二叉搜索树呢? 考虑一下二叉搜索树的特殊情况,如果一个二叉搜索树所有的节点都是右节点,那么这个二叉搜索树将会退化成为链表。从而导致搜索的时间复杂度变为O(n),其中n是二叉搜索树的节点个数。 而平衡二叉... ...查看全部
0
评论

密码学系列之:加密货币中的scrypt算法 加密货币

技术精选王二蛋和他的张大花 发表了文章 • 50 次浏览 • 2021-10-19 10:31 • 来自相关话题

简介 为了抵御密码破解,科学家们想出了很多种方法,比如对密码进行混淆加盐操作,对密码进行模式变换和组合。但是这些算法逐渐被一些特制的ASIC处理器打败,这些ASIC处理器不做别的,就是专门来破解你的密码或者进行hash运算。 最有名的当然是比特币了,它使用的是... ...查看全部
0
评论

java流太太太..............好用了 java流

技术精选王二蛋和他的张大花 发表了文章 • 69 次浏览 • 2021-10-19 10:30 • 来自相关话题

情景:一个集合对象list,现在想获取这个集合中每个对象的id,并将这些id值存放在另一个集合中,方便我去查询数据。如果是你来实现这个需求,你会用什么方法去实现呢。 我猜会有许多人会选择循环变量这个集合对象,取出id存放在集合里面,代码是这样的: List&... ...查看全部
0
评论

为什么需要Java内存模型? 内存模型

技术精选王二蛋和他的张大花 发表了文章 • 40 次浏览 • 2021-10-19 10:28 • 来自相关话题

面试官:今天想跟你聊聊Java内存模型,这块你了解过吗? 候选者:嗯,我简单说下我的理解吧。那我就从为什么要有Java内存模型开始讲起吧 面试官:开始你的表演吧。 候选者:那我先说下背景吧 候选者:1. 现有计算机往往是多核的,每个核心下会有高速缓存。高速缓存... ...查看全部
0
评论

手把手教你利用XSS攻击 性能优化

Web开发马师傅 发表了文章 • 48 次浏览 • 2021-10-18 23:07 • 来自相关话题

前两天我收到安全部门的一个通知:高风险XSS攻击漏洞。 我们部门首先确定风险来源,并给出了解决方案。前端部分由我解决,并紧急修复上线。 一:那么什么是XSS攻击呢? 人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但... ...查看全部
0
评论

产品经理又开始为难我了???我。。。。 性能优化 插件化

Web开发马师傅 发表了文章 • 48 次浏览 • 2021-10-18 23:02 • 来自相关话题

最近做项目的时候,就是产品经理给的图总是很大,不压缩。每天要处理这些图片真的很累哇。于是一怒之下写下了这个**「vscode 插件」。「插件核心功能是压缩,然后上传图片」。 压缩的网站其实就是「tinypng」** 这个网站然后图片压缩后,然后再上传到cdn上... ...查看全部
0
评论

TypeScript 想更深入一层?我推荐自定义 transformer 的 compiler api typescript 前端面试

Web开发马师傅 发表了文章 • 58 次浏览 • 2021-10-18 22:54 • 来自相关话题

现在 JS 的很多库都用 typescript 写了,面试也几乎必问 typescript,可能你对 ts 的各种语法和内置高级类型都挺熟悉了,对 ts 的配置、命令行的使用也没啥问题,但总感觉对 ts 的理解没那么深,苦于没有很好的继续提升的方式。这时候我推... ...查看全部
0
评论

JavaScript之彻底理解EventLoop Javascript 前端面试

Web开发马师傅 发表了文章 • 51 次浏览 • 2021-10-18 22:51 • 来自相关话题

在正式学习Event Loop之前,先需要解决几个问题:什么是同步与异步?JavaScript是一门单线程语言,那如何实现异步?同步任务和异步任务的执行顺序如何?异步任务是否存在优先级? 同步与异步 计算机领域中的同步与异步和我们现实社会的同步和异步正好相反。... ...查看全部
1
回复

发送自定义消息返回type503 type503

综合技术讨论smysmy 回复了问题 • 2 人关注 • 40 次浏览 • 2021-10-18 10:42 • 来自相关话题

0
评论

iOS swiftUI 创建 macos图片 1.1 SwiftUI

iOS开发雨淋湿了天空 发表了文章 • 48 次浏览 • 2021-10-18 10:02 • 来自相关话题

第六节 组合列表视图与过滤器视图创建一个组列过滤器和列表的视图。为过滤器提供新的状态信息,同时绑定地标选择到主视图的父视图上。步骤1 项目中添加一个新的SwiftUI视图,命名为NavigationPrimary.swift。步骤2 声明一... ...查看全部
0
评论

iOS swiftUI 创建 macos图片 1.0 SwiftUI

iOS开发雨淋湿了天空 发表了文章 • 47 次浏览 • 2021-10-18 10:01 • 来自相关话题

创建MACOS应用创建了watchOS平台的Landmarks应用后,下一步就是把Landmarks带到MacOS平台上。运用之前学到的所有知识,完成在iOS、watchOS及macOS的全平台应用。在项目工程中添加macOS编译目标,复用在iOS应用中的代码... ...查看全部
0
评论

「一探究竟」迷之序列化 序列化

技术精选王二蛋和他的张大花 发表了文章 • 51 次浏览 • 2021-10-18 09:37 • 来自相关话题

事件起因 今天,我需要上线一个非常小但是又非常重要的系统改动,即给核心接口的RPC接口出参增加序列化接口(由下图可见,原实体类未实现序列化)。 编码、测试、代码审核一气呵成,然后收到驳回通知,架构师说实现序列化接口时注意不要忘记配置serialversio... ...查看全部
0
评论

kafka!还好我留了一手 kafka

技术精选王二蛋和他的张大花 发表了文章 • 44 次浏览 • 2021-10-18 09:35 • 来自相关话题

本文面试情节虚假,但知识真实,请在家人或者朋友的陪同下仔细观看,防止在观看的过程发呆、走神导致没学到知识。性能篇一位身穿格子衬衣,头发好似一拳超人的中年人走了过来,没错他就是面试官,他手握简历,若有所思,我当时害怕极了,然后他开口:小伙子啊,我们这边是基础架构... ...查看全部
0
评论

【Java字符串】字符串虽简单,但这些你不一定知道 字符串

技术精选王二蛋和他的张大花 发表了文章 • 50 次浏览 • 2021-10-18 09:33 • 来自相关话题

前言: 字符串是程序开发当中,使用最频繁的类型之一,有着与基础类型相同的地位(字符串不属于基本类型),甚至在 JVM(Java 虚拟机)编译的时候会对字符串做特殊的处理,比如拼加操作可能会被 JVM 直接合成为一个最终的字符串,从而到达高效运行的目的。 1 :... ...查看全部
0
评论

完蛋,公司被一条 update 语句干趴了! sql

技术精选王二蛋和他的张大花 发表了文章 • 378 次浏览 • 2021-10-18 09:31 • 来自相关话题

大家好,我是小林。 昨晚在群划水的时候,看到有位读者说了这么一件事。 大概就是,在线上执行一条 update 语句修改数据库数据的时候,where 条件没有带上索引,导致业务直接崩了,被老板教训了一波 这次我们就来看看: 为什么会发生这种的事故? 又该如何... ...查看全部
0
评论

庆祝神舟十三号发射成功,来一个火箭发射动画 火箭发射

技术精选王二蛋和他的张大花 发表了文章 • 84 次浏览 • 2021-10-18 09:30 • 来自相关话题

前言 北京时间10月16日0时23分,神舟十三号飞船成功发射,目前三名航天员已经顺利进驻空间站,开始为期6个月的“太空差旅”生活。 国家的航天技术的突飞猛进也让岛上码农很自豪,今天看 Flutter 的动画知识,看到了 AnimatedPositioned ... ...查看全部
0
评论

iOS SwiftUI 框架集成 1.1 SwiftUI

iOS开发雨淋湿了天空 发表了文章 • 62 次浏览 • 2021-10-15 11:54 • 来自相关话题

第三节 在SwiftUI视图的状态下跟踪页面如果要添加一个自定义的UIPageControl控件,就需要一种方式能够在PageView中跟踪当前展示的页面。这就需要在PageView中声明一个@State属性,并传递一个针对该属性的绑定关系给PageViewC... ...查看全部
0
评论

iOS SwiftUI 框架集成 1.0 SwiftUI

iOS开发雨淋湿了天空 发表了文章 • 53 次浏览 • 2021-10-15 11:54 • 来自相关话题

框架集成混合使用SwiftUI框架和平台相关的其它UI框架(视图和视图控制器)包含章节与UIKit交互创建watchOS应用创建macOS应用与UIKIT交互SwiftUI可以在苹果全平台上无缝兼容现有的UI框架。例如,可以在SwiftUI视图中嵌入UIKit... ...查看全部
0
评论

iOS SwiftUI 应用设计与布局 1.2 SwiftUI

iOS开发雨淋湿了天空 发表了文章 • 60 次浏览 • 2021-10-15 11:53 • 来自相关话题

玩转UI控件在Landmarks应用中,用户可以创建一个简介来描述他们自已的个人情况。为了让用户可以编辑自己的简介,我们需要添加一个编辑模式并设计一个偏好设置界面。这里使用多种通用控件来展示用户的各种数据,并在用户保存他们所做的数据修改时更新地标数据模型。按照... ...查看全部
0
评论

iOS SwiftUI 应用设计与布局 1.1 SwiftUI

iOS开发雨淋湿了天空 发表了文章 • 65 次浏览 • 2021-10-15 11:52 • 来自相关话题

第四节 组合首页Landmarks应用的首页在用户点击查看地标详情前需要先把地标的一些简单信息展示出来。复用之前创建的视图构建具体某一类别地标的行视图步骤1 在CategoryRow.swift文件中,与CategoryRow类型并列,创建一个新的自... ...查看全部
0
评论

iOS SwiftUI 应用设计与布局 1.0 SwiftUI

iOS开发雨淋湿了天空 发表了文章 • 56 次浏览 • 2021-10-15 11:51 • 来自相关话题

应用设计与布局深入了解使用SwiftUI创建的复杂的用户界面的结构和布局包含章节组合复杂用户界面组合复杂用户界面Landmarks应用的首页是一个纵向滚动的地标类别列表,每一个类别内部是一个横向滑动列表。随后将构建应用的页面导航,这个过程中可以学习到如果组合各... ...查看全部
0
评论

复习Activity各种场景的生命周期 Activity Android

技术精选柳天明 发表了文章 • 63 次浏览 • 2021-10-15 11:31 • 来自相关话题

Activity是Android组件中最基本也是最为常见用的四大组件之一,也是我们在开发过程之中接触最多的组件,所以了解Activity的生命周期,并正确的理解与应用,是必不可少的。之前看到很多错误文章,今天特意自己亲自测试一遍,下面就来介绍一下Activit... ...查看全部
0
评论

这次,我想把内存泄漏讲明白 内存泄漏 Android

技术精选柳天明 发表了文章 • 70 次浏览 • 2021-10-15 11:30 • 来自相关话题

检测内存是否泄漏非常简单,只要在任意位置调用 Debug.dumpHprofData(file) 即可,通过拿到 hprof 文件进行分析就可以知道哪里产生了泄漏,但 dump 的过程会 suspend 所有的 java 线程,导致用户界面无响应,所以又不能随... ...查看全部
0
评论

JAVA创建线程的三种方式 多线程 Android

技术精选柳天明 发表了文章 • 67 次浏览 • 2021-10-15 11:29 • 来自相关话题

JAVA创建线程的三种方式一、JAVA创建线程的方式JAVA中为了有异步计算,所以需要开启线程帮助后来计算,后台运行,在java中开启线程的方式有三种:继承Thread类实现Runnable接口使用Callable和Future二、线程创建方式的异同继承Thr... ...查看全部
0
评论

冒泡排序的进化过程 算法

技术精选王二蛋和他的张大花 发表了文章 • 64 次浏览 • 2021-10-15 09:35 • 来自相关话题

基础版本 所有情况下时间复杂度都为O(n2n^2n2) public static void bob(int[] array) { // 总共比较n-1轮 for (int i = 0; i < array.length - 1; i++... ...查看全部