首页 文章 精选 留言 我的

精选列表

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

SharePoint 2016集成部署Office Web App Server (三)

Office Web App Server既然已经安装完成了,下面我们就来配置一下 首先我们要部署Office Web App Server场,这个场的概念和种类大致分为三种,且部署步骤略有不同, 微软官方的解释和场景描述如下: 1. 使用 HTTP 的、包含一台服务器的 Office Web Apps Server 场 如果您仅将 Office Web Apps Server 部署用于测试或内部使用,并且您不需要向 Lync Server 2013 提供 Office Web Apps Server 功能,则此程序适合您。您将安装使用 HTTP 的、包含一台服务器的 Office Web Apps Server 场。您不需要证书或负载平衡器,但需要不运行任何其他服务器应用程序的专用物理服务器或虚拟机实例。您可以使用此 Office Web Apps Server 场向 SharePoint 2013 和 Exchange Server 2013 提供 Office Web Apps 功能。 2. 使用 HTTPS 的、包含一台服务器的 Office Web Apps Server 场 对于大多数生产环境中,我们强烈建议对其安全功能使用 HTTPS。同样,如果您要向 Lync Server 2013 提供 Office Web Apps Server 功能,则需要 HTTPS,这样用户便可在浏览器中查看 PowerPoint 广播。此处将介绍如何安装使用 HTTPS 的、包含一台服务器的 Office Web Apps Server 场。您需要按照使用 HTTPS 保护 Office Web Apps Server Preview 通信中所述在服务器上安装证书。 此 Office Web Apps Server 场将向 SharePoint 2013、Lync Server 2013 和 Exchange Server 2013 提供 Office Web Apps 功能。 3. 使用 HTTPS 的、包含多台服务器的负载平衡 Office Web Apps Server 服务器场 如果您预计您的 Office Web Apps Server 场流量很大,并且您希望其通过 Internet 且在内部网络中可用,则应使用此类型的拓扑。本节介绍如何安装使用负载平衡器和 HTTPS 的、包含多台服务器的 Office Web Apps Server 场。如果您感兴趣,请阅读关于此拓扑的详细信息。 在您开始之前,请确保已按 Office Web Apps Server 的负载平衡器要求中所述配置负载平衡器。您还需按照使用 HTTPS 保护 Office Web Apps Server 通信中所述在负载平衡器上安装证书。此 Office Web Apps Server 服务器场将为 SharePoint 2013、Lync Server 2013 和 Exchange Server 2013 提供 Office Web Apps 功能。 今天在这里,我们的测试环境选用第二种,使用HTTPS的部署方式,因为我们这个会涉及到公网的发布(会涉及到公网证书),考虑到安全加密性,所以选择第二种。 1. 首先创建OWA Server场 用管理员角色打开powershell,输入一下命令 New-OfficeWebAppsFarm –InternalUrl ‘'https://owa.contoso.com” –ExternalUrl “https://owa.contoso.com” -CertificateName "Public Certificate" –EditingEnabled 注:如果大家和我一样,要做公网发布的话,且证书为通配符证书(*.contoso.com),那么这里我强烈建议大家最好统一内外URL名,这样方便客户端的认证和查询。 创建完毕,后期可以通过 get-officewebappFarm 命令来查询这个场的设置。 2. 验证OWA场是否成功 光看到上面的POWERSHELL截图是不够的,我们需要通过使用 Web 浏览器访问 Office Web Apps Server 发现 URL。发现 URL 是您在配置 Office Web Apps Server 服务器场时指定的 InternalUrl 参数,后跟 /hosting/discovery,例如: https://server.contoso.com/hosting/discovery 我这里就用浏览器访问 https://owa.contoso.com/hosting/discovery 如果 Office Web Apps Server 按预期运行,您应该在 Web 浏览器中看到 Web 应用程序开放平台接口 (WOPI) 协议发现 XML 文件。如上述界面,就说明该 OWA场是配置成功了的。 3. 配置主机,和SharePoint做兼容配置 通过上面两步,现在服务器场现在已经可以通过 HTTPS 为主机提供 Office Web Apps 功能。 现在通过下面的命令来将SharePoint与OWA场进行绑定。 该操作在 SharePoint 服务器上操作!!!! 以管理员角色打开SharePoint Management Shell 注意,微软给出的官方命令是这样的 New-SPWOPIBinding -ServerName <WacServerName> –AllowHTTP 我这里后面是没有后面的 –allowHttp ,之前也提到过,我这个OWA场就是要用公网证书做加密发布的,所以我没有加这个参数。 接下来我们来看一下针对SharePoint绑定的 WOPI区域 用命令 Get-SPWOPIZone 我这里直接反馈的是 external-https 达到了我的目的,如果之前是加了参数 –AllowHttp 的,这里应该反馈的是 Internal-Http 修改这个WOPI区域,可以用下面的命令 Set-SPWOPIZone -zone "internal-http" 或者 Set-SPWOPIZone -zone "internal-https" 或者 Set-SPWOPIZone -zone "external-https" 我这里因为是使用的外部 HTTPS协议,就已经可以直接进行最后的效果测试了。 ------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------------------------- 注:如果您使用的是 internal-http ,那么还有下面一个步骤 若要在测试环境中通过 HTTP 将 SharePoint 2013 与 Office Web Apps 结合使用,您需要将 AllowOAuthOverHttp 设置为“True”。否则,Office Web Apps 将不起作用。可通过运行以下示例来检查当前状态: (Get-SPSecurityTokenServiceConfig).AllowOAuthOverHttp 如果此命令返回 False,则运行下列命令可将其设置为 True。 $config=(Get-SPSecurityTokenServiceConfig) $config.AllowOAuthOverHttp=$true $config.Update() 再次运行以下命令来验证AllowOAuthOverHttp设置现在是否设置为True。 (Get-SPSecurityTokenServiceConfig).AllowOAuthOverHttp ------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------------------------- 接下来….接下来…..那就直接测试了呗 我们尝试打开一个PPT文件 有效果… 成功! 对了,最后给大家说一个命令,如果你想取消SharePoint 和 OWA场的绑定,在SharePoint Management Shell上,用下面命令就可以了 Remove-SPWOPIBinding -All:$true

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

