首页 文章 精选 留言 我的

精选列表

搜索[VSCode扩展],共10000篇文章
优秀的个人博客,低调大师

服务器架构之性能扩展-第二章(3)

第二章:Lvs基础: 2.1OSI模型 首先了解一下OSI模型: 物理层定义了线缆的标准,数据链路层完成了数据包的加封,它加了一个源MAC地址和目的MAC地址,网络层是加入了源IP地址和目的IP地址,传输层加入了源端口和目的端口,会话层表示层和应用层是应用程序,会话层定义了通信状态,表示层是通信的编码状态。加封和解封过程,完成一个数据的通信。 数据11-》44,首先给信息给交换机,交换机收到记录源地址,发送广播,等待44的回应。44回应,交换机会加下目的地址,下次直接发送就可以了。 路由器是连接不同网段的设备。口较少。目的MAC地址是数据发送之前,广播通知而得到的数据。而此时arp就是MAC和IP对应的表,交换机也可以返回一个MAC地址给广播,一步步的传输。 2.2负载均衡实现方案: 负载均衡架设有基于网络设备的负载均和和基于操作系统的负载均衡,基于网络设备如Cisco路由或F5负载均衡器,基于操作系统的有windows的NBL和linux的LVS。 2.3 LVS负载均衡模式 LVS-nat模式:(virtual server via network address translation) 通过网络地址转换,调度器将重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真是服务器;真是服务器响应报文通过调度器时,报文的源地址将被重写,返回给客户,完成整个负载调度。 优点:节省IP资源,屏蔽内网ip,内外分离。 缺点:访问量大,容易造成VIP主机瓶颈(一般不会)。 IP tun模式:(virtual server via ip tunneling) 为了解决nat技术的调度器负担问题,调度器吧请求报文通过ip隧道转发给真实服务器,而真实服务器将相应直接返回给客户,所以调度器中处理请求报文。由于一般请求报文比应答报文大许多,此技术可以使集群系统的吞吐量提高10倍。 缺点:比较浪费公网ip。有点:由于下行速度大于上行速度,此技术速度快。 LVS-dr模式:(virtual server via direct routing) 此模式通过改写请求报文的MAC地址,将请求发到真实服务器,真实服务器直接传给客户。这种没有ip隧道模式的开销,具有更广泛的应用场合。但要求调度服务器和真实服务器都有一块网卡在同一网段。 2.4常用的轮叫负载算法: 轮叫:(round robin): 调度器通过“轮叫”调度算法,将外部请求按顺序轮流分配到集群中的每一台服务器。 加权轮叫:(weighted round robin) 加权轮叫算法,会根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器承受更多的访问流量,并可以动态调整权值。 最小连接:(least connections) 最少连接调度器可以动态的将网络请求调度到链接最少的服务器上,如果真实服务器的性能相近,看可以达到较好的目的。 加权最少链接:(weighted least connections) 在集群计算机性能差异较大时,采用加权最少链接可以让权值较高的服务器承受较大比例的请求,并且动态调整权值。 2.5 LVS实验: 2.5.1实验一:LVS-nat集群 实验环境: 负载均衡服务器:真实IP 8.8.8.8内网IP:192.168.10.1 真实服务器:server1:192.168.10.2 真实服务器:server2:192.168.10.3 1、先做两个快照: 负载均衡调度的服务器需要两块网卡,一块内网一块外网的,内网的网卡要和其他的两台真实服务器的网卡在同一个交换机上。如我们将内网都在VM2交换机上,将外网用vm1交换机。 2、配置IP LVS服务器:我们使用临时ip测试 Ipconfig eth0 8.8.8.8 netmask 255.255.255.0 Ipconfig eth1 192.168.10.1 netmask 255.255.255.0 真实服务器:ipconfig eth0 192.168.10.2 netmask 255.255.255.0 和ipconfig eth0 192.168.10.3 netmask 255.255.255.0 为了使我们配置的公网可以访问,我们要配置我们的本地ip和8.8.8.1在同一个网段,我们配置本地ip为8.8.8.1,掩码为255.255.255.0这样它们在同一个子网8.8.8.0了,这里我们选择的VMware1的网卡。 为了不影响测试,我们这里将防火墙和selinux停掉。 为了ping通网络,我们通过命令“echto 1>/proc/sys/net/ipv4/ip_forward”开启路由转发功能,对于真实服务器我们还需要增加默认网关,通过命令“route add default gw 192.168.10.1”实现。 这样我们服务器之间便可以ping通了,只有环境正确才能达到目的。我们可以通过本地ping通lvs服务器,我们可以通过lvs服务器ping通内外网,因为它是内外网的使者。 3.安装ipvsadm插件,首先执行“ipvsadm”命令,看能否识别命令,如不识别用yum安装即可。 4、编写测试脚本,在LVS服务器上编写如下脚本,该脚本首先使用-C请求之前的脚本,然后定义提供服务器的ip,并使用rr轮训方式,然后指定真实服务器的ip,-m指使用nat模式。 测试脚本:OK 5、定义服务: 真实服务器1和真实服务器2分别开启apache功能,并且分别定义主页。如果源码包安装的apache,可以通过/usr/local/apache/bin/apachectl start开启,然后到/usr/local/apache/htdocs目录下新建index.html文件内容写“<h1>192.168.10.2,it works!<h1>”. 6、测试nat模式: 2.5.2实验二:LVS-tun集群 实验环境: 负载均衡服务器:隧道IP 200.168.10.10内部IP:200.168.10.1 真实服务器:server1:200.168.10.2 真实服务器:server2:200.168.10.3 1、配置ip 首先LVS服务器我们需要一块网卡就行了,我们使用eth0即可,听到eth1.其次我们需要增加我们的隧道ip,通过命令“ifconfig tunl0 eth0 200.168.10.10 netmask 255.255.255.255 up”实现,我们还需要将隧道ip加入路由,通过“route add -host 200.168.10.10 dev eth0”实现。 对于真实ip我们也一样配置一个真实ip和一个隧道ip然后将隧道ip加入路由。这里我们要求我们的三台服务器使用同一个交换机vm1. 下图是增加了隧道ip的网卡配置和route效果。 2.Ping测试,我们都是公网,我们本地ip也改为200.168.10.4子网掩码255.255.255.0这样都在一个网段,可以ping通所有的这网段的ip。 3.建立配置文件。我们首先个LVS服务器建立配置文件,我们这一次使用-i指定为隧道模式。然后增加执行权限,查看结果。 4.对于真实服务器我们需要建立如下脚本,然后执行。这是为了使如果请求直接访问了真实服务器,真实服务器会忽略请求。这样就保证了,每次请求都是LVS服务器发过来的。 5.测试:我们分别修改真实服务器的主文件,修改ip为现在的ip,然后浏览测试。 测试之后,我们还可以返回LVS服务器查看轮询的情况和权值等信息。 2.5.3实验三:LVS-dr集群 实验环境: 负载均衡服务器:虚拟IP 200.168.10.10内部IP:200.168.10.1 真实服务器:server1:200.168.10.2 真实服务器:server2:200.168.10.3 1、配置ip LVS服务器,我们需要一快网卡,然后虚拟一个ip即可,我们可以使用命令“ifconfig eth0 200.168.10.10 netmask 255.255.255.255 up”。 对于真实服务器,我们要通过回环ip绑定这个ip,通过命令“ifconfig lo:0 200.168.10.10 netmask 255.255.255.255 up”实现,然后将该ip分别加入路由“route add -host 200.168.101.10 dev lo:0”实现。 2.配置配置文件,对于配置文件我们这次指定-g即dr模式来实现。然后赋予执行权限,执行。 对于真实服务器,我们同样要进行配置,让它忽略对于VIP的请求。 3、测试:我们进行测试 可以通过真实服务器执行“ipvsadm -L -n”进行查看轮训效果 注:本章是进行LVS的基本使用在生产环境中: 1、ip的配置最好使用setup的图形界面或vi /etc/sysconfig/network-scripts/ifcfg-eth0. 2、对于作为提供真实服务的主机,要保证访问的网页一致。可以通过架设rsync同步服务器,或drbd镜像服务功能或共享磁盘(有DAS/NAS/SAN 等方式)的方式来进行同步真实服务器的数据,保证结果的一致性,这个作为下一步的研究目标。 本文转自zsaisai 51CTO博客,原文链接:http://blog.51cto.com/3402313/964038

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

