自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

追梦的疯子

学习日记

  • 博客(27)
  • 收藏
  • 关注

原创 一起康康Spring源码如何对循环依赖进行处理

循环依赖1. 构造器循环依赖2. setter循环依赖2.1 首先分析几个缓存分别产生数据的地方2.2 获取单例缓存的地方3.Spring解决循环依赖的流程(借鉴Spring源码深度解析第二版)4. 总结1. 构造器循环依赖此依赖无法解决,只能抛出异常表示循环依赖。因为使用构造器产生的循环依赖会造成一个环,比如创建A,A构造器需要B,那么创建B,B构造器又需要C,那么创建C,C构造器又需要A,从而导致死循环构造对象。2. setter循环依赖Spring解决循环依赖使用了以下三个Map进行存储。两

2020-08-18 17:55:28 206

原创 Java技术栈知识点总结

Bean一、Spring bean的生命周期二、Spring bean的加载过程三、XmlBeanFactory与ApplicationContext的区别一、Spring bean的生命周期二、Spring bean的加载过程三、XmlBeanFactory与ApplicationContext的区别ApplicationContext是BeanFactory的扩展ApplicationContext...

2020-07-31 17:34:28 1970 2

原创 MySQL优化相关知识点总结

MYSQL优化一、慢查询二、将慢查询的日志写入到文件中一、慢查询MySQL默认10秒内执行的SQL语句没有响应及为慢查询查看当前数据库设置的时间 show variables like 'long_query_time';修改慢查询判定的时间,用于查找慢查询 SET long_query_time=1;注:重启mysql之后,long_query_time依然是my.ini中设置的默认值。二、将慢查询的日志写入到文件中...

2020-11-18 16:36:26 271

原创 JVM之类加载过程及类加载器

深入理解Java虚拟机第七章一、类加载的生命周期(加载过程)二、类加载器2.1、类与类加载器2.2、双亲委派模型一、类加载的生命周期(加载过程)加载a)通过一个类的全限定名来获取定义此类的二进制字节流。b) 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。c) 在内存中生成一个代表这个类的java.lang.Class对象, 作为方法区这个类的各种数据的访问入口。验证:这一阶段用于确保Class文件的字节流中包含的信息符合《Java虚拟机规范》的全部约束要求,保证这些信息被当

2020-11-13 11:20:39 168

原创 MYSQL中事务与事务日志

高性能MYSQL一、事务特性二、事务的隔离级别一、事务特性事务的四大特性(ACID),分别表示原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。原子性: 整个事务中的操作要么全部提交成功,要么全部失败回滚。整个执行过程不可分割。一致性: 数据库总是从一个一致性的状态转换到另外一个一致性的状态。比如转账过程中某个步骤出问题不会导致转账账户转账失败损失金额的情况。隔离性: 一个事务所做的修改在提交以前,对其他事务是不可见的

2020-10-13 10:51:35 348

原创 MYSQL中的事务与锁笔记

这里写目录标题读写锁三级目录读写锁共享锁(shared lock):也称读锁,读锁是共享的,互相不阻塞。排他锁(exclusive lock) :也称写锁,写锁是排他的,也就是一个写锁会阻塞其他的写锁和读锁**表锁:**会锁定整张表,一个用户对表进行(增、删、该),需要先获得写锁。行级锁:三级目录...

2020-09-09 14:49:43 144

原创 JAVA并发容器与并发工具类

JAVA并发容器与工具笔记1、JAVA并发容器2、JAVA并发容器2.1、CountDownLatch2.2、CyclicBarrier2.3、CyclicBarrier和CountDownLatch的区别2.4、Semaphore2.5、Exchanger1、JAVA并发容器ConcurrentHashMap :线程安全的Map。ConcurrentLinkedQueue:线程安全非阻塞队列。采用先进先出的规则对节点进行排序,当我们添加一个元素的时候,它会添加到队列的尾部;当我们获取一个元素时,

2020-08-31 22:51:41 179

原创 Java内存模型与线程锁

类的加载机制一、类的生命周期一、类加载的过程一、类的生命周期一、类加载的过程加载1)通过一个类的全限定名来获取定义此类的二进制字节流。2) 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。3) 在内存中生成一个代表这个类的java.lang.Class对象, 作为方法区这个类的各种数据的访问入口。验证准备解析初始化...

