摸鱼证据-8月

45 阅读2分钟

1. Java double可以有多少位小数?

double小数点后15~16,能保证15位,到16位就开始暴露出数不全了。

浮点数在有效范围内,能表示的数字和不能表示的数字比起来,简直可以算是无穷小。占用64bit

Double.MAX_VALUE = 1.7976931348623157E308 Double.MIN_VALUE = 4.9E-324

float是小数点后6~7位,第六位是一定没事,但是到第七位就可能没有而给个近似值了。占用32bit

Float.MAX_VALUE = 3.4028235E38 Float.MIN_VALUE = 1.4E-45

java默认double,如果float够用,用float可以提高效率。(有的AI芯片采用8位浮点数来提升芯片工作效率)

2. 开发一个插件,统计方法执行时间

初步想的是在方法上加注解,然后就统计方法执行时间,甚至每一行花了多久。

努力中。。。

3. startPage请紧跟查询,否则拿不到total

4. sql,case when 后面必须跟else xxx and

5. Spring @Scheduled没办法指定年份

6. List.subList()方法

该方法用于截取并返回集合中的一部分,但是返回值返回的不是原本集合的类型,返回的是SubList:

private class SubList extends AbstractList<E> implements RandomAccess 
// 如果要进行下面的操作,就会ClassCastException
ArrayList<String> strings = (ArrayList<String>) list.subList(0, 2);
// instanceOf一下,结果是false。根本不是一个东西
List<String> strings1 = list.subList(0, 2);
System.out.println(strings1 instanceof ArrayList);

7. MySQL获取数据库下所有表名

SELECT
    A.TABLE_SCHEMA '数据库',
    A.TABLE_NAME '表名',
    A.TABLE_ROWS '表记录行数',
    A.CREATE_TIME '创表时间',
    A.TABLE_COMMENT '表备注'
FROM INFORMATION_SCHEMA.TABLES A
WHERE
    A.TABLE_SCHEMA = 'xxxx'

INFORMATION_SCHEMA数据库,是mysql自带的数据库,提供了访问数据库元数据的方式。

元数据包括:数据库名或者表明,列的数据类型,访问权限等

INFORMATION_SCHEMA下面有数个只读表。

8. 看数据条数一定要看count*,navicat右边显示那就根本不准。也可能是innodb的问题,总之一定要count*,只相信count*

9. @Scheduled单线程,可能会阻塞

10. dateTime比较大小,xml文件别用=‘’,否则会报错,因为他是日期类型,不可以和String比较,复制代码出现的这个问题,一时间没发现.

11. 使用mybatis时,在where中会用到 in ,不要直接in(#{})取值,不对。而是要用foreach

12. Class.forName(driver);

新版已经不需要手动加载驱动了,直接DriverMannager.getConnection();

13. 那问题来了connection.prepareStatement与Statement有什么区别?

1. prepareStatement会做预编译,而statement没有进行预处理,每次都要重新载入语句

2. prepareStatement对象中的sql语句可以包含一个或者多个参数。而且sql中还可以不写参数,用?作为占位符,执行前可以通过setint或者setstring来赋值

3. prepareStatment可以防止sql注入,AddBatch可以批量执行

这月明显没学到什么新东西,摸鱼了