聊聊代理

heartlake heartlake     2023-04-01     155

关键词:

聊聊代理

代理是什么?代理就是我代表你,仅此而已,这就是代理。

代理有啥好处?举个例子,我要去和人打官司,但是我不是法律通,法律小白,那怎么办?

好办!找个律师,由律师全权代理这件事,律师也就成了我的代理人,所有人需要找我的话,不用直接找我,请直接找我的律师,他是我的代理人!

找律师有什么好处?律师精通相关法律,并且知晓我全部事情,那么就可以运用他的法律专业知识和对我的事情了解,来帮我赢得官司!

因为律师的存在,补充了我在打官司这个事情中,法律知识和能力的缺失,律师带着我的案件和他的法律知识,成为一个新的个体:代理人!

这就是所谓代理:通过引入中间人对原有功能的缺失做一个补充增强,这个中间人就是代理人,这种行为就是代理。

生活中的代理随处可见,也比较简单,比如律师,我怎么知道我找你就行了?好办,拿出一个委托代理协议就可以了。给别人代办事情,出具一个委托代理证明即可。

我们使用时Nginx,把Nginx的地址对外发布,其他客户端访问时就知道访问这个地址就可以了。

静态代理

明白了代理是个什么事情,那么就来说说静态代理,什么是静态代理?

静态就是不变的,已知的。

我们上面的举的例子有些就是静态代理,比如在提起诉讼的时候,就已经确定了律师是谁。

这种一个事情的开始时候就确定下来的,就是静态代理。

动态代理

有静就有动,阴阳才能调和。

那么动态代理是啥呢?在事情的进行过程中才确切知道我的律师是谁,比如法官说,有请被告律师发言,结果突然在听众席中一个人起身滔滔不绝,所有人一脸懵逼!

不过这种情况确实是一个动态代理,在需要用到这个律师的时候,所有人才知道律师是谁,哪怕是被代理人都不知道。

是不是很诡异?这种情况对应到现实中是很难被接受的,而且很不利于事情的处理。

那么生活中是不是就没有了动态代理呢?答案肯定是否定的!

比如我办理了身份证,需要拿身份证的时候,我不方便过去,怎么办呢?找个人帮我拿一下。但是对于公安局来说,身份证这么重要的东西,不能随便来个人就可以领取啊!这么来办,整个代领取身份证的协议,到时候是本人或者不是不是本人,只要有这个协议,我就把身份证给你,对于公安局来说,我并不知道会是谁来领取,直到领取的人来了我才知道。

这就是所谓的动态代理。

动静对比

那么动态代理和静态代理哪个好呢?

各有各的优缺点

对于静态代理来说,比较简单,明了。

而动态代理就复杂了些,我们还得整个协议,然后确认协议等。

但是静态代理不够灵活,动态代理能带来更大的灵活性。

比如,我说不知道到时候自己能不能亲自过来领取身份证,如果是静态代理的话,这个时候就要指定一个人来帮我领,这种提前指定,死板,没办法变更。但是也简单,代理人过来,公安局直接就知道就是你了,也不用出具什么代理委托证明协议了。

这种方式最大的问题在于,我怎么能很好的确定下这个代理人呢?如果我确定好的人,到时候因为别的事,去不了了,我又没法变更代理人,这事就无解了。

正反向代理

无论正向代理还是反向代理,其实都是静态代理,正反代理常用于计算机网络中,这是因为在计算机网络中,多了一个固定的Client和Server,在这种固定模式下,代理人作为哪一方的代理是不同的。

比如,代理人作为Client的代理,那么这种情况下,就是一个正向代理,也叫Forward Proxy

如果代理人作为Server的代理呢,就是反向代理,因为和正向代理的方向相反,所以叫反向代理。

那么更具体的正向代理和反向代理的区别是啥呢?

就是看代理人在代理时,Client是有限的,还是Server是有限的。

如果Client的数量是有限的,并且和代理人强关联,那么就是一个正向代理

反之如果Sever的数量是有限的呢,就是一个反向代理。

这里的强关联,比如正向代理一般都是有认证到代理服务器的。

而反向代理的话,对于代理服务器是知道所有被它代理的Server。

聊聊代理

聊聊代理代理是什么?代理就是我代表你,仅此而已,这就是代理。代理有啥好处?举个例子,我要去和人打官司,但是我不是法律通,法律小白,那怎么办?好办!找个律师,由律师全权代理这件事,律师也就成了我的代理人... 查看详情

面试题:聊聊kotlin代理的“缺陷”以及如何应对(代码片段)

Kotlin代理是面试中经常被问到的问题,比如介绍一下代理的实现原理以及在使用中的一些注意事项等,本文将带你梳理这些问题,让你从更高的维度上认识“代理”Kotlin有很多让人津津乐道的语法,“代理”就是... 查看详情

有点深度的聊聊jdk动态代理(代码片段)

在接触SpringAOP的时候,大家一定会被这神奇的功能所折服,想知道其中的奥秘,底层到底是如何实现的。于是,大家会通过搜索引擎,知道了一个陌生的名词:动态代理,慢慢的又知道了动态代理有多种实现方式,比如JDK动态代... 查看详情

聊聊ngnix那些事

第一:ngnix介绍正向代理和反向代理区别:https://www.cnblogs.com/taostaryu/p/10547132.htmlngnix安装使用:https://www.cnblogs.com/jiuyi/p/11095268.html 第二:ngnix的功能介绍:静态代理,负债均衡, 查看详情

聊聊ngnix那些事

第一:ngnix介绍正向代理和反向代理区别:https://www.cnblogs.com/taostaryu/p/10547132.htmlngnix安装使用:https://www.cnblogs.com/jiuyi/p/11095268.html 第二:ngnix的功能介绍:静态代理,负债均衡,动静分离,虚拟主... 查看详情

java面试八股文每日3题:day16

目录1.聊聊反射?2.聊聊List接口的子类3.Java中的IO流分为几种1.聊聊反射?  1.在运行时动态的获取类的完整信息  2.增加程序的灵活性  3.JDK动态代理使用到了反射2.聊聊List接口的子类线性结构  1.ArrayListObject数组... 查看详情

架构师聊的四层代理和七层代理,都在聊什么?

...么?又在什么场景下用到呢?这篇文章就带大家聊聊这方面的知识点。OSI七层模型要聊几层代理,需要先看一下网络分层,在之前的文章中也提到,标准的七层网络分层&# 查看详情

架构师聊的四层代理和七层代理,都在聊什么?

...么?又在什么场景下用到呢?这篇文章就带大家聊聊这方面的知识点。OSI七层模型要聊几层代理,需要先看一下网络分层,在之前的文章中也提到,标准的七层网络分层&# 查看详情

聊聊手写mybatis注解配置方式

导航:  聊聊、Mybatis API  聊聊、Mybatis XML 聊聊、Mybatis集成SpringXML方式聊聊、Mybatis集成Spring注解方式聊聊、手写MybatisXML配置方式 在《聊聊、手写MybatisXML配置方式》中聊了通过XML配置方式来实现Mybati... 查看详情

聊聊

1ddddddddddddd 查看详情

聊聊mybatis集成spring注解方式

导航:  聊聊、Mybatis API  聊聊、Mybatis XML 聊聊、Mybatis集成SpringXML方式聊聊、Mybatis手写实现 查看详情

不懂nacos没关系,可以看看它是怎么运用代理模式的(代码片段)

...用,而且用得还不错,可以作为一个典型案例来聊聊,方便大家以更真实的案例来体验一下代理模式的运用。如果你对Nacos不了解,也并不影响对本篇文章的阅读和学习。本文涉及知识点:代理模式的定义、代... 查看详情

不懂nacos没关系,可以看看它是怎么运用代理模式的(代码片段)

...用,而且用得还不错,可以作为一个典型案例来聊聊,方便大家以更真实的案例来体验一下代理模式的运用。如果你对Nacos不了解,也并不影响对本篇文章的阅读和学习。本文涉及知识点:代理模式的定义、代... 查看详情

自定义spi使用jdk动态代理遇到undeclaredthrowableexception异常排查(代码片段)

点击上方蓝字关注我们01前言上一篇文章我们聊了聊聊自定义SPI如何与sentinel整合实现熔断限流。在实现整合测试的过程,出现一个有趣的异常java.lang.reflect.UndeclaredThrowableException,当时在代码层做了一个全局异常捕获,示例如下@... 查看详情

聊聊dbsync的schedulable

序本文主要研究一下dbsync的SchedulableSchedulable//SchedulablerepresentanabstractionthatcanbescheduletypeSchedulablestruct{URLstringIDstring*contract.SyncSchedule*contract.ScheduleStatusstringstatusuint32}//NewS 查看详情

聊聊gost的generictaskpool

序本文主要研究一下gost的GenericTaskPoolGenericTaskPoolgost/sync/task_pool.go//GenericTaskPoolrepresentsangenerictaskpool.typeGenericTaskPoolinterface{//AddTaskwaitidleworkeraddtaskAddTask(ttask)bool//AddTaskAlw 查看详情

聊聊storagetapper的cache

序本文主要研究一下storagetapper的cachecachestoragetapper/pipe/cache.gotypecacheEntrystruct{pipePipecfgconfig.PipeConfig}varcachemap[string]cacheEntryvarlocksync.Mutexcache是一个cacheEntry的map,cacheEntry定义了Pipe和con 查看详情

聊聊storagetapper的server

序本文主要研究一下storagetapper的serverserverstoragetapper/server/server.govarserver*http.Servervarmutex=sync.Mutex{}funcinit(){http.HandleFunc("/health",healthCheck)http.HandleFunc("/schema",schemaCmd)http.Han 查看详情