2020-08-31 14:08:05 184

原创 网络通信——基础知识点复习

基础知识点汇总一、TCP三次握手三级目录一、TCP三次握手基本概念 :1. SYN :同步SYN,在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1;2. ACK :占1位,仅当ACK=1时,确认号字段才有效。3. seq :序号,TCP连接中传送的字节流中的每一个字节都按照顺序编号。4. ack :确认号,期望收到对方下一个报文的第一个数据字节的序号。三次握手流程1. server建立传输控制块TCB,进入LISTE

2020-08-21 16:06:07 664

原创 JAVA集合宝典

JAVA集合一、ArrayList知识点二、HashMap知识点三、HashMap 和 Hashtable 的区别一、ArrayList知识点1.ArrayList的初始化过程:如果没有给数组指定大小,则会给该数组初始化一个大小为0的数组。2. 添加元素:ArrayList 添加元素的操作是会以数组容量初始值10作为基准进行扩容,扩容大小为原来的一半,然后通过Arrays.copyof方法将数据拷贝到新的数组里。3. 给指定位置添加元素:因为插入会把后续的数据依次以index+1的方式复制到新的

2020-08-13 11:54:50 178

原创 JAVA基础知识点复习笔记

一、JAVA基本数据类型类型booleanbytecharshortintlongfloatdouble位数18161632643264强制类型转化:1. 高位转低位需要强制转换。2. 低位转高位自动转。3. 不带后缀标识的浮点数默认为 double 类型(float后缀为F long后缀为L),将一个int类型赋值给float、long、double时,如果该值超出了int类型的范围,则必须添加后缀二、<<符号与>>

2020-08-09 21:52:32 1713

原创 Spring源码解析学习(一)

Spring源码解析一、Spring整体架构二、XmlBeanFactory 源码分析三级目录一、Spring整体架构Core Container (核心容器)Beans (基础概念是BeanFactory),用于访问配置文件、创建和管理bean,以及Ioc 和DI操作相关。Core:Spring 框架基本的核心工具类。Context:构建于Core和Beans模块基础之上,继承了Beans的特性,提供了对国际化、事件传播、资源加载和对Context的透明创建的支持。Expression L

2020-07-24 18:01:22 264

原创 JVM_诊断工具使用及实战_JVM学习(三)

诊断工具学习一、常用命令二、可视化故障处理工具一、常用命令jps:进程状况工具项作用jps -q只输出LVMIDjps -m输出虚拟机进程启动时传递给主类main()函数的参数jps -l输出主类的全名,如果进程执行的是jar包,则输出jar路径jps -v输出虚拟机进程启动时的JVM参数jstat:虚拟机统计信息监视工具如: 打印gc进程数为15084时间间隔250毫秒,总共打印20次命令如下: jstat -gc 15084 25

2020-07-15 09:38:48 169

原创 JVM_概念_回收算法_JVM学习笔记(一)

JVM内存管理一、运行时数据区域二、JVM 垃圾收集算法一、运行时数据区域程序计数器记录当前线程执行到字节码的行号,各个线程之间相互独立,程序的分支、循环、跳转、异常处理、线程恢复(中断后唤醒)等基础功能都依赖于程序计数器完成。Java 虚拟机栈线程私有,每个方法被执行的时候,都会创建一个栈帧(局部变量表、操作数栈、动态连接、方法出口)本地方法栈为虚拟机使用到的本地方法服务JAVA堆JAVA堆是所有线程共享的内存区域,除了栈上分配是在栈上分配空间,几乎所有对象的实例都存

2020-07-01 11:42:13 215

原创 阿里云Ubuntu 部署 ngnix+https

阿里云安装ngnix+https+springboot+vue 一、ngnix已经安装过,设置ngx_http_ssl_module 1.进入到ngnix得根目录中,如:cd /usr/local/nginx/ 2.执行命令./configure --prefix=/usr/local/webserver/nginx --with-http_ssl_module配置参数,报错:SSL m...

2020-06-19 15:25:47 188

原创 JVM_日志_内存分配与回收策略_JVM学习(二)

