中级软件工程师的技能基本要求

时间:2023-01-19 21:52:43

本人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

         Listset都是单列元素的集合,都继承Collection

set里面不允许有重复的值,遍历元素时,使用Iterator接口取得所有的元素,然后再逐一遍历。

             List表示有先后顺序的集合,添加元素时按先来后到顺序排序;也可手动指定索引位置插入元素(add(index I,Object o))

         Map是双列集合,其中有putObj key,Obj val)方法,取值使用getobj key,不能存放重复键的value值,如果存放同样的键值,会被覆盖掉。

LinklistArrayList区别 HaspMap TreeMap HashSet TreeSet

 Linklist是链表,适合插入和删除

 ArrayList数组排序,适合遍历

 

 HashMap使用是hash码存储元素,所以查找快,有containsvaluecontainsKey查找方法

 TreeMap自动排序

 

  HashSet,用hash查找更快

 TreeSet自动排序

至于HashMapTreeMap,和Set的差不多,HashMap查找快,TreeMap自动排序。

声明注意

float a =2.0f;

       doubleb =2.0;

     char c =56;

 

 StringStringBufferstringbuild区别

  StringStringBuffer最明显的区别是StringBufferappend()方法,可以改变字符,效率高;

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>事物通知,最后在面向方面里定义切面,指定需要配置事物的包所在位置,并且在里面将事物和切面组合。

struts1struts2区别

struts2webworkstruts1的结合,struts2struts1基础上增加了拦截器,支持ognl(对象图形导航语言),和对ajax的支持。

struts1struts22个完全不同的框架,其实struts2核心就是 webwork框架

struts1ActionServlet作为核心控制器,由ActionServlet负责拦截用户的所有请求。Struts 1框架有3个重要组成部分:ActionActionFormActionForward对象。Action必须实现ActionForm的基类,设计上并不是真正的POJO

struts2核心控制器是FilterDispatcher,Struts 2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。而Struts 2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求。显然,上面的处理过程是典型的AOP(面向切面编程)处理方式。

 

Struts2的工作机制:

         web容器收到一个请求时,被过滤器strutsPreparedAndExecuteFilter拦截。

接着调用FilterDispatcherFilterDispatcher调用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作用:ActionProxyXWork和真正的Action之间的Action充当代理,在执行Action的过程中,因为使用代理而非直接操作对象,所以可以在Action执行前后执行额外的操作。

ActionProxy创建了ActionInvocation对象。

4.       ActionInvocation作用:ActionInvocation表示Action的执行状态,它保存拦截器(按配置顺序),Action实例。ActionInvocationActionProxy创建,通过调用invoke()方法开始Action的执行,执行的顺序为按配置顺序执行拦截器,拦截器执行完毕后执行ActionAction执行结束后返回结果字符串,匹配对应的Result后,在一次执行拦截器。

 

工作机制是IOC  IOC是思想、依赖注入(DI)是实现。
1.使用IOC最大程度的对对象的依赖关系解耦
2.
使用AOP解除了模块或组件之间的耦合
3.
简化其他框架的代码
4.
是框架之间的润滑剂和粘合剂
5.spring
是无侵入的设计。在代码中感觉不到它的存在
6.spring
是无依赖式的设计。spring不依赖任何框架,而且本身也无依赖.

 

自己口述:Spring最重要的两个功能就是IOCAOP
IOC
又叫依赖注入。
IOC
的功能就是把用户管理的对象交给IOC容量,从而不用用户自己来管理这个对象。
AOP
又叫面向切面编程,AOP的功能有以下(把我知道的都写下来):绕环通知,后置通知,前置通知,好像是这三种吧。只要意思是说:当你在执行某个方法事的前调用你指定你要通知。从而达到一种模块扩充的功能

 

Aopoop的一个横向服务,是对oop(面向对象编程(Object Oriented ProgrammingOOP,面向对象程序设计))进一步补充,提高安全、事务、日志等的集中式处理。相关的装备 beforearoundafter

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 DAOJDBC提供了支持,简化了JDBC编码,同事使代码更健壮。

         Spring ORM部分对HibernateOR映射框架提供了支持。

         Spring Context为企业级开发提供了便利和集成的工具。

 

         定时器jar包:quartz-1.6.2.jar

         发送电子邮件jar包:activation.jarmail.jar

