代理模式

Ssh代理详解 【转载】

会有一股神秘感。 提交于 2019-11-26 18:36:56
原文: http://www.cnblogs.com/wangkangluo1/archive/2011/06/29/2093727.html ssh 代理详细解释 ssh -qTfnN -D 7070 ape@192.168.1.35 ssh -CfNg -R 1521:127.0.0.1:80 ape@192.168.1.35 参考地址: http://hi.baidu.com/step_1/blog/item/271f831bfbc198f1ae5133b7.html http://hi.baidu.com/deyu260/blog/item/3be433093e5779a12eddd418.html http://hi.baidu.com/laowuuser/blog/item/317647c7992a65de38db4946.html 参考文档: 1. SSH: Port Forwarding 1 .正向隧道 - 隧道监听本地port,为普通活动提供安全连接 ssh - qTfnN - L port:host:hostport - l user remote_ip 2 .反向隧道 ---- 隧道监听远程port,突破防火墙提供服务 ssh - qTfnN - R port:host:hostport - l user remote_ip 3 .socks代理 SSH -

Nginx的相关介绍

坚强是说给别人听的谎言 提交于 2019-11-26 18:12:46
前言 说到服务器,一定会想到apache的httpd和Nginx这两大服务器 Apache的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多优点:稳定、开源、跨平台等等。它出现的时间太长了,它兴起的年代,互联网产业远远比不上现在。所以它被设计为一个重量级的。它不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。 这些都决定了Apache不可能成为高性能WEB服务器,轻量级高并发服务器Nginx就应运而生了。 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。 由于: Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接 高度的模块化和自由软件许可证使得第三方模块层出不穷(这是个开源的时代啊~) Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上 这些优秀的设计带来的是极大的稳定性 所以,Nginx火了!

责任链模式(Chain)

断了今生、忘了曾经 提交于 2019-11-26 17:58:42
前言:责任链模式在很多框架中都有体现,比如Spring,Mybatis等。 概念:使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象串成一条链,并沿着这条链一直传递该请求,直到有对象处理它为止。责任链模式的重点在“链上”,由一条链去处理相似的请求,在链中决定谁来处理这个请求,并返回相应的结果。 生活场景 :在公司上班,遇到突发事件都需要请假,而请假根据天数不同需要不同的主管来同意我们的请求,比如我们要请1-3天的假期一级主管就可以直接同意,不需要再往上请求,如果是4-6天就需要二级主管同意,如果是7-10天就需要3级主管同意,大于10天需要我们的boss来同意才行。现在我们用责任链模式来模拟这个场景。 //处理者基类 public abstract class LeaveHandler { //持有指向后继者的引用 protected LeaveHandler successor; //设置后继者 public void setSuccessor(LeaveHandler successor) { this.successor = successor; } public abstract void handleRequest(int request); } //一级主管 public class FirstLevelSupervisor

AOP的理解

拈花ヽ惹草 提交于 2019-11-26 17:16:10
描述:对于AOP术语一些总结以及相关的案例 标签:Spring 面向切面编程 目录 {:toc} 几个术语的基本解释 通知 直接明白的说就是你想要的功能(为了更清晰的逻辑,让你的业务逻辑去关注本身的业务,而不是去想其他的事情,这些其他的事情包括,比如安全、事务、日志等) 连接点 就是允许你使用通知的地方,比如每个方法的前后或者抛出异常时都是连接点。Spring只支持方法连接点 切入点 比如说,你的一个类里有15个方法,那不就是几十个连接点了,但是你不可能在所有方法上面都写一个通知吧,你只是想让其中几个方法,就可以使用 切点去筛选连接点 ,选中那几个你想要的方法 切面 切面就是通知和切入点的集合,也就是一个类。没连接点什么事情,连接点就是为了让你更好的去理解切点。通知说明了干什么和什么时候干(通过@Before @After等注解就可以明白),而切入点说明了在哪里干(指定到底是哪个方法) 引入 允许我们向现有的类(目标类)添加新方法属性。其实说白了就是切面类(这里不就是定义了切入点 通知嘛),就是切面类可以为目标类添加新方法属性。 目标 也就是上面提到的目标类,也就是需要被通知的对象。这个目标类的话就是我们的真正业务逻辑,而不是其他事情(其他事情在切面类中去做,上面提到的日志、事务等) 代理 怎么实现整套AOP机制的,都是通过代理 织入

代理模式

落爺英雄遲暮 提交于 2019-11-26 17:14:48
,隐藏真实对象,用一个代理对象来对真实对象进行操作,也可以做一些其它和真是对象无关的操作 package mainimport "fmt"type Subject interface { request()}type RealSubject struct {}func(it *RealSubject)request(){ fmt.Println("realSubject")}type Proxy struct { subject Subject}func(it *Proxy)request(){ it.subject.request()}func(it *Proxy)others(){ fmt.Println("asdfzxcnwekfjn,msdnviuawefn")}func main(){ proxy := new(Proxy) proxy.subject = new(RealSubject) proxy.request() proxy.others()}我没有实现在Proxy内部new一个realsubject,实际上应该这样做。可是我没有。。。因为Go语言不能像爪洼(Java)和C11(C++)那样初始化把。可以再通过写另一个方法来初始化,或者在init方法里初始化 来源: https://www.cnblogs.com/mcmx/p/11328743.html

