自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

原创 对java.lang.String#intern方法的理解

对java.lang.String#intern方法的理解先看一下关于intern()的几个案例,本文以jdk1.8为例:第一组:案例1.public static void main(String[] args) { String s1 = new String("abc") + new String("whl"); // String s2 = "abcwhl"; System.out.println(s1.intern() == s1); // System.o

2021-09-07 08:38:36 289

原创 手写单向链表

手写单向链表定义:单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有指针成员变量指向列表中的下一个结点;链表是由结点构成,head指针指向第一个成为表头结点,而终止于最后一个指向NULL的指针。单向链表示意图:单向链表的特点:优点:1 链表结构在物理空间中不需要连续的,逻辑上连续的一种结构。2 单个结点创建非常方便,不需要开辟连续的物理空间,只

2021-07-04 21:51:02 353

原创 稀疏数组的实现原理及应用场景

稀疏数组引子:下图是一个11行11列的围棋棋盘,使用二维数组展示出来,此时用户要保存该棋局,有两种方式存储该棋局,第一种是使用该二维数组原封不动的存储到磁盘中,第二种方式是将其转换为稀疏数组存储到磁盘中,当下次打开时再将该稀疏数组还原为二维数组。稀疏数组的原型图:说明:第一行:第1列代表原始二维数组有几行,第2列代表原始二维数组有几列,第3列代表原始二维数组中与初始值不相同的元素有几个(在本例子中表示黑子和白子的总数量是多少个?)第二行:第1列代表第一个与初始值不相同的元素所在的行,第2列代

2021-06-22 12:18:55 336

原创 异常信息:java.lang.IllegalMonitorStateException

异常信息:java.lang.IllegalMonitorStateException异常信息:原因分析:解决方案:异常信息:java.lang.IllegalMonitorStateException原因分析:当前的线程不是此对象监视器的所有者,方法上使用了synchronized关键字,但是方法体内使用了condition.await()方法和condition.signal()方法。解决方案:去掉方法上的synchronized关键字,在方法体内添加lock.lock()和lock.unl

2020-11-22 22:26:13 276

原创 使用JDK中的JUC中的延时队列来自定义定时任务

