首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

android按钮的操作例子,简单大家看明白_基础

主代码量,很少吧。大家一下,就明白。哈哈, publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); TextViewmyTextView=(TextView)findViewById(R.id.myTextView); ButtonmyButton=(Button)findViewById(R.id.myButton);//取得按扭的内容 myTextView.setText("我的第一个TextView");//请注意显示的时候在哪里。 myButton.setText("我的第一个Button"+"\n"+"Smart测试程序");//按扭换行了吧。另外大家在看的时候,请注意一下 //,main.xml文件与strings.xml写法。 } 附件:http://down.51cto.com/data/2357527 本文转自 llb988 51CTO博客,原文链接:http://blog.51cto.com/llb988/487629,如需转载请自行联系原作者

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

Android基础之——startActivityForResult启动界面并返回数据,上传头像

在android应用的开发过程中,经常会出现启动一个界面后填写部分内容后带着数据返回启动前的界面,最典型的应用就是登录过程。在很多应用程序的模块中,都有“我的”这个模块,在未登录状态下点击其中的某一项,就会弹出登录界面,登录完成后回到我的界面,会显示一些登录后的数据,这个功能的实现就要用到startActivityForResult. 下面通过一个小demo来说明一下startActivityForResult的使用,以及在实际开发中的一些应用。 demo的效果图如下: 主界面布局: 三个按钮,一个textview <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btn_a" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginTop="20dip" android:text="启动A界面并返回数据" /> <Button android:id="@+id/btn_b" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_marginTop="20dip" android:text="启动B界面" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dip" android:orientation="horizontal" > <Button android:id="@+id/btn_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录" /> <Button android:id="@+id/btn_logout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:text="注销" /> </LinearLayout> <TextView android:id="@+id/tv_content" android:layout_width="match_parent" android:layout_height="30dip" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:layout_marginTop="20dip" /> </LinearLayout> 主界面java代码 public void onClick(View v) { Intent intent ; // TODO Auto-generated method stub switch (v.getId()) { case R.id.btn_a: intent = new Intent(MainActivity.this, ActivityA.class); intent.putExtra("data", "传递给A的数据"); startActivityForResult(intent, A); break; case R.id.btn_b: intent = new Intent(MainActivity.this, ActivityB.class); intent.putExtra("data", "传递给B的数据"); startActivity(intent); break; case R.id.btn_login: intent = new Intent(MainActivity.this,LoginActivity.class); intent.putExtra("data", "传递给登录界面的数据"); startActivityForResult(intent, LOGIN); break; case R.id.btn_logout: btnLogin.setClickable(true); logout.setVisibility(View.GONE); btnLogin.setText("登录"); break; default: break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { switch (requestCode) { case A: Bundle bundle = data.getExtras(); String back = bundle.getString("back"); Toast.makeText(getApplicationContext(), "A界面传回来的数据为:::::::"+back, 0).show(); content.setText("A界面传回来的数据"+back); break; case LOGIN: Bundle loginBundle = data.getExtras(); String username = loginBundle.getString("username"); String passwrod = loginBundle.getString("password"); content.setText("登录界面传回来的数据"+username+":::::::"+passwrod); btnLogin.setText("已登录"); btnLogin.setClickable(false); logout.setVisibility(View.VISIBLE); Toast.makeText(getApplicationContext(), username+"::::::::"+passwrod, 0).show(); break; default: break; } } } 其中主要的地方有两个,一个是在启动activity时,如果要带结果返回,则需要使用startActivityForResult(intent,requestcode)这个方法,该方法两个参数一个是带数据的Intent,另一个就是请求码,这个请求码是用于给activity识别是哪个activity返回的数据,因为在一个activity中可能会出现多个startActivityForResult,因此返回的时候,activity为了识别是哪个activity返回的数据就要利用requestcode来进行区分。 上面还有一个很重要的方法onActivityResult(int requestCode, int resultCode, Intent data)该方法在startActivityForResult启动的activity结束后返回数据时调用,其中第二个参数是结果码,结果码为RESULT_OK时,说明activity顺便结束并返回结果。 第一个参数requestcode就是被启动的activity的识别码,在startActivityForResult方法时传入。 第三个参数data是Intent型的数据,该数据就是从activity返回回来的数据,可以使用data.getExtras()方法得到bundle,然后从bundle中取出一些基本数据。 通过不同的结果码,对不同的activity返回的数据进行相应的操作,就可以合理的完成一些特定的功能效果。 那么,是不是所有的startActivityForResult启动的activity都回返回数据呢?答案是否定的,要想要activity返回数据,在activity中也要进行响应的一些设置,请看activity的代码 ActivityA的代码如下: protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); LinearLayout ll = new LinearLayout(this); LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); ll.setLayoutParams(params); ll.setOrientation(LinearLayout.VERTICAL); TextView tv = new TextView(this); tv.setText("我是A界面"); ll.addView(tv); Button close = new Button(this); close.setText("关闭界面并返回"); close.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("back", "我是A界面返回的数据"); setResult(RESULT_OK, intent); finish(); } }); ll.addView(close); setContentView(ll); Toast.makeText(getApplicationContext(), getIntent().getExtras().getString("data"), 0).show(); } 注意其中有一段代码,是setResult(RESULT_OK, intent);之后紧接着finish(); activity要能成功返回数据,就必须在结束finish()之前调用setResult方法,该方法的两个参数,第一个为结果码,也就是onActivityResult方法中的第二个参数resultcode,一般情况下我们都设置该值为RESULT_OK ActivityB由于使用的是startActivity因此无需返回数据 ActivityB的代码如下: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activityb); Button close = (Button) findViewById(R.id.btn_close); close.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub finish(); } }); Toast.makeText(getApplicationContext(), getIntent().getExtras().getString("data"), 0).show(); } protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.login); etUsername = (EditText) findViewById(R.id.et_username); etPassword = (EditText) findViewById(R.id.et_password); Button login = (Button) findViewById(R.id.btn_login); login.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String password = etPassword.getText().toString().trim(); String username = etUsername.getText().toString().trim(); Toast.makeText(getApplicationContext(), "登录成功,返回原来界面", 0) .show(); Intent intent = new Intent(); intent.putExtra("username", username); intent.putExtra("password", password); setResult(RESULT_OK, intent); finish(); } }); Toast.makeText(getApplicationContext(), getIntent().getExtras().getString("data"), 0).show(); } 该界面登录成功后,将用户名和密码返回到主页面,并显示,同时主页面不能再次登录,可以使用注销操作。 到这里,这个小demo就完成了。 主要演示二个功能,一个是启动activity并带结果返回,将结果显示在页面上。 一个是启动activity不带结果返回,这种操作比较常用和简单。 完整的代码:http://download.csdn.net/download/yanglfree/7503139 下面再来说下startActivityForResult另一个比较常用的应用场景:上传头像 效果图如下: 点击头像后,弹出选择对话框,选择相册或者拍照,完成后会出现裁剪界面,裁剪完成后,会将头像显示在界面上,如果有服务器的话,会将头像上传到服务器。 看下几段关键的代码: 头像的点击事件: public void onClick(View v) { CharSequence[] items = { "查看头像", "手机相册", "手机拍照" }; new AlertDialog.Builder(MainActivity.this).setTitle("上传照片") .setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { if (which == SELECT_PICTURE) { Intent intent = new Intent( Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, PHOTO_REQUEST_GALLERY); } else if (which == SELECT_CAMERA) { Intent intent = new Intent( "android.media.action.IMAGE_CAPTURE"); // 判断存储卡是否可以用,可用进行存储 if (hasSdcard()) { intent.putExtra( MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File( Environment .getExternalStorageDirectory(), PHOTO_FILE_NAME))); } startActivityForResult(intent, PHOTO_REQUEST_CAMERA); } else if (which == SELECT_SCAN) { // TODO 查看头像 } } }).create().show(); } }); 其中,启动相册和拍照都是采用的startAcitivityForResult方法,并且,由于相册和拍照都是系统应用,因此,intent使用指定的intent 拍照:"android.media.action.IMAGE_CAPTURE" 相册:Intent.ACTION_PICK 在activityResult方法中: public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { if (requestCode == PHOTO_REQUEST_GALLERY) {// 图库 if (data == null) { return; } Uri uri = data.getData(); crop(uri); } else if (requestCode == PHOTO_REQUEST_CAMERA) {// 拍照 if (hasSdcard()) { file = new File(Environment.getExternalStorageDirectory(), PHOTO_FILE_NAME); crop(Uri.fromFile(file)); } else { Toast.makeText(this, "未找到存储卡,无法存储照片!", 0).show(); } } else if (requestCode == PHOTO_REQUEST_CUT) {// 裁 try { bmp = data.getParcelableExtra("data"); photo.setImageBitmap(bmp); File tempFile = BitmapUtils.saveBitmapFile(bmp, PHOTO_FILE_NAME); upload(tempFile);//上传到服务器 pd = new ProgressDialog(this); pd.setMessage("头像正在上传中请稍后"); pd.show(); } catch (Exception e) { e.printStackTrace(); } } } } 本文转自 一点点征服 博客园博客,原文链接:http://www.cnblogs.com/ldq2016/p/5368062.html,如需转载请自行联系原作者

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

