自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 架构师学习笔记(持续更新)

1、此博客所有内容均出自于咕泡学院架构师第三期课程。2、此博客整理了我所学习的课程的所有笔记链接。3、此博客会持续更新新的博客链接,直到课程学习完。4、此博客仅供参考,仅作为学习使用。此博客包含:设计模式,Spring源码解析…相关面试题…(后续会不断更新)学习顺序为:设计模式,Spring源码解析…设计模式相关设计模式相关Java软件设计的七大原则java GoF 的 23 种设计模式的分类和功能Spring源码学习笔记:经典设计模式之工厂模式Spri.

2020-10-07 23:36:35 762

原创 MySQL 执行计划参数

MySQL 执行计划参数

2022-08-15 12:39:10 687 1

原创 docker全部关闭、全部重启、全部删除操作

docker全部关闭、全部重启、全部删除操作

2022-08-14 23:47:47 829

原创 mysql distinct和order by 一起用时,order by的字段必须在select中

mysql distinct和order by 一起用时,order by的字段必须在select中

2022-08-14 23:40:17 5287

原创 Java 8 Steam 常用的几个方法

Java 8 steam 的常用的几个用法

2022-08-14 12:12:12 2591

原创 Mybatis 常见知识点问题

1、resultType 和resultMap 的区别?resultType 是<select>标签的一个属性,适合简单对象(POJO、JDK 自带类型:Integer、String、Map 等),只能自动映射,适合单表简单查询。<select id="selectAuthor" parameterType="int" resultType="com.demo.domain.Author"> select author_id authorId, author_name

2020-12-06 21:38:05 327

原创 Mybatis 与Spring整合及原理

Mybatis 与Spring原理分析http://www.mybatis.org/spring/zh/index.html这里我们以传统的Spring 为例,因为配置更直观,在Spring 中使用配置类注解是一样的。编程式的工程,也就是MyBatis 的原生API 里面有三个核心对象:SqlSessionFactory、SqlSession、MapperProxy。但是大部分时候我们不会在项目中单独使用MyBatis 的工程,而是集成到Spring 里面使用,但是却没有看到这三个对象在代码里面的出现

2020-12-05 22:49:07 458

原创 Spring 经典高频面试题

相关内容:架构师系列内容:架构师学习笔记(持续更新)1、什么是 Spring 框架?Spring 框架有哪些主要模块?Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。Spring 帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring 框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成 Spring 框架,不必担心 Spring 是如何在后台进行工作的。Spring 框架至今已集成了 20 多.

2020-12-04 23:03:20 186

原创 Spring5的几个新特性

Spring5 新特性简述Spring 5 于 2017 年 9 月发布了通用版本 (GA),它标志着自 2013 年 12 月以来第一个主要Spring Framework 版本。它提供了一些人们期待已久的改进,还采用了一种全新的编程范例,以反应式描述中陈述的反应式原则为基础。这个版本是很长时间以来最令人激动的 Spring Framework 版本。Spring 5 兼容 Java™8 和 JDK 9,它集成了反应式流,以方便后续提供一种颠覆性方法来实现端点和 Web 应用程序开发。当然,反应式编程

2020-12-03 23:12:57 681

原创 MyBatis 核心对象,工作原理及源码解读

Mybatis工作原理InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sqlSessionFactory.openSession();BlogMapper mapper = session.getMa

2020-12-02 22:35:50 244

原创 MyBatis 一级缓存二级缓存详解

MyBatis 缓存详解cache 缓存缓存是一般的ORM 框架都会提供的功能,目的就是提升查询的效率和减少数据库的压力。跟Hibernate 一样,MyBatis 也有一级缓存和二级缓存,并且预留了集成第三方缓存的接口。缓存体系结构MyBatis 跟缓存相关的类都在cache 包里面,其中有一个Cache 接口,只有一个默认的实现类PerpetualCache,它是用HashMap 实现的。除此之外,还有很多的装饰器,通过这些装饰器可以额外实现很多的功能:回收策略、日志记录、定时刷新等等。但

2020-12-01 21:29:48 360

原创 Mybatis体系结构及工作流程

Mybatis工作流程首先在MyBatis 启动的时候我们要去解析配置文件,包括全局配置文件和映射器配置文件,这里面包含了我们怎么控制MyBatis 的行为,和我们要对数据库下达的指令,也就是我们的SQL 信息。我们会把它们解析成一个Configuration 对象。接下来就是我们操作数据库的接口,它在应用程序和数据库中间,代表我们跟数据库之间的一次连接:这个就是SqlSession 对象。我们要获得一个会话, 必须有一个会话工厂SqlSessionFactory 。SqlSessionFactor

