idea java 目录自动变为resources_JAVA面试锦囊(十)

这篇博客探讨了MySQL中varchar与char的区别,解释了varchar(50)的含义,并讨论了MySQL设计的理由。接着,文章深入讲解了ArrayList在Java中的扩容机制,包括何时扩容和如何扩容。最后,介绍了Maven的三个生命周期:clean、default和site,详细阐述了每个生命周期的主要阶段及其作用。
摘要由CSDN通过智能技术生成

● MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义?

(1)varchar与char的区别

char是一种固定长度的类型,varchar则是一种可变长度的类型

(2)varchar(50)中50的涵义

最多存放50个字符,varchar(50)和(100)存储hello字符串所占用的空间一样,但后者在排序时会消耗更多内存。

(3)mysql为什么这么设计对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1)和int(20)存储和计算均一样;

● ArrayList扩容机制

发生扩容的条件:

ArrayList其实底层就是一个数组的数据结构,根据传入的最小需要容量minCapacity属性来和数组的容量长度对比,若minCapactity大于或等于数组容量,则需要进行扩容。(如果实际存储数组是空数组,则最小需要容量就是默认容量)

实现扩容:

jdk7中采用>>位运算,右移动一位。容量相当于扩大了1.5倍;

举例说明:添加20个元素到ArrayList中

当第一次插入元素时才分配10(默认)个对象空间。之后扩容会按照1.5倍增长。

也就是当添加第11个数据的时候,Arraylist继续扩容变为10*1.5=15;但是此时扩容的是数组的大小,扩容完之后,ArrayList会调用一个copy方法对原有的数组进行复制,会删除原有的数组。当添加第16个数据时,继续扩容变为15 * 1.5 =22个,同样的道理会把原有的数组进行复制再删除,直到20个元素全部添加完。

● Maven的生命周期?

maven有三套生命周期,分别为:

1、clean 周期:主要用于清理上一次构建产生的文件,可以理解为删除target目录下的文件

2、默认周期

主要阶段包含:

process-resources 默认处理src/test/resources/下的文件,将其输出到测试的classpath目录中,

compile 编译src/main/java下的java文件,产生对应的class

process-test-resources 默认处理src/test/resources/下的文件,将其输出到测试的classpath目录中,

test-compile 编译src/test/java下的java文件,产生对应的class

test 运行测试用例,

package 打包构件,即生成对应的jar, war等,

install将构件部署到本地仓库,或者说部署到maven所依赖的repository

deploy 部署构件到远程仓库

3、site周期

主要阶段包含

site 产生项目的站点文档

site-deploy 将项目的站点文档部署到服务器

498fc9b62925339c8d45921bbd8a39ba.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值