谢烟客---------Linux之DNS服务系统的基础知识

DNS Domain Name Server 1)C/S架构:SOCKET通信IP + PORT 2)应用层协议:资源子网 BIND Berkerley Information Name Domain DNS由来 1)统一名字,自己维护 <自己查询> 解析: 基于key查找value: 查询数据库(二维关系的表: raw, column) 根据主机名找到对应的行, 找到对应的column 2)统一维护,定时下载 <自己查询> 3)统一查询,Glibc库作为客户端,基于UDP请求解析 3.1 查询速度慢 3.2hash主机(域)名, 放于内存中, 查询速度快 3.3划片.基于hash数字,分布式:一个主机管理不了,基于授权将功能分散出去,让多个主机分别处理。 4)基于域名后缀,分布式:基于授权将功能分散出去,让多个主机分别处理。 namespace: 所有名称所在范围: 根 域是无形的。真实存在的是主机 域的大小是非恒定的: 由域内的主机数量决定 DNS树状结构图 名称解析过程 递归和迭代的区别 DNS服务器的作用 1、为所有人解析自己所负责的域 2、《递归》为部分人或所有人提供解析 DNS解析 本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1965708,如需转载请自行联系原作者

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

Android 经典笔记之八:网络请求数据基础介绍

关于网络请求数据总结 目录介绍 1.Http请求与响应 1.1 Http请求包的结构 1.2 HTTP响应包结构 2.Http请求方式 3.Get和Post的比较 3.1 get请求 3.2 post请求 3.3 其他区别 3.4 网络心声 4.Http响应方式 5.同步和异步 6.Http缓存机制讲解 6.1 request请求字段含义 6.2 response响应字段含义 6.3 缓存机制逻辑图 0.本人写的综合案例 案例 说明及截图 模块:新闻,音乐,视频,图片,唐诗宋词,快递,天气,记事本,阅读器等等 接口:七牛,阿里云,天行,干货集中营,极速数据,追书神器等等 1.Http请求与响应 一次请求就是向目标服务器发送一串文本。什么样的文本?有下面结构的文本。1.1 HTTP请求包结构 例子: POST /meme.php/home/user/login HTTP/1.1 Host: 114.215.86.90 Cache-Control: no-cache Postman-Token: bd243d6b-da03-902f-0a2c-8e9377f6f6ed Content-Type: application/x-www-form-urlencoded tel=13637829200&password=123456 请求了就会收到响应包(如果对面存在HTTP服务器)1.2 HTTP响应包结构 例子: HTTP/1.1 200 OK Date: Sat, 02 Jan 2016 13:20:55 GMT Server: Apache/2.4.6 (CentOS) PHP/5.6.14 X-Powered-By: PHP/5.6.14 Content-Length: 78 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: application/json; charset=utf-8 {"status":202,"info":"u6b64u7528u6237u4e0du5b58u5728uff01","data":null} 2.Http请求方式 3.Get和Post的比较区别3.1 get请求 在url中填写参数 http://xxxx.xx.com/xx.php?params1=value1¶ms2=value2 https://api.douban.com/v2/book/search?tag=文学&start=0&count=30 甚至使用路由 http://xxxx.xx.com/xxx/value1/value2/value3 3.2 post请求 参数是经过编码放在请求体中的。 编码包括: x-www-form-urlencoded form-data x-www-form-urlencoded`的编码方式是这样: tel=13637829200&password=123456 form-data`的编码方式是这样: ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="tel" 13637829200 ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="password" 123456 ----WebKitFormBoundary7MA4YWxkTrZu0gW 3.3 其他区别 因为url是存在于请求行中的。 所以Get与Post区别本质就是参数是放在请求行中还是放在请求体中。 3.4 网络心声 Get是明文,Post隐藏 移动端不是浏览器,不用https全都是明文。Get传递数据上限XXX 胡说。有限制的是浏览器中的url长度,不是Http协议,移动端请求无影响。Http服务器部分有限制的设置一下即可。 4.Http响应方式 请求是键值对,但返回数据我们常用Json。 对于内存中的结构数据,肯定要用数据描述语言将对象序列化成文本,再用Http传递,接收端并从文本还原成结构数据。 对象(服务器)<-->文本(Http传输)<-->对象(移动端) 。 5.同步和异步的比较这2个概念仅存在于多线程编程中。Android中默认只有一个主线程,也叫UI线程因为View绘制只能在这个线程内进行。所以如果你阻塞了(某些操作使这个线程在此处运行了N秒)这个线程,这期间View绘制将不能进行,UI就会卡。所以要极力避免在UI线程进行耗时操作。网络请求是一个典型耗时操作。5.1同步写的方式: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); NetUtils.get("http://www.baidu.com");//这行代码将执行几百毫秒 } 这就是同步方式。直接耗时操作阻塞线程直到数据接收完毕然后返回。Android不允许的。会卡死 5.2异步写的方式: //在主线程new的Handler,就会在主线程进行后续处理。 private Handler handler = new Handler(); private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.text); new Thread(new Runnable() { @Override public void run() { //从网络获取数据 final String response = NetUtils.get("http://www.baidu.com"); //向Handler发送处理操作 handler.post(new Runnable() { @Override public void run() { //在UI线程更新UI textView.setText(response); } }); } }).start(); } 在子线程进行耗时操作,完成后通过Handler将更新UI的操作发送到主线程执行。这就叫异步。 抽取写法 记住: 每次都new Thread,new Handler消耗过大 public class AsynNetUtils { public interface Callback{ void onResponse(String response); } public static void get(final String url, final Callback callback){ final Handler handler = new Handler(); new Thread(new Runnable() { @Override public void run() { final String response = NetUtils.get(url); handler.post(new Runnable() { @Override public void run() { callback.onResponse(response); } }); } }).start(); } public static void post(final String url, final String content, final Callback callback){ final Handler handler = new Handler(); new Thread(new Runnable() { @Override public void run() { final String response = NetUtils.post(url,content); handler.post(new Runnable() { @Override public void run() { callback.onResponse(response); } }); } }).start(); } } 这个直接调用工具类 private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.webview); AsynNetUtils.get("http://www.baidu.com", new AsynNetUtils.Callback() { @Override public void onResponse(String response) { textView.setText(response); } }); 6.Http缓存机制讲解 缓存对于移动端是非常重要的存在。 减少请求次数,减小服务器压力. 本地数据读取速度更快,让页面不会空白几百毫秒。 在无网络的情况下提供数据。 缓存一般由服务器控制(通过某些方式可以本地控制缓存,比如向过滤器添加缓存控制信息)。通过在请求头添加下面几个字端: 6.1 request请求字段含义 6.2 response响应字段含义 6.3 缓存机制逻辑图 其他说明 知乎:https://www.zhihu.com/people/yang-chong-69-24/pins/posts 领英:https://www.linkedin.com/in/chong-yang-049216146/ 简书:http://www.jianshu.com/u/b7b2c6ed9284 csdn:http://my.csdn.net/m0_37700275 网易博客:http://yangchong211.blog.163.com/ 新浪博客:http://blog.sina.com.cn/786041010yc github:https://github.com/yangchong211 喜马拉雅听书:http://www.ximalaya.com/zhubo/71989305/ 脉脉:yc930211 360图书馆:http://www.360doc.com/myfiles.aspx 开源中国:https://my.oschina.net/zbj1618/blog 泡在网上的日子:http://www.jcodecraeer.com/member/content_list.php?channelid=1 邮箱:yangchong211@163.com 阿里云博客:https://yq.aliyun.com/users/article?spm=5176.100239.headeruserinfo.3.dT4bcV

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

