接口

.NET Core扩展IServiceCollection自动注册服务

末鹿安然 提交于 2020-03-30 13:05:01
前言 在ASP.NET Core中使用 依赖注入 中使用很简单,只需在 Startup 类的 ConfigureServices ()方法中,通过 IServiceCollection 接口进行注入即可,其它的无需关心。 通过接口的Add*方法进行注册,代码如下: 1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddSingleton<IUser, MyUser>(); 4 } 但是这样的注入方法多了之后,就会产生太多行的services.Add...方法,看着实在是不爽; 回想起MEF,只需要两个约定好的特性就可以完成注册和注入的声明,比起现在一行行注册方式,简直不要太好。 所以我对 IServiceCollection 接口进行了 扩展 ,让它能与 MEF 类似的自动处理注册类型,而且支持通过多种方式进行注册。 我对接口进行了如下改造,让它支持 特性(attribute)、类型(继承或接口)、名称、命名空间、程序集名 等进行批量的注册。 展示一下特性注册,在 ConfigureServices 加入如下: services.Scan(scan => scan.FromAssemblyOf<IUser>() .AddClasses().UsingAttributes());

类接口/Class Interface

眉间皱痕 提交于 2020-03-30 08:46:57
在查看Object类的定义时发现Object使用了 ClassInterface,而且是 ClassInterfaceType . AutoDual 故查看一下具体什么,原来是类接口是为互操作而设计的,其中写到托管代码中基类或接口的中顺序也会影响互操作,真是不应乱该动代码。:) 类接口 是未在托管代码中显式定义的接口,它将公开在 .NET 对象上显式公开的所有公共方法、属性、字段和事件。 此接口可以是双绑定接口,也可以是仅调度接口。 类接口将接收 .NET 类本身的名称,并在名称前加有下划线。 例如,对于 Mammal 类,类接口为 _Mammal。 对于派生类,类接口还会公开基类的所有公共方法、属性和字段。 派生类也会为每个基类公开一个类接口。 例如,如果 Mammal 类扩展 MammalSuperclass 类,而 MammalSuperclass 本身又扩展 System.Object,.NET 对象将向 COM 客户端公开三个名为 _Mammal、_MammalSuperclass 和 _Object 的接口。 http://msdn.microsoft.com/zh-cn/library/4fcadw4a.aspx ClassInterfaceAttribute 类: http://msdn.microsoft.com/zh-cn/library/system

Spring 接口日志 AOP

依然范特西╮ 提交于 2020-03-30 08:11:48
接口日志记录AOP实现-LogAspect - 91博客it技术开发者 - 博客园 https://www.cnblogs.com/007sx/p/5810818.html Spring AOP(一) AOP基本概念 - 知乎 https://zhuanlan.zhihu.com/p/60842627 aspect学习(1)before&after&around - 夢の殇 - CSDN博客 https://blog.csdn.net/dream_broken/article/details/25532169 SpringBoot-18-之AOP+log4j 记录访问请求信息 - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1347110 来源: https://www.cnblogs.com/rgqancy/p/10999686.html

JAVA接口基础知识总结

我是研究僧i 提交于 2020-03-30 01:27:32
1:是用关键字 interface 定义的。 2:接口中包含的成员,最常见的有全局常量、抽象方法。 注意:接口中的成员都有固定的修饰符。 成员变量:public static final 成员方法:public abstract interface Inter{ public static final int x = 3; public abstract void show(); } 3:接口中有抽象方法,说明 接口不可以实例化 。 接口的子类必须实现了接口中所有的抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。 4:类与类之间存在着继承关系,类与接口中间存在的是 实现 关系。 继承用extends ;实现用implements ; 5:接口和类不一样的地方,就是, 接口可以被多实现 ,这就是多继承改良后的结果。java将多继承机制通过多现实来体现。 6:一个类在继承另一个类的同时,还可以实现多个接口。所以 接口的出现避免了单继承的局限性 。还可以将类进行功能的扩展。 7:其实java中是有多继承的。接口与接口之间存在着继承关系, 接口可以多继承接口 。 接口都用于设计上,设计上的特点: (可以理解主板上提供的接口) 1 :接口是对外提供的规则。 2 :接口是功能的扩展。 3 :接口的出现降低了耦合性。 抽象类与接口: 抽象类: 一般用于描述一个体系单元

Java集合框架面试题目

末鹿安然 提交于 2020-03-29 20:26:32
1.为什么Map接口不继承Collection 接口? Set是无序集合,并且不允许重复的元素 List是有序的集合,并且允许重复的元素 而Map是键值对 它被视为是键的set和值的set的组合 Map被设计为键值对的集合,所以不需要继承Collection 接口 2.HashMap和Hashtable之间的区别? 同步或线程安全 Null键和Null值 迭代值 默认容量大小 3.comparable 和 comparator的不同之处? comparable接口实际上是出自java.lang包 它有一个 compareTo(Object obj)方法来将objects排序 comparator接口实际上是出自 java.util 包 它有一个compare(Object obj1, Object obj2)方法来将objects排序 4.如何对Object的list排序? 对objects数组进行排序,我们可以用Arrays.sort()方法 如果要对objects的集合进行排序,需要使用Collections.sort()方法 5. fail-fast 与 fail-safe 之间的区别? Fail fast快速地报告任何的failure。无论何时任何一个问题都会引发 fail fast系统fails 在Java Fail fast 迭代器中

Java中的集合类

