Java-Note-派生类构造器无法捕获它的基类构造器所抛出的异常

  • 原因: When you throw an exception, the compiler creates no object. This is why a derived-class constructor cannot catch a base-class constructor exception: it can't "recover" from the exception failure, since there's no base-class sub-object.

Oracle-Note-ORA01653-无法扩展表空间

  • 产生原因:
    1. 表空间确实不够用, 已经达到自动扩展上限
    2. 表空间的自动扩展功能没有打开
  • 查看方法:

    1
    2
    3
    4
    SELECT T.TABLESPACE_NAME,D.FILE_NAME,D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUS
    FROM DBA_TABLESPACES T,DBA_DATA_FILES D
    WHERE T.TABLESPACE_NAME =D.TABLESPACE_NAME
    ORDER BY TABLESPACE_NAME,FILE_NAME;
  • 解决方法:

    1. 增加数据文件
      ALTER TABLESPACE '表空间名' DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFILE\TRD_2.DBF' SIZE 1024M;

    2. 增加数据文件并允许自动增长
      ALTER TABLESPACE '表空间名' ADD DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFILE\TRD_2.DBF' SIZE 1024M AUTOEXTEND ON NEXT 8M MAXSIZE 10240M;

    3. 允许已存在的数据文件自动增长
      ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFILE\TRD.DBF' AUTOEXTEND ON NEXT 8M MAXSIZE 10240M;

    4. 手工改变已存在数据文件的大小
      ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFILE\TRD.DBF' RESIZE 10240M;

Oracle-Note-beigin和end

  • 在Java中使用多条oracle语句时, 需要在前后分别加上begin/end, 如果不加, 会报错
  • 在数据库管理软件的控制台中执行多条语句时, 无需添加begin/end

Java-Note-excel文件格式错误

  • 问题: 使用workbook.write(outputStream)下载的xsl文件报错: 文件格式无效
  • 原因: 在设置response的header时, 把Content-Length设置为了初始文件的大小, 实际上在对初始文件进行操作后, 其大小发生了改变, 而且使用workbook.write(outputStream)进行下载不需要设置Content-Length
Read More

Interview-阿里面试准备

-

Java-Note-按值传递和按引用传递

  • 程序设计语言中有关参数传递给方法的两种方式
    • 按值传递(call by value)
    • 按引用传递(call by reference): 传递的是指针, 其指向的内存地址可以被改变
  • 宗旨: Java的参数传递只有按值传递, 没有按引用传递
Read More

Algorithms-Note-空间换取时间

  • 当计算机进行重复性运算的时候,

Java-Note-操作符的左优先和右优先

Java-Note-getWriter和getOutputStream

  • getWriter()返回一个可以发送文本类型信息到客户端的PrintWriter对象
  • getOutputStream()返回一个发送字节类型信息到客户端的OutputStream对象
Read More

Java-Note-Protected修饰符深入了解

  • Thinking in Java中, protected的定义是: protected必须有继承关系才能访问. 但这句话到底是什么意思呢?
  • 首先弄清楚继承protected和访问protected的范围的区别

    • 继承protected: 可以在任意位置(包内或包外)继承基类的protected方法
    • 访问protected: 可以在:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      package baseClassInvokeTest;

      /**
      * @PackageName: baseClassInvokeTest
      * @Auther: zoutairan
      * @Description:
      * @Date: Created in 11:19 2018/5/17
      * @Modified By:
      */
      public class Base {
      protected void baseTest() {
      System.out.println("base");
      }
      }
    • 同一个包内任何类访问基类的protected方法

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      package baseClassInvokeTest;

      import baseClassInvokeTest.Base;

      /**
      * @PackageName: baseClassInvokeTest
      * @Auther: zoutairan
      * @Description:
      * @Date: Created in 11:20 2018/5/17
      * @Modified By:
      */
      public class Test {
      public static void main(String[] args) {
      Base base = new Base();
      base.baseTest();
      }
      }
    • 不同包中子类可通过子类对象访问基类的protected方法

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      import baseClassInvokeTest.Base;

      /**
      * @PackageName: baseClassInvokeTest
      * @Auther: zoutairan
      * @Description:
      * @Date: Created in 11:19 2018/5/17
      * @Modified By:
      */
      public class Sub extends Base {

      public void test() {
      Sub sub = new Sub();
      sub.baseTest();

      }
      }
    • 不同包中子类不可以创建基类对象访问基类的protected方法

    • 不同包中子类不可以创建另一个子类对象访问基类的protected方法
    • protected类的构造器默认也是protected的
  • 总结: 只能在包内或者该导出类访问基类的protected方法