自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

NULL_YM

-_- -_-

  • 博客(129)
  • 资源 (2)
  • 收藏
  • 关注

原创 SpringBoot-运行原理、自动装配源码探究

文章目录初探pom.xml了解启动器从入门开始@SpringBootApplication@EnableAutoConfigurationEnableAutoConfigurationImportSelector.classselectImportsSpringFactoriesLoader自动装配调很重要的两张图拿走不谢总结初探pom.xmlSpringBoot的核心依赖再父工程中,spri...

2020-03-12 00:01:14 342 2

原创 java调用Groovy动态代码

java调用Groovy动态代码

2023-07-28 15:42:00 241

原创 自己实现公共重试组件

自己实现公共重试组件

2023-05-15 11:29:17 160

原创 封装redis分布式锁

【代码】封装redis分布式锁。

2023-05-12 15:20:43 385

原创 @Configuration的代理保证bean单例

AppConfig是一个配置类,任何一个类都可以被指定成为配置类,但是这个类并不一定需要加@Configuration注解,这个注解的作用就是能够是AppConfig能够产生一个代理对象,确保AppConfig类中@Bean创建的bean是单例的,如果没有AppConfig没有@Configuration就不是代理对象,那么出现@Bean方法相互调用会使单例原则被破坏。有了思路去看看,到底是怎么做的,其实就是在ConfigurationClassPostProcessor bean工厂后置处理器中进行的。

2023-04-10 10:20:00 497

原创 spring解决循环依赖思路

第三级:singletonFactories Map

2023-03-27 10:46:48 741

原创 批量插入、更新mapper写法

【代码】批量插入、更新mapper写法。

2023-03-23 11:03:58 1614

原创 redis使用大概问题链

突发性热点缓存重建导致系统压力暴增(例如:冷门商品321上连接大量请求到缓存没有查到,同时去查数据库,又同时设置缓存(缓存重建))–设置、更新 缓存数据时,也去加分布式锁(设置说明肯定是查询了没有才设置哦,所以这个就是让查询和更新串行了)有个数据数据库也被干掉了,大量请求过来后,穿透缓存和数据库(缓存穿透巧记:缓存和数据库都被穿‘透’了)大量数据同时设置缓存,那么会同时失效,此时会击穿数据库 (缓存击穿(巧记:只打穿了缓存))–重建缓存时加锁(但是锁中要先查一遍缓存,DCL机制)缓存没有过期时间资源耗尽。

2023-03-20 09:51:07 180

原创 线程池源码和CompletableFuture使用总结

线程池源码和CompletableFuture使用总结

2023-02-28 19:06:15 627

原创 AQS、ReentrantLock源码解读

AQS、ReentrantLock源码解读

2023-02-28 18:53:37 58

原创 订单技改-模版方法模式

模版方法

2023-02-24 18:29:42 57

原创 我自己的抛异常的工具类

我自己的抛异常的工具类

2022-08-18 17:24:35 120

原创 一文彻底讲透@Async注解的原理和使用方法

【转载】一文彻底讲透@Async注解的原理和使用方法

2022-07-26 15:54:26 1338

原创 【写福字】

