本人2011年9月开始从事软件工程师的工作,至今(2013-9),二年工作经年。结合今年8月份的跳槽,几家新公司面试需要掌握的技能点积累供大家分享下,如有不正确的或更好建议等需要补充的,欢迎大家回帖:
servlet生命周期
实例化》Servlet容器创建Servlet的实例
初始化》该容器调用init()方法
服务》如果请求Servlet,则容器调用service()方法
销毁》销毁实例之前调用destory()方法
exception5个
NullPointException
ClassnotfoundException SqlException
IOException FileNotFoundException
ClassCastException
ArrayIndexOutOfBoundsException
NoSuchMethodException
NumberFormatException
重载和重写
重载:是在同一个类可以写多个同方法名的方法,参数却不相同的方法,返回值随便更改。
重写:重写是子类重写父类里的方法,方法名、返回值、参数都必须一样,内容随便更改。
抽象类和接口区别
抽象类:抽象类里的方法可以不是抽象的,但是有抽象方法的类一定是抽象类;抽象类不能实例化;抽象类的子类如果没实现父类的抽象方法,那么子类也必须定义成抽象方法。
接口:接口里所有的方法都是抽象的,接口中的方法默认定义为public abstract.变量默认为public static final.
抽象类用到的时候:可以定义一个类似模板类,众多子类继承它后,也可增添自己的方法。
接口用到的时候:接口通常在定义很多需要实现业务操作时用,实现它的类需要必须实现它里面的所有定义的方法。
一个类可以实现多个接口,但只能继承一个抽象类
集合map set list
List与set都是单列元素的集合,都继承Collection;
set里面不允许有重复的值,遍历元素时,使用Iterator接口取得所有的元素,然后再逐一遍历。
List表示有先后顺序的集合,添加元素时按先来后到顺序排序;也可手动指定索引位置插入元素(add(index I,Object o))。
Map是双列集合,其中有put(Obj key,Obj val)方法,取值使用get(obj key),不能存放重复键的value值,如果存放同样的键值,会被覆盖掉。
Linklist和ArrayList区别 HaspMap TreeMap HashSet TreeSet
Linklist是链表,适合插入和删除
ArrayList数组排序,适合遍历
HashMap使用是hash码存储元素,所以查找快,有containsvalue和containsKey查找方法
TreeMap自动排序
HashSet,用hash查找更快
TreeSet自动排序
至于HashMap和TreeMap,和Set的差不多,HashMap查找快,TreeMap自动排序。
声明注意
float a =2.0f;
doubleb =2.0;
char c =56;
String和StringBuffer、stringbuild区别
String和StringBuffer最明显的区别是StringBuffer有append()方法,可以改变字符,效率高;
将 StringBuilder的实例用于多个线程是不安全的。
Jdbc链接数据库
1. //连接MySql数据库,用户名和密码都是root
2. String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk " ;
3. private staticfinal String username = "root" ;
4. private staticfinal String password = "ok" ;
5. private static final StringdriverClass=”com.microsoft.jdbc.sqlserver.SQLServerDriver”;
publicstaticvoid main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
Class.forName(driverClass);
connection = DriverManager.getConnection(url,userName,password);
String sql = "";
statement = connection.createStatement();
//PreparedStatementpreparedStatement = connection.prepareStatement(sql);
//preparedStatement.setInt(parameterIndex,x);
//preparedStatement.setString(parameterIndex,x);
//String callsql = "{call mystore()}";
//CallableStatementcallableStatement = connection.prepareCall(callsql);
resultSet = statement.executeQuery(sql);
} catch (ClassNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
//TODO Auto-generatedcatch block
e.printStackTrace();
}finally{
try {
if (resultSet!=null) {
resultSet.close();
}
if (statement!=null) {
statement.close();
}
if (connection!=null) {
connection.close();
}
} catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Jdbc调用存储过程
public staticboolean create()
throws Exception {
/*** 創建存儲過程(可以放到數據庫執行)
* use portal2;
DROP PROCEDURE IFEXISTS mystore;
CREATE PROCEDUREmystore()
begin
select * from r_login_log where result ='fail' and (server_name like '%200%'
or server_name like '%202%');
end;
//執行命令 call mystore(); */
System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver");
Connectionconn = DriverManager.getConnection(
"jdbc:mysql://202.101.36.206:3306/portal2","root", "noc_por!tDxcw.com");
String sql = "{ callmystore() }";
CallableStatement st =conn.prepareCall(sql);
boolean flag =st.execute(sql);
st.close();
conn.close();
return flag;
}
接口是否可以继承?抽象类是否可实现接口?抽象类是否可继承集体类?抽象类中是否可以有静态的man方法?
抽象类和普通类的唯一区别是抽象类不能实例化和允许有abstract方法
publicclass jdbcimplementsImpl1,Impl2{}
基本数据类型:byteshort int long boolean char float double
String类
是final类型,不能继承或修改这个类,为了提高效率,我通常使用StringBuffer
单例模式
Public final class Singleton{
Private static Singletoninstance = null;
Publicstatic synchronized Singleton getInstance(){
If(instance==null){
Instance =new Singleton()
}
Return instance;
}
}
存储过程
create or replace procedure test_proc
2 is
3 begin
4 update test set id=id+1;
5 end;
6 /
exectest_proc;
带参数的存储过程
create or replaceprocedure test_proc(id number,province varchar2)
2 is
3 begin
4 insert into test values(id,province);
5 end;
6 /
Exec test_proc(seq_sequence.nextval,’江西省’);
分页
Oracle:select*from(select rownum r,t.* from table t whererownum<=6) where r>=2;
Sql:select * top 10 from table where id >(select top 20 idfrom table order by id) order by id;
Mysql:select * from table limit 10,20;
数据库的优化
(缓存、索引、sql语句优化等)oracle10g清理缓存:alter system flush buffer_cache;
ssh2如何配置
web.xml定义strutsPrepareAndExcuteFilter,在struts里配置数据源dataSource,在定义sessionFactory,接着再定义dao层和biz层,再接着定义事物管理类(HibernateTransactionManager),接着定义<tx:advice>事物通知,最后在面向方面里定义切面,指定需要配置事物的包所在位置,并且在里面将事物和切面组合。
struts1和struts2区别
struts2是webwork和struts1的结合,struts2在struts1基础上增加了拦截器,支持ognl(对象图形导航语言),和对ajax的支持。
struts1和struts2是2个完全不同的框架,其实struts2核心就是 webwork框架
struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的所有请求。Struts 1框架有3个重要组成部分:Action、ActionForm和ActionForward对象。Action必须实现ActionForm的基类,设计上并不是真正的POJO。
struts2核心控制器是FilterDispatcher,Struts 2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。而Struts 2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求。显然,上面的处理过程是典型的AOP(面向切面编程)处理方式。
Struts2的工作机制:
当web容器收到一个请求时,被过滤器strutsPreparedAndExecuteFilter拦截。
接着调用FilterDispatcher,FilterDispatcher调用ActionMapper确定请求哪个Action,ActionMapper返回一个收集了Action详细信息的ActionMapping对象。
接着,FileterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager)从配置文件中读取配置信息,然后创建ActionInvocation对象。ActionInvocation被创建的同时,填充了需要的所有对象和信息,它在调用Action之前会依次调用所有配置的拦截器。
一旦Action执行返回结果字符串,ActionInvocation负责查找结果字符串对应的Result,然后执行这个Result,通常情况下Result会调用一些模板(jsp等)来呈现页面。
之后拦截器会被在此执行(顺序和Action执行之前相反),最后响应,被返回给在Web.xml中配置的那些过滤器(FilterDispatcher)等。
1. ActionMapper作用:.ActionMapper提供了在请求和Action调用请求之间的映射,ActionMapper根据请求的URI来查找是否存在对应的Action调用请求,如果有则返回一个描述Action映射的ActionMapping对象;没有找到匹配的Action调用请求,则返回null.
2. .ActionMapping作用:ActionMapping本质上是一个数据传输对象,它保存了调用Action的映射信息,其中必须保存Action的命名空间信息和name属性信息。
3. .ActionProxy作用:ActionProxy在XWork和真正的Action之间的Action充当代理,在执行Action的过程中,因为使用代理而非直接操作对象,所以可以在Action执行前后执行额外的操作。
ActionProxy创建了ActionInvocation对象。
4. ActionInvocation作用:ActionInvocation表示Action的执行状态,它保存拦截器(按配置顺序),Action实例。ActionInvocation由ActionProxy创建,通过调用invoke()方法开始Action的执行,执行的顺序为按配置顺序执行拦截器,拦截器执行完毕后执行Action,Action执行结束后返回结果字符串,匹配对应的Result后,在一次执行拦截器。
工作机制是IOC ,IOC是思想、依赖注入(DI)是实现。
1.使用IOC最大程度的对对象的依赖关系解耦
2.使用AOP解除了模块或组件之间的耦合
3.简化其他框架的代码
4.是框架之间的润滑剂和粘合剂
5.spring 是无侵入的设计。在代码中感觉不到它的存在
6.spring是无依赖式的设计。spring不依赖任何框架,而且本身也无依赖.
自己口述:Spring最重要的两个功能就是IOC和AOP
IOC又叫依赖注入。
IOC的功能就是把用户管理的对象交给IOC容量,从而不用用户自己来管理这个对象。
AOP又叫面向切面编程,AOP的功能有以下(把我知道的都写下来):绕环通知,后置通知,前置通知,好像是这三种吧。只要意思是说:当你在执行某个方法事的前调用你指定你要通知。从而达到一种模块扩充的功能。
Aop:oop的一个横向服务,是对oop(面向对象编程(Object Oriented Programming,OOP,面向对象程序设计))进一步补充,提高安全、事务、日志等的集中式处理。相关的装备 before、around、after
IOC:是依赖注入(控制反转)
Spring的事物配置:
<beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<propertyname="sessionFactory"ref="sessionFactory"></property>
</bean>
<!-- aop -->
<tx:adviceid="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:methodname="add*"propagation="REQUIRED"/>
<tx:methodname="delete*"propagation="REQUIRED"/>
<tx:methodname="update*"propagation="REQUIRED"/>
<tx:methodname="*"propagation="SUPPORTS"read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisoradvice-ref="txAdvice"pointcut="execution(*com.sand.expressage.service.*.*.*(..))"/>
</aop:config>
spring事务的几个特性:
事务具有四个特性:原子性(Atomiocity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),这四个特性简称ACID特性。
1.1原子性
事务是数据库的逻辑工作单位,事务中包括的所有操作要么都做,要么都不做。
1.2 一致性
事务执行的结果必须是使数据库从一个一致性的状态变到另外一个一致性状态。
1.3 隔离性
一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他
事务是隔离的,并发执行的各个事务之间互相不干扰。
1.4 持久性
一个事务一旦成功提交,对数据库中数据的修改就是持久性的。接下来其他的其他
操作或故障不应该对其执行结果有任何影响。
拦截器的定义
Spring的组件
Spring core,即Spring作为依赖注入容器的部门。
Spring AOP是基于Spring core的,典型的一个应用即声明式事物。
Spring DAO对JDBC提供了支持,简化了JDBC编码,同事使代码更健壮。
Spring ORM部分对Hibernate等OR映射框架提供了支持。
Spring Context为企业级开发提供了便利和集成的工具。
定时器jar包:quartz-1.6.2.jar
发送电子邮件jar包:activation.jar和mail.jar
调用webservice接口的jar包:wsdl4j.jar
Spring框架的bean生命周期
在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称prototype),Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean。因此,默认情况下Spring2.0现在有五种类型的Bean.
当一个bean的作用域设置为singleton,那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singleton作用域时,SpringIOC容器只会创建该bean定义的唯一实例。
prototype作用域部署的bean,每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都会产生一个新的bean实例,相当于一个new的操作.
request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTPrequest内有效,globalsession为整个HTTP请求中,在作用域方面就是application.
详细介绍:
1、singleton作用域
当一个bean的作用域设置为singleton,那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singleton作用域时,Spring IOC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例,这里要注意的是singleton作用域和GOF设计模式中的单例是完全不同的,单例设计模式表示一个ClassLoader中只有一个class存在,而这里的singleton则表示一个容器对应一个bean,也就是说当一个bean被标识为singleton时候,spring的IOC容器中只会存在一个该bean。
配置实例:
<bean id="role" class="spring.chapter2.maryGame.Role"scope="singleton"/>
或者
<bean id="role" class="spring.chapter2.maryGame.Role"singleton="true"/>
2、prototype
prototype作用域部署的bean,每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都会产生一个新的bean实例,相当于一个new的操作,对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个 prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责。(让Spring容器释放被singleton作用域bean占用资源的一种可行方式是,通过使用 bean的后置处理器,该处理器持有要被清除的bean的引用。)
配置实例:
<bean id="role" class="spring.chapter2.maryGame.Role"scope="prototype"/>
或者
<beanid="role" class="spring.chapter2.maryGame.Role"singleton="false"/>
3、request
request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,配置实例:
request、session、global session使用的时候,首先要在初始化web的web.xml中做如下配置:
如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可:
<web-app>...<listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class></listener>...</web-app>
如果是Servlet2.4以前的web容器,那么你要使用一个javax.servlet.Filter的实现:
<web-app>..<filter> <filter-name>requestContextFilter</filter-name><filter-class>org.springframework.web.filter.RequestContextFilter</filter-class></filter><filter-mapping><filter-name>requestContextFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>...</web-app>
接着既可以配置bean的作用域了:
<bean id="role" class="spring.chapter2.maryGame.Role"scope="request"/>
4、session
session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效,配置实例:
配置实例:
和request配置实例的前提一样,配置好web启动文件就可以如下配置:
<bean id="role" class="spring.chapter2.maryGame.Role"scope="session"/>
5、globalsession
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么,web会自动当成session类型来使用。
配置实例:
和request配置实例的前提一样,配置好web启动文件就可以如下配置:
<bean id="role" class="spring.chapter2.maryGame.Role"scope="global session"/>
Struts 2.0 与Spring整合时,在Spring中定义action bean时,scope与Struts1.X有什么区别?
2.0中,基本上,action的scope需要是prototype,就是每次请求都建立新的线程
不写的话,默认是singleton了;用prototype,struts2的默认用法是将页面传来的参数放到action的属性里,导致了一个action必须为一个请求独有,否则就产生线程不安全; struts1.x默认是单实例(singleton),就是你每次请求都是由同一个action来处理。所以struts1.x默认指定,就存在并发问题。而strust2.x默认是多实例(prototype),每个请求都会产生相应的action实例去处理,这就避免并发问题。
ActionContextCleanUp作用:延长action中属性的生命周期,包括自定义属性,以便在jsp页面中进行访问,让actionContextcleanup过滤器来清除属性,不让action自己清除
FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.
StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.
StrutsPrepareAndExecuteFilter是StrutsPrepareFilter和StrutsExecuteFilter的组合,那什么时候用StrutsPrepareFilter和StrutsExecuteFilter的组合来替代StrutsPrepareAndExecuteFilter呢?下面会讲到。
这样的改革当然是有好处的.
为什么这么说.?应该知道如果我们自己定义过滤器的话,是要放在strtus2的过滤器之前的,如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html!
那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事,用FilterDispatcher是做不到的.!
那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.!
给你打个比喻,现在有病人要做手术,现在struts2要做两件事,搭病床(环境),执行手术.!那么打麻药的工作呢.?不可能要病人站着打吧,所以必须有病床的环境,打完麻药之后再动手术.!这个比喻非常形象了.!
ActionContextCleanUp也是自2.1.3开始由StrutsPrepareFilter和StrutsExecuteFilter的组合替代。
hibernate的一对多和多对多
在映射文件里设置one-to-many
<set name=”jds” inverse=”true” cascade=”all”>
<key column=”qxid”/>
<one-to-many class=”JD”/>
</set>
另一方
<many-to-onename=”qx” column=”qxid” class=”QX”/>
在映射文件里设置many-to-many
<setname=”members” table=”r_emp_proj”>
<key column=”r_proj_id”/>
<many-to-many class=”com.aptech.jb.entity.Employee” column=”r_emp_id”/>
</set>
另一方
<setname=”projects” table=”r_emp_proj” inverse=”true”>
<key column=”r_emp_id”/>
<many-to-many class=”com.aptech.jb.entity.Project”column=”r_proj_id”/>
</set>
注释:在set节点中增加cascade属性,值设为“all”,可选的值包括:all,对所有的操作进行级联;onoe,对所有的操作都不进行级联;save-update,执行更新操作时级联;delete,执行删除操作时级联。现在只要我们删除区县记录就可以自动删除关联的街道记录了。
Ibatis和sql左右链接和子查询
Jquery实现的ajax效果
Db2
是IBM开发出来的关系型数据库
Ajax
Jquery
//Ejb
JSONs
熟悉常见的面向对象设计模式如Factory,Singleton, MVC等
oracle、mysql、sqlserver区别
设计模式
工厂模式 mvc模式单态模式
如何实现数据的传递
先双方预先设置密钥,使用MD5加密,在通过socket建立通信,使用字符流发送和接收数据
多线程
soap OO/SOA设计思想
weblogic如何部署、连接数据库
JVM原理
tcp/ip协议
7应用层 ------------------------- |
6 表示层 |对应的是UDP和TCP
5 会话层 |
4 传输层---------------------------|
3 网络层---------------------------------------------对应的是IP
2 数据链路层---------|
1 物理层---------------|对应的是以太网
UML建模
使用PowerDesigner
Sql语句的强化
Linux:
· 使用 SecureCRT:终端模拟器;工具;软件
查看当前用户名:who a mi或id
查看linux版本:uname -a
hp-unix查看ip:netstat -in
redhat查看ip:ifconfig -eth0
vi操作:visual
esc 退出
o:插入新的一行
u:还原
i:写入
:操作界面
:w保存
:w filename
:q退出
:wq保存退出
:wq!强制保存退出
:q!强制退出
:set nu显示行号
:210 到210行
/关键字或?关键字 --》查找关键字按n逐个查找
dd删除光标所在的行
ctrl+f向前翻屏 ctrl+b向后翻屏
tail -f webservice.log|grep 18901681005根据指定的字段查询日志
查看linux版本号:uname -a
查看linux当前登录用户:id
gcc m4 mack
vi /bin/m4
vi /usr/bin/m4
find / -name m4
cp /m4 /usr/bin/m4
ls -l详细显示
ls -lr 按时间倒序详细显示
ls -tl 按时间
# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思
登录203,使用ftp到14上,文件在14服务器的/tmp上:
1、从目标机目录里得到文件放到本机目录文件上
命令目标目录里文件 本机目录文件
get /tmp/test.txt /portal/tomcat_forsp/webapps/portal2/test.txt
2、把本机目录文件里文件放到目标机目录里
命令本机目录里文件 目标机目录文件
put/portal/tomcat_forsp/webapps/portal2/test.txt /tmp/test.txt
或
ftp 116.228.137.14
Name (116.228.137.14:root): pin
Password:
ftp> put XGF.jsp /tmp/XGF.jsp
local: XGF.jsp remote: /tmp/XGF.jsp
---------------------------------------------------------------------------------------------------------------------------------------------------------
linux下查看磁盘剩余空间和文件夹大小的方法
df -hl 查看磁盘剩余空间
du -sm 文件夹返回该文件夹总M数
更多功能查看: df --help即df的man手册
用法:du [选项]... [文件]...总结每个文件的磁盘用量,目录则取总用量。长选项必须用的参数在使用短选项时也是必须的。
df -hl 查看磁盘剩余空间
du -sm 文件夹
返回该文件夹总M数
更多功能查看:
df --help
du --help
du --help
用法:du [选项]... [文件]...
总结每个<文件>的磁盘用量,目录则取总用量。
长选项必须用的参数在使用短选项时也是必须的。
-a, --all write counts for all files, notjust directories
--apparent-size print apparentsizes, rather than disk usage; although
the apparent size isusually smaller, it may be
larger due to holesin (`sparse') files, internal
fragmentation, indirect blocks, and the like
-B, --block-size=SIZE use SIZE-byteblocks
-b, --bytes equivalent to `--apparent-size--block-size=1'
-c, --total produce a grand total
-D, --dereference-args dereference FILEsthat are symbolic links
-H like --si, but also evokesa warning; will soon
change to be equivalentto --dereference-args (-D)
-h, --human-readable print sizes inhuman readable format (e.g., 1K 234M 2G)
--si like -h, but usepowers of 1000 not 1024
-k like --block-size=1K
-l, --count-links count sizes many times if hard linked
-L, --dereference dereference all symbolic links
-P, --no-dereference don't follow anysymbolic links (this is the default)
-0, --null end each output line with 0 byterather than newline
-S, --separate-dirs do not include size of subdirectories
-s, --summarize display only a total for each argument
-x, --one-file-system skip directorieson different filesystems
-X FILE, --exclude-from=FILE Excludefiles that match any pattern in FILE.
--exclude=PATTERN Exclude files that match PATTERN.
--max-depth=N print the totalfor a directory (or file, with --all)
only if it is N orfewer levels below the command
line argument;--max-depth=0 is the same as
--summarize
--help 显示此帮助信息并离开
--version 显示版本信息并离开
最后还有个较新的框架:springMVC+MyBatis+Spring,以后有时间再补上。