服务器架构之性能扩展-第十一章(12)

第十一章、Linux高可用(HA)高性能(HPC) 高可用的概念 高可用:(high-availablility)是一组互相信任的计算机组织在一起,当其中的一个成员出现故障,由其它成员来接替它的工作提供服务。 它的作用是提供冗余,并没有提高系统性能。 高可用要用到数据的共享,高可用状态下数据共享有磁盘复制和共享磁盘方式,其中磁盘复制在数据量小更新较少时适用。 高可用就要用到心跳检测工具,我们这里适用heartbeat实现,Heartbeat项目是Linux-HA工程的一个组成部分,它实现了一个高可用集群系统。 实验: 环境:我们使用两台计算机做双击热备,系统为centos5.6 共享磁盘的方式做两个集群,两个主机一个是192.168.211.7和192.168.211.8,他们和测试主机windows7在同一个网段,win7ip为192.168,211,1他们之间有一根心跳线连接10.0.0.1和10.0.0.2. 配置实例 我们使用setup分别给eth0和eth1分配ip,其中eth0使用vmlan1路由和win7在同一网段,eth1使用vmlan2路由。然后,我们要使各个主机之间ping通。 heartbeat的安装 1、我们可以到Linux-ha.org下载该软件 在安装之前要先安装pkconfig,glib2-devel,e2fsprongs和libnet。其中libnet需要源码安装。 2、建立用户和组 Groupadd –g 2000 haclient Useradd –u 2000 –g haclient hacluster 3、Yum -y install heartbeat 4、配置heartbeat 配置文件,我们可以到解压的heartbeat/doc/目录复制一份到/etc/ha.d/目录下,保证两个centos主机的配置文件相同,我们配置好一台,然后scp或rsync一份给另一台主机即可。 Vi/etc/ha.d/ha.cf Bcast eth1//eth1做心跳检测 keepalive 3//3秒更新一次 deadtime 30//10秒更新服务器 warntime 5//5秒警告级别 udpport 694//端口 auto_failback on//自动切换 nodenode1//节点1,接主机名 nodenode2//节点2 logfile /var/log/ha-log//日志 respawn hacluster /usr/lib/heartbeat/ipfail ping 10.0.0.2 Haresource文件 Vi /etc/ha.d/haresource Node1192.168.211.9/24 httpd//转发的服务器地址 Vi /etc/ha.d/authkeys Auth 1 1 crc hello #Scpha.cf root@192.168.211.8:/etc/ha.d //server2需要同样的配置 #Scpharesource root@192.168.211.8:/etc/ha.d #Scp authkeysroot@192.168.211.8:/etc/ha.d Chmod 600 authkeys Service heartbeat restart 会看到多了一个eth1:0的网卡 这时对192.168.211.7开启apache,然后做解析 Vi /etc/hosts 192.168.211.7node1 192.168.211.8node2 然后分别访问一下。 这时停止node1,会看到node2会自动进行开启eth1:0网卡。 这时192.168.211.9一会就可以ping通访问了。 本文转自zsaisai 51CTO博客,原文链接:http://blog.51cto.com/3402313/1032767

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

