首页 文章 精选 留言 我的

精选列表

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

基于任务的vim使用手册-基础

2005年写的,搬过来...目 录 一 基本介绍 1.启动与退出2.基本设置3.运行shell 命令与模式的转换4.可视命令模式中 移动光标5.删除6.修改7.替换8.拷贝复制,undo,对换9.小结范围选择命令10.搜索,替换11.刷新荧屏,缩进12.系统崩溃后恢复文本13.书签功能14.命令行模式下15.编辑多个文件,编辑多个缓冲区16.分割,比较17.常用plugin 的安装 高级篇计划--使用vim进行开发 二 使用vim 进行C/C++程序开发 三 使用vim 进行Java,SQL,XML,Perl,Pyth程序开发 ------------------------------基本介绍----------------------------------------- vim 下载: http://www.vim.org/download.php vim有三种模式-普通(可视命令)模式,命令行模式,编辑模式。启动vim后在任何模式下按Esc键进入到普通模式。普通模式下输入 : 回车进入命令行模式,此时vim最窗口最下面一行为 : 后面可以输入命令行命令.在执行任何命令前要确保在相应的模式下。1.启动与退出 1)vi filename 2)命令行模式下 wq 保存并退出,q!强行退出2.基本设置-命令行模式下 1)set showmode 设置显示模式 2)set nu 显示行号 3)syn on 显示语法高亮 4)set tabstop=4 3.运行shell 命令与模式的转换1)!shellcmd 执行命令 或 shell (sh)启动 shell2)ESC 返回普通模式3)普通模式进入编辑模式a 光标后追加 A 当前行后追加 o 当前行后加一行O 大写O当前行前加一行 i 光标前插入 I 当前行前插入 r 替换R 替换cw = dw+i 删除一个单词并插入新的单词 4.普通(可视命令)模式中 移动光标1)hjkl 左,下,上,右,7h,左移7个字符。 2)HML 移动到页首,页中,页尾 3)ctrl+f, ctrl+b, 向下,向上移一屏 ctrl+d,ctrl+u,向下,向上移半屏4)^$ 行首行尾5){} 段首段尾 () 句首句尾6)可视模式下 % ,移动光标到匹配的花括号上。7)nG,移动到n行处5.删除-可视命令模式1),dw删除一个单词 dd 删除一行 d$ 或 D 删除到行尾 d^删除到行首2)X,dh删除光标前的单个字符,db删除当前光标到行首的字符3)x,d,dl删除光标后的单个字符,4)编辑模式时,ctrl+h删除光标前单个字符,ctrl+u删除到行首,ctrl+w删除光标前的一个单词。5)dL 删除到最后一行,dH,删除到开始一行。6)dtc,删除到当前行中下一个字符c的位置6.修改-可视命令模式1)cl,更改当前字符,cw修改当前单词到结尾,cb,修改到单词的开始位置,2)c3w, ,c0,修改到某行的结尾位置。3)c),修改到没句结尾位置,ctc,修改当前行直到下一个字符c所出现的位置之间的内容。4)C,修改到某一行结尾,cc修改当前行,5cc修改从当前行开始的5行内容 7.替换-可视命令模式 1)s,当前字符替换为,S,当前行替换为,5s,当前字符开始的5个字符替换为2)~,光标处字符大小写转换8.拷贝复制,undo,对换1)Y,拷贝到行尾,yy,拷贝本行,yw拷贝本单词,y$,y^拷贝到行尾,行首y),y}拷贝到句尾,段尾2)剪切 yydd,剪切本行,7yy,拷贝从当前行开始的7行内容3)粘贴 p4)undo , u5)xp,交换当前与后面字符的位置。6)ddp,交换当前与下面一行的位置。 9.小结范围选择命令1)W,w 向前移到单词前,后, ^,$ 行首行尾,(),句首句尾,{},段首段尾2)B,b 向后移到单词前,后,3)e 移到单词的最后一个字母。4)L,M,H 页尾,页中,页首 10.搜索,替换1)fa,Fa,当前行中向下,向上搜索字符a,2)ta,Ta,当前行中向下,向上移到字符a之前,之后,并不可再重复(?)3) ,将重复最近一次f,F,t,T命令(t,T?)4)/字串,?字串,命令行模式下输入,向下,向上搜索字串,如果字串中出现/?则使用// ,/?引用5)n重复搜索,N反方向搜索6)搜索中的特殊字符:^,$,行首,行尾,.,*,[]任意单个字符,任意一或多个字符,/<,/>,/(.../),7)替换:g/sourcestring/replacestr/[g]注释多行 :.,+499 s/^/#/g替换全部^M :1,$s/^M//g (^M 使用ctrl+V,ctrl+m输入)11.刷新荧屏,缩进1)命令模式下 ctrl+l (ell) 或 ctrl+r2)ctrl+T,ctrl+D,输入模式下,缩进,倒退缩进 12.系统崩溃后恢复文本vi -r 13.书签功能1)mt,'t, 建立标记,移到标记,",移到上一个标记2)标记可以代替行编号 14.命令行模式下1) set all 显示所有选项2)e filename,新建一个文件,e#,关闭当前,并返回上一个编辑的文件3)rew,编辑文件重新排序4)%,表示当前编辑的文件名 15.编辑多个文件,编辑多个缓冲区1)args,显示编辑文件的列表,next,prev,first,last, e filename,enew,新建一个文件,2)buffers,ls,显示缓冲区列表,bn,转到第n个缓冲区,bnext(bn),bprev(bp),bfirst(bf),blast(bl),new 新建一个buffer3)bdelete buffernumber,删除一个buffer,bwipe,真正删除一个buffer16.分割,比较1)sp filename,水平分割并打开,vp filename,垂直分割并打开2)ctrl+w [jkhl] 上下左右在窗口间移动 17.常用plugin 的安装:1)Calendar 日历显示2)tagExplorer 目录导航3)FavMenu.vim Fav管理4)svncommand svn版本控制管理5)email.vim ,mailbrowser.vim 2.tagExplorer的使用:Tag --------------使用vim 进行C/C++程序开发--------1.plugin for C/C++ Develop1)ctag c的Tag2)tagmenu.vim3)cppcomplete.vim2.define map key:map :w :!gcc -g -o %< %:map !%< -----------使用vim 进行Java,SQL,XML,Perl,Pyth程序开发------1.plugin for Java,Sql,XML,Perl,Sql1)ant_menu.vim2)oracle.zip,sql.vim,3)xml.vim4)perl.vim

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

