星空

人生不仅有眼前的苟且,还有诗和远方.

0%

HashMap的初始化过程

HashMap的初始化有两种方法:

  1. 直接使用HashMap的无参构造方法,此时初始化的容量为:DEFAULT_LOAD_FACTOR 也就是16

    1
    2
    3
    4
    5
    6
    7
    /**
    * Constructs an empty <tt>HashMap</tt> with the default initial capacity
    * (16) and the default load factor (0.75).
    */
    public HashMap() {
    this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted
    }
  2. 传入容量参数的有参构造方法,此时的初始化容量需要进行计算

1
2
3
4
5
6
7
8
9
10
/**
* Constructs an empty <tt>HashMap</tt> with the specified initial
* capacity and the default load factor (0.75).
*
* @param initialCapacity the initial capacity.
* @throws IllegalArgumentException if the initial capacity is negative.
*/
public HashMap(int initialCapacity) {
this(initialCapacity, DEFAULT_LOAD_FACTOR);
}
阅读全文 »

HashMap的组成

HashMap的内部实现是一个数组,但是它是一个特殊的数组。如下图所示:
HashMap数据结构

HashMap的内部结构

HashMap是一个特殊的数组实现,它的数据插入并不是按照顺序逐个写入的,而是按照一种特定算法来确定写入的位置,

阅读全文 »


为了网站快速响应,经常需要将前端页面放在cdn上,此时就需要后端服务支持跨域访问,所以

记录一下在tengine上的配置,用于集中管理多个服务和支持服务的跨域访问设置。关于nginx的安装可以参照 https://blog.bosong.online/2018/10/14/69BBBB0AC794451BBEDBA9211FD7F4B1

第一步 将配置文件进行分离

使用vi nginx.conf编辑nginx的配置文件,改成如下配置

阅读全文 »

起因

上周五新建了一个项目,在开发完成后,和运维沟通准备上到生产环境中,套用了现有服务的通用启动命名行:

1
java -jar Xms3072m -Xmx8192m app.jar & 2>1

然后一切准备就绪,jenkins打包一切顺利,然后顺利部署到生产环境,由于前端项目暂未部署,k8s使用的内网集群通信,暂时没有办法调用接口进行服务部署成功验证,但是在测试环境进行了充分测试,一切OK 。

阅读全文 »

开篇

异常是因为异常在我们的代码开发中是无法避免的一个问题,也是最常见到的问题,简单了解一下异常的组成,对Java的异常有一个初步的了解,最重要的是在实践中遵守几个处理异常的原则,尽量减少处理异常过多而带来的资源消耗和减少因为异常处理不当引起的生产事故。

Exception与Error的区别

阅读全文 »