动态代理详解

自闭症网瘾萝莉.ら 提交于 2019-11-26 16:34:05
摘要 本文动态代理得意义、主要介绍动态代理得实现原理以及由动态代理引申出来的一些知识点。 插曲 最近在研究javamelody实现的原理,发现他对JDBC的监控就是通过动态代理实现的。由于之前对于动态代理只是大概知道怎么回事,没有细致的去研究,所以上网百度了一下。发现网上的东西要么注重原理而忽略应用场景导致空泛、要么注重场景而忽略原理、要么就是只有基于接口的动态代理而没有基于cglib的。因此这里本文尽量做到大而全。其实想总结一下的原因是公司进行代码review的时候,老大提出同一个类中一个方法调用本类其他方法,其他方法的事务不会生效,本质上我是持怀疑态度的。当时我是出于基于Cglib代理的角度考虑,而实际不会生效是基于动态代理的方式,采用cglib还是会生效,后面会讲到。本人作文比较推崇简约易懂的方式,尽量避免过于斯文的名词出现。 一、动态代理的意义 首先明白一点,动态代理就是用来生成代理对象的。我们知道传统的代理模式,通常是先定义一个代理类,该代理类需要持有目标对象(也有叫被代理对象,我觉得都行吧)。假设我们有1000个不同的目标对象(这1000个对象不是同一个类),那么我们需要预先定义1000个代理类,这是我们不能容忍的。于是乎,动态代理就出现了,它本质上是生成一个外表上和目标对象一样的代理对象,然后当我们调用代理对象的方法的时候

接口测试之——Charles抓包及常见问题解决

夙愿已清 提交于 2019-11-26 16:12:36
简介 Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用, 安装Charles的时候要先装好Java环境 。 Charles 是在 常用的网络封包截取工具,在做 移动开发 时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 HTTP协议 。 Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。(可以自行网上查找破解版软件) Charles 主要的功能包括: 截取 Http 和 Https 网络封包。 支持重发网络请求,方便后端调试。 支持修改网络请求参数。 支持网络请求的截获并动态修改。

代理模式

浪子不回头ぞ 提交于 2019-11-26 14:21:53
一、代理模式:   代理模式是对象的结构模式;   代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用;   常见的代理模式分类:静态代理,jdk动态代理, CGlib动态代理; 二、静态代理:   静态代理一个代理类:只能代理一种接口的类;如果代理类的业务都是一样的,就造成了大量重复代理类;   1)真实对象和代理对象共同的接口: //抽象角色:声明真实对象和代理对象的共同接口; public interface ITicketManager { /** * 售票 */ void soldTicket(); /** * 改签 */ void changeTicket(); /** * 退票 */ void returnTicket(); }   2)真实对象实现类: public class TicketManagerImpl implements ITicketManager { @Override public void soldTicket() { System.out.println("售票"); } @Override public void changeTicket() { System.out.println("改签"); } @Override public void returnTicket() { System.out.println("退票

Spring学习之AOP

有些话、适合烂在心里 提交于 2019-11-26 14:01:24
Spring学习之AOP spring AOP的概述 AOP相关术语 项目代码的冗余 使用动态代理解决代码冗余现象 Spring aop 解决了代码冗余 使用注解配置AOP 总结 spring AOP的概述 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方 式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高开发效率。 AOP相关术语 Joinpoint(连接点): 被拦截到的方法. Pointcut(切入点): 我们对其进行增强的方法. Advice(通知/增强): 对切入点进行的增强操作 包括前置通知,后置通知,异常通知,最终通知,环绕通知 Weaving(织入): 是指把增强应用到目标对象来创建新的代理对象的过程。 Aspect(切面): 是切入点和通知的结合 项目代码的冗余 public List<Account> findAllAccount() { try { //1.开启事务 txManager.beginTransaction(); //2.执行操作 List<Account>

iOS开发---图解KVC

↘锁芯ラ 提交于 2019-11-26 12:44:57
文章目录 iOS开发---图解KVC 什么是KVC? KVC方法全览 KVC基础操作 KVC取值 取值方法 基于getter取值底层实现 KVC设值 赋值方法 基于setter赋值底层实现 KVC批量操作 KVC集合属性操作 集合操作符 数组操作符 嵌套操作符 KVC与容器类 KVC与有序容器(NSMutableArray) 取值方法 NSMutableArray取值底层实现 KVC与无序容器(NSMutableSet) 取值方法 NSMutableSet取值底层实现 KVC异常处理 KVC处理非对象 KVC属性验证 KVC适用场景 动态的取值和设值 Model和字典转换 用KVC来访问和修改私有变量 修改一些控件的内部属性 iOS开发—详解KVC 什么是KVC? KVC方法全览 KVC基础操作 KVC取值 取值方法 基于getter取值底层实现 KVC设值 赋值方法 基于setter赋值底层实现 KVC批量操作 KVC集合属性操作 集合操作符 数组操作符 嵌套操作符 KVC与容器类 KVC与有序容器(NSMutableArray) 取值方法 NSMutableArray取值底层实现 KVC与无序容器(NSMutableSet) 取值方法 NSMutableSet取值底层实现 KVC异常处理 KVC处理非对象 KVC属性验证 KVC适用场景 动态的取值和设值 Model和字典转换