简单笔记
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:不是有效的导出文件,头部验证失败
以下对应的版本号:
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>