摘要:
现在我们介绍避免死锁的几个常见方法。 ❑ 避免一个线程同时获取多个锁。 ❑ 避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。 ❑ 尝试使用定时锁,使用lock.tryLock(timeout)来替代使用内部锁机制。 ❑ 对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁 阅读全文
摘要:
Redis的淘汰策略有哪几种? volatile-lru 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰 volatile-ttl 从已设置过期时间的数据集中挑选将要过期的数据淘汰 volatile-random 从已设置过期时间的数据集中任意选择数据淘汰 对于以上三种策略,如果没有符合条件的 阅读全文
摘要:
介绍 线程池同其他池技术一样属于提高效率,减少性能开销的池化资源技术。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。 创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数有限。为了避免这些问题,在程序启动的时候就创建若干线程来响应 阅读全文
摘要:
索引相关 abcd联合索引搜索ba会走索引么 会,重排 索引的底层实现是B+树,为何不采用红黑树,B树? (1):B+Tree非叶子节点只存储键值信息,降低B+Tree的高度,所有叶子节点之间都有一个链指针,数据记录都存放在叶子节点中 (2):红黑树这种结构,h明显要深的多,效率明显比B-Tree差 阅读全文
摘要:
简介 ReentrantLock重入锁,是实现Lock接口的一个类。 支持重入性(表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞,synchronized隐式支持重入性) ReentrantLock还支持公平锁和非公平锁两种方式。 ReentrantLock是J.U.C包下提供 阅读全文
摘要:
user nginx; worker_processes auto; #worket_cpu_affinity auto; error_log /var/log/nginx/error.log warn; pid /run/nginx.pid; #include /usr/share/nginx/m 阅读全文
摘要:
幂等性解决方案 幂等性就是同一个操作执行多次,产生的效果一样。多如此请求,多次消费不会造成程序逻辑异常。 保证幂等性的方法 前端 1 按钮只能点击一次 2 当用户提交表单后,执行一个客户端的重定向,即 Post_Redirect_get,避免用户刷新重复提交 后端 1 使用唯一索引,这样当数据重复的 阅读全文
摘要:
核心组件 SqlSessionFactoryBuilder SqlSessionFactoryBuilder的作用就是通过XML或者Java代码来建造一个工厂(SqlSessionFactory),并且可以通过它建造多个这样的工厂。一旦完成建造工厂的任务,我们就应该废弃它,回收空间。所以它的生命周期 阅读全文
摘要:
介绍以下这些SQL语句会产生一个隐式的提交操作,即执行完这些语句后,会有一个隐式的 COMMIT操作 DDL语句:ALTER DATABASEUPGRADE DATA DIRECTORY NAME,ALTER EVENT, ALTER PROCEDURE, ALTER TABLE, ALTER VI 阅读全文
摘要:
🐱🐉 介绍 Semaphore 信号量,用来控制同一时间<span m+="" 2m="" regular";color:#0c0c0c;background:="" #ffc000"="">,资源可被<span microsoft="" yahei";color:#0c0c0c;backgr 阅读全文
摘要:
栈的相关介绍 阅读全文
摘要:
逃逸分析,其实就是分析一个对象是否会逃逸出方法,分析对象的动态作用域。如果一个对象在一个方法内定义,并且有可能被方法外部引用使用,那认为它逃逸了。 public static StringBuffer craeteStringBuffer(String s1, String s2) { String 阅读全文
摘要:
简介 AQS 是 Java 并发包里实现锁、同步的一个重要的基础框架。 AQS内部维护了一个等待队列,借助CAS方法实现了无阻塞算法进行更新。 AQS定义两种资源共享方式 Exclusive(独占,只有一个线程能执行,如ReentrantLock) Share(共享,多个线程可同时执行,如Semap 阅读全文
摘要:
CountDownLatch CountDownLatch 是一种通用的同步工具CountDownLatch内部的实现主要是依靠AQS的共享模式。 当一个线程把CountDownLatch初始化了一个count之后,其他的线程调用await就会阻塞住,直到其他的线程一个一个调用countDown方法 阅读全文
摘要:
介绍 什么是SpringIOC,就是把每一个bean(实体类)与bean(实体类)之间的关系交给第三方容器进行管理。 关键类 BeanFactory IOC的顶层容器,描述了IOC的规范。 BeanFactory是一个接口,是Spring中工厂的顶层规范,IOC的核心接口。 定义了getBean() 阅读全文
摘要:
设置命令 -Xms 设置堆的最小空间大小 -XX:NewSize 设置新生代最小空间大小 -XX:MaxNewSize 设置新生代最大空间大小 -XX:PermSize 设置永久代最小空间大小 -XX:MaxPermSize 设置永久代最大空间大小 -Xss 设置每个线程的堆栈大小 Jstat 收集 阅读全文
摘要:
原理 总体上来讲MVCC的实现是基于ReadView版本链以及Undo日志实现的 MVCC就是在使用READ COMMITTD、REPEATABLE READ这两种隔离级别的事务在执行普通的SELECT操作时访问记录的版本链的过程,这样可以使不同事务的读-写、写-读操作并发执行,从而提升系统性能; 阅读全文
摘要:
1 错误日志 Error Log 服务器启动关闭过程中的信息 服务器运行过程中的错误信息 从服务器上启动服务器进程时产生的信息 查看路径: show variables like 'log_error'; 2 全查询日志 General Query Log 全查询日志记录了所有对数据库的请求信息,不 阅读全文
摘要:
Condition Condition是一种多线程通信工具,表示多线程下参与数据竞争的线程的一种状态,主要负责多线程环境下对线程的挂起和唤醒工作。 方法 // 阻塞 // 造成当前线程在接到信号或被中断之前一直处于等待状态。 void await() throws InterruptedExcept 阅读全文
摘要:
介绍 volatile 是 Java 虚拟机提供的轻量级的同步机制,它可以保证可见性(缓存一致性协议)和有序性(禁止指令重排序,也就是通过内存屏障来实现),但是不保证原子性。 JMM 介绍 JMM 是一个抽象的概念,它描述的是一种规范。这些规范定义了程序中各种变量的访问规则。 JMM 定义了线程和主 阅读全文