软件开发
2021-04-20 17:57:38 109 举报
AI智能生成
软件开发需要纳入的一些知识架构
作者其他创作
大纲/内容
计算机网络
网络协议
TCP/IP
概念
实际生活当中有时也确实就是指这两种协议(tcp和ip)。然而在很多情况下,
它只是利用 IP 进行通信时所必须用到的协议群的统称
它只是利用 IP 进行通信时所必须用到的协议群的统称
知识体系图解
TCP/IP协议族的分层
链路层
通常包括
操作系统中的设备驱动程序
计算机网络接口卡
功能
一起处理与电缆的物理接口细节
网络层
在TCP/IP协议族中,包括
IP协议(网际协议)
ICMP协议(Internet互联网控制报文协议)
IGMP协议
Internet组管理协议
功能
处理分组在网络中的活动
如分组的选路
运输层
功能
两台主机上的应用程序提供端到端的通讯
传输协议
TCP(传输控制协议)
UDP(用户数据报协议)
应用层
功能
负责处理特定的应用程序细节
通用的应用程序
Telnet
FTP文件传输协议
SMTP简单邮件传送协议
SNMP简单网络管理协议
数据包与数据帧
数据包与数据帧
组成
数据帧
数据包
数据
源地址
目标地址
物理地址mac
OSI参考模型
简介
应用层
所有能产生网络流量的程序
表示层
在传输之前是否进行加密或者压缩处理二进制ASCII
会话层
查木马 netstat -n
传输层
可靠传输 流量控制 不可靠传输
网络层
负责选择最佳路径,规划ip地址
静态路由可以指定路径
数据链路层
帧的开始和结束
开始一段0101...作为真的开头
中间为数据
结尾一段010101...作为结束
透明传输
如果数据中的一段和帧尾一样,就要加上转义01...,转义字符不做解析,会去掉
差错校验
数据前面会加一段校验字符,如何数据传输中,数据出问题,
最后解析时与校验字符比对,会校验出错误,然后丢掉坏帧
最后解析时与校验字符比对,会校验出错误,然后丢掉坏帧
物理层
接口标准,电气标准,如何在物理链路上传输的更快的速度
详解
物理层
特性
机械特性
电器特性
功能特性
过程特性
知识体系
数据通信的基础知识
数据通讯模型
知识点
ADSL
ADSL是宽带连接的一种常用方式。ADSL实际上是电话线拨号上网,
通过调制解调器进行数据处理后,再链接到英特网上去。
通过调制解调器进行数据处理后,再链接到英特网上去。
速率 1B=8bit
一般网速说的B(字节)。宽带说的是bit(比特位)
带宽
物理支持最高的速度,一般都达不到
信道
从发送端到接收端
吞吐量
单位时间通过网络的数据量
吞吐量为 15Mb/s
数据结构与算法
软件系统设计
方法
瀑布流程法
基于原型,快速迭代(敏捷开发)
具体设计
体系结构设计
说明
设计原则
适应性
结构稳定性
可扩展性
可复用性
工具类、公共组件
可复用的组件
对使用环境没有假设
尽可能少的配置,零配置
尽可能简单的,没有依赖
api网关
消息中心
可控的
第三方平台对象
完全不可控
表结构设计
系统模块设计
原型界面设计
设计模式
项目开发
前端
页面
防重复点击
防表单重复提交
后台功能
通用
功能概述
增
1、是否需要添加缓存
更新缓存
2、防表单重复提交
创建filter,通过session 中的token 防表单重复提交
删
防重复点击
改
批量更新
sql
查
注意
1、先考虑是否分页
PageHelper插件分页
subList分页
2、是否需要缓存
java中用户对应多个角色时的新增、修改、删除处理操作
权限功能
菜单
java 递归动态实现左侧导航栏
react + spring boot 菜单权限控制-动态加载二级菜单
表关系
RBAC用户权限管理数据库设计
解决前后端分离跨域
ShiroUserFilter
技术功能
poi导入导出
多线程的使用
事务控制
@Transactional(propagation = Propagation.REQUIRED, timeout = 120000, rollbackFor = ServiceException.class)
添加事物的方法,需是接口重写方法,否则事务无法添加上(spring事务使用动态代理完成)
@Transactional(propagation = Propagation.REQUIRED, timeout = 120000, rollbackFor = ServiceException.class)
通用功能
日志系统
用户后台操作日志
业务逻辑
捕捉用户操作
通过注解获取用户操作,切面类处理用户操作
聚合处理日志信息
异步将日志记录到库
当用户查询操作日志时,根据条件检索操作日志
将操作日志转换为一个用户可读的view返回
例
annotation
SysLog
aop
SysLogAspect
service
SysLogService
日志表
在controller中给需要记录操作的接口添加注解
web消息头
接口安全
用户认证登录
shiro
shiro配置
ShiroConfig
ShiroSessionManager
认证、授权
登录
例
SpringBoot+Shiro学习之自定义拦截器管理在线用户(踢出用户)
springboot整合shiro
Spring Security oAuth2
概念
oAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。
授权不会使第三方触及到用户的帐号信息
授权不会使第三方触及到用户的帐号信息
Spring Security 是一个安全框架。Spring Security 基于 Servlet 过滤器、IoC 和 AOP,
为 Web 请求和方法调用提供身份确认和授权处理,避免了代码耦合,减少了大量重复代码工作
为 Web 请求和方法调用提供身份确认和授权处理,避免了代码耦合,减少了大量重复代码工作
Access Token 是客户端访问资源服务器的令牌
临时 的,有一定有效期
Refresh Token 的作用是用来刷新 Access Token
oAuth2.0 要求,Refresh Token 一定是保存在客户端的服务器上
,不能放在本地
,不能放在本地
实际上的刷新接口类似于
http://www.xxx.com/refresh?refresh_token=&client_id=&client_secret=
认证交互过程
用户打开客户端
如某app
客户端,跳转到认证服务器的鉴权页面,需要用户授权
如微信登录,会跳转到微信授权
用户同意授权,客户端向认证服务器申请令牌
认证服务器验证通过,发放给客户端令牌
客户端携带令牌去 获取 资源服务器的资源
资源服务器 确认 令牌无误,发放资源
客户端授权模式
implicit:简化模式,不推荐使用
authorization code:授权码模式
需要传入 code(授权码)、client_id 以及 client_secret。
验证通过后,返回 access_token 和 refresh_token。
一旦换取成功,code 立即作废,不能再使用第二次
验证通过后,返回 access_token 和 refresh_token。
一旦换取成功,code 立即作废,不能再使用第二次
resource owner password credentials:密码模式
用户向客户端提供自己的用户名和密码
client credentials:客户端模式
鉴权服务器直接对客户端进行身份验证,验证通过后,返回 token
加密,验签
session过期
SpringBoot+shiro解决前后端分离session过期问题
1、自定义过滤器,继承AccessControlFilter
2、在shrio配置类中,添加过滤器
3、前端全局,接受到session过期代号,然后做过期跳转处理
远程调用
RPC
进程间的通信
这些进程可以运行同一计算机上或网络连接的不同计算机上
特点
消息传递
同步
共享内存
远程过程调用
rpc在使用形式上像调用本地函数一样去调用远程的函数
使用
dubbo
RESTful
基于HTTP协议
http协议
实现过程
1、采用postman发送请求,从postman获取请求消息头
2、RestTemplate设置与postman相同的消息头(完全一致)
URL定位资源
用HTTP动词描述动作
GET 用来获取资源
POST 用来新建资源
PUT 用来更新资源
DELETE 用来删除资源
使用
feign
restful和rpc区别
rpc的思想是把本地函数映射到API
restful操作的核心是资源
rpc和web的区别主要体现在序列化协议和传输协议,
序列化如常见的xml,json,protocol buffers。
传输协议比如TCP、UDP以及更高层的HTTP1.1、HTTP2.0
序列化如常见的xml,json,protocol buffers。
传输协议比如TCP、UDP以及更高层的HTTP1.1、HTTP2.0
对内RPC,对外REST
定时任务(任务调度)
quartz
原理概念
源码解析
有状态job和无状态job
有状态job(可修改)
job实现org.quartz.StatefulJob接口,而不是job接口.
此时JobDetail的JobDataMap将会共享一个对象。
此时JobDetail的JobDataMap将会共享一个对象。
无状态job(不可修改,创建时的状态)
无状态的JobDataMap仅会在Scheduler注册任务时保持一次,
而有状态任务对应的JobDataMap在每次执行任务后都会进行保存
而有状态任务对应的JobDataMap在每次执行任务后都会进行保存
springboot整合quartz
Sprinboot整合Quartz实现定时任务调度管理
SpringBoot系列5-定时任务-springboot整合quartz实现动态定时任务
自整合
QuartzManager
job(要执行的定时业务)
TodoListJob
config
JobFactory
QuartzConfig
resources
quartz.properties
采用缓存保存job状态
可转为quartz专用表保存,另行配置
pom
api文档
单点登录
第三方登录
上传
解决上传文件权限
将上传文件的权限由640改为644。查看tomcat的bin目录下的catalina.sh文件
将0027改为0022即可,0022代表权限为644
业务功能
二维码解析
添加QRCode.jar依赖包
controller
接收前端传来的二维码图片
service
解析二维码,获取解析结果,并对结果根据业务进行自定义解析
支付系统
平台支付
微信支付
阿里支付
苹果支付
paypal支付
bug
maven依赖红波浪线
问题
有可能没有下载依赖
解决
更换为阿里云镜像
项目管理架构
需求设计
开发
热部署
idea
项目构建
maven
mvn dependency:tree > aaa.txt
打印项目目录结构
更新版本
mvn versions:set -DnewVersion=1.1-SNAPSHOT
mvn仓库
测试
运维部署
项目部署
springboot部署 配置文件加载和jar包依赖
配置文件
jar包依赖
启动服务的脚本
模板
后台管理平台
通用模板1
码云
演示项目
模板2
代码架构
代码风格
命名
类命名
同一功能,类名前缀相同,后缀区分
controller url 命名
简单、简洁
如 /order/list
/order/create
/order/create
controller url
增
new
删
remove
改
modify
查
分页
page
不分页
list
筛选
filter
单一条件查询
details
service method
增
add
删
remove
改
edit
查
query
controller method
增
new
删
remove
改
edit
modify
查
分页
page
不分页
list
筛选
filter
单一条件查询
details
find
条件 by
问题
Thymeleaf模板引擎技术
SEO优化
一级域名、二级域名
反射、注解
过滤器和拦截器
0 条评论
下一页