摘要:
Java阻塞队列 一、阻塞队列 1. 为什么要用阻塞队列? 在多线程领域,所谓阻塞,是指在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤醒。 使用阻塞队列能够简化多线程编程,提升程序的性能和可靠性,适应各种并发场景,是实现生产者-消费者模型等常见并发模式的重要工具。它能够有效 阅读全文
摘要:
ThreadLocal的使用以及原理 概要 ThreadLocal 是 java 提供的一个方便对象在本线程内不同方法中进行传递和获取的类。用它定义的变量,仅在本线程中可见和维护,不受其他线程的影响,与其他线程相互隔离。 一、ThreadLocal能解决什么问题? 当涉及一个对象需要在很多不同方法之 阅读全文
摘要:
String、StringBuffer和StringBuilder的区别 下面从可变性、是否线程安全等方面来对String、StringBuffer、StringBuilder进行比较。 一、可变性 1. String String 类中使用 final 关键字修饰字符数组来保存字符串。 publi 阅读全文
摘要:
JVM的垃圾收集器 概要 垃圾收集算法就像是 Java 中的接口一样,而垃圾收集器是接口的具体实现。所以,不同的厂商,不同版本的虚拟机实现的方式都有所不同。甚至是很大的差别。 首先,了解下 HotSpot虚拟机中 9款垃圾回收器的发布时间及其对应的 JDK版本,如下图: 接着,了解下 CMS和G1这 阅读全文
摘要:
Java中线程安全的数据结构 Java 提供了多种线程安全的工具类,主要可以分为以下几类: 一、Java Collections Framework 中的线程安全集合 1. Vector Vector是一个动态数组,支持同步操作,线程安全。使用 synchronized 来保证线程安全,效率非常低下 阅读全文
摘要:
AQS实现原理 概要 在并发编程中,锁是一种常用的保证线程安全的方法。Java 中常用的锁主要有两类,一种是 Synchronized 修饰的锁,被称为 Java 内置锁或监视器锁。另一种就是在 JDK1.5版本之后的juc(java.util.concurrent) 包中的各类同步器。这些同步器都 阅读全文
摘要:
TCP和UDP的报文格式 概要 了解TCP和UDP的报文格式对于网络通信、系统设计、故障排查和安全性等多个方面都非常重要。 一、TCP 报文格式(Transmission Control Protocol) TCP是面向连接、可靠的传输协议,其报文格式较复杂。TCP报文的格式如下: 上图简化如下: 阅读全文
摘要:
排序算法 - 快速排序 概要 快速排序(Quicksort)是对冒泡排序算法的一种改进。快速排序是一种基于分而治之的排序算法。 它的基本思想是: 选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快 阅读全文
摘要:
RESTful API介绍 概要 在传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,现在我们必须考虑,如何开发在互联网环境中使用的软件。 一、理解RESTful架构 RESTful架构是目前最流行的一种互联 阅读全文
摘要:
MyBatis 原理 概要 MyBatis 是一个持久层框架,用于将对象与数据库中的记录进行映射。它通过 XML 或注解的方式定义 SQL 语句并将结果映射到 Java 对象。 一、 MyBatis 原理 1. 配置 MyBatis 通过 SqlSessionFactory 加载配置文件(mybat 阅读全文