Actility再获7500万美元注资 扩展其物联网方案

据悉,Actility日前再获7500万美元注资,此次融资将有助于其着力为核心垂直市场打造行业物联网解决方案,涵盖物流和供应链、智能建筑、能源及公共设施等。至此,除Idinvest、Bpifrance、GinkoVentures、KPN、Orange、瑞士电信及富士康等现有投资机构以外,此次宣布的第一批D轮融资为Actility新引入了Creadev、 Bosch及 Inmarsat等投资机构,预计本月随后进行的第二批D轮融资还将迎来其他更多战略投资机构入股Actility,实现超额认购。 自2015年完成C轮融资,Actility已在全球LoRaWAN物联网解决方案领域站稳脚步(LoRaWAN是由Actility联合打造的物联网专属无线网络协议)。随着ActilityThingPark平台大力推动国家级和大规模LPWA网络在全球进行部署,其产业价值越来越高,并可支持LoRaWAN、LTE-M及NB-IoT。ThingPark已成为当前最强大的物联网服务平台之一。同时,凭借其内聚型软件栈,其中包括ThingPark OS服务和业务支持管理平台、ThingPark X应用集成平台及ThingPark商城生态系统级电子商务平台,Actility打造了业界独有的完整物联网生态系统支持平台,可为自动连接对象管理和营利的全生命周期提供传感器至云应用解决方案接入和营利支持。此外,随着全球对物联网解决方案的需求迅速增长,中国也成为了重要的物联网市场,其生态系统合作伙伴提供的丰富资源将有助于加速LPWA技术在全球范围内的快速普及。 Actility首席执行官Mike Mulica表示:“此次融资有助于更快提升我们的物联网技术和生态系统平台,从而满足服务提供商、解决方案提供商及大型行业企业的各种需求,例如:加快部署颠覆性的全球定位和追踪服务。此次融资还将推动我们在美国的发展战略,并为我们在中国的发展奠定基础,更将有利于我们实施战略性收购以拓展技术产品系列、巩固我们在LPWA领域的领导地位。” ThingPark China首席执行官刘兵表示:“在低功耗广域网(LPWA)的全球部署迎来重要转折点,且垂直应用的开发和推广进入大规模商业运营的关键阶段,Actility的成功融资将是继成立ThingPark China之后发力中国物联网市场的强有力保证。我们将着力与中国运营商展开合作,更快实现更广泛网络覆盖,同时积极开拓物流、可穿戴、医疗、农业等垂直行业市场并构建LoRa物联网生态系统,从而有效实现ThingPark China服务中国物联网市场的战略目标。” Inmarsat Enterprise总裁Paul Gudonis表示: “Inmarsat非常看好Actility及其基于LoRaWAN的全球物联网网络,其展示的巨大发展潜力十分契合我们的投资原则。Inmarsat与Actility两者之间存在着协同增效效应,两者能够通过协作为边远地区的客户提供创新型连接服务,从而有望打造全球物联网网络。为此,我们近期与Actility合作推出了LoRaWAN网络以便将物联网引入全球各个角落。未来,我们还将与Actility展开更多合作项目。我们将大力支持Actility的快速发展,助力Actility在物联网领域继续突飞猛进。随着物联网市场日渐成熟,Actility的合作伙伴生态系统也不断壮大,它必将能够利用好这个恰当时机为各行业领域的企业带来更大利益。” Idinvest Partners合伙人MatthieuBaret表示: “能够为Actility在全球的发展贡献一份力量,我们倍感荣幸。我们坚信,Actility将继续保持在物联网联网技术方面全球领导者的地位,它不仅支持LTE-M 和NB-IoT等3GPP网络技术,还研发了漫游、定位和追踪等业务解决方案,始终保持了技术领先这一优势。我们相信,Actility必将走在物联网革命的最前沿。” Ginko Ventures管理合伙人Dominique Pitteloud表示: “自2015年7月对Actility进行投资以来,Actility取得了显著发展。公司不仅在全球实施部署了大量大规模物联网网络,还进一步拓展了产品系列,打造出了一个可支持定位和漫游等重要功能的通用型物联网平台。我们很高兴能够在未来持续为Actility的进一步发展添砖加瓦。” 本文转自d1net(转载)

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

