ioc

Java面试题——中级

一曲冷凌霜 提交于 2020-02-08 10:40:23
什么是线程死锁?死锁如何产生?如何避免线程死锁? 死锁的介绍: 线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源,在此期间,其他线程将不能进入该代码块。当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都不主动释放所占有的资源,将产生死锁。 死锁的产生的一些特定条件: 1、互斥条件:进程对于所分配到的资源具有排它性,即一个资源只能被一个进程占用,直到被该进程释放 。 2、请求和保持条件:一个进程因请求被占用资源而发生阻塞时,对已获得的资源保持不放。 3、不剥夺条件:任何一个资源在没被该进程释放之前,任何其他进程都无法对他剥夺占用。 4、循环等待条件:当发生死锁时,所等待的进程必定会形成一个环路(类似于死循环),造成永久阻塞。 如何避免: 1、加锁顺序: 当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。当然这种方式需要你事先知道所有可能会用到的锁,然而总有些时候是无法预知的。 2、加锁时限: 加上一个超时时间,若一个线程没有在给定的时限内成功获得所有需要的锁,则会进行回退并释放所有已经获得的锁

IOC与DI

烂漫一生 提交于 2020-02-08 05:20:22
1. 控制反转 实际上,控制反转是一个比较笼统的设计思想,并不是一种具体的实现方法,一般用来指导框架层面的设计。这里所说的 “ 控制 ” 指的是对程序执行流程的控制,而 “ 反转 ” 指的是在没有使用框架之前,程序员自己控制整个程序的执行。在使用框架之后,整个程序的执行流程通过框架来控制。流程的控制权从程序员 “ 反转 ” 给了框架。 2. 依赖注入 依赖注入和控制反转恰恰相反,它是一种具体的编码技巧。我们不通过 new 的方式在类内部创建依赖类的对象,而是将依赖的类对象在外部创建好之后,通过构造函数、函数参数等方式传递(或注入)给类来使用。 3. 依赖注入框架 我们通过依赖注入框架提供的扩展点,简单配置一下所有需要的类及其类与类之间依赖关系,就可以实现由框架来自动创建对象、管理对象的生命周期、依赖注入等原本需要程序员来做的事情。 4. 依赖反转原则 依赖反转原则也叫作依赖倒置原则。这条原则跟控制反转有点类似,主要用来指导框架层面的设计。高层模块不依赖低层模块,它们共同依赖同一个抽象。抽象不要依赖具体实现细节,具体实现细节依赖抽象。 来源: CSDN 作者: chuhx 链接: https://blog.csdn.net/chuhx/article/details/104216251

带着萌新看springboot源码8(spring ioc源码 完)

六眼飞鱼酱① 提交于 2020-02-08 04:09:16
  上一节说到实例化了所有的单实例Bean,后面还有一步遍历 12.完成容器刷新(finishRefresh();)    那个和生命周期有关的后置处理器类型是LifecycleProcessor;监听器原理我就不多说了吧(大概原理参考我写的“知识小罐头”)。。。。。         到此为止,ioc容器的源码我就粗略的走了一遍。还是那句话,我这是很简单很粗糙的走了一遍,其中有很多的原理都没有说,要想真的弄懂,我这个只能当个大概的思路,还需要自己去找找其他大牛的教程,试试走走源码,会有意想不到的收获。   下一节估计又要回到springboot的源码了。。。。。嘿嘿嘿!(这一两天看ioc源码看的眼花缭乱,睡觉去。。。) 来源: https://www.cnblogs.com/wyq1995/p/9991886.html

三层架构的实现原理.02

