首页 文章 精选 留言 我的

精选列表

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

SpringBoot 2 要不要升级

[TOC] 前言 在谈SpringBoot 2.x 之前,先来聊点别的: 首先是Java 语言,这门长期占据编程语言排行榜首位的语言到底有什么魔力?大家的看法是多种多样的,比如: 面向对象设计,使用简单,可以很快速的入门; 开源生态做得好,很多可重用的组件,拿来即用; 跨平台,高性能,是做后台开发的首选 还有一种观点很有意思:这是命好,每当人们觉得 Java 不行了的时候,总会有英雄横刀救美.. 其中,主要说的是: ":最初 Java 开发出来不知道有什么用的时候,发现可以用 Applet 在网页上做动画。 后来企业级软件开发时代 JavaEE 大行其道,开源社区 Spring 桃李满天下。等到了移动时代,人们觉得 Java 要完蛋了,Google 拍马救市,收购并开放了 Android 平台,当家语言就是 Java。于是 Java 再次焕发勃勃生机

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

Dataworks调度能力升级——分支节点

分支节点登场 在日常Dataworks的使用过程中,经常会有同学遇到如下的问题:我有一个节点,需要每个月的最后一天执行,应该如何设置? 这种情况我们一般的回复是:由于cron表达式无法表达这种场景,所以暂时无法支持。 但是,现在我们有了分支节点,它让我们可以套用switch-case的编程模型来搞定这个问题。下面有请分支节点和他的小兄弟们粉墨登场!!! 分支节点的兄弟们 现在打开“数据开发”页面,可以看到“控制节点”一栏多了几个新面孔,先来一张合影: 他们分别是: 能把自己的结果传给下游的赋值节点 —— 赋值节点复用了节点上下文依赖的特性,在已有常量/变量两种上下文的基础上,赋值节点自带一种自定义的上下文输出。Dataworks会捕获赋值节点的select结果或者打印结果,把这个结果以outputs作为上下文输出参数的值供下游节点引用。 能决定哪

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

Ecs实例创建接口升级-RunInstances

现在提供的ECSOpenAPI有2个实例创建接口RunInstances和CreateInstance,由于CreateInstance接口提供时间较早,因此还有有依赖该接口的调用,但是RunInstances接口其实在设计和使用便利性上其实更胜一筹。 CreateInstance的创建调用是一次非常细粒度的原子操作,只会将实例创建成功,因此对于接口使用者来说并不一定是最方便的。首先最明显的区别就是RunInstances接口的终态稳定状态是Running,这会带来多方面的影响, 调用效率提升 直接的优化就是实例从创建到启动可以工作,调用的管控接口大大减少,创建n(小于100)台实例时,之前的调用需要n次CreateInstance调用,需要至少n次StartInstance调用,而更换使用RunInstances接口后,由于支持批量创

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

AutoScaling 弹性伸缩配置重大升级

弹性伸缩配置支持修改之前,如果用户想要变更伸缩配置,只能通过新创建伸缩配置替换现有伸缩配置的方式实现,现在只需要修改原有配置即可。弹性伸缩配置新增了主机名称、镜像预设密码两大特性,更加全面地满足了用户的业务需求,如为伸缩组创建的 ECS 实例提前设置主机名称、为伸缩组创建的 ECS 实例提前设置登录密码。 本文主要分为以下两个方面: 弹性伸缩配置修改功能 弹性伸缩配置新特性 弹性伸缩配置修改功能 弹性伸缩配置支持修改以下参数: imageId instanceTypes internetMaxBandwidthOut ramRoleName keyPairName systemDiskCategory scalingConfigurationName tags userData instanceName loadBalancerWeight systemDiskS

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

中关村升级人工智能产业