Mocha BSM基础架构管理——可视化系统进程监控

业务需求与挑战 • 在服务器的日常运营中,经常遇到进程不响应,无故死掉又无法察觉的问题; • 有时应用并没有宕机,但是应用的相关进程却已停止,管理员无法及时的察觉; • 当进程发生中止又重新恢复的异常情况时,相关人员亦很难察觉。 关键功能与亮点 • 关键进程跟踪 从进程启动到进程终止,系统会24小时全程监控关键进程的整个生命周期。当进程启动或终止时可以发送报警通知,并记录进程的最后运行时间。 •提供详细的进程信息 进程状态、CPU使用情况、内存使用情况、用户、句柄数、线程数、I/O、优先级、总运行时间、最后运行时间等。 • 一个界面,处理不同操作系统的进程 支持不同操作系统比如Windows、Solaris、AIX、Linux,但是通过Portal提供统一界面和入口,不需要来回切换Telnet或者系统登入界面。 提供进程可视化管理,提供一目了然的系统维护工具,如按名称、进程ID、CPU利用率、内存利用率等进行排序。 • 对系统进程远程管理 - 终止进程 - 调整进程优先级 • 支持进程事件 当关键进程启动/终止时,会产生进程事件,并且向相关人员发送报警和出发相关流程。 • 多种方式通知 产生关键进程启动/终止事件时,以短信、邮件、声光、Mocha Alert多种方式通知管理人员。 我们给客户带来什么• 释放维护人员,提高工作效率 以前需要有人定时查看各个服务器上的所有进程,使用各种命令,查看操作系统的各个不同位置,才能确保系统的正常运行。现在只需在一个统一页面就能查看到所有信息。 以前不知道进程何时终止了?现在只要查看进程的最后运行时间即可。 • 提高IT响应速度 进程监控自动化,无需人工干预,一旦发生问题,系统会自动发送报警通知 • 可视化监控,一目了然的监控与管理 系统进程可视化监控提供一目了然的监控,降低对管理员的要求,并且降低了管理员的学习门槛。所有的进程管理都可以在一个统一页面进行,包括调进程优先级,杀进程(如果你又相对应权限),而不是靠复杂难记的Unix系统命令。 • 深入的监控,协助分析问题所在 当系统性能明显降低时,管理员仅通过查看操作系统本身提供的进程列表往往无法准确的判断症结所在,需要通过复杂的命令逐个探查进程的信息,即费时又难以快速定位问题。可视化进程监控在一个屏幕中即可展示出每个进程的各项指标信息。 无论管理员身在何处,一旦发生关键进程启动/终止问题,系统都能够立即通知到管理员,使问题得到尽快处理。 更多相关信息,请点击 [url]http://www.mochabsm.com[/url] 本文转自赖永锋51CTO博客,原文链接:http://blog.51cto.com/mochasoft/86547 ,如需转载请自行联系原作者

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

