首页 文章 精选 留言 我的

精选列表

搜索[快速入门],共10033篇文章
优秀的个人博客,低调大师

[python作业AI毕业设计博客]selenium工具python快速入门1简介

概述 Selenium是一个开源自动化测试套件,适用于跨浏览器和平台的Web应用程序。 它是一组软件工具,每种工具都有不同的方法来支持测试自动化。 Selenium3.*的组件如下: Selenium IDE(集成开发环境 Integrated Development Environment) Selenium WebDriver Selenium Grid Selenium3.停止直接使用Selenium RC。 Selenium Core已从最新版本的Selenium 3.中完全删除。 官网:http://www.seleniumhq.org/ Selenium开源,基于Apache 2.0 License。github: https://github.com/SeleniumHQ/selenium Selenium IDE Se

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

[官版翻译ing]OpenStack云计算快速入门之三:OpenStack镜像管理

第三部分OpenStack镜像管理 一、简介 很多源都有为OpenStack已经编译好的各种镜像了,您可以直接下载并通过使用这些镜像来熟悉OpenStack。 不过如果是为生产环境进行部署的话,您一定需要构建含有定制软件或配置的镜像文件。不要着急,本章将引领您完成几种较为流行的Linux发行版镜像,最后也将制作一份Windows的镜像。 由不同的Linux发行版制作镜像时,过程几乎一样,仅有微小的差别而已。由于含有cloud-ini软件包,人们用Ubuntu系统制作镜像文件变得非常容易。Cloud-init软件在实例运行时能够自动维护实例配置,也将为无密码登陆完成密匙导入以及完成设置主机名等任务。每个实例都将通过169.254.169.254的元数据接口,从nova运算中读取特定的配置。 如果您制作发行版不含有诸如cloud-init此类的软件包,您就需要自行完成密匙导入等操作了。说来也简单,只需向rc.local文件中添加相关命令即可。 如前所述,创建Linux不同发行版的过程除了几细微之处外,其余完全一致。不同点将在后文阐述。 本文所有的例子,都是在KVM基础上完成的。正像前两章说道的那样,现在我正在使用client1。 接下来的操作将制作很多镜像,这些镜像代表一个没有分区的硬盘。 二、创建Linux镜像 第一部,首先是在Client1上创建一块空镜像,这块镜像用作虚拟机的硬盘,所以请保证留出你所需的空间的大小: kvm-imgcreate-fqcow2server.img5G (一)安装准备 下载你所需的Linux发行版iso原镜像文件,比如您想安装Ubuntu,您可以使用wget或浏览器从网站“http://releases.ubuntu.com”获得iso文件。 将下载的iso文件置入虚拟机的CD-ROM后,启动KVM一个虚拟机实例。您将看到安装过程的开始。键入如下命令,它将在端口0开放VNC服务: sudokvm-m256-cdromubuntu-12.04-server-amd64.iso-drivefile=server.img,if=virtio,index=0-bootd-netnic-netuser-nographic-vnc:0 使用0这个展示端口连入虚拟机的VNC,并完成安装。 举例如下,client1的IP地址是10.10.10.4,则通过下列命令访问vnc: vncviewer10.10.10.4:0 注意,在制作Linux镜像过程中,请创建一个单独的ext4格式分区并将其挂在swap分区下。 安装结束后,通过执行下列命令重新载入虚拟机: sudokvm-m256-drivefile=server.img,if=virtio,index=0-bootc-netnic-netuser-nographic-vnc:0 此时,您可以在这个系统上安装定制的软件包,进行系统更新,添加用户或更改配置了。 (二)Ubuntu 执行以下命令: sudoapt-getupdate sudoapt-getupgrade sudoapt-getinstallopenssh-servercloud-init 清除/etc/udev/rules.d文件的网络设备命名规则,因为这些规则将从实例的网卡获得。 sudorm-rf/etc/udev/rules.d/70-persistent-net.rules (三)Fefora 运行如下命令: yumupdate yuminstallopenssh-server chkconfigsshdon 然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件如下所示: DEVICE="eth0" BOOTPROTO=dhcp NM_CONTROLLED="yes" ONBOOT="yes" 清除/etc/udev/rules.d文件的网络设备命名规则,因为这些规则将从实例的网卡获得。 sudorm-rf/etc/udev/rules.d/70-persistent-net.rules 关闭虚拟机。 由于Fedora没有cloud-init或类似软件,您需要亲自进行几步配置使实例可以得到诸如sshkey这样的元数据。 编辑/etc/rc.local文件并且把以下内容粘贴到“touch/var/lock/subsys/local”行前: depmod-a modprobeacpiphp #simpleattempttogettheusersshkeyusingthemeta-dataservice mkdir-p/root/.ssh echo>>/root/.ssh/authorized_keys curl-m10-shttp://169.254.169.254/latest/meta-data/public-keys/0/openssh-key|grep'ssh-rsa'>>/root/.ssh/authorized_keys echo"AUTHORIZED_KEYS:" echo"************************" cat/root/.ssh/authorized_keys echo"************************" (四)OpenSUSE 选择ssh服务,curl以及其他需要的包。 安装ssh服务器: zypperinstallopenssh 安装crul: zypperinstallcurl 使用如下步骤将SshKey注入实例中: 首先,创建文件/etc/init.d/sshkey并且写入下列内容: echo>>/root/.ssh/authorized_keys curl-m10-shttp://169.254.169.254/latest/meta-data/public-keys/0/openssh-key|grep'ssh-rsa'>>/root/.ssh/authorized_keys echo"AUTHORIZED_KEYS:" echo"************************" cat/root/.ssh/authorized_keys echo"************************" 然后,为该文件设置权限: chmod755/etc/init.d/sshkey 将sshkey服务设置为开机自动启动: chkconfigsshkeyon 使用下列命令设置防火墙(而非iptables),令其允许ssh服务: yast2 最后同样地,清除/etc/udev/rules.d文件的网络设备命名规则,因为这些规则将从实例的网卡获得。 sudorm-rf/etc/udev/rules.d/70-persistent-net.rules (五)Debian 安装时选择SSH服务器,Curl及相关软件。 然后进行必要的设置,为key注入而编辑/etc/rc.local文件并增加如下内容: echo>>/root/.ssh/authorized_keys curl-m10-shttp://169.254.169.254/latest/meta-data/public-keys/0/openssh-key|grep'ssh-rsa'>>/root/.ssh/authorized_keys echo"AUTHORIZED_KEYS:" echo"************************" cat/root/.ssh/authorized_keys echo"************************" 同样地,清除/etc/udev/rules.d文件的网络设备命名规则,因为这些规则将从实例的网卡获得。 sudorm-rf/etc/udev/rules.d/70-persistent-net.rules (六)CentOS6及RHEL6 安装时选择SSH服务器,Curl及相关软件。 然后进行必要的设置,为key注入而编辑/etc/rc.local文件并增加如下内容: echo>>/root/.ssh/authorized_keys curl-m10-shttp://169.254.169.254/latest/meta-data/public-keys/0/openssh-key|grep'ssh-rsa'>>/root/.ssh/authorized_keys echo"AUTHORIZED_KEYS:" echo"************************" cat/root/.ssh/authorized_keys echo"************************" 编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件如下所示: DEVICE="eth0" BOOTPROTO=dhcp NM_CONTROLLED="yes" ONBOOT="yes" 同样地,清除/etc/udev/rules.d文件的网络设备命名规则,因为这些规则将从实例的网卡获得。 sudorm-rf/etc/udev/rules.d/70-persistent-net.rules (七)上传Linux镜像 使用如下命令上传镜像: glanceaddname=""is_public=truecontainer_format=ovfdisk_format=qcow2.img 三、创建Windows镜像 第一步,仍然是在Client1上创建一块空镜像,这块镜像用作虚拟机的硬盘,所以请保证留出你所需的空间的大小: kvm-imgcreate-fqcow2windowsserver.img20G (一)安装操作系统 当实例运行时,OpenStack利用virtio接口来使用镜像,于是镜像中的操作系统需要装有virtio驱动。不巧的是,默认WindowsServer2008是没有virtio驱动的。您可以在如下网址:http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin下载装有该驱动的iso镜像并使用该镜像进行安装。 译者注1:Virtio是半虚拟化hypervisor中位于设备之上的抽象层。virtio由RustyRussell开发,virtio是对半虚拟化hypervisor中的一组通用模拟设备的抽象。该设置还允许hypervisor导出一组通用的模拟设备,并通过一个通用的应用编程接口(API)让它们变得可用。[来源:开源中国http://www.oschina.net/p/virtio] 译者注2:该链接的virtio-win是0.1-22版,不能用。下载用1.1.16新版即可。 执行此命令开始安装: sudokvm-m1024-cdromwindows2008.iso-drivefile=windowsserver1.img,if=virtio-bootd-drivefile=virtio-win-0.1-22.iso,index=3,media=cdrom-devicevirtio-net-pci-netnic-netuser-nographic-vnc:5 当安装提示您选择一块硬盘设备步骤时,您并不能看到当前有可用设备。点击左下方的“载入设备(Loaddrivers)”按钮,选择第二CDROM后,含有virtio驱动的硬盘便被加载了。 在安装结束之前,您需要重启系统一次,此时您可以安装其它您所需的软件或执行任何需要的配置更改。除此之外,请务必开放实例中的远程桌面,因为远程桌面将是您连接并使用该实例的唯一途径。同时,Windows防火墙应该相应地设置为对ICMP和RDP开放。 (二)上传Windows镜像 关闭虚拟机并将该镜像使用如下命令上传至OpenStack中: glanceaddname="windows"is_public=truecontainer_format=ovfdisk_format=qcow2 ************************ 第三章,完结[2012-07-12 20:43:00]********************* 五岳之巅原创,如有转载,必须注明出处,否则追究。

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