写福字素材代码import java.awt.*;/*字体工具类*/public class FontUtil { public static void drawWord(Graphics g, String str, Color color, int size, int x, int y, String font) { g.setColor(color); g.setFont(new Font(font, Font.BOLD, size));

2022-02-11 10:47:26 241

原创 Vue上传文件遇到的问题

问题之前项目中前端使用了vue-cli,引入了上传组件,所以在上传文件时很容易,没有考虑太多问题。image-cropper组件中 有url属性,直接使用:url="文件服务器地址"绑定上传的地址即可。<el-form-item label="讲师头像"> <!-- 头衔缩略图 --> <pan-thumb :image="teacher.avatar"/> <!-- 文件上传按钮 --> <el-button type=

2020-12-15 17:38:03 1883

原创 记录一下Linux安装mysql并远程连接mysql的过程

在前面我学会了使用Xshell远程的连接我的Linux,并且成功的安装了java、Tomcat等常用的软件。本次记录一下安装mysql和远程连接mysql的过程。安装mysql第一步使用Xshell远程连接到我们的Linux系统。输入命令开始安装mysql,并进行安全设置。sudo apt-get install mysql-server sudo mysql_secure_installation将会进入如下界面:保护MySQL服务器部署。使用空白密码连接到MySQL。验证密码

2020-11-01 15:34:18 548

原创 java高频考点-再总结

文章目录反射概念场景动态代理重定向与转发的区别hashmap拉链法导致的链表过深问题为什么不用二叉查找树代替,而选择红黑树?为什么不一直使用红黑树?链表树化条件为什么是这样?解决hash冲突的方法红黑树红黑树和平衡二叉查找树的区别红黑树与B树的区别table 数组长度永远为 2 的幂次方1.7中的4次位运算,5次异或运算(9次扰动),在1.8中,只进行了1次位运算和1次异或运算(2次扰动)Hash冲突?put步骤扩容步骤HashTable与HashMap最简单但是却讲不出来java8新特性集合存null值重

2020-10-31 13:52:09 275 2

原创 mysql相关-再总结

索引是是什么?索引是一种特殊的文件,在mysql-data下面有frm(表结构)、myd(表数据)、myi(表索引)几个文件,这个特殊的文件存储了对应表行数据的引用,通过这个引用可以快速的检索到想要的行数据,但是也需要系统给他开辟一定的存储空间去存储这个结构,当表数据进行更新时,也需要去维护这个索引结构,所以说索引并不是创建的越多越好,但是当数据量大,且对于那种查询多更新少的表数据,使用索引就能大大的提高查询性能。之所以有这么高得性能是因为其底层数据结构的特殊性。我知道的索引结构有btree、b+tree

2020-10-31 13:15:53 185 1

原创 redis总结

文章目录redis数据结构为什么这么快?例题:从海量数据查询某一固定前缀的key__值如何通过redis实现分布式锁如何使用redis实现异步队列应用场景(项目中)缓存雪崩:大批量的数据过期。缓存击穿:缓存中没有数据库中有。缓存穿透:缓存和数据库都没有的数据。项目中的使用?项目中redis使用场景短信服务持久化RDBAOFredis集群原理redis数据结构redis是一个c语言编写的开源的高性能菲关系行键值对数据库。他的数据是存放在内存中的,所以读写速度非常快。string、list、set、Zse

2020-10-31 12:59:07 143 2

原创 三次握手与四次挥手

UDP将数据源和目的封装成数据报中,每个数据报的大小在限制在64k;不需要建立连接因无连接,远地主机在收到 UDP 报文后,不需要给出任何确认,所以是不可靠协议,但是确实一种很有效的工作方式(速度快),一般用于及时通信如qq语音、qq视频、直播等。【UDP:把数据打包、数据有限制、不建立连接、速度快、不可靠】TCPTCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP 要提供可靠的,面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接

2020-10-31 12:42:07 123

原创 多线程相关问题-再总结

文章目录从迭代器谈谈什么是进程和线程进程线程悲观锁和乐观锁死锁ThreadLocal了解吗?是怎样实现的?Synchronized和ReentrantLock的区别讲讲Synchronized理解CAS线程池内存模型与volatilevolatile原子类从迭代器谈谈可迭代 是Java集合框架下的所有集合类的一种共性,也就是把集合中的所有元素遍历一遍。迭代的过程需要依赖一个迭代器对象,采用一种**游标模式,**去访问容器对象中各个元素,而又不需暴露该对象的内部细节。迭代器就是一个接口Iterator,

2020-10-31 12:27:58 203 1

原创 我的项目-问题总结

项目遇到的问题惠杰教育文件存储问题,第3方技术的使用不熟练?也有想过大文件没有使用网关时,使用nginx做的反向代理,但是nginx对上传文件大小有限制,如果超过nginx大小,会出现413(请求体过大)错误?在nginx配置客户端大小。client_max_body_size 300Mvue-cli的组件化前端开发模式?熟悉vue-climp生成id值是19位,JavaScript处理数字类型值时候,只会处理到16位。所以在id中使用mp中IDType.ID_Worker_Str类型19位雪花

2020-10-31 12:03:28 356

原创 被问到的-场景问题总结

qps每秒的查询率。是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS) 。机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器 。微服务微服务优点:微服务是松耦合,是有功能意义的服务,无论是开发阶段、或者是部署和测试阶段都是独立的,需要增加服务时,拓展也很方便微服务能够被小团队独立开发便于理解和

2020-10-31 11:41:54 239

原创 Xshell远程连接Linux-Ubuntu开启ssh服务

感谢作者:https://blog.csdn.net/weixin_42739326/article/details/82260588站在巨人的肩膀上主要命令安装ssh服务端sudo apt-get install openssh-server安装ssh客户端sudo apt-get install openssh-client安装openssh-servicesudo apt-get install openssh-service启动ssh服务端,或者重启ssh服务端sudo ser

2020-10-31 00:08:12 437

原创 linux安装tomcat并部署项目

在win下载一个tomcat包,上传到Linux系统中,并进行解压如图所示。解压命令:tar - zxvf apache - tomcat-8.5.54. tar.gztomcat的目录结构,我们应该是很熟悉的。其中bin这个文件夹中,shutdown.sh、startup.sh,是我们常用的文件,分别是启动和关闭tomcat服务器的脚本文件。进入conf文件夹,修改server.xml主配置文件,将我们的项目部署在/opt/www目录下。在opt路径下创建,www文件夹,并创建ROOT目录,.

2020-10-29 19:32:32 769

原创 最常用Linux基本命令

文件列表ls:打开当前目录的文件列表ls /home/ym:打开home/ym/目录下的文件列表ls /:打开根目录文件列表ls -l /home/ym:详细的展示home/ym目录下的文件列表切换列表pwd:print working directory显示当前工作的目录cd:change directory切换目录cd /home/test :切换到test目录~:代表当前用户的主目录. :代表当前目录.. :代表上一级目录cd ~:切换到主目录cd ~/test:切

2020-10-29 13:39:56 406

原创 算法题-练习

输入一个链表,反转链表后,输出新链表的表头。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode head) { if(head == null){

2020-10-01 22:21:07 129

原创 经验总结-1

这是我的第一个面试,算是比较正式的一次面试吧,以下是被问到的一些问题和收获到的经验。一面一面比较基础,问了==与equals的区别,String a="a"与new String(“a”)区别,HashMap不初识容量的有什么影响,集合怎么去重,sql索引失效的几种情况,sql注入,事务隔离级别,基本类型等。mybatis问了#{}与${}的区别,mybatis-plus的基本主键策略生成。二面一开始就问了多线程的问题,我解释了进程与线程,讲了创建线程的方式,接着问了多线程的使用场景,没答好,因为

2020-10-01 22:20:20 119

原创 经验总结-2

感受这是比较正规的第二次面试了,面试官是个非常好的小哥哥,很温柔,不会给人造成很紧张的感觉,没说一句话,他都会“嗯”一声,表示在认真的聆听。这次面试收获很多,他也给我讲了很多他的经验,整个过程比较和谐,比较像是一个交流的过程,还是面试官比较好,哈哈。同时我也认识到了自己的不足(理论还行,缺乏实践),还需要继续努力。他还说认真的读了我写的博客,表示写的还不错,还就博客内容对我进行了提问!遗憾的是这个问题答的不是很好,但是面试官会不停的引导和给出思路。首先说一下他问的问题吧 。基础问题被问得了int的

2020-10-01 22:19:42 176

原创 使用idea上传代码到git流程

首先下载好git,并配合环境变量,然后在idea中进行集成。然后在项目中选择vcs,create Git Repository创建本地库一般选择当前项目文件夹。创建成功后,代码文件会变色然后选择项目根路径右键,选择Git,并点击add,使当前文件添加到本地库。然后按照下面,配置远程库(第一次时会让输入密码)此时,输入自己远程仓库url即可。如果密码忘记了,可以进行修改点击ok即可。然后进行提交文件夹。写上备注,点击committ and push提示的警告信息和T

2020-08-11 16:03:09 2812

原创 AQS实现原理-AbstractQueuedSynchronizer原理解析

文章目录模板方法模式AQS中的模板方法模式AQS是什么自己实现一个独占式的AQS的Lock锁AQS结构同步队列中的Node节点主要内容如下节点加入和退出同步队列过程Condition的原理和作用独占式AQS-获取锁源码解析独占式AQS-释放锁源码解析ReentrantLock原理可重入实现原理公平锁实现原理模板方法模式由于AQS是采用了模板方法模式,所以先了解学习设计模式中的模板方法模式。官方解释模板方法模式:定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定

2020-08-10 19:47:55 317

原创 错题记录-5

第一题第二题第三题第四题仔细看看 count=count++;的问题第五题第六题

2020-07-29 15:24:30 179 2

转载 深入理解单例模式

本文主要介绍java的单例模式,以及详细剖析静态内部类之所以能够实现单例的原理。OK,废话不多说,进入正文。首先我们要先了解下单例的四大原则:1.构造私有。2.以静态方法或者枚举返回实例。3.确保实例只有一个,尤其是多线程环境。4.确保反序列换时不会重新构建对象。我们常用的单例模式有:饿汉模式、懒汉模式、双重锁懒汉模式、静态内部类模式、枚举模式,我们来逐一分析下这些模式的区别。1.饿汉模式:public class SingleTon{ private static SingleT

2020-07-27 14:25:18 376

原创 java线程池学习总结

利用Executors创建不同的线程池满足不同场景的需求newFixedThreadPool(int pThreads)指定工作线程数量的线程池newCachedThreadPool()处理大量短时间工作任务的线程池,(1) 试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程;(2) 如果线程闲置的时间超过阈值,则会被终止并移出缓存;(3) 系统长时间闲置的时候,不会消耗什么资源newSingleThreadExecutor()创建唯一的工作者线程来执行任务,如果线程异常结束,

2020-07-27 11:49:15 255

原创 synchronized深入理解和探究

synchronized线程安全问题的主要原因是:➢ 存在共享数据(也称临界资源)➢ 存在多条线程共同操作这些共享数据解决问题的根本方法:同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作互斥锁的特性互斥性:即在同一时间只允许一个线程持有某 个对象锁,通过这种特性来实现多线程的协调机制,这样在同-时间只有一个线程对需要同步的代码块(复合操作)进行访问。互斥性也称为操作的原子性。可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的

2020-07-26 10:42:00 373

原创 数据结构-链表

文章目录链表概述实现链表链表实现栈链表实现队列链表概述真正的动态数据结构,也是最简单的动态数据结构,可以更深入的理解引用(或者指针),更深入的理解递归操作。优点:真正的动态,不需要处理固定容量的问题缺点:丧失了随机访问的能力实现链表添加元素的过程在指定位置进行插入元素时,需要辅助节点prev进行维护。public class LinkedList<E> { //节点类 private class Node { public E e; p

2020-07-20 16:33:13 628

原创 错题记录-4

第一题

2020-07-20 09:57:25 121

原创 数据结构-动态数组实现队列

文章目录队列Queue实现一个队列循环队列队列Queue队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First in First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。实现一个队列创建队列接口,主要方法如下。public interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e)

2020-07-19 18:20:29 353

原创 异常体系、集合概述、JUC包、IO机制

Error和Exception的区别Error:程序无法处理的系统错误,编译器不做检查。是系统致命错误,程序无法处理的,一般指与jvm相关的错误,如:栈溢出、系统崩溃、虚拟机错误等。1.NoClassDefFoundError -找不到class定义的异常2.StackOverflowError -深递归导致栈被耗尽而抛出的异常3.OutOfMemoryError -内存溢出异常Exception:程序可以处理的异常,铺货后可能恢复。遇见这样的问题,应该尽可能处理,使程序恢复正确。R.

2020-07-19 10:25:41 169

原创 错题记录-3

第一题第二题第三题第四题第五题详解参考博客:https://blog.csdn.net/guanmao4322/article/details/85680465

2020-07-16 16:12:24 122

Spring&Mybatis&SpringMVC总结笔记-最全最基础.pdf

这是我搜集的Spring、Mybatis、SpringMVC笔记,结合自己的理解,又进行加工,是一个很不错的SSM入门学习、面试的好资料。建议收藏哦

2020-10-31

My-C-book.docx

C语言作为一门很好的入门语言,这是我的入门学习笔记。全程干货,带你快速上手、开始编程!包含详细的基本语法,例如:流程控制、排序算法、结构体、基本函数使用、查找算法、指针操作、内存管理、文件操作等。

2020-06-17

空空如也

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

TA关注的人

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