阿里云基础产品技术月刊 2019年4月

一、商用产品技术TOP 1 4月10日,创新产品团队举办网络直播vGN5i新产品发布会本次发布会请到两位客户嘉宾,以新颖的demo方式和科技对话吸引了大量对云游戏和虚拟VR的有兴趣的客户。轻量级GPU云服务器是一种新的GPU云服务器规格族,是通过公共云的GPU虚拟化技术将分片虚拟化后的GPU资源以虚拟GPU的形式安装在GPU云服务器实例中。与常规GPU云服务器的区别在轻量级GPU云服务器提供更细力度的GPU计算资源,比如拥有更少的CUDA计算核心,更小的显存。这样做的优势是在业务应用中,业务可以根据资源所需更加灵活地配置GPU计算资源。TOP 2 阿里云应用高可用服务 AHAS 发布重大新特性,实现容器架构可视化采用容器服务后,了解容器之间的关系及依赖是一个比较有挑战的问题。容器化改造后的实际架构模型可能与预想的架构存在较大的差异

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

阿里云基础产品技术月刊 2019年3月

一、商用产品技术TOP 1 3月20日阿里云在2019 NVIDIA GPU技术大会上发布了国内首个公共云上的轻量级GPU异构计算产品VGN5i实例VGN5i实例不仅打破了传统直通模式的局限,还可以让客户以更低成本、更高弹性开展业务!以云游戏为例,企业通常仅需要一颗物理GPU几分之一的计算能力即可流畅完成图形或视觉计算;人工智能领域也存在类似问题,深度学习推理场景对GPU的计算资源消耗可能仅仅是训练阶段的数十分之一,甚至更少。对于这类应用场景而言,轻量级计算异构产品可以提升系统灵活性,并大幅降低成本。而阿里云本次首家提供云上轻量级GPU实例,意味着用户可以用更细粒度的计算资源开启业务。该产品基于NVIDIA Tesla P4 GPU,支持多种规格,企业可以按需选择实例规格或者在云市场选择NVIDIA Quadro虚拟工作站,适用于

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

