摘要:
前言 理解HashMap和ConcurrentHashMap的重点在于: (1)理解HashMap的数据结构的设计和实现思路 (2)在(1)的基础上,理解ConcurrentHashMap的并发安全的设计和实现思路 前面的文章已经介绍过Map结构的底层实现,这里我们重点放在其扩容方法, 这里分别对J 阅读全文
摘要:
什么是MyBatis? MyBatis是一个Java持久化框架,它通过使用简单的XML或注解来简化关系型数据库的访问。它提供了灵活的SQL映射和数据库操作的功能,使得开发人员可以更轻松地处理数据库交互。 MyBatis与其他ORM框架的主要区别在于,它采用了更为传统的数据库访问方式,即SQL层与持久 阅读全文
摘要:
引入 Servlet的生存时间是由init,service,destory方法构成,这里分析一下service这个方法 Servlet接口中定义了一个service()方法,而我们一般是使用HttpServlet,HttpServlet中对它进行了实现,将ServletRequest和Servlet 阅读全文
摘要:
使用分布式锁要满足的几个条件 1.系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现)2.共享资源(各个系统访问同一个资源,资源的载体可能是传统关系型数据库或者NoSQL)3.同步访问(即有很多个进程同事访问同一个共享资源。没有同步访 阅读全文
摘要:
可重入锁,从字面来理解,就是可以重复进入的锁。 可重入锁,也叫做递归锁,指的是同一线程外层函数获得锁之后,内层递归函数仍然有获取该锁的代码,但不受影响。 在JAVA环境下ReentrantLock和synchronized都是可重入锁。 synchronized是一个可重入锁。在一个类中,如果syn 阅读全文
摘要:
一、等待多线程完成的CountDownLatch 需求场景:当我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用多线程,每个线程解析一个sheet里的数据,等到sheet都解析完之后,程序需要提示解析完成。 当然我们可以使用join方法,join用于让当前线程等待join线程执行结束 阅读全文
摘要:
一、简介 在本文中,我们将了解 Netty——一个异步事件驱动的网络应用程序框架。 Netty的主要目的是构建基于NIO(或者可能是NIO.2)的高性能协议服务器,网络和业务逻辑组件分离且松散耦合。它可能实现众所周知的协议,例如 HTTP,或您自己的特定协议。 2. 核心概念 Netty 是一个非阻 阅读全文
摘要:
zookeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户 Zookeeper 阅读全文