倖福魔咒の 提交于 2020-03-29 20:25:30
Java集合类与数组的区别:Java的集合类的长度是动态的,数组则是固定长度的。 Java集合类与数组的联系:使用相应的toArray()和Arrays.asList()方法可以互相转换。 首先来看看Java集合框架中的接口: Collection接口实现类中存放的是元素和Map接口实现类中存放的是键值对。 Set接口和List接口:Set接口不保证维护元素的顺序,而且元素不能重复。List接口维护元素的顺序,而且元素可以重复。 SortedSet和SortedMap提供了排序的功能。 再来看看接口的实现: HashSet和LinkedHashSet:HashSet,为快速查找而设计的Set。存入HashSet的对象必须实现hashCode()和equals()。LinkedHashSet,具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序),于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。 TreeSet: 提供排序功能的Set,底层为树结构 。相比较HashSet其查询速度低,如果只是进行元素的查询,我们一般使用HashSet。 ArrayList和LinkedList:ArrayList底层采用数组实现,具有较高的查询速度。LinkedList底层采用双向循环列表实现,进行插入和删除操作时具有较高的速度

Java中Comparable和Comparator的区别

天涯浪子 提交于 2020-03-29 19:46:33
前言 最近复习遇到了这个问题,在此进行一个详细的记录,分享给大家。 两个接口的区别 包区别 Comparable接口是在java.lang下。 Comparator接口是在java.util下。 使用区别 如果在定义类时,就实现了Comparable接口,直接在里面重写compareTo()方法,如果没实现,后面在业务开发中需要有比较排序的功能,就再单独写一个类实现Comparator接口,在里面重写compare()方法,然后这个类需要作为参数传入到工具类Collections.sort和Arrays.sort方法中。 使用场景 主要用于集合排序Collections.sort和Arrays.sort。 使用Comparable接口的实现方案 在定义类的时候,就实现这个接口,将排序规则定义好。 /** * 实体类,实现Comparable接口 */ public class Person implements Comparable<Person>{ //属性 private String name; private int age; private int salary; //get和set方法 public String getName() { return name; } public void setName(String name) { this.name = name;

服务器:RAID、AHCI、IDE

筅森魡賤 提交于 2020-03-29 19:07:58
RAID 独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。 磁盘阵列其样式有三种,一是外接式磁盘阵列柜、二是内接式磁盘阵列卡,三是利用软件来仿真。 外接式磁盘阵列柜最常被使用大型服务器上,具可热抽换(Hot Swap)的特性,不过这类产品的价格都很贵。 内接式磁盘阵列卡,因为价格便宜,但需要较高的安装技术,适合技术人员使用操作。 利用软件仿真的方式,由于会拖累机器的速度,不适合大数据流量的服务器。 AHCI AHCI(Serial ATA Advanced Host Controller Interface)串行ATA高级主控接口/高级主机控制器接口),是在Intel的指导下,由多家公司联合研发的接口标准,它允许存储驱动程序启用高级串行 ATA 功能,如本机命令队列和热插拔,其研发小组成员主要包括Intel、AMD、戴尔、Marvell、迈拓、微软、Red Hat、希捷和StorageGear等著名企业。 AHCI本质是一种PCI类设备,在系统内存总线和串行ATA设备内部逻辑之间扮演一种通用接口的角色

服务器:RAID、AHCI、IDE

强颜欢笑 提交于 2020-03-29 19:07:47
RAID 独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。 磁盘阵列其样式有三种,一是外接式磁盘阵列柜、二是内接式磁盘阵列卡,三是利用软件来仿真。 外接式磁盘阵列柜最常被使用大型服务器上,具可热抽换(Hot Swap)的特性,不过这类产品的价格都很贵。 内接式磁盘阵列卡,因为价格便宜,但需要较高的安装技术,适合技术人员使用操作。 利用软件仿真的方式,由于会拖累机器的速度,不适合大数据流量的服务器。 AHCI AHCI(Serial ATA Advanced Host Controller Interface)串行ATA高级主控接口/高级主机控制器接口),是在Intel的指导下,由多家公司联合研发的接口标准,它允许存储驱动程序启用高级串行 ATA 功能,如本机命令队列和热插拔,其研发小组成员主要包括Intel、AMD、戴尔、Marvell、迈拓、微软、Red Hat、希捷和StorageGear等著名企业。 AHCI本质是一种PCI类设备,在系统内存总线和串行ATA设备内部逻辑之间扮演一种通用接口的角色

防火墙接口类型介绍

 ̄綄美尐妖づ 提交于 2020-03-29 10:16:38
防火墙接口类型  物理接口 1) 防火墙支持的接口可以是二层接口或者三层接口 2) 二层接口:portswitch 3) 三层接口:undo portswitch  逻辑接口 1) VT(virtual template)接口、dialer接口 2) tunnel接口、null接口 3) vlanif接口 4) 三层以太网子接口 5) Eth-Trunk接口、loobacp接口 防火墙的Eth-trunk  优点: 1) 本质是要提高链路的带宽 2) 可靠性(LACP协议) 3) 负载分担  Eth-trunk模式分类: 1) 手工负载分担模式(默认)注意:所有链路都要参与转发 2) 静态LACP模式(没有动态LACP)注意: 可以所有,也可以配置备份M:N形式  Eth-trunk接口类型 1) 三层Eth-trunk 2) 二层Eth-trunk  交换机上面为二层Eth-trunk 第一步:新建Eth-trunk及模式 interface Eth-Trunk1 mode lacp-static ---------默认手工负载分担 第二步:定义Eth-trunk类型 interface Eth-Trunk1 port link-type trunk port trunk allow-pass vlan 2 to 4094 第三步:把接口加入Eth-trunk组