volatile、jvm、hashmap、http、socket

  • volatile:用于将变量标记为“储存于主内存中”。意思就是将变量储存于主内存中,而不是储存在cpu缓存中;相同的读取也是从主内存中读取,而不是从cpu缓存中读取
    • 可见性:多线程进行操作时,只要一个线程使数据发生了变化,其他线程也能看到变化
    • happens-before保证:保证所有的volatile对象读写操作都在读写之后执行,不会被jvm重排序
    • 不能确保原子性
  • http:基于tcp/ip协议的一个短连接
  • Socket:是一个抽象层;是对tcp/ip协议的一个封装,用户能通过socket直接使用tcp/ip;他处于应用层和传输层之间(http协议位于应用层,tcp位于传输层,ip位于网络层)
  • 物理层-数据链路层-网络层-传输层-会话层-表示层-应用层
  • http是无状态无连接的:
    • 无连接:tcp一次只能处理一个请求响应,想要进行持久的连接,http1.0有了一个connection Keep-Alive,向服务器请求持久连接,如果服务器允许,就会在响应报文中加上相同的字段(http1.0 所有连接都是串行的,这样就会阻塞线程;http1.1提出了Pipelining概念,客户端发起一个请求不比等待响应直接发起第二个请求,服务端按顺循执行,依次返回结果)
    • 无状态:指的是客户端每次发送的请求对于服务端来说都是一个新的请求,上一次会话和下一次会话并没有关系
    • http优点:解放了服务器,不会造成不必要的连接占用
    • http缺点:每次请求都会传输很多重复的信息
  • JVM:
    • 一个java程序对应一个jvm
    • jvm构造体系:
      • classloader类加载器
      • 执行引擎
      • 运行时方法区(方法区、堆、java栈、PC寄存器、本地方法栈)
    • 进程中堆和方法区共享,线程私有程序计数器、本地方法栈、虚拟机栈
      • 堆:主要用来存放对象
      • 栈:主要用来执行程序
      • 方法区:用于存放已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据
  • java中==的比较:
    • 基础类型比较的是他们的值
    • 对象比较的是他们的指向(内存地址)
  • java中equals的比较:
    • 如果不重写equals,比较方式与==相同
    • 重写equals,根据重写的方法进行比较;有必要一提的是,重写equals必须重写hashcode,因为有规定,如果equals返回为true的话,hashcode一定要相同;反之,hashcode相同,equasl也有可能为false
  • java8 hashmap扩容
    • hashmap默认容量为16,扩容因子0.75,阀值16*0.75=12
    • 链表转红黑树条件:
      • 链表长度大于8
      • 数组长度大于64
    • hashmap put操作:(hash(key)获取key的 hashcode ➡️判断table是否存在,如果存在,则继续执行,如果不存在,则执行resize操作➡️hash()取模运算,计算key存在table的哪个位置,如果table(I)有数据,则判断是链表还是红黑树,if tree instanceof treenode 如果是红黑树,则直接执行插入操作,如果不是红黑树,则判断链表长度是否大于8,如果是就将链表转换为红黑树,如果table(I)没有数据,则进行插入操作➡️++size ++modCount➡️在判断数组长度是否超过了阀值,如果超过了,再执行resize操作)
      • hash(key)获取table,如果table==null,则执行resize()
      • 如果table存在, 则执行取模运算,计算出key所在位置,table(i)
      • 如果table(i)存在数据,则判断是链表还是红黑树;如果是链表,则插入之后判断长度是否大于8,大于8 的话执行链表转红黑树;
      • 如果table(i)不存在数据,则执行写入操作
      • 判断数组长度是否达到阀值,如果达到了,则进行扩容resize()

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值