首页 文章 精选 留言 我的

精选列表

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

更多下载渠道 | 优麒麟新增上海交通大学等四大镜像站

优麒麟开源操作系统新增多所高校镜像站! 快来康康哪个离你最近~ 优麒麟20.04LTSPro版本自发布以来,让越来越多的国内外开源镜像站对优麒麟投以更多的关注,并陆续将优麒麟软件源和镜像收录其中。除已有的阿里云、华为云、清华大学等15个开源镜像站下载通道,现新增北京外国语大学、重庆邮电大学、上海交通大学和东莞理工学院开源镜像站,为爱好者们提供了更多的镜像下载选择渠道。 以下是本次新增开源镜像站的详情: 1、北京外国语大学镜像站 北京外国语大学镜像站作为 TUNA镜像的姊妹站,由北外信息技术中心支持创办、清华TUNA协会运行维护,提供和TUNA镜像站基本一致的镜像内容,网络接入 CERNET2IPv6和中国移动IPv4线路,支持HTTP/HTTPS/RSYNC访问。 2、重庆邮电大学镜像站 重庆邮电大学镜像站由重庆邮电大学信息与网络管理中心提供支持,由红岩网校工作站运维安全部/CQUPT-LUG维护,旨在为大家提供各大主流 Linux发行版的安装镜像/ISO文件(为西南地区乃至全国和校内用户提供Linux镜像源和开源软件的反向代理服务)。 3、上海交通大学镜像站 上海交通大学镜像站由上海交通大学Linux用户组(SJTUG)维护和上海交通大学网络信息中心赞助资源。共设两台服务器,致远服务器同步新镜像,思源服务器兼容原SJTU镜像站。它们分别提供不同的软件源镜像服务。 4、东莞理工学院镜像站 东莞理工学院GNU/Linux协会开源软件镜像站在黄培灿老师的带领下成立于2016年。开源软件镜像站依托于东莞理工学院,部署于教育网华南地区,旨在为莞工师生及华南地区开源软件使用者用户提供优质的开源软件镜像服务。 优麒麟软件源配置方法 1、备份配置文件: sudocp-a/etc/apt/sources.list/etc/apt/sources.list.bak 2、编辑/etc/apt/sources.list文件(需要使用sudo权限),增加如下条目: debhttp://当前开源镜像站网址/ubuntukylin/版本号目录 以20.04Pro在上海交通大学镜像站mirror.sjtu.edu.cn为例,配置如下: debhttps://mirror.sjtu.edu.cn/ubuntukylin/focalmain debhttps://mirror.sjtu.edu.cn/ubuntukylin/focal-partnermain 3、执行sudoaptupdate更新索引。 我们希望更多的开源镜像站能够加入进来,为优麒麟开源操作系统提供镜像服务,欢迎留言~

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

小企业难敌大黑客,美国白宫向遭勒索软件攻击的公司伸出援手

北京时间 7 月 5 日早间消息,据报道,7 月 4 日,美国白宫表示,正在联系美国佛罗里达州一宗勒索软件攻击的受害者,这一次攻击主要围绕该州一家信息技术公司。 在一份声明中,美国负责网络安全的“副国家安全顾问”安妮・纽伯格(Anne Neuberger)表示,美国联邦调查局和国土安全部网络安全部门将会联系所有确认的攻击事件受害者,根据全国性风险评估提供一些帮助。 据报道,这一次攻击围绕佛罗里达州的 Kaseya 公司,这一次攻击所造成的的影响详情尚不得而知,主要原因是该公司的软件主要提供给所谓的“被管理服务提供商”,这其实是一些外包公司,其他企业和机构会利用他们的服务完成一些企业办公室后台 IT 工作,比如安装软件升级包等。 美国 IT 公司“Sophos 集团”的首席信息安全官罗斯・迈科查(Ross McKerchar)表示,这一次勒索软件攻击的目标群体包括了学校、小型公共服务机构、旅游和休闲行业、信贷联盟,以及一些会计机构。 迈科查表示,这一次大范围的攻击再一次表明,面对经济实力强大的网络犯罪集团,中小企业和机构很难进行抗衡。 这位行业高管表示,在网络安全方面,小企业完全不是黑客集团的对手。

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

苹果 macOS Big Sur 11.4 解决大漏洞:黑客可利用该漏洞偷偷截屏、录屏