Hadoop Hive概念学习系列之HiveQL编译基础(十)

由客户端提交的HiveQL语句将最终被转换为一个或多个MapReduce任务并提交由Hadoop执行。不包含聚合和连接的简单SELECT语句可以使用一个单独的只包含Map阶段的任务实现。使用GROUP BY子句的聚合可以使用一个独立的MapReduce任务实现。包含大量多表连接的复杂查询需要依靠多个MapReduce任务的顺序执行来实现。 HiveQL编译器的操作分为好几个阶段。 在第一个阶段中,查询语句被解析并转化成抽象的语法树。随后语法树将被传给语义分析器,在这一过程中,通过使用元数据存储中的信息来判别列名和数据类型。 语义分析器将它们转化并生成一种内部的表达方式,然后传递给逻辑计划生成器,在这里将生成一颗逻辑操作树。在逻辑计划经过数次的传递和优化之后,它将被送往物理计划生成器。经过物理计划生成器和处理之后,将产生一张DAG(有向无环图)用以生成最终的MapReduce任务。 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6105080.html,如需转载请自行联系原作者

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

android中的按钮以图片的方式显示_基础

关于这个图,我们只要在MAIN。XML 文件写上以下的代码方可。 <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableTop="@drawable/star" android:text="按钮1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableTop="@drawable/star" android:text="按钮2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableTop="@drawable/star" android:text="按钮3" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableTop="@drawable/star" android:text="按钮4" /> 本文转自 llb988 51CTO博客,原文链接:http://blog.51cto.com/llb988/485378,如需转载请自行联系原作者

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

