java类库
文章平均质量分 73
香气袭人知骤暖
但行好事,莫问前程
展开
-
Mybatis框架介绍及使用
mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。原创 2023-01-27 18:02:10 · 1438 阅读 · 0 评论 -
Spring框架介绍及使用
Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 SpringMVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架。原创 2023-01-18 17:33:08 · 1200 阅读 · 0 评论 -
到底创建了几个Session
session存在于服务端,由于http是无状态的,服务端无法区别请求由哪个客户端发送,最终还是依赖cookie(上述结论同样适用于cookie),每次发送请求携带一个JSESSIONID,即服务端获取的sessionId,唯一标识一个客户端请求。原创 2022-10-23 20:11:33 · 737 阅读 · 0 评论 -
JAVA容器系列一:ConcurrentHashMap源码解读
java.util.concurrent.ConcurrentHashMap属于JUC包下的一个集合类,可以实现线程安全。它由多个Segment组合而成。Segment本身就相当于一个HashMap对象。同HashMap一样,Segment包含一个HashEntry数组,数组中的每一个HashEntry既是一个键值对,也是一个链表的头节点。单一的Segment结构如下像这样的Segment对象,在ConcurrentHashMap集合中有多少个呢?...原创 2022-07-26 07:59:28 · 238 阅读 · 0 评论 -
JAVA容器系列一:LinkedBlockingQueue源码解读
一.概述LinkedBlockingQueue是使用两把ReentrantLock实现的,分别是takeLock(用于保证取出数据安全)、putLock(用于保证插入数据安全)。我们通过上一篇了解到ArrayBlockingQueue是用一把锁实现的,而LinkedBlockingQueue是用两把锁实现的。所以相比之下Linked会拥有更好的并发量。二.成员变量 //阻塞队列的容量 private final int capacity; //使用AtomicInteger来保证原子原创 2022-03-12 18:39:30 · 113 阅读 · 0 评论 -
JAVA容器系列一:ArrayBlockingQueue源码解读
阻塞队列(BlockingQueue)被广泛使用在“生产者-消费者”问题中,其原因是BlockingQueue提供了可阻塞的插入和可阻塞的移除方法。当队列容器满了,插入线程会被阻塞,直到队列容器空出位置。当队列容器空了,移除线程会被阻塞,直到队列容器不为空.BlockingQueue 方法以四种形式出现:第一种是抛出一个异常,第二种是返回一个特殊值(null 或 false,具体取决于操作),第三种是在操作可以成功前,无限期地阻塞当前线程,第四种是在放弃前只在给定的最大时间限制内阻塞。下表中总结了这些方法原创 2022-03-12 18:12:09 · 646 阅读 · 0 评论 -
JAVA容器系列一:CopyOnWriteArrayList源码解读
一、CopyOnWriteArrayList介绍①、CopyOnWriteArrayList,写数组的拷贝,支持高效率并发且是线程安全的,读操作无锁的ArrayList。所有可变操作都是通过对底层数组进行一次新的复制来实现。②、CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存。它不存在扩容的概念,每次写操作都要复制一个副本,在副本的基础上修改后改变Array引用。CopyOnWriteArrayList中写操作需要大面积复制数组,所以性能肯定很差。③、CopyO原创 2022-03-05 20:09:54 · 516 阅读 · 0 评论 -
JAVA容器系列一:LinkedList源码解读
LinkedList是一个实现了List接口和Deque接口的双端链表。有关索引的操作可能从链表头开始遍历到链表尾部,也可能从尾部遍历到链表头部,这取决于看索引更靠近哪一端。LinkedList不是线程安全的,如果想使LinkedList变成线程安全的,可以使用如下方式:List list=Collections.synchronizedList(new LinkedList(...));...原创 2019-04-04 11:21:26 · 415 阅读 · 0 评论 -
JAVA容器系列一:HashMap源码解读
HahsMap实现了Map接口。其继承关系如下图:HashMap有两个影响性能的重要参数:初始容量和加载因子。容量是Hash表中桶的个数,当HashMap初始化时,容量就是初始容量。加载因子是衡量hash表多满的一个指标,用来判断是否需要增加容量。当HashMap需要增加容量时,将会导致rehash操作。默认情况下,0.75的加载因子在时间和空间方面提供了很好的平衡。加载因子越大,增加了空间...原创 2019-04-04 12:31:02 · 216 阅读 · 0 评论 -
JAVA容器系列一:ArrayList源码解读
基础属性private static final int DEFAULT_CAPACITY = 10; // 初始容量10 private static final Object[] EMPTY_ELEMENTDATA = {}; // 空实例数组 // 默认大小的空实例数组,在第一次调用ensureCapacityInternal时会初始化长度为10private static ...原创 2019-04-03 21:45:28 · 273 阅读 · 0 评论