首页 文章 精选 留言 我的

精选列表

搜索[个人博客],共10000篇文章
优秀的个人博客,低调大师

【个人学习JAVA---学后的梳理】四、简单的一条语句

程序最小单位,语句 积土成山,风雨兴焉... 一条语句,是程序的开始。条条简单语句的积累,就是复杂程序的组成。那么,语句是怎样构成的?语句的基本单位就是表达式与运算符。 1. 运算符 Java的运算符可分为4类: 算术运算符、关系运算符、逻辑运算符和位运算符。 1.1. 需格外注意的运算符 '/'是除法运算符,而'%'为求余(另称:求模)运算符,前者返回除运算后的结果,后者返回余数结果。 关于自增、自减运算符: 其运算顺序探究 格式 说明 、 i++ 先参与运算,后自增 i = i++ +j; i-- 先参与运算,后自减 上面的算术的结果说明: ++i 先自增,后参与运算 在i+j后,将加法结果赋值给i前,先完成了i的自增操作, --i 先自减,后参与运算 而后加法结果赋值给i,这条语句运行完毕。 位移运算符:<<与>>是位左移运算符与位右移运算符。左移运算符“m<< n”表示将m的二进制表示左移n位。左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0;右移反是之。例子:10001010 << 3 = 01010000。位逻辑运算符:&、|、^是位运算符AND、位运算符OR、位运算符XOR。 位运算符 运算结果1 运算结果2 运算结果3 运算结果4 与 & 0 & 0 = 0 0 & 1 = 0 1 & 0 = 0 1 & 1 = 1 或 0 & 0 = 0 0 & 1 = 1 1 & 0 = 1 1 & 1 = 1 非 ^ 0 & 0 = 0 0 & 1 = 1 1 & 0 = 1 1 & 1 = 0 2. 表达式 表达式是由常量、变量或是其他操作数与运算符所组合而成的句子。 2.1. 条件表达式 条件表达式就是:" <能表示真假值的表达式>? <表达式或变量> : <表达式或变量>"。 结束 2019年8月6日 16:50:26

优秀的个人博客,低调大师

Android 优化个人封装仿网易新闻可滑动标题栏 TabLayout (文字或图标)

小菜在向朋友推荐了自己修改封装的仿网易顶部滑动标题栏 TabSlideLayout 滑动内容可以是文字也可以是网络图标,其原型为 FlycoTabLayout,但是因为年代很久远,小菜当时技术太渣,存在一些小问题,后期做过一些优化,今天趁机会整理一下。 优化内容: 网络状态不佳情况下,图片加载缓慢,有时加载不出来,如下图: 在部分三星手机上展示效果不佳,图片显示很小,如下图: 可以动态设置图片是否绘色,因有个别需求用户要展示的是彩色的漂亮图标,强制绘色便是画蛇添足。 问题查找: 问题一 的出现主要是因为图片加载方式不太合理,小菜以前用的是 Glide 中 BitmapImageViewTarget(iv) 方式,现在更换为 SimpleTarget<Bitmap>() 方式,两者的区别小菜还不能简洁明了的说清楚,有兴趣的朋友可以详细查看一下源码。 小菜的理解是,BitmapImageViewTarget() 方式优点:对于加载大图的整个过程处理比较好,可以设置加载过程中进度条等展示效果;而且该方式可以加载 Gif 图,也可以对 Gif 图的第一帧图进行绘色,但是没有 Gif 动画效果,就像一张普通的 png 图;缺点则是整体的处理时间较长,在网络状态不佳情况下有可能会加载失败。SimpleTarget() 方式直接优点是图片加载速度快,图片的大小根据 ImagView 来决定,不用重新计算;缺点是直接返回的 Bitmap() 不能加载 Gif 图。综合考虑,小菜觉得 SimpleTarget() 方式较合适。 问题二 的出现主要针对不同手机的适配,问题同样出在 Glide 图片加载部分,以前小菜用的 BitmapImageViewTarget() 并计算图片的宽高,现更改为 SimpleTarget() 方式解决。 问题三 的出现只是因为当时考虑不周全,可以在 attrs 中添加一个属性 is_change_color,并在图片绘色过程中处理一下即可,同时设置 set/get 方法,可以根据业务需求动态修改,详情请直接跳转 源码 Demo。 Tips:针对于问题二,图片布局中 ImageView 建议设置为 match_parent 方式,因为我们用户觉得 wrap_content 方式在部分三星手机上图不如华为手机大,小纠结。 解决方案: Glide 加载方式更换为 SimpleTarget(),如下: Glide.with(mContext).load(title).asBitmap() .placeholder(R.mipmap.top_default_bg).diskCacheStrategy(DiskCacheStrategy.SOURCE) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { if (mChangeColor) { resource = BitmapUtil.tintBitmap(resource, (position == 0) ? mTextSelectColor : mTextUnselectColor); } iv_tab_title.setImageBitmap(resource); } }); 在 attrs 中添加是否绘制图片颜色的属性,可以在 xml 或 Java 代码中进行设置: <!-- 设置是否绘制图片颜色 --> <attr name="tl_is_change_color" format="boolean" /> mChangeColor = ta.getBoolean(R.styleable.SlidingTabLayout_tl_is_change_color, true); public boolean isChangeColor() { return mChangeColor; } public void setChangeColor(boolean mChangeColor) { this.mChangeColor = mChangeColor; } 图标绘制统一颜色 图标不绘制颜色.jpg 小菜认为,优化是一个漫长的过程,是随着经验的积累与实际效果的反馈共同进行的,在使用过程中发现不合理的地方还请各位多多指教。 下面的是小菜的公众号,欢迎闲来吐槽哦~ 公众号.jpg