课程第二天内容《基础交换 二 》

接口和线缆识别 认识、配置IOS IOS , 网络设备的操作系统; Internet operating system ,因特网操作系统; www.cisco.com -> 思科官网, 下载IOS; 交换机组成: 软件 - 系统文件 - IOS 配置文件 - running-config , 正在运行的配置文件(内存-RAM) startup-config , 启动配置文件(非易失性内存-NVRAM) 硬件 -CPU 硬盘 -> Flash ,存储操作系统 内存 电源 ROM ->只读存储器 备注: POTS -> 加电自检; BIOS --> 固化的引导程序; --------------------------------------------------- IOS配置 模式 - 用户模式,权限有限; 特权模式,拥有全部权限; Switch > 前面的 switch 是设备的名字; > 是 设备的“模式提示符;表示的是用户模式; # ,代表的是”特权模式” 配置命令: switch > enable switch # switch # disable -->返回到用户模式; switch # exit ---> 退出; 命令帮助系统: ?,可以罗列出当前模式所支持的所有命令; e? ,可以罗列出当前模式下所有以 e 开头的命令; tab , 可以将不完整的命令单词,自动补全。 配置 特权密码: 即通过用户模式进入到特权模式时,所需要的密码; 命令: SW3#configure terminal SW3(config)#enable password Cisco123 SW3(config)#enable secret 111 注意: 可以通过上述两种方式配置 enable 密码; enable password 配置的密码是以明文的方式存在于配置文件中; enable secret 配置的密码是以密文的方式存在于配置文件中; 两者同时存在时, secret 优先级高; 良好的配置习惯: 配置完相应的功能之后,进行验证,确保无误; 及时保存 , 命令如下: SW3#write 将 running-config中的内容,直接保存到 startup-config 文件中; 调试命令超时时间: - console 0 : SW1(config)#line console 0 SW1(config-line)#exec-timeout 0 0 ->永不超时; SW1(config-line)#password abc123 ->密码设置; SW1(config-line)#login ->启用认证功能; 注意: console 下的默认超时时间为 10分钟; console 下默认没有启用认证; 工作环境中,不建议配置“永不超时”; 查看设备当前的登录用户: show users ----------------------------------------------------- 配置IP地址: SW1#configure terminal SW1(config)#interface vlan 1 -> 进入虚拟端口; SW1(config-if)#ip address 192.168.1.1 255.255.255.0 --->配置IP地址; SW1(config-if)#no shutdown -> 打开端口; 验证命令: SW1#show running-config SW1#show ip interface brief 注意: 查看接口的状态,必须是 up / up ; ---------------------------------------------------- 接口: Ethernet 0/1 ------ 10Mbps FastEthernet 0/1 ------ 100Mbps GigabitEthernet 0/1 ------ 1000Mbps XGigabitEthernet 0/1 ------ 10000Mbps 0/1 分解: 0 - 模块号; 1 - 端口号; X/Y/Z分解: X - 表示的槽位号; ------------------------------------------------------ 设置 vty 密码; IP地址:192.168.1.X0 line vty 0 4 255.255.255.0 password cisco 远程访问密码:cisco 特权密码:设备名字; -------------------------------------------------- 远程访问协议: telnet x.x.x.x. 例如 : telnet 192.168.1.20 password : cisco SW2>enable password :SW2 SW2# ----------------------------------------------- 远程访问配置思路: 1、配置主机IP地址; 2、配置设备IP地址; 3、测试主机与设备的连通性;--- ping x.x.x.x 4、配置设备的 VTY 密码;-line vty 0 4 -> password xxxx 5、配置设备的 enable 密码;-- enable password xxxxx 6、在主机上远程访问设备;PC- telnet x.x.x.x ---------------------------------------------------- 注意: 远程访问协议 - telnet 默认情况下,远程访问使用的都是设备的虚拟端口-vty 默认情况下,远程访问都是需要密码的(默认有login) 默认情况下,远程访问时必须配置“特权密码”; 路由器接口IP配置: R1(config)#interface fastethernet 0/1 R1(config-if)#no shutdown R1(config-if)#ip address 192.168.1.100 255.255.255.0 验证: R1#show running-config ; R1#show ip interface brief ---> up / up ; ----------------------------------------------------------- 设备恢复出厂配置: 原理: 删除启动配置文件; 实现: R1# erase startup-config or R1# delete nvram:startup-config 查看文件存储路径: R1# dir R1# dir /all 注意: erase相当于“格式化”命令,会删除指定存储介质上的所有文件; 一定不可以 erase flash: ------------------------------------------------------------- 重启设备: R1# reload ------------------------------------------------------------- 查看本地设备有哪些用户登录: R2#show users 查看本地设备主动发起的会话: R1#show session 在不同会话之间快速切换: R1#resume { id } 断开/恢复指定会话: R1#disconnect / resume { id } 跳转回本地设备: ctrl + shift +6 , X ------------------------------------------------- switch> switch>enable -->进入到特权模式; switch# switch#configure terminal ->进入“全局配置模式”; switch(config)# switch(config)#hostname SW3 ->更改主机名; SW3(config)# SW3(config)#no ip domain lookup ->关闭域名查询功能; SW3(config)#exit SW3#ab translating "ab" unknown command .... SW3(config)#enable password Cisco123 PK SW3(config)#enable secret 111 (配置的密码优先使用) SW3(config)#no enable password / se 验证命令: show running-config SW3#disable SW3>enable password : 111 SW3# 保存配置: SW3#write 将内存中的配置文件内容保存到启动配置文件; 本文转自云计算王森 51CTO博客,原文链接:http://blog.51cto.com/13426941/1975989,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

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

用户登录
用户注册