Spring Boot 2.x基础教程:快速入门

简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让你更易上手,更简单快捷地构建Spring应用! Spring Boot让我们的Spring应用变的更轻量化。我们不必像以前那样繁琐的构建项目、打包应用、部署到Tomcat等应用服务器中来运行我们的业务服务。通过Spring Boot实现的服务,只需要依靠一个Java类,把它打包成jar,并通过java -jar命令就可以运行起来。这一切相较于传统Spring应用来说,已经变得非常的轻便、简单。 总结一下Spring Boot的主要优点: 为所有Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化Web项目 没有

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

关于网络爬虫的一些基础知识

什么是网络爬虫,百度百科是这么定义的 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。以下简称爬虫 爬虫作为一种自动化工具去代替人工操作,以此来节省成本和时间,爬虫不是乱爬,一个没有规则爬虫是没有存活的价值的,需要明确爬取的目标这样才能体现爬虫的价值,一般我们需要人为的设定一些规则,让爬虫按照这个规则去爬取。这里我从网络上找到了关于爬虫的几个分类 常见优秀网络爬虫有以下几种类型:1.批量型网络爬虫:限制抓取的属性,包括抓取范围、特定目标、限制抓取时间、限制数据量以及限制抓取页面,总之明显的特征就是受限;2.增量型网络爬虫(通用爬虫):与前者相反,没有固定的限制,无休无止直到抓完所有数据。这种类型一般应用于搜索引擎的网站或程序;3.垂直网络爬虫(聚焦爬虫):简单的可以理解为一个无限细化的增量网络爬虫,可以细致的对诸如行业、内容、发布时间、页面大小等很多因素进行筛选。 以上内容来自:https://www.douban.com/note/608049857/ 另外除了这些分类外还经常听到爬虫的搜索方式: 广度优先搜索 整个的广度优先爬虫过程就是从一系列的种子节点开始,把这些网页中的"子节点"(也就是超链接)提取出来,放入队列中依次进行抓取。被处理过的链接需要放 入一张表(通常称为Visited表)中。每次新处理一个链接之前,需要查看这个链接是否已经存在于Visited表中。如果存在,证明链接已经处理过, 跳过,不做处理,否则进行下一步处理。(这里也就是我们后面提到的爬虫URL管理模块)关于该算法的优点,主要原因有三点:重要的网页往往离种子比较近,我们在刷新闻网址的时候一般都是热门信息出现在比较显眼的位置,随着阅读的深入会发现,获取到的信息价值也大不如从前,万维网的实际深度最多能达到17层,但到达某个网页总存在一条很短的路径。而广度优先遍历会以最快的速度到达这个网页。广度优先有利于多爬虫的合作抓取,多爬虫合作通常先抓取站内链接,抓取的封闭性很强。 深度优先搜索 深度优先搜索是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点(即那些不包含任何超链的HTML文件) 。在一个HTML文件中,当一个超链被选择后,被链接的HTML文件将执行深度优先搜索,即在搜索其余的超链结果之前必须先完整地搜索单独的一条链。深度优先搜索沿着HTML文件上的超链走到不能再深入为止,然后返回到某一个HTML文件,再继续选择该HTML文件中的其他超链。当不再有其他超链可选择时,说明搜索已经结束。优点是能遍历一个Web 站点或深层嵌套的文档集合;缺点是因为Web结构相当深,,有可能造成一旦进去,再也出不来的情况发生,所以一般指定一个最大的深度。 最后说一下一个爬虫一般都有哪些模块 URL管理模块:维护已经爬取的URL集合和未爬取的URL集合,并提供获取新URL链接的接口 HTML下载模块:从URL管理器中获取未爬取的URL链接并下载HTML网页 HTML解析模块:从HTML下载器下载的网页内容解析出新的URL交给URL管理器,解析出有效数据给到数据存储器,常用lxml、xpath、re正则 数据存储模块:将HTML解析器解析出来的数据通过文件或数据库的形式存储起来 爬虫调度模块:负责统筹调度其他四个模块的协调工作 URL管理器模块 一般是用来维护爬取的url和未爬取的url已经新添加的url的,如果队列中已经存在了当前爬取的url了就不需要再重复爬取了,另外防止造成一个死循环。举个例子 我爬www.baidu.com 其中我抓取的列表中有music.baidu.om,然后我再继续抓取该页面的所有链接,但是其中含有www.baidu.com,可以想象如果不做处理的话就成了一个死循环了,在百度首页和百度音乐页循环,所以有一个对列来维护URL是很重要的。 下面以python代码实现为例,使用的deque双向队列方便取出以前的url。 from collections import deque class URLQueue(): def __init__(self): self.queue = deque() # 待抓取的网页 self.visited = set() # 已经抓取过的网页 def new_url_size(self): ''''' 获取未爬取URL集合的大小 :return: ''' return len(self.queue) def old_url_size(self): ''''' 获取已爬取URL的大小 :return: ''' return len(self.visited) def has_new_url(self): ''''' 判断是否有未爬取的URL :return: ''' return self.new_url_size() != 0 def get_new_url(self): ''''' 获取一个未爬取的URL :return: ''' new_url = self.queue.popleft()#从左侧取出一个链接 self.old_urls.add(new_url)#记录已经抓取 return new_url def add_new_url(self, url): ''''' 将新的URL添加到未爬取的URL集合 :param url: 单个url :return: ''' if url is None: return False if url not in self.new_urls and url not in self.old_urls: self.new_urls.append(url) def add_new_urls(self, urlset): ''''' 将新的URL添加到未爬取的URL集合 :param urlset: url集合 :return: ''' if urlset is None or len(urlset) == 0: return for url in urlset: self.add_new_url(url) HTML下载模块 HTML下载模块该模块主要是根据提供的url进行下载对应url的网页内容。使用模块requets-HTML,加入重试逻辑以及设定最大重试次数,同时限制访问时间,防止长时间未响应造成程序假死现象。 根据返回的状态码进行判断如果访问成功则返回源码,否则开始重试,如果出现异常也是进行重试操作。 from requests_html import HTMLSession from fake_useragent import UserAgent import requests import time import random class Gethtml(): def __init__(self,url="http://wwww.baidu.com"): self.ua = UserAgent() self.url=url self.session=HTMLSession(mock_browser=True) #关于headers有个默认的方法 self.headers = default_headers() #mock_browser 表示使用useragent def get_source(self,url,retry=1): if retry>3: print("重试三次以上,跳出循环") return None while retry<3: try: req=self.session.get(url,timeout=10) if req.status_code==requests.codes.ok: return req.text else: time.sleep(random.randint(0,6)) except: print('An Error Happened, Please wait 0-6 seconds') time.sleep(random.randint(0, 6)) retry += 1 self.get_source(url,retry) HTML解析模块 这个就比较简单了没有什么好强调的,如果返回的json 就是直接按照键值取,如果是网页就是用lxml模块的html进行xpath解析。 from lxml import html import json class GetNodeList(): def __init__(self): self.getdivxpath="//div[@class='demo']" def use_xpath(self,source): if len(source): root=html.fromstring(source) #html转换成dom对象 nodelist=root.xpath(self.getdivxpath)#对dom对象进行xpath解析 if len(nodelist): return nodelist return None def use_json(self, source,keyname): if len(source): jsonstr=json.loads(source) value=jsonstr.get(keyname) #根据具体的键值修改 if len(value): return value return None 数据存储模块 数据存储模块的话,目前我这用的比较多的是存储到mysql,所以下面的这个例子也是保存到mysql,用到了ORM映射的SQLAlchemy,(ORM:Object-Relational Mapping,把关系数据库的表结构映射到对象上),使用create_engine()来初始化数据库连接。 SQLAlchemy用一个字符串表示连接信息: '数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'然后使用pandas tosql进行了保存,对于简单的数据保存,尤其是批量存储来说效率还是提高的, 也不需要写原生的sql语句但是如果有其他复杂的操作就只能sqlalchemy或pymysql配合用了 关于大概过程就是把字典list类型的数据转换成dataframe之后在操作,需要强调一下的是if_exists参数的含义 下面说一下关于if_exists的几个参数,都是对表来说的不是对于数据 fail的意思如果表存在,啥也不做replace的意思,如果表存在,删了表,再建立一个新表,把数据插入append的意思,如果表存在,把数据插入,如果表不存在创建一个表!然后下面就看代码的实现吧 # _*_coding:utf-8 _*_ import pandas as pd from .config import * from sqlalchemy import create_engine class DataOutput(object): def __init__(self): self.conn=create_engine(f'{DB_TYPE} +mysqldb://{USER}:{PASSWD}@{HOST}: {PORT}/{DataBase}?charset={Charset}') def store_data(self, data_dicts): if data_dicts is None: return None # data_dicts 保存成字典类别形式方便转换dataframe df=pd.DataFrame(data_dicts) pd.io.sql.to_sql(df, "baidu_info", con=self.conn, if_exists="append", index=False) 调度模块 调度模块也就是对之前所以的模块的一个调度,作为一个流水的入口。 下面的代码的获取数据部分暂时没有写,细节部分在实际开发中,要根据要求再定义,这里说的是使用方法 from savedb import DataOutput from getnodelist import GetNodeList from gethtml import Gethtml from urlqueue import URLQueue class Run(object): def __init__(self): self.queue = URLQueue() self.downloader = Gethtml() self.parser = GetNodeList() self.output = DataOutput() def crawl(self, root_url): # 添加入口URL self.queue.add_new_url(root_url) # 判断URL管理器是否有新的URL,同时计算抓取了多少个url while (self.queue.has_new_url() and self.queue.old_url_size() < 100): try: new_url = self.queue.get_new_url() html = self.downloader.get_source(new_url) new_urls = self.parser.use_xpath(new_url, html) self.queue.add_new_urls(new_urls) # 数据存储器存储文件 data="" #datalist一般是上面取xpath获取值的一个集合这里略。 self.output.store_data(data) print("已经抓取%s个链接" % self.queue.old_url_size()) except Exception: print("err") if __name__ == "__main__": spider_man = Run() spider_man.crawl("https://www.baidu.com")

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

