java后端面试
文章平均质量分 72
刍 狗
天地不仁,以万物为刍狗。
展开
-
Spring在代码中获取bean的几种方式
Spring在代码中获取bean的几种方式方法一:在初始化时保存ApplicationContext对象方法二:通过Spring提供的utils类获取ApplicationContext对象方法三:继承自抽象类ApplicationObjectSupport方法四:继承自抽象类WebApplicationObjectSupport方法五:实现接口ApplicationContextAware方法六:通过Spring提供的ContextLoader...转载 2021-06-16 09:38:39 · 308 阅读 · 0 评论 -
MyBatis 和 SQL 注入
MyBatis 和 SQL 注入转载于:https://www.anquanke.com/post/id/190170MyBatis 是一种持久层框架,介于 JDBC 和 Hibernate 之间。通过 MyBatis 减少了手写 SQL 语句的痛苦,使用者可以灵活使用 SQL 语句,支持高级映射。但是 MyBatis 的推出不是只是为了安全问题,有很多开发认为使用了 MyBatis 就不会存在 SQL 注入了,真的是这样吗?使用了 MyBatis 就不会有 SQL 注入了吗?答案...转载 2021-06-11 15:07:08 · 1191 阅读 · 1 评论 -
解决循环依赖(代码验证)
之前转的两篇文章都说过java中的循环依赖,现在大概写个代码demo验证下。之前地址:https://blog.csdn.net/u010730870/article/details/102602597,https://blog.csdn.net/u010730870/article/details/102607053。循环依赖有以下场景:1.模块间循环依赖,解决:见上边之前;2.同模块的类间循环依赖:<模型:A依赖B,B依赖C,C依赖A>(1)构造器声明对象式依赖:无法解.原创 2021-04-20 15:04:26 · 373 阅读 · 0 评论 -
spring boot 入门
https://www.cnblogs.com/ityouknow/p/5662753.htmlhttps://start.spring.io/使用Spring Boot有什么好处其实就是简单、快速、方便!平时如果我们需要搭建一个 Spring Web 项目的时候需要怎么做呢?1)配置 web.xml,加载 Spring 和 Spring mvc 2)配置数据库连接、配置 Spring 事务 3)配置加载配置文件的读取,开启注解 4)配置日志文件 ... 配置完成之后...转载 2020-06-09 16:19:01 · 154 阅读 · 0 评论 -
代理模式
什么是代理模式? 代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。为什么要用代理模式?中介隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。 开闭原则,增加功能:代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需要修改代理类而不需要再修...原创 2020-06-03 09:43:55 · 186 阅读 · 0 评论 -
Spring事务传播属性和隔离级别
原文网址:https://www.cnblogs.com/eunice-sun/p/11024584.html一、Spring事务传播属性(Propagation):1) REQUIRED(默认属性)如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。被设置成这个级别时,会为每一个被调用的方法创建一个逻辑事务域。如果前面的方法已经创建了事务,那么后面的方法支持当前的事务,如果当前没有事务会重新建立事务。2) MANDATORY支持当前事务,如果当前没有事务,就抛出异常。...转载 2020-05-28 19:04:16 · 150 阅读 · 0 评论 -
如何写一个RPC框架(一):关注点与我的实现
原文网址:https://blog.csdn.net/u012422829/article/details/78375839RPC框架的关注点首先,什么是RPC?RPC的全称是Remote Procedure Call,远程过程调用。RPC框架有很多,比如hsf、dubbo等等。借助RPC框架,我们在写业务代码的时候可以不需要去考虑服务之间的通信等问题,在调用远程服务的时候就像调用本地的方法那么简单。那么,要写一个RPC框架应该由哪些部分组成,关注哪些东西?1.简化本地调用流程既然我们要转载 2020-05-19 18:37:45 · 159 阅读 · 0 评论 -
guava之Immutable(不可变)集合
一、概述 guava是google的一个库,弥补了java语言的很多方面的不足,很多在java8中已有实现,暂时不展开。Collections是jdk提供的一个工具类。 Guava中不可变对象和Collections工具类的unmodifiableSet/List/Map/etc的区别:当Collections创建的不可变集合的wrapper类改变的时候,不可变集合...转载 2020-04-16 22:04:16 · 450 阅读 · 0 评论 -
Spring Bean的scope(作用域)介绍
原文链接:https://blog.csdn.net/w_linux/article/details/80069039该篇博客主要阐述关于Bean的作用域(scope)。Spring容器最初提供了两种bean的scope类型:singleton和prototype,在Spring2.0之后又引入了另外三种scope类型:request、session、global session类型。不...转载 2020-04-15 19:58:33 · 245 阅读 · 0 评论 -
spring aop(spring interceptor), springmvc interceptor, servlet Filter有什么区别?
在spring中实现拦截功能时,有几个比较容易混淆的概念spring aop,spring interceptor,springmvc interceptor先总体上分析一下上面的3个术语看一下spring aop功能的继承关系图可以看到在spring中,Advice的实现接口就是Interceptor,所以可以看做:在spring中,spring aop与spring inter...转载 2020-03-28 15:13:05 · 346 阅读 · 0 评论 -
maven的一些优化经验
背景最近在优化一个系统的jar包依赖的问题,pom相关的问题,项目在install后报一堆黄色的警告,虽然不影响打包部署发布使用(maven已经很友好地帮忙给处理了),但一堆黄色的感叹号放那着实让人洁癖癌复发,太难受,消灭他们吧。操作问题1:有许多无用的依赖解决:通过“mvn dependency:analyze”命令扫描分析下,会指出所有无用的包(也不能以扫描的结果为准,删除...原创 2020-03-20 12:32:08 · 3303 阅读 · 0 评论 -
mybatis批量插入
原文网址:https://my.oschina.net/zjllovecode/blog/1818716一、首先对于批量数据的插入有两种解决方案(下面内容只讨论和Mysql交互的情况)1)for循环调用Dao中的单条插入方法2)传一个List<Object>参数,使用Mybatis的批量插入 (foreach)对于批量插入它的Mapper看起来向这样<ins...转载 2020-03-16 17:49:13 · 1522 阅读 · 0 评论 -
关于spring框架中初始化bean时指定执行一个方法:InitializingBean和init-method的使用
原文网址:https://www.cnblogs.com/weiqihome/p/8922937.htmlInitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。测试,如下:import org.springframework.beans.factory.In...转载 2020-03-13 11:46:16 · 2682 阅读 · 0 评论 -
ReentrantReadWriteLock读写锁详解
原文网址:https://www.cnblogs.com/xiaoxi/p/9140541.html一、读写锁简介 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了。 针对这种场...转载 2020-03-05 15:01:49 · 260 阅读 · 0 评论 -
真正理解线程上下文类加载器(多案例分析)
原文链接:https://blog.csdn.net/yangcheng33/article/details/52631940通过上面的两个案例分析,我们可以总结出线程上下文类加载器的适用场景:当高层提供了统一接口让低层去实现,同时又要是在高层加载(或实例化)低层的类时,必须通过线程上下文类加载器来帮助高层的ClassLoader找到并加载该类。当使用本类托管类加载,然而加载本类的Cla...转载 2020-03-03 20:28:30 · 180 阅读 · 0 评论 -
灰度百分比策略简单实现
开发过程中有些业务存在不确定性,但部署生产后又不好回滚,因为不能为了这一个业务功能影响整个迭代的功能,回滚后所有的功能都无法上线。此时,就需要加上开关实现灰度发布。常用的灰度有两种:完全灰度和限流百分比灰度。以下详细介绍下:1.完全灰度:即百分百的灰度,要么这个功能使用新逻辑,要么使用旧逻辑。这就简单了,直接用if/else实现2.限流百分比灰度:在系同启动时,配置一个限流的灰度百分比a(...原创 2020-02-14 14:51:59 · 2641 阅读 · 0 评论 -
java对象复制
原文链接:https://blog.csdn.net/54powerman/article/details/64920431?locationNum=6&fps=1java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的:@Testpublic void testassign(){ Person p1=new Person(); p1...转载 2020-01-17 15:02:56 · 457 阅读 · 0 评论 -
缓存穿透、缓存击穿、缓存雪崩区别和解决方案
一、缓存处理流程前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。二、缓存穿透描述:缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导...转载 2019-12-25 17:55:50 · 383 阅读 · 0 评论 -
spring中类名相同,但包名不同,导致spring启动失败 解决方案
背景:本项目引入了一个三方jar包,但jar中出现了一个类名相同,但包名不同,导致spring启动失败 解决方案:方案一:排查下在本项目调用过程中是否不会用到某一个深层jar,要是没用到,则在引入该jar的坐标时用以下方式排除掉该冲突类所在的深层jar<dependency> <artifactId>三方jar</artifactId> ...原创 2019-12-13 17:23:55 · 4427 阅读 · 2 评论 -
各种方式创建String及其在jvm中的创建情况
1.只在常量池上创建常量 String a1 = "AA";12.只在堆上创建对象 String a2 = new String("A") + new String("A");13.在堆上创建对象,在常量池上创建常量 String a3 = new String("AA");14.在堆上创建对象,在常量池上创建引用 String a4 = new Str...转载 2019-12-02 11:22:39 · 284 阅读 · 0 评论 -
7种JVM垃圾收集器特点,优劣势、及使用场景
1.新生代的收集器包括:Serial PraNew Parallel Scavenge2.老年代的收集器包括:Serial Old Parallel Old CMS3.回收整个Java堆(新生代和老年代)G1收集器...转载 2019-11-25 10:37:23 · 235 阅读 · 0 评论 -
实现AOP的几种方式
源码地址:https://github.com/yuboYUBO/aop-imlhttps://www.cnblogs.com/flyingaway/archive/2017/12/28/8126178.htmlhttps://blog.csdn.net/Summer_YuXia/article/details/75104949转载 2019-11-14 19:34:31 · 335 阅读 · 0 评论 -
spring bean中的id和name是否可以重复
同名bean:多个bean 有相同的 name 或者 id,称之为同名beanbean 的id 和 name的区别id和name都是spring 容器中中bean 的唯一标识符。id: 一个bean的唯一标识 , 命名格式必须符合XML ID属性的命名规范 name: 可以用特殊字符,并且一个bean可以用多个名称:name=“bean1,bean2,bean3” ,用逗号或者分号...转载 2019-11-14 18:08:34 · 3542 阅读 · 0 评论 -
java代码优化
原文链接:https://www.cnblogs.com/xrq730/p/4865416.html?spm=a2c4e.10696291.0.0.3c7a19a4UomczO(1)尽量指定类、方法的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final...转载 2019-11-11 16:29:40 · 84 阅读 · 0 评论 -
Java架构师面试题——JVM性能调优
转载地址:https://blog.csdn.net/zhan_lang/article/details/88567569JVM系列直通BAT必考题系列:7种JVM垃圾收集器特点,优劣势、及使用场景直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置JVM内存调优-Xms设置堆的最小空间大...转载 2019-11-11 10:15:00 · 589 阅读 · 0 评论 -
数据库事务4种隔离级别及7种传播行为
原文链接:https://www.cnblogs.com/dwxt/p/8807899.html四种隔离级别:7中传播行为:1、PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。2、PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事...转载 2019-11-09 17:58:29 · 107 阅读 · 0 评论 -
java序列化和serialVersionUID 总结
原文链接:https://www.iteye.com/blog/m635674608-22336851.当一个类有父类有serialVersionUID,子类没有重写serialVersionUID,那么jvm会自动生成一个serialVersionUID2.序列化:序列化可以将一个java对象以二进制流的方式在网络中传输并且可以被持久化到数据库、文件系统中,反序列化则是可以...转载 2019-10-31 17:07:00 · 1684 阅读 · 0 评论 -
局部变量是否需要用final修饰
原文链接:https://www.cnblogs.com/jixp/articles/6752132.html在java中, 方法的内部类可以访问方法中的局部变量,但必须用final修饰才能访问。原因: 一, 当方法被调用运行完毕之后,局部变量就已消亡了。但内部类对象可能还存在, 直到没有被引用时才会消亡。此时就会出现一种情况,就是内部类要访问一个不存在的局...转载 2019-10-31 15:48:03 · 1635 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
原文链接:https://www.cnblogs.com/UncleYong/p/7108694.html?utm_source=itdadao&utm_medium=referralJDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,...转载 2019-10-17 15:32:39 · 172 阅读 · 0 评论 -
解决Maven项目相互依赖/循环依赖/双向依赖的问题
原文链接:https://blog.csdn.net/leolu007/article/details/530798752、怎么解决循环依赖 目前知道有2个办法可以解决 第一个办法是用build-helper-maven-plugin插件来规避。比如A依赖B,B依赖C,C依赖A的情况。这个插件提供了一种规避措施,即临时地将工程A、B、C合并成一个中间工程,编译出临时的...转载 2019-10-17 14:58:49 · 1607 阅读 · 0 评论 -
Spring源码-Bean的初始化-循环依赖的解决
原文链接:https://blog.csdn.net/hezuo1181/article/details/82831080https://blog.csdn.net/chejinqiang/article/details/80003868https://www.jianshu.com/p/6c359768b1dc(全面)spring解决理论:java基于引用传递Spring循环依...转载 2019-10-17 11:29:15 · 304 阅读 · 0 评论 -
java中高级面试-内容清单
java基础一、集合容器。1.各实现类比较类型:如:list/set/map/queue、ArrayList/LinkedList、HashMap/HashTable、HashMap/TreeMap/TreeSet/HashSet2.各实现类上下继承实现关系:3.各实现类扩容机制:ArrayList/HashMap4.各实现类的存储数据结构及添加(删除)细节原理:...原创 2018-08-17 20:50:50 · 975 阅读 · 0 评论 -
分布式锁的不同实现方式
声明:此文章摘自博客园,如有侵权,联系我删除!!! 了。也就是说单纯的Java Api并不能提供分布式锁的能力。所以针对分布式锁的实现目前有多种方案。针对分布式锁的实现,目前比较常用的有以下几种方案:基于数据库实现分布式锁 基于缓存(redis,memcached,tair)实现分布式锁 基于Zookeeper实现分布式锁在分析这几种实现方案之前我们先来想一下,我们需要的分...转载 2018-09-04 10:46:34 · 129 阅读 · 0 评论 -
为什么建议使用sl4j,不建议使用log4j
每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库如java.util.logging、Apache log4j、logback。但如果你还不知道SLF4J(Simple logging facade for Java)的话,那么是时候去在你项目中学习使用SLF4J了。在这篇文章中,我们将学习为什么使用SLF4J比lo...转载 2018-09-04 14:05:13 · 2686 阅读 · 0 评论 -
Spring Profile介绍与使用
spring Profile软件开发的一般流程为工程师开发 -> 测试 -> 上线,因此就涉及到三个不同的环境,开发环境、测试环境以及生产环境,通常这三个环境会有很多配置参数不同,例如数据源、文件路径、url等,如果每次上线一个新版本时都手动修改配置会十分繁琐,容易出错。spring 为我们提供了 profile 机制来解决这个问题。spring允许我们通过定义 profile ...转载 2018-09-11 14:38:42 · 1485 阅读 · 0 评论 -
幂等性
幂等性2015年09月20日 16:25:48 阅读数:8507更多个人分类: 系统架构一. 断言:幂等性的数学表达:f(f(x)) = f(x)。幂等性是系统接口对外的一种承诺。幂等性指的是,使用相同参数对同一资源重复调用某个接口的结果与调用一次的结果相同。幂等性的一个实现是,使你的接口必须返回 0(成功),即使这时资源或动作已经停止并且无工作要完成。 二. ...转载 2018-09-11 16:25:33 · 136 阅读 · 0 评论 -
深入理解分布式事务
深入理解分布式事务我在上一期介绍了spring的事务原理(详情见《深入理解spring事务原理》),Spring事务本质是单机下的事务,是由数据库本身保证的。今天,我将介绍一种比较复杂的事务:分布式事务。1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不...转载 2018-09-12 19:17:25 · 123 阅读 · 0 评论 -
深入理解spring事务原理
深入理解 Spring 事务原理一、事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:获取连接 Connection con = DriverManager.getConnection() 开启事务con.setAutoCommit(true/false...转载 2018-09-12 19:22:47 · 112 阅读 · 0 评论 -
javaNIO理解
java NIO原理及实例1、reactor(反应器)模式 使用单线程模拟多线程,提高资源利用率和程序的效率,增加系统吞吐量。下面例子比较形象的说明了什么是反应器模式: 一个老板经营一个饭店, 传统模式 - 来一个客人安排一个服务员招呼,客人很满意;(相当于一个连接一个线程) 后来客人越来越多,需要的服务员越来越多,资源条件不足以再请更多的服务员了,传统模式已经不能满足...转载 2018-09-13 17:02:45 · 103 阅读 · 0 评论 -
面试-java-2-4年
1.什么是事务控制?答:事务控制就是将一系列操作当成一个不可拆分的逻辑单元,保证这些操作要么都成功,要么都失败。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。事务是恢复和并发控制的基本单位。事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做...转载 2018-09-11 10:48:24 · 311 阅读 · 0 评论