不是吧阿sir,字节跳动架构师讲解Java开发
IoC 容器是 Spring⽤来实现 IoC 的载体, IoC 容器实际上就是个Map(key,value),Map 中存放的是各种对象。将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC 容器完成对象的注⼊。这样可以很⼤程度上简化应⽤的开发,把应⽤从复杂的依赖关系中解放出来。 IoC 容器就像是⼀个⼯⼚⼀样,当我们需要创建⼀个对象的时候,只需要配置好配置⽂件/注解即可,完全不⽤考虑对象是如何被创建出来的。
2、Spring AOP,动态代理
3、Bean生命周期
死亡:当对象长时间不用且没有其它对象引用时,由java的垃圾回收机制回收
4、Bean作用域?默认什么级别?是否线程安全?Spring如何保障线程安全的?
| prototype | 每次获取都会创建⼀个新的 bean 实例 |
| request | 每⼀次HTTP请求都会产⽣⼀个新的bean,该bean仅在当前HTTP request内有效。 |
| session | 在一次 HTTP session 中,容器将返回同一个实例 |
global-session 将对象存入到web项目集群的session域中,若不存在集群,则global session相当于session
默认作用域是singleton,多个线程访问同一个bean时会存在线程不安全问题
在类中定义⼀个ThreadLocal成员变量,将需要的可变成员变量保存在 ThreadLocal 中
每个线程中都有一个自己的ThreadLocalMap类对象,可以将线程自己的对象保持到其中,各管各的,线程可以正确的访问到自己的对象。
5、Spring事务隔离级别和事务传播属性
DEFAULT (默认) 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。另外四个与JDBC的隔离级别相对应。
READ_UNCOMMITTED (读未提交) 这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。
READ_COMMITTED (读已提交) 保证一个事务修改的数据提交后才能被另外一个事务读取,另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。
REPEATABLE_READ (可重复读) 这种事务隔离级别可以防止脏读、不可重复读,但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了不可重复读。
SERIALIZABLE(串行化) 这是花费最高代价但是最可靠的事务隔离级别,事务被处理为顺序执行。除了防止脏读、不可重复读外,还避免了幻像读。
Spring事务传播属性(Propagation):
REQUIRED(默认属性) 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。 被设置成这个级别时,会为每一个被调用的方法创建一个逻辑事务域。如果前面的方法已经创建了事务,那么后面的方法支持当前的事务,如果当前没有事务会重新建立事务。
MANDATORY 支持当前事务,如果当前没有事务,就抛出异常。
NEVER 以非事务方式执行,如果当前存在事务,则抛出异常。
NOT_SUPPORTED 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。
SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。
NESTED 支持当前事务,新增Savepoint点,与当前事务同步提交或回滚。 嵌套事务一个非常重要的概念就是内层事务依赖于外层事务。外层事务失败时,会回滚内层事务所做的动作。而内层事务操作失败并不会引起外层事务的回滚。
6、Spring以及Spring MVC常见注解
@Component 通⽤的注解,可标注任意类为 Spring 组件
@Controller 在展现层使用,控制器的声明(controller层)
@Autowired:可以对类成员变量、方法、构造方法进行标注
默认按照类型注入,若要按照名称注入,需要搭配**@Qualifier**注解一起使用
@Controller 声明该类为SpringMVC中的Controller
@ResponseBody 支持将返回值放在response内,而不是一个页面,通常用户返回json数据
@RequestBody 允许request的参数在request体中,而不是在直接连接在地址后面。
7、@autowired和@resource的区别?
@Autowired:可以对类成员变量、方法、构造方法进行标注
默认按照类型注入,若要按照名称注入,需要搭配**@Qualifier**注解一起使用
8、mybatis如何防止sql注入?$和#的区别是什么?传入表名用哪个?
在编写mybatis的映射语句时,尽量采用“#{xxx}”这样的格式
| #{xxx},使用的是PreparedStatement,会有类型转换,比较安全 | ${xxx},使用字符串拼接,容易SQL注入 |
简单的说就是#{}是经过预编译的,是安全的,${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在SQL注入。
添加属性statementType=“STATEMENT”,同时sql里的属有变量取值都改成${xxxx}
9、Spring MVC工作原理
客户端(浏览器)发送请求,直接请求到 DispatcherServlet 。
DispatcherServlet 根据请求信息调⽤ HandlerMapping ,解析请求对应的 Handler 。
解析到对应的 Handler (也就是 Controller 控制器)后,开始由HandlerAdapter 适配器处理。
HandlerAdapter 会根据 Handler 来调⽤真正的处理器开处理请求,并处理相应的业务逻辑。
处理器处理完业务后,会返回⼀个 ModelAndView 对象, Model 是返回的数据对象
ViewResolver 会根据逻辑 View 查找实际的 View 。
DispaterServlet 把返回的 Model 传给 View (视图渲染)。
最后
以上分享的全部分布式技术专题+面试解析+相关的手写和学习的笔记pdf,高清完整版戳这里免费领取
还有更多Java笔记分享如下:
andler 来调⽤真正的处理器开处理请求,并处理相应的业务逻辑。
处理器处理完业务后,会返回⼀个 ModelAndView 对象, Model 是返回的数据对象
ViewResolver 会根据逻辑 View 查找实际的 View 。
DispaterServlet 把返回的 Model 传给 View (视图渲染)。
把 View 返回给请求者(浏览器)
最后
以上分享的全部分布式技术专题+面试解析+相关的手写和学习的笔记pdf,高清完整版戳这里免费领取
还有更多Java笔记分享如下:
不是吧阿sir,字节跳动架构师讲解Java开发相关推荐
- 字节跳动架构师讲解Java开发!美的java开发面试
前言 今天中午收到我司安全部发了一封邮件:Jackson存在安全漏洞.查了一下,这件事并不算很新鲜了(已经过了5天的样子),本文来聊聊吧. 说起来还蛮戏剧化:阿里云向Jackson官方提交了一个Jac ...
- 字节跳动架构师讲解Java开发!dockerstop命令
美团 一面: 1.ConcurrentHashMap实现原理 2.HashMap实现原理 3.锁的实现原理 4.synchronized和重入所实现原理以及区别 5.一个char[]数组,里面有空格, ...
- 字节跳动架构师讲解Android开发!已成功拿下字节、腾讯、脉脉offer,含BATJM大厂
开头 程序员面试,除了面试技术外,有的公司经常会问应聘者和技术无关的问题,考验求职者的综合能力,并以此作为是否录用的依据,很多时候这类问题往往没有标准答案,就看求应聘者临场的反应能力如何. 张工是一名 ...
- 架构师讲解Java中websocket的应用
这篇文章主要来介绍一下在java项目中,特别是java web项目中websocket的应用. 场景:我做了一个商城系统,跟大多数商城系统,分为客户端和后台,客户端供客户浏览,下单,购买,后台主要管理 ...
- 腾讯架构师讲解Java接口的继承与抽象类
在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体.interface为类提供了接口规范. 在继承中,我们为了提高程序的可复用性,引入的继承机制.当时的 ...
- 字节跳动内推-杭州-后端开发(高级)工程师-电商运营赋能
字节跳动内推-杭州-后端开发(高级)工程师-电商运营赋能 职位描述 1.探索字节系平台(抖音.抖音火山版.头条.西瓜视频等)内容电商业务模式,承担系统的设计开发维护工作: 2.负责搭建支持电商全链路业 ...
- 微软企业服务部华东区招聘顾问/架构师/.NET高级开发员
[因应华东区服务业务扩展,长期需要咨询顾问/架构师/.NET高级开发员,有意者发送邮件至 ningxue@microsoft.com] Job Title: .NET Consultant/Archi ...
- Java架构师和java工程师的区别是什么?架构师薪资是多少?
java架构师,现在很多新手都知道的名词,这个职位最早在IT领域是没有的,是由于最近几年来,互联网的迅猛发展,网站对于对数据量和高并的活跃度发所引发的需求,引起了众多传统的技术人员的力不从心,越来越多 ...
- 高级开发工程师如何快速晋升为架构师?高级开发工程师与架构师到底有啥区别?
大家好,我是冰河~~ 一直以来,都想写一个系统介绍架构师核心技能的专栏,那就是<架构师进阶系列>.为什么要写这个专栏呢?很多人认为自己技术能力不错,但是每次想面试大厂的时候,总是被面试官吊 ...
最新文章
- Hive的安装-Hive的交互方式
- elasticsearch使用优化备忘
- 波士顿房价数据集解读
- (mac)阿里云ECS服务器配置过程
- modemcu 打包_nodemcu固件的烧录及lua开发
- 计算机软件技术信息安全哪个好,国内哪个大学的计算机安全专业最好?
- springboot的学习笔记,这个很重要
- Django~1 一 什么是web框架?
- 面试必看:java面试考点精讲视频教程
- gitHub 代码从fork到push
- MATLAB 绘制堆叠柱状图
- 控温/恒温烙铁操作方法及使用说明
- python对象不可订阅_python - TypeError:'int'对象不可订阅 - 尝试创建csv文件时 - SO中文参考 - www.soinside.com...
- LTspice基础教程-025.电路容差分析,蒙特卡罗分析(Monte Carlo)
- MySql系列之mysql查询执行过程(附Mysql架构图及实操解析)
- 怎样无损放大图片?这几个方法不容错过
- 如何看懂Code128条形码
- ArcMap 基于DEM的基础地形分析
- 简单5步,从0开始搭建你的第一款小程序
- 双网卡数据共享(网卡转发)
热门文章
- 彩虹六号围攻服务器未响应,彩虹六号围攻运行错误解决办法汇总_3DM单机
- 【重磅!】《2021隐私机密计算蓝皮书》正式发布
- 北交大研究生计算机专硕好考么,北京交通大学考研难度 北交的研究生好考吗...
- 计算机一级办公软件试题,办公软件应用-计算机一级考试试题.doc
- 谁敢说360不行? 那是你不会用!教你制服360
- java 不设置classpath_无需设置JAVA中的CLASSPATH
- 跑yolo3模型出的效果图_【目标检测实战】Darknet入门—yolov3模型训练(Win10下的安装、编译、实现)...
- android魅族手机 定位功能吗,魅族手机被偷? 看看Flyme找回案例 两招包你找回手机...
- 我的娘子(创作中。。)
- 海岛奇兵服务器修改,海岛奇兵NPC刷新详解 官网阐述未来更改变动