整理一些计算机基础知识!

本文来自云栖社区官方钉群“Python技术进阶”,了解相关信息可以关注“Python技术进阶”。 1、网络层次划分 为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四

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

Python零基础学习笔记(四十)—— datetime和Calendar

import datetime import time ''' datetime比time高级了不少,可以理解为date time基于time进行了封装, 提供了各种实用的函数,date time模块的接口更为直观,更容易调用 模块中的类: datetime 同时有时间和日期 timedelta 主要用于计算时间跨度 tzinfo 时区相关 time 只关注时间 date 只关注日期 ''' #获取当前时间 d1 = datetime.datetime.now() print(d1) # d2 = datetime.datetime(1995, 4, 28,10,23,34,123355) print(d2) # d3 = datetime.datetime.time(d1) print(d3) #将时间转换为字符串 #d4 = d1.strptime("%Y-%m-%d %X") #print(d4) #时间加减 d5 = d1 - d2 print(d5) #间隔的天数 print(d5.days) #间隔天数除外的秒数 print(d5.seconds) import calendar ''' 日历 ''' #使用 print(calendar.month(2019, 7)) #返回指定年的日历 print(calendar.calendar(2019)) #判断闰年,返回True print(calendar.isleap(2000)) #返回某个月的weekday的第一天和这个月的天数 print(calendar.monthrange(2018, 12)) #返回某个月以每一周为元素的列表 print(calendar.monthcalendar(2017, 12))

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