IT之家5 月 25 日消息今天发布的 macOS Big Sur 11.4 解决了一个零日漏洞,该漏洞可能允许攻击者从 Zoom 等应用程序上“搭便车”,偷偷截屏及录屏。 移动设备管理公司 Jamf 今天揭示了一个安全问题,该问题允许隐私偏好被绕过,为攻击者提供全盘访问、屏幕录制和其他权限而无需用户同意。 该漏洞是 Jamf 在分析 XCSSET 恶意软件时发现的,XCSSET 恶意软件自 2020 年以来一直很猖狂,但 Jamf 注意到最近的活动有所上升,并发现了一个新的变体。 一旦安装在受害者的系统上,该恶意软件专门用于对用户的桌面进行截图,不需要额外的权限。Jamf 说,它也可以用来绕过其他权限,只要该恶意软件的捐赠者应用程序启用了该权限。 Jamf 对该漏洞的工作原理进行了完整的阐述,该公司表示,苹果在 macOS Big Sur 11.4 中解决了该漏洞,苹果向 TechCrunch 证实,macOS 11.4 中确实已经启用了修复程序,因此 Mac 用户应该尽快更新他们的软件。

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

【Spring注解驱动开发】使用@Autowired@Qualifier@Primary三大注解自动装配组件,你会了吗?

