1.文件上传和下载如何实现?
1.文件上传
文件上传的本质是IO流的从操作,
客户端:
1.必须使用post,post才能携带大数据
2.必须设置type=“file” name="file"必须要有名字
3.必须要设置enctype="multipart/form-data"
服务器端:
通过request.getInputStream()获取字节输入流,读取请求正文内容;
将上传内容得到,保存在服务器端,就完成了文件上传;
文件下载
1.超链接下载:
如果文件能被浏览器解析,点击就会打开文件,如果要下载,需要使用右键另存为,
不能被浏览器解析的文件,点击就下载;
2.通过服务器流回写到浏览器下载;
要设置MIME,即设置setcontentType(String mimeType);
浏览器能解析的直接显示,不能解析的直接下载;
2.第三方的工作流有哪些?
如何使用的?
Activity
JBPM
JBPM和Activity是两个主流的工作流系统
如何使用的?
avtivity的基本操作:
设计流程图
流程定义增删改查
流程变量增删改查
启动流程定义
任务增删改查
完成任务
历史信息查询
3.对activemq、rabbitmq、kafuka的了解和使用?消息发送失败如何处理?如何防止消息的重复消费?
MQ是消息中间件,是一种在分布式系统中应用程序借以传递消息的媒介
ActiveMQ:吞吐量:万级 ;可用性:高,基于主从架构实现高可用; 消息可靠性:有较低的概率丢失数据;
rabbitmq:吞吐量:万级 ; 时效性:微妙级,延迟最低; 可用性:高,基于主从架构实现高可用; 消息可靠性:基本不丢; 功能支持:并发能力很强,性能极好,延迟很低;
kafka:吞吐量:10万级,高吞吐量; 可用性:非常高,少数机器宕机,不会丢失数据,不会导致不可用; 消息可靠性:基本不丢;
消息发送失败如何处理?
回滚,捕捉异常
把预处理的这条数据给删除了,
数据库就没有数据了,消费方就不会有消息执行。
双方数据一致。
如何防止消息的重复消费?
1、对于需要保存到数据库的数据,设置一个唯一索引,即使重复消费也不会生效
2、乐观锁,也就是我们每次插入一条数据或者更新的时候判断某个版本号是不是与预期一样,如果不是,那么就不进行操作
3、使用redis进行存储,每次操作数据的时候先去redis进行判断,如果存在,就是重复消费,我们可以丢弃
4.svn和git冲突如何解决?
SVN
放弃自己的更新,使用svn revert,然后提交
放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename并提交
手动解决:冲突发生时,手动更新目标文件,然后执行resolved filename来解除冲突,最后提交。
git冲突如何解决
1、代码中直接解决:
2,在Android Studio中解决
3,TortoiseGit来解决
4、SourceTree来解决冲突
5.如何测试自己的接口?
用postman swagger等工具
6.poi导入excel时如果数据溢出如何解决?
将excel的格式转换为csv格式进行读取
7.linux常用命令有哪些?
1.1 pwd命令:会输出当前目录
1.2 cd命令:改变所在目录
cd / 转到根目录中
cd ~ :转到/home/user用户目录下
1.3 ls命令: 来查看目录的内容
1.4 cat命令: 用来合并文件 在屏幕上显示整个文件的内容
8.如何调用第三方的接口?
一种使用的是form表单,另一种使用Java
1)form表单提交,使用form的action方法来解决。
(2)通过Java代码调用
9.分布式、集群、微服务的理解?
分布式:将不同的业务分布在不同的地方,每一个节点,都完成不同的业务,
一个节点垮了,那这个业务就不可访问了
集群:
将几台服务器集中在一起,实现同一业务,一台服务器垮了,其它的服务器可以顶上来,
微服务
一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。
微服务可被独立部署,微服务之间是松耦合的。
每个微服务完成一件任务
10.分布式事务的处理逻辑?怎么实现的?
小操作分布在不同服务器上,要么全部成功,要么全部失败
怎么实现的?
XA的两段式提交
TCC解决方案
MQ事务消息
11.事务的特性?分布式如何保证数据一致性?
特性:原子性,一致性,隔离性,持续性。
原子性:事物中的操作要么都做,要么都不做。
一致性:使数据库从一个一致性状态变到另一个一致性状态。
隔离性:一个事务的执行不能被其它事物干扰。
持续性:一个事物一旦提交,对数据库中数据的改变是永久性的
分布式如何保证数据一致性?
当更新操作完成之后,都会返回最新的更新过的值
12.docker的常用命令有哪些?
启动docker: systemctl start docker
重启docker服务 systemctl restart docker
关闭docker systemctl stop docker
1.查看正在运行的容器 sudo docker ps
2.查看所有的容器 sudo docker ps -a
3.查看本地镜像 sudo docker images
13.模板引擎的了解和使用?
模板引擎:
用户界面与业务数据分离产生,生成特定格式的文档,生成一个标准的HTML文档
使用:
1、导入文件
2、定义模板
3、准备对象
4、将数据填充到模板
14.项目中定时任务怎么写的?
1、实现了Runnable接口
run方法中,先打印一个当前系统时间
接着执行sleep方法,休眠30秒
2、实现TimerTask接口
15.如何实现邮箱和短信的发送?
发邮件
设置邮箱发送的配置信息----验证用户----输入对方的账号----运行程序
Springboot项目发送邮件
第一步:在springboot项目当中引入依赖
第二步:在application当中配置相关参数
第三步:编写测试代码
发短信
1.注册接口账号
2.创建应用
3.创建短信模板
4.创建测试号码
5.下载SDK
6.修改demo配置文件
7.填写demo类参数
8.测试
16.两个异构项目之间的实时数据互通你会怎么做?
1,通过XML,JSON,字符串进行多语言的通讯,
2,共享数据库,
3,共享文件,可以将文件上传到都可以访问到地方进行共享(FTP)
4,使用消息中间件
17.nginx的了解和使用?
nginx是一个高性能的http服务器及反向代理服务器
主要功能:反向代理,通过配置文件可以实现集群和负载均衡
反向代理是一台负责转发的代理 服务器
代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的数据。
使用
下载后解压
打开cmd命令窗口
输入命令start nginx回车即可
直接在浏览器地址栏输入网址 http://localhost:80,回车,出现以下页面说明启动成功
18.maven如何解决jar包冲突?
手动排除 在pom.xml中使用标签去排除冲突的jar包
版本锁定原则:一般用在继承项目的父项目中
那么可以将X抽取出来,同时设置其版本号
19.树形结构的表怎么设计的?
左右值算法
左右值树每个节点都有左右两个值,所有子节点的左右值均在父节点的左右值范围内
20.如何实现菜单及增删改查的功能权限管理?
在admin登录时,生成的token保存到vue组件。
根据角色id查询role_permission表关联的菜单权限信息
返回给vue里面 控制管理系统左侧 菜单栏导航 显示
后端使用自定义注解和AOP实现增删实现增删控制
21.开发程序需要哪些文档?
可行性研究报告、
需求规格说明书、
项目计划、
软件测试计划、