替代还是扩展:云的下一站真是雾计算?

云计算、雾计算、霾计算,关于计算的技术名词层出不穷,常常让人难以辨别。 云计算自从2006年,Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SES San Jose)首次提出“云计算”(Cloud Computing)的概念后,到现在正好十年,云计算已经以IaaS、PaaS、SaaS三个层次,不同方式融入到整个IT架构之中。 云计算已融入我们生活 Gartner、IDC等分析机构纷纷看好未来云形势,认为云计算市场可开发空间很大,公有云将成为主体。但是,在云计算仍在快速发展的今天,似乎有些人已经早在5年前,为我们想好了“退路”。 有人说,思科为了自己的战略发展需要发明了“雾计算(Fog Computing)”这个概念,但实际上雾计算的第一次出现是因为科学家对云计算数据安全问题而提出的。即美国纽约哥伦比亚大学的斯特尔佛教授(Prof. Stolfo)提出“雾计算”是希望利用“雾”来阻挡黑客入侵。 雾计算(图片来源于网络) 如今看来,不管当初“雾计算”的提出目的或者推广目的是什么,只要符合发展需求,都会实现的。 物联网的发展正需要雾计算的帮助。毫无疑问,未来世界的数据量会持续增加,传感器迅速发展。对于大量的数据信息,可以分为需要及时计算和无需及时计算的两种类型。而无需及时计算的数据可以在云端进行存储、计算;但是对于需要及时计算的这种数据,上传到云端会加大时延。所以雾计算是解决物联网时代数据及时分析的有效途径。 正如我们所理解的:雾是更贴近地面的云。 如此看来,雾计算无论是对于企业还是个人都有利处。对于个人用户来说,如果手机里的软件需要升级,也不必到云端去升级,只需在最近的地方通过“雾计算”的设备升级就可以了;对于企业而言,大连数据可以在雾计算中进行实时分析,避免了在云计算之间的传输,提升了企业的工作效率。 云计算or雾计算 可以说,雾计算在极低时延、辽阔的地理分布、带有大量网络节点的大规模传感器网络用来监控环境、支持高移动性、支持实时互动、支持多样化的软硬件设备、支持云端在线分析等方面具有优势。 但是雾计算也存在一些弊端。比如网络堵塞、软件架构、安全、隐私以及采用什么商业模式等等。 应该说,雾计算是云计算的一种延伸,是互补,并非相互替代关系。当然,雾计算也会像大多数新技术、新概念一样遇到各种各样的问题,但是最终都会得到解决。 本文转自d1net(转载)

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

