BBY学习笔记第一篇
一、 常用命令工具箱
1、 启动linux下svn服务的命令:service httpd start
2、 创建数据库并指定编码
GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
UTF8: CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
create database cahms default charset=utf8;
用Java连接Mysql数据库时jdbc.url的后部分要加useUnicode=true&characterEncoding=UTF-8
3、 War包相关:
把当前目录下的所有文件打包成game.war
jar -cvfM0 game.war ./
-c 创建war包
-v 显示过程信息
-f
-M
-0 这个是阿拉伯数字,只打包不压缩的意思
解压game.war
jar -xvf game.war
解压到当前目录
4、 netstat –ano 端口检测
5、 net time set -I 192.168.0.252 时间同步
6、 在eclipse中重新导入工程时,需要配置build path->source->class path,制定源码位置
7、 "Project->Properties->Java Build Path",右侧的面板中的"Source"选项卡,在Excluded中加入"**/.svn/**",就可以将所有的svn文件排除在编译路径中了
8、 ant的build.xml文件配置时需要指定路径(或者将jar文件拷到ant插件库中)<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="../WEB-INF/lib/ant-contrib-1.0b2.jar" />
9、 光盘挂载:mount -t iso9660 /dev/cdrom /mnt/
10、 linux下脚本操作数据库
#!/bin/sh
mysql -ucahms -pcahms <<MySQL
USE cahms;
UPDATE h_termconf SET ipaddr='192.168.0.86' WHERE devstate='1';
QUIT
MySQL
exit 0
11、 linux下文件颜色含义
浅蓝色为链接,绿色为可执行,红色为压缩,白色为普通文件,蓝色为目录,粉色为图片
12、 linux下java和tomcat设置
tomcat运行需要设置JRE_HOME, 其他的还不清楚是否必要;概括来讲,设置了JAVA的两个HOME和PATH,TOMCAT的HOME和PATH
13、 Eclipse下配置tomcat插件
解压tomcatPluginV321.zip将com.sysdeo.eclipse.tomcat_3.2.1拷到eclipse下的plugin文件夹内,eclipse.exe –clean启动eclipse,进入Window->preferenced配置tomcat路径,即可。
14、replace和replaceAll区别
replaceAll是基于表达式的替换,可以根据特定规则替换,replace则是精确替换指定字符,例:可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号,replace就做不到,因为它不是基于规则表达式的替换。替换{时可以用replaceAll(“\\{“,”[“])或replace(“{“,”[“])或replace(‘{‘,’[‘);javascript能处理‘’转义字符,不能处理“”。
15、eclipse自动提示设置
window->Preferences->Java->Editor->content assist Enable auto activation 选项打上勾,后边可设置时延。
16、一个sql联合查询语句(语句比较长)
select h_item.*, a.Submod_name,h_lang.Lang_desc,h_stylesubmodule.Submod_name from h_item left join (select h_stylesubmodule.Submod_num, h_stylesubmodule.Submod_name from h_stylesubmodule where h_stylesubmodule.Module_num='"+curModNum+"') a on h_item.Submod_num=a.Submod_num left join h_lang on h_item.Lang_id=h_lang.Lang_id left join h_stylesubmodule on h_item.Submod_num_cont=h_stylesubmodule.Submod_num order by h_item.Sequence,h_item.Item_id desc,h_item.Lang_id;
显示mysql数据表索引: show index from h_accessed;
17、设置tomcat为debug模式(拒绝重启tomcat)
编辑server.xml在<Host></Host>标签之间添加调试设置:
<Context path="" docBase="ROOT" debug="5" privileged="true" reloadable="true" crossContext="true"></Context>
可实现更新.class文件时tomcat自动重启(需要先删除,再添加,以使tomcat检测到文件变动,直接替换是不行的)
18、查看已安装rpm包文件位置
rpm -ql php-5.1.6-23.2.el5_3.i386
rpm –qa | grep php根据文件名查看安装的rpm包
19、html学习记录
1、属性名和值不分大小写,属性值可用单或双引号
2<input type=”checkbox” checked>Apple
3按钮定义:<input type=’button’ vaule=”click here,you will get “Apple”’>
4、Body背景色和文本字体设置<boty bgcolor=’black’ text=’yellow’>
5、标题和段落定义
<h1 align="center">这是一个标题,果然字体比段落大</h1>
<p align="right">这是一个段落,可以<br>输入很多文字</p>
<p align="left" style="font-family:黑体;font-size:15px;color:green">
6、<pre>预先设置文字格式</pre> 文本内容预先写好换行、缩进等格式
7、<br>为换行符,<hr>为一条横线,<!—注释
8、嵌入视频或音频
<embed src=”音视频文件名” autostart=true>
9、其他未测试的标签(有特定字体)
<code><kbd><tt><address><samp><var><blockquote>
10、链接定义
文字连接:<a href=”http://www.163.com”>链接标题</a>
图片链接:<a href=”http://192.168.0.252”><img src=”w.jpg”></a>
11、大部分文本标签都可以通过以下代码指定字体
Style=”font-family:黑体;font-size:18px;color:yellow”
12、表格定义
<table>表格定义<caption>表格标题<th>表头定义<tr>行定义<td>具体格定义
<table boder=’1’ bgcolor="green" background="t.jpg" style="font-family:黑体;color:black">
<caption>表格标题</caption>
<tr>
<th>姓名</th>
<th>性别</th>
<tr>
<td>张三</td>
<td>男</td>
</tr>
<tr>
<td>李四</td>
<td>不详</td>
</tr>
</table>
14、 无序列表、有序列表、自定义列表
<ul>
<li>Coffee</li>
<li>Milk</li>
</ul>
<ol>
<li>Coffee</li>
<li>Milk</li>
</ol>
<dl>
<dt>name</dt>
<dd>godFather</dd>
<dt>age</dt>
<dd>000</dd>
</dl>
15、 图像标签
<img src=”w.jpg” alt=”no page found” align="center" width="150" height="50">
16、 radio标记
<input type="radio" name="sex" value="male" checked>male
17、 JSP页面组成
JSP页面主要包括元素(需要JSP容器编译成.class)、HTML模板(直接返回给客户端执行的)。
18、 一个JSP调用另一个JSP(同时通过request传递参数)
t.jsp内容
<jsp:forward page="tt.jsp">
<jsp:param name="RoomNumber" value="1003"/>
</jsp:forward>
tt.jsp页面中接收参数用String rn = request.getParameter(“RoomNumber”);
则调用t.jsp时,页面会自动跳到tt.jsp
包含一个jsp并传参数
<jsp:include page="peixun2.10.1.jsp" flush="true" >
<jsp:param name="User" value="HiFi King" />
</jsp:include>
19、 装RedHat5.4时问题
在安到“loading ata_piix driver.....”时,有可能卡住,解决方法:修改bios中sata模式为raid
20、 javascript基础学习
Math.round()-四舍五入
Math.floor()-正舍负入
Math.random-获得0-1随机数;arguments表示调用该函数时传递的参数;e.morph:设置元素属性值;e.duiation=0.2;:动画持续时间;e.delay=d;:动画延迟时间;{}.afterFinish=left;:动作结束后调用的函数;p,.mode = ‘relative’ 或 p.mode = ‘absolute’用于设置位置是相对还是绝对;prototype.js、scriptaculous.js两个js框架;var keys = new Array();keys.splice(1,2)-从位置一开始删除两个元素,keys.splice(1,2,”hu”)-从位置一开始删除 元素并用”hu”替代;
21、 javascript的两个框架比较
scriptaculous是一个基于prototype的框架,现在先接触第一层,effect,也就是动画效果。插一句,对于prototype,真的感觉这是一个十分强大的框架,和jquery是没有什么可比性的,使用方式完全不一样,如果把写一个javascript应用程序比作建一座楼,javascript应该算最基本的材料,比如说啥子、石头、木头,prototype好比经过加工过的基础材料,比如砖头,可以用prototype开发出更高级的框架,jquery好比已经做好了的一套套房子,可以直接组合成一座楼房,可操作性比起prototype有所下降。曾经面试时有个面试官说prototype可扩展性比较差,想再想想根本不是这么回事,初级材料当然就那么几种,但是用这些初级材料可以开发出更丰富的高级材料。
言归正传,继续说回scriptaculous,先推荐两个网站,官方网站:http://wiki.script.aculo.us/scriptaculous/tags/effects,hafeyang的blog:http://www.cnblogs.com/Hafeyang/archive/2007/09/16/894695.html
整个effect代码的思路大概是这样的:
第一步:定义Effect对象,并对其进行最近本的设置
第二部:定义core Effects,核心效果。核心效果都继承了Effect.Base对象,这种继承的定义方法头一次见过,以后仔细研究。核心效果一定要记住,这是组合效果和以后自定义效果的基础。
第三部:定义combination effects,组合效果。都是对核心效果的组合,并重新封装成新的效果。
这就是整个effect的基础,其重点在于核心效果的代码,虽然代码不太难,但是对理解prototye的写法很有帮助。
document.write(“Hello world”);--向页面写入内容,document.write()用的很多。
Javascript脚本可以放到head,也可以放到body之中,放到body之中的在页面载入时执行,放到head中的可以等到调用时执行(比如函数)
引用外部脚本:<script src="xxx.js">....</script>
代码块:{ }代码块的javascript会一并执行
消息框:alert confirm(“文本内容”)-得到内容或null prommpt(“确认”,”默认值”)-得到true或默认值false;
onFocus、onBlur 和 onChange 事件通常相互配合用来验证表单;onMouseOver事件-鼠标移到区域时触发事件。
页面错误捕获和处理:try{代码}catch(err){处理错误信息}
用onerror处理错误信息,需要写处理行数对应该错误事件
onerror=handleErr
var txt=""
function handleErr(msg,url,l)
{
txt="There was an error on this page.\n\n"
txt+="Error: " + msg + "\n"
txt+="URL: " + url + "\n"
txt+="Line: " + l + "\n\n"
txt+="Click OK to continue.\n\n"
alert(txt)
return true
}
文本字符串内部换行(\):document.write("Hello \
World!")
长度函数str.length;大写转换函数str.toUpperCase();
字符替换str.replace(“a”,”b”);
window.onload = startTime;后边的函数不能加括号;
Math.rount(2.3);四舍五入;Math.random();返回0-1之间数;
RegEXP对象三个方法:test()-判断字符串是否存在,exec()-返回找到的字符串,compile()-;
22、 DOM学习笔记
网上教程:http://www.w3school.com.cn/htmldom/index.asp
节点的定义
getElementById(),getElementByTagName();getElementById(“ID”).getElementByTagName(“name”);
var x = ducumment.getElementByTagName(“name”);
var text = x.firstChild.nodeValue;
var y = ducument.getElementById(“maindiv”);
y.parentNode.removeChild(y);
document.getElementById(“maindiv”).parentNode.removeChild(document.getElementById(“maindiv”));
访问根节点:document.body;document.documentElement;
节点属性
• nodeName(节点名称)
• nodeValue(节点值)
• nodeType(节点类型)
document对象:每个被载入浏览器的HTML文档
document.cookie:写:document.write(document.cookie);显示:alert(document.cookie);
为DIV添加(替换)字体:
Document.getElementById(“name_div”).innerHTML=”<font face=’黑体’ color=’white’ style=’font-size:28px’;>Window XP</font>”;
23、 CSS学习笔记
同一个HTML元素被不止一个样式定义时,优先级如下:
浏览器缺省设置
外部样式表
内部样式表(位于 <head> 标签内部)
内联样式(在 HTML 元素内部)
多个元素可以同时设置属性:
h1,h2,h3,h4,h5{
color:green;
}
子元素会继承父元素属性,如果子元素设置了父元素设置过的属性,则覆盖;
定义派生选择器:
li strong{
font-style:italic;
font-weight:normal;
}
这样:
<p><strong>粗体</strong></p>
<ul>//无序列表
<li><strong>斜体和粗体</strong></li>
<li>正常字体</li>
</ul>
ID选择器、类选择器
#id_div,一个文档中只出现一次
.class_div,多个元素可以引用
例:
.center{ }
<h1 class=”center”></h1>
<p class=”center”></p>
HTML文件链接外部样式表
<head>
<link href=”mystyle.css” rel=”stylesheet” type=”text/css” />
</head>
外部样式表不应包含html标签,应以.css作为文件名后缀。
CSS样式描述由选择器、属性、值三部分组成,属性和值之间不应有空格,如20 px,因为除了IE6其他浏览器不支持这种方式。
padding-内边距
为元素设置背景图:#a_div{background-image:url(bg.jpg);},背景属性不能被继承。
background-repeat:属性值有:repeat-x,repeat-y,no-repeat
background-position属性值有:center,left,right,top,或者(20px,20px),(50%,50%)-坐标位置。
默认坐标为0%,0%即左上角,
Background-attachment:fixed;防止背景随文档滚动,默认为scroll滚动。
margin-外边距;padding-内边距;设置方式:padding:32px 0 0 0 上、右、下、左,或者,margin-top,margin-right,margin-bottom,margin-left,padding-top,padding-right,padding-bottom,padding,left,padding-top分别设置。
CSS文本设置:
text-indent-文本缩进,如:p{text-indent:5em;} p{text-indent:-5em;padding-left:5em;}可继承属性;
text-align-水平对齐,如:值为left,right,center,justify(两端对齐时调整各行长度相等).
word-spacing-字间隔,默认normal,既是0;
letter-spacing-字母间隔,默认normal,既是0;
text-transform-字符转换,值为:none,uppercase,lowercase,capitalize(首字母大写)
如:p{text-transform:uppercase;}
text-decoration-文本装饰,值为:none,underline,overline,line-through,blink
元素内容超出给定高度和宽度属性时,显示滚动条:
overflow:scroll;
效果图:
24、 myeclipse写javascript接口时警告去除
关闭自动校验
关闭方法
Project-->Properties-->MyEclipse-->Validation-->Override validation preferences-->Disabled All-->OK
手动校验
选中要校验的文件,鼠标右键-->MyEclipse-->Run validation
25、 Mysql连接
Mysql自身有连接超时默认为28800秒,超过这个时长mysql会自动断开连接,时长可以登录mysql后show variables查看,解决方式:
修改/etc/my.cnf 在mysqld下添加wait_timeout=288000(试过无效,NND);登录mysql执行set wait_timeout=2880000;在jdbc中添加autoReconnect=true(据说对mysql5以后的版本无效了);
26、 myeclipse更改默认jdk
今天,做个EJB 例子时,用到了Ant 来打包 发布 ,刚好又装了 新的Myeclipse ,抱着激动的心情开发着,好了,都写好了,布署时,出了几个错,都是小问题,这个 Error starting modern compiler ,我就奇怪,为什么compiler 有问题,我就入DOS 下运行jdk .都OK啊。。汗。我Jboss里都是支持jdk 6.0.的运行都没问题 ,手动打包,Client JNDI 调用 也OK,用了几个方法 ,都不行,,把什么 tools.jar放到lib。什么 tools.jar 放到 Myeclipse 的jar 下都不行。还出现了版本的错误 。后来,出去走了下。想了想,把Myeclipse 的JDK 都换了1.6 。OK 。呵呵。。有时还真要冷静处理问题。不要太执著。。给点时间清醒下,就能解决问题。
解决方法是:window ->Prefrences->Java->Compiler->Compiler compliance level: 选 JDK1.6随便 一个项目下右键:Properties-Java Build Path->Libraries->右边选 AddLibrary -->看Workspace default JRE (XXX)XXX是JDK什么版本。不对的话。选Alternate JRE .》Installed JRES .->选自己的JDK 安装目录 。就OK。下面全部项目都换JDK 1.6.了 呵呵 OK 就到这了。
27、 堆栈
堆栈其实是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆:顺序随意栈:后进先出(Last-In/First-Out)。
28、 关于ArrayList、LinkedList和Vector类
ArrayList是List接口的一个可变长数组实现。实现了所有List接口的操作,并允许存储null值。
除了没有进行同步,ArrayList基本等同于Vector。在Vector中几乎对所有的方法都进行了同步,但ArrayList仅对writeObject和readObject进行了同步,其它比如add(Object)、remove(int)等都没有同步。
由于ArrayList采用一个对象数组存储元素,所以在删除一个元素时需要把后面的元素前移。删除一个元素时只是把该元素在elementData数组中的引用置为null,具体的对象的销毁由垃圾收集器负责。
ArrayList的实现采用了动态数组,因此它的插入或者删除的效率会变得不好,但有很好的数据遍历性能。
linkedList用的是链表的技术,因些它对于插放或者删除操作的效率很高,对于查询的效率却是不好。
Linkedlist 可以在链表头尾增加、删除、插入元素
二、 C/S和B/S模式
C/S 模式:客户端/服务器,其实从字面上都可以看出来,它的结构必然很庞大,比较复杂,功能强大,一般对环境要求比较高,实时交互性好,但是维护比较麻烦,需要分别安装客户端和服务端。比如:通常玩的网络游戏一般都属于C/S模式的的结构。
B/S模式: 浏览器/服务器,其实B/S模式可以看做是C/S模式的一种,浏览器也是一个客户端的嘛,只是一般情况下操作系统已经集成了这个客户端不用安装就是了,他的结构比较简单,维护比较方便,功能相对没有C/S结构的强大。通常我们用的网上银行啊,基于浏览器的这些基本上都属于B/S模式的。
三、 Java分类介绍
J2SE(Standard Edition):标准版,适用于普通应用程序的开发;
J2EE(Enterprise Edition):企业版,适用于大型企业级应用程序的开发;
J2ME(Micro Edition):微型版,适用于移动设备或嵌入式设备的程序开发。
要想靠这个谋生的话,最流行的就是j2ee,做些大型网站,系统等!j2se可以做些桌面应用程序,比如QQ,就是一个普通应用程序开发的行列。j2me可以用于手机,冰箱,微波炉等嵌入式的控制。
四、 javaBean
JavaBean 是一种JAVA语言写成的可重用组件,可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变,所有WEB里的类都是Bean
最初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 Bean(EJB)
编写javabean就是编写一个java的类,所以你只要会写类就能编写一个bean,这个类创建的一个对象称做一个bean。为了能让使用这个bean的应用程序构建工具(比如JSP引擎)知道这个bean的属性和方法,只需在类的方法命名上遵守以下规则:
1. 如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法:
getXxx(),用来获取属性xxx。
setXxx(),用来修改属性xxx.。
2. 对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用"is"代替上面的"get"和"set"。
3. 类中方法的访问属性都必须是public的。
4. 类中如果有构造方法,那么这个构造方法也是public的并且是无参数的。
五、 request和session介绍
request、session生命周期不同,request针对一次客户端请求,session也是针对一个客户端,时间通常比request长些,可以设置,两个属于服务器端属性;jsp属于服务器端语言,javascript属于客户端语言,所以javascript只能读取服务器端request或session,不能写;另外在作用域方面,request只能在相邻页面之间传递,struts2中获取request和session方法如下:
1、获得request对象:
A . HttpServletRequest request = ServletActionContext.getRequest ();
B.ActionContext ct= ActionContext.getContext()
HttpServletRequest request=
(HttpServletRequest)ct.get(ServletActionContext. HTTP_REQUEST );
2、获得session对象:
在Struts2中底层的session都被封装成了Map类型,我们称之为SessionMap,而平常我们所说的session则是指HttpSession对象,具体的获得方法如下所示。
A.Map session=ActionContext.getSession();
B.Map session=
(Map)ActionContext.getContext().get(ActionContext.SESSION);
得到这个SessionMap之后我们就可以对session进行读写了,如果我们想得到原始的HttpSession可以首先得到HttpServletRequest对象,然后通过request.getSession()来取得原始的HttpSession对象。一般情况下SessionMap已经可以完成所有的工作,我们不必再去碰底层的session了。
Session对象的原理在于,服务器可以为客户端创建并维护一个所谓的Session对象,用于存放数据。在创建Session对象的同时,服务器将会为该Session对象产生一个唯一编号,这个编号称之为SessionID,服务器以Cookie的方式将SessionID存放在客户端。当浏览器再次访问该服务器时,会将SessionID作为Cookie信息带到服务器,服务器可以通过该SessionID检索到以前的Session对象,并对其进行访问。需要注意的是,此时的Cookie中仅仅保存了一个SessionID,而相对较多的会话数据保存在服务器端对应的Session对象中,由服务器来统一维护,这样一定程度保证了会话数据安全性,但增加了服务器端的内存开销。
存放在客户端的用于保存SessionID的Cookie会在浏览器关闭时清除。我们把用户打开一个浏览器访问某个应用开始,到关闭浏览器为止交互过程称为一个“会话”。在一个“会话”过程中,可能会向同一个应用发出了多次请求,这些请求将共享一个Session对象,因为这些请求携带了相同的SessionID信息。
六、 Action
Action 是struts中的一个组件 代表一个用户操作,dao是数据访问层,也就是说Dao中的代码是进行数据库访问的,应该还有的就是jsp,是表示层,这样做层次分明,符合mvc模型,action是struts的组件,相当于servlet,功能是一样的。
action和actionform(绑定数据)----就可以让表示层与数据层分离我们刚刚从概念上讲述了一下 Struts2里面的 MVC,那么从实现的层面上来看又是什么样子呢?在 Struts2 中,模型-视图-控制器模式通过五个核心组件来实现——Action、拦截器?值栈/OGNL?结果类型和结果/视图技术从全局的角度来看 ,Struts2是一个 pull(拉)类型的 MVC(或者MVC2)框架,它与传统类型的 MVC 框架的不同之处就在于在Struts2 中,Action 担任的是模型的角色,而非控制器的角色,虽然它的角色仍然有些重叠。“pull”的动作由视图发起,它直接从Action 里拉取所需的数据,而不是另外还需要一个单独的模型对象存在。
图1描述了 Struts2 架构中的模型、视图和控制器。控制器通过Struts2分发Servlet过滤器(也就是人们常说的拦截器)来实现,模型通过Action实现,视图则通过结果类型和结果组合实现。值栈和OGNL提供了公共的线程和链接,并使得不同组件可以相互集成。
七、 MySql编码问题
前期指定数据库和脚本的编码都为gbk,下面四个设置项都打开,后为支持多语言,数据库改为utf8;
mysql设置utf8编码,/etc/my.cnf如下
对应数据库编码如下:
数据表脚本中包含中文信息的,脚本指定gbk编码;数据表中文字符来自java代码的脚本指定数据表utf8编码(h_exch_rate汇率表),在mysqld和client下设置utf8好像都可以,待确定。
八、 arping 命令手册
process = Runtime.getRuntime().exec("arping -b -f -w 1 " + list.get(i).getIpaddr());
arping -q -c 2 -w 3 -D -I eth2 192.168.0.154
arping - send ARP REQUEST to a neighbour host
# 注释 :arping 是用于发送 ARP 请求到一个相邻主机的工具,使用 arp 数据包来 ping 目标主机,你可以指定arp包中的SPA(source protocol address)
# 注释 :-A 和 -U 相同,但使用 ARP 响应包
# 注释 :-b 用于发送以太网广播帧(FFFFFFFFFFFF) ,arping 一开始使用广播地址,在收到响应后就使用 unicast 地址
# 注释 :-c 表示发送指定数量的 ARP 请求数据包后就停止。如果指定了 deadline 选项,则 arpnig 会等待相同数量的 ARP 响应包,知道超时为止
# 注释:-D 表示重复地址探测模式,也就是用于侦测是否有 ip 冲突。如果没有地址冲突,则返回 0
# 注释 :-f 表示在收到第一个响应包后就退出
# 注释 :-I 指定用那个接口来发送 ARP 请求包。这个选项是必须的。
-h Print help page and exit.
# 注释 :-q 是 quiet 模式。
# 注释 :-s 设定 arping 发送的 arp 数据包中的SPA 字段的值。如果为空,则按下面处理
#1、如果是 DAD 模式(冲突地址探测),则设置为 0.0.0.0
#2、如果是 Unsolicited ARP 模式(Gratutious ARP)则设置为目标地址
#3、否则从路由表得出
# 注释:-U 就是启用 Gratutious 模式,它用于更新别的主机上的 ARP 表中本地主机的条目。不需要响应
# 注释 :-w 设定一个超时时间,单位是秒。如果到了指定时间,arping 还没有完全收到响应则退出
# 问题 :arping 在正常情况下发送完 arp 请求包后会等待响应吗?
# 问题 :arping -w 的作用
九、 RedHat系统相关
/etc/rc.d/rc.local是系统一些本地启动项
/etc/rc.local则是上个文件的链接,rcn.d(n=1,2,3…)
文件下各个local系统启动项则是/etc/rc.local的链接
1、 Linux的变量种类
按变量的生存周期来划分,Linux变量可分为两类:
永久的:需要修改配置文件,变量永久生效。
临时的:使用export命令行声明即可,变量在关闭shell时失效。
2、 设置变量的三种方法
1. 在/etc/profile文件中添加变量【对所有用户生效(永久的)】
例如:编辑/etc/profile文件,添加CLASSPATH变量
# vi /etc/profile
export CLASSPATH=./Java_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。
2. 在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
例如:编辑guok用户目录(/home/guok)下的.bash_profile
$ vi /home/guok/.bash.profile
添加如下内容:
export CLASSPATH=./Java_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile
3. 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】
在shell的命令行下直接使用[export变量名=变量值]定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
十、 tar.gz安装包
大多以tar.gz 和tar.bz2打包软件,大多是通过 ./configure ;make ;make install 来安装的;有的软件是直接make;make install
我们可以通过./configure --help 来查看配置软件的功能;大多软件是提供./configure 配置软件的功能的;少数的也没有,如果没有的就不用./configure ;直接make;make install 就行了
./configure 比较重要的一个参数是 --prefix ,用--prefix 参数,我们可以指定软件安装目录;当我们不需要这个软件时,直接删除软件的目录就行了
比如我们可以指定fcitx 安装到 /opt/fcitx 目录中
[root@localhost fcitx]#./configure --prefix=/opt/fcitx
如果我们不需要fcitx 时,可以直接删除 /opt/fcitx 目录
tar jxvf file.tar.bz2
tar zxvf file.tar.gz
十一、 crontab相关
运行 crontab -e
然后在vi编辑器里输入
*/5 * * * * root ./temp.sh
然后保存就可以了。
格式:分 时 日 月 星期 指令
启动crond服务:service crond start
1、如何在crontab中读到用户的环境变量参数
大家都知道crontab是个好东东,可以定时执行一些任务,帮助你监控系统状况,帮助你每天重复的做一些机械的事情。但是crontab有一个坏毛病,就是它总是不会缺省的从用户profile文件中读取环境变量参数,经常导致在手工执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错
原先我用一个很傻的办法,就是在脚本中直接指定所有的环境变量参数,每次写脚本都要写好多好多PATH啦,LD_LIBRARY_PATH之类的环境变量参数
后来发现其实可以直接在脚本里先执行一下用户的profile文件,就OK了
如果是Linux环境下的脚本,脚本的头上用缺省的#!/bin/sh就可以了,如果是Solaris环境下的脚本,脚本头上用#!/bin/ksh.
crontab –l –r(列出/删除已有任务)。