- 博客(21)
- 收藏
- 关注
原创 解密JVM(一)内存结构
这里写自定义目录标题内存结构1. 程序计数器2. 虚拟机栈3. 本地方法栈4. 堆5. 方法区1. 程序计数器1.1 定义1.2 作用2. 虚拟机栈2.1 定义每个线程运行时所需要的内存,称为虚拟机栈问题辨析1. 垃圾回收是否涉及栈内存?2. 栈内存分配越大越好吗?3. 方法内的局部变量是否线程安全?如果方法内局部变量没有逃离方法的作用访问,它是线程安全的如果是局部变量引用了对象,并逃离方法的作用范围,需要考虑线程安全2.2 栈内存溢出栈帧过多导致栈内存溢出栈帧过大导致栈内存溢出2.3 线程运行诊断3. 本
2021-01-29 19:16:10 243 3
原创 深入源码,超详细解析HashMap
文章目录一、HashMap 集合简介二、HashMap 集合底层的数据结构2.1 存储数据的过程2.3 面试题三、HashMap继承关系四、HashMap 集合类的成员4.1 成员变量4.1.1 serialVersionUID4.1.2 DEFAULT_INITIAL_CAPACITY4.1.3 DEFAULT_LOAD_FACTOR4.1.4 MAXIMUM_CAPACITY4.1.5 TREEIFY_THRESHOLD4.1.6 UNTREEIFY_THRESHOLD4.1.7 MIN_TREEIFY
2021-01-27 16:49:51 199
原创 JAVA集合框架详解(二)
这里写自定义目录标题集合概述Collection集合Map集合Map集合的实现类HashMap【重点】HashMap源码分析HashSet源码分析PropertiesTreeMapTreeSet源码Collections工具类集合概述Collection集合JAVA集合框架详解(一)Map集合特点:存储一对数据(Key-Value),无序、无下标,键不可重复。方法:V put(K key,V value)//将对象存入到集合中,关联键值。key重复则覆盖原值。Object get(Obj
2021-01-26 17:33:58 222
原创 JAVA集合框架详解(一)
CSDN首页首页博客程序员学院下载论坛问答代码直播电子书hashmap会员中心收藏动态消息创作中心JAVA集合框架详解lazydog036 2020-10-31 23:00:32 67 收藏 2分类专栏: JAVA 文章标签: java hashmap 链表 集合版权文章目录集合概述Collection体系集合Collection父接口Collection子接口List集合List实现类ArrayList【重点】ArrayList源码分析Vect
2021-01-26 16:17:57 218
原创 由浅入深,全面解析ThreadLocal
文章目录ThreadLocal全面解析1. ThreadLocal介绍1.1 官方介绍1.2 基本使用1.2.1 常用方法1.2.2 使用案例1.3 ThreadLocal类与synchronized关键字1.3.1 synchronized同步方式1.3.2 ThreadLocal与synchronized的区别2. 运用场景_事务案例2.1 转账案例2.1.1 场景构建2.1.2 引入事务2.2 常规解决方案2.2.1 常规方案的实现2.2.2 常规方案的弊端2.3 ThreadLocal解决方案2.
2021-01-24 15:16:12 9233 9
原创 并发编程(十)J.U.C之 LinkedBlockingQueue 、ConcurrentLinkedQueue 、CopyOnWriteArrayList
这里写自定义目录标题3. LinkedBlockingQueue 原理3.1 基本入队出队入队出队3.2 加锁分析put 操作take 操作3.3 与ArrayBlockingQueue的性能比较4. ConcurrentLinkedQueue 原理5. CopyOnWriteArrayListget 弱一致性迭代器弱一致性3. LinkedBlockingQueue 原理 public class LinkedBlockingQueue<E> extends AbstractQueu
2021-01-23 18:57:10 1856 3
原创 并发编程(九)J.U.C 之 ConcurrentHashMap原理
文章目录1. 线程安全集合类概述1.1 线程安全集合类可以分为三大类1.2 重点2. ConcurrentHashMap2.1 使用不安全的集合类示例2.2 JDK 7 HashMap 并发死链死链复现源码分析2.3 JDK 8 ConcurrentHashMap重要方法重要属性和内部类构造器分析get 流程put流程putVal()方法initTable()方法addCount()方法size()方法 计算流程transfer()方法2.4 JDK 7 ConcurrentHashMap构造器分析put(
2021-01-23 16:49:04 345 3
原创 并发编程(八)J.U.C之读写锁、Semaphore、CountdownLatch、CyclicBarrier
文章目录1 J.U.C1.3 读写锁1. ReentrantReadWriteLock2. 应用之缓存3. 读写锁原理图解流程源码分析4. StampedLock1.4 Semaphore基本使用图解流程源码分析1.5 CountdownLatch1.6 CyclicBarri1 J.U.C1.3 读写锁1. ReentrantReadWriteLock当读操作远远高于写操作时,这时候使用读写锁让读-读可以并发,提高性能。读-写,写-写都是相互互斥的!提供一个数据容器类内部分别使用读锁保护数据的r
2021-01-22 16:55:53 256
原创 并发编程(七)J.U.C之AQS原理、ReentrantLock原理
这里写自定义目录标题8.2 J.U.C8.2.1 AQS 原理8.2.2 ReentrantLock 原理1. 非公平锁实现原理图解流程加锁源码解锁源码2. 可重入原理3. 可打断原理4. 公平锁实现原理5. 条件变量实现原理图解流程源码分析8.2.3 读写锁1. ReentrantReadWriteLock2. 应用之缓存3. 读写锁原理图解流程源码分析4. StampedLock8.2.4 Semaphore基本使用图解流程源码分析8.2.5 CountdownLatch8.2..6 CyclicBar
2021-01-21 16:32:53 276
原创 并发编程(六)共享模型之线程池
文章目录8.1 线程池8.1.1 自定义线程池8.1.2 ThreadPoolExecutor1) 线程池状态2) 构造方法3) newFixedThreadPool4) newCachedThreadPool5) newSingleThreadExecutor6) 提交任务7) 关闭线程池异步模式之工作线程8) 任务调度线程池9) 正确处理执行任务异常10) Tomcat 线程池8.1.3 Fork/Join8.1 线程池池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是
2021-01-20 21:26:08 387
原创 并发编程(五)共享模型之不可变
文章目录7. 共享模型之不可变7.1 日期转换的问题7.2 不可变设计final 的使用保护性拷贝模式之享元final的原理7.3 本章小结问题7. 共享模型之不可变7.1 日期转换的问题问题提出,下面的代码在运行时,由于 SimpleDateFormat 不是线程安全的,有很大几率出现 java.lang.NumberFormatException 或者出现不正确的日期解析结果。 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM
2021-01-20 15:25:36 271 3
原创 并发编程(四)共享模型之无锁
文章目录6. 共享模型之无锁6.1 问题提出解决思路-无锁6.2 CAS 与 volatilecasvolatile为什么无锁效率高CAS 的特点6.3原子整数6.4 原子引用ABA 问题及解决AtomicStampedReferenceAtomicMarkableReference6.5 原子数组6.6 字段更新器6.7 原子累加器累加器性能比较源码之 LongAddercas 锁原理之伪共享add 方法分析sum 方法分析6.8 Unsafe概述Unsafe CAS 操作6.9总结6. 共享模型之无锁
2021-01-19 23:59:52 2449 6
原创 并发编程(三)共享模型之内存
文章目录1. 共享模型之内存1.1 Java 内存模型1.2 可见性退不出的循环解决方法可见性 vs 原子性模式之两阶段终止模式之 Balking1.3 有序性诡异的结果volatile 原理如何保证可见性如何保证有序性double-checked locking 问题double-checked locking 解决happens-before总结习题balking 模式习题线程安全单例习题1.4本章小结1. 共享模型之内存上一章讲解的 Monitor 主要关注的是访问共享变量时,保证临界区代码的【原
2021-01-19 17:53:19 326 1
原创 并发编程(二)共享模型之管程
文章目录共享模型之管程1.1 线程出现问题的根本原因分析问题的进一步描述临界区竞态条件1.2 synchronized 解决方案synchronizedsynchronized原理synchronized 加在方法上“线程八锁”1.3 变量的线程安全分析1.3.1 成员变量和静态变量的线程安全分析1.3.2 局部变量线程安全分析线程安全的情况线程不安全的情况不安全原因分析解决方法思考 private 或 final的重要性1.3.3 常见线程安全类线程安全类方法的组合不可变类的线程安全示例分析-是否线程安
2021-01-18 15:27:23 355
原创 并发编程(一)进程与线程、Java线程
文章目录1.线程与进程1.1 进程与进程进程线程二者对比1.2 并行与并发并发并行二者对比应用同步和异步的概念1) 设计2) 结论2.java线程2.1 创建和运行线程方法一,直接使用 Thread方法二,使用 Runnable 配合 Thread小结方法三,FutureTask 配合 Thread2.2 线程运行原理虚拟机栈与栈帧线程上下文切换(Thread Context Switch)2.3 Thread的常见方法2.3.1 start 与 run调用start调用run小结2.3.2 sleep 与
2021-01-15 15:14:11 280
原创 MongoDB(六)Spring Data MongoDB
文章目录1 搭建项目环境1.1 创建项目1.2 修改POM文件添加依赖1.3 修改配置文件2 MongoTemplate的使用2.1 创建实体2.2 添加文档2.3 修改文档2.3.1 使用save修改2.3.2 使用特定运算符进行更新2.4 删除2.4.1 根据主键删除2.4.2 根据条件进行删除2.5 查询文档2.5.1 查询全部文档2.5.2 查询单个对象2.5.3 带有条件的查询多个2.5.4 根据主键进行查询2.5.5 根据字段是否为空进行查询2.5.6 根据大于并且小于查询2.5.7 根据正则查
2021-01-12 18:03:50 594
原创 MongoDB(五)集群
文章目录集群1 复制集(Replication Set)1.1 简介1.2 搭建复制集1.3 总结2 分片集群 shard cluster2.1 什么是分片2.2 各术语解释2.3 搭建分片集群集群1 复制集(Replication Set)1.1 简介MongoDB的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。建议提供仲裁节点,此节点不存储数据,作用是当主节点出现故障时,选举出某个备用节点成为主节点,保证MongoDB的正常服务。客户端只需
2021-01-11 23:49:02 417
原创 MongoDB(四)内置函数、运算符、索引
文章目录内置函数1 aggregate函数2 求和 $sum3 统计文档数量4 条件筛选5 最大值 $max6 最小值 $min7 平均值 $avg8 字符串拼接9 字符串转大写10 字符串转小写11 截取字符串12 日期格式化运算符1 加法2 减法3 乘法4 除法5 取模索引1 索引简介2 为什么使用索引3 索引管理3.1 创建索引3.2 查看索引3.3 查看索引键3.4 查看索引详情3.5 查看索引占用空间3.6 删除指定索引3.7 删除集合的索引自建索引3.8 重建索引4 索引类型4.1 单字段索引(
2021-01-11 17:09:49 2505
原创 MongoDB(三)Document操作
文章目录Document 操作1 新增文档1.1 新增单一文档1.2 批量新增文档1.3 通过变量新增文档Document 操作在MongoDB中文档是指多个键及其关联的值有序地放置在一起就是文档,其实指的就是数据,也是我们平时操作最多的部分。MongoDB中的文档的数据结构和 JSON 基本一样。所有存储在集合中的数据都是 BSON 格式。BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。1 新增文档1.1 新增单一文档insert函数语法格式
2021-01-10 13:22:13 3723
原创 MongoDB(二)用户管理和Database、Collection操作
文章目录1 介绍1.1 MongoDB与关系型数据库术语对比1.2 MongoDB与关系型数据库存储数据对比1.3 RDBMS 与 MongoDB 对应的术语1.4 MongoDB的数据类型2 用户管理2.1 MongoDB中的常用权限2.2 创建用户2.2.1 切换到admin库2.2.2 创建用户2.2.3 重启MongoDB2.2.4 登录认证2.2.5 查看用户2.2.6 更新用户2.2.7 修改用户密码2.2.8 删除用户3 Database操作3.1 创建数据库3.2 查看数据库3.3 删除数据
2021-01-08 23:43:37 525
原创 MongoDB(一)CentOS7环境下MongoDB 4.2.1安装及启动、连接
文章目录1 下载MongoDB2 安装MongoDB2.1 安装依赖2.2 解压缩2.3 创建数据存储目录2.4 创建日志存储目录2.5 bin目录3 启动与连接3.1 启动前置启动后置启动配置启动3.2 客户端访问3.3 停止MongoDB3.3.1 前置启动关闭3.3.2 使用kill命令关闭3.3.3 mongod命令关闭3.3.4 MongoDB函数关闭1 下载MongoDB下载地址:https://www.mongodb.com/download-center/community2 安装M
2021-01-08 16:16:33 778 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人