调用webservice接口的jar包:wsdl4j.jar

 

Spring框架的bean生命周期

 

spring2.0之前bean只有2种作用域即:singleton(单例)non-singleton(也称prototype),Spring2.0以后,增加了sessionrequestglobal 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.

详细介绍:

1singleton作用域

当一个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时候,springIOC容器中只会存在一个该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
sessionglobal session使用的时候,首先要在初始化webweb.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作用域,不过它仅仅在基于portletweb应用中才有意义。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时,scopeStruts1.X有什么区别?

        2.0中,基本上,actionscope需要是prototype,就是每次请求都建立新的线程
不写的话,默认是singleton;prototypestruts2的默认用法是将页面传来的参数放到action的属性里,导致了一个action必须为一个请求独有,否则就产生线程不安全; struts1.x默认是单实例(singleton),就是你每次请求都是由同一个action来处理。所以struts1.x默认指定,就存在并发问题。而strust2.x默认是多实例(prototype),每个请求都会产生相应的action实例去处理,这就避免并发问题。

 

 ActionContextCleanUp作用:延长action中属性的生命周期,包括自定义属性,以便在jsp页面中进行访问,让actionContextcleanup过滤器来清除属性,不让action自己清除

 

FilterDispatcherstruts2.0.x2.1.2版本的核心过滤器.
StrutsPrepareAndExecuteFilter是自2.1.3开始就替代FilterDispatcher.

StrutsPrepareAndExecuteFilterStrutsPrepareFilterStrutsExecuteFilter的组合,那什么时候用StrutsPrepareFilterStrutsExecuteFilter的组合来替代StrutsPrepareAndExecuteFilter呢?下面会讲到。

这样的改革当然是有好处的.
为什么这么说.?应该知道如果我们自己定义过滤器的话,是要放在strtus2的过滤器之前的,如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html! 
那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事,FilterDispatcher是做不到的.! 
那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilterStrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.! 
给你打个比喻,现在有病人要做手术,现在struts2要做两件事,搭病床(环境),执行手术.!那么打麻药的工作呢.?不可能要病人站着打吧,所以必须有病床的环境,打完麻药之后再动手术.!这个比喻非常形象了.!

 

ActionContextCleanUp也是自2.1.3开始由StrutsPrepareFilterStrutsExecuteFilter的组合替代。

 

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,执行删除操作时级联。现在只要我们删除区县记录就可以自动删除关联的街道记录了。

 

 

Ibatissql左右链接和子查询

 

Jquery实现的ajax效果

Db2

  IBM开发出来的关系型数据库

Ajax

Jquery

//Ejb

JSONs

熟悉常见的面向对象设计模式如Factory,Singleton, MVC

oraclemysqlsqlserver区别

设计模式

  工厂模式 mvc模式单态模式

如何实现数据的传递

         先双方预先设置密钥,使用MD5加密,在通过socket建立通信,使用字符流发送和接收数据

多线程

soap OO/SOA设计思想

weblogic如何部署、连接数据库

JVM原理

tcp/ip协议

7应用层 ------------------------- |                 
6 表示层                                |对应的是UDPTCP
5 会话层
                                |
       4
传输层---------------------------|
3 网络层---------------------------------------------对应的是
IP
2 数据链路层
---------|
1 物理层---------------|对应的是以太网

UML建模

         使用PowerDesigner

Sql语句的强化

Linux:

  ·       使用 SecureCRT终端模拟器;工具;软件

 

查看当前用户名:who a miid

查看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

  这条命令是更新原来tarall.tarlogo.gif文件,-u是表示更新文件的意思。

 

# tar -tf all.tar

  这条命令是列出all.tar包中所有文件,-t是列出文件的意思

# tar -xf all.tar

  这条命令是解出all.tar包中所有文件,-t是解开的意思

 

 

登录203,使用ftp14上,文件在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 --helpdfman手册

 用法: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,以后有时间再补上。