- swift基础语法
超Pro
iOS开发swift开发语言ios
swift学习笔记参考教程https://www.runoob.com/swift/swift-data-types.htmlswift代码规范https://juejin.cn/post/71294653083764654221环境搭建必须要有苹果电脑且安装Xcode2基本语法Swift是类型安全的语言,编译时会进行类型检查importCocoavarmySting="Hello,World!"
- Swift学习笔记
GQJY
defer修饰函数内任意一段代码,调用时机;在函数中其余代码都执行完毕,函数即将结束前,可以用它在异常中进行扫尾工作,比如关闭IO流释放资源等extension通过增加的实例方法可以修改实例本身,如果结构体和枚举的方法要修改self或其属性,则需要使用mutating关键字标明扩展可以向已存在的类结构体和枚举添加新的嵌套类型在结构体、枚举、或者协议中使用mutating修饰方法可以在该方法内部修改
- Swift学习笔记 ——(一)
xhsdnn
iosiosswiftgrammarapple
前言作为一个前端开发者,经常与javaacript(以下简称:js)打交道。最近想了解一下ios开发,前两天看了一下objective-c(以下简称:oc),相对于js来说还是有很多不同的,但是语言还是很多相通的地方,加上之前了解一些java,理解起来不是很困难。在网上看了很多对oc和swift的评价,褒贬不一,心里想着,如果是ios开发的话,这两种肯定都要学,所以这两天对swift进行了了解。对
- Swift学习笔记六:常见概念(一)
英雄有梦
Swift专栏:大家和我从头学swift概念date
七、常见概念1.范围Range、ClosedRange和NSRange的使用//区间分为闭区间和半开区间importFoundationletclosedRange:ClosedRange=1...3//闭区间letintArray=["1","2","3","4","5"]intArray[closedRange]//使用闭区间,获得数组中的从第2个位置开始,至第4个位置的所有元素,并返回由这三
- Swift学习笔记二:数据类型
英雄有梦
Swift专栏:大家和我从头学swift数据类型
6.Swift中的元组(Tuples)//元组:包含不同的数据类型,并组成一个复合值,使用逗号隔开,并使用括号括起来的0个或多个类型组成的列表。lethttp500Error=(500,"Internalsevererror")let(statusCode,statusMessage)=http500Error//可以将元组赋值给一个带有元素名称的元组,元素名称的个数要和元组一一对应statusC
- Swift学习笔记(5):集合类型
weixin_30376163
swift
目录:数组:Array集合:Set字典:DictionarySwift提供Array(有序集合数据)、Set(无序无重复集合)和Dictionary(无序键值对集合)三种基本集合类型来存储明确数据类型的集合数据。使用var将集合声明为变量,可以在创建之后添加、移除、修改集合内数据项。如果使用let将集合声明为常量,则它的大小和内容就都不可改变。数组:Array初始化和赋值:varsomeInts=
- Swift学习笔记(1):基础部分
吃素的小动物
swift操作系统
目录:分号常量和变量数据类型数值型类型转换类型别名元组可选类型API版本检查分号Swift并不强制要求你在每条语句的结尾处使用分号(;),你也可以按照自己的习惯添加分号。如果在一行内写多条独立的语句情况下必须要用分号。常量和变量使用let定义常量,使用var定义变量,常量和变量必须在使用前声明,且可以使用Unicode字符声明:不能包含数学符号,箭头,保留的(或者非法的)Unicode码位,连线与
- Swift学习笔记(6):控制流
weixin_30892987
swift
目录:For-InWhileIf-Else,Guard-ElseSwitch控制转移For-In可以使用for-in语句循环遍历集合、区间、元组、字符串。//遍历区间,返回元素值forindexin1...5{print("(index)times5is(index*5)")}//循环区间,忽略元素值for_in1...power{answer*=base}//遍历数组letnames=["Ann
- swift学习笔记之---数组、字典、枚举、结构体
weixin_34356310
swift
1、数组-Arraylettypes=["none","warning","error"]//省略类型的数组声明letmenbers=[String]()//声明一个空数组menbers.append("six")//添加元素menbers+=["seven"]//添加元素menbers.insert("one",atIndex:0)//指定位置添加元素menbers[0]="message"//
- Swift学习笔记之基本数据类型-数组与字典
安静的偏执
iOS开发swift
1.代码示例//:Playground-noun:aplacewherepeoplecanplayimportCocoa//声明数组varmyList=["hello",3]//打印数组中的值foriteminmyList{print(item)}print("\n")//打印数组中指定的值print("数组中第二个值为\(myList[1])\n")//打印数组的大小print("数组长度为\(
- swift学习笔记——集合类型(数组)
dxldy0614
swiftswift数组
数组数组的声明:ArraySomeType[]varshoppingList:String[]=["Eggs","Milk"]varshoppingList1:Array=["fff","sss","aaa"]//shoppingList已经被构造并且拥有两个初始项。因为swift可以自己推断类型上面的句子也可以写成varshoppingList=["Eggs","Milk"]获取数组元素个数pr
- Swift学习笔记第二节:数组类型
SmallTeddy
Swiftswift学习笔记
1、代码importFoundationletarr1=[1,2,3,4,5,6]letarr2=["a","b","c","d","e","f"]letarr3=[true,false,true]letarr4:Array=[1,2,3]letarr5:[Int]=[1,2,3]letarr6=Array([1,2,3])letarr7=Array(1...3)letarr8=Array(rep
- Swift学习笔记第三节:Set类型
SmallTeddy
Swiftswift学习笔记
1、代码importFoundationvarset1:Set=[1,2,3,4,3]print("定义1:\(set1)")varset2=Set(1...4)print("定义2:\(set2)")print("长度:\(set2.count)")print("是否为空:\(set2.isEmpty)")set1.insert(99)set1.update(with:33)print("插入:
- 《Swift学习笔记》09 - 函数的简单介绍
ShIwEn9
介绍:Swift语言由苹果公司在2014年推出,用来撰写MacOS和iOS应用程序,并且Swift还是开源的,开源地址:https://github.com/apple/swift,同时附上官方博客地址:https://swift.org目前Swift已经发展到了第五版本。显然苹果大有推翻OC“江山”的意思.今天就来初探一下Swift,看看究竟为何swift有这么大的能力。参考内容:Swift中文
- Swift学习笔记-继承
女粉丝
1.方法的重写需要在重写的方法前加override。overridefuncmakeNoise(){print("这是子类")}在属性someProperty的getter或setter的重写实现中,可以通过super.someProperty来访问超类版本的someProperty属性。在下标的重写实现中,可以通过super[someIndex]来访问超类版本中的相同下标。2.重写属性///相当
- swift学习笔记(二)类和结构体、内存管理
d14888bcdd2b
六、类与结构体结构体swift中结构体和类十分相似,即可定义属性,又可以定义方法,但不具有继承的特性。使用struct定义结构体,结构体中声明变量或者常量作为结构体属性,可以创建函数作为结构体的方法,用点语法调用属性和方法。structCar{//价格varprice:NSInteger//品牌varbrand:String//油量varpetrol:NSInteger//提供一个驾驶方法muta
- Swift学习笔记 - Swift属性只读
W_C__L
swift学习笔记swift
在OC中我们经常用到只读属性,用readonly修饰一下就行了,但在Swift中已经不是这样修饰的了,下面记录一下Swift中只读属性的使用在OC中的只读://只读属性@property(readonly,nonatomic)NSObject*wcl;在Swift中的只读://只读属性private(set)varwcl
- IOS-swift学习笔记(持续更新)
Tmylyh
iosiosswift学习开发语言
目录基础知识获取字符串长度swichcase语句数组的创建编辑数组的编辑编辑数组的排序编辑数组的遍历编辑字典的增删改查编辑函数设置可变的函数参数数量函数的嵌套常用的内置函数枚举类类的初始化类的set和get类的静态方法类的析构函数编辑闭包计算属性存储属性的属性观察者类型属性访问权限编辑值类型和引用类型基础知识四种输出方式:整数类型和实例属性,Swift提供的有符号和无符号类型有8、16、32、64
- ChiOS-我的Swift学习笔记
饭小粒
swiftiosiOSswift
1.怎样自定义初始化方法?convenienceinit(byname:ee){self.init(name:ee,bundle:nil)}2.怎样写一个单例?finalclassUserInfoManager{privateinit(){}staticletshared=UserInfoManager()}3.使用Realm的object,属性一定要是dynamic的,否则查询成功以后model
- Swift学习笔记四(function 篇)
符哥2008
swift学习笔记
目录1Function概念及定义。1.1Function概念1.2Function定义1.3Function参数1.3.1无形式参数1.3.2多形式参数的函数1.4返回值1.4.1无返回值类型1.4.2多返回值类型1.4.3可选元组返回类型1.4.4隐式返回的类型1.4.5实参标签和形参名1.4.6指定实际参数标签1.4.7省略实际参数标签1.4.8默认形式参数值1.4.9可变形式参数1.4.10
- Swift学习笔记三(Dictionary 篇)
符哥2008
学习swiftios
1Dictionary概念字典储存无序的互相关联的同一类型的键和同一类型的值的集合。字典类型的全写方式Dictionary,简写方式[Key:Value],建议使用简写方式。字典的key必须是可哈希的。2Dictionary创建2.1初始器创建方式2.2简写创建方式2.3字面量创建方式2.4Dictionary的方法可以使用count只读属性来找出Dictionary拥有多少元素。使用布尔量isE
- Swift学习笔记之数组
Qu_qipa
ios开发swiftswift学习笔记swift数据语言存储class
集合类型Swift语言提供Arrays、Sets和Dictionaries三种基本的集合类型用来存储集合数据。数组是有序数据的集。集合是无序无重复数据的集。字典是无序的键值对的集。Swift语言中的Arrays、Sets和Dictionaries中存储的数据值类型必须明确。这意味着我们不能把不正确的数据类型插入其中。同时这也说明我们完全可以对取回值的类型非常自信注意:Swift的Arrays、Se
- Swift学习笔记一(数组篇)
符哥2008
swift学习笔记
目录0绪论1数组的创建和初始化2.数组遍历2.1通过键值对遍历2.2通过forEach遍历2.3通过forin遍历2.3.1forin搭配enumerated2.3.2forin的另一种形式2.3.2forin搭配indices2.4通过Iterator遍历器遍历3数组的操作3.1contains判断数组包含元素3.2allSatisfy(_:)判断数组的每一个元素都符合给定的条件4.查找比较4.
- Swift学习笔记之数组(三)
Qu_qipa
swift学习笔记书摘nsarrayswiftnsarray
数组重复值的初始化除了普通的初始化方法,我们可以通过init(count:Int,repeatedValue:T)来初始化一个数组填充上重复的值:varthreeDoubles=[Double](count:3,repeatedValue:0.0)带索引值的遍历我们可以用forin遍历数组,如果想要index的话,可以用enumerate(base:Seq):letarr=["a","b"]for
- Swift学习笔记1-oc与swift的区别
梵虚
编程范式Swift可以面向协议编程、函数式编程、面向对象编程OC以面向对象编程为主,当然你可以引入类似ReactiveCoca的类库来进行函数式编程类型安全swfit是一门类型安全的语言,鼓励程序猿在代码中清楚明确值的类型。如果代码中使用一个字符串string,那么你不能错误地传递一个整型Int给它。因为swift是类型安全的,它会在编译的时候做检查,并且把所有不匹配的类型作为一个错误标记出来。这
- swift学习笔记(一)基本数据类型、字符串、集合、运算符、函数、block
d14888bcdd2b
即将入职新公司,换工作的间歇期有时间看一看知识点,新项目里swift和oc混编,所以趁着机会看了下swift语法,由于UIKitoc和swift一样,所以只进行swift语法的学习,翻了一遍《swift4从零到精通iOS开发》,第一遍阅读用笔标出了语法不同点,然后边写代码实验边做笔记的形式记录。一、基本数据类型1.元组//元组允许一些不相关的类型进行自由组合,成为新的集合类型,适用于简单数据结构,
- Swift学习笔记-析构过程
女粉丝
析构器只适用于类类型,当一个类的实例被释放前,析构器会被立即调用(类似delloc?)。析构器用关键字deinit。析构过程原理在类的定义中,每个类最多只能有一个析构器,而且析构器不带任何参数。析构过程类似于delloc。classBank{staticvarcoinsInBank=10_000staticfuncdistribute(coinsnumberOfCoinsRequest:Int)-
- Swift学习笔记(九)-内存安全性
宇仔TuT
iOSSwiftiosswift
默认情况下,Swift会阻止代码中发生的不安全行为。比如说,Swift会保证在使用前就初始化,内存在变量释放后这块内存就不能再访问了,以及数组会检查越界错误。Swift还通过要求标记内存位置来确保代码对内存有独占访问权,以确保了同一内存多访问时不会冲突。由于Swift自动管理内存,大部份情况下你根本不需要考虑访问内存的事情。如果你的代码存在内存访问冲突,你就会得到编译时或运行时错误。理解内存访问冲
- RxSwift学习笔记
海森堡_lichangan
SwiftiOSswiftrxswiftios
RxSwift学习笔记Observable实际应用`Observable`Event创建Observable序列just方法of方法from方法create()方法error()方法empty()方法never()方法range()方法repeatElement()方法generate()方法deferred()方法interval()方法timer()方法创建一个事件序列对事件序列进行处理订阅事
- iOS-swift学习笔记-2
梦醉荼靡
importUIKitimportSVProgressHUDclassbourseViewController:UIViewController,UITableViewDataSource,UITableViewDelegate,StarsSortTableViewDelegate,StarsScreenViewDelegate{varcells=["默认排序","按价格排序","按代数排序","
- 怎么样才能成为专业的程序员?
cocos2d-x小菜
编程PHP
如何要想成为一名专业的程序员?仅仅会写代码是不够的。从团队合作去解决问题到版本控制,你还得具备其他关键技能的工具包。当我们询问相关的专业开发人员,那些必备的关键技能都是什么的时候,下面是我们了解到的情况。
关于如何学习代码,各种声音很多,然后很多人就被误导为成为专业开发人员懂得一门编程语言就够了?!呵呵,就像其他工作一样,光会一个技能那是远远不够的。如果你想要成为
- java web开发 高并发处理
BreakingBad
javaWeb并发开发处理高
java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据) 一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降。常用的优化措施是M-S(
- mysql批量更新
ekian
mysql
mysql更新优化:
一版的更新的话都是采用update set的方式,但是如果需要批量更新的话,只能for循环的执行更新。或者采用executeBatch的方式,执行更新。无论哪种方式,性能都不见得多好。
三千多条的更新,需要3分多钟。
查询了批量更新的优化,有说replace into的方式,即:
replace into tableName(id,status) values
- 微软BI(3)
18289753290
微软BI SSIS
1)
Q:该列违反了完整性约束错误;已获得 OLE DB 记录。源:“Microsoft SQL Server Native Client 11.0” Hresult: 0x80004005 说明:“不能将值 NULL 插入列 'FZCHID',表 'JRB_EnterpriseCredit.dbo.QYFZCH';列不允许有 Null 值。INSERT 失败。”。
A:一般这类问题的存在是
- Java中的List
g21121
java
List是一个有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
与 set 不同,列表通常允许重复
- 读书笔记
永夜-极光
读书笔记
1. K是一家加工厂,需要采购原材料,有A,B,C,D 4家供应商,其中A给出的价格最低,性价比最高,那么假如你是这家企业的采购经理,你会如何决策?
传统决策: A:100%订单 B,C,D:0%
&nbs
- centos 安装 Codeblocks
随便小屋
codeblocks
1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可yum install gccyum install gcc-c++
2.安装gtk2-devel,因为默认已经安装了正式产品需要的支持库,但是没有安装开发所需要的文档.yum install gtk2*
3. 安装wxGTK
yum search w
- 23种设计模式的形象比喻
aijuans
设计模式
1、ABSTRACT FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:
- 开发管理 CheckLists
aoyouzi
开发管理 CheckLists
开发管理 CheckLists(23) -使项目组度过完整的生命周期
开发管理 CheckLists(22) -组织项目资源
开发管理 CheckLists(21) -控制项目的范围开发管理 CheckLists(20) -项目利益相关者责任开发管理 CheckLists(19) -选择合适的团队成员开发管理 CheckLists(18) -敏捷开发 Scrum Master 工作开发管理 C
- js实现切换
百合不是茶
JavaScript栏目切换
js主要功能之一就是实现页面的特效,窗体的切换可以减少页面的大小,被门户网站大量应用思路:
1,先将要显示的设置为display:bisible 否则设为none
2,设置栏目的id ,js获取栏目的id,如果id为Null就设置为显示
3,判断js获取的id名字;再设置是否显示
代码实现:
html代码:
<di
- 周鸿祎在360新员工入职培训上的讲话
bijian1013
感悟项目管理人生职场
这篇文章也是最近偶尔看到的,考虑到原博客发布者可能将其删除等原因,也更方便个人查找,特将原文拷贝再发布的。“学东西是为自己的,不要整天以混的姿态来跟公司博弈,就算是混,我觉得你要是能在混的时间里,收获一些别的有利于人生发展的东西,也是不错的,看你怎么把握了”,看了之后,对这句话记忆犹新。 &
- 前端Web开发的页面效果
Bill_chen
htmlWebMicrosoft
1.IE6下png图片的透明显示:
<img src="图片地址" border="0" style="Filter.Alpha(Opacity)=数值(100),style=数值(3)"/>
或在<head></head>间加一段JS代码让透明png图片正常显示。
2.<li>标
- 【JVM五】老年代垃圾回收:并发标记清理GC(CMS GC)
bit1129
垃圾回收
CMS概述
并发标记清理垃圾回收(Concurrent Mark and Sweep GC)算法的主要目标是在GC过程中,减少暂停用户线程的次数以及在不得不暂停用户线程的请夸功能,尽可能短的暂停用户线程的时间。这对于交互式应用,比如web应用来说,是非常重要的。
CMS垃圾回收针对新生代和老年代采用不同的策略。相比同吞吐量垃圾回收,它要复杂的多。吞吐量垃圾回收在执
- Struts2技术总结
白糖_
struts2
必备jar文件
早在struts2.0.*的时候,struts2的必备jar包需要如下几个:
commons-logging-*.jar Apache旗下commons项目的log日志包
freemarker-*.jar  
- Jquery easyui layout应用注意事项
bozch
jquery浏览器easyuilayout
在jquery easyui中提供了easyui-layout布局,他的布局比较局限,类似java中GUI的border布局。下面对其使用注意事项作简要介绍:
如果在现有的工程中前台界面均应用了jquery easyui,那么在布局的时候最好应用jquery eaysui的layout布局,否则在表单页面(编辑、查看、添加等等)在不同的浏览器会出
- java-拷贝特殊链表:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
bylijinnan
java
public class CopySpecialLinkedList {
/**
* 题目:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
拷贝pNext指针非常容易,所以题目的难点是如何拷贝pRand指针。
假设原来链表为A1 -> A2 ->... -> An,新拷贝
- color
Chen.H
JavaScripthtmlcss
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD>&nbs
- [信息与战争]移动通讯与网络
comsci
网络
两个坚持:手机的电池必须可以取下来
光纤不能够入户,只能够到楼宇
建议大家找这本书看看:<&
- oracle flashback query(闪回查询)
daizj
oracleflashback queryflashback table
在Oracle 10g中,Flash back家族分为以下成员:
Flashback Database
Flashback Drop
Flashback Table
Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query)
下面介绍一下Flashback Drop 和Flas
- zeus持久层DAO单元测试
deng520159
单元测试
zeus代码测试正紧张进行中,但由于工作比较忙,但速度比较慢.现在已经完成读写分离单元测试了,现在把几种情况单元测试的例子发出来,希望有人能进出意见,让它走下去.
本文是zeus的dao单元测试:
1.单元测试直接上代码
package com.dengliang.zeus.webdemo.test;
import org.junit.Test;
import o
- C语言学习三printf函数和scanf函数学习
dcj3sjt126com
cprintfscanflanguage
printf函数
/*
2013年3月10日20:42:32
地点:北京潘家园
功能:
目的:
测试%x %X %#x %#X的用法
*/
# include <stdio.h>
int main(void)
{
printf("哈哈!\n"); // \n表示换行
int i = 10;
printf
- 那你为什么小时候不好好读书?
dcj3sjt126com
life
dady, 我今天捡到了十块钱, 不过我还给那个人了
good girl! 那个人有没有和你讲thank you啊
没有啦....他拉我的耳朵我才把钱还给他的, 他哪里会和我讲thank you
爸爸, 如果地上有一张5块一张10块你拿哪一张呢....
当然是拿十块的咯...
爸爸你很笨的, 你不会两张都拿
爸爸为什么上个月那个人来跟你讨钱, 你告诉他没
- iptables开放端口
Fanyucai
linuxiptables端口
1,找到配置文件
vi /etc/sysconfig/iptables
2,添加端口开放,增加一行,开放18081端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 18081 -j ACCEPT
3,保存
ESC
:wq!
4,重启服务
service iptables
- Ehcache(05)——缓存的查询
234390216
排序ehcache统计query
缓存的查询
目录
1. 使Cache可查询
1.1 基于Xml配置
1.2 基于代码的配置
2 指定可搜索的属性
2.1 可查询属性类型
2.2 &
- 通过hashset找到数组中重复的元素
jackyrong
hashset
如何在hashset中快速找到重复的元素呢?方法很多,下面是其中一个办法:
int[] array = {1,1,2,3,4,5,6,7,8,8};
Set<Integer> set = new HashSet<Integer>();
for(int i = 0
- 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL
lanrikey
history
后退时关闭当前页面
<script type="text/javascript">
jQuery(document).ready(function ($) {
if (window.history && window.history.pushState) {
- 应用程序的通信成本
netkiller.github.com
虚拟机应用服务器陈景峰netkillerneo
应用程序的通信成本
什么是通信
一个程序中两个以上功能相互传递信号或数据叫做通信。
什么是成本
这是是指时间成本与空间成本。 时间就是传递数据所花费的时间。空间是指传递过程耗费容量大小。
都有哪些通信方式
全局变量
线程间通信
共享内存
共享文件
管道
Socket
硬件(串口,USB) 等等
全局变量
全局变量是成本最低通信方法,通过设置
- 一维数组与二维数组的声明与定义
恋洁e生
二维数组一维数组定义声明初始化
/** * */ package test20111005; /** * @author FlyingFire * @date:2011-11-18 上午04:33:36 * @author :代码整理 * @introduce :一维数组与二维数组的初始化 *summary: */ public c
- Spring Mybatis独立事务配置
toknowme
mybatis
在项目中有很多地方会使用到独立事务,下面以获取主键为例
(1)修改配置文件spring-mybatis.xml <!-- 开启事务支持 --> <tx:annotation-driven transaction-manager="transactionManager" /> &n
- 更新Anadroid SDK Tooks之后,Eclipse提示No update were found
xp9802
eclipse
使用Android SDK Manager 更新了Anadroid SDK Tooks 之后,
打开eclipse提示 This Android SDK requires Android Developer Toolkit version 23.0.0 or above, 点击Check for Updates
检测一会后提示 No update were found