SharePoint 2016集成部署Office Web App Server (二)

接下来我们就来安装部署Office Web App Server. 首先我们需要明确我们的部署步骤,如下 第一步,我们先来安装OWA 所需要的必备软件 Windows Server 2008 R2、Windows Server 2012 和 Windows Server 2012 R2 的必备软件略有不同,请选择以下相应过程来为您的操作系统安装正确的必备软件。 #1 在 Windows Server 2008 R2 上 安装以下软件: Windows Server 2008 R2 Service Pack 1 .NET Framework 4.5 Windows PowerShell 3.0 Windows 7 SP1 和 Windows Server 2008 R2 SP1 的平台更新 (KB2670838) 以管理员身份打开 Windows PowerShell 提示符,然后运行以下命令示例来安装必需的角色和服务。Import-ModuleServerManager然后运行此命令:Add-WindowsFeatureWeb-Server,Web-WebServer,Web-Common-Http,Web-Static-Content,Web-App-Dev,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,Web-Security,Web-Windows-Auth,Web-Filtering,Web-Stat-Compression,Web-Dyn-Compression,Web-Mgmt-Console,Ink-Handwriting,IH-Ink-Support,NET-Framework,NET-Framework-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-Win-CFAC #2 在 Windows Server 2012 上 以管理员身份打开 Windows PowerShell 提示符,然后运行此命令示例来安装必需的角色和服务。Add-WindowsFeatureWeb-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,InkandHandwritingServices,NET-Framework-Features,NET-Framework-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45 #3 在 Windows Server 2012 R2 上 安装以下软件: .NET Framework 4.5.2 以管理员身份打开 Windows PowerShell 提示符,然后运行此命令示例来安装必需的角色和服务。Add-WindowsFeatureWeb-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,InkandHandwritingServices,NET-Framework-Features,NET-Framework-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45 对于OfficeWebAppServer的硬件需求,我们可以看一下微软的官方文档,如下 我自己的环境是一台虚拟机,硬件配置如下: 注意:OfficeWebAppsServer现在是一款独立的产品,所以不能与SharePointServer安装在同一台服务器上,需要分开安装。 第一步. 准备OWA服务器的先决条件 1. 以管理员身份打开 Windows PowerShell 提示符,然后运行以下示例命令来安装必需的角色和服务。(上面以列出,我选择Server 2012 R2的命令) Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,InkandHandwritingServices,NET-Framework-Features,NET-Framework-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45 2. 下载并安装Office Web App Server 2013 下载并安装 OWA server的语言包 http://www.microsoft.com/zh-cn/download/details.aspx?id=35490 这样,我们的Office Web App Server 的安装就完成了,下一篇文章我们将介绍 OWA 服务器的配置。

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

