由于这几天都比较忙,所以对笔记暂时没有更新. Spring.NET具有自动装配的能力,也就是说,Spring.NET可以通过对象的定义自动分辨某个对象的协作对象.自动装配是针对单个对象(按:针对每个协作对象)进行的,所以可对某些对象启用自动装配而某些对象关闭自动装配(按:即自动装配某些协作对象,而不自动装配其它协作对象).使用自动装配可以减少甚至完全消除属性或参数值的设置工作. 上面是官方的定义,有点难懂,说白了就是,在使用大部分框架,包括Spring.Net 框架进行软件开发的过程中都有着复杂…
前面我们知道了什么是对象,什么是对象工厂,什么是应用程序上下文.这一次我们来看一下对象的装配. Spring.Net 中有多种装配对象的方式,装配这个词可能比较学术化,我们可以理解为对象的创建. Spring.Net 中常用的装配方式有 手动装配和自动装配.手动装配就是根据配置文件然后装配对象,而自动装配是指Spring.Net根据指定的自动模式查找相关属性并自动装配.这两种装配方式之下又分为 通过属性进行装配,通过构造器进行装配,通过静态工厂装配,通过实例工厂装配,泛型的装配等等.这些装配方式…
在前面一章我们介绍了依赖注入,控制反转的概念,以及自己动手搭建了一下Spring.Net的环境.通过这些操作,我们知道了Spring.Net 的核心是使用依赖注入或控制反转这种思想来管理业务对象,降低程序的依赖耦合.这一次的笔记,就是来了解一下,Spring.Net 如何管理我们的类. 4.1  对象,对象工厂和应用程序上下文介绍 在前面的章节,我们曾稍微提到过关于对象,对象工厂和应用程序上下文.我们也知道了可以用这些接口来管理对象,接下来会详细介绍他们. Spring.Core 程序集是Spr…
各位,实在不好意思,因为有事,博客几天没更新了.前面有童鞋提到,配置 Objects.xml 路径的相关问题,这些东西是 IResource 接口的一些内容.在下一章会详细介绍. 传统的Net应用中,对象的生命周期非常简单..Net中的关键词 new 用来实例化对象(或许它是非序列化的).这样就够用了.相反,对象 的生命周期在 Spring.Net 容器中更加细致.理解 Spring.Net 对象的生命周期非常重要,因为你或许要利用 Spring.Net 提供的机制来订制对象的创建过程.我们在前…
Spring.Net 中对象的作用域,就是描述对象的部署模式 ,Spring.Net 中对象可以通过两种模式布署: ① singleton(单例模式) ② 非singleton 也叫非单例模式(或者叫做 prototype,只是用在这里不是很合适) 当一个对象被定义为 singleton 时,容器中就只会有一个共享的实例,任何时候通过id或别名请求该对象都会返回这个共享实例的引用(也就是说这个对象只会被创建一次). 当使用 非singleton,或者说原型模式布署时,每次请求对象都会创建新的实例…
在 Spring.Net 中对象初始化的方式分为两种: ① 急切实例化,也就是说 Spring.Net 容器初始化的时候将对象先实例化出来. ② 延迟实例化,也就是说我们在调用 GetObject 方法时才实例化该对象. Spring.Net 默认使用的 急切实例化 ( lazy-init=“false” ) 的方式来初始化对象.lazy-init=“false” 从字面上理解就是 ”不延迟实例化(急切实例化)“,而 lazy-init=“true” 就是 “延迟实例化”的意思. 只要是一个对象…
Spring.Net 一直讲求 ” 配置应用程序“,有一种需求在实际开发中不太常用,却非常有用 -> 配置对象的行为,Spring.Net 也能够完美的实现.Spring.Net 通过几个专门的接口来控制容器中对象的行为.比如说,我们可以自定义对象初始化行为,自定义对象销毁行为,抽象对象定义和子对象定义等.在下面会介绍常用的几中 自定义对象行为: ① 自定义对象初始化行为 ② 自定义对象销毁行为 ③ 抽象对象定义 ④ 子对象定义 ⑤ IObjectPostProcessor及扩展类(对象后处理器…
在前面章节有童鞋提到过 关于配置文件 Objects.xml 路径的相关问题,这些东西是 IResource 接口的一些内容,接下来就详细介绍一下 IResource 接口. IResource 接口 位于Spring.Core.IO 命名空间下,它能够使用统一的方式描述和访问不同类型的资源.通过该接口可以使用类似多态,与协议无关的方式来处理文件和URI资源.IResource 接口继承自 IInputStream 接口,后者只有一个属性: Stream InputStream , IResou…
我们在开发中,经常需要让对象了解自己所在的容器的信息,例如,有时我们需要让对象知道,对象所在容器的引用是什么,或者是对象在容器中的名称是什么 .Spring.Net 中提供了两个接口,我们使用这两个接口可以让对象了解自己的容器. 一 . IObjectFactoryAware 接口 实现了 Spring.Objects.Factory.IObjectFactoryAware 接口 的对象可以在被容器创建后获取它所在容器的引用.该接口只有一个(只写的)属性: IObjectFactory Obje…
官方取名叫 对象后处理器 (object post-processor) , 听起来很高级的样子啊!实际上就是所有实现了这个接口的类,增加了两个方法. Spring.Objects.Factory.Config.IObjectPostProcessor 接口,该接口包括两个方法: //在每个对象的初始化方法被调用之前调用 object PostProcessBeforeInitialization(object instance, string name); //在对象的初始化方法返回之后调用…
 孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.close() 当一个file对象执行此方法时,将关闭当前打开的文件. 关闭后的文件不能再进行任何操作. 二.seek() 当用python的内置函数open打开了一个磁盘文件后,当前指针是固定在打开的file对象的指定位置的,而当我们想要移动指针时,就可以使用file对象的seek()方法. 语法:file.seek(offset[,whence]) o…
Spring 1. 作用 创建和管理对象,使得开发过程中,可以不必使用new关键字创建对象,而是直接获取对象!并且,还可以通过一些配置,使得某些获取到的对象,其中某些属性已经是被赋值的! 2. Spring注解 在Spring中,定义了一系列的注解,可以取代几乎所有的XML配置! 尽管使用注解可以完成此前的许多配置,但是,基于Spring的项目仍需要Spring的配置文件! 2.1. 常用注解 使用注解的方式来创建和管理对象,首先,必须在Spring的配置文件中添加组件扫描: <!-- 组件扫描…
1,回顾以前的做法 一个人有姓名,有住址,有一辆车.其中住址和车也是一个类,这种情况下不用自动装配是十分容易实现的 (1)Person类 package com.zsq; public class Person { private String name; private Address address; private Car car; public String getName() { return name; } public void setName(String name) { thi…
解析Spring的IoC容器基于注解实现的自动装配(自动注入依赖)的原理 1.本文案例 使用注解和反射机制来模拟Spring中IoC的自动装配功能 定义两个注解:@Component,用来标注组件:@Autowired,用来标记需要被织入的属性. 定义一个@Component注解处理器,用来扫描所有组件. 定义一个bean工厂,用来实例化组件. 测试:有两个组件,一个组件被设置到另一个组件的属性中. 2.定义注解2.1.定义@Component注解 这个注解表示被标注的就是一个组件,将会被容器自…
这里选择的是mysql数据库. 4.1引入aop.tx的命名空间 为了事务配置的需要,我们引入aop.tx的命名空间 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&q…
1. Linux 的账号与群组 1.1 使用者标识符: UID 与 GID 1.2 使用者账号:/etc/passwd 文件结构, /etc/shadow 文件结构 1.3 关于群组: /etc/group 文件结构, 有效与初始群组, groups, newgrp, /etc/gshadow2. 账号管理 2.1 新增与移除使用者: useradd, useradd 参考档, passwd, chage, usermod, userdel 2.2 用户功能:finger, chfn, chsh…
现在大多数项目都是基于spring boot进行开发,所以我们以spring boot作为开发框架来使用netty.使用spring boot的一个好处就是能给将netty的业务拆分出来,并通过spring cloud整合到项目中. 我们以一个简单的客户端发送消息到服务的场景编写一个实例. 一.服务端模块 netty中服务端一般分为两个类,一个是启动配置类,另一个是消息的逻辑处理类,但是首先我们要配置spring boot的启动类,启动netty @SpringBootApplication p…
Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详解 Cobalt Strike系列教程第三章:菜单栏与视图 今天我们将继续分享Cobalt Strike系列教程的其他章节内容,希望对大家的学习有所帮助,快速提升实用技能. 文件/进程管理与键盘记录 文件管理 1.基础管理 选择一个会话,右键,目标-->文件管理 Upload为上传一个文件,Make…
5.1 Spring事务管理概述 5.11 事务管理的核心接口 在Spring的所有jar包中,有一个名spring-tx-4.3.6RELEAS的jar包,是提供事务管理的依赖包.在该包的org.springframework.transaction包中,三个核心接口文件分别是PlatformTransactionManager.TransactionDefinition和TransactionStatus 1.PlatfromTransactionManager PlatfromTransa…
Spring MVC的总体设计 Control设计 Model设计 View设计 框架设计的思考 设计模式解析之模版模式…
​上下文在web容器中的启动 1,IoC容器的启动过程 IoC的启动过程就是建立上下文的过程.该上下文是与ServletContext相伴.在Spring中存在一个核心控制分发器,DispatcherServlet,这是Spring的核心.在web容器启动Spring应用程序时.首先建立根上下文,然后ContextLoader建立WebApplicationContext. Web容器中启动Spring步骤例如以下: 在web.xml中.已经配置了ContextLoadListener,该类实现…
目录 前言 使用 aop 的配置文件写法 开启注解扫描 利用注解创建对象 注解方式注入属性 配置文件和注解混合使用 前言 注解可以写在 类.方法.属性 上 : 使用 注解,需要导入 aop 包: 使用 注解,不代表,我们可以完全脱离配置文件,还是需要配置文件的,只是配置文件中,不再需要写很多配置 : 使用 aop 的配置文件写法 相对于使用纯配置文件的 bean 约束,使用aop,多了一个 context 约束 多加一个 context 约束 <?xml version="1.0"…
在了解JDK提供的线程原子性操作工具类之前,我们应该先知道什么是原子性:在多线程并发的条件下,对于变量的操作是线程安全的,不会受到其他线程的干扰.接下来我们就学习JDK中线程的原子性操作. 一.CAS原理 说道原子性,不得不提的就是CAS原理: 使用锁时,线程获取锁是一种悲观锁策略,即假设每一次执行临界区代码都会产生冲突,所以当前线程获取到锁的时候同时也会阻塞其他线程获取该锁.而CAS操作(又称为无锁操作)是一种乐观锁策略,它假设所有线程访问共享资源的时候不会出现冲突,既然不会出现冲突自然而然就…
If you need to access the application arguments that were passed to SpringApplication.run(…​), you can inject a org.springframework.boot.ApplicationArguments bean. The ApplicationArguments interface provides access to both the raw String[] arguments…
一:前言 没有完整看完,但是看到了一些关键的地方,这里做个记录,过程会有点乱,以后逐渐补充最终归档为完整流程:相信看过框架源码的都知道过程中无法完全确定是怎样的流程,毕竟不可能全部都去测试一遍 ,但是看的过程中灵感的显现很重要(就是直觉知道接下来的步骤是什么应该是什么之类的,但是这个自觉是猜的而非蒙的,即过程里是有往会递推看到了一些关键点的而不是抛色子来确定是哪个子类) ,因此自己写的时候也无法将看的过程里产生的想法写得很细,过程也有点跳,如果大家有疑问最好自己去验证(方式就是搜索然后看哪里调用…
四.Spring的事务管理 事务原本是数据库中的概念, 在Dao层. 但一般情况下, 需要将事务提升到 业务层, 即Service层. 这样做是为了 能够使用事务的特性来管理具体的业务. 1. Spring事务管理API介绍 (1) 事务管理器是PlatformTransactionManager接口 对象. 其主要 用于完成事务的提交. 回滚, 及获取事务的状态信息. PlatformTransactionManager接口 常用的两个实现类 DataSourceTransactionMana…
前面两篇文章描述了IoC容器中依赖的概念,包括依赖注入以及注入细节配置.本文将继续描述玩全部的依赖信息. 使用 depends-on 如果一个Bean是另一个Bean的依赖的话,通常来说这个Bean也就是另一个Bean的属性之一.多数情况下,开发者可以在配置XML元数据的时候使用<ref/>标签.然而,有时Bean之间的依赖关系不是直接关联的.比如:需要调用类的静态实例化器来触发,类似数据库驱动注册.depends-on属性会使明确的强迫依赖的Bean在引用之前就会初始化.下面的例子使用dep…
Spring的自动装配与依赖注入 装配 = 创建Bean + 注入Bean 创建Bean 自动发现 显式注册Bean 注入Bean 基于配置的注入 自动注入 Spring的装配分为显式装配和隐式装配,涉及到自动装配.隐式的Bean发现机制.依赖注入等术语,但是在我看来装配整个过程分为两步,创建和注入.首先要创建Bean,不管是通过Spring的扫描机制去自动发现我们声明好的Bean还是在配置文件中把Bean声明出来:其次就是把满足依赖关系的Bean注入到需要的地方去. 创建Bean 自动发现 虽…
为什么Spring要支持Autowire(自动装配) 先写几个类,首先定义一个Animal接口表示动物: 1 public interface Animal { 2 3 public void eat(); 4 5 } 写一个Animal接口的实现Tiger类: 1 public class Tiger implements Animal { 2 3 @Override 4 public void eat() { 5 System.out.println("Tiger.eat()");…