- 博客(74)
- 收藏
- 关注
原创 线程上下文类加载器(Thread Context ClassLoader)
文章目录线程上下文类加载器(Thread Context ClassLoader)线程上下文类加载器如何破坏双亲委派模型sun.misc.Launcher线程上下文类加载器(Thread Context ClassLoader)线程上下文件类加载器(Thread Context ClassLoader)//设置线程上下文类加载器 通过java.lang.Thread类的setContextClassLoader(ClassLoader cl)方法来设置;如果创建线程时还未设置上下文类加载器
2021-05-19 22:26:20 2989
原创 MPI集群安装、MPI安装
文章目录配置ssh免密登录集群搭建nfs服务安装MPI配置MPI分布式计算节点集群测试配置ssh免密登录https://blog.csdn.net/qq_43369986/article/details/117043347集群搭建nfs服务https://blog.csdn.net/qq_43369986/article/details/117041545安装MPI注意,以下只是单节点安装,其它节点重复以下步骤即可;安装环境https://blog.csdn.net/secyb/art
2021-05-19 20:15:53 1333
原创 对称加密与非对称加密
对称加密对称加密的特点是加密 和 解密使用相同的密钥;非对称加密非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。...
2021-05-19 19:43:42 729
原创 centos SSH免密登录
文章目录SSH免密登录SSH免密登录准备2台节点node1、node2在node1上输入ssh-keygen,然后连续3个回车;接着输入ssh-keygen node1 以及 ssh-keygen node2,安装提示输入yes以及用户密码;node2上重复 第二、第三步;测试node1上输入ssh node2,如果配置成功,便可以免密码登陆到node2;ssh-keygen命令会在当前用户目录下创建.ssh目录;...
2021-05-19 19:42:08 646
原创 NFS搭建
文章目录@[toc]NFS服务端min1安装nfs设置开机启动nfs相关服务启动nfs service/etc/exports调整防火墙配置NFS客户端min2安装nfs挂载目录临时挂载共享目录永久挂载vim /etc/rc.d/rc.localvim /etc/fstab测试https://blog.csdn.net/wudinaniya/article/details/81068518NFS服务端min1安装nfs[root@nfs_server ~]# yum -y install nfs-
2021-05-19 18:59:29 673 1
原创 MapStruct、ignore
文章目录@[toc]使用由Spring代理不由spring代理其它属性ignore原理Json工具是通过序列化反序列化来实现的,性能低下。MapStruct是通过getter、setter来实现的。 <!--MapStruct依赖--> <!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct-jdk8 --> <dependency>
2021-05-19 12:37:24 4016
原创 macOS BigSur下根目录下无法创建文件
macOS BigSur下根目录下无法创建文件通过创建软连接来实现。例如想在根目录下创建med目录,那么可以创建/Users/zhang/data/med目录,再创建软连接。sudo vim /etc/synthetic.conf添加med /Users/zhang/data/med重启后生效,重启后,根目录下存在med目录注意,med /Users/zhang/data/med中间是个tab....
2021-05-19 12:20:15 1348
原创 mac配置环境变量
注意,mac不同于linux,配置环境变量不是修改/etc/profile配置环境变量https://blog.csdn.net/u011886447/article/details/70200922vim ~/.bash_profile #new file注意这里要加""export MVN_HOME="/opt/myapps/maven/apache-maven-3.5.4"export PATH="$MVN_HOME/bin:$PATH"...
2021-05-19 12:16:39 609
原创 mac修改了/etc/profile导致所有命令不能用、mac下vim不能使用
修改了/etc/profile导致所有命令包括vim都不能使用http://www.tcdos.com/blog/view/134首先输入命令,让暂时可以使用vim等命令export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin然后通过vim修复/etc/profile文件
2021-05-19 12:14:28 1519
原创 CGLIB动态代理入门
CGLIB动态代理https://www.cnblogs.com/tnt-33/articles/10149087.html注意jdk动态代理,只代理接口,不支持类的动态代理jdk动态原理:利用InvocationHanlder加上反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。是在程序运行的过程中,根据被代理的接口来动态生成代理类的class文件,并加载运行的过程。CGLIB动态代理可以代理类CGLib采用了非常底层的字节码技术,其原理是通过字节码技术
2021-05-18 21:27:14 625
原创 jdbc、PreparedStatement预编译原理
PreparedStatement预编译原理https://www.zybuluo.com/stefanlu/note/254899前提知识 MySQL预编译只使用PreparedStatement无法使用预编译功能,因为mysql默认不开启预编译,需要连接db时添加useServerPrepStmts=true参数,例如jdbc:mysql://127.0.0.1:3306/user?useServerPrepStmts=true注意:useServerPrepStmts=true参数只对此次连
2021-05-18 00:06:39 964
原创 SPI机制入门、SPI机制原理
文章目录@[toc]使用入门SPI机制原理https://blog.csdn.net/qq_20397315/article/details/106095184SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。使用入门创建接口和其实现类public interface DbInterface { void say();}pu
2021-05-17 23:50:39 759 1
原创 MySQL预编译
MySQL预编译https://www.freesion.com/article/30881003118/MySQL client发送一条SQL语句到MySQL服务端后,服务端会对SQL进行语法校验、解析等操作,最后才会执行,但是如果对只是参数不同的SQL 每次都进行语法校验、解析等操作,难免会影响性能;所谓预编译就是将一些灵活的参数值以占位符?的形式给代替掉,把参数值给抽取出来,将SQL语句进行模板化。让MySQL服务器执行相同的SQL语句时,不需要在校验、解析SQL语句上面花费重复的时间M
2021-05-17 10:44:43 748
原创 Java反射详解
反射1.将Java文件保存到本地硬盘2.编译Java文件,生成.class文件3.使用Java虚拟机(JVM)将字节码文件加载到内存4.字节码文件在内存中使用Class类表示5.使用反射的时候,首先获取到Class类,就可以得到class文件里的所有内容,包含属性、构造方法、普通方法6.属性通过Filed类表示7.构造方法通过Constructor表示8.普通方法通过Method表示JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够
2021-05-16 00:44:12 633
原创 逃逸分析、栈上分配、标量替换、同步消除、锁消除
文章目录逃逸分析的作用栈上分配同步消除(==锁消除==)标量替换其它知识点https://docs.oracle.com/javase/8/docs/technotes/guides/vm/performance-enhancements-7.html#escapeAnalysishttps://blog.51cto.com/14510351/2441245https://segmentfault.com/a/1190000038262877#https://www.cnblogs.com/zhux
2021-05-16 00:44:06 814
原创 JDK动态代理入门、JDK动态代理原理、为什么JDK动态代理是基于接口的
动态代理JDK动态代理JDK动态代理 只能 代理接口;CGLIB动态代理可以代理类;静态代理缺点当接口增删改方法,那么代理类已得要跟着修改;代理类的每个接口对象对应一个委托对象,如果委托对象很多,代理类就会变得异常臃肿https://www.jianshu.com/p/85d181d7d09a定义委托对象接口public interface Subject { void test();}委托对象接口实现类public class RealSubject impleme
2021-05-15 01:06:50 721 1
原创 Java泛型原理、类型擦除
注意泛型不能使用在静态属性上泛型可以用在接口、抽象类、普通类上泛型方法泛型方法可以定义在非泛型类中,这个方法可以是静态方法或者成员方法;public class Method { //泛型方法,是在返回类型前面加上<> public static <T> void say(T t){ System.out.println(t); } public <T> T test(T x){//有返回值的泛型方法
2021-05-15 01:04:51 873
原创 HashMap原理、hashmap常见面试题
HashMapMap遍历map有多种遍历方法,这里是最简单的一种,通过遍历key,来得到key和对应的valueMap<Integer, Integer> map = new HashMap<Integer, Integer>(); //遍历map中的keyfor (Integer key : map.keySet()) { System.out.println("Key = " + key+); //因为hashmap的时间复杂度接近o(1),
2021-05-15 01:02:24 1399
原创 HashSet原理、TreeSet
Set主要有HashSet和TreeSet类在判断重复元素的时候,Set集合会调用hashCode()和equal()方法来实现HashSetpublic class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { private transient HashMap<E,Object> map; ...Has
2021-05-15 01:00:36 715
原创 Vector原理与基本使用
VectorVector可以理解为,线程安全的 ArrayList,并且能指定每次扩容时增长的数量。构造函数 与 扩容Vector共有4个构造函数// 默认构造函数,默认大小为 10,扩容时,容量大小增加一倍。Vector()// capacity是Vector的默认容量大小。当由于增加数据导致容量增加时,每次容量会增加一倍。Vector(int capacity)// capacity是Vector的默认容量大小,capacityIncrement是每次Vector容量增加时的增量值
2021-05-15 00:59:15 720
原创 ArrayList、LinkedList原理
ListArrayListArrayList的底层是基于动态数组实现 transient Object[] elementData; private int size;常用的方法 ArrayList<String> arrayList = new ArrayList<>(); //或者ArrayList<String> arrayList = new ArrayList<>(4); array
2021-05-15 00:58:14 745
原创 Java String详解、String原理、StringBuilder和StringBuffer的区别
Stringequals方法如果参数是String则比较内容,否则比较地址;public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject;
2021-05-15 00:46:11 725
原创 Java final关键字详解
final关键字final关键字 可以修饰 类、方法、变量;修饰类: 不可被继承;(不能修饰接口、抽象类,也不可以修饰抽象方法)修饰方法:不可被重写;(可以被重载)修饰变量:一旦变量被赋值,就不能在更改;修饰成员变量:修饰成员变量时,必须完成初始化,也可以在构造器中完成初始化;修饰普通变量:一旦完成初始化就不能更改;修饰成员变量时必须初始化,可以有以下几种情况:1 定义时初始化2 构造器中初始化修饰成员变量public class T1 { private f
2021-05-15 00:43:29 700
原创 equals方法 和 ==的区别
文章目录@[toc]equals方法 和 ==equals==equals方法 和 ==equalsObject类中,equals比较的是内存地址;//equals方法来源于Object类 public boolean equals(Object obj) { return (this == obj); }String中,equals方法的参数是String的话就比较内容,不是String就比较地址;//String类 ,equals方法源码 publi
2021-05-15 00:41:35 667
原创 @Autowired注解位置、@Autowired与@Resource的区别与注入流程
文章目录@[toc]常用注解注释位置(@Autowired放置在构造器上与放在属性上的区别)对成员变量注释对构造函数注释对成员方法注释@Autowired和构造方法执行的顺序@Autowired与@Resource注入方式(注意)基于Setter的依赖注入基于构造函数的依赖注入基于setter的依赖注入缺点@Autowired注入流程@Resource注入流程@Configuration与@Beanspring Bean单例下的并发问题常用注解注释位置(@Autowired放置在构造器上与放在属性上的区
2021-05-15 00:23:55 3049 12
原创 springboot自动配置原理
文章目录自动扫描原理自动配置原理哪些配置类会被装配以下基于springboot 2.2.2.RELEASE自动扫描原理特点:默认扫描启动类所在包及其子包@SpringBootApplication -> @EnableAutoConfiguration -> @AutoConfigurationPackage -> @Import(AutoConfigurationPackages.Registrar.class) - > 查看内部类Registrar源码大约在123行左
2021-05-14 00:59:52 568
原创 spring事务、事务的隔离级别、事务失效
文章目录@[toc]事务隔离级别事务的传播机制PROPAGATION_REQUIREDPROPAGATION_SUPPORTSPROPAGATION_MANDATORYPROPAGATION_REQUIRES_NEWPROPAGATION_NEVERPROPAGATION_NESTED事务失效类没有被Spring管理方法不是 public的 -- 该异常一般情况都会被编译器识别自身this调用异常被捕获抛出异常类型不对传播类型不支持事务数据库本身不支持事务spring事务是基于jdbc实现的;sprin
2021-05-14 00:57:43 1386 1
原创 docker compose入门
文章目录例子使用常用标签versionservicesimagebuildVOLUMEVOLUME命令(docker -v)注意事项restart: alwayscontainer_namecommandenvironmentdocker-compose中配置网络docker-compose中创建并使用网络docker-compose中使用外部用网络注意Dockerfile是用来构建镜像;docker-compose是用来运行容器;https://blog.csdn.net/pushiqiang
2021-05-14 00:35:02 615 2
原创 dockerfile入门
文章目录@[toc]使用常用标签FROMRUNCMDENTRYPOINTVOLUME注意使用docker build -t 镜像名称[:镜像标签] -f Dockerfile所在目录 .例如 docker build -t myapp . 那么将会根据当前路径里的Dockerfile构建一个名为myapp的镜像;注意,-f才是指定dockerfile路径,后面的点是镜像构建上下文常用标签FROMFROM:定制的镜像都是基于 FROM 的镜像RUNrun在docker build
2021-05-14 00:34:07 850
原创 docker网络、bridge、host
文章目录@[toc]bridge模式自定义bridge网络注意host模式注意docker默认有5种网络[root@VM-0-6-centos ~]# docker network lsNETWORK ID NAME DRIVER SCOPE07dc8dc3a9f4 bridge bridge localbd5fbd42ac62 host
2021-05-14 00:32:47 912
原创 docker入门、docker基本命令
文章目录@[toc]docker概述docker安装docker原理docker常用命令镜像命令容器命令进入\退出 容器进入容器1. docker attach2. docker exec退出容器容器启动与关闭查询容器/镜像信息修改容器启动项直接改配置文件docker update容器数据卷和数据卷容器数据卷数据卷容器docker网络概述修改容器导致容器故障无法运行使用docker cp命令直接改配置文件docker环境变量详解注意docker概述docker安装https://docs.docker
2021-05-14 00:31:12 733
原创 MySQL锁 、行锁、表锁、间隙锁、临键锁、共享锁、排它锁、意向锁
文章目录@[toc]行锁记录锁(Record Lock)间隙锁(Gap Locks)产生间隙锁的条件间隙锁设置间隙锁区间范围测试临键锁(Next-key Locks)表锁表锁 的读锁(共享锁)表锁的写锁(排他锁)页锁Innodb意向锁定义意向共享锁(Intent Share Lock,简称 IS 锁)意向排它锁(Intent Exclusive Lock,简称 IX 锁)MySQL死锁等待,直到超时发起死锁检测如何预防死锁行锁使用行锁是,如果匹配条件字段不带有索引时,Innodb会使用表锁;行锁的 共
2021-05-14 00:28:40 1200 3
原创 MySQL MVCC(多版本并发控制)
文章目录@[toc]Innodb MVCC实现原理隐式字段Read View(读视图)例子版本链版本回退undo日志insert undo logupdate undo logMVCC与二级索引(辅助索引)Innodb MVCC实现原理MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。mvcc的主要是为了提高并发读写能力,不用加锁就能让多个事物并发读写官网对mvcc的介绍:https://dev.mysql.com/doc/refman/5.7/e
2021-05-14 00:26:21 656 1
原创 事务、事务的隔离级别、一致性
文章目录事物原子性一致性隔离性持久性MySQL如何保证事务的ACID事务的隔离级别重要概念脏读不可重复读幻读Read uncommitted读未提交Read committed 读已提交Repeatable read 可重复读(MySQL默认)注意Serializable 串行化事物定义:数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做;事务具有原子性、一致性、隔离性、持久性。https://www.runoob.com/mysql/mysql-tr
2021-05-14 00:22:18 1279
原创 数据库3范式
文章目录@[toc]第一范式(1NF)第二范式(2NF)第三范式(3NF)第一范式(1NF)强调的是列的原子性,即列不能够再分成其他几列。这样一个表:【联系人】(姓名,性别,电话)如果在实际场景中,一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF。要符合 1NF 我们只需把列(电话)拆分,即:【联系人】(姓名,性别,家庭电话,公司电话)。第二范式(2NF)第二范式包含 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖
2021-05-14 00:21:44 600
原创 MySQL独立表空间、共享表空间
文章目录@[toc]系统表空间(共享表空间)独立表空间表结构定义文件 .frm,是Mysql数据库本身的文件,和存储引擎无关。表空间文件 .ibd。系统表空间(共享表空间)https://dev.mysql.com/doc/refman/5.7/en/innodb-system-tablespace.html系统表空间用于存储 doublewrite buffer,change buffer, undo logs;如果在system tablespace下建表,那么系统表空间里也会存储表数据
2021-05-13 14:03:49 978
原创 innodb 关键特性、缓冲池、插入缓冲、两次写
文章目录@[toc]Buffer Poolbuffer pool对内存的管理Free ListLRU ListLRU(least recently used)算法Flush ListInnodb关键特性Insert Buffer插入缓冲Insert Bufferchange bufferinsert buffer的内部实现double write 两次写自适应哈希索引(Adaptive Hash Index,AHI)刷新临近页Buffer PoolInnoDB存储引擎是基于磁盘存储的,并将其中的数据按照
2021-05-13 14:02:46 1011
原创 redo log
文章目录@[toc]redo logredo log基本概念日志块(log block)日志块头log body(redo log的格式)redo log group和redo log fileredo log groupredo log file日志刷盘的规则数据页刷盘的规则redo log作用redo log 和 bin log 的区别redo logredo log 用于记录事务操作的变化,记录的是sql语句执行之后数据页上的具体修改内容。redo log是innodb引擎独有,redo log
2021-05-13 13:58:50 1243 1
原创 bin log
文章目录@[toc]bin log 概述开启 bin logbin log 作用bin log模式ROW(行模式)Statement(语句模式):Mixed(混合模式)bin log的刷盘时机https://www.cnblogs.com/reecelin/articles/13504084.htmlbin log 概述bin log ,即binary log 以二进制的形式存储在磁盘上,逻辑日志(记录所有的DDL(对表的操作)和DML语句,DML的select除外,即 记录导致数据库变化的sql语
2021-05-13 13:55:58 670
原创 undo log、rollback segment
文章目录@[toc]rollback segmentdelete/update操作的内部机制undo log有两个作用:提供回滚和MVCundo log主要记录了数据的逻辑变化,例如当INSERT一条记录时,则undo log记录一条DELETE记录; 当UPDATE一条记录时,则undo log记录一条相反的 UPDATE记录;当delete一条记录时,则undo log记录一条insert记录;innodb中 undo log分为2种: insert undo log :insert
2021-05-13 13:55:10 1341 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人