node多版本管理
nvm是什么
nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。
下载
github下载地址
安装
直接next
换源
将下面两个粘贴到 settings.txt 中
阿里:
npm_mirror https://npmmirror.com/mirrors/npm/ node_mirror https://npmmirror.com/mirrors/node/
腾讯:
nvm npm_mirror http://mirrors.cloud.tencent.com/npm/nvm node_mirror http://mirrors.cloud.tencent.com/nodejs-release/
常用指令
nvm arch:显示node是运行在32位还是64位。
nvm install <version> [arch] :安装node, version是特定版本也可以 ...
Spring是如何解决循环依赖的
什么是循环依赖?
有两个类,一个是A、一个是B。并且A和B互相引用了对象
A class123456public class A { @Autowired B b; String name; int age;}
B class1234567public class B { @Autowired A a; String name; int age;}
Spring解决循环依赖步骤
1、创建A
2、将lambda放入三级缓存中
3、填充属性
4、缓存中找
5、没找到6、创建B
7、将lambda放入三级缓存中
8、填充属性
9、缓存中找A再次去doGetBean,从三级缓存中拿
10、找到了填充到B
11、将B填充到一级缓存中
12、将一级缓冲中B填充到A
13、初始化A
14、将A放入到一级缓存中
Mybatis注册插件
Configuration
可以对下面四个地方进行插件注册,它们都是通过 interceptorChain.pluginAll(…); 来注册插件
InterceptorChain12345678910111213public class InterceptorChain { private final List<Interceptor> interceptors = new ArrayList<>(); // 会去遍历我们在mybatis中配置的插件 public Object pluginAll(Object target) { for (Interceptor interceptor : interceptors) { target = interceptor.plugin(target); } return target; } .....}
Interceptor1234567891011121314151617public interface Inte ...
HaSee笔记本蜂鸣报警处理
神舟笔记本异常处理下方解决问题都是有特定原因, 并不是万能解决方法。
出现花屏(很早之前问题)
开机高温会出现蜂鸣然后关机
花屏解决已知造成原因及结果
期间我添加过一根内存(那根内存是以前坏了的笔记本上拆下来的)
花屏问题是随机的, 并不是运行某个软件或者某个时间段会造成
问题是我装了内存之后才产生的
尝试解决
可能内存松了, 重新插一次(失败)
显卡是矿机?(原因2可以说明大概率并不是这个问题, 再尝试其他解决方法)
更换同品牌出厂内存(完美解决)
解析
可能是上一根内存与出厂内存不兼容
可能是上一根内存本身损坏了已经
高温蜂鸣解决已知造成原因及结果
高温后就会蜂鸣
开机有几率会造成风扇狂转
疑似降不了温度
当前发生问题的一个月前就发生过一次
尝试解决
主板问题??(有问题为什么每次都是高温才蜂鸣,并且风扇是正常转动的,只是莫名的快,像是降不了温度, 有可能但是不大。先尝试其他解决)
给风扇去灰(未解决)
拆开CPU、显卡挡板,发现硅脂已经干了(更换硅脂,完美解决)
解析
高温降不了温度,并且风扇转动的很勤
使用率较高,出厂硅脂并不是很好,长时 ...
JUC常用工具类源码分析
ReentrantLock
一个可重入,可多条件变量,可超时的锁
new12345678// 无参非公平public ReentrantLock() { sync = new NonfairSync();}// 公平或者非公平public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync();}
Node1234567891011121314151617181920212223242526272829303132333435363738394041424344 static final class Node { static final Node SHARED = new Node(); static final Node EXCLUSIVE = null; // 状态码 static final int CANCELLED = 1; static final ...
HashMap源码分析
HashMap
key、value形式存储数据
JDK8:数组 + 链表/红黑树
hash12345static final int hash(Object key) { int h; // hashCode ^ hashCode >>> 16,可防止一些特殊的hashCode例如Double、Float,因为它们的低16位基本全是0 return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}
get123456789101112131415161718192021222324252627282930public V get(Object key) { Node<K,V> e; return (e = getNode(hash(key), key)) == null ? null : e.value;}final Node<K,V> getNode(int hash, Objec ...
Mybatis源码分析
类加载器
Java自带有三个类加载器
版本号12345<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.4</version></dependency>
1
12345678910111213141516171819202122public static void main(String[] args) { //classpath下的 System.out.println(BindingException.class.getClassLoader()); // rt.jar包中的 System.out.println(String.class.getClassLoader());}sun.misc.Launcher$AppClassLoader@18b4aac2 // App ClassLoad ...
ArrayList源码
ArrayList
一个可自动扩容的对象数组
new默认情况下数组为一个空数组,你通过无参构造新建
12345private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;}
当然也可以指定数组初始化大小,你传入的容量大小,如果为0则用ArrayList自带的,否则new 一个Object[你传入的容量大小]的对象数组
123456789101112private static final Object[] EMPTY_ELEMENTDATA = {};public ArrayList(int initialCapacity) { if (initialCapacity > 0) { // 传入的的大小 > 0,则用你传入的大小 this.ele ...
JUC并发编程
进程与线程
进程:当一个程序被开启,即开启了一个进程
线程:一个进程之内可以分为多个线程、一个线程就是一个指令流、Java中线程是最小的调度单位,进程是作为资源分配的最小单位
对比:
进程基本上是互相独立的,二线程存在于进程内,是进程的一个子集
进程拥有共享的资源,如内存空间等,使其内部的线程共享
进程间通信更复杂
线程通信相对简单(因为它们共享一个进程的内存),并且更加轻量
线程的上下文切换比进程的上下文切换成本低
并发&并行
并发:同一时间应对多件事情的能力
并行:同一时间做多件事情的能力
异步同步
需要等级结果返回,才能继续运行就是同步
不需要等待结果返回,就能继续运行就是异步
同步12345678910111213public static void main(String[] args) { FileReader fileReader = new FileReader("E:\\todo_files\\login.bat"); String s = fileReader.readString(); ...
Mysql数据库的事务隔离所产生问题
文档:https://dev.mysql.com/doc/refman/5.7/en/set-transaction.html
获取、设置隔离级别123456789101112131415161718192021222324252627282930SET [GLOBAL | SESSION] TRANSACTION transaction_characteristic [, transaction_characteristic] ...transaction_characteristic: { ISOLATION LEVEL level | access_mode}level: { | READ UNCOMMITTED | READ COMMITTED REPEATABLE READ // 5.7默认 | SERIALIZABLE}access_mode: { READ WRITE | READ ONLY}// 设置 SET GLOBAL TRANSACTION ISOLATION ...