26日首届中关村前沿科技创新大赛近日在中关村展示中心闭幕,大赛历时50天,七个领域21场路演,共评选出14个优质项目。在活动现场,《中关村人工智能产业培育行动计划(2017―2020年)》发布,提出未来三年中关村在人工智能领域产业规模超过500亿元,对相关产业带动规模将超过5000亿元,初步形成具有国际竞争力和技术主导权的人工智能产业集群。 《行动计划》是全国首个地方性支持促进人工智能产业发展的政策,是中关村积极落实国家战略、抢占前沿科技制高点的一个重要举措。《行动计划》结合中关村人工智能产业发展的特点和产业基础,将人工智能产业概括为人工智能芯片及传感器,操作系统和基础软件,计算机视觉、语音识别、自然语言处理、生物特征识别、新型人机交互、自主决策控制等核心算法,细分行业应用及系统集成等领域。 中关村发展人工智能产业的基础和优势明显,目前已经形成国内最大、最有实力的人工智能创新集群。中关村拥有全国一半以上的人工智能骨干研究单位和一批知名专家、团队;拥有人工智能企业约250家,专利申请数累计7800余项,企业和专利申请数均位列全国第一;全国42.9%的人工智能创业公司也来自中关村,百度被国际公认为人工智能综合实力最强的企业之一。 《行动计划》提出了“5566”重点任务布局,即着力突破五类关键核心技术、建设五大开放创新平台、开展六项行业应用示范、实施六类政策,全力构建全球顶尖的产业生态。 据了解,目前北京市以中关村为主要载体,已走在人工智能产业发展的前沿。在深度学习、专用芯片、计算机视觉、语音识别和自然语言处理、无人驾驶、智能机器人等产业各个环节均聚集了一批全国乃至全球领军企业,初步形成国际领先的人工智能生态体系。 本文出处:畅享网 本文来自云栖社区合作伙伴畅享网,了解相关信息可以关注vsharing.com网站。

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

Spring Cloud微服务升级总结