优秀的个人博客,低调大师

物联网对个人并不友好 一半价值源于B2B

物联网被誉为是第四次工业革命的先锋军,其与人工智能的结合也可以给用户提供前所未有的服务。但是物联网真的对消费级用户友好吗?从Verizon发布的报告来看,物联网在B2B领域的影响将会更大。 据报告来看,物联网(IoT)在商业环境中增长迅速。2017年物联网发展达到了史上的最高点,有近四分之三(73%)的企业高管表示目前正在研究或已经部署了物联网解决方案。而从市场的角度来看,截至今年年底,B2B类企业将会有超过2万亿美元投资进入物联网领域。 从行业角度来看,越来越多的企业开始看到办公场所的物联网技术优势,近一半的IoT市场价值来自于B2B领域。这其中制造业、交通运输业和公用事业部门的投资额最大,能源,医疗保健,建筑,政府,农业及其他行业的物联网技术试点已经成功,许多已部署的IoT技术开始实施,进而促进了技术的发展。 报告预计,到今年年底全球使用的接入网络的物联网设备达到了84亿个,同比2016年上升31%。技术标准的进步、消费需求增强和成本下降,使得企业级物联网设备成为了一大增长点。 本文转自d1net(转载)

优秀的个人博客,低调大师

关于java流的几个概念:IO、BIO、NIO、AIO,有几个人全知道?

