delegate

spring5 源码深度解析----- IOC 之 开启 bean 的加载

折月煮酒 提交于 2020-04-18 03:23:36
概述 前面我们已经分析了spring对于xml配置文件的解析,将分析的信息组装成 BeanDefinition,并将其保存注册到相应的 BeanDefinitionRegistry 中。至此,Spring IOC 的初始化工作完成。接下来我们将对bean的加载进行探索。 之前系列文章: spring源码深度解析— IOC 之 容器的基本实现 spring源码深度解析— IOC 之 默认标签解析(上) spring源码深度解析— IOC 之 默认标签解析(下) spring源码深度解析— IOC 之 自定义标签解析 BeanFactory 当我们显示或者隐式地调用 getBean() 时,则会触发加载 bean 阶段。如下: public class AppTest { @Test public void MyTestBeanTest() { BeanFactory bf = new XmlBeanFactory( new ClassPathResource("spring-config.xml" )); MyTestBean myTestBean = (MyTestBean) bf.getBean("myTestBean" ); } } 我们看到这个方法是在接口BeanFactory中定义的,我们看下BeanFactory体系结构,如下图所示: 从上图我们看到:   (1

面向对象——委托

雨燕双飞 提交于 2020-04-18 00:04:13
概念:类似方法在内存中的首地址,但是它是类型安全的,明确知道方法的返回值类型和参数。可以这样理解:对方法的一个间接调用。定义了委托相当于定义了一个类。 格式:访问修饰符 关键字(delegate) 所指向方法的返回类型 委托的名字([形参]); 使用方式:委托的名字 委托对象 = 关键字(new ) 委托的名字(所指向方法的名字); 委托对象([实参]); 委托的分类:单播委托,多播委托 单播委托:所指向方法的返回类型是具体的数据类型(如:int,short等); 多播委托:所指向方法的返回类型不是具体的数据类型,而是空(void); 例: public delegate void CallPoliceHander();//定义委托,用来指向事件发生时调用的方法。 public class Car { public event CallPoliceHander OnCrach;//通过委托定义事件。 public void Cracsh() { if (OnCrach != null)//事件发生了,如果不为空则表明事件发生了 { OnCrach();//调用委托所引用的方法 } } } public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1

我是如何在天猫、蚂蚁金服、百度等大厂面试中被拒的

故事扮演 提交于 2020-04-17 20:22:05
本人16年毕业于普通二本院校网络相关专业,工作经验两年半,目前就职业于一家普通民营企业。 由于非985、211学历硬伤,校招进大厂的门槛远高于同届985、211的毕业生。于是乎,从毕业到现在经历了三家创业公司,创业公司的痛痒相信大多数才毕业的小伙伴都很清楚,没有不坑的公司,所谓好公司就是不那么坑的公司。 背景 二月份前后一个月的时间,有幸获得天猫、蚂蚁金服、百度和Never China的面试机会,对于普通院校毕业的我,能够收到大厂面试机会已经很兴奋了,然后就幻想着收到offer的场景,或许是兴奋冲昏了头脑,没有好好审视自我,竟然觉得面试通过的把握还是有的,毕竟有2年工作经验嘛。 准备过程 1.刷面试题,相信这是大多数小伙伴的惯用伎俩吧,每次换下家前刷面试题是必经流程。所谓刷面试题就是把职业相关基础知识在脑海中跑一遍,对于大神级的人物可以忽略这一步,能被众人膜拜肯定是有两把刷子的。我的感受是,刚开始找工作的时候,实际开发经验很少,看基础知识很费力,就像是过年回家爸妈带着我走远房亲戚一一介绍七大姨八大姑很难记住一样,各种关系根本不知道怎么联系到一起。经历过几个实际项目之后,刷面试题就会轻松很多。面试题的出发点是为了验证应聘者对基础知识的掌握程度,以及日常开发过程中遇到的问题,如果没有亲身经历过这些问题便很难理解。所以面试题不是用来背的。 2.了解岗位相关知识,不同大厂的面试流程是不同的

C#队列学习笔记:RabbitMQ使用多线程提高消费吞吐率

心已入冬 提交于 2020-04-17 02:16:10
【推荐阅读】微服务还能火多久?>>> 一、引言 使用工作队列的一个好处就是它能够并行的处理队列。如果堆积了很多任务,我们只需要添加更多的工作者(workers)就可以了,扩展很简单。本例使用多线程来创建多信道并绑定队列,达到多workers的目的。 二、示例 2.1、环境准备 在NuGet上安装RabbitMQ.Client。 2.2、工厂类 添加一个工厂类RabbitMQFactory: /// <summary> /// 多路复用技术(Multiplexing)目的:为了避免创建多个TCP而造成系统资源的浪费和超载,从而有效地利用TCP连接。 /// </summary> public static class RabbitMQFactory { private static IConnection sharedConnection; private static int ChannelCount { get ; set ; } private static readonly object _locker = new object (); public static IConnection SharedConnection { get { if (ChannelCount >= 1000 ) { if (sharedConnection != null &&

静态方法和实例方法对于委托的区别

試著忘記壹切 提交于 2020-04-16 15:04:30
【推荐阅读】微服务还能火多久?>>> 当一个类的实例的方法被赋给一个委托对象时,在上下文中不仅要维护这个方法,还要维护这个方法所在的实例。System.Delegate 类的Target属性指向的就是这个实例。举个例子: class Program { static void Main( string [] args) { X x = new X(); ProgressReporter p = x.InstanceProgress; p( 1 ); Console.WriteLine(p.Target == x); // True Console.WriteLine(p.Method); // Void InstanceProgress(Int32)   } static void WriteProgressToConsole( int percentComplete) { Console.WriteLine(percentComplete + " % " ); } static void WriteProgressToFile( int percentComplete) { System.IO.File.AppendAllText( " progress.txt " , percentComplete + " % " ); } } class X { public void

静态方法和实例方法对于委托的区别

随声附和 提交于 2020-04-16 12:27:01
【推荐阅读】微服务还能火多久?>>> 当一个类的实例的方法被赋给一个委托对象时,在上下文中不仅要维护这个方法,还要维护这个方法所在的实例。System.Delegate 类的Target属性指向的就是这个实例。举个例子: class Program { static void Main( string [] args) { X x = new X(); ProgressReporter p = x.InstanceProgress; p( 1 ); Console.WriteLine(p.Target == x); // True Console.WriteLine(p.Method); // Void InstanceProgress(Int32)   } static void WriteProgressToConsole( int percentComplete) { Console.WriteLine(percentComplete + " % " ); } static void WriteProgressToFile( int percentComplete) { System.IO.File.AppendAllText( " progress.txt " , percentComplete + " % " ); } } class X { public void

Spring XML Bean 定义的加载和注册

谁说胖子不能爱 提交于 2020-04-15 12:24:42
【推荐阅读】微服务还能火多久?>>> 前言 本篇文章主要介绍 Spring IoC 容器怎么加载 bean 的定义元信息。 下图是一个大致的流程图: 第一次画图,画的有点烂。😂 正文 首先定义一个简单的 POJO,如下: public class User { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + '}'; } } 再编写一个 XML 文件。 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001

Java 数据持久化系列之 HikariCP (一)

白昼怎懂夜的黑 提交于 2020-04-15 11:57:12
【推荐阅读】微服务还能火多久?>>> 在上一篇 《Java 数据持久化系列之池化技术》 中,我们了解了池化技术,并使用 Apache-common-Pool2 实现了一个简单连接池,实验对比了它和 HikariCP、Druid 等数据库连接池的性能数据。在性能方面,HikariCP遥遥领先,而且它还是 Spring Boot 2.0 默认的数据库连接池。下面我们就来了解一下这款明星级开源数据库连接池的实现。 本文的主要内容包括: HikariCP 简介,介绍它的特性和现况。 HikariCP 的配置项详解,分析部分配置的影响。 HikariCP 为什么这么快,介绍其优化点。 这里啰嗦两句,由于本系列会涉及很多开源项目,比如说 HikariCP、Druid、Mybatis等,所以简单聊一下我对学习开源项目的认识,这也是我自己行文或者组织系列文章顺序的思路,后续有时间再详细总结一下。 安装并检查提供的所有工具,比如 Redis 目录下的 redis-check-aof 等工具的作用,这些工具都是官方特意提供的,一般都是日常经常要使用的,了解其功能。 运行,学习所有配置项的功能,原理和优缺点,比如 Redis 的内存溢出控制策略 maxmemory-policy 的可选值都有哪些,分别对应的策略是什么含义,适用于哪些场景等。 原理研究,针对关键特性进行研究,比如 Netty 的异步

13.在ASP.NET Core中配置中间件组件

天大地大妈咪最大 提交于 2020-04-15 09:11:51
【推荐阅读】微服务还能火多久?>>> 原文: 13.在ASP.NET Core中配置中间件组件 这篇文章中,我们将一起学习在ASP.NET Core中配置中间件组件,以便处理请求处理管道。在阅读这篇文章之前,麻烦大家先去看看,我前面写的一篇文章: ASP.NET Core中间件组件 。在这篇文章中,我们将一起学习下面几个内容: 怎样在ASP.NET Core中配置中间件组件? 什么是ASP.NET Core中的请求委托? 什么是ASP.NET Core中的Use和Run方法? 什么是 UseDeveloperExceptionPage 中间件组件? 怎样使用扩展方法Run,来配置中间件组件? 什么是扩展方法? 怎样在ASP.NET Core中配置中间件组件 在前面的文章中,我们已经知道,我们需要在Startup类文件中的Startup类中的Configure方法内,来配置中间件组件。我们打开之前创建的空模板的ASP.NET Core项目,可以看到项目默认有一个Configure方法: 什么是ASP.NET Core中的请求委托? 在ASP.NET Core中,请求委托被用来构建请求管道,也就是请求委托用来处理每一个即将从客户端发来的请求。在ASP.NET Core中,你可以使用Run、Map、以及Use扩展方法来配置请求委托。你可以使用,匿名的内联方法,来指定一个请求委托

Java 反序列化系列 ysoserial Groovy 1

走远了吗. 提交于 2020-04-14 19:06:53
【推荐阅读】微服务还能火多久?>>> 作者:天融信阿尔法实验室 原文链接: https://mp.weixin.qq.com/s/FdZ9nVjyLGV7eEbYtcm4sg ysoserial简介 ysoserial是一款在Github开源的知名java 反序列化利用工具,里面集合了各种java反序列化payload; 由于其中部分payload使用到的低版本JDK中的类,所以建议自己私下分析学习时使用低版本JDK JDK版本建议在1.7u21以下。 此篇文章为java反序列化系列文章的第一篇Groovy1 原理分析,后续会以ysoserial这款工具为中心,挨个的去分析其中的反序列化payload和gadget,讲完该工具后会继续对工具中没有的java 反序列化漏洞进行讲解,例如 FastJson JackSon,WebLogic等等,并将这些漏洞的exp加入到ysoserial中然后共享和大家一起学习交流。 源码下载地址 https://codeload.github.com/frohoff/ysoserial/zip/master jar包下载地址 https://jitpack.io/com/github/frohoff/ysoserial/master-30099844c6-1/ysoserial-master-30099844c6-1.jar 源码深度解析