MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
AQS的核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁定状态,如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用CLH队列锁实现的,即将暂时获取不到锁的线程加入到队列中。
AQS是自旋锁:在等待唤醒的时候,经常会使用自旋(while(!cas()))的方式,不停地尝试获取锁,直到被其他线程获取成功
阻塞队列?
当阻塞队列为空时,从队列中获取元素的操作将会被阻塞,就好比餐馆休息区没人了,此时不能接纳新的顾客了。换句话,肚子为空的时候也没东西吃。
当阻塞队列满了,往队列添加元素的操作将会被阻塞,好比餐馆的休息区也挤满了,后来的顾客只能走了。
countDownLatch(相当于减法计数器,就是指一个线程必须等待一些线程执行完以后,才能够往下执行)
cyclibarrier(相当于加法计数器,就是指一个线程必须等待足够多的线程一起到达执行语句时,才能通过,否则线程会自己调用awai方法,等待线程足够多时将被唤醒)
semaphore(计数控制器)用于限制访问某些资源的线程数,有acquire获取许可和release释放线程两个方法
线程安全的类
核心线程数、最大线程数、最大空闲时间、时间单位、任务队列、线程工厂、拒绝策略
覆盖索引explain函数验证索引是否有效
explain显示了MySQL如何使用索引来处理select语句以及连接表。他可以帮助选择更好的索引和写出更优化的查询语句
有什么参数?
select_type:表示 SELECT 的类型。
table:输出结果集的表。
possible_keys:表示查询时,可能使用的索引。
key:表示实际使用的索引。
key_len:索引字段的长度。
rows:扫描行的数量。
Extra:执行情况的说明和描述。
等
JVM包含两个子系统和和两个组件,
两个子系统为类装载(Class Loader)和执行引擎(Execution engine);
两个组件为运行时数据区(Runtime data area),本地接口(Native Interface)。
类装载(Class Loader):根据给定的全限定名类名(如:java.lang.Object)来装载class 文件到 运行时数据区(Runtime data area )中的方法区(method area)
执行引擎(Execution engine):执行classes 中的指令。
本地接口(Native Interface) :与native libraries 交互,是其他编程语言交互的接口。
运行时数区域(Runtime data arae):这就是我们常说的JVM 内存
当JVM内存空间不足,JVM宁愿抛出OutOfMemoryError运行时错误(OOM),使程序异常终止,也不会靠随意回收具有强引用的“存活”对象来解决内存不足的问题
在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。

内部由数组和链表组成,非线程安全。JDK1.7和1.8的主要区别在于头插和尾插方式的修改,头插容易导致HashMap链表死循环,并且1.8之后加入红黑树对性能有提升。
红黑树。最后判断元素个数是否超过默认的⻓度(16)*负载因子(0.75),也就是12,超过则进行扩容。IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦
所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。
面向切面编程
AOP中的代理说是由AOP框架动态生成的一个对象,该对象可以作为目标对象使用。Spring 中的AOP有两种,JDK动态代理,CGLIB代理
JDK动态代理是通过java.lang.reflect.Proxy 类来实现的,我们可以调用Proxy类的newProxyInstance()方法来创建代理对象。对于使用业务接口的类,Spring默认会使用JDK动态代理来实现AOP。
CGLIB(Code Generation Library)是一个高性能开源的代码生成包,它采用字节码技术,对指定的目标类生成一个子类,并对子类进行增强。
在Spring的核心包中已经集成了CGLIB所需的包,所以开发中不需要导包。
三种特殊的数据类型:Bitmap、HyperLogLog、Geospatial,其中Bitmap 、HyperLogLog的底层都是 String 数据类型,Geospatial 底层是 Sorted Set 数据类型。
1、快照RDB。将某个时间点上的数据库状态保存到RDB文件中,RDB文件是一个压缩的二进制文件,保存在磁盘上。当Redis崩溃时,可用于恢复数据。通过SAVE或BGSAVE来生成RDB文件。
2、只追加文件AOF。以日志的形式记录每个写操作(非读操作)。当不同节点同步数据时,读取日志文件的内容将写指令从前到后执行一次,即可完成数据恢复。
有技术一点的部分呢和功能?

Redis是后端的缓存,主要对MySQL的数据作缓存(MySQL查询效率远不及Redis)
对于多查询、少修改的数据(热点数据),则可以将其存入Redis中作为缓存。

如果接触新的东西是怎么学习的?
反问