​ 关于同步、阻塞的知识我之前的文章有介绍,所以关于流用到这些概念与之前多线程用的概念一样。 下面具体来看看java中的几种流 IO/BIO BIO就是指IO,即传统的Blocking IO,即同步并阻塞的IO。这也是jdk1.4之前的唯一选择,依赖于ServerSocket实现,即一个请求对应一个线程,如果线程数不够连接则会等待空余线程或者拒绝连接。所以用这种方式,在高并发情况下效率是很低的,也不可靠,一般只应用于连接数比较小且固定架构的应用,但api也比较容易使用。 NIO 新的IO,即New IO或者Non-Blocking IO,即同步不阻塞的IO。jdk1.4之后提供了一系列的方法来操作流,定义在java.nio包下面。相比于传统的BIO,NIO 提供了高速的面向快的I/O,它加入了Buffer、Channel、Selector等概念。它是基于事件驱动的,采用了Reactor模式,它使用一个线程管理所有的socket通道,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。它的特点是要不断主动地去询问数据有没有处理完,一般只适用于连接数目较大但连接时间短的应用,如聊天应用等。 AIO 新的IO2.0,即NIO2.0,jdk1.7开始应用,叫做异步不阻塞的IO。AIO引入异常通道的概念,采用了Proactor模式,简化了程序编写,一个有效的请求才启动一个线程,它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间长的应用。 几种IO的综合对比: BIONIOAIO 客户端:线程数1:1M:1M:0 阻塞类型阻塞非阻塞非阻塞 同步类型同步同步异步 编程难度简单非常复杂复杂 调试难度简单复杂复杂 可靠性非常差高高 吞吐量低高高 java提供的NIO的api使用比较复杂,一般建议使用像netty这样的框架,而不要使用jdk自带的api。

优秀的个人博客,低调大师

少个人保护?我来!——阿里云在ICANN第3届GDD峰会纪实

西班牙马德里以足球和斗牛闻名于世,2017年5月9日至11日,ICANN第三届全球域名部门行业峰会(GDD)在这里召开。阿里云作为亚洲域名保有量最高的注册商,代表成千上万客户的利益与权力,派出代表,前往马德里,全程参与了本次会议,我们可以骄傲地说:我们为中国域名站台!我们为你(中国域名用户)带盐!让我成为你的斗牛士! ICANN 亚太地区注册商服务资深经理李光皓Howard Li(左一)、ICANN注册商服务总监Jennifer Gore(右一)与阿里云域名业务总监王鹏Charles Wang(左二)、域名业务合规总监Pam Little (左三)会面,深入沟通各自观点。 Topic zero “域名世界的联合国” ICANN——一个熟悉又陌生的“神秘组织”,无论你是新入域名界菜鸟还是身经百战的老司机,一定听说过这个组织,却感觉它与我们太远,没啥关系。你。错。了。打个比方,ICANN就是域名与IP星球的联合国,你可能感受不到他的存在,但是他却是无时无刻不在看着你、管着你、影响着你。如果将ICANN比喻成联合国,那么这个大会就是域名世界的“联合国大会”啦~本次“联合国大会”议程紧密,有条不紊,探讨话题从后台技术、资质认证、服务协议、流程改进到新兴市场、行业前景、世界和平等,层出不穷。这届大会,呜呜嚷嚷有400多人参会,创下参会人数新高。短短几天议程,能和“联合国参议院”打个照面都不容易,更别提面对面的发言机会了。然而阿里云代表团,代表中国域名用户的利益,一言不合就发言,一言不合就发问,就许多与我们息息相关的话题展开讨论。 马德里大会讨论盛况 Topic one“代表中国域名用户争取更多权益” ICANN的运营机制也和“联合国”很像,他是非营利组织,很多决定都由“参与国”讨论、提出议题、投票选出结论。而每一个决定,可以说都和我们每位用户息息相关。阿里云虽然于今年初成为了ICANN Registrar Stakeholder Group (RrSG)注册商相关方社群团体的会员。这意味着:我们能够代表千万用户表达观点但在目前该组织的章程和限制下,阿里云还没有获得投票权,也没有资格担任执行委员会、提名委员或GNSO(Generic Names Supporting Organization)成员,或获得任何其他选举产生的席位或职位。这意味着:我们还没有帮助我们的用户获得足够的话语权。 我们认为,这里的某些章程与限制存在着:原因不明,规定模糊,很多内容甚至已经不符合当前的域名市场现状。会导致对于中国广大域名用户的不公平和不公正。 我们对此深切关注。 We are deeply concerned. 与会期间,我们向 ICANN 各个重要职位成员表达了我们的观点和愿望。 阿里云,做为亚洲最大注册商,将在 影响修改改进RrSG章程促进不同语言建立公平竞争环境促进ICANN全球化, 以建立公平竞争环境 等方向上持续努力。 Topic two“隔壁老王不上税?为啥我的用户要上税” ICANN源自加州,对于美国机构和非美国机构,有着不一样的“眼镜”。这个差别实际体现在一个叫做WithholdingTax(预扣税)的税费上面。 我们举个炭火烤栗子: 一家坐落美国的老王,要花100美金买个IP,则他只需要过个马路去支付这100美金就好; 而一家坐标土库曼斯坦的尼古拉斯买买提司机三世,则需要先付10元给到土库曼斯坦的税务部门(假如Withholding tax税率为10%),而后仍然要汇款100美金来买同样一个IP; 这表示尼古拉斯同志购买相同的东西,却花了110美金! 如果这个税率是20%呢?尼古拉斯每100美金就要比美国老王多花20美金; 如果这个税率是30%呢?尼古拉斯每100美金就要比美国老王多花30美金; 这!不!公!平! 阿里云在会议上直接指出这个问题: 做一样的生意,卖一样的产品,为啥老王不交税我的客户要交? 而且这些本不必要的成本最终被不是美国的用户们最终承担了。 买一样的东西,为啥老王便宜,我的客户买的贵? 并且提出了可能的解决方案。 1、ICANN可以在将当地机构作为收款单位,提供与美国老王同等的待遇; 2、或者ICANN自行吸收这部分税费的负担,以保证市场的公平; 为域名世界的公平公正做出一点点贡献,我骄傲! Topic three“我们中国用户需要,中文条款” ICANN源自美国,继承了山姆大叔的血继界限,基本只说英语。要知道“联合国条款”有多繁文缛节,有多堆积如山。我们的用户,绝大多数是使用汉语言的, 无法第一时间获取准确的新信息,这种“时间误差”和“理解偏差”,很容易对用户形成巨大风险。用户不知不觉可能就违规了,可能就被新规定束缚了。这!不!公!平! 阿里云将这个问题在本次会议上直抒胸臆:“凭啥不说中文!”(现场表达稍有改动) 只有说了中文,我们的用户才能更好的参与其中,得到更优质的服务!只有说了中文,才对得起每个使用汉语的域名用户!只有说了中文,才对得起50%的新顶级域用户!只有说了中文,才称得上公平公开! 相信这个问题引起了ICANN的足够重视,相信以中文为主要语言的广大域名用户,将会因此受益! ICANN董事会董事Asha Hemrajani(左三)与阿里云代表会面 我们必将不断努力,争取代表成千上万的中国域名客户在ICANN社群发出更大的声音以及获得更大的影响力,从而回馈广大用户对于阿里云的支持与信任! 如果您对ICANN有着疑问或意见建议,也欢迎在此留言。 我们将悉心为您解答,同时 进行认真地梳理与汇总,尽早帮您解决更多的实际问题。 争取更多利益。 咱们, 一起加油!!!