Python零基础学习笔记(三十五)—— 内存修改

今天利用这个小功能做了个植物大战僵尸的外挂,哈哈哈 等以后学了GUI编程的时候做成图形化界面 #进程模块 import win32process #系统 import win32api import win32con import win32gui import ctypes #获取最高权限,\位运算 PROCESS_ALL_ACCESS = (0x000F000|0x00100000|0xFFF) #找窗体 win = win32gui.FindWindow("MainWindow","植物大战僵尸中文版") #根据窗体找到进程号 hid, pid = win32process.GetWindowThreadProcessId(win) #以最高权限打开进程 p = win32api.OpenProcess(PROCESS_ALL_ACCESS, False, pid) data = ctypes.c_long() #c语言中的长整形 #加载内核模块 md = ctypes.windll.LoadLibrary("C:\\Windows\\System32\\kernel32") #读取内存 md.ReadProcessMemory(int(p),0x12508678, ctypes.byref(data), 4, None) print("data =", data) #设置新值 newData = ctypes.c_long(1000) #修改 md.WriteProcessMemory(int(p), 0x12508678, ctypes.byref(newData), 4, None)

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

Python零基础学习笔记(三十一)—— 写文件

import time path = r"C:\Users\Administrator\PycharmProjects\untitled\day011\文件读写\file1" f = open(path,"w") ''' #写文件 #1、 f.write("Hello !!!") f.write("and") #2、刷新缓冲区 #直接把内部缓冲区数据立刻写入文件,而不是被动等待自动刷新缓冲区写入 f.flush() while True: f.write("Hello!\n") f.flush() time.sleep(1) f.close() #写文件 with open(path,"a") as f2: f2.write("aaa$$%##%##%") ''' #编码 with open(path, "wb") as f3: str = "My name is jjking.你好" f3.write(str.encode("utf-8")) with open(path, "rb") as f4: data = f4.read() print(data) print(type(data)) newData = data.decode("utf-8") print(newData) print(type(newData))

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

Python零基础学习笔记(二十四)—— 函数

''' 认识函数:在以恶完整的项目中,某些功能会反复的使用,那么 会将功能封装成函数,当我们要使用这些功能的时候 直接调用函数即可 本质:函数就是对功能的封装 优点: 1、简化代码结构,增加了代码的复用度(重复使用的程度) 2、如果想修改某些功能或修改某个bug只需要修改相应的函数即可 ''' ''' 定义函数: 格式: def 函数名(参数列表): 语句 return 表达式 def:函数代码块从def关键字开始 函数名:遵循标识符规则 参数列表(参数1, 参数2,……参数n):任何传入函数的参数和变量 必须放在圆括号之间 语句:执行的功能 return:以return为结束 ''' ''' 函数的调用 格式:函数名(参数列表) 函数名:是要使用的功能的函数 '''

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

腾讯云软件源

腾讯云软件源

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

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

用户登录
用户注册