MyBatis JPA Extra 3.4.1 发布,优雅 JPA API 功能

MyBatis JPA Extra MyBatis JPA Extra对MyBatis扩展JPA功能 1.Jakarta JPA 3注释简化CUID操作; 2.增强SELECT分页查询; 3.链式Query查询条件构造器;支持Lambda 形式调用,方便编写各类查询条件 4.@Encrypted注解轻松实现字段数据加密和解密; 5.字段数据自动填充功能; 6.数据库支持 数据库 支持 MySQL ✅ PostgreSQL ✅ Oracle ✅ SqlServer ✅ DB2 ✅ 代码托管 | GitCode | Gitee |GitHub | 1、JPA 3注释 1.1、注释 @Entity @Table @Column @ColumnDefault @Id @GeneratedValue @Encrypted @Transient @PartitionKey @SoftDelete 1.2、主键策略 支持3种主键Id策略 序号 策略 支持 1 AUTO 主键自动填充策略 snowflakeid(雪花ID-默认) uuid(UUID) 2 SEQUENCE 数据库序列生成,generator值为数据库序列名 3 IDENTITY 数据库表自增主键 1.3、Java Bean 注释 @Entity @Table(name = "STUDENTS") public class Students extends JpaEntity implements Serializable{ @Id @Column @GeneratedValue private String id; @Column private String stdNo; @Column @Encrypted private String password; @Column private String stdName; @Column @ColumnDefault("'M'") private String stdGender; @Column private int stdAge; @Column private String stdMajor; @Column private String stdClass; @Column private byte[] images; @Column(insertable = false) @GeneratedValue private LocalDateTime modifyDate; @SoftDelete @Column(name ="is_deleted") private int isDeleted; //getter setter } 2、基本操作 2.1、CURD //新增数据 @Test void insert() throws Exception{ Students student = new Students(); student.setStdNo("10024"); student.setStdGender("M"); student.setStdName("司马昭"); student.setStdAge(20); student.setStdMajor("政治"); student.setStdClass("4"); service.insert(student); } //查询数据实体并更新 @Test void update() throws Exception{ Students student = service.get("317d5eda-927c-4871-a916-472a8062df23"); student.setStdMajor("政治"); service.update(student); } //根据实体查询并更新 @Test void merge() throws Exception{ Students student = new Students(); student.setStdMajor("政治"); student.setStdClass("4"); service.merge(student); } //根据ID查询 @Test void get() throws Exception{ Students student = service.get("317d5eda-927c-4871-a916-472a8062df23"); } //根据实体查询 @Test void query() throws Exception{ Students student = new Students(); student.setStdGender("M"); List listStudents = service.query(student); } //查询所有记录 @Test void findAll() throws Exception{ List listStudents = service.findAll(); } //根据ID删除 @Test void delete() throws Exception{ service.delete("921d3377-937a-4578-b1e2-92fb23b5e512"); } //根据ID集合批量删除 @Test void batchDelete() throws Exception{ List idList = new ArrayList(); idList.add("8584804d-b5ac-45d2-9f91-4dd8e7a090a7"); idList.add("ab7422e9-a91a-4840-9e59-9d911257c918"); //... service.deleteBatch(idList); } 2.2、逻辑删除 //根据IDS批量逻辑删除 @Test void softDelete() throws Exception{ List idList=new ArrayList(); idList.add("8584804d-b5ac-45d2-9f91-4dd8e7a090a7"); idList.add("ab7422e9-a91a-4840-9e59-9d911257c918"); //... service.softDelete(idList); } 2.3、Find查询和Qruey构造器 //SpringJDBC的查询方式 where StdNo = '10024' or StdNo = '10004' @Test void find() throws Exception{ List listStudents = service.find(" StdNo = ? or StdNo = ? ", new Object[]{"10024","10004"}, new int[]{Types.VARCHAR,Types.INTEGER} ); } //根据链式条件构造器查询 //WHERE (stdMajor = '政治' and STDAGE > 30 and stdMajor in ( '政治' , '化学' ) or ( stdname = '周瑜' or stdname = '吕蒙' ) ) @Test void queryByCondition() throws Exception{ List listStudents = service.query( new Query().eq("stdMajor", "政治").and().gt("STDAGE", 30).and().in("stdMajor", new Object[]{"政治","化学"}) .or(new Query().eq("stdname", "周瑜").or().eq("stdname", "吕蒙"))); } 2.4、单表分页查询 //根据实体分页查询 @Test void fetch() throws Exception{ JpaPage page = new JpaPage(1); Students student = new Students(); student.setStdGender("M"); JpaPageResults results = service.fetch(page,student); } //根据Query条件分页查询 where stdMajor = '政治' and STDAGE > 30 @Test void fetchByCondition() throws Exception{ JpaPage page = new JpaPage(1,20); Query condition = new Query().eq("stdMajor", "政治").and().gt("STDAGE", 30); JpaPageResults results = service.fetch(page,condition); } 2.5、根据mapper的xml分页查询 //根据Mapper xml配置fetchPageResults分页查询 @Test void fetchPageResults() throws Exception{ Students student=new Students(); student.setStdGender("M"); student.setPageNumber(1); JpaPageResults results = service.fetchPageResults(student); } //根据Mapper xml id分页查询,fetchPageResults1在mapper的xml中配置 @Test void fetchPageResultsByMapperId() throws Exception{ Students student=new Students(); student.setStdGender("M"); student.setPageNumber(1); JpaPageResults results = service.fetchPageResults("fetchPageResults1",student); } 2.6、 Lambda查询 //根据Lambda链式条件构造器查询 //WHERE (stdMajor = '政治' and STDAGE > 30 and stdMajor in ( '政治' , '化学' ) or ( stdname = '周瑜' or stdname = '吕蒙' ) ) service.query( new LambdaQuery().eq(Students::getStdMajor, "政治") .and().gt(Students::getStdAge, Integer.valueOf(30)) .and().in(Students::getStdMajor, new Object[]{"政治","化学"}) .or( new LambdaQuery().eq(Students::getStdName, "周瑜") .or().eq(Students::getStdName, "吕蒙") ) ); //根据Lambda链式条件构造器分页查询 //where stdMajor = '政治' and stdAge > 30 JpaPage page = new JpaPage(); page.setPageSize(20); page.setPageable(true); LambdaQuery lambdaQuery =new LambdaQuery<>(); lambdaQuery.eq(Students::getStdMajor, "政治").and().gt(Students::getStdAge, Integer.valueOf(30)); JpaPageResults results = service.fetch(page,lambdaQuery); ... 2.6、 UpdateWrapper更新 //根据UpdateWrapper更新数据 UpdateWrapper updateWrapper = new UpdateWrapper(); updateWrapper.set("StdMajor", "历史").eq("StdName", "周瑜").or().eq("StdName", "吕蒙"); service.update(updateWrapper); //更新LambdaUpdateWrapper更新数据,带多重LambdaUpdateWrapper List majorList = new ArrayList<>(Arrays.asList("政治","化学")); LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.set(Students::getStdMajor, "历史") .eq(Students::getStdMajor, "政治") .and().gt(Students::getStdAge, Integer.valueOf(30)) .and().in(Students::getStdMajor, majorList) .or(new LambdaUpdateWrapper().eq(Students::getStdName, "周瑜").or().eq(Students::getStdName, "吕蒙")); service.update(updateWrapper); 2.8、FindBy查询 实现spring data jpa的findBy功能 //Mapper接口定义 //where x.stdNo = ?1 @Select({}) public List findByStdNo(String stdNo); //where x.stdNo = ?1 @Select({}) public List findByStdNoIs(String stdNo); //where x.stdNo = ?1 @Select({}) public List findByStdNoEquals(String stdNo); //where x.stdAge between ?1 and ?2 @Select({}) public List findByStdAgeBetween(int ageStart,int ageEnd); //where x.stdAge < ?1 @Select({}) public List findByStdAgeLessThan(int ageLessThan); //where x.stdAge <= ?1 @Select({}) public List findByStdAgeLessThanEqual(int ageLessThanEqual); //where x.stdAge > ?1 @Select({}) public List findByStdAgeAfter(int ageAfter); //where x.stdAge < ?1 @Select({}) public List findByStdAgeBefore(int ageBefore); //where x.images is null @Select({}) public List findByImagesNull(); //where x.images is null @Select({}) public List findByImagesIsNull(); //where x.images is not null @Select({}) public List findByImagesIsNotNull(); //where x.images is not null @Select({}) public List findByImagesNotNull(); //where x.stdName like ?1 @Select({}) public List findByStdNameLike(String stdName); //where x.stdName not like ?1 @Select({}) public List findByStdNameNotLike(String stdName); //where x.stdName like ?1 (parameter bound with appended %) @Select({}) public List findByStdNameStartingWith(String stdName); //where x.stdName like ?1 (parameter bound with prepended %) @Select({}) public List findByStdNameEndingWith(String stdName); //where x.stdName like ?1 (parameter bound wrapped in %) @Select({}) public List findByStdNameContaining(String stdName); //where x.stdGender = ?1 order by x.stdAge desc @Select({}) public List findByStdGenderOrderByStdAge(String stdGender); //where x.stdGender = ?1 order by x.stdAge desc @Select({}) public List findByStdGenderIsOrderByStdAge(String stdGender); //where x.stdMajors in ?1 @Select({}) public List findByStdMajorIn(String... stdMajors) ; //where x.stdMajors not in ?1 @Select({}) public List findByStdMajorNotIn(List stdMajors); //where x.deleted = true @Select({}) public List findByDeletedTrue(); //where x.deleted = false @Select({}) public List findByDeletedFalse(); //where UPPER(x.stdGender) = UPPER(?1) @Select({}) public List findByStdGenderIgnoreCase(String stdGender); //where x.stdNo <> ?1 @Select({}) public List findByStdNoNot(String stdNo); //where x.lastname = ?1 and x.firstname = ?2 @Select({}) public List findByStdMajorAndStdClass(String stdMajor,String stdClass); 2.9、默认数据自动填充 继承FieldAutoFillHandler,实现insertFill和updateFill函数,可以完成租户字段,创建人、创建时间、修改人、修改时间等默认字段的填充 import org.apache.ibatis.reflection.MetaObject; import org.dromara.mybatis.jpa.handler.FieldAutoFillHandler; public class MxkFieldAutoFillHandler extends FieldAutoFillHandler{ @Override public void insertFill(MetaObject metaObject) { this.setFieldValue(metaObject , "stdNo", "AutoFill_Insert"); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValue(metaObject , "stdNo", "AutoFill_Update"); } } 3、mapper配置 <mapper namespace="org.apache.mybatis.jpa.test.dao.persistence.StudentsMapper" > <sql id="sql_condition"> WHERE 1 = 1 <if test="id != null"> AND ID = '${id}' </if> <if test="stdName != null and stdName != '' "> AND STDNAME like '%${stdName}%' </if> <if test="stdGender != null and stdGender != '' "> AND STDGENDER = #{stdGender} </if> <if test="stdMajor != null"> <![CDATA[AND STDMAJOR = #{stdMajor}]]> </if> </sql> <select id="fetchPageResults" parameterType="Students" resultType="Students"> SELECT id , stdno , stdname ,stdgender , stdage , stdmajor , stdclass FROM STUDENTS <include refid="sql_condition"/> </select> <select id="fetchPageResults1" parameterType="Students" resultType="Students"> SELECT id , stdno , stdname ,stdgender , stdage , stdmajor , stdclass FROM STUDENTS <include refid="sql_condition"/> </select> <select id="queryBy" parameterType="Students" resultType="Students"> SELECT id , stdno , stdname ,stdgender , stdage , stdmajor , stdclass FROM ROLES <include refid="sql_condition"/> </select> 4、SpringBoot配置 # spring.datasource.username=root spring.datasource.password=maxkey spring.datasource.url=jdbc:mysql://localhost/test?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource mybatis.dialect=mysql mybatis.type-aliases-package=org.apache.mybatis.jpa.test.entity mybatis.mapper-locations=classpath*:/org/apache/mybatis/jpa/test/dao/persistence/xml/${mybatis.dialect}/*.xml mybatis.table-column-escape=true #mybatis.table-column-escape-char=` #mybatis.configuration.map-underscore-to-camel-case=true 5、版本更新 1、JpaPage 增加of方法 2、demo mybatis-config.xml优化,增加MybatisConfigInit和代码调整 3、删除冗余的代码 4、dbcp2依赖和支持 5、spring 4支持的优化 6、编译脚本优化 7、新logo优化 8、findBy优化和缓存优化 9、JpaRepositoryImpl优化 10、移除remove @TeMPOraL支持 11、日志输出优化 12、批量插入功能优化 13、新增IJpaCrudMapper ,IJpaRepository增加findById 14、新增deleteById 15、IJpaMapper<T, ID extends Serializable>新方式 16、依赖升级springboot 4.0.1

资源下载

更多资源
Nacos

Nacos

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

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

用户登录
用户注册