android 图片选择,可选择图片,视频,音频,文件,方便扩展

AndroidFilePicker android file picker ,you can choose image,video,file,etc.. Image selector library for Android. Support single choice、multi-choice、cropping image and preview image. Quick start 1) Add Library module as a dependency in your build.gradle file. or Step 1. Add the JitPack repository to your build file Add it in your root build.gradle at the end of repositories: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } Step 2. Add the dependency dependencies { compile 'com.github.BrillantZhao:AndroidFilePicker:1.0.2' } 2) Declare permission in your AndroidManifest.xml <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 3) 图片选择 int mode = selectMode.getCheckedRadioButtonId() == R.id.mode_multiple ? ImagePickActivity.MODE_MULTIPLE : ImagePickActivity.MODE_SINGLE; boolean isShow = showCamera.getCheckedRadioButtonId() == R.id.camera_yes ? true : false; boolean isPreview = enablePreview.getCheckedRadioButtonId() == R.id.preview_enable ? true : false; boolean isCrop = enableCrop.getCheckedRadioButtonId() == R.id.crop_enable ? true : false; ImagePickActivity.start(ImageActivity.this, maxSelectNum, mode, isShow, isPreview, isCrop, ImagePickActivity.REQUEST_IMAGE); same this /** * 启动图片选择页面 * * @param activity * @param maxSelectNum 最大选择图片数量 * @param mode 单选or多选 * @param isShow 是否展示照相机 * @param enablePreview 是否允许预览 * @param enableCrop 是否允许裁剪 * @param requestCode 请求码 */ public static void start(Activity activity, int maxSelectNum, int mode, boolean isShow, boolean enablePreview, boolean enableCrop, int requestCode) { Intent intent = new Intent(activity, ImagePickActivity.class); intent.putExtra(EXTRA_MAX_SELECT_NUM, maxSelectNum); intent.putExtra(EXTRA_SELECT_MODE, mode); intent.putExtra(EXTRA_SHOW_CAMERA, isShow); intent.putExtra(EXTRA_ENABLE_PREVIEW, enablePreview); intent.putExtra(EXTRA_ENABLE_CROP, enableCrop); activity.startActivityForResult(intent, requestCode); } Receive result in your onActivityResult Method @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == ImagePickActivity.REQUEST_IMAGE) { ArrayList<ImageFile> images = data.getParcelableArrayListExtra(Constant.RESULT_PICK_IMAGE); // do something ... } } 4) 视频选择 boolean isShow = showCamera.getCheckedRadioButtonId() == R.id.camera_yes ? true : false; VideoPickActivity.start(VideoActivity.this, maxSelectNum, isShow,VideoPickActivity.REQUEST_VIDEO); same this /** * 启动视频选择 * * @param activity * @param maxSelectNum 最大选择数量 * @param isShow 是否展示摄像头 * @param requestCode 请求码 */ public static void start(Activity activity, int maxSelectNum, boolean isShow, int requestCode) { Intent intent = new Intent(activity, VideoPickActivity.class); intent.putExtra(EXTRA_MAX_SELECT_NUM, maxSelectNum); intent.putExtra(EXTRA_SHOW_CAMERA, isShow); activity.startActivityForResult(intent, requestCode); } Receive result in your onActivityResult Method @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == VideoPickActivity.REQUEST_VIDEO) { ArrayList<VideoFile> videoFiles = data.getParcelableArrayListExtra(Constant.RESULT_PICK_VIDEO); // do something... } } 5) 文件选择 String[] mSuffix = {"txt"}; NormalFilePickActivity.start(FileActivity.this, maxSelectNum, mSuffix, NormalFilePickActivity.REQUEST_FILE); same this /** * 启动文件选择 * * @param activity * @param maxSelectNum 最大选择数量 * @param mSuffix 文件格式集合 * @param requestCode 请求码 */ public static void start(Activity activity, int maxSelectNum, String[] mSuffix, int requestCode) { Intent intent = new Intent(activity, NormalFilePickActivity.class); intent.putExtra(EXTRA_MAX_SELECT_NUM, maxSelectNum); intent.putExtra(EXTRA_STUFFIX, mSuffix); activity.startActivityForResult(intent, requestCode); } Receive result in your onActivityResult Method @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == NormalFilePickActivity.REQUEST_FILE) { ArrayList<NormalFile> normalFiles = data.getParcelableArrayListExtra(Constant.RESULT_PICK_FILE); // do something... } } 5) 音频选择 boolean isNeedRecorder = showCamera.getCheckedRadioButtonId() == R.id.camera_yes ? true : false; AudioPickActivity.start(AudioActivity.this, maxSelectNum, isNeedRecorder, AudioPickActivity.REQUEST_AUDIO); same this /** * 启动录音选择 * * @param activity * @param maxSelectNum 最大选择数量 * @param isNeedRecorder 是否需要录音 * @param requestCode 请求码 */ public static void start(Activity activity, int maxSelectNum, boolean isNeedRecorder, int requestCode) { Intent intent = new Intent(activity, AudioPickActivity.class); intent.putExtra(EXTRA_MAX_SELECT_NUM, maxSelectNum); intent.putExtra(IS_NEED_RECORDER, isNeedRecorder); activity.startActivityForResult(intent, requestCode); } Receive result in your onActivityResult Method @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == AudioPickActivity.REQUEST_AUDIO) { ArrayList<AudioFile> audioFiles = data.getParcelableArrayListExtra(Constant.RESULT_PICK_VIDEO); // do something... } } 用到的第三方库 Glide compile ‘com.github.bumptech.glide:glide:3.7.0’ PhotoView compile ‘com.bm.photoview:library:1.4.1’ //=== compile ‘pub.devrel:easypermissions:0.2.1’ simplecropview compile ‘com.isseiaoki:simplecropview:1.0.13’ 项目地址(欢迎fork):https://github.com/BrillantZhao/AndroidFilePicker

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

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应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册