笔经整理1
题目来源:LeetCode
easy
1. Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
1 | public int[] twoSum(int[] nums, int target) { |
面经整理5
1. spring事务写在哪一部分,为什么不写在DAO,Controller层
事务写在Service层。
为什么不在DAO层?
- 在数据库中,所谓事务是指一组逻辑操作单元即一组sql语句。当这个单元中的一部分操作失败,整个事务回滚,只有全部正确才完成提交。
- 如果放在了DAO层,每一次增删改查都将提交一次事务,那么事务的一致性就会被破坏。
- 一般在Service的一处可以调用DAO层的多处,所以只要添加一处事务注解@Transactional,这样才能体现事务的特性。
为什么不在Controller层?
- 不推荐,但是事实上可以实现把事务放在Controller层。
- 一般不会将事务放在Controller层,而且直接放是会报404错误的(因为SpringMVC和Spring是两个不同的容器)。application.xml中应该负责扫描除@Controller的注解如@Service,而SpringMVC的配置文件应该只负责扫描@Controller,否则会产生重复扫描导致Spring容器中配置的事务失效。
面经整理4
1. Spring是怎么避免循环依赖的
循环依赖的问题:在DI时,如果有两个 class 类,都在 xml 文件中配置,但是如果 classA 是 classB 的属性,classB 同时也是 classA 的属性,那么该怎么处理呢?究竟先注入哪一个呢?
Spring是如何避免循环依赖的?
- 答:Spring基于Java的引用传递,我们获取到对象的引用时,对象的field或者属性是可以延后设置的。但Spring避免循环依赖有一个前提:那就是循环依赖不能发生在构造器中。
Spring 的单例对象的初始化主要分为三步:
- createBeanInstance实例化;
- populateBean填充属性;
- InitializeBean初始化。
循环依赖就是两个对象(设为A,B)在①②步时发生冲突的。
Spring使用了一个叫singletonFactories
的三级cache机制,让本该发生A-B-A循环依赖中的B走到第①步时,可以拿到A(虽然A此时并不完整,仅走了①②两步),但足以让B能够走完剩下的②③步。B完成后,A可以继续完成自己的第③步。
各个设计模式间的区别和联系
23 种传统的设计模式分类
创建型:
如何创建对象的模式,抽象了实例化的过程。
将创建对象的过程进行了抽象和封装,作为客户程序仅仅需要去使用对象,而不再关心创建对象过程中的逻辑。
- 工厂方法;
- 抽象工厂;
- 建造者;
- 原型;
- 单例;
[转]多态的底层实现原理
[转载]原文地址:Java技术——多态的实现原理
1.Java多态概述
Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但可具有不同的参数列表、返回值类型。调用方法时通过传递的参数类型来决定具体使用哪个方法,这就是多态性。
Java的方法重写,是父类与子类之间的多态性,子类可继承父类中的方法,但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。重写的参数列表和返回类型均不可修改。
分布式系统之time clock ordering
参考阅读:
分布式系统理论基础 - 时间、时钟和事件顺序
分布式系统的时间
分布式系统一致性的发展历史
分布式系统一致性的发展历史(一)
时间、时钟和事件顺序
- 分布式系统使用逻辑时钟记录事件顺序关系。
- 采用物理时钟,在分布式系统中仍然会有毫秒级别的偏差。
Lamport timestamps
每个事件对应一个Lamport时间戳,初始值为0
如果事件在节点内发生,时间戳加1
如果事件属于发送事件,时间戳加1并在消息中带上该时间戳
如果事件属于接收事件,时间戳 = Max(本地时间戳,消息中的时间戳) + 1
偏序关系 partial order,如下图方框内的编号:
HTTP-1-1
推荐阅读:HTTP1.0 HTTP1.1 HTTP2.0 主要特性对比
比较 HTTP1.0 、HTTP1.1、 HTTP2.0
共同点:
- 都是应用层协议,基于 TCP/IP 协议。
- 无状态
HTTP1.0 | HTTP1.1 | HTTP2.0 | |
---|---|---|---|
特点 | 无连接、队头阻塞 | 长连接、管道化、缓存处理 | 二进制分帧、多路复用、头部压缩、服务器推送 |