容易遗忘的知识点总结

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了容易遗忘的知识点总结脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

主要是工作中不常用,导致记得不是很清晰。但是很重要的知识点,慢慢积累...

1.七层协议

  • 从上到下是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层;
  • 协议类型:
应用层中,有FTP:文件传输协议;  http:超文本传输协议;  SMTP:邮件传输协议;  DNS:域名系统;
传输层中,有TCP:传输控制协议;  UDP:用户数据协议

2.Http的工作过程

对于请求的地址,从地址中分离出协议名、主机名、端口、对象路径等

  1. 地址解析 使用域名系统DNS解析域名,得到主机的IP地址

  2. 封装HTTP请求数据包 把解析出的信息结合自己本机的信息,封装成一个HTTP请求数据包

  3. 封装成TCP包,建立TCP连(三次连接)

  4. 客户机发送请求命令 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一标识符(URL)、协议版本号,后面是MIME信息。

  5. 服务器响应

  6. 服务器是否关闭TCP连接 若在请求头中加入了Connection:keep-alive,则表示仍然保持连接


3.API网关的作用

身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理、限流控制等

  • 性能:API网关高可用,负载均衡,容错机制。
  • 安全:权限身份认证、脱敏,流量清洗,后端签名(保证全链路可信调用),黑名单(非法调用的限制)。
  • 日志:日志记录(spainid,traceid)一旦涉及分布式,全链路跟踪必不可少。
  • 缓存:数据缓存。
  • 监控:记录请求响应数据,api耗时分析,性能监控。
  • 限流:流量控制,错峰流控,可以定义多种限流规则。
  • 灰度:线上灰度部署,可以减小风险。路由:动态路由规则。

Nginx和Api Gateway的说明

Nginx和Api gateway在功能上是有一些重叠的,都可以做服务转发。但是网关在大型微服务系统中是一个很重要的角色

  • Api网关是转为网关的角色而设计的,功能强大,在大型系统开发中基本上都会选用次组件
  • Nginx只能实现一些上面说的部分用牛奶,一般都是选用Nginx做静态资源缓存和前端调用接口的负载均衡

总结:现在前后端分离的系统一般都会如下设计:Nginx做静态资源服务器,前端页面调用后端接口时先请求到Nginx,Nginx做负载君合路由到后端网关,然后网关做请求身份验证,日志记录等操作,再转发业务处理接口,处理完返回数据。


4.拦截器和过滤器的区别

filter过滤器:本质是基于函数回调 1.修改字符编码(CharacterEncodingFilter)、在过滤器中修改HttpServletRequest的一些参数 2.过滤低俗文字、危险字符 3.对url地址做处理 缺点:只能对controller请求进行拦截,对于其他直接访问的静态资源的请求无法进行拦截处理。

Interceptor拦截器:本质是基于Java的反射机制 1.Filter能做的都可以做 2.在请求前和请求后都可以拦截,比较灵活。


5.关于前端提交格式【Content-tyPE】与后端接受格式 互相对应点

  1. 前端格式为 Content-Type:application/x-www-form-urlencoded;charset=UTF-8 时(表单提交方式), 后端接受时,在路径的RequestMapping上,加上consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE;接受的参数可以通过@RequestParam成功获取(不可用@RequestBody接受),后端如下图:

    容易遗忘的知识点总结

采用其他格式或参数接受,会报如下错误,Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

  1. 当前端格式为 Content-Type:application/JSON 时(Payload提交方式),后端接受方式为 consumes = MediaType.APPLICATION_JSON_VALUE,参数可通过@RequestBody接受,如下所示:

    容易遗忘的知识点总结

注:@RequestParam和@RequestBody接受参数,@ReqeustParam底层是通过request.getParameter方式获得参数的,get和post提交都可以接受到;@RequestBody接受的是json对象的字符串,而不是json对象。


6. 运算

关于运算符,总是容易混淆和遗忘。特总结如下:

  1. 位运算符
  • & 与运算符:参与运算的两个值,如果两个相应位都是1,则该位的结果位1,否则为0;
  • | 或运算符:参与运算的两个值,如果其中有一个位是1,则该位的结果为1,否则为0;
  • ^ 异或运算符:当两对应的位相异时,结果为1;
  • ~ 取反运算符:对数据的每个二进制为取反,即把1改为0,把0改为1;
  • << 左移运算符:各二进制位全部左移若干位,由“<<” 右边的数指定移动的位数,高位丢弃,低位补0;相当于乘以2的n次方
  • >> 右移运算符:与左移刚好相反。例:11 >> 2,11右移2位,11的二进制为:1011,右移的结果为:0010,即对应的十进制为2。右移n位相当于除以2的n次方,值取商,余数舍弃。
  • >>> : 无符号右移,忽略符号位,空位都以0补齐

不断积累中,未完待续...


觉得博文不错或对你有帮助,请点击【推荐】,感谢你的支持

脚本宝典总结

以上是脚本宝典为你收集整理的容易遗忘的知识点总结全部内容,希望文章能够帮你解决容易遗忘的知识点总结所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。