一.应用系统的架构历史 [ 二.什么是微服务? 2.1 微服务概述 起源:微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”。文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 通信方式:每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API)。 微服务的常规定义:微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务。 把原来的一个完整的进程服务,拆分成两个或两个以上的进程服务,且互相之间存在调用关系,与原先单一的进程服务相比,就是“微服务”。(微服务是一个比较级的概念,而不是单一的概念) 2.2 微服务架构的优势 可扩展性:在增加业务功能时,单一应用架构需要在原先架构的代码基础上做比较大的调整,而微服务架构只需要增加新的微服务节点,并调整与之有关联的微服务节点即可。在增加业务响应能力时,单一架构需要进行整体扩容,而微服务架构仅需要扩容响应能力不足的微服务节点。 容错性:在系统发生故障时,单一应用架构需要进行整个系统的修复,涉及到代码的变更和应用的启停,而微服务架构仅仅需要针对有问题的服务进行代码的变更和服务的启停。其他服务可通过重试、熔断等机制实现应用层面的容错。 技术选型灵活:微服务架构下,每个微服务节点可以根据完成需求功能的不同,自由选择最适合的技术栈,即使对单一的微服务节点进行重构,成本也非常低。 开发运维效率更高:每个微服务节点都是一个单一进程,都专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模团队或者个人完全掌控,易于保持高可维护性和开发效率。 Spring Cloud作为今年最流行的微服务开发框架,不是采用了Spring Cloud框架就实现了微服务架构,具备了微服务架构的优势。正确的理解是使用Spring Cloud框架开发微服务架构的系统,使系统具备微服务架构的优势(Spring Cloud就像工具,还需要“做”的过程)。 三.Spring Boot/Cloud 3.1 什么是Spring Boot? Spring Boot框架是由Pivotal团队提供的全新框架,其设计目的是用来简化基于Spring应用的初始搭建以及开发过程。SpringBoot框架使用了特定的方式来进行应用系统的配置,从而使开发人 员不再需要耗费大量精力去定义模板化的配置文件。 3.2 什么是Spring Cloud? Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务注册,服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。 3.3 微服务,Spring Boot,Spring Cloud三者之间的关系 思想:微服务是一种架构的理念,提出了微服务的设计原则,从理论为具体的技术落地提供了指导思想。 脚手架:Spring Boot是一套快速配置脚手架,可以基于Spring Boot快速开发单个微服务。 多个组件的集合:Spring Cloud是一个基于Spring Boot实现的服务治理工具包;Spring Boot专注于快速、方便集成的单个微服务个体;Spring Cloud关注全局的服务治理框架。 3.4 Everything is jar, Everything is http Spring Boot通过@SpringBootApplication注解标识为Spring Boot应用程序。所有的应用都通过jar包方式编译,部署和运行. @SpringBootApplication public class Application { private static final Logger LOGGER = LoggerFactory.getLogger(Application.class); public static void main(String[] args) { SpringApplication.run(Application.class, args); LOGGER.info(”启动成功!"); }

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

LAMP架构升级版--LNMMP

简介 LNMMP=Linux+Nginx+MySQL+Memcache+PHP; 利用Nginx的高性能特点做前端反向代理服务器,分发用户请求,并在能够利用缓存的地方使用Memcache缓存服务,以加速缓存效率,具体架构图如下; 具体部署 代理层:Nginx 编译安装Nginx 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 yum install gcc openssl-devel pcre-devel zlib-devel groupadd -r nginx useradd -r -g nginx -M nginx . /configure \ --prefix= /usr/local/nginx \ --sbin-path= /usr/sbin/nginx \ --conf-path= /etc/nginx/nginx .conf \ --error-log-path= /var/log/nginx/error .log \ --http-log-path= /var/log/nginx/access .log \ --pid-path= /var/run/nginx/nginx .pid \ --lock-path= /var/lock/nginx .lock \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_flv_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --http-client-body-temp-path= /var/tmp/nginx/client/ \ --http-proxy-temp-path= /var/tmp/nginx/proxy/ \ --http-fastcgi-temp-path= /var/tmp/nginx/fcgi/ \ --http-uwsgi-temp-path= /var/tmp/nginx/uwsgi \ --http-scgi-temp-path= /var/tmp/nginx/scgi \ --with-pcre make && make install vi /etc/init .d /nginx # 编辑服务脚本 #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/nginx.pid # Source function library. . /etc/rc .d /init .d /functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx= "/usr/sbin/nginx" prog=$( basename $nginx) NGINX_CONF_FILE= "/etc/nginx/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile= /var/lock/subsys/nginx make_dirs() { # make required directories user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` options=`$nginx -V 2>&1 | grep 'configure arguments:' ` for opt in $options; do if [ ` echo $opt | grep '.*-temp-path' ` ]; then value=` echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done } start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $ "Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval - eq 0 ] && touch $lockfile return $retval } stop() { echo -n $ "Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval - eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop sleep 1 start } reload() { configtest || return $? echo -n $ "Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status > /dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $ "Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac 配置Nginx 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 upstream memcached { server 172.16.25.111:11211; keepalive 1024; } upstream webserver { server 172.16.25.112:80; server 172.16.25.113:80; } upstream phpserver { server 172.16.25.112:9000; server 172.16.25.113:9000; } server { listen 80; server_name xxrenzhe.lnmmp.com; access_log /var/log/nginx/lnmmp .access.log; error_log /var/log/nginx/lnmmp .errors.log notice; root /www/lnmmp .com; index index.php index.html; location / { set $memcached_key $request_uri; add_header X-mem-key $memcached_key; memcached_pass memcached; default_type test /html ; error_page 404 500 502 504 = @webnocache; } location @webnocache { rewrite ^(\/)?$ /index .php last; # 配置直接访问域名或IP地址时,重定向至index.php文件 rewrite ^/.*$ /set_mem .php?$request_uri last; # 将静态访问重定向至后端set_mem.php,以实现set memcache的功能 proxy_pass http: //webserver ; } location ~* \.php(\?.*)?$ { fastcgi_pass phpserver; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 启动服务 1 2 3 4 chmod +x /etc/init .d /nginx chkconfig --add nginx chkconfig nginx on service nginx start 缓存层:Memcache+NFS 安装配置memcache 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 # 安装libevent tar xf libevent-2.0.21-stable. tar .gz cd libevent-2.0.21 . /configure --prefix= /usr/local/libevent make && make install echo "/usr/local/libevent/lib" > /etc/ld .so.conf.d /libevent .conf ldconfig # 安装memcache tar xf memcached-1.4.15. tar .gz cd memcached-1.4.15 . /configure --prefix= /usr/local/memcached --with-libevent= /usr/local/libevent make && make install # 编辑服务脚本 # 一次启动了2个memcache实例,一个用于Nginx,一个用于后端PHP服务 vi /etc/init .d /memcached #!/bin/bash # # Init file for memcached # # chkconfig: - 86 14 # description: Distributed memory caching daemon # # processname: memcached # config: /etc/sysconfig/memcached . /etc/rc .d /init .d /functions ## Default variables PORT1= "11211" PORT2= "11311" USER= "nobody" MAXCONN= "1024" CACHESIZE= "64" OPTIONS= "" RETVAL=0 prog= "/usr/local/memcached/bin/memcached" desc= "Distributed memory caching" lockfile1= "/var/lock/subsys/memcached_$PORT1" lockfile2= "/var/lock/subsys/memcached_$PORT2" start() { echo -n $ "Starting $desc (memcached): " daemon $prog -d -p $PORT1 -u $USER -c $MAXCONN -m $CACHESIZE -o "$OPTIONS" daemon $prog -d -p $PORT2 -u $USER -c $MAXCONN -m $CACHESIZE -o "$OPTIONS" RETVAL=$? [ $RETVAL - eq 0 ] && success && touch $lockfile1 && touch $lockfile2 || failure echo return $RETVAL } stop() { echo -n $ "Shutting down $desc (memcached): " killproc $prog RETVAL=$? [ $RETVAL - eq 0 ] && success && rm -f $lockfile1 && rm -f $lockfile2 | failure echo return $RETVAL } restart() { stop start } reload() { echo -n $ "Reloading $desc ($prog): " killproc $prog -HUP RETVAL=$? [ $RETVAL - eq 0 ] && success || failure echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; restart) restart ;; condrestart) [ -e $lockfile1 ] && [ -e $lockfile1 ] && restart RETVAL=$? ;; reload) reload ;; status) status $prog RETVAL=$? ;; *) echo $ "Usage: $0 {start|stop|restart|condrestart|status}" RETVAL=1 esac exit $RETVAL 启动memcache服务 1 2 3 4 chmod +x /etc/init .d /memcached chkconfig --add memcached chkconfig memcached on service memcached start 安装配置NFS 1 2 3 4 5 6 7 8 yum -y install nfs-utils vi /etc/exports /www/lnmmp .com 172.16.0.0 /16 (rw,no_root_squash) exportfs -ar # 导出NFS共享目录 cd /www/lnmmp .com unzip phpwind_v9.0_utf8.zip mv phpwind_v9.0_utf8 /upload/ * . chmod -R 777 attachment conf data html res src themes windid Web层:Apache Apache的安装见博客“httpd-2.4编译安装及新特性详解”; PHP-fpm的安装见博客“LAMP-PHP-fpm服务器配置”; PHP加速器opcache的安装配置见博客“LAMP-各PHP加速器性能剖析”; 配置PHP支持memcache 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 tar xf memcache-2.2.5.tgz cd memcache-2.2.5 /usr/local/php/bin/phpize . /configure --with-php-config= /usr/local/php/bin/php-config -- enable -memcache make && make install # 上述安装完后会有类似这样的提示: Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ vi /usr/local/php/lib/php .ini # 配置memcache模块位置及php会话保存至memcache中 extension= /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache .so session.save_handler = memcache session.save_path = "tcp://172.16.25.111:11311" # 自定义set memcache的程序 vi /www/lnmmp .com /set_mem .php <?php $fn = dirname (__FILE__).$_SERVER[ 'QUERY_STRING' ]; if (file_exists($fn)) { $data = file_get_contents($fn); $mem = new Memcache(); $mem->connect( "172.16.25.111" ,11311) or die( "Could not connect" ); $mem-> set ($_SERVER[ 'QUERY_STRING' ],$data,0,600) or die( "Failed to save data at the memcached server" ); header( 'Content-Length: ' .filesize($fn). "\r\n" ); header( 'Content-Type: text/html' . "\r\n" ); header( 'X-cache: MISS' . "\r\n" ); print "$data" ; } else { header( 'Location: http://xxrenzhe.lnmmp.com' . "\r\n" ); header( 'Content-Length: ' .filesize($fn). "\r\n" ); header( 'X-cache: ' .$fn. "\r\n" ); } ?> Apache配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 vi /etc/httpd/httpd .conf # DocumentRoot "/usr/local/apache/htdocs" # 注释掉此行 Include /etc/httpd/extra/httpd-vhosts .conf # 取消此行注释 vi /etc/httpd/extra/httpd-vhosts .conf <VirtualHost *:80> DocumentRoot "/www/lnmmp.com" ServerName xxrenzhe.lnmmp.com ErrorLog "logs/lnmmp.com-error_log" CustomLog "logs/lnmmp.com-access_log" common <Directory "/www/lnmmp.com" > Options Indexes FollowSymLinks AllowOverride None Require all granted < /Directory > < /VirtualHost > NFS目录挂载 1 mount -t nfs 172.16.25.111: /www/lnmmp .com /www/lnmmp .com 服务启动 1 2 service httpd start service php-fpm start 数据库层:Ameoba+MariaDB MariaDB的安装详见博客“MySQL初识-架构-安装-初始化-连接-管理工具-数据文件”; MariaDB的主从复制架构配置见博客“Maria10实现主从复制架构及SSL复制”; Ameoba安装见“http://docs.hexnova.com/amoeba/index.html”; Ameoba实现读写分离见“http://docs.hexnova.com/amoeba/rw-splitting.html” 测试验证 Nginx利用memcache缓存小静态文件测试效果 Nginx利用memcache缓存大静态文件测试效果 PHP利用memcache保存session数据测试效果 本文转自 xxrenzhe11 51CTO博客,原文链接:http://blog.51cto.com/xxrenzhe/1403784,如需转载请自行联系原作者

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

Apache Ranger升级为顶级项目

Apache Hadoop生态系统中的安全管理框架Apache Ranger晋升为顶级项目。Range是一种定义和管理安全策略的集中式组件,这些安全策略在受支持的Hadoop组件间强制执行,包括Apache HBase、Hadoop(HDFS和YARN)、Apache Hive、Apache Kafka、Apache Solr等。 对于受支持的Hadoop组件,Ranger通过访问控制策略提供了一种标准的授权方法。作为标准,Ranger提供了一种集中式的组件,用于审计用户的访问行为和管理组件间的安全交互行为。 Ranger使用了一种基于属性的方法定义和强制实施安全策略。当与Apache Hadoop的数据治理解决方案和元数据仓储组件Apache Atlas一起使用时,它可以定义一种基于标签的安全服务,通过使用标签对文件和数据资产进行分类,并控制用户和用户组对一系列标签的访问。 Ranger的功能还包括动态策略(Dynamic Policies),当访问依赖于时间等动态因素时。它可以基于每天的不同时刻、IP地址或是地理位置对访问资源进行限制。 Apache Ranger架构在组成上还包括一个Ranger策略管理服务器(Policy Admin Server),该服务器将策略存储在关系数据库中(通常使用MySQL)。每个受支持的组件(例如Hive、HDFS等)通过运行Ranger插件对所有被访问的资源(例如文件、数据库、数据库表、数据列等)执行授权检查。授权通常基于已定义的策略,并从集中式管理服务器处获取,默认的轮询周期是30秒。插件在管理服务器宕机时仍然能够工作,不过根据最佳实践,最好把它们配置成高可用的。 Ranger另一个对企业有用的特性是与外部系统集成做授权证。它支持的授权机制包括LDAP/AD和Unix系统认证。Ranger可以将审计记录写入Apache Solr。 本文转自d1net(转载)

资源下载

更多资源
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等操作系统。

用户登录
用户注册