代理模式

Asp.net Web Api 设计

旧街凉风 提交于 2020-02-02 00:38:38
目录 Asp.net Web Api 设计[持续更新] 第一部分 基础知识 第一章 因特网、万维网和HTTP协议 1.1 Web体系结构 第二章 Web Api 2.1 什么是Web Api 2.6 Web Api 指南 第三章 Asp.Net Web Api Asp.net Web Api 设计[持续更新] 第一部分 基础知识 第一章 因特网、万维网和HTTP协议 1.1 Web体系结构 Web体系有三个核心概念:资源 、URL和表示。一个资源由一个URI进行标识,而HTTP客户端使用URI就可定位资源。表示是从资源返回的那些数据。和Web相关的另-一个重要概念是媒体类型(media type),指的是从资源返回数据的格式。 1.1.1 资源 任何带有URL 标识的东西都是资源。 一个网页一个文档或者是一个文件都是资源,而资源不仅限于这些,它也可以是一个建立连接的服务。也可以是一个媒体流声音流。 资源必须关联实体或者数据库吗? 现在,人们对于Web API有一一个常见的误解,认为一个资源必须对应到一个有数据库支持的实体或者业务对象。在讨论设计时经常会有人说:“我们不能用这个资源,因为这个资源需要在数据库中创建一个表,而我们又不需要这张表。”前面给出的资源定义中描述了到一个或多个实体的映射,这里所说的实体是泛指的(也就是说,实体可以是任何东西),而不是特指业务对象

云原生 - Why is istio(二)

∥☆過路亽.° 提交于 2020-02-01 11:08:43
出处: https://cizixs.com/2018/08/26/what-is-istio 创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。 前言 随着微服务架构的流行,服务网格技术获得了业界的广泛关注,作为实现云原生的重要积木,各大厂商也纷纷开始布局,Amazon在2019年4月份推出了App Mesh;Google、IBM、Lyft联合开发了Istio。 Istio作为下一代服务网格的整体解决方案,得到了业界的普遍认可,站在kubernetes巨人的肩膀上,极大地提升了分布式微服务应用的研发和运维效率。 2020是云原生普及的一年,如何部署、使用、运维Istio将是必须要学习的知识。 什么是 istio? 官方对 istio 的介绍浓缩成了一句话: An open platform to connect, secure, control and observe services. 翻译过来,就是”连接、安全加固、控制和观察服务的开放平台“。开放平台就是指它本身是开源的,服务对应的是微服务,也可以粗略地理解为单个应用。中间的四个动词就是 istio 的主要功能,官方也各有一句话的说明。这里再阐释一下: 连接(Connect):智能控制服务之间的调用流量,能够实现灰度升级、AB 测试和红黑部署等功能 安全加固(Secure)

代理模式笔记