2020-11-18 23:26:02 211 1

原创 Mybatis简单入门及配置文件标签详情

什么是ORM框架ORM 的全拼是Object Relational Mapping,也就是对象与关系的映射,对象是程序里面的对象,关系是它与数据库里面的数据的关系。也就是说,ORM 框架帮助我们解决的问题是程序对象和关系型数据库的相互映射的问题。O:对象——M:映射——R:关系型数据库什么是MyBatisMyBatis是一个帮自动化的ORM框架,“半自动化”是相对于Hibernate 的全自动化来说的,也就是说它的封装程度没有Hibernate 那么高,不会自动生成全部的SQL 语句,主要解决的是

2020-11-18 00:04:24 486 1

原创 Java 线程池的复用原理

线程池的运行图在线程池中,线程会从 workQueue 中读取任务来执行,最小的执行单位就是 Worker,Worker 实现了 Runnable 接口,重写了 run 方法,这个 run 方法是让每个线程去执行一个循环,在这个循环代码中,去判断workQueue中是否有任务,若有则直接去执行这个任务,因此线程数不会增加。而在添加的线程的核心方法就是execute 中的addWorker方法:首先看execute方法:public void execute(Runnable command) {

2020-11-17 23:25:03 265

原创 java 阻塞队列介绍

详细博客:https://www.cnblogs.com/bjxq-cs88/p/9759571.html阻塞队列(BlockingQueue)阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。阻塞队列提供了四种处.

2020-11-10 15:42:04 105

原创 多线程之join用法

先看例子:网上的例子/*** join的用法,哪个线程调用join哪个线程就插队先执行*/public class JoinTest { public static void main(String[] args) { //开启学习线程 Study study = new Study(); study.setName("学习线程------"); study.start(); try {

2020-11-07 00:09:07 2098

原创 多线程之 interrupt,interrupted,isInterrupted 方法区别

首先看测试代码/*** Created by Jarvis.y on 2020/11/5* <p>* interrupt , interrupted , isInterrupted 方法测试*/public class InterruptTest { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start();

2020-11-05 23:13:32 539

原创 synchronized 为什么不能使用string对象而是要使用string.intern

先看代码:/*** Created by Jarvis.y on 2020/11/5*/public class StringTest { public static void main(String[] args) { String s1 = "Jarvis.y"; String s2 = new String("Jarvis.y"); System.out.println(s1.equals(s2)); System.o

2020-11-05 23:12:28 2303 1

原创 多线程之wait和notify使用注意事项

首先先看代码这个是网上流传比较广的例子/*** Created by Jarvis.y on 2020/11/4* <p>* 1、wait() and notify() and notifyAll() 需要在 synchronized 同步方法中。* 如果没有 synchronized,会出现 IllegalMonitorStateException 异常* 2、wait and notify 一定要使用被锁的对象(synchronized修饰的)。* 3、使用wait的时候 一

2020-11-04 23:30:22 250

原创 多线程之终止线程的四种方法

终止线程的四种方法第一种:正常运行结束第二种:使用退出标志退出线程第三种:interrupt()方法退出第四种:stop方法退出第一种:正常运行结束这种就是程序正常执行完run方法或者cell方法然后退出。第二种:使用退出标志退出线程一般run方法执行完,线程就会正常结束,但是我们常常有些需求是需要长时间运行的。只有满足某些条件,才能终止这些线程。所以使用一个变量来控制循环,比如最直接方式就是设置一个boolean类型的变量,并且通过设置这个标志为true或者false来控制循环是否退出。

2020-11-03 20:24:39 4910

原创 线程的五大生命周期

线程在创建并启动这一系列操作会经历五大生命周期分别为:新建(NEW),就绪(Runnable),运行(Running),阻塞(Blocked),死亡(Dead)当线程被启动后,它不可能一直使用CPU独自运行,还有更多的线程需要使用到CPU,所以CPU会在多条线程之间切换执行命令,于是线程状态也会多次在运行,阻塞之间切换。线程运行生命周期图新建状态 (NEW)当程序使用 new 关键字创建了一个线程之后,该线程就处于新建状态,此时仅由 JVM 为其分配内存,并初始化其成员变量的值。Thread

2020-11-02 23:32:12 575

原创 Spring 事务传播原理及数据库事务操作原理

先看看 Spring 事务的基础配置<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst

2020-11-01 20:37:40 359

原创 30个类仿真手写spring框架V2.0版本

必读,代码只是模仿spring的一个大致设计思路,很多细节问题并没有考虑到,代码本身还存在很多的问题,只能供参考一下。从 Servlet 到 ApplicationContext我们已经了解 SpringMVC 的入口是 DispatcherSerlvet,我们实现了 DispatcherServlet 的 init()方法。在 init()方法中完成了 IOC 容器的初始化。而在我们使用Spring 的经验中,我们见得最多的是 ApplicationContext,似乎 Spring 托管的所有实例

2020-11-01 20:11:35 2479

原创 Executors 线程池的7个参数详解

线程池创建有7个参数下面为构造函数/*** Creates a new {@code ThreadPoolExecutor} with the given initial* parameters.** @param corePoolSize the number of threads to keep in the pool, even* if they are idle, unless {@code allowCoreThreadTimeOut} is set* @param

2020-10-31 20:33:59 592

原创 Java 创建线程的4种方式

第一种:继承Thread类,重写run方法MyThread thread1 = new MyThread();thread1.setName("第一种线程");thread1.start();第二种:实现Runnable接口Thread thread21 = new Thread(() -> { for (int i = 0; i < 3; i++) { System.out.println(Thread.currentThread().getName() +

2020-10-29 17:31:51 225

原创 Java 通过Executors创建线程池的种类

java通过Executors可以创建四种线程池:newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需求,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数。超出的线程会在队列中等待newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任

2020-10-29 17:26:49 136

原创 Java基础之创建对象的五种方式

第一种:直接new 效率最高Person person1 = new Person("person1",22);第二种:Class类的newInstance 可以new 无参的构造方法Class<?> aClass = Class.forName("demo.Person");Person person21 = Person.class.newInstance();person21.setName("person21");Person person22 = (Person) aCl

2020-10-28 14:10:45 148

原创 Java元注解详解

前言元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:@Target // 描述这个注解能修饰在类的什么位置上@Retention // 描述这个注解的生命周期@Documented // 标记注解,表示这个注解能被javadoc 等文档化@Inherited // 标记注解,表示这个注解能不能被子类继承1、@Targetpublic @interface Ta

2020-10-28 14:07:34 239

原创 Linux centos7安装RabbitMQ3.8.9

必读以下命令都是安装最新版的。rabbitmq和erlang都是最新版的。如果不需要安装最新版的,可以去官网下载想要的版本,在安装的时候一定要对照你想安装的rabbitmq版本,否则很容易出现各种问题。rabbitmq 和erlang版本对应关系网址:https://www.rabbitmq.com/which-erlang.html1.安装Erlang由于RabbitMQ依赖Erlang, 所以需要先安装Erlang。erlang 下载地址:https://www.erlang-solution

2020-10-26 23:06:39 2292 1

原创 Mysql创建用户和给用户授权

1、 创建用户CREATE USER 'username'@'host' IDENTIFIED BY 'password';说明:username:你将创建的用户名host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器例子:CREATE USER 'db'@'localhost' IDENTIFIED BY '123456'

2020-10-24 17:50:58 302

原创 作死把mysql root用户的权限给去掉了或者忘记密码了怎么办

自己作死把root得权限全给去掉了,然后导致无法添加用户等其他操作,然后就想办法补救1、修改mysql 配置文件,添加属性vi /etc/my.conf # 你的配置文件可能不在这 skip-grant-tables #添加这个属性,表示不校验权限密码等2、重启mysqlservice mysql restart# 或者systemctl restart mysql3、进入mysql 客户端1、进入mysql表use mysql2.1、授权update user set

2020-10-24 17:50:48 344

原创 Idea和使用git命令上传本地新项目到gitee上

idea第一步:创建本地仓库第二步:正常add代码,提交到本地,然后到远程仓库第三步:执行第一次提交的时候会失败Push rejected:Push to origin/master was rejected第四步: 在idea的终端输入这行命令git pull origin master --allow-unrelated-histories这里可能会失败, 主要原因可能是gitee上的仓库的文件跟本地的冲突了,一般可能就是readme 文件,把gitee上的文件删掉就ok了。或者可

2020-10-24 17:50:10 630

原创 Idea 集成Lombok插件

安装插件IntelliJ IDEA 是一款非常优秀的集成开发工具,功能强大,而且插件众多。lombok 是开源的代码生成库,是一款非常实用的小工具,我们在编辑实体类时可以通过 lombok 注解减少 getter、setter 等方法的编写,在更改实体类时只需要修改属性即可,减少了很多重复代码的编写工作。首先我们需要安装 IntelliJ IDEA 中的 lombok 插件,打开 IntelliJ IDEA 后点击菜单栏中的 File–>Settings,或者使用快捷键 Ctrl+Alt+S 进入

2020-10-21 22:17:07 819

原创 Mysql 更改密码详解及设置免密登录

更改密码:5.7版本以前:update mysql.user set password=password('root') where user='root';5.7及以上:update mysql.user set authentication_string=password('root') where user='root';其他更改密码方式:set password for root@localhost = password('123456');ALTER USER 'root'@'%

2020-10-20 23:11:42 395

原创 Mysql问题 ERROR 1054 (42S22): Unknown column ‘password‘ in ‘field list‘

问题:在mysql 5.7版本 修改mysql 用户密码:update mysql.user set password=password('root') where user='root'提示出错:ERROR 1054 (42S22): Unknown column 'password' in 'field list'问题原因:在mysql5.7及以上数据库下已经没有password这个字段了,password字段改成了authentication_stringupdate MySQL.u

2020-10-20 23:07:36 518

原创 Spring MVC 使用优化建议

1、Controller 如果能保持单例,尽量使用单例这样可以减少创建对象和回收对象的开销。也就是说,如果 Controller 的类变量和实例变量可以以方法形参声明的尽量以方法的形参声明,不要以类变量和实例变量声明,这样可以避免线程安全问题。2、处理 Request 的方法中的形参务必加上@RequestParam 注解这样可以避免 Spring MVC 使用 asm 框架读取 class 文件获取方法参数名的过程。即便Spring MVC 对读取出的方法参数名进行了缓存,如果不要读取 class

2020-10-16 00:50:54 423

原创 一步一步手绘Spring MVC运行时序图(Spring MVC原理)

初探 Spring MVC 请求处理流程Spring MVC 相对于前面的章节算是比较简单的,我们首先引用《Spring in Action》上的一张图来了解 Spring MVC 的核心组件和大致处理流程:从上图中看到①、DispatcherServlet 是 SpringMVC 中的前端控制器(Front Controller),负责接收 Request 并将 Request 转发给对应的处理组件。②、HanlerMapping 是 SpringMVC 中完成 url 到 Controller

2020-10-16 00:50:03 1116

原创 使用Filter,Listener 时无法注入Bean的解决方法

相关文章:SpringBoot 之AOP切面的使用SpringBoot之Listener注册到Spring容器中的多种方法SpringBoot之Interceptor拦截器注入使用SpringBoot之Filter过滤器的实现及排序问题SpringBoot 之多个过滤器(Filter) ,监听器(Listener),切面(AOP),拦截器(Interceptor)的指定排序问题总结篇使用Filter,Listener 时无法注入Bean的解决方法使用FIlter 或者Listener 无法.

2020-10-16 00:38:07 415

原创 SpringBoot之Interceptor拦截器注入使用

相关文章:SpringBoot 之AOP切面的使用SpringBoot之Listener注册到Spring容器中的多种方法SpringBoot之Interceptor拦截器注入使用SpringBoot之Filter过滤器的实现及排序问题SpringBoot 之多个过滤器(Filter) ,监听器(Listener),切面(AOP),拦截器(Interceptor)的指定排序问题总结篇springboot中实现拦截器方式实现方式实现HandlerInterceptor接口或者继承Handl.

2020-10-16 00:37:14 3264

原创 SpringBoot之Filter过滤器的实现及排序问题

相关文章:SpringBoot 之AOP切面的使用SpringBoot之Listener注册到Spring容器中的多种方法SpringBoot之Interceptor拦截器注入使用SpringBoot之Filter过滤器的实现及排序问题SpringBoot 之多个过滤器(Filter) ,监听器(Listener),切面(AOP),拦截器(Interceptor)的指定排序问题总结篇实现Filter注册到spring容器中跟Listener差不多。第一种:@WebFilter(urlPat.

2020-10-16 00:36:32 1096

JAVA核心知识点整理.zip

java的核心知识点,帮助你面试通过.

2020-09-30

1000道互联网大厂Java工程师面试题

1000道互联网大厂面试题整合

2020-09-30

空空如也

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

TA关注的人

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