delegate

关于JAVA发送Https请求(HttpsURLConnection和HttpURLConnection)

和自甴很熟 提交于 2019-11-30 14:09:53
【转】 https协议对于开发者而言其实只是多了一步证书验证的过程。这个证书正常情况下被jdk/jre/security/cacerts所管理。里面证书包含两种情况: 1、机构所颁发的被认证的证书,这种证书的网站在浏览器访问时https头显示为绿色如百度 2、个人所设定的证书,这种证书的网站在浏览器里https头显示为红色×,且需要点击信任该网站才能继续访问。而点击信任这一步的操作就是我们在java代码访问https网站时区别于http请求需要做的事情。 所以JAVA发送Https请求有两种情况,三种解决办法: 第一种情况:Https网站的证书为机构所颁发的被认证的证书,这种情况下和http请求一模一样,无需做任何改变,用HttpsURLConnection或者HttpURLConnection都可以 [java] view plain copy public static void main(String[] args) throws Exception{ URL serverUrl = new URL("https://xxxx"); HttpURLConnection conn = (HttpURLConnection) serverUrl.openConnection(); conn.setRequestMethod("GET"); conn

bean的加载-配置文件的解析

ぃ、小莉子 提交于 2019-11-30 06:43:56
bean的加载-配置文件的解析 spring的启动流程部分内容比较多,因此在之前先做了以下这些源码分析,这些要简单些。 spring-webmvc启动流程 spring-webmvc请求处理流程 spring-webmvc请求处理流程-返回值处理 现在再慢慢来解决spring核心的启动流程。 spring是个包含很多个模块的框架。其中核心部分有四个,bean,core,context和Expresion Language. core和bean是spring的基础模块。提供Ioc(控制反转)和依赖注入特性,这些的基础概念是BeanFactory。即bean工厂,一个可以创建各种bean的工厂。我们使用spring来过将项目的时候,都离不开bean,Bean模块包含访问配置文件,创建和管理bean以及进行Ioc和DI操作相关的所有类。 既然bean这么重要,那么就来分析一下bean的加载过程就顺理成章了。只分析比较核心的,能够根据这些方法想起其中细节的一些方法,所以有些地方不会太深入,适合对spring有一定了解的读者,深究就留给自己去研究吧。 <bean id="xxx" class="com.xx.xx.Person"/> 如上,bean的定义是如此简单,但是加载过程是怎样的呢?为了简便起见

【Spring】- 自定义标签及工作原理

馋奶兔 提交于 2019-11-30 06:43:47
Spring自定义标签 Spring默认会将xml中所有 <bean> 等标签解析为BeanDefinition抽象对象,自定义标签的本质是扩展Spring解析的标签类型,使其从自定义标签转化为BeanDefinition的过程。 自定标签步骤 1. 创建映射标签实体JavaBean: Person/User package com.zhiwei.basic.tag; import java.util.List; public class Person { private String personName; private Integer age; private List<String> nickName; public String getPersonName() { return personName; } public void setPersonName(String personName) { this.personName = personName; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public List<String> getNickName() { return nickName; } public void

Linux下离线安装Docker最新版本

强颜欢笑 提交于 2019-11-30 00:32:31
一、基础环境 1、操作系统:CentOS 7.3 2、Docker版本:18.06.1 官方下载地址(打不开可能需要科学上网) 3、百度云Docker 18.06.1地址:https://pan.baidu.com/s/1YdN9z72QutPkHBfLq06H1A 密码:dvvh 4、官方参考文档:https://docs.docker.com/install/linux/docker-ce/binaries/#install-static-binaries 二、Docker安装 1、解压 tar -xvf docker-18.06.1-ce.tgz 1 2、将解压出来的docker文件内容移动到 /usr/bin/ 目录下 cp docker/* /usr/bin/ 1 3、将docker注册为service vim /etc/systemd/system/docker.service 1 [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the

NSURLSession学习笔记(三)Download Task

亡梦爱人 提交于 2019-11-29 23:14:21
NSURLSession的Download Task用于完成下载任务,本文介绍如何创建断点续传的下载任务和后台下载任务。 我们直接从分析Demo入手: 故事板如下: 只有一个View Controller,用于创建各种下载任务,并将下载后的图片显示到视图上,下载过程中会更新下载进度。 头文件代码如下: #import <UIKit/UIKit.h> @interface ViewController : UIViewController <NSURLSessionDownloadDelegate> /* NSURLSessions */ @property ( strong , nonatomic ) NSURLSession *currentSession; // 当前会话 @property ( strong , nonatomic , readonly ) NSURLSession *backgroundSession; // 后台会话 /* 下载任务 */ @property ( strong , nonatomic ) NSURLSessionDownloadTask *cancellableTask; // 可取消的下载任务 @property ( strong , nonatomic ) NSURLSessionDownloadTask *resumableTask;

C#委托(delegate、Action、Func、predicate)和事件

佐手、 提交于 2019-11-29 18:19:22
原文: C#委托(delegate、Action、Func、predicate)和事件 一、前言 刚开始工作的时候,觉得委托和事件有些神秘,而当你理解他们之后,也觉得好像没有想象中的那么难。在项目中运用委托和事件,你会发现他非常棒,这篇博文算是自己对委托和事件的一次梳理和总结。 二、委托 C#中的委托,相当于C++中的指针函数,但委托是面向对象的,是安全的,是一个特殊的类,当然他也是引用类型,委托传递的是对方法的引用。 2.1、delegate 声明委托就必须使用关键字“delegate”,委托是先声明,后实例化。至少0个参数,至多32个参数 格式如下所示: private delegate string GetAsString(); 委托是一个类,所以他的实例化跟类的实例化一样,只是他总是接受一个将委托方法作为参数的构造函数。调用委托方法就有两种方式,如下所示: int i = 10; var method = new GetAsString(i.ToString); //调用方法一 Console.WriteLine($"method方法{method()}"); //调用方法二 Console.WriteLine($"method.Invoke方法{method.Invoke()}"); 运行结果: 2.2、Action Action是无返回值的泛型委托

浅入浅出Lambda表达式

大兔子大兔子 提交于 2019-11-29 16:43:24
大家在开发中会经常看到也会经常使用lambda表达式。 园子里也有很多详解lambda表达式的文章,多是从横向来讲述。 但lambda表达式到底如何变成现在这个样子,表达式的形式到底代表什么含义,这些可能就不太明白了。 本文将从来源开始,纵向剖析,一直演化出我们常用的lambda表达式。 引子 为方便说明,先举个例子,列出Lambda表达式的一个典型形式: x=>x+1 大家可以看到,Lambda表达式的语法由三部分组成,分别为: 1. Lambda运算符 => 读作goes to; 2. 左边参数部分 x ; 3. 右边的Lambda主体 可以看出,其实所谓的Lambda表达式(lambda expression)就是一个匿名函数,或者说是匿名函数的简单形式。而匿名函数的作用就是分配给委托类型的。 假设我们声明一个委托: delegate int Mydel(int x); lambada 表达式(匿名函数)用来填充委托变量: Mydel del= x=>x+1; 我们就从这个例子说开去。 演化过程 刚刚说过,lambda表达式就是匿名方法的简写形式,说到lambda表达式就要说到匿名方法,而匿名方法就是初始化委托时内联声明的方法。 因此我们先从委托说起,一直推导出 lambda表达式Mydel del=x=>x+1; 的形式。 和类相似,委托是用户自定义的引用类型。

1.2 XmlBeanFactory的实例化

可紊 提交于 2019-11-29 15:57:27
  源代码分析,是一件既痛苦又快乐的事情,看别人写的代码是通过的,但当你能够看明白的时候,相信快乐也会随之而来,为了减少痛苦,更快的带来快乐,    本文以spring框架的XmlBeanFactory为入手点进行分析 首先来打开该类的代码,我们将看到如下代码: 1 public class XmlBeanFactory extends DefaultListableBeanFactory { 2 3 private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader( this ); 4 5 public XmlBeanFactory(Resource resource) throws BeansException { 6 this (resource, null ); 7 } 8 9 public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException { 10 super (parentBeanFactory); 11 this .reader.loadBeanDefinitions(resource); 12 } 13 14 } 这个类的代码很简单,一个成员对象加两个构造函数

C#委托(delegate、Action、Func、predicate)和事件

混江龙づ霸主 提交于 2019-11-29 15:02:50
一、前言 刚开始工作的时候,觉得委托和事件有些神秘,而当你理解他们之后,也觉得好像没有想象中的那么难。在项目中运用委托和事件,你会发现他非常棒,这篇博文算是自己对委托和事件的一次梳理和总结。 二、委托 C#中的委托,相当于C++中的指针函数,但委托是面向对象的,是安全的,是一个特殊的类,当然他也是引用类型,委托传递的是对方法的引用。 2.1、delegate 声明委托就必须使用关键字“delegate”,委托是先声明,后实例化。至少0个参数,至多32个参数 格式如下所示: private delegate string GetAsString(); 委托是一个类,所以他的实例化跟类的实例化一样,只是他总是接受一个将委托方法作为参数的构造函数。调用委托方法就有两种方式,如下所示: int i = 10; var method = new GetAsString(i.ToString); //调用方法一 Console.WriteLine($"method方法{method()}"); //调用方法二 Console.WriteLine($"method.Invoke方法{method.Invoke()}"); 运行结果: 2.2、Action Action是无返回值的泛型委托,可以接受0个至16个传入参数 Action 表示无参,无返回值的委托 Action<int,string>

Delegate Event(委托和事件)

混江龙づ霸主 提交于 2019-11-29 12:53:45
.Net Framework中的委托与事件 尽管上面的范例很好地完成了我们想要完成的工作,但是我们不仅疑惑:为什么.Net Framework 中的事件模型和上面的不同?为什么有很多的EventArgs参数? 在回答上面的问题之前,我们先搞懂 .Net Framework的编码规范: 委托类型的名称都应该以EventHandler结束。 委托的原型定义:有一个void返回值,并接受两个输入参数:一个Object 类型,一个 EventArgs类型(或继承自EventArgs)。 事件的命名为 委托去掉 EventHandler之后剩余的部分。 继承自EventArgs的类型应该以EventArgs结尾。 再做一下说明: 委托声明原型中的Object类型的参数代表了Subject,也就是监视对象,在本例中是 Heater(热水器)。回调函数(比如Alarm的MakeAlert)可以通过它访问触发事件的对象(Heater)。 EventArgs 对象包含了Observer所感兴趣的数据,在本例中是temperature。 上面这些其实不仅仅是为了编码规范而已,这样也使得程序有更大的灵活性。 比如说,如果我们不光想获得热水器的温度,还想在Observer端(警报器或者显示器)方法中获得它的生产日期、型号、价格,那么委托和方法的声明都会变得很麻烦,而如果我们将热水器的引用传给警报器的方法