Java基础
文章平均质量分 84
langwuzhe
当欲望变成了梦魇,无能为力的我还能做些什么。。。
展开
-
ConcurrentHashMap源码分析_1.8
1.重要成员变量table:默认为null,初始化发生在第一次put操作,默认大小为16的数组,用来存储Node节点数据,扩容时大小总是2的幂次方。sizeCtl:默认为0,用来控制table的初始化和扩容操作 -1 代表table正在初始化 -N 表示有N-1个线程正在进行扩容操作原创 2021-06-07 11:12:29 · 161 阅读 · 0 评论 -
hashmap 源码分析_1.8
一、属性(n - 1) & hash == hash%n/** 1. 容量(capacity): HashMap中数组的长度 容量范围:必须是2的幂,最大容量:2的30次方 */ //默认容量 = 16 = 1<<4 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //最大容量 = 2的30次方(若传入的容量过大,将被最大值替换)static final int MAXIMUM_CAP原创 2021-06-07 11:10:32 · 414 阅读 · 1 评论 -
ReentrantLock、AQS 源码分析
如果 把ReentrantLock比做一个人的话,那么 AQS 就是他的灵魂。离开 AQS 谈论锁都是耍流氓ReentrantLock and AQS一.AQS使用方式和其中的设计模式二.重要参数三.了解其中的方法1.模板方法: 独占式获取 共享式获取 独占式释放锁 共享式释放锁2.需要子类覆盖的流程方法3.同步状态state:三、源码1.lock实现类源码:ReentrantLock 为例AbstractQueuedSynchronizer 源码如下为 addWaiter 方法 这原创 2020-09-24 16:47:09 · 628 阅读 · 1 评论 -
JAVA 中可重入锁的理解
感谢『石头StoneWang』对可重入锁的一句深入灵魂的总结:可重入就是说某个线程已经获得某个锁,可以再次获取这把锁而不会出现死锁。1.可重入锁synchronizedReentrantLock可重入锁的两个特性:当一个线程 A获得锁后,那么线程A在没有释放当前锁时可以再次获得这个锁而其他线程是不可以获得这个锁的。只有在这个线程 A 释放了当前锁后,其他线程才可以获得这个锁。1.1 synchronized可重入锁的特性:public class SynchronizedLockTe原创 2020-09-12 23:24:40 · 535 阅读 · 0 评论 -
sleep()与wait()区别
1.sleep()是线程线程类(Thread)的静态方法。 wait()方法是Object类里的方法。 2. sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行 的机会;当一个线程执行到wait()方法时,它就进入到一个和该对象相关的等待池中,同时失去(释放)了对象的机锁(暂时...原创 2018-09-14 11:00:36 · 205 阅读 · 0 评论 -
websocket简介
在我们做web项目的过程中,经常需要做的一个模块是消息模块。典型的场景:一个商城系统的后台管理,我想实现如果前台有客户下单,后台就会接到消息,以便尽快发货处理。要实现上述的功能,我们有几种备选的方案。方案1.使用ajax短轮询,比如每隔1分钟去请求一次服务器,让服务器去数据库去查询,看看有无新的未处理的订单,然后返回给客户端。方案2.长轮询,长轮询的原理与上述类似,只不过采取了阻塞响应(respo...转载 2018-03-27 09:08:31 · 397 阅读 · 0 评论 -
java中websocket的应用
转自:https://www.cnblogs.com/roy-blog/p/7211761.htmljava中websocket的应用在上一篇文章中,笔者简要介绍了websocket的应用场景及优点,点这里这篇文章主要来介绍一下在java项目中,特别是java web项目中websocket的应用。场景:我做了一个商城系统,跟大多数商城系统,分为客户端和后台,客户端供客户浏览,下单,购买,后台主要...转载 2018-03-27 09:07:40 · 1104 阅读 · 0 评论 -
面试时java集合中的一些要点
一、概览 1.先来一张疯狂java的图 2.再来一张带注释的 3.再来一张接口图二、Interator 描述:iterator必须依附于collection对象,iterator本身并不提供盛装对象的能力,如果需要需要创建iterator对象,必须有一个被迭代的集合 1.主要有三个方法 boolean hasNext():如果被迭代的集合元素还没有被遍历...原创 2018-02-25 22:02:55 · 288 阅读 · 0 评论 -
关于 idea 部署运行异常,但是访问页面404的 坑爹bug
环境:win10 、IntelliJ IDEA 2016.2.4 、 jdk1.8 、 tomcat8 框架 spring+mybatis+maven在练习中,搭了一个项目。因为开始使用的jdk1.8 由于种种原因想用 jdk1.7去编译一下项目,从此便掉入了一个坑爹的坑中,事情是这样的:1.在pom.xml文件中我做了 如下配置xmlns="http://maven.a原创 2017-12-13 17:33:35 · 2595 阅读 · 3 评论 -
Java 里如何实现线程间通信?
转载:http://wingjay.com/2017/04/09/Java%E9%87%8C%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%BA%BF%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1%EF%BC%9F/正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及转载 2017-10-10 11:08:56 · 364 阅读 · 0 评论 -
java 重定向和转发的区别
Java转发重定向转载 2016-05-11 14:32:03 · 311 阅读 · 2 评论