2020年 12月 16日 - 序列化

    序列化

    Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。

    简单的说,序列化是将运行时的内存数据,转换为可持久的硬盘数据(字节码),反序列化就是读取数据到内存.

    java中的默认实现是通过ObjectInputStreamObjectOutputStream.

    如果类实现了writeObjectreadObject则调用,否则通过ObjectInputStreamObjectOutputStreamdefaultWriteObjectdefaultReadObject来实现.

    类本身实现的writeObjectreadObject可以用来对敏感信息进行加密解密.

    ObjectOutputStream序列化对象:

    public final void writeObject(Object x) throws IOException
    

    ObjectInputStream反序列化对象:

    public final Object readObject() throws IOException, ClassNotFoundException
    

    2020年 12月 15日 - 租房

    租房合同

    1. 居间合同

      又称”中介服务合同”,是指居间人根据委托人的要求为委托人与第三人订立合同提供机会或进行介绍,而委托人须向居间人给付约定报酬的协议 租房中一般个人较多,实际基本上相当于与房东直签合同,需要付中介费或向房东单向收费.

    2. 三方合同

      三方合同是指甲方、乙方、丙方在一份合同上签字认可,其中一方为见证方或中介方。 租房大多数为房屋托管到中介,中介按月付给房东.

    3. 双方合同

      除了与房东直签的合同(甲乙双方为房东跟租客),还存在代理租赁的形式,即中介公司作为房东的代理人进行出租.

    除了居间合同与房东直签的,很大情况下合同期满需要额外支付中介费.

    2020年 12月 08日 - 泛型

    java中的泛型

    泛型是jdk1.5引入的特性,本质是参数化类型,可以很好的降低代码重复度,安全又简单.

    泛型解决了编码过程中需要显式强制转换的情况,可以在编译期间进行类型检查,通过自动且隐式的强制转换,降低代码复杂度.

    泛型的实现原理:类型擦除.编译时会将泛型擦除,使用其限定类型(未限定的则用Object)的第一个边界类型代替(如T extends Comparable & Serializable则会是Comparable).

    基本语法:泛型类在类名后,泛型方法/接口在返回值前通过尖括号标记

    2020年 12月 07日 - 线程wait与notify的使用

    线程wait与notify的使用

    1. wait 释放当前锁,让出cpu资源,使当前线程等待.使用场景为先通过synchronized获取锁之后,在该同步代码块中使用wait()方法.
    2. notify与notifyAll 在一个同步代码段中唤醒一个或多个处于等待的线程,在同步代码结束或遇到wait()释放当前锁

      区别:

       notify: 唤醒一个等待的线程,若存在多个则取决于操作系统的多线程管理(会唤醒其中一个)
      	
       notifyAll: 唤醒所有的等待线程,优先级同样取决于操作系统
      
    3. 当线程被唤醒时,wait()方法之后的逻辑继续开始执行

    4. 若未加锁进行wait()notify()/notifyAll()的调用,会抛出IllegalMonitorStateException

    2020年 07月 24日 - mysql查看所有表名与字段名

    mysql查看所有表名与字段名

    @的为变量

    -- 查询数据库中所有表名
    select table_name from information_schema.tables where table_schema='@dbname' and table_type='base table';
    -- 查询指定数据库中指定表的所有字段名column_name
    select column_name from information_schema.columns where table_schema='@dbname' and table_name='@tableName'