优秀的个人博客,低调大师

【博客大赛】+移动端4位/6位验证码/密码输入框H5实现

阶段一、六位验证码输入框 先贴图,需要实现的效果是这样的。 实现思路有两个: 1、用6个input,输入一个数字后将focus给下一个输入框。 2、用一个input和6个span,input隐藏,用span显示。 现在大部分都是使用的第二种方法。 两种方案遇到的坑,以及优缺点,如下: 方案一:6个input。 主要就是用js切换focus,在安卓是相当流畅的,但是在ios会严重卡顿,简直逼死强迫症。 HTML: JS: functioninputNext(id){//传过来的id是个对象 varindex=Number(id.id.split("_")[1]) if(id.value.length<1){//删除 id.value='' if(index>1){ varpreId='check_'+Number(Number(index)-1) document.getElementById(preId).focus() returnfalse } }else{ if(id.value.length>1){ varnextValue=id.value.slice(1,2) varnextId='check_'+Number(Number(index)+1) id.value=id.value.slice(0,1) if((index+1)<=6){ document.getElementById(nextId).value=nextValue document.getElementById(nextId).focus() } } } } PS:我这里写的删除方法是有问题的,这也是我果断放弃这种方案的原因之一。 如果正常输入,然后删除是可以的。 但是输入几个数后,先点击中间的框删除一个数字,再回到最后,便只能将中间到最后的这几个删掉,最前面的还需要手动点一下得到focus才能删除。 这对用户来说,简直太不友好了。。。 CSS: .divYZM{ width:90%; margin:0auto; height:100px; background-color:rgba(74,35,35,0.42); } .numDiv{ display:block; width:10%; float:left; border-radius:5px; text-align:center; line-height:60px; font-size:20px; font-weight:900; color:red; background-color:white; height:60px; border:0; padding:0; margin:0; margin-left:5.7%; top:20px; position:relative; caret-color:transparent; } 这里遇到的坑,举一个栗子。 input限制长度的属性maxlength a、与如下两种配合使用(tel也可以限制) 或者 b、当type为number时不起作用。这时需要用js控制。 注意:此外,tel类型的input在ios上会调出全数字键盘,而number类型的input则会调出带有标点符号的键盘。 方案二:1个input和6个span。 隐藏input,用span显示内容。大坑就是,何种情况下能调起ios的软键盘呢? 先贴一下我刚开始的input样式。 width:0; height:0; border:0; padding:0; margin:0; 第二种 display:none; 简单粗暴,结果就是,ios木得反应。为啥呢,我想不通。 后来在晚上睡觉的时候我在想,我这两种方式input都么有占位啊,那是不是占位了就可以了呢? 经测果然是可以的(默默谴责自己懒了一下,没有将不隐藏input的情况,在手机上进行测试)。 但是这里要注意一点,input占位建议写成宽度占位,如果是高度占位,width为0时,会出现输入1234,显示为4321这种情况,光标默认在最前,且用js手动挪动光标到最后也是不起效果的。例如,类似代码我设置了宽度为0,且使用了如下方法挪动光标到最后,以解决输入1234,显示4321的问题。完全没得作用。后来突然想到是不是因为宽度为0。给input加了宽度才正常显示了。 错误代码示例:宽度为0 input的样式: #yzm{ width:0; border:0; padding:0; margin:0; height:.44rem; position:absolute; outline:none; color:transparent; text-shadow:000transparent; margin-left:-100%; } 对应的挪动光标的方法: lettObj=document.getElementById("#yzm"); letlen=tObj.value.length; if(tObj.setSelectionRange){ tObj.setSelectionRange(len,len); tObj.focus(); }elseif(tObj.createTextRange){ varrng=tObj.createTextRange(); rng.move('character',len); rng.select(); } 接下来贴正确代码。 CSS: #yzm{ width:90%; height:.44rem; border:0; padding:0; margin:0; margin-left:-100%; outline:none; color:transparent; text-shadow:000transparent; position:absolute; } #yzmTable{ width:90%; height:100px; margin:0auto; background-color:rgb(441212/93%); border-radius:5px; } #yzmTablespan{ display:block; width:10%; height:60px; float:left; border-radius:5px; text-align:center; line-height:60px; font-size:20px; font-weight:900; color:red; background-color:white; margin-left:5.7%; top:20px; position:relative; } 这里对input的样式也包括对光标的隐藏,我在第一种方案中对光标未进行处理,因为在看到ios的卡卡卡之后果断放弃了第一种方案。 HTML: JS: functionintoYzm(index){ varele=document.getElementById("yzm") ele.focus() } functionyzmInsert(){//input内容改变时触发 for(vari=1;i<=6;i++){ varnextId='s_'+i document.getElementById(nextId).innerHTML='' } varyzm=document.getElementById("yzm").value varyzmArr=yzm.split(''); for(vari=0;i<yzmArr.length;i++){ constnum=yzmArr[i]; varid='s_'+Number(i+1) document.getElementById(id).innerHTML=''+num+'' } } //收起软键盘的方法,点击除了输入框之外的其他区域就收起软键盘 $('body').on('touchend',function(el){ if(el.target.tagName!='SPAN'){ $('yzm').blur() } }) 在第二种方案中有两个地方注意下: a、在js方法中加了对全局中6个span标签(即六个输入框)之外区域点击事件的监听,用以收起软键盘,方法如下。 $('body').on('touchend',function(el){ if(el.target.tagName!='SPAN'){ $('yzm').blur() } }) (比较粗糙,如果页面中还有别的部分就比较受影响了,可以自行改进) b、在隐藏的input中添加了onclick方法,如下并且在其中用了blur方法使得此输入框失去焦点。为什么这么做呢? 因为此处的隐藏并非真正的隐藏,而是透明化处理,边框包括光标全部透明化,但实际上它还是占位的,所以当你点击输入框上方空白处时,仍会唤起软键盘,就和我们之前所想的点击输入框之外区域就收起软键盘冲突了。 因此将input自身的点击获取focus禁止掉,就OK了。 阶段二、四位验证码输入框 pia效果图 基本上是基于以上 阶段一、六位验证码输入方式(以下统称“阶段一”) 的后期填坑 这是仿照“阶段一”又新写了个验证码的小页面,有些微的不同 输入编号后四位,可能有X字母,所以隐藏input的type不能设置为number了,懒惰的我直接删掉了type属性(造坑开始) 且因为上次研究时漏掉了一些知识点,也造了一波坑,以下一一列举。 问题1、四位空格输入,1234,但是每次输入下一个数字,前面的内容都会整体向后移动,输完结果是4321;且输入一半点删除没反应。还得输入总共五位数字才能删除 ??!我懵了,input给显示的几个span的赋值方式(见“阶段一”的js代码)是一样样的呀,怎么回事 debug发现隐藏的input值就已经是4321了,所以不是赋值方法的问题,以下是有问题的隐藏input的样式: #IdentifyNoCheckInput{ width:0; border:0; padding:0; margin:0; height:10px; position:absolute; top:-11px; outline:none; color:transparent; text-shadow:000transparent; } 最初怀疑是光标自动到了最前面导致的,使用了百度的手动移动光标方法,并不管用。 对比“阶段一”中隐藏input的样式,可以发现本次宽度设成了0,有高度(高度随意,只要不挡住别的元素显示就行),有宽度或高度是为了占位,能唤起软键盘。 而“阶段一”中是有宽度的,这个差别引起了我的怀疑。为以上样式新增两条 width:100%; margin-left:-100%; 再进行输入,正常了,输入1234就显示1234,也不会有删不掉的情况存在了。 第一个坑填坑完毕。 总结:设置宽度高度是为了占位,从而唤起软键盘。有高度或有宽度就可以,但是建议设置宽度,以免发生输入内容反转的情况。 问题2、部分ios手机无法正常唤起软键盘 在测试的时候,手机型号就那几个,大家测得顺顺当当。上线之后就报了好多ios无法正常输入的问题。 问题版本如下: 苹果p8,苹果6+(系统版本10),苹果6pok(系统版本11.4.1)和苹果6p plus(系统版本12.4.8) 以下是隐藏input的代码: 最初思路跑偏,开始各种查版本兼容的方法,但是没有合适的解决方案。 后在老大的提醒下,既然上篇文章中的验证码没有报这个问题,这个也不应该有问题啊。 对比发现就是少了个type,就想到是不是缺少type导致的,加了个type="text" emmmm,问题解决。 菜鸟教程描述如下: 大部分的坑都是自己给自己造的~~~ 以下贴完整代码(我这个页面是以iframe被其他页面调用的,所以有个获取链接的操作以及拆分参数的方法) 请输入验证内容--> 确认4){//当type="number",属性maxlength不起作用 inNo=inNo.slice(0,4) document.getElementById("IdentifyNoCheckInput").value=inNo } varinNoArr=inNo.split(''); for(vari=0;i

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册