自定义定时任务通过JDK自带了多种实现定时任务的接口:juc中的线程池,定时器Timer,死循环,juc延时队列。我们就使用juc延时队列来实现自定义的定时任务。适用场景周报、月度报表之类的统计数据任务。优点:异步执行、实现代码的解耦合数据批量处理时间驱动实现代码创建自定义定时任务类,实现Delay接口class DelayTask implements Delayed { private long timeout;//任务执行时间 private DelayQueu

2020-11-20 22:15:51 331

原创 使用JDK原生的ReentrantLock读写锁解决写操作并发问题

使用JDK原生的ReentrantLock读写锁解决写操作并发问题ReentrantLockDemo测试类public class ReadWriteLockDemo { public static void main(String[] args) { MyCache myCache = new MyCache(); for (int i = 1; i <= 5; i++) { final int it = i;

2020-11-13 22:25:52 195

原创 RabbitMQ知识体系的脑图结构

RabbitMQ知识体系的脑图结构主要包括概念、MQ的分类、主流的MQ产品、RabbitMQ的五种消息模型、死信队列、延时队列,如何使用RabbitMQ及关于RabbitMQ的面试题。原文件下载地址:https://download.csdn.net/download/whl8614john/13108961...

2020-11-12 22:34:59 229

原创 页面中各种标签中链接地址(href src action)的区别

页面中各种标签中链接地址(href src action)的区别1.href是a标签的链接,表示点击a标签需要跳转到哪里。例如:<a href="/demo/index.jsp">跳转到首页</a>2.action是form表单的地址,表示表单需要提交到哪个地址。例如:<form action="/demo/test" method="post"> <input type="submit" value="submit"></for

2020-11-11 22:21:33 896

原创 tomcat mysql nginx redis最大并发量

Tomcat MySQL Nginx Reids最大并发量Tomcattomcat 默认配置的最大请求数是150,也就是说同时支持150个并发。具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给JVM的内存越多性能也就越高,但也会加重GC的负担。当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。MySQL查看官方文档https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.htmlMySQL默

2020-11-09 22:43:41 5041

原创 SpringMVC架构及工作流程(12步)

图解SpringMVC架构及工作流程一、图解SpringMVC架构SpringMVC架构分为三部分:M:model模型,分为业务模型和数据模型。数据模型就是我们经常使用的pojo包、entity包或bean包下的实体类,主要用于存储数据。业务模型就是我们经常使用的controller包或web包,service包,mapper包或dao包下的业务类,用于处理业务,不存储数据,本质上也就是适合放入spring容器中,并以单例模式存在的类。V:view 视图负责视图解析和渲染视图C:contr

2020-11-08 14:58:13 1118

原创 好玩的不可思议的ThreadPool线程池

好玩的、不可思议的ThreadPool线程池JDK1.5为我们新增了两种实现多线程的方式:线程池和Callable接口,本次我们来玩一下线程池。首先,介绍一下ThreadPoolExecutor的构造函数及其7个参数的内容:其次,我们来看一下线程池执行任务的流程:ThreadPoolExecutor源码对execute方法的说明:其本质就是ThreadPool线程池的执行任务流程,用流程图示意如下:在单轮次的多个任务过来时,线程池中的线程执行任务时完全符合上述规律。那么,如果我们在线程池

2020-11-01 18:32:25 118

原创 Initialization failed for ‘http://start.aliyun.com‘(idea不能使用阿里云镜像创建SpringBoot项目)

Initialization failed for ‘http://start.aliyun.com’IDEA创建SpringBoot无法连接的错误,弹出警告信息如下:Initialization failed for ‘http://start.aliyun.com’经检查,我的电脑连接网络正常,不是网络的原因,那么只能是IDEA本身设置的问题了。经过如下3步设置后,即可正常创建SpringBoot项目。1.打开IDEA的设置,找到HTTP Proxy,进行如下设置:2.测试是否连接正常

2020-10-29 11:48:55 37906 53

原创 JVM面试资料

JVM面试资料学会以下的内容,即可通过90%的关于JVM的面试题。七种垃圾回收器的具体情况详见:https://blog.csdn.net/whl8614john/article/details/109232077面试题:1.为什么JVM使用PC寄存器记录当前线程的执行地址?因为CPU要在各个线程间进行切换,当切换到某一个线程时,就得知道该线程应该执行哪一行指令;到切换加原线程时,又得知道从哪一行指令开始执行。否则当CPU来回切换线程时,可能导致重复执行某些行的指令,也可能导致跳过某些行的指令,

2020-10-25 22:12:38 109

原创 上oracle官网下载老版本JDK(JDK5/JDK6/JDK7)的正确姿势

上oracle官网下载老版本JDK(JDK5/JDK6/JDK7)的正确姿势官方下载地址:https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html

2020-10-24 22:02:09 488

原创 JVM(HotSpot VM)七大垃圾收集器的特点汇总

JVM(HotSpot VM)七大垃圾收集器的特点汇总回收器名称算法分类作用区域是否多线程类型特点备注Serial复制算法新生代单线程串行响应速度优先适合用于单CPU、内存较小的情况,算法简单,回收效率不高。Client默认垃圾回收器。ParNew复制算法新生代多线程并行响应速度优先适用于多CPU,并行垃圾回收,回收效率较高。唯一和CMS搭配使用的新生代垃圾回收器。Parallel Scavenge复制算法新生代多线程并行吞吐量优

2020-10-22 22:31:19 176

原创 CMS(Concurrent-Mark_Sweep)垃圾回收器的工作原理

CMS(Concurrent-Mark_Sweep)垃圾回收器的工作原理简介:对于许多应用程序而言,在程序运行时的吞吐量不如快速响应时间那么重要,尤其是在互联网站或者B/S系统的服务端,这类应用尤其用户的体验感,中间出现停顿的时间越短越好,CMS垃圾收集器应运而生,它在JDK1.5时作为HotSpot JVM的一个默认的内置垃圾收集器。CMS的特点是低延迟,很适合于与用户交互的应用。这款垃圾收集器是一第一款真正意义上的并发垃圾回收器,它使用的是标记-清除算法,所以也会有"stop the world"

2020-10-21 22:50:10 330

原创 InnoDB存储引擎和MyISAM存储引擎的区别

InnoDB存储引擎和MyISAM存储引擎的区别MySQL最主要的两种存储引擎是InnoDB和MyISAM。InnoDB存储引擎是MySQL的默认使用引擎,它被设计用来处理大量短期事务,一般情况下使用该存储引擎。MyISAM存储引擎提供了大量的特性,包括全文索引、压缩、空间函数等,但该存储引擎不支持事务和行锁,最致命的缺陷就是崩溃后无法进行恢复。以下是这两种存储引擎的区别:...

2020-10-20 22:22:41 218

原创 Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syn

Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘}’原因分析:可能是sql语句有误,导致问题的原因可能出现在’}’ 附近。将SELECT COUN

2020-10-19 22:48:37 9896 1

原创 centos常用指令(持续更新,更新到2020年10月18日)

centos常用指令软件有关在线安装软件yum install 软件名—— 例如: yum install gcc在线安装软件不进行任何提示,所有请求都是yesyum install -y 软件名—— 例如:yum install -y gcc查询jdk安装路径`echo $JAVA_HOME` (配置环境变量可以使用该命令)软件使用mysql启动命令service mysqld start关闭命令service mysqld stop重启命令servic

2020-10-18 22:11:59 205 1

原创 在IDEA中添加@Getter注解后报红问题解决方案

在IDEA中添加@Getter注解后报红问题解决方案需要在IDEA中安装lombok插件,并引入 lombok的依赖即可。 <!--lombok用来简化实体类:需要安装lombok插件--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependen

2020-09-26 21:33:13 1649

原创 mysql复合(组合)索引失效的几种情况总结(未使用索引、索引中断、范围查询、否定条件、模糊查询、使用函数、类型转换及“key_len”的说明)

复合(组合)索引失效的几种情况总结创建一张测试表:emp 表CREATE TABLE emp ( id INT (11) NOT NULL AUTO_INCREMENT, empno INT NOT NULL, NAME VARCHAR (30) DEFAULT NULL, age INT (13) DEFAULT NULL, deptId INT (11) DEFAULT NULL, PRIMARY KEY (id)) ENGINE = INNODB AUTO_INCREME

2020-09-13 14:22:54 4811

原创 SpringMVC的Hello示例程序及原理分析

SpringMVC的Hello示例程序及原理分析创建一个web的模块或工程添加jar包:spring-aop-5.2.5.RELEASE.jarspring-beans-5.2.5.RELEASE.jarspring-context-5.2.5.RELEASE.jarspring-core-5.2.5.RELEASE.jarspring-expression-5.2.5.RELEASE.jarspring-jcl-5.2.5.RELEASE.jarspring-web-5.2.5.REL

2020-08-09 19:30:40 133

原创 在mybatis使用collection标签进行“一对多,分步”查询的分析说明

一对多,分步查询1.建立两个javaBeanpublic class Teacher { private int id; private String name; private List<Student> stus;public class Student { private int id; private String name; private Teacher teacher;2.建立数据库表,并插入数据创建学生表create

2020-08-04 19:49:49 651

原创 关于mybatis中collection标签中各属性的说明

<result column="name" property="name"/><!--collection定义一个子集合对象返回ofType:指定集合里面元素的类型property属性设置集合的属性名--><collection property="passengers" ofType="Passenger"><!--id指的是主键,column是数据库中的列,可以是别名property映射的是实体类中的属性result是普通列(非主键)--

2020-08-03 16:43:38 10723 2

原创 404 The origin server did not find a current representation for the target resource or is not

如果出现404错误,并且有以下信息Type Status ReportMessage /book1/registServletDescription The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.那可能是在类名注解的属性写成name了,把name改成value就可以了.@WebSe.

2020-07-19 11:55:06 434

RabbitMQ.xmind

RabbitMQ知识体系的脑图结构。 主要包括概念、MQ的分类、主流的MQ产品、RabbitMQ的五种消息模型、死信队列、延时队列,如何使用RabbitMQ及关于RabbitMQ的面试题。

2020-11-12

JVM面试资料:JVM结构、JVM调优、四大垃圾回收算法、七大垃圾回收器

JVM面试资料。 JVM结构:类加载器,执行引擎,本地方法接口,本地内存结构; 四大垃圾回收算法:复制算法、标记-清除算法、标记-整理算法、分代收集算法 七大垃圾回收器:Serial、Serial Old、ParNew、CMS、Parallel、Parallel Old、G1 JVM调优:命令行指令,设置堆内存大小的参数

2020-10-26

空空如也

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

TA关注的人

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