JAVA开发零碎知识点

Mysql

1.mysql 查询数据添加序号,其中@rownum 表示的是会话变量

SELECT  @rownum := @rownum+1 AS seq, name FROM (SELECT @rownum:=0)r,t_user WHERE type = 1;

2.数据库表时间字段设置默认时间

ALTER TABLE business_notice CHANGE `update_time` `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '时间';

3.varchar(50) 指的是什么

mysql 4.0版本以下,varchar(50), 指的是50字节,如果存放utf8汉字时,只能存放16个(每个汉字3字节)

mysql 5.0版本以上,varchar(50), 指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个

4.varchar(50)  占用的存储空间(mysql 5.0版本以上)

如果是lantin1字符集时,最大空间=1N+(1 or 2)bytes,因为lantin1的1个字符占用1个字节;
如果是utf8字符集时,最大空间=3N+(1 or 3)bytes,因为utf8的1个字符占用3个字节;

(后面加的1或2bytes是用来表示字段长度的,如果超过255个字节,要2个bytes来表示字段长度)

5.char与varchar区别

char是一种固定长度的类型,无论储存的数据有多少都会固定长度,如果插入的长度小于定义长度,则可以用空格进行填充。而varchar是一种可变长度的类型,当插入的长度小于定义长度时,插入多长就存多长

扫描二维码关注公众号,回复: 13585455 查看本文章

6.varchar

1. MySQL4.1以前,VARCHAR数据类型所支持的最大长度255,5.0以上版本支持65535字节长度,utf8编码下最多支持21843个字符(不为空)。

2. 使用额外的1-2字节来存储值长度,列长度<=255使用1字节保存,其它情况使用2字节保存。例如varchar(10)会占用11字节存储空间,varchar(500)会占用502字节存储空间。

7.char 

对 char 来说,最多能存放的字符个数 255,和编码无关

8.utf8mb4与utf8

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode(utf8mb4是utf8的超集)。

JAVA基础

1. 换行符

  • Windows环境下使用显示换号符号“\r\n”
  • Unix环境下使用显示换号符号“\n”
  • 使用Java自定义的换行符号,这种方法具有良好的跨平台性,推荐使用。\\

2. @JSONFileld 

指定json串中的key值,譬如:

  //使用 com.alibaba.fastjson.JSONObject 将对象转成json字符串
  @JSONFileld(name ="RESP_MESSAGE")
  private String RESP_MESSAGE;
  tring json = JSONObject.toJSONString(obj); 

3.@JsonFormat

api层转换来自页面字符串日期入参

  //com.fasterxml.jackson.annotation.JsonFormat
  @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
  private Date startDate;

4. java 中的引用

  • 强引用
  • 软引用
  • 弱引用
  • 虚引用

多线程

1. 线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样 的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险(来源阿里规范)。

说明:Executors 各个方法的弊端:

1)newFixedThreadPool 和 newSingleThreadExecutor: 主要问题是堆积的请求处理队列可能会耗费非常大的内存,甚至 OOM。

2)newCachedThreadPool 和 newScheduledThreadPool: 主要问题是线程数最大数是 Integer.MAX_VALUE,可能会创建数量非常多的线程,甚至 OOM。

猜你喜欢

转载自blog.csdn.net/iss_jin/article/details/107346133