家住魔仙堡 提交于 2020-02-08 00:18:26
三层架构的核心思想.01 三层架构的实现原理.02 三层架构的项目运用.03 总体架构 .职责划分 目前在典型的三层架构中,对层次各自的职责划分并没有一个统一的规范,综合现有的成功实践和.NET平台的特殊性。 将三层架构的职责划分如下: 数据访问层(DAL)--负责与数据源的交互,即数据的插入、删除、修改以及从数据中读出数据等操作。对数据的正确性和 可用性不负责,数据的用途不了解,不负担任何业务逻辑。 业务逻辑层(BLL)--负责系统领域业务的处理,负责逻辑性数据的生成、处理及转换。对输入的逻辑性数据的正确性及 有效性负责,对输出的逻辑性数据及用户性数据不负责,对数据的呈现样式不负责。 表示层(Web,相对B/S系统)--负责接收用户的输入、将输出呈现给用户以及访问安全性验证。对输入的数据的正确性和 有效性负责,对呈现样式负责,对呈现友好的错误信息负责。 .模块划分及交互设计 综合以上分析,可在宏观上将整个系统分为以下几个模块: 实体类模块(Model/Entity)--一组实体类的集合,负责整个系统中的数据的封装及传递。 数据访问层接口组(IDAL)--一组接口的集合,表示数据访问层的接口。 业务逻辑层接口组(IBLL)--一组接口的集合,表示业务逻辑层的接口。 数据访问层模块(DAL)--一组类的集合,完成数据访问层的具体功能,实现数据访问层接口组。 业务逻辑层模块(BLL)-

Spring基于注解的Ioc配置

大城市里の小女人 提交于 2020-02-07 11:28:20
首先需要建立的认知是: 注解配置 和 XML配置 要实现的功能 (都是为了降低程序间的耦合) 都是一样的,只是形式上的区别。 不管是XML配置还是注解配置都需要Sping的jar包的支持,所以开始之前都需要导入jar包 <!--Spring开发包--> < dependency > < groupId > org.springframework </ groupId > < artifactId > spring-context </ artifactId > < version > 5.2.1.RELEASE </ version > </ dependency > 编写业务层,以及添加注解 /** * 账户业务层接口 */ public interface AccountService { /** * 保存账户 */ void saveAccount ( ) ; } /** * 账户的业务层实现类 */ @Component ( value = "accountService" ) public class AccountServiceImpl implements AccountService { public void saveAccount ( ) { System . out . println ( "调用了业务层方法......" ) ; } } 注解 功能

.net中反射与IOC容器实现

爷,独闯天下 提交于 2020-02-07 07:45:19
反射还是很有用的,比如IOC容器基本上都是通过反射实现的。 IOC是什么 IOC:Inversion of Control 控制反转 是一种是面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度。 其基本思想是:借助于“第三方”实现具有依赖关系的对象之间的解耦。 IoC体现了好莱坞原则,即“不要打电话过来,我们会打给你” 设计模式六大原则 单一职责原则:一个类只负责一个功能领域中的相应职责。 开闭原则:一个软件实体应当对扩展开放,对修改关闭。 里氏代换原则:所有引用基类的地方必须能透明地使用其子类的对象。 接口隔离原则:使用多个专门的接口,而不使用单一的总接口。 迪米特法则:一个软件实体应当尽可能少地与其他实体发生相互作用。 依赖倒置原则(DIP):Dependence Inversion Principle 对应DIP原则,即:高层模块不应该依赖低层模块,两者都应该依赖其抽象; 抽象不应该依赖细节;细节应该依赖抽象。 另外,我们可能经常听人提到DI。 DI:Dependence Injection 依赖注入 将对象依赖的其他对象,通过注入的方式进行初始化,主要有三种方式:构造器注入、setter注入、接口注入 ICO容器 构造容器的思路:提取第三方,kv容器,注册,获取实例。 反射 反射的概念就不补充了,各位百度。 反射通过assemblyName的写法

IoC === IoC容器?

匆匆过客 提交于 2020-02-07 06:58:58
原文: http://www.cnblogs.com/Ivony/archive/2009/09/05/1561001.html 控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和 管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。 ” 老实说,我真的有一种天旋地转的感觉。。。。。 并不是因为这段定义的无稽,而是他的“经典性”,在搜索IoC和控制反转都能在前几个结果都看到这段“经典”的定义。我不由得觉得脊背一阵阵的发凉,真是见鬼了,原来我理解了这么多年的IoC是这么个意思。还好在我快要绝望的时候,终于看到了一篇厚道点的文章: http://dotnetfresh.cnblogs.com/archive/2005/06/27/181878.html 废话不多说,谈谈个人对IoC的理解。话说这么多年来,我一直是这样理解IoC的。 当程序中存在组件A调用组件B的时候(或者说组件A控制组件B),组件A就会产生对组件B的依赖,那么B的变化就会影响到A的实现(比如说B接口变更)。但糟糕的是,组件A通常是主体框架,或者基础结构(如果读者有C语言编程的背景的话,不难理解所有的函数都要被main调用,而main却就是最根本的函数)。这个时候就会使得程序僵化

