首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

android开发之启动模拟器并安装游戏apk

本文不讲环境设置,也不讲程序代码,咱们想讲如何把一个游戏APK文件,在模拟器上跑起来! 首先到网上下几个ANDROID的游戏到本地保存, 然后启动模拟器! 启动模拟器用命令行 CMD-> CD d:\android\android-sdk-151\tools-> emulator -avd avdname-> 如果提示找不到 avdname这个设备就用如下命令 emulator -avd HVGA-> 如图1所示 这样等待一小会,android的模拟器就启动起来了! 另起一个命令行 CMD-> CD D:\GAME-> adb install AssassinsCreed.apk-> 如图2所示 这样这个 《刺客信条》 的游戏就安装到android的模拟器上了! 如图3所示 好了!激动人心的时刻到了! 让我们进入 《刺客信条》 android版吧! 可惜是横版的,我这个模拟器是竖版的,看着比较别扭! 模拟器外观的定制: 480x320, landscape: emulator -skin HVGA-L 320x480, portrait : emulator -skin HVGA-P (default) 320x240, landscape: emulator -skin QVGA-L 240x320, portrait : emulator -skin QVGA-P 我们在启动模拟器时候加上这些参数就能得到对应的模拟器外观了 比如 CMD-> CD d:\android\android-sdk-151\tools-> emulator -avd avdname -skin HVGA-L-> 外观如下 emulator -avd avdname -skin HVGA-P-> 这个就是默认的模拟器竖版的! emulator -avd avdname -skin QVGA-L-> emulator -avd avdname -skin QVGA-P-> 喜欢用哪个模拟器就启动哪个吧! 最后一点,就是APK文件也和JAR一样是一个压缩包 用RAR等解压软件可以直接打开看里边的文件! 本文转自 kome2000 51CTO博客,原文链接:http://blog.51cto.com/kome2000/578684

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

Android GIS开发系列-- 入门季(15) 网络图层加载

一、首先我们来看一个网络图层: http://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer,这是全球街道图。加载的代码也很简单: private static final String WORLD_STREETS_URL = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"; private MapView mMapView = null; private ArcGISTiledMapServiceLayer mWorldStreetsLayer = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.map_view); mWorldStreetsLayer = new ArcGISTiledMapServiceLayer(WORLD_STREETS_URL); mMapView.addLayer(mWorldStreetsLayer); mWorldStreetsLayer.setOnStatusChangedListener(new OnStatusChangedListener() { @Override public void onStatusChanged(Object o, STATUS status) { if (status==STATUS.INITIALIZED){ Log.i("huang","加载成功"); }else if(status==STATUS.INITIALIZATION_FAILED||status==STATUS.LAYER_LOADING_FAILED){ Log.i("huang","加载失败"); } } }); } 效果图 问:为什么用ArcGISTiledMapServiceLayer 加载而不用其他图层加载呢? 用浏览器打开http://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer,可以看到详细信息。 它的子图层只有一个: 下面是坐标信息,注意Single Fused Map Cache: true,支持缓存。 与Tile Info信息, 通过信息说明这是一个TiledLayer,而ArcGISTiledMapServiceLayer是TiledLayer子类的子类,看一下ArcGISTiledMapServiceLayer的介绍。 点开World Street Map链接,http://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer/0,这是它的唯一子图层。真正加载的也是这个图层 Type虽然说是FeatureLayer,但它得用ArcGISFeatureLayer加载。 ArcGISFeatureLayer arcGISFeatureLayer = new ArcGISFeatureLayer(WORLD_STREETS_URL+"/0", ArcGISFeatureLayer.MODE.ONDEMAND); SimpleFillSymbol simpleFillSymbol = new SimpleFillSymbol(Color.argb(0,0,0,0),SimpleFillSymbol.STYLE.SOLID); mMapView.addLayer(arcGISFeatureLayer); arcGISFeatureLayer.setRenderer(new SimpleRenderer(simpleFillSymbol)); arcGISFeatureLayer.setOnStatusChangedListener(new OnStatusChangedListener() { @Override public void onStatusChanged(Object o, STATUS status) { if (status==STATUS.INITIALIZED){ Log.i("huang","加载成功"); }else if(status==STATUS.INITIALIZATION_FAILED||status==STATUS.LAYER_LOADING_FAILED){ Log.i("huang","加载失败"); } } }); 上面虽然加载成功,但并看不到图层,而且报错: FeatureSetCallback.onError com.esri.core.io.EsriServiceException: Requested operation is not supported by this service. The requested capability is not supported. 仔细再看网络信息, 大体上知道为什么报 The requested capability is not supported。也就是不能用这种方法加载,而得用前面的代码加载!!! ArcGISDynamicMapServiceLayer 服务地址:http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer,这是美国的高铁图。 用浏览器打开,有三个子图层,Single Fused Map Cache: false! 下面是ArcGISDynamicMapServiceLayer的介绍: 加载代码 : private static final String DYNAMIC_USA_HIGHWAY_URL = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer"; private ArcGISDynamicMapServiceLayer usaHighwayLayer = null; private MapView mMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.map_view); usaHighwayLayer = new ArcGISDynamicMapServiceLayer(DYNAMIC_USA_HIGHWAY_URL); mMapView.addLayer(usaHighwayLayer); usaHighwayLayer.setOnStatusChangedListener(new OnStatusChangedListener() { @Override public void onStatusChanged(Object o, STATUS status) { if (status==STATUS.INITIALIZED){ Log.i("huang","加载成功"); }else if(status==STATUS.INITIALIZATION_FAILED||status==STATUS.LAYER_LOADING_FAILED){ Log.i("huang","加载失败"); } } });} 效果图 二、ArcGISFeatureLayer加载图层 服务地图http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/0,也就是上面服务的子图层。 ArcGISFeatureLayer arcGISFeatureLayer = new ArcGISFeatureLayer("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/0", ArcGISFeatureLayer.MODE.ONDEMAND); mMapView.addLayer(arcGISFeatureLayer); arcGISFeatureLayer.setRenderer(new SimpleRenderer(new SimpleLineSymbol(Color.argb(250, 52, 17, 255),2))); arcGISFeatureLayer.setOnStatusChangedListener(new OnStatusChangedListener() { @Override public void onStatusChanged(Object o, STATUS status) { if (status==STATUS.INITIALIZED){ Log.i("huang","加载成功"); }else if(status==STATUS.INITIALIZATION_FAILED||status==STATUS.LAYER_LOADING_FAILED){ Log.i("huang","加载失败"); } } }); 注意要设置setRenderer,效果 ArcGISFeatureLayer 具有FeatureLayer的一些查询方法,与前面几讲里FeatureLayer查询相似,这里不再讲了。 //查询要素方法 queryIds(Query query, CallbackListener<int[]> callback) queryFeatures(Query query, CallbackListener<FeatureSet> callback) 在http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/0,页面底部, 点击Query进入查询要素界面,可直接 查询要素 where 1=1,点击Query(GET),可得到以下结果集 没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。 本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7752063.html ,如需转载请自行联系原作者

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