拈花ヽ惹草 提交于 2020-01-31 21:17:49
什么是代理模式 为什么使用代理模式 静态代理 不使用代理时,直接调用对象的方法,使用代理后,通过代理调用对象的方法,同时可以在方法前后添加操作. interface IAct{ void act(int money); } class Actor implements IAct{ public void act(int money) { System.out.println("收到"+money+"元,开始表演"); } } class ProxyActor implements IAct{ IAct actor; ProxyActor(IAct actor){ this.actor=actor; } @Override public void act(int money) { // TODO Auto-generated method stub System.out.println("代理前的工作"); actor.act(money); System.out.println("代理后的工作"); } } public class ProxyPattern { public static void main(String[] args) { //不使用代理 IAct ac=new Actor(); ac.act(100); //使用代理后 IAct proxy=new

Day23——动态代理

自闭症网瘾萝莉.ら 提交于 2020-01-31 13:16:06
一. 回顾 前面 Day22——AOP前奏 讲到了计算器的日志功能问题,由于代码散乱,需要将日志功能独立出来实现,需要用到动态代理。今天讲述动态代理。 本文章项目源码已上传到本博客的“资源”,可自行前往免费下载 二. 原理 2.1 动态代理的原理 代理设计模式的原理:使用一个代理将对象包装起来,然后用该代理对象“取代”原始对象,任何原始对象的调用都需要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。 动态代理原理: 在运行时,动态地给原始对象(即目标对象)生成一个代理对象,代理对象可以增强原始对象的功能(即扩展功能),代理对象只能完成扩展出来的功能,而原始对象的功能还必须由原始对象去完成。但是,代理对象决定是否以及何时将功能转回到原始对象上。 2.2 JDK动态代理 Proxy:所有动态代理的父类。主要用于生成代理类,代理对象。 //返回代理类的Class对象 public static Class < ? > getProxyClass ( Classloader loader , Class < ? > . . . interface ) ; //返回代理对象 public static Object newProxyInstance ( Classloader loader , Class < ? > [ ] . . . interface ,

入门Nginx

一笑奈何 提交于 2020-01-31 02:05:05
一、正向代理和反向代理 正向代理举例:翻越万里长城去游览墙外的景色 反向代理举例:负载均衡 正向代理和反向代理涉及三个主体: 请求方 代理 被请求方 正向代理中,代理跟请求方是一家子,请求方说要啥,代理就给他啥。 反向代理中,代理跟被请求方是一家子,代理统筹规划让哪一个被请求方来处理请求,对于请求方来说,代理就是处理请求的人。大多数情况下,反向代理和被请求方在同一个服务器上。Nginx就是最常用的反向代理服务器。 这里也提一下:动态代理和静态代理 正向代理和反向代理是代理服务器的两种类型 动态代理和静态代理是Java中的设计模式:代理模式。 Spring的两大核心: IOC控制反转依赖注入 AOP面向切面编程 面向切面编程中大量使用动态代理,在每一个方法调用前、调用后、抛异常时进行处理,跟装饰器模式很像。 二、nginx配置体系 nginx主要配置位于/etc/nginx目录下,nginx不仅仅可以用于负载均衡HTTP请求,也可以用于基于TCP的其它协议的负载均衡。/etc/nginx/nginx.conf是nginx的跟配置,一切配置都是这个配置的子孙。 /etc/nginx/nginx.conf users www-data;定义当前用户 worker_prosesses 4;定义worker数 pid /run/nginx.pid;定义pid文件 events{......}

HTTP和GET/POST请求(NSURLConnection)

耗尽温柔 提交于 2020-01-30 19:19:20
网络编程 网络编程是一种实时更新应用数据的常用手段 网络编程是开发优秀网络应用的前提和基础 网络基本概念 客户端(就是手机或者ipad等手持设备上面的APP) 服务器(远程服务器-本地服务器) 请求(客户端索要数据的方式) 响应(需要客户端解析数据) 数据库(服务器的数据从哪里来) HTTP URL 如何找到服务器(通过一个唯一的URL) URL介绍 统一资源定位符 url格式(协议\主机地址\路径) 协议:不同的协议,代表着不同的资源查找方式、资源传输方式 主机地址:存放资源的主机(服务器)的IP地址(域名) 路径:资源在主机(服务器)中的具体位置 请求协议 【file】访问的是本地计算机上的资源,格式是file://(不用加主机地址) 【ftp】访问的是共享主机的文件资源,格式是ftp:// 【mailto】访问的是电子邮件地址,格式是mailto: 【http】超文本传输协议,访问的是远程的网络资源,格式是http://(网络请求中最常用的协议) HTTP协议 简介 a.超文本传输协议 b.规定客户端和服务器之间的数据传输格式 c.让客户端和服务器能有效地进行数据沟通 优缺点 a.简单快速(协议简单,服务器端程序规模小,通信速度快) b.灵活(允许传输各种数据) c.非持续性连接(1.1之前版本是非持续的,即限制每次连接只处理一个请求,服务器对客户端的请求做出响应后

Java设计模式——代理模式

百般思念 提交于 2020-01-30 07:56:27
代理模式 学习目标 掌握代理模式的应用场景和实现原理。 应用场景 保护目标对象:客户并不知道对象是如何实现具体业务功能的,只要调用代理对象的接口就行了。 增强目标对象:在实现目标对象的业务功能之前或者之后做一些业务实现。 Spring-AOP 实现原理 静态代理:代理对象持有被代理对象的引用。由被代理对象实现目标业务。 动态代理:代理对象持有被代理对象的引用,代码运行产生一个新的 java 类,并被编译重新加载,然后在新的类中执行目标业务实现动态代理。 了解静态代理和动态代理的区别。 静态代理:被代理对象在代码中被写死了,不易扩展,适用于简单的业务,代码复用性不高,违背开闭原则。 动态代理:只要是实现了同一个接口的被代理类,都可以代理实现,实现了业务扩展。代码复用,遵循开闭原则。 了解 CGLib和JDK-proxy 的区别。 JDK-proxy 动态代理:实现了被代理对象的接口,生成新的class字节码,利用反射调用实现代理。 无法代理不实现代理业务接口的方法。 CGLib 动态代理:继承被代理对象,生成新的class字节码,通过 fastclass 机制调用实现代理。 无法代理被final关键字修饰的方法 代理模式的定义 为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和服务端起到中介的作用。是一种结构型 设计模式 。 静态代理 /** *

haproxy高可用代理

坚强是说给别人听的谎言 提交于 2020-01-30 02:36:47
haproxy高可用代理 文章目录 haproxy高可用代理 1.haproxy简介 2.haproxy高可用代理的实现 1.haproxy简介 HAProxy 是一个使用C语言编写的自由及开放源代码软件[1],其提供 高可用性 、 负载均衡 ,以及基于 TCP 和 HTTP 的应用程序 代理 。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的 并发连接 。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。 HAProxy实现了一种** 事件驱动 **, 单一进程 模型,此模型支持非常大的并发连接数。 多进程 或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。 事件驱动模型 因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。 包括 GitHub 、 Bitbucket 、Stack Overflow、 Reddit 、 Tumblr 、 Twitter [5][6]和 Tuenti 在内的知名网站

Java基础面试知识点总结

纵然是瞬间 提交于 2020-01-30 02:28:02
本文主要是我最近复习Java基础原理过程中写的Java基础学习总结。Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其底层实现原理。 纸上得来终觉浅,绝知此事要躬行。笔者之前对每部分的内容 对做了比较深入的学习以及代码实现,基本上比较全面地讲述了每一个Java基础知识点,当然可能有些遗漏和错误,还请读者指正。 更多关于Java后端学习的内容请到我的CSDN博客上查看: https://blog.csdn.net/a724888 Java基础学习总结 每部分内容会重点写一些常见知识点,方便复习和记忆,但是并不是全部内容,详细的内容请参见具体的文章地址。 面向对象三大特性 继承:一般类只能单继承,内部类实现多继承,接口可以多继承 封装:访问权限控制public > protected > 包 > private 内部类也是一种封装 多态:编译时多态,体现在向上转型和向下转型,通过引用类型判断调用哪个方法(静态分派)。 运行时多态,体现在同名函数通过不同参数实现多种方法(动态分派)。 基本数据类型 基本类型位数,自动装箱,常量池 例如byte类型是1byte也就是8位,可以表示的数字是-128到127,因为还有一个0,加起来一共是256,也就是2的八次方。 32位和64位机器的int是4个字节也就是32位

[设计模式]代理模式

无人久伴 提交于 2020-01-29 19:09:11
1. 定义   为其他对象提供一种代理以控制对这个对象的访问。   代理模式是通过创建一个代理对象,用这个代理对象去代表真实的对象,客户端得到这个代理对象后,对客户端并没有什么影响,就跟得到了真实对象一样来使用。   当客户端操作这个代理对象的时候,实际上功能最终还是会由真实的对象来完成,只不过是通过代理操作的,也就是客户端操作代理,代理操作真正的对象。 2. 类图      Proxy: 代理对象,通常包含了以下功能,实现了与具体目标对象一样的借口,保存一个指向具体目标对象的引用,可以在需要的时候调用具体的目标对象,可以控制对具体目标对象的访问,并可以负责创建和删除它。   Subject: 目标对象,定义代理和具体目标对象的借口。   RealSubject: 具体目标对象,真正实现目标对象要求的功能。 3. 实例    package com.jerry.designpattern.proxy; /** * * @author Jerry * @date 2015年1月21日 上午10:39:09 */ public interface Player { void killMonster(); } package com.jerry.designpattern.proxy; /** * * @author Jerry * @date 2015年1月21日 上午10:46:10