java B2B2C源码电子商城系统-Kafka快速入门

大家对Kafka有了一些基本了解之后,下面我们来尝试构建一个Kafka服务端,并体验一下基于Kafka的消息生产与消费。环境安装首先,我们需要从官网上下载安装介质。需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 壹零叁八柒柒四六二六在解压Kafka的安装包之后,可以看到其目录结构如下: kafka +-bin +-windows +-config +-libs +-logs +-site-docs 由于Kafka的设计中依赖了ZooKeeper,所以我们可以在bin和config目录中除了看到Kafka相关的内容之外,还有ZooKeeper相关的内容。其中bin目录存放了Kafka和ZooKeeper的命令行工具,bin根目录下是适用于Linux/Unix的shell,而bin/windows下的则是适用于windows下的bat。我们可以根据实际的系统来设置环境变量,以方便后续的使用和操作。而在config目录中,则是用来存放了关于Kafka与ZooKeeper的配置信息。 启动测试下面我们来尝试启动ZooKeeper和Kafka来进行消息的生产和消费。示例中所有的命令均已配置了Kafka的环境变量为例。 启动ZooKeeper,执行命令:zookeeper-server-start config/zookeeper.properties,该命令需要指定zookeeper的配置文件位置才能正确启动,kafka的压缩包中包含了其默认配置,开发与测试环境不需要修改。 [2016-09-28 08:05:34,849] INFO Reading configuration from: config\zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig) [2016-09-28 08:05:34,850] INFO autopurge.snapRetainCount set to 3 (org.apache.zookeeper.server.DatadirCleanupManager) [2016-09-28 08:05:34,851] INFO autopurge.purgeInterval set to 0 (org.apache.zookeeper.server.DatadirCleanupManager) [2016-09-28 08:05:34,851] INFO Purge task is not scheduled. (org.apache.zookeeper.server.DatadirCleanupManager) ... [2016-09-28 08:05:34,940] INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.NIOServerCnxnFactory) 从控制台信息中,我们可以看到ZooKeeper从指定的config/zookeeper.properties配置文件中读取信息并绑定2181端口启动服务。有时候启动失败,可查看一下端口是否被占用,可以杀掉占用进程或通过修改config/zookeeper.properties配置文件中的clientPort内容以绑定其他端口号来启动ZooKeeper。 启动Kafka,执行命令:kafka-server-start config/server.properties,该命令也需要指定Kafka配置文件的正确位置,如上命令中指向了解压目录包含的默认配置。若在测试时,使用外部集中环境的ZooKeeper的话,我们可以在该配置文件中通过zookeeper.connect参数来设置ZooKeeper的地址和端口,它默认会连接本地2181端口的ZooKeeper;如果需要设置多个ZooKeeper节点,可以为这个参数配置多个ZooKeeper地址,并用逗号分割。比如:zookeeper.connect=127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002。 创建Topic,执行命令:kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test,通过该命令,创建一个名为“test”的Topic,该Topic包含一个分区一个Replica。在创建完成后,可以使用kafka-topics --list --zookeeper localhost:2181命令来查看当前的Topic。 另外,如果我们不使用kafka-topics命令来手工创建,直接进行下面的内容进行消息创建时也会自动创建Topics来使用。 创建消息生产者,执行命令:kafka-console-producer --broker-list localhost:9092 --topic test。kafka-console-producer命令可以启动Kafka基于命令行的消息生产客户端,启动后可以直接在控制台中输入消息来发送,控制台中的每一行数据都会被视为一条消息来发送。我们可以尝试输入几行消息,由于此时并没有消费者,所以这些输入的消息都会被阻塞在名为test的Topics中,直到有消费者将其消费掉位置。 创建消息消费者,执行命令:kafka-console-consumer --zookeeper localhost:2181 --topic test --from-beginning。kafka-console-consumer命令启动的是Kafka基于命令行的消息消费客户端,在启动之后,我们马上可以在控制台中看到输出了之前我们在消息生产客户端中发送的消息。我们可以再次打开之前的消息生产客户端来发送消息,并观察消费者这边对消息的输出来体验Kafka对消息的基础处理。 整合Spring Cloud Bus在上一篇使用Rabbit实现消息总线的案例中,我们已经通过引入spring-cloud-starter-bus-amqp模块,完成了使用RabbitMQ来实现的消息总线。若我们要使用Kafka来实现消息总线时,只需要把spring-cloud-starter-bus-amqp替换成spring-cloud-starter-bus-kafka模块,在pom.xml的dependenies节点中进行修改,具体如下: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-kafka</artifactId> </dependency> 如果我们在启动Kafka时均采用了默认配置,那么我们不需要再做任何其他配置就能在本地实现从RabbitMQ到Kafka的切换。我们可以尝试把刚刚搭建的ZooKeeper、Kafka启动起来,并将修改为spring-cloud-starter-bus-kafka模块的config-server和config-client启动起来。 在config-server启动时,我们可以在控制台中看到如下输出: 2016-09-28 22:11:29.627 INFO 15144 --- [ main] o.s.c.s.b.k.KafkaMessageChannelBinder : Using kafka topic for outbound: springCloudBus 2016-09-28 22:11:29.642 INFO 15144 --- [-localhost:2181] org.I0Itec.zkclient.ZkEventThread : Starting ZkClient event thread. ... 016-09-28 22:11:30.290 INFO 15144 --- [ main] o.s.i.kafka.support.ProducerFactoryBean : Using producer properties => {bootstrap.servers=localhost:9092, linger.ms=0, acks=1, compression.type=none, batch.size=16384} 2016-09-28 22:11:30.298 INFO 15144 --- [ main] o.a.k.clients.producer.ProducerConfig : ProducerConfig values: ... 2016-09-28 22:11:30.322 INFO 15144 --- [ main] o.s.c.s.b.k.KafkaMessageChannelBinder$1 : Adding {message-handler:outbound.springCloudBus} as a subscriber to the 'springCloudBusOutput' channel 2016-09-28 22:11:31.467 INFO 15144 --- [ main] o.s.c.s.b.k.KafkaMessageChannelBinder$7 : Adding {message-handler:inbound.springCloudBus.anonymous.8b9e6c7b-6a50-48c5-b981-8282a0d5a30b} as a subscriber to the 'bridge.springCloudBus' channel 2016-09-28 22:11:31.467 INFO 15144 --- [ main] o.s.c.s.b.k.KafkaMessageChannelBinder$7 : started inbound.springCloudBus.anonymous.8b9e6c7b-6a50-48c5-b981-8282a0d5a30b 从控制台的输出内容,我们可以看到config-server连接到了Kafka中,并使用了名为springCloudBus的Topic。 此时,我们可以使用kafka-topics --list --zookeeper localhost:2181命令来查看当前Kafka中的Topic,若已成功启动了config-server并配置正确,我们就可以在Kafka中看到已经多了一个名为springCloudBus的Topic。 我们再启动配置了spring-cloud-starter-bus-kafka模块的config-client,可以看到控制台中输出如下内容: 2016-09-28 22:43:55.067 INFO 6136 --- [ main] o.s.c.s.b.k.KafkaMessageChannelBinder : Using kafka topic for outbound: springCloudBus 2016-09-28 22:43:55.078 INFO 6136 --- [-localhost:2181] org.I0Itec.zkclient.ZkEventThread : Starting ZkClient event thread. ... 2016-09-28 22:50:38.584 INFO 828 --- [ main] o.s.i.kafka.support.ProducerFactoryBean : Using producer properties => {bootstrap.servers=localhost:9092, linger.ms=0, acks=1, compression.type=none, batch.size=16384} 2016-09-28 22:50:38.592 INFO 828 --- [ main] o.a.k.clients.producer.ProducerConfig : ProducerConfig values: ... 2016-09-28 22:50:38.615 INFO 828 --- [ main] o.s.c.s.b.k.KafkaMessageChannelBinder$1 : Adding {message-handler:outbound.springCloudBus} as a subscriber to the 'springCloudBusOutput' channel 2016-09-28 22:50:38.616 INFO 828 --- [ main] o.s.integration.channel.DirectChannel : Channel 'didispace:7002.springCloudBusOutput' has 1 subscriber(s). 2016-09-28 22:50:38.616 INFO 828 --- [ main] o.s.c.s.b.k.KafkaMessageChannelBinder$1 : started outbound.springCloudBus ... 2016-09-28 22:50:39.162 INFO 828 --- [ main] s.i.k.i.KafkaMessageDrivenChannelAdapter : started org.springframework.integration.kafka.inbound.KafkaMessageDrivenChannelAdapter@60cf855e 2016-09-28 22:50:39.162 INFO 828 --- [ main] o.s.c.s.b.k.KafkaMessageChannelBinder$7 : Adding {message-handler:inbound.springCloudBus.anonymous.f8fc9c0c-ccd3-46dd-9537-07198f4ee216} as a subscriber to the 'bridge.springCloudBus' channel 2016-09-28 22:50:39.163 INFO 828 --- [ main] o.s.c.s.b.k.KafkaMessageChannelBinder$7 : started inbound.springCloudBus.anonymous.f8fc9c0c-ccd3-46dd-9537-07198f4ee216 可以看到,config-client启动时输出了类似的内容,他们都订阅了名为springCloudBus的Topic。 在启动了config-server和config-client之后,为了更明显地观察消息总线刷新配置的效果,我们可以在本地启动多个不同端口的config-client。此时,我们的config-server以及多个config-client都已经连接到了由Kafka实现的消息总线上。我们可以先访问各个config-client上的/from请求,查看他获取到的配置内容。然后,修改Git中对应的参数内容,再访问各个config-client上的/from请求,可以看到配置内容并没有改变。最后,我们向config-server发送POST请求:/bus/refresh,此时我们再去访问各个config-client上的/from请求,就能获得到最新的配置信息,各客户端上的配置都已经加载为最新的Git配置内容。 从config-client的控制台中,我们可以看到如下内容: 2016-09-29 08:20:34.361 INFO 21256 --- [ kafka-binder-1] o.s.cloud.bus.event.RefreshListener : Received remote refresh request. Keys refreshed [from] RefreshListener监听类记录了收到远程刷新请求,并刷新了from属性的日志。在上面的例子中,由于Kafka、ZooKeeper均运行于本地,所以我们没有在测试程序中通过配置信息来指定Kafka和ZooKeeper的配置信息,就完成了本地消息总线的试验。但是我们实际应用中,Kafka和ZooKeeper一般都会独立部署,所以在应用中都需要来为Kafka和ZooKeeper配置一些连接信息等。Kafka的整合与RabbitMQ不同,在Spring Boot 1.3.7中并没有直接提供的Starter模块,而是采用了Spring Cloud Stream的Kafka模块,所以对于Kafka的配置均采用了spring.cloud.stream.kafka的前缀。java B2B2C springmvc mybatis多租户电子商城系统

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

