nginx: 反向代理 (实际上前端请求的地址和后端地址不一样,后端是怎么响应的?)
实际上前端和后端中间还有个nginx服务器,做反向代理,就是将前端的动态请求由nginx转发到后端服务器。
反向代理好处:(nginx配置文件(nginx.conf)的proxy_pass配置转发路径)
1.提高访问速度,当前端访问同一个接口地址时,无需真正请求后端服务,nginx有缓存相应给前端
2.负载均衡:把大量请求均匀分配给集群中的每台服务器。
***负载均衡策略:默认轮询。。。。。
3.保证后端服务安全,实际上后端服务器不会暴露在互联网被直接访问,是在局域网部署,不能由前端直接请求,由nginx转发。
md5 加密
swagger文档生成(knife4j封装)
四种请求方式:
get post delete put
客户端每发起一次请求,都对应一个线程。用ThreadLocal来获取参数,如登入用户id。
AOP面向切面编程。有统一的逻辑。技术点:枚举,注解,AOP 切面类(切入点--》pointcut,通知),反射--》强制调用方法。
Mybatis动态SQL:
search 传进的条件不确定,用if (and)。 update 传进的数值不确定 用 if (set)。
insert 批量插入 foreach
当同时操作多个表是要加上事务注解@Transactional 保证数据一致性
insert into ,delete from ,search ??? from ,update set。
Redis数据库(存储热点数据,短时间被多次访问):
基于内存,key-value 结构 key 字符串 value 五种类型 :String hash(对象) list(先后点赞) set(集合运算) ,sort set / zset(排行榜)
redis命令根据不同的 value类型 有不同的操作命令,还有通用命令。
Spring Data Redis框架(Redis Template) value类型String进行了 状态的切换。
HttpClient -->发送Http请求
步骤:1.创建HttpClient对象 2.创建Http请求对象 3. 调用HttpClient的execution方法发送请求.
实现微信登录:code -> openid,token
接收请求时,参数名必须和接口文档保持一致!!!
spring异常:
2024-05-07 10:47:28.982 WARN 23916 --- [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "list"]
该异常为请求出错!(我的错误是没有设计该接口)
缓存:redis缓存。
spring cache 缓存框架--->注解
数据库冗余字段:
减少查询表的数量
微信支付
内网穿透
百度地图
Spring Task 任务调度框架,定时触发一些任务
cron表达式-----》定义任务触发时间
WebSocket :一次握手,持久性连接。
应用:页面不刷新,但是里面有部分数据实时更新变化。(不需要页面发请求,服务器主动推送数据)