Spring基础学习

99封情书 提交于 2020-02-07 03:37:01
文章目录 Spring简介 环境搭建 导入jar包 配置文件 使用Spring IOC Spring的IOC容器 Spring 创建对象的三种方式 1.通过构造方法创建 2.实例工厂创建对象 静态工厂实例化 Bean 的属性赋值(注入) 有参构造 属性setter注入 依赖注入(DI) Spring简介 Spring是分层的JavaSE/EE full-stack 轻量级开源框架,以IoC(Inverse of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程)为内核,使用基本的JavaBean来实现程序功能。 在实际开发中,通常服务器端采用三层体系架构,分别为表示层(web)、业务逻辑层(service)、持久层(dao), Spring对每一层都提供了技术支持。 Spring具有简单、可测试和松耦合的特点,从这个角度出发,Spring不仅可以用于服务器端开发,也可以应用于任何Java应用的开发中。 Spring几大核心功能 1.IoC/DI 控制反转/依赖注入 2. AOP 面向切面编程 3 声明式事务 上图是spring框架的运行框架 一:Test Test:是Spring提供的测试功能 二:Core Container Core Container是核心容器,也是Spring提供的最基本的条件 包含: 1.Beans

Spring学习——【IOC & DI】——Spring IOC & DI 控制反转与依赖注入

冷暖自知 提交于 2020-02-07 03:22:59
Spring IOC &DI 文章目录 Spring IOC &DI IoC 容器 Spring 的 BeanFactory 容器 Spring ApplicationContext 容器 IOC与DI的概念 传统开发模式 ioc开发方式 Dependency Injection 依赖注入的方式 依赖注入的java类型 1. 字面值类型 2.null值 3.集合类型 Bean 自动装配 自动装配模式 Bean 的作用域 singleton 作用域: prototype 作用域 Spring基于注解的配置 @Autowired 使用注解定义Bean IoC 容器 Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans,我们将在下一章中进行讨论。 通过阅读配置元数据提供的指令,容器知道对哪些对象进行实例化,配置和组装。配置元数据可以通过 XML,Java 注释或 Java 代码来表示。下图是 Spring 如何工作的高级视图。 Spring IoC 容器利用 Java 的 POJO 类和配置元数据来生成完全配置和可执行的系统或应用程序。 IOC 容器 具有依赖注入功能的容器,它可以创建对象,IOC

Spring IoC容器和AOP

妖精的绣舞 提交于 2020-02-07 00:45:04
Spring IoC容器和AOP 1、Spring简单介绍 2、Spring常用注解 3、控制反转(IoC) 4、依赖注入(DI) 5、面向切面编程(AOP) 5.1 AOP涉及名词 5.2 Pointcut用法 6、Spring核心jar包 各jar包作用 1、Spring简单介绍 学习了spring,发现对spring的概念并不是特别理解,查阅了很多资料,资源乱七八糟的,参差不齐,看到合适的容易理解的并且觉得介绍的是正确的,遂做笔记摘抄与各位分享,如有错误,还请各位大佬批评指出 Spring有两大特性: I o C \color{red}{IoC} I o C 和 A O P \color{red}{AOP} A O P IoC(Inversion of Control),意为控制反转 AOP(Aspect-Oriented Programming),意为面向切面编程 Spring核心容器的主要组件是Bean工厂(BeanFactory),Bean工厂使用控制反转(IoC)模式来降低程序代码之间的耦合度,并提供了面向切面编程(AOP)的实现。 简单说 S p r i n g 是 一 个 轻 量 级 的 控 制 反 转 ( I o C ) 和 面 向 切 面 编 程 ( A O P ) 的 容 器 框 架 \color{red}{Spring是一个轻量级的控制反转(IoC