云服务器 ECS 快速入门:Linux 格式化和挂载数据盘

Linux 格式化和挂载数据盘 如果您已经为 ECS 实例配了数据盘,您需要先格式化数据盘并挂载文件系统后才能正常使用数据盘。 注意: 磁盘分区和格式化是高风险行为,请慎重操作。本文档描述如何处理一个新买的数据盘,如果您的数据盘上有数据,请务必对数据盘创建快照以避免可能的数据丢失。 云服务器 ECS 仅支持对 数据盘 进行分区,而不支持对 系统盘 进行分区。如果您强行使用第三方工具对系统盘进行分区操作,可能引发未知风险,如系统崩溃、数据丢失等。 本文描述如何用一个新的数据盘创建一个单分区数据盘并挂载文件系统。 您还可以根据业务需要,对数据盘进行多分区配置。建议使用系统自带的工具进行分区操作。 操作须知 单独 购买的数据盘 需要先 挂载数据盘,然后才能格式化。 随实例时一起购买的数据盘,无需挂载,直接格式化。 您需要知道挂载到实例的数据盘的设备名:您可

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

产品经理教你玩转阿里云负载均衡SLB系列(一):快速入门--什么是负载均衡

负载均衡是一种技术,从字面意义上理解,就是让负载(变得)均衡,负载是什么呢?可以理解为工作量、工作强度。用日常生活中的例子来打比方,一群建筑工人,盖一幢楼房,有搬砖的,有和水泥的,有砌墙的,有刷油漆的,同时每个工人的劳动能力还各有差别,如果让这些工作自组织的干起活来,可能有的人忙到累死,而有的人闲的无聊 ,因此不论大小工地上,都会存在监工、项目经理、包工头等这样的角色,他们会统观全局,识别每个工人的工作强度,合理分配任务,保证建筑活动的正常开展,很大程度上起到了的负载均衡的作用, 这就是负载均衡在生活中的例子。 接下来我们来看看云计算中所说的负载均衡是什么。 阿里云负载均(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

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等操作系统。

用户登录
用户注册