Android UI开发第十八篇——ActivityGroup实现tab功能

android.app包中含有一个ActivityGroup类,该类是Activity的容器,可以包含多个嵌套进来的Activitys,这篇文章就是借助ActivityGroup可以嵌套Activity的功能来实现Tab功能。tab这种UI在很多的移动应用中可以看到,包括android、iphone、window phone7等移动终端上都有这样的应用,Tab这种UI方式具有小视图大容量的特点。 首先,从SDK中doc文档中都可以获知,ActivityGroup类的父类是Activity(见下图),也就是说二者具有相同的接口和生命周期,同Activity一样,也有onCreate()、onPause()等函数可供我们重载。 ActivityGroup中有两个public方法(下图):ActivityGroup中可以调用getLocalActivityManage()方法获取LocalActityManage来管理Activity。 ActivityGroup实现的tab功能的效果图如下。 先看一下java代码: publicclassMainViewextendsActivityGroup{ @SuppressWarnings("unused") privateLinearLayoutbodyView,headview; privateLinearLayoutone,two,three,four; privateintflag=0;//通过标记跳转不同的页面,显示不同的菜单项 /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.view_main); initMainView(); //显示标记页面 showView(flag); one.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub flag=0; showView(flag); } }); two.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub flag=1; showView(flag); } }); three.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub flag=2; showView(flag); } }); four.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub flag=3; showView(flag); } }); } /* *初始化主界面 */ publicvoidinitMainView(){ headview=(LinearLayout)findViewById(R.id.head); bodyView=(LinearLayout)findViewById(R.id.body); one=(LinearLayout)findViewById(R.id.one); two=(LinearLayout)findViewById(R.id.two); three=(LinearLayout)findViewById(R.id.three); four=(LinearLayout)findViewById(R.id.four); } //在主界面中显示其他界面 publicvoidshowView(intflag){ switch(flag){ case0: bodyView.removeAllViews(); Viewv=getLocalActivityManager().startActivity("one", newIntent(MainView.this,OneView.class)).getDecorView(); one.setBackgroundResource(R.drawable.frame_button_background); two.setBackgroundResource(R.drawable.frame_button_nopressbg); three.setBackgroundResource(R.drawable.frame_button_nopressbg); four.setBackgroundResource(R.drawable.frame_button_nopressbg); bodyView.addView(v); break; case1: bodyView.removeAllViews(); bodyView.addView(getLocalActivityManager().startActivity("two", newIntent(MainView.this,TwoView.class)) .getDecorView()); one.setBackgroundResource(R.drawable.frame_button_nopressbg); two.setBackgroundResource(R.drawable.frame_button_background); three.setBackgroundResource(R.drawable.frame_button_nopressbg); four.setBackgroundResource(R.drawable.frame_button_nopressbg); break; case2: bodyView.removeAllViews(); bodyView.addView(getLocalActivityManager().startActivity( "three",newIntent(MainView.this,ThreeView.class)) .getDecorView()); one.setBackgroundResource(R.drawable.frame_button_nopressbg); two.setBackgroundResource(R.drawable.frame_button_nopressbg); three.setBackgroundResource(R.drawable.frame_button_background); four.setBackgroundResource(R.drawable.frame_button_nopressbg); break; case3: bodyView.removeAllViews(); bodyView.addView(getLocalActivityManager().startActivity( "four",newIntent(MainView.this,FourView.class)) .getDecorView()); one.setBackgroundResource(R.drawable.frame_button_nopressbg); two.setBackgroundResource(R.drawable.frame_button_nopressbg); three.setBackgroundResource(R.drawable.frame_button_nopressbg); four.setBackgroundResource(R.drawable.frame_button_background); break; default: break; } } } 程序中重要的是如下的方法: bodyView.removeAllViews(); bodyView.addView(getLocalActivityManager().startActivity("two", newIntent(MainView.this,TwoView.class)) .getDecorView()); 使用view的removeAllViews()方法清除不需要的view,使用addView(View v)方法添加需要的view。 getLocalActivityManager().startActivity("two",new Intent(MainView.this, TwoView.class))得到一个window对象,window对象调用 getDecorView()获取view。关于window的方法可以参考android.app.Window。 通过tab的效果图可以看到这个效果使用了上、中、下三种布局,layout就可以这样做了。实现layout就可以实现tab功能了。 本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/817245,如需转载请自行联系原作者

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

Android UI开发第十二篇——动画效果Animation(一)

Android框架本身就使用了大量的动画效果,比如Activity切换的动画效果,Dialog弹出和关闭时的渐变动画效果以及Toast显示信息时的淡入淡出效果等等。Android系统框架为我们提供了一些动画类及其工具类,所以在Andorid应用中使用动画效果非常简单。Android中可以在xml中定义Animation,也可以在java code中定义。 Android中动画的实现分两种方式,一种方式是补间动画 Tween Animation,就是说你定义一个开始和结束,中间的部分由android自身实现。另一种叫逐帧动画 Frame Animation,就是说一帧一帧的连起来播放就变成了动画。 一、Tween Animation xml中实现: alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果 JavaCode中 AlphaAnimation 渐变透明度动画效果 ScaleAnimation 渐变尺寸伸缩动画效果 TranslateAnimation 画面转换位置移动动画效果 RotateAnimation 画面转移旋转动画效果 使用XML文件定义Tween Animation时XML文件的根节点可以是<alpha>、<scale> <translate>、<rotate>或者是把它们都放入<set>节点中。如下: <?xml version="1.0" encoding="utf-8"?> < set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha/> <scale/> <translate/> <rotate/> < /set> Java Code实现如下: AlphaAnimation: AnimationSet animationSet =newAnimationSet(true);//创建一个AnimationSet对象 AlphaAnimation alphaAnimation =newAlphaAnimation(1, 0);//创建一个AlphaAnimation对象 alphaAnimation.setDuration(1000);//设置动画执行的时间(单位:毫秒) animationSet.addAnimation(alphaAnimation);//将AlphaAnimation对象添加到AnimationSet当中 view.startAnimation(animationSet);//使用view的startAnimation方法开始执行动画 RotateAnimation : AnimationSet animationSet = newAnimationSet( true); /** * 前两个参数定义旋转的起始和结束的度数,后两个参数定义圆心的位置 */ RotateAnimation rotateAnimation =newRotateAnimation(0, 360, Animation.RELATIVE_TO_PARENT, 1f, Animation.RELATIVE_TO_PARENT, 0f); rotateAnimation.setDuration(5000); animationSet.addAnimation(rotateAnimation); imageView.startAnimation(animationSet); TranslateAnimation: AnimationSet animationSet =newAnimationSet(true); /** * x和y轴的起始和结束位置 */ TranslateAnimation translateAnimation =newTranslateAnimation ( Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 1.0f ); translateAnimation.setDuration(1000); animationSet.addAnimation(translateAnimation); view.startAnimation(animationSet); ScaleAnimation: AnimationSet animationSet =newAnimationSet(true); /** * 围绕一个点伸缩 */ ScaleAnimation scaleAnimation =newScaleAnimation(1, 0.1f, 1, 0.1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); animationSet.addAnimation(scaleAnimation); animationSet.setStartOffset(1000); animationSet.setFillAfter(true); animationSet.setFillBefore(false); animationSet.setDuration(2000); view.startAnimation(animationSet); 代码下载地址: http://www.devdiv.com/forum.php?mod=viewthread&tid=88504&pid=546599&page=1&extra=#pid546599 本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/817314,如需转载请自行联系原作者

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

Android GIS开发系列-- 入门季(11) Callout气泡的显示

一、气泡的简单显示 首先我们要获取MapView中的气泡,通过MapView的getCallout()方法获取一个气泡。看一下Callout的简单介绍: 大体的意思是通过MapView获取Callout,可以设置它的内容View,大小,显示的方位等。 写一个简单的测试: public class MainActivity extends Activity { private MapView mapView; private static final String TILED_WORLD_STREETS_URL = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"; private Callout callout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mapView = (MapView) findViewById(R.id.map_view); //添加一个基础的底图 mapView.addLayer(new ArcGISTiledMapServiceLayer(TILED_WORLD_STREETS_URL)); //地图点击事件 mapView.setOnSingleTapListener(new OnSingleTapListener() { @Override public void onSingleTap(float x, float y) { //屏幕坐标转地图坐标 Point point = mapView.toMapPoint(x,y); //设置显示位置 callout.show(point); } }); initCallout(); } private void initCallout() { //获取一个气泡 callout = mapView.getCallout(); //设置最大的长宽 callout.setMaxWidth(1200); callout.setMaxHeight(300); TextView tv = new TextView(this); tv.setText("这是一个气泡"); callout.setContent(tv); CalloutStyle calloutStyle = new CalloutStyle(); //设置尖尖角的位置,尖尖显示在气泡的左下角, calloutStyle.setAnchor(Callout.ANCHOR_POSITION_LOWER_LEFT_CORNER); callout.setStyle(calloutStyle); } } 显示的效果图如下: 二、通过xml方式设置Callout的Style 新建一个xml放在res/xml下,例如: <?xml version="1.0" encoding="utf-8"?> <resources> <calloutViewStyle anchor="5" backgroundAlpha="255" backgroundColor="#ffffff" cornerCurveDp="20" frameColor="#000000" maxHeightDp="300" maxWidthDp="500" /> </resources> 只需调用callout.setStyle方法来设置。 没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。 本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7751976.html ,如需转载请自行联系原作者

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

Android UI开发第八篇——ViewFlipper 左右滑动效果

怎么实现Android主页面的左右拖动效果。其实实现起来很简单,就是使用ViewFlipper来将您要来回拖动的View装在一起,然后与GestureDetector手势识别类来联动,确定要显示哪个View,加上一点点动画效果即可。 java code: public class TestFlip extends Activity implements OnGestureListener { private ViewFlipper flipper; private GestureDetector detector; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); detector = new GestureDetector(this); flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01); flipper.addView(addView(R.layout.layout1)); flipper.addView(addView(R.layout.layout2)); flipper.addView(addView(R.layout.layout3)); flipper.addView(addView(R.layout.layout4)); } private View addView(int layout) { LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(layout, null); return view; } @Override public boolean onTouchEvent(MotionEvent event) { return this.detector.onTouchEvent(event); } @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX() - e2.getX() > 120) { this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out)); this.flipper.showNext(); return true; } else if (e1.getX() - e2.getX() < -120) { this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out)); this.flipper.showPrevious(); return true; } return false; } @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; } } xml code: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ViewFlipper android:id="@+id/ViewFlipper01" android:layout_width="fill_parent" android:layout_height="fill_parent"> </ViewFlipper> </LinearLayout> http://www.devdiv.com/home.php?mod=space&uid=14682&do=blog&id=3869 本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/817361 ,如需转载请自行联系原作者

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

在IOS开发中根据(id)sender获取UIButton的信息

-(IBAction) buttonClick:(id)sender//sender参数,表示接受哪个按钮消息 { UIButton *button = (UIButton *)sender;//参数id是一个通用内型,此处将其强制转换成UIButton内型 //每个button都有唯一的tag,系统默认陪标示用的,是一个整数 NSString *title =[NSString stringWithFormat:@"Button tag %d",button.tag];//将button tag 转换成字符串输出 NSString *mesage = [button currentTitle];//取得button名称 } 网上搜的,记录一下 本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/1153314,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册