• CountDownLatch&Semaphore

    SemaphoreSemaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目,底层依赖AQS的状态State,是在生产当中比较常用的一个工具类。 使用 Semaphore构造方法12public Semaphore(int ...
  • 阻塞队列BlokingQueue

    什么是阻塞队列阻塞队列(BlockingQueue)是java.util.concurrent包提供的用于解决并发生产者—消费者问题最有用的类,它的特性是在任意时刻只有一个线程可以对队列进行出队和入队操作。 并且阻塞队列提供了超时返回null的机...
  • AQS源码与Lock

    什么是AQSJava并发编程核心在于java.concurrent.util包,而juc当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这个行为的抽象就是基于AbstractQueuedSynchr...
  • synchronized详解

    同步器多线程编程中,可能出现多个线程同时访问同一个共享,可变资源的情况,这个资源我们称之为临界资源。 共享:资源可以由多个线程同时访问 可变:资源可以在其生命周期内被修改 由此,我们可以引出一个问题: 由于线程执行的过程是不可控的,所以需...
  • 并发编程及volatile详解

    JMM模型JMM模型的理解: Java内存模型(Java Memory Model简称JMM)是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。 J...
  • JVM垃圾收集器

    垃圾收集算法java的特点之一,垃圾收集。 垃圾收集有四种算法,分别是标记清楚、标记整理、复制、分代收集。 总的来说分代收集其实就是老年代和新生代用不同的垃圾收集算法而已。 比如新生代中,每次收集都会有大量对象死去,所以可以选择复制算法,只需要付...
  • JVM性能调优

    类加载机制Java底层代码执行是需要类加载器 当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM。 通过Java命令执行代码的大体流程如下: 其中引导类加载器获得其他的类加载器。再使用其他的类加载器来...
  • MySql锁与事务

    锁定义锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外, 数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性 是所有数据库必须解决的一个问题...
  • 性能调优-Mysql

    索引 Mysql索引数据结构索引结构一般的索引结构开始被认为是 二叉树 红黑树 Hash表 B-Tree 二叉树二叉树一般用平衡二叉树作为索引结点,但是可能出现这样的情况 这样磁盘IO的次数在大量数据的情况下会很多。显而易见不是很好 红黑树...
  • SpringMvc

    1、什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。 是将业务逻辑、数据、显示分离的方法来组织代码。 MVC主要作用是降低了视图与业务逻辑间的双向偶合。 MVC不是一种设计模式...