- 博客(67)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 浅析抽象队列同步器(AQS)
浅析抽象队列同步器(AQS)目录浅析抽象队列同步器(AQS)什么是AQSAQS的原理state状态AQS的共享资源状态:独占式和共享式添加锁和释放锁什么是ReentrantLock实现如何使用底层实现除非我不想赢,否则没有人能让我输。复习多线程并发包总结什么是AQS AQS(AbstractQueuedSynchronizer...
2020-04-20 11:21:55
581
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 线程池+CountDownLatch优化代码,提高程序执行效率
在前几篇博客中,我使用Redis来缓存热点数据,提高首页的访问速度 (参考SSM整合Redis)发现,相比于每次从数据库中查询数据,程序执行速度提高了很多。今天,我决定对这个需求继续优化。采用多线程的方式来实现。先来看一下优化之前的代码:long startTime = System.currentTimeMillis();model.addAttribute("types",...
2020-04-05 17:54:34
1661
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一文看懂Java中创建线程的所有方式(继承Thread,实现Runnable,实现Callable,线程池)
一文看懂Java中创建线程的所有方式好像有点标题党的感觉,但是干货绝对多,绝对有收获本文部分参考周阳老师大厂面试题第二讲觉得有用,点个赞吧目录1、继承Thread类2、实现Runnable接口3、 实现callable接口4、使用线程池线程池的几个重要参数介绍线程池的底层工作原理生产上如何合理设置线程池参数自定义线程池线程池的拒绝策略面...
2020-04-02 23:18:02
544
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 什么是缓存穿透、缓存击穿、缓存雪崩?如何预防?
什么是缓存穿透、缓存击穿、缓存雪崩?如何预防?一、什么是缓存穿透,如何预防?缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,请求直接打在了数据库上。举个例子:对于系统A,假设一秒 5000 个请求,结果其中 4000 个请求是黑客发出的恶意攻击。黑客发出的那 4000 个攻击,缓存中查不到,因此就要去数据库里查4000次,并且也查不到。数据库 i...
2020-03-18 10:20:32
1038
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 尚硅谷2020最新版周阳SpringCloud(H版&alibaba)框架开发教程 学习笔记
前言:今天看到周阳老师出了新课,十分欣喜,很喜欢周阳老师的讲课风格,内容也充实,我也算是周阳老师忠实粉丝啦。新出的springcloud第二版很符合我现阶段的学习需求。但美中不足的是,目前只有视频资料,并没有周阳老师上课的脑图,一点一点跟着老师构建项目,稍有吃力。将目前学习的笔记整理,供自己日后复习,供大家参考。若有不足,还请指正。周阳微服务架构与SpringCloudSprin...
2020-03-05 21:04:14
72837
47
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java并发之CountDownLatch、CyclicBarrier、Semaphore使用实例
最近学习了Java并发编程中的CountDownLatch、CyclicBarrier、Semaphore,做个小总结。这三个类都是java1.5中提供的一些非常有用的辅助类,用于帮助程序员实现并发编程。CountDownLatch背景 CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。 CountDown...
2020-01-06 12:05:42
756
转载 spring.factories
在阅读spring-boot相关源码时,常常见到spring.factories文件,里面写了自动配置(AutoConfiguration)相关的类名,因此产生了一个疑问:“明明自动配置的类已经打上了@Configuration的注解,为什么还要写spring.factories文件?”——“在spring-boot项目中pom文件里面添加的依赖中的bean是如何注册到spring-boot项目的spring容器中的呢?”,不难得出spring.factories文件是帮助spring-boot项目包以
2020-06-18 10:09:20
810
原创 如何查看JVM默认的垃圾回收器 java -XX:+PrintCommandLineFlags -version
java -XX:+PrintCommandLineFlags -version终端环境下,切换到当前程序目录,输入上面的参数,回车,输出如下-XX:InitialHeapSize=132730432 -XX:MaxHeapSize=2123686912 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+U...
2020-05-03 10:06:47
1059
原创 剑指Offer——链表中的倒数第K个节点
那么多学技术的都可以成功,凭什么我不行链表中的倒数第K个节点本文基于《剑指Offer》 使用Java代码实现更多《剑指Offer》Java实现合集题目 输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是...
2020-04-27 16:50:34
297
原创 剑指Offer——有环链表的入口点
那么多学技术的都可以成功,凭什么我不行重构二叉树本文基于《剑指Offer》 使用Java代码实现更多《剑指Offer》Java实现合集题目 一个链表中包含环,如何找出环的入口结点?思路 1.确定链表是否有环:通过两个不同速度的指针确定,当两个指针指向同一个结点时,该结点为环中的一个结点。 2.确定环中结点的数目n:指针走一圈,边走边计数 3....
2020-04-27 16:42:27
275
原创 剑指Offer第七题——两个栈实现一个队列以及两个队列实现一个栈
那么多学技术的都可以成功,凭什么我不行两个栈实现一个队列以及两个队列实现一个栈更多《剑指Offer》Java实现合集目录两个栈实现队列题目思路代码实现收获延申 两个队列实现一个栈思路代码实现两个栈实现队列题目 用两个栈实现一个队列。请实现它的两个函数appendTail和deleteHead, 分别...
2020-04-26 10:10:28
170
原创 剑指Offer刷题——重构二叉树
那么多学技术的都可以成功,凭什么我不行重构二叉树更多《剑指Offer》Java实现合集目录题目思路测试用例代码实现解法1解法2Main函数以及测试用例输出结果收获题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2, 4, 7, 3, 5,...
2020-04-25 20:29:27
265
原创 剑指Offer刷题目录
那么多学技术的都可以成功,凭什么我不行持续更新》》》》》剑指Offer面试题2——二维数组中的查找剑指Offer面试题4——替换空格剑指Offer面试题5——反向输出链表剑指Offer面试题6——重构二叉树...
2020-04-25 20:17:19
239
原创 剑指Offer面试题5——从尾到头打印链表
复习算法,15天内刷完剑指Offer那么多学技术的都可以成功,凭什么我不行?1、题目 输入一个链表的头结点,从尾到头反过来打印出每个结点的值。结点定义如下:class Node { int val; Node next = null; public Node(int val) { this.val = val; }}2...
2020-04-25 17:11:26
194
原创 剑指Offer面试题4——替换空格
复习算法,15天内刷完剑指Offer那么多学技术的都可以成功,凭什么我不行?1、题目请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。2、思路思路1:利用SpringBuilder,因为Spring是不可变的。从前往后遍历字符串,遇到空格就将后面所有...
2020-04-25 16:08:58
166
原创 剑指Offer面试题2——二维数组中的查找
从今天开始,复习算法,目标在15天内刷完剑指offer。一、题目在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。例如下面这个数组。二、解题思路首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找...
2020-04-25 13:51:40
192
原创 SQLyog连接Mysql错误代码2003 Can't connect to MySQL server on 'localhost'(10061)
开发工具篇——SQLyog今天在使用SQLyog连接Mysql时提示 错误代码2003 Can't connect to MySQL server on 'localhost'(10061)原因是昨天使用电脑管家进行一键优化时将MySQL服务关闭了。所以只要将MySQL启动就好了。WIN10解决方案:菜单栏搜索 服务,选择MySQL右击选择启动即可...
2020-04-24 08:50:34
6888
3
原创 内存溢出和内存泄漏
内存溢出和内存泄漏那么多学技术的都可以成功,凭什么我不行目录内存溢出和内存泄漏概念内存泄漏memoryleak内存溢出outofmemory二者的关系内存溢出的原因及解决方法内存溢出原因:内存溢出的解决方案:概念内存泄漏memoryleak是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内...
2020-04-09 23:17:38
280
原创 JDK8中接口的变化
JDK8中接口的变化那么多学技术的都可以成功,凭什么我不行在JDK8之前,接口之中可以定义变量和方法。变量必须(默认)是public、static、final的,方法必须(默认)是public、abstract的。由于这些修饰符都是默认的以下写法等价:public interface JDK8BeforeInterface { public static fin...
2020-04-09 22:59:49
373
原创 线程池关闭不合理,导致应用无法正常stop的情况
在上一篇博客中,我使用了线程池进行管理线程,达到线程复用的效果。详情参考:线程池+CountDownLatch优化代码,提高程序执行效率程序启动、运行皆无异常,线程池确实对程序中创建的线程进行管理,但是,在我关闭tomcat时,无法正常关闭,程序出现报错。报错信息如下:05-Apr-2020 19:09:45.003 璀﹀憡 [localhost-startStop-2] or...
2020-04-05 20:23:56
971
原创 如何从Linux下载一个文件到本地
需求:将之前上传到tomcat中的war包下载到本地如果安装了xftp之类的跨平台传输工具,可以直接使用xftp传输本文以xshell演示如何使用命令进行下载步骤:1、到需要下载文件目录 pwdpwd输出: /opt/apache-tomcat-8.5.51/webapps/2、复制路径3、sz 路径+/文件名sz /opt/apache-tomc...
2020-04-02 15:27:25
12258
原创 SpringTask入门之定时清除缓存数据
在上一篇博客中SSM整合redis中 ,我将redis整合进SSM中,目的是将首页的热点数据放入缓存中,以免每次都去数据库读取,效率低下。与此同时,这样可能会导致数据不一致,一段时间以后,缓存中的数据,可能不是热点数据了。解决方案:使用SpringTask任务调度SpringTask什么是任务调度在企业级应用中,经常会制定一些“计划任务”,即在某个时间点做某件事情,核心是以时间为关...
2020-04-02 12:26:44
596
原创 SSM整合redis
前言:今天决定对原来一个练手项目,进行简单的重构,其中一个部分就是引入Redis。简单介绍一下这个项目:此项目为小型的博客平台,用户可以在网页端或Android端查看、新建、删除、搜索博客,也可以实现点赞、关注和评论。用户模块包括用户在网页端或Android端登录、注册、浏览平台推荐的最新博客、浏览平台最热门博客、搜索相关博客、新建博客、修改博客、删除博客、点赞、评论、关注、查看关注用...
2020-03-31 19:27:12
257
3
原创 深入理解ConcurrentModificationException并发修改异常
深入理解ConcurrentModificationException并发修改异常我是一个双非二本院校软件工厂专业的学生,自学Java6个月接下来一段时间,我将以复习的形式,总结所学知识,同时进行输出,形成自己的知识体系。鸡汤:那么多学技术的都可以成功,凭什么你不行?我们先来看两个案例:/** * @ClassName: ConcurrentModif...
2020-03-27 23:46:22
290
原创 面试题:手写一个快速排序
手写一个快速排序算法实现对数组int[] arr = {49, 38, 65, 97, 23, 22, 76, 1, 5, 8, 2, 0, -1, 22};进行排序基本思想是:1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。虽然快速排序称为分治法,但...
2020-03-17 20:12:38
839
1
原创 大厂面试题:两个线程交叉打印,一个打印数字,一个打印小写字母,结果为 1A2B3C4D5E6F
前言:这道题主要考察的就是,多线程之间的通信、唤醒、切换问题。B站上看到马士兵老师的视频:这道大厂面试题区分平庸与卓越部分解法整理如下:LockSupport实现方式/** * @ClassName: LockSupport * @description: 两个线程交叉打印,一个打印数字,一个打印小写字母,结果为 1A2B3C4D5E6F * LockSupport实现 ...
2020-03-15 20:53:38
797
5
原创 尚硅谷2020周阳老师SpringCloud学习整理笔记第二部分
第一部分:尚硅谷周阳老师SpringCloud学习整理笔记第一部分经过5天的学习,目前学到了P92,刚刚结束了SpringCloud Stream,由于还有一些别的事情所以进度有点慢,笔记也整理得有点潦草。第一部分篇幅逐渐臃肿,故下面的笔记,分享于这篇博客。笔记供自己日后复习,若有需要也供大家参考。若有不足,还请指正。十三、HystrixHystrix介绍在微服务场景中,通常会...
2020-03-11 08:22:14
24865
13
原创 mybatis中配置useGeneratedKeys="true" keyProperty="id" 的作用
我们有时候在开发中需要向表中插入自增ID,这个时候领域模型如果想要获取该ID的值,就需要在相应的mapper文件中添加useGeneratedKeys="true" keyProperty="id"。mapper.xml示例: <insert id="create" parameterType="payment" useGeneratedKeys="true" keyProp...
2020-03-05 19:41:23
8841
7
原创 SpringBoot配置devtools实现热部署
做项目经常会遇到一个问题,就是每次代码更改后都要重启项目,很繁琐很浪费时间。那么是否有方法来解决呢。spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。devtools的原理深层原理是使用了两个ClassLoader,一个Classloader加载那些不会...
2020-03-05 19:29:30
251
1
原创 @Autowired和@Resource的区别@Autowired()@Qualifier("baseDao") privateBaseDao baseDao;
相同点@Resource的作用相当于@Autowired。@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。不同点@Autowired按byType自动注入,而@Resource默认按 byName自动注入。@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的nam...
2020-03-05 18:59:57
401
原创 Java中线程的六种状态
Java中线程的六种状态1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就...
2020-03-04 20:12:04
192
原创 Docker入门,看懂这篇文章就够了
Docker一、Docker是什么 Docker是一个容器化平台,它将应用程序及其所有依赖项以容器的形式打包在一起,以确保应用程序在任何环境(无论是开发环境、测试环境还是生产环境)中无缝运行。 Docker容器,将一个软件包在一个完整的文件系统中,其中包含运行所需的一切:代码、运行时、系统工具、系统库等任何可以安装在服务器上的东西。 它都将始终运行相同的程序,无论软件...
2020-03-04 10:16:23
631
原创 面试题:java中静态变量、静态代码块,普通代码块,构造函数加载顺序
这个问题其实看起来很简单,但是又很容易忘记和混淆。总结如下:先看代码:/** * @ClassName: ClassInitializationDemo * @description: 类初始化顺序 * @author: XZQ * @create: 2020/3/1 9:34 **/public class ClassInitializationDemo { pub...
2020-03-01 09:56:16
287
原创 lambda表达式提示变量错误:Variable used in lambda expression should be final or effectively final
今天在使用lambda表达式时,遇到一个问题。Variable used in lambda expression should be final or effectively final代码如下:/** * @ClassName: CyclicBarrierDemo * @description: * @author: XZQ * @create: 2020/2/...
2020-02-28 10:41:42
10851
2
原创 Java中枚举在生产中的常见用法
首先枚举的入门请参考博客java枚举入门最近在学习JUC中的countdownlatch时做练习Java并发之CountDownLatch、CyclicBarrier、Semaphore使用实例,用到枚举,需要六个国家。代码如下:枚举/** * 枚举 枚举在生产中的使用 */public enum CountryEnum { One("齐", 1), two("楚...
2020-02-28 09:23:54
149
1
原创 IDEA中使用Lombok插件时编译提示找不到符号
今天在IDEA中用到了Lombok,关于Lombok的入门可以参考我的另一篇博客lombok入门原因是没有开启插件化注解处理解决方案如下:File->Settings->Build,Execution,Deployment->Compiler,Annotation Processors开启Enable annotation processing...
2020-02-28 09:17:28
1186
转载 Javap 指令集
有时候为了能理解JVM对程序所做的优化等,需要查看程序的字节码,因此知道了解一些常见的指令集很重要!参考链接Javap 指令集
2020-02-26 09:48:10
125
原创 什么是JS跨域、以及CORS解决方案
一、什么是JS跨域1、跨域:在了解跨域之前,首先要知道什么是同源策略(same-origin policy)。简单来讲同源策略就是浏览器为了保证用户信息的安全,防止恶意的网站窃取数据,禁止不同域之间的JS进行交互。对于浏览器而言只要域名、协议、端口其中一个不同就会引发同源策略,从而限制他们之间如下的交互行为:2、JS跨域:指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个...
2020-02-25 22:09:45
1756
原创 如何在IDEA中导入别人的maven项目
想学习一门技术最先肯定要看别人的项目文件,或者自己在别的机器上写的项目想部署在当前计算机,发现两篇博文,按照步骤运行成功。链接1:关于如何完美在idea中导入别人的maven项目链接2:idea 如何运行maven项目...
2020-01-19 20:47:11
3422
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人