- 博客(7)
- 问答 (3)
- 收藏
- 关注
原创 《Java高并发编程详解》读书笔记(五)——Java ClassLoader
1、类的加载过程 类的加载过程分为三大阶段,分别是加载阶段、连接阶段和初始化阶段,连接阶段又可分为验证、准备、解析三个阶段,如下图所示。 每个阶段做了什么 加载阶段:查找并加载类的二进制数据文件,也就是.将class文件中的二进制数据读取到内存中。最终产物是堆内存中的class对象。 连接阶段 验证:确保类文件符合当前JVM的规范,如class的版本。 准备:为类的静态变量分配内存,并为其初始化默认值(不同于初始化阶段)。 解析:把类中的符号引用转换为直接引用。 初始化阶段:为类的静态变量赋予正确
2020-08-07 13:12:56 138 1
原创 谈谈数据库索引
1、索引是什么? 索引是一个单独的、存储在磁盘上的数据库结构,他们包含对数据库里所有记录的引用指针。或者索引是对数据库表中一列或多列的值进行排序的一种结构。 索引的作用:提高数据库查询的效率。 2、索引有哪些数据结构 索引支持Hash和B+Tree结构 Hash -可以快速的精确查询,但是不支持范围查询。所以hash索引适用于等值查询的场景,也就是只有KV(Key,Value)的情况,例如Redis、Memcached等这些NoSQL的中间件。 B+tree 支持范围查询 (虽然二叉树也支持范围查询,但
2020-07-28 20:00:06 145
原创 mysql(深入浅出mysql)读书笔记(一)-数据库的基本操作
1、mysql -uroot -p 连接数据库服务,mysql表示客户端命令,-u后面跟连接的数据库用户,-p表示需要输入密码。 数据库操作相关 1、create database dbname;创建数据库 2、show databases:查看系统中所有的数据库 3、use dbname;选择要操作的数据库 4、drop database dbname;删除数据库 表操作相关 1、create table tablename(name1 type1 constraints,name2 type2 cons
2020-07-21 01:06:27 112
原创 《Java高并发编程详解》读书笔记(三)——线程通信
1、同步/异步,阻塞/非阻塞 2、线程间的通信 wait与notify wait与sleep notifyAll
2020-07-16 10:32:43 133
原创 《Java高并发编程详解》读书笔记(二)——线程安全与数据同步
1、通过java内存模型解释线程的安全与数据同步问题 java内存模型定义了线程和主内存之间的抽象关系: 共享变量存储于主内存中,每个线程都能访问 每个线程都有私有的工作内存,用于存储共享变量的副本 线程不能直接操作主内存,只有先操作了工作内存才能写入主内存 假设主内存中共享变量为0,线程1和线程2分别拥有共享变量x的副本。假设线程此时将工作内存中的x修改为1,同时刷新到主内存中。当线程2想用副本x的时候,就会发现该变量已经失效了(就是内存不可见问题),必须到主内存中再次获取然后存入自己的工作内存中。
2020-07-14 16:35:51 278 2
原创 《Java高并发编程详解》读书笔记(一)--第一、二、三章节—认识线程
第一、二、三章节—认识线程 1、何为线程 谈到线程一定离不开进程。 进程是操作系统进行资源分配的基本单位,线程是CPU调度和分派的基本单位;一个进程由一个或多个线程组成,一个进程下的所有线程共享进程的内存空间;线程又被成为轻量级线程,所以线程上下文切换比进程上下文切换要快得多。 2、线程的生命周期 线程有五种基本状态。 状态 说明 新建状态(New) 当线程对象对创建后,即进入了新建状态,此时并不处于运行状态 就绪/状态(Runnable) 当调用线程对象的start()方法,线程即进入
2020-07-14 00:43:47 199
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人