简单笔记

1、类的表面类型和实际类型

实例对象有两个类型:表面类型(Apparent Type)和实际类型(ActualType),表面类型是声明时的类型,实际类型是对象产生时的类型。

静态方法不依赖实例对象,它是通过类名访问的;其次,可以通过对象访问静态方法,如果是通过对象调用静态方法,JVM 则会通过对象的表面类型查找到静态方法的入口,继而执行之。

public class StaticMethod {
public static void main(String[] args) {
Base base = new Sub();
// 调用非静态方法(如果子类覆盖了父类的方法,那么将调用实际类型,即子类的方法)
base.doAnything(); //结果,我是子类非静态方法
// 调用静态方法
base.doSomething(); //结果, 我是父类静态方法 
}
}
class Base{
// 父类静态方法
public static void doSomething(){
System.out.println(" 我是父类静态方法");
}
// 父类非静态方法
public void doAnything(){
System.out.println(" 我是父类非静态方法");
}
}
class Sub extends Base{
// 子类同名、同参数的静态方法
public static void doSomething(){
System.out.println(" 我是子类静态方法");
}
// 覆写父类的非静态方法
@Override
public void doAnything(){
System.out.println(" 我是子类非静态方法");
}
}

参考自:http://m.oschina.net/blog/187548

2、关于向上转型

在Java中,一个很重要的概念就是多态。多态在类的级别上,有两种表现方式,分别是:接口和继承。而在方法的级别上,可以有覆写、重载。

我们这里主要说的是类级别上的多态,即接口和继承。我们知道我们可以用父类的一个变量指向一个子类的对象,这样表示完全没问题。如下:

public class Parent
{
    public Parent()
    {
       System.out.println("I'm Parent!");
    }
}
public class Child extends Parent
{
   public Child()
   {
     System.out.println("I'm Child.");
   }
public void hello()
{
System.out.println("Child's Hello Method");
} } public class Test { public static void main(String args[]) { Parent obj = new Child(); //向上转型
obj.hello(); //此句报错。编译器提示:没有为类型 Parent 定义方法 hello() } }

这里将本应该由Child类型变量指向Child对象的情况改成了用父类Parent类型变量指向,这就是Java中的向上转型。

在向上转型中它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。

3、虚拟一个磁盘分区

在安装一些软件的时候,如果你的电脑里没有某一个盘可能会导致不能安装。这时你可以虚拟一个对应的磁盘分区。

在DOS下运行:

subst H: %TEMP% (这个是虚拟一个H盘)。

4、解决Oracle数据库临时表空间不足的问题

系统报错:ORA-01652: unable to extend temp segment by 128 in tablespace TEMP ORA-06512: at "BEMS.PKG_RPT_180101", line 12 ORA-06512: at line 1。

分析:从网上百度一下,或者查看一下ORACLE的联机帮助文档,很容易知道这是临时表空间不足了。

解决方案:

① 查看临时表空间使用情况

SQL> select file_name,bytes/1024/1024 "MB",autoextensible,tablespace_name from dba_temp_files;

从查询结果知道当前只有一个临时表空间,虽能是自增长的,但是已经32G了,已经达到了max size。问题已经很清楚了,考虑到正在给客户演示,要赶紧让系统恢复正常。

② 把当前的默认表空间切换到新建的表空间上

SQL> alter database default temporary tablespace temp02;

3.删除原来的临时表空间

SQL> drop tablespace temp including contents and datafiles;

4.重新创建原来的临时表空间

SQL> create temporary tablespace temp tempfile '/home/oracle/oradata/bemsdemo/temp01.dbf' size 512M autoextend on maxsize 32G;

5.把默认临时表空间切换回来

SQL> alter database default temporary tablespace temp;

5、oracle 导入dmp 报 IMP-00010:不是有效的导出文件,头部验证失败

这是由于导出的dmp文件与导入的数据库的版本不同造成的。用Notepad++查看了dmp文件,在头部具修改成你将导入目标数据库的版本号

以下对应的版本号:

  11g R2:V11.02.00

  11g R1:V11.01.00

  10g:V10.02.01

6、在Hibernate配置文件中注释打字段

第一种,在hbm配置文件中配置:

<property name="answercontent" type="org.springframework.orm.hibernate3.support.ClobStringType">  <!-- MARK -->
            <column name="ANSWERCONTENT" length="4000">
                <comment>答复内容</comment>
            </column>
</property>

第二种,使用注解方式:

@Lob
@Type(type = "org.springframework.orm.hibernate3.support.ClobStringType")
@Column(name = "DISCUSSCONTENT", columnDefinition="CLOB")

7、个人电脑存储系统设计

64G的SSD硬盘 + 500G的HDD

64G-SSD的系统盘:存放系统、各种软件的安装

50G-HDD的数据缓存盘:各种软件的缓存数据、下载数据

100G-HDD的数据存储区:存储各种个人数据。

250G-HDD的数据归档区:用于存放归档的个人数据

100G-HDD的备用数据区:用于扩展备用。

预算:64G的SSD 300 + 500GHDD 300 = 600元

8、ORACLE数据库导入的时候遇到了1658错误

用pslq导数据库,dos命令窗口,老是一闪而过,隐约看到了有错误的提示,但是dos命令窗口已经关闭了,算了,直接dos命令到数据库吧。看到了错误,“1658”。。好吧,来百度下,出来了。。说明是表空间大小不足引起,赶紧看了下相应的表空间,该死的,居然忘记设置表空间自动增长了,悲剧啊。。好吧,把需要用到的两个表空间都设置为自动增长,再来导下数据,.....OK。。。Success!搞定,下班。。走人。。

9、在JSP前台格式化日期

方式一,使用JSP标签<fmt>格式化:

<fmt:formatDate value="${tbProposal.predictStartWorkDate }" pattern="yyyy-MM-dd HH:mm:00"/>

方式二,使用Struts标签<s:date>格式化:

<s:date format="yyyy-MM-dd hh:mm:ss" name="tbPlanpermitoflanduse.permitSubmitDate"/>

tbPlanpermitoflanduse是在action有的一个对象。

 10、Oracle自定义异常

--exception一定要配合begin/end执行
begin
  name varchar(10);
  ex exception; --1.定义异常ex
  begin
     if name <> 'hr' then
        raise ex; --2.触发异常
       end if;
    exception
      when ex then  --3.处理异常
        dbms_output.put_line('发生自定义异常'); 
      when others then
        dbms_output.put_line('发生未知异常'); --处理异常
end;

就是这么简单~!

11、解决Mac上启动Tomcat一闪而过的问题

原因:可能是因为占用端口造成的。

解决办法:

1、在终端中输入:

ps -e | grep java

查找出tomcat线成的id

2726 1:48.28……(省略一长串字符)

2、使用kill命令结束此线成

kill -9 2726

3、重新启动tomcat

12、[AMAZON EC2 AWS 连接实例笔记]

飞龙 AMAZON的 PUBLIC DNS 是不是 被墙了? 刚注册了一个。 ec2-50-18-*-*.us-west-1.compute. amazonaws.com 老是ping 不通 ssh 不上去阿 帮帮忙 正在焦急等待中。

这个我不知道,你弄一个elastic ip,就是一个固定的公网ip,然后attach到你的ec2上,就可以用这个公网ip访问了。另外要注意一下你的security group要访问的端口是否打开。ec2默认是ping不通的。[自己测试后成功连上!]

13、JSP Servlet 中常用的两个 jar 包

<!-- Servlet API -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
<!-- JSP API -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
</dependency>

 

  

posted @ 2014-10-13 16:40  陈树义  阅读(244)  评论(0编辑  收藏  举报