
Java后端
耶亚希
这个作者很懒,什么都没留下…
展开
-
Spring 源码----XML 文件解析流程
1、XmlBeanDefinitionReaderXmlBeanFactory 中加载 XML 文件流的对象是 XmlBeanDefinitionReader,因此关于 XML 的解析我们就从 XmlBeanDefinitionReader 开始讲起。先来看一张 XmlBeanDefinitionReader 的继承关系图:这张继承关系图中涉及到了几个接口,我这里和大家说一下:BeanDefinitionReader:这个接口主要定义了资源文件的读取并将资源转为 BeanDefinition。原创 2020-11-03 14:29:48 · 670 阅读 · 0 评论 -
精讲RestTemplate-POST请求方法使用详解
前言:其实POST请求方法和GET请求方法上大同小异,RestTemplate的POST请求也包含两个主要方法:postForObject()postForEntity()二者的主要区别在于,postForObject()返回值是HTTP协议的响应体。postForEntity()返回的是ResponseEntity,ResponseEntity是对HTTP响应的封装,除了包含响应体,还包含HTTP状态码、contentType、contentLength、Header等信息。一、post原创 2020-11-02 17:32:18 · 14829 阅读 · 11 评论 -
SpringBoot整合Mybatis实现自动生成代码
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。相信大家对MyBatis都不陌生,在实际开发应用中,应用的比较多,它常常与SpringBoot框架,Spring框架 进行整合,进而开发相关的网站以及服务。原创 2020-10-31 14:54:59 · 887 阅读 · 6 评论 -
Spring data jpa 的使用与详解:复杂动态查询及分页,排序
一、 使用Specification实现复杂查询(1) 什么是SpecificationSpecification是springDateJpa中的一个接口,他是用于当jpa的一些基本CRUD操作的扩展,可以把他理解成一个spring jpa的复杂查询接口。其次我们需要了解Criteria 查询,这是是一种类型安全和更面向对象的查询。而Spring Data JPA支持JPA2.0的Criteria查询,相应的接口是JpaSpecificationExecutor。而JpaSpecificationEx原创 2020-10-30 14:52:37 · 6029 阅读 · 8 评论 -
Spring Boot 2.x基础教程:JdbcTemplate的多数据源配置!
添加多数据源的配置先在Spring Boot的配置文件application.properties中设置两个你要链接的数据库配置,比如这样:spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/test1spring.datasource.primary.username=rootspring.datasource.primary.password=123456spring.datasource.primary.driver-原创 2020-10-29 15:26:03 · 4765 阅读 · 5 评论 -
大多数人不知道的:HashMap链表成环的原因和解决方案
前言:在 JDK7 版本下,很多人都知道 HashMap 会有链表成环的问题,但大多数人只知道,是多线程引起的,至于具体细节的原因,和 JDK8 中如何解决这个问题,很少有人说的清楚,百度也几乎看不懂,本文就和大家聊清楚两个问题:JDK7 中 HashMap 成环原因;JDK8 中是如何解决的。一、JDK7 中 HashMap 成环原因成环的时机HashMap 扩容时。多线程环境下。成环的具体代码位置在扩容的 transfer 方法里面,有三行关键的代码,如下: void tra原创 2020-10-28 15:19:15 · 6614 阅读 · 6 评论 -
Spring Boot 中三种跨域场景总结
1、什么是跨域很多人对跨域有一种误解,以为这是前端的事,和后端没关系,其实不是这样的,说到跨域,就不得不说说浏览器的同源策略。同源策略是由 Netscape 提出的一个著名的安全策略,它是浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策略。所谓同源是指协议、域名以及端口要相同。同源策略是基于安全方面的考虑提出来的,这个策略本身没问题,但是我们在实际开发中,由于各种原因又经常有跨域的需求,传统的跨域方案是 JSONP,JSONP 虽然能解决跨域但是有一个很大的局原创 2020-10-27 14:24:53 · 5093 阅读 · 8 评论 -
SpringBoot整合系列-整合SpringMVC
SpringBoot整合Spring MVC步骤第一步:添加必要依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>第二步:添加必要的配置第三步:添加必要的配置类SpringBoot整合SpringMVC没有必需的配置原创 2020-10-26 14:56:03 · 5802 阅读 · 17 评论 -
其实你也可以使用SpringBoot自定义starter
使用过SpringBoot的都应该知道,一个SpringBoot 项目就是由一个一个 Starter 组成的,一个 Starter 代表该项目的 SpringBoot 启动依赖,除了官方已有的 Starter,我们可以根据自己的需要自定义新的Starter。一、自定义SpringBoot Starter自定义Starter,首选需要实现自动化配置,而要实现自动化配置需要满足以下两个条件:(1)能够自动配置项目所需要的配置信息,也就是自动加载依赖环境;(2)能够根据项目提供的信息自动生成Bean,并且原创 2020-10-24 14:50:04 · 5614 阅读 · 25 评论 -
SpringBoot配置大全总结
以application.properties属性文件为例:1、在pom.xml中配置Java版本:<plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-compiler-plugin</artifactid> <version>3.6</version> <configu原创 2020-10-23 14:27:11 · 5191 阅读 · 4 评论 -
Spring AOP的三种配置方式与内部解析实现
AOP配置在应用代码中,可以通过在spring的XML配置文件applicationContext.xml或者基于注解方式来配置AOP。AOP配置的核心元素为:pointcut,advisor,aspect,pointcut用于定义需要该辅助功能的类或方法集合;advisor则是将advice和pointcut结合起来,在spring的IOC容器启动时,为pointcut匹配的类生成代理对象,使用拦截器拦截对应的方法的执行,将辅助功能advice添加进去;aspect表示一个完整切面,即在aspect对原创 2020-10-21 14:36:45 · 4789 阅读 · 5 评论 -
不看不知道,原来Springboot整合https这么简单!
1、 简介HTTP是不安全的,我们需要给它套上SSL,让它变成HTTPS。本文章将用实例介绍Springboot整合HTTPS。2 、密码学基础要谈https就要谈Security,自然就要谈安全;谈及安全,就必然涉及密码学的一些知识。2.1 密码体制要建立一个密码体制,需要由五个空间组成,分别是:明文M:加密前或解密后的信息;密文C:明文加密后的信息;密钥K:由加密密钥和解密密钥组成;加密E:从明文到密文的变换;解密D:从密文到明文的变换。如图所示:2.2 两种加密方式(1原创 2020-10-20 16:54:57 · 22523 阅读 · 18 评论 -
图文讲解,带你彻底理解分布式事务产生的场景和解决方案!!
本地事务本地事务流程在介绍分布式事务之前,我们先来看看本地事务。首先,我们先来一张图。由上图,我们可以看出,本地事务由资源管理器(比如DBMS,数据库管理系统)在本地进行管理。本地事务的优缺点本地事务具备相应的优点,也有其不足。优点:支持严格的ACID属性。可靠,事务实现的效率高(只是在本地操作)。可以只在RM(资源管理器)中操作事务。编程模型简单。缺点:缺乏分布式事务的处理能力。数据隔离的最小单元由RM(资源管理器决定),开发人员无法决定数据隔离的最小单元。比如:数据库中原创 2020-10-19 16:31:08 · 3972 阅读 · 14 评论 -
SpringBoot:web静态资源配置
引言:SpringBoot web项目开发中往往会涉及到一些静态资源的使用,比如说图片,css样式,js等等,今天我们来讲讲这些常见的静态资源应该放在哪个位置,怎么放在自己想放的位置。1、 项目创建我们先创建一个空的项目,项目的依赖配置为starter-web依赖,创建好的项目下面有一个resources文件夹,里面有一些空的默认的文件夹,然后有一个配置文件。templates文件下面一般是放置模板页面的,比如html,jsp之类的,static文件一般是是放置静态资源,比如说,图片,文件等等.原创 2020-10-18 15:03:53 · 6040 阅读 · 24 评论 -
SpringBoot:过滤器配置详解
一、过滤器简介1、过滤器是什么?Filter也称之为过滤器,过滤器是对数据进行过滤,预处理。开发人员可以对客户端提交的数据进行过滤处理,比如敏感词,也可以对服务端返回的数据进行处理。还有就是可以验证用户的登录情况,权限验证,对静态资源进行访问控制,没有登录或者是没有权限时是不能让用户直接访问这些资源的。类似的过滤器还有很多的功能,比如说编码,压缩服务端给客户端返回的各种数据,等等。2、过滤器的运作原理?java为我们提供了一个Filter接口,我们只需要实现这个接口就能实现自定义过滤器,然后添加一些原创 2020-10-15 14:34:04 · 6509 阅读 · 7 评论 -
springboot整合Kafka,使用zookeeper做服务治理
一、springboot自动配置方式整合kafka:springboot提供自动配置整合kafka的方式,需要做一下步骤:(1)引入kafka依赖包:<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.2.7.RELEASE</version原创 2020-10-14 16:54:40 · 1157 阅读 · 10 评论 -
SpringBoot基于Dubbo和Seata的分布式事务解决方案
分布式事务初探一般来说,目前市面上的数据库都支持本地事务,也就是在你的应用程序中,在一个数据库连接下的操作,可以很容易的实现事务的操作。但是目前,基于SOA的思想,大部分项目都采用微服务架构后,就会出现了跨服务间的事务需求,这就称为分布式事务。本文假设你已经了解了事务的运行机制,如果你不了解事务,那么我建议先去看下事务相关的文章,再来阅读本文。1.1 什么是分布式事务对于传统的单体应用而言,实现本地事务可以依赖Spring的@Transactional注解标识方法,实现事务非常简单。我们以最.原创 2020-10-13 16:44:40 · 436 阅读 · 9 评论 -
Spring Boot知识系列—Spring Boot整合日志框架【详解】
当我们在进行web开发时,经常会用到各种各样的框架,常见的有spring、mybatis、hibernate等等,每个框架底层都有着自己的日志实现,那么难道我们在进行开发时,还需要在使用不同框架的时候使用其对应的API嘛?这将会大大增加我们的开发成本。还有如果我们在后期对项目进行二次开发时,如果要换日志框架,难道还得需要把原本的日志API全部替换掉吗?此时我们在想,如果每个日志框架能像我们平时开发时面向接口开发多好,所有的日志框架都统一API,但是实现可以各不相同,这样就能解决上面所说到的问题了。而这.原创 2020-10-12 15:55:43 · 3840 阅读 · 21 评论 -
Spring Boot如何支持嵌入式Servlet容器【详解】
前言:这篇文章主要介绍了Spring Boot如何支持嵌入式Servlet容器,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。如果需要其他学习资料或教程的,可以点击进入,暗号:csyy,绝对免费提供!因为资料太多无法全部展示,这只是其中的一点点,需要学习的朋友,可以进来和其他小伙伴一起探讨学习!Spring Boot支持Tomcat、Jetty和Undertow三种Servlet容器嵌入到Web应用程序中,开发者使用starter即可方便嵌入,默认情况下,嵌入服务器的访问端口为原创 2020-10-09 16:23:35 · 4330 阅读 · 20 评论 -
Spring Boot核心知识清单【超长超详细总结】
前言:在过去两三年的 Spring 生态圈,最让人兴奋的莫过于 Spring Boot 框架。或许从命名上就能看出这个框架的设计初衷:快速的启动Spring 应用。因而 Spring Boot 应用本质上就是一个基于 Spring 框架的应用,它是 Spring对“约定优先于配置”理念的最佳实践产物,它能够帮助开发者更快速高效地构建基于 Spring 生态圈的应用。自动配置、起步依赖、Actuator、命令行界面(CLI) 是 Spring Boot 最重要的 4 大核心特性,其中 CLI 是 Sp原创 2020-10-08 16:00:34 · 429 阅读 · 5 评论 -
Java必知——JVM和字节码文件的详细解析!
本篇文章的思维导图一、JVM的简单介绍1.1 JVM是什么?JVM (java virtual machine),java虚拟机,是一个虚构出来的计算机,但是有自己完善的硬件结构:处理器、堆栈、寄存器等。java虚拟机是用于执行字节码文件的。1.2 JAVA为什么能跨平台?首先我们可以问一个这样的问题,为什么 C 语言不能跨平台?如下图:C语言在不同平台上的对应的编译器会将其编译为不同的机器码文件,不同的机器码文件只能在本平台中运行。而java文件的执行过程如图:java通过javac原创 2020-09-30 15:00:45 · 1784 阅读 · 4 评论 -
听说这四个概念,很多 Java 老手都说不清!
前言:Java 是很多人一直在用的编程语言,但是有些 Java 概念是非常难以理解的,哪怕是一些多年的老手,对某些 Java 概念也存在一些混淆和困惑。所以,在这篇文章里,会介绍四个 Java 中最难理解的四个概念,去帮助开发者更清晰的理解这些概念:匿名内部类的用法多线程如何实现同步序列化匿名内部类匿名内部类又叫匿名类,它有点像局部类(Local Class)或者内部类(Inner Class),只是匿名内部类没有名字,我们可以同时声明并实例化一个匿名内部类。一个匿名内部类仅适用在想使原创 2020-09-29 14:59:58 · 369 阅读 · 6 评论 -
超详细讲解SpringBoot——数据访问
前言:大部分系统都离不开数据访问,数据库包括SQL和NOSQL,SQL是指关系型数据库,常见的有SQL Server,Oracle,MySQL(开源),NOSQL是泛指非关系型数据库,常见的有MongoDB,Redis。用spring开发时我们常用的ORM框架有JDBC、Mybatis,Hibernate,现在最常用的应该是Mybatis。在Springboot中对于数据访问层,无论是SQL还是NOSQL,都默认采用整合Spring Data的方式进行统一处理,Springboot会帮我们添加大量自动原创 2020-09-28 17:35:45 · 847 阅读 · 2 评论 -
你还记得 Tomcat 的工作原理么!
前言:SpringBoot 就像一条巨蟒,慢慢缠绕着我们,使我们麻痹。不得不承认,使用了SpringBoot 确实提高了工作效率,但同时也让我们遗忘了很多技能。刚入社会的时候,我还是通过 Tomcat 手动部署 JavaWeb项目,还经常对 Tomcat 进行性能调优。除此之外,还需要自己理清楚各 Jar 之间的关系,以避免 Jar丢失和各版本冲突导致服务启动异常的问题。到如今,这些繁琐而又重复的工作已经统统交给 SpringBoot处理,我们可以把更多的精力放在业务逻辑上。但是,清楚 Tomcat原创 2020-09-27 15:52:16 · 1005 阅读 · 4 评论 -
详细的Springboot启动原理解析
我们开发任何一个Spring Boot项目,都会用到如下的启动类@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }从上面代码可以看出,Annotation定义(@SpringBootApplication)和类定义(Spring.原创 2020-09-23 15:37:05 · 6102 阅读 · 4 评论 -
SpringBoot面试题整理,常问SpringBoot面试题汇总(2020版)
找工作的历程太艰难,面试的过程很心烦,在没着落的每一天,心情都不太美妙,这时的我们唯一能做的就是多总结,多做准备,这样,起码心里会好受些!所以我准备了一点Spring Boot 的面试题,为还正在找工作的小伙伴多增加些成功的筹码!1、什么是 Spring Boot?Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。2、 Spring Boot 有哪些优点?.原创 2020-09-22 16:48:00 · 5452 阅读 · 6 评论 -
最详细的Spring和SpringMVC总结
1、为什么使用Spring ?(1)方便解耦,简化开发通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。(2)AOP编程的支持通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测、事务管理、日志记录等。(3)声明式事务的支持。(4) 方便集成各种优秀框架。(5)降低Java EE API的使用难度如对JDBC,JavaMail,远程调用等提供了简便封装。2、 什么是IoC,为什使用IoC ?描述:I原创 2020-09-21 13:49:37 · 8535 阅读 · 13 评论 -
一看就懂的Spring、SpringMVC和SpringBoot!
一、概念1、SpringSpring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。2、SpringMVCSpring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。SpringMVC是一种web层mvc框架,用于替代servlet(处理|响应请求,获取表单参数,表单校验等。S原创 2020-09-20 14:26:31 · 38917 阅读 · 22 评论 -
2020年Java高级工程师面试总结
今年行情不好,想要守住工作并且涨薪的、想要跳槽或者找工作的,技术不行怎么办呢?其实说实话,除了多学习最新的技术外,还要有深度,所以有这种想法的,可以点这里,暗号:cszq,提供免费的Java后端和架构方面的学习途径和资料,你想要的内容,这里都有。Java基础Hashtable和HashMap的区别。抽象类与接口的区别。final关键字的使用和区别。异常分类和处理机制。JDK版本区别。StringBuilder内部实现机制。反射机制的使用。匿名内部类的使用。泛型的概念和使用。弱引用..原创 2020-09-18 14:57:22 · 1428 阅读 · 5 评论 -
2020年想成为厉害的 Java 后端程序员,你需要懂这些
前言:站在运筹帷幄的角度来看,一名厉害的 Java后端程序员都需要懂得哪些知识呢?我想,这也是很多读者迫切想知道的一个问题,因为如果不站在一个宏观的角度的话,所有学过的知识点都是零散的,就感觉像一只迷路的小鹿,跌跌撞撞的,总感觉欠点火候,对吧?怎么把知识点串联起来,形成知识图谱或者知识体系,就显得非常重要了。接下来,我会给大家介绍一下现在要想在Java后端这个岗位站稳并且高薪的必备知识点,要是有遗漏,或者不足的地方,欢迎大家指出来,大家一起学习。(一)MVC 框架MVC 框架:MVC 模式是软件原创 2020-09-17 14:04:54 · 1193 阅读 · 3 评论 -
美团Java后端面试题,巧妙的回答ThreadLocal原理!
想要去好点的公司,想要去前景好的公司都对技术要求挺高的,面试时技术问也会相应的难些,就拿美团来说,它好像比较喜欢线程安全机制问题,之前就有小伙伴被问倒了!所以今天就详细讲一讲ThreadLocal原理。ThreadLocalThreadLocal是线程的内部存储类,可以在指定线程内存储数据。只有指定线程可以得到存储数据。/** * This class provides thread-local variables. These variables differ from * their n.原创 2020-09-16 14:17:44 · 4515 阅读 · 14 评论 -
Java多线程面试题,绝对的真货!
前言:面试只分为做过准备的和没做过准备的,大多数人通过面试无法辨别出对方技术的好坏。说到这可能就有人抬杠了,那我上次面试的挺好,都答上来了他们也没要我啊。是的,这种情况很普遍,面完之后,面试官都送你到地铁了,后来也没要你,一般是两个原因。一方面是面试官觉得你很聊得来,但他不是主要拍板人。另一方面,你虽然技术很好,但给人的感觉是你不可控。多线程1、并行和并发有什么区别?答:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。并行是在不同实体上的多个事件原创 2020-09-15 15:09:22 · 595 阅读 · 2 评论 -
Java后端面试真题+经验分享
每场面试都必须认真面对,因为每一场面试都是一段经验。面试面多了,所谓的经验就有了!一、常见算法和数据结构1、数组、链表、队列、栈的各种操作(性能,场景)2、各类排序算法以及复杂度分析(快排、归并、堆),不同排序算法的稳定性3、理解并可以分析时间和空间复杂度。4、动态规划、贪心。5、回溯算法6、二叉树、前中后虚(图考察的很少,只有笔试偶尔遇到)7、DFS、BFS 算法8、单调栈、单调队列二、操作系统1、进程通信 IPC(几种方式),进程与线程定义与区别2、进程调度算法、磁盘扫描算法.原创 2020-09-11 14:24:23 · 4259 阅读 · 5 评论