点击上方蓝色“冰河技术”,关注并选择“设为星标” 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址: https://github.com/sunshinelyz/mykit-delay PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码。 写在前面 【Spring专题】停更一个多月,期间在更新其他专题的内容,不少小伙伴纷纷留言说:冰河,你【Spring专题】是不是停更了啊!其实并没有停更,只是中途有很多小伙伴留言说急需学习一些知识技能,以便于跳槽,哈哈,大家都懂得!所以,中途停更了一段时间,写了一些其他专题的文章。现在,继续更新【String专题】。 关注 冰河技术 微信公众号,订阅更多技术干货!如果文章对你有所帮助,请不要吝惜你的点赞、在看、留言和转发,你的支持是我持续创作的最大动力! 项目工程源码已经提交到GitHub:https://github.com/sunshinelyz/spring-annotation 注解说明 @Autowired注解 @Autowired 注解,可以对类成员变量、方法和构造函数进行标注,完成自动装配的工作。@Autowired 注解可以放在类,接口以及方法上。在使用@Autowired之前,我们对一个bean配置属性时,是用如下xml文件的形式进行配置的。 <propertyname="属性名"value="属性值"/> @Autowired 注解的源码如下所示。 packageorg.springframework.beans.factory.annotation;importjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Target({ElementType.CONSTRUCTOR,ElementType.METHOD,ElementType.PARAMETER,ElementType.FIELD,ElementType.ANNOTATION_TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceAutowired{booleanrequired()defaulttrue;} @Autowired 注解说明: (1)默认优先按照类型去容器中找对应的组件,找到就赋值; (2)如果找到多个相同类型的组件,再将属性名称作为组件的id,到 IOC 容器中进行查找。 @Qualifier注解 @Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier 注解使用。 @Qualifier注解源码如下所示。 packageorg.springframework.beans.factory.annotation;importjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.annotation.Inherited;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Target({ElementType.FIELD,ElementType.METHOD,ElementType.PARAMETER,ElementType.TYPE,ElementType.ANNOTATION_TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic@interfaceQualifier{Stringvalue()default"";} @Primary注解 在Spring 中使用注解,常使用@Autowired, 默认是根据类型Type来自动注入的。但有些特殊情况,对同一个接口,可能会有几种不同的实现类,而默认只会采取其中一种实现的情况下, 就可以使用@Primary注解来标注优先使用哪一个实现类。 @Primary注解的源码如下所示。 packageorg.springframework.context.annotation;importjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfacePrimary{} 自动装配 在进行项目实战之前,我们先来说说什么是Spring组件的自动装配。Spring组件的自动装配就是:Spring利用依赖注入,也就是我们通常所说的DI,完成对IOC容器中各个组件的依赖关系赋值。 项目实战 测试@Autowired注解 这里,我们以之前项目中创建的dao、service和controller为例进行说明。dao、service和controller的初始代码分别如下所示。 dao packageio.mykit.spring.plugins.register.dao;importorg.springframework.stereotype.Repository;/***@authorbinghe*@version1.0.0*@description测试的dao*/@RepositorypublicclassPersonDao{} service packageio.mykit.spring.plugins.register.service;importio.mykit.spring.plugins.register.dao.PersonDao;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;/***@authorbinghe*@version1.0.0*@description测试的Service*/@ServicepublicclassPersonService{@AutowiredprivatePersonDaopersonDao;} controller packageio.mykit.spring.plugins.register.controller;importorg.springframework.stereotype.Controller;/***@authorbinghe*@version1.0.0*@description测试的controller*/@ControllerpublicclassPersonController{@AutowiredprivatePersonServicepersonService;} 可以看到,我们在Service中使用@Autowired注解注入了Dao,在Controller中使用@Autowired注解注入了Service。为了方便测试,我们在PersonService类中生成一个toString()方法,如下所示。 packageio.mykit.spring.plugins.register.service;importio.mykit.spring.plugins.register.dao.PersonDao;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;/***@authorbinghe*@version1.0.0*@description测试的Service*/@ServicepublicclassPersonService{@AutowiredprivatePersonDaopersonDao;@OverridepublicStringtoString(){returnpersonDao.toString();}} 这里,我们在PersonService类的toString()方法中直接调用personDao的toString()方法并返回。为了更好的演示效果,我们在项目的 io.mykit.spring.plugins.register.config 包下创建AutowiredConfig类,如下所示。 packageio.mykit.spring.plugins.register.config;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.context.annotation.Configuration;/***@authorbinghe*@version1.0.0*@description测试自动装配组件的Config配置类*/@Configuration@ComponentScan(value={"io.mykit.spring.plugins.register.dao","io.mykit.spring.plugins.register.service","io.mykit.spring.plugins.register.controller"})publicclassAutowiredConfig{} 接下来,我们来测试一下上面的程序,我们在项目的src/test/java目录下的 io.mykit.spring.test 包下创建AutowiredTest类,如下所示。 packageio.mykit.spring.test;importio.mykit.spring.plugins.register.config.AutowiredConfig;importio.mykit.spring.plugins.register.service.PersonService;importorg.junit.Test;importorg.springframework.context.annotation.AnnotationConfigApplicationContext;/***@authorbinghe*@version1.0.0*@description测试自动装配*/publicclassAutowiredTest{@TestpublicvoidtestAutowired01(){//创建IOC容器AnnotationConfigApplicationContextcontext=newAnnotationConfigApplicationContext(AutowiredConfig.class);PersonServicepersonService=context.getBean(PersonService.class);System.out.println(personService);context.close();}} 测试方法比较简单,这里,我就不做过多说明了。接下来,我们运行AutowiredTest类的testAutowired01()方法,得出的输出结果信息如下所示。 io.mykit.spring.plugins.register.dao.PersonDao@10e92f8f 可以看到,输出了PersonDao信息。 那么问题来了:我们在PersonService类中输出的PersonDao,和我们直接在Spring IOC容器中获取的PersonDao是不是同一个对象呢? 我们可以在AutowiredTest类的testAutowired01()方法中添加获取PersonDao对象的方法,并输出获取到的PersonDao对象,如下所示。 @TestpublicvoidtestAutowired01(){//创建IOC容器AnnotationConfigApplicationContextcontext=newAnnotationConfigApplicationContext(AutowiredConfig.class);PersonServicepersonService=context.getBean(PersonService.class);System.out.println(personService);PersonDaopersonDao=context.getBean(PersonDao.class);System.out.println(personDao);context.close();} 我们再次运行AutowiredTest类的testAutowired01()方法,输出的结果信息如下所示。 io.mykit.spring.plugins.register.dao.PersonDao@10e92f8fio.mykit.spring.plugins.register.dao.PersonDao@10e92f8f 可以看到,我们在PersonService类中输出的PersonDao对象和直接从IOC容器中获取的PersonDao对象是同一个对象。 如果在Spring容器中存在对多个PersonDao对象该如何处理呢? 首先,为了更加直观的看到我们使用@Autowired注解装配的是哪个PersonDao对象,我们对PersonDao类进行改造,为其加上一个remark字段,为其赋一个默认值,如下所示。 packageio.mykit.spring.plugins.register.dao;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importorg.springframework.stereotype.Repository;/***@authorbinghe*@version1.0.0*@description测试的dao*/@Data@NoArgsConstructor@AllArgsConstructor@RepositorypublicclassPersonDao{privateStringremark="1";} 接下来,我们就在AutowiredConfig类中注入一个PersonDao对象,并且显示指定PersonDao对象在IOC容器中的bean的名称为personDao2,并为PersonDao对象的remark字段赋值为2,如下所示。 @Bean("personDao2")publicPersonDaopersonDao(){returnnewPersonDao("2");} 目前,在我们的IOC容器中就会注入两个PersonDao对象。那此时,@Autowired注解装配的是哪个PersonDao对象呢? 接下来,我们运行AutowiredTest类的testAutowired01()方法,输出的结果信息如下所示。 PersonDao{remark='1'} 可以看到,结果信息输出了1,说明:@Autowired注解默认优先按照类型去容器中找对应的组件,找到就赋值;如果找到多个相同类型的组件,再将属性名称作为组件的id,到 IOC 容器中进行查找。 那我们如何让@Autowired装配personDao2呢? 这个问题问的好,其实很简单,我们将PersonService类中的personDao全部修改为personDao2,如下所示。 packageio.mykit.spring.plugins.register.service;importio.mykit.spring.plugins.register.dao.PersonDao;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;/***@authorbinghe*@version1.0.0*@description测试的Service*/@ServicepublicclassPersonService{@AutowiredprivatePersonDaopersonDao2;@OverridepublicStringtoString(){returnpersonDao2.toString();}} 此时,我们再次运行AutowiredTest类的testAutowired01()方法,输出的结果信息如下所示。 PersonDao{remark='2'} 可以看到,此时命令行输出了personDao2的信息。 测试@Qualifier注解 从测试@Autowired注解的结果来看:@Autowired注解默认优先按照类型去容器中找对应的组件,找到就赋值;如果找到多个相同类型的组件,再将属性名称作为组件的id,到 IOC 容器中进行查找。 如果IOC容器中存在多个相同类型的组件时,我们可不可以显示指定@Autowired注解装配哪个组件呢?有些小伙伴肯定会说:废话!你都这么问了,那肯定可以啊!没错,确实可以啊!此时,@Qualifier注解就派上用场了! 在之前的测试案例中,命令行输出了 PersonDao{remark='2'} 说明@Autowired注解装配了personDao2,那我们如何显示的让@Autowired注解装配personDao呢? 比较简单,我们只需要在PersonService类上personDao2字段上添加@Qualifier注解,显示指定@Autowired注解装配personDao,如下所示。 @Qualifier("personDao")@AutowiredprivatePersonDaopersonDao2; 此时,我们再次运行AutowiredTest类的testAutowired01()方法,输出的结果信息如下所示。 PersonDao{remark='1'} 可以看到,此时尽管字段的名称为personDao2,但是我们使用了@Qualifier注解显示指定@Autowired注解装配personDao对象,所以,最终的结果输出了personDao对象的信息。 测试容器中无组件的情况 如果IOC容器中无相应的组件,会发生什么情况呢?此时,我们删除PersonDao类上的@Repository注解,并且删除AutowiredConfig类中的personDao()方法上的@Bean注解,如下所示。 packageio.mykit.spring.plugins.register.dao;/***@authorbinghe*@version1.0.0*@description测试的dao*/publicclassPersonDao{privateStringremark="1";publicStringgetRemark(){returnremark;}publicvoidsetRemark(Stringremark){this.remark=remark;}@OverridepublicStringtoString(){return"PersonDao{"+"remark='"+remark+'\''+'}';}} packageio.mykit.spring.plugins.register.config;importio.mykit.spring.plugins.register.dao.PersonDao;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.context.annotation.Configuration;/***@authorbinghe*@version1.0.0*@description测试自动装配组件的Config配置类*/@Configuration@ComponentScan(value={"io.mykit.spring.plugins.register.dao","io.mykit.spring.plugins.register.service","io.mykit.spring.plugins.register.controller"})publicclassAutowiredConfig{publicPersonDaopersonDao(){PersonDaopersonDao=newPersonDao();personDao.setRemark("2");returnpersonDao;}} 此时IOC容器中不再有personDao,我们再次运行AutowiredTest类的testAutowired01()方法,输出的结果信息如下所示。 Causedby:org.springframework.beans.factory.NoSuchBeanDefinitionException:Noqualifyingbeanoftype'io.mykit.spring.plugins.register.dao.PersonDao'available:expectedatleast1beanwhichqualifiesasautowirecandidate.Dependencyannotations:{@org.springframework.beans.factory.annotation.Qualifier(value=personDao),@org.springframework.beans.factory.annotation.Autowired(required=true)} 可以看到,Spring抛出了异常,未找到相应的bean对象,我们能不能让Spring不报错呢? 那肯定可以啊!Spring的异常信息中都给出了相应的提示。 {@org.springframework.beans.factory.annotation.Qualifier(value=personDao),@org.springframework.beans.factory.annotation.Autowired(required=true)} 解决方案就是在PersonService类的@Autowired添加一个属性required=false,如下所示。 @Qualifier("personDao")@Autowired(required=false)privatePersonDaopersonDao2; 并且我们修改下PersonService的toString()方法,如下所示。 @OverridepublicStringtoString(){return"PersonService{"+"personDao2="+personDao2+'}';} 此时,还需要将AutowiredTest类的testAutowired01()方法中直接从IOC容器中获取personDao的代码删除,如下所示。 @TestpublicvoidtestAutowired01(){//创建IOC容器AnnotationConfigApplicationContextcontext=newAnnotationConfigApplicationContext(AutowiredConfig.class);PersonServicepersonService=context.getBean(PersonService.class);System.out.println(personService);context.close();} 此时,我们再次运行AutowiredTest类的testAutowired01()方法,输出的结果信息如下所示。 PersonService{personDao2=null} 可以看到,当为@Autowired添加属性required=false后,即使IOC容器中没有对应的对象,Spring也不会抛出异常。此时,装配的对象就为null。 测试完成后,我们再次为PersonDao类添加@Repository注解,并且为AutowiredConfig类中的personDao()方法添加@Bean注解。 测试@Primary注解 在Spring中,对同一个接口,可能会有几种不同的实现类,而默认只会采取其中一种实现的情况下, 就可以使用@Primary注解来标注优先使用哪一个实现类。 首先,我们在AutowiredConfig类的personDao()方法上添加@Primary注解,此时,我们需要删除PersonService类中personDao字段上的@Qualifier注解,这是因为@Qualifier注解为显示指定装配哪个组件,如果使用了@Qualifier注解,无论是否使用了@Primary注解,都会装配@Qualifier注解标注的对象。 设置完成后,我们再次运行AutowiredTest类的testAutowired01()方法,输出的结果信息如下所示。 PersonService{personDao2=PersonDao{remark='2'}} 可以看到,此时remark的值为2,装配了AutowiredConfig类中注入的personDao。 接下来,我们为PersonService类中personDao字段再次添加@Qualifier注解,如下所示。 @Qualifier("personDao")@Autowired(required=false)privatePersonDaopersonDao; 此时,我们再次运行AutowiredTest类的testAutowired01()方法,输出的结果信息如下所示。 PersonService{personDao=PersonDao{remark='1'}} 可以看到,此时,Spring装配了使用@Qualifier标注的personDao。 重磅福利 关注「 冰河技术 」微信公众号,后台回复 “设计模式” 关键字领取《深入浅出Java 23种设计模式》PDF文档。回复“Java8”关键字领取《Java8新特性教程》PDF文档。回复“限流”关键字获取《亿级流量下的分布式限流解决方案》PDF文档,三本PDF均是由冰河原创并整理的超硬核教程,面试必备!! 好了,今天就聊到这儿吧!别忘了点个赞,给个在看和转发,让更多的人看到,一起学习,一起进步!! 写在最后 如果你觉得冰河写的还不错,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习高并发、分布式、微服务、大数据、互联网和云原生技术,「 冰河技术 」微信公众号更新了大量技术专题,每一篇技术文章干货满满!不少读者已经通过阅读「 冰河技术 」微信公众号文章,吊打面试官,成功跳槽到大厂;也有不少读者实现了技术上的飞跃,成为公司的技术骨干!如果你也想像他们一样提升自己的能力,实现技术能力的飞跃,进大厂,升职加薪,那就关注「 冰河技术 」微信公众号吧,每天更新超硬核技术干货,让你对如何提升技术能力不再迷茫! 后记: 记住:你比别人强的地方,不是你做过多少年的CRUD工作,而是你比别人掌握了更多深入的技能。不要总停留在CRUD的表面工作,理解并掌握底层原理并熟悉源码实现,并形成自己的抽象思维能力,做到灵活运用,才是你突破瓶颈,脱颖而出的重要方向! 你在刷抖音,玩游戏的时候,别人都在这里学习,成长,提升,人与人最大的差距其实就是思维。你可能不信,优秀的人,总是在一起。。 扫一扫或长按二维码 关注冰河技术微信公众号 如果你喜欢这篇文章,欢迎点赞和转发。 生活很美好,明天见(。・ω・。)ノ♡ 写留言 本文分享自微信公众号 - 冰河技术(hacker-binghe)。如有侵权,请联系 support@oschina.cn 删除。本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

资源下载

更多资源
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文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册