GC Log常用命令1)查看GC基本信息 **在JDK 9之前使*用-XX: +PrintGC***, JDK 9 后使用***-Xlog: gc***2)查看GC详细信息 **JDK 9之前使用 -XX: +PrintGCDetails, 在JDK 9之后使用*-X-log: gc****3)查看GC前后的堆、 方法区可用容量变化 **JDK 9之前使用*-XX: +PrintHeapAtGC***, JDK 9之后使用 -Xlog: gc+heap=debug4)查看GC过程中用户线程并发

2020-06-03 11:30:16 191

原创 idea代码无法及时更新,必须 clean install

解决方案:1. ALT + F12 进入命令行2. 输入mvn idea:module

2020-06-01 10:19:12 4669

原创 阿里云 Ubuntu 搭建 docker redis 主从+哨兵(1主2从3哨兵)

Docker 搭建自定义网络段推荐使用自定义网络段的原因:因为docker容器之间默认通信方式使用的是桥接模式,每次重启容器会分配新的IP地址,这会导致每次重启Redis Master Node都需要重新修改Slave Node相对应的IP地址,过于繁琐。创建自定义网络段: docker network create --subnet=172.17.0.0/16 mynetwork查看网络段...

2020-03-06 16:26:27 348

原创 ngnix重启 -bash: ./nginx: Permission denied问题

ngnix重启 -bash: ./nginx: Permission denied问题问题出现原因解决办法)问题出现原因更新文件的时候不小心把ngnix文件删掉了,之后重新通过ftp上传ngnix文件,导致出现该权限的问题解决办法chmod +x nginx,给该文件增加权限./nginx -t -c /usr/local/nginx/nginx.conf启动ngnix ....

2019-06-17 11:05:26 11962

原创 如何将打成的jar包添加进本地仓库中

18/100发布文章 博文管理我的博客退出 Trash Temp Mybatis缓存机制以及SpringBoot如何整合 NIO之Buffer学习笔记 如何将打成的jar包添加进本地仓库中 添加摘要 1.第一步:查看maven是否已安装,环境是否配置进path中,如果没有则在...

2019-03-10 16:08:59 648

翻译 查看SQLSERVER 某关键字存在的资源位置

用途:在数据库迁移过程中如果之前是使用的外链访问,在后来将两个库进行了合并,就避免不了要修改全部的带外链的sql,查询sql如下:select name,type_desc from sys.all_sql_modules s inner join sys.all_objects o on s.object_id=o.object_id where definition like '%hw%...

2018-10-22 18:34:53 549

原创 NIO之Buffer学习笔记

1.Buffer的子类有: • ByteBuffer • CharBuffer • DoubleBuffer • Flo...

2018-03-19 21:51:13 158

原创 Java并发包原子类API使用笔记

一、Java并法包的原子类有AtomicInteger 、AtomicBoolean 、AtomicLong 、AtomicReference 、AtomicIntegerArray 、AtomicLongArray 、AtomicReferenceArray、 AtomicIntegerFieldUpdater等。 前4个的用法大同小异,引用原子类的目的是在操作计数时使用原子类无需关系线程并发

2018-01-23 17:32:11 788

原创 UncaughtExceptionHandler 捕获异常线程以及出现异常重启

1.捕获线程的异常只需要修改Executor产生线程的方式,即为每一个线程添加一个实现了Thread.UncaughtExceptionHandler接口的异常处理器来捕获线程发生的异常,出现异常之后在捕捉异常中在重新开启线程即可,例子如下:(Thinking in java 中demo)class ExceptionThread2 implements Runnable { pub

2017-12-24 21:19:47 489

原创 创建并启动线程几种方式

一:创建线程的几种方式 1.第一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法,然后在run方法里填写相应的逻辑代码。class ThreadDemo1 extends Thread{ @Override public void run() { for(int i =0;i<5;i++){ Sys

2017-12-14 23:26:12 5064 1

原创 将一个键盘输入的数字转化成中文输出

import java.util.Scanner;/*1 5 9 13 个2 6 10 14 拾3 7 11 15 百4 8 12 16 千*/public class StringDemo_Convert {public static String intConvert(String x) {String newS = "";char[] c

2016-11-28 11:36:42 2493

原创 输入菱形边数,打印菱形

/* 行数 打印数 空格数 * 0 1 3 *** 1 3 2 ***** 2 5 1******* 3 7 0 ***** 4 5 1 ***

2016-11-15 19:57:21 302

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除