2024.01.02
1. 正向代理/反向代理
遇见场景:在客户端获取接口,拿着接口去后端代码查询不到该接口,实际结果在前端代码查询到了该接口,然后开始接触正向代理、反向代理。
(1)正向代理:指代理服务器代表客户端向服务器请求资源(前端的代理),在这种情况下,客户端通过正向代理与目标服务器通信,而服务器只能看到代理服务器的信息,不知道实际请求来自哪个客户端。
示例:
a. 突破网络访问限制的翻墙工具
b. 企业内部网络使用代理服务器控制员工访问外部资源
用途:
a. 隐藏客户端真实IP地址,提高访问隐私和安全性;
b. 绕过访问限制,访问被屏蔽的资源或网站;
c. 缓存数据,减少重复请求,提高访问速度。
(2)反向代理:指代理服务器代表服务器向客户端提供服务(后端的代理),客户端请求的时候,请求被反向代理服务器接收,然后由代理服务器将请求转发给后端的目标服务器,最终将目标服务器的响应返回给客户端。
示例:
a. 将客户端的请求分别发到多个服务器,以平衡负载;
b. 通过反向代理实现SSL终结,减轻后端服务器负担;
c. 缓存静态资源,减少后端服务器压力。
用途:
a. 负载均衡:分发客户端请求到多个后端服务器,提高系统性能和稳定性;
b. 安全性:隐藏后端服务器的真实IP地址,提高安全性;
c. 缓存和压缩:减少后端服务器的负担,提高响应速度。
2.git强推导致数据丢失
遇见场景:
本来打算push的时候一并把云效上的bug状态改为已修复,结果学艺不精fix #ZKPW-8213写成#ZKPW-8213,commit之后push之前又拉了同事的代码。
看着这个push记录页面,总觉得不满意,然后又新学了一个回滚远程推送记录,正是新鲜的时候,就想把之前的推送记录删了,重新推送。经过下面等一系列操作,成功把同事的远程推送记录搞没了。
删除(回滚)push记录(在别人没有push之前)
//(数字代表回退几个版本)
git reset --hard HEAD~2
//强制覆盖
git push -f
不得不说,当时我是非常心慌的,但十分幸运的是,和我一起开发这个分支的同事今天请假了(这代表不会有别人在我解决的时候进行推送代码,造成更让我痛苦的问题),在别人没有发现之前,我解决了它。
解决方式:
(1)把我今天修改的代码备份(创一个文档,ctrl+c,ctrl+v)
(2)在控制台输出git reflog show origin/2.3.02 ,2.3.02是我当前开发的分支,这串命令是为了查询最近一段时间远程分支2.3.02的推送日志
3b9ec7d (HEAD -> 2.3.02, origin/2.3.02) refs/remotes/origin/2.3.02@{0}: update by push
0542b8d refs/remotes/origin/2.3.02@{1}: update by push
3b9ec7d (HEAD -> 2.3.02, origin/2.3.02) refs/remotes/origin/2.3.02@{2}: update by push
0542b8d refs/remotes/origin/2.3.02@{3}: update by push
281fa6d refs/remotes/origin/2.3.02@{4}: update by push
6ff5135 refs/remotes/origin/2.3.02@{5}: update by pushbaae6bf (tag: test-2.3.02.05) refs/remotes/origin/2.3.02@{6}: fetch origin --recurse-submodules=no --progress --prune: fast-forward
(3)新开一个控制台,git reset --hard 3b9ec7d,3b9ec7d为上面查询出来的第一行前面的数据串,这串命令是用于将当前分支的 HEAD 移动到指定的提交 (3b9ec7d
),并强制更新工作目录中的文件,使其与指定提交的状态一致。(文绉绉的听不懂,大概就是把当前分支强制更新成3b9ec7d
时的状态,作用在本地,与远程是没有关系的)
(4)然后打开git本地记录列表,选中当前的分支2.3.02,看看现在的是不是我想要的版本,不是?继续输入git reset --hard 0542b8d,0542b8d为第二行前面的数据串,再去git查看是不是想要的版本,一步步继续,直到找到我想要的版本。
(4)黄天不负打工人,baae6bf就是我想要的版本,反复确认了几遍,然后输入git push -f origin 2.3.02,2.3.02为我要开发的分支,这串命令是用于将本地分支 2.3.02
的更改强制推送到远程仓库 origin
的同名分支。
(5)接下来跑去远程仓库上看,有没有成功把同事的代码搞回来,嗯,非常棒,同事的代码回来了,我真是涕泗横流。
(6)最后再把我今天写的代码搞回去,push