文件上传和下载如何实现?
数据较大时必须用文件上传,文件上传的实质是IO流的从操作;
客户端:
1)必须应用post,post能力携带大数据
2)必须设置type=“file” name=“f”必须要有名字;
3)必须要设置enctype=“multlpart/form-data”
服务器端:
1)通过request.getInputStream()获取字节输出流读取申请注释内容;
将上传内容失去,保留在服务器端,就实现了文件上传;
2)理论应用间接用框架中的api就能够,commons-fileupload是apache提供的一套文件上传工具;
文件上传实现:
导入commons-io包和commons-fileupload包;放在WEB_INF下的lib文件夹下。
文件下载有两种办法:
1.超链接下载:如果文件能被浏览器解析,点击就会关上文件,如果要下载,须要应用右键另存为,不能被浏览器解析的文件,点击就下载;
⒉.通过服务器流回写到浏览器下载;要设置MIME,即设置setcontentType(String mimeType);浏览器能解析的间接显示,不能解析的间接下载;
获取文件的mimeType类型: String mimeType=this.getServletContext().getMimeType(filename);
如果设置响应头respponse.setHeader("content-disposition","attachment;flename=下载的文件名称");不论浏览器能不能解析,都是下载操作;
第三方的工作流有哪些?如何应用?
Git工作流:
Workflow.Net、NetBpm、OSWorkflow
对activemq、rabbitmq、kafuka的理解和应用?音讯发送失败如何解决?如何预防音讯的反复生产?
订阅形式:
ActiveMQ:点对点(p2p)、播送(公布-订阅);
RabbitMQ:work queue(工作队列)、Publish/Subscribe(公布订阅模式)、Routing(路由模式)、Topic(通配符模式)、Hreader()、RPC();
Kafka:点对点(p2p);
应用:
1)ActiveMQ:
在我的项目中,咱们应用的是SpringJMS操作activeMQ,已maven操作为例,首先先援用SpringJMS的依赖 及 activeMQ的依赖,而后在spring的配置中,
如果要配置音讯的生产者的话,须要配置springjms的连贯工厂,通过连贯工厂配置 jmsTemplate实例,咱们能够应用jmsTemplate进行音讯的相干操作,另外咱们也须要配置音讯的目的地,也是在spring的配置文件中配置配置队列 或者 主题。
音讯的消费者和生产者配置差不多,不同的是须要配置一个音讯的监听器,监听器外面实现onMessage办法,在这个办法外面解决音讯
2)RabbitMQ:
在咱们秒杀抢购商品的时候,零碎会揭示咱们稍等排队中,而不是像几年前一样页面卡死或报错给用户。
像这种排队结算就用到了音讯队列机制,放入通道外面一个一个结算解决,而不是某个工夫断忽然涌入大批量的查问新增把数据库给搞宕机,所以RabbitMQ实质上起到的作用就是削峰填谷,为业务保驾护航。
服务间异步通信
程序生产
定时工作
申请削峰
Kafka:
日志收集:一个公司能够用Kafka能够收集各种服务的log,通过kafka以对立接口服务的形式凋谢给各种consumer,例如hadoop、HBase、Solr等。
音讯零碎:解耦和生产者和消费者、缓存音讯等。
用户流动跟踪:Kafka常常被用来记录web用户或者app用户的各种流动,如浏览网页、搜寻、点击等流动,这些流动信息被各个服务器公布到kafka的topic中,而后订阅者通过订阅这些topic来做实时的监控剖析,或者装载到hadoop、数据仓库中做离线剖析和开掘。
经营指标:Kafka也常常用来记录经营监控数据。包含收集各种分布式应用的数据,生产各种操作的集中反馈,比方报警和报告。
流式解决:比方spark streaming和 Flink
音讯发送失败如何解决:
1.主动重发
2.零碎预警人工解决等
如何避免音讯的反复生产:
保障音讯的唯一性,就算是屡次传输,不要让音讯的屡次生产带来影响;保障音讯等幂性;
比方:在写入音讯队列的数据做惟一标示,生产音讯时,依据惟一标识判断是否生产过;
suv和git抵触如何解决?
SVN解决抵触有三种抉择:
A、放弃本人的更新,应用svn revert(回滚),而后提交。在这种形式下不须要应用svn resolved(解决)
B、放弃本人的更新,应用他人的更新。应用最新获取的版本笼罩指标文件,执行resolved filename并提交(抉择文件—右键—解决)。
C、手动解决:抵触产生时,通过和其余用户沟通之后,手动更新指标文件。而后执行resolved filename来解除抵触,最初提交。
Git
1)间接批改文件:
第一步,抉择文件鼠标右击抉择 Git-commit --提交到本地仓库
第二部,在文件同级空白处鼠标右击抉择 tortoisGit --> pull,文件产生扭转。
间接批改文件中数据,最初保留文件
第三步,抉择文件鼠标右击抉择 Git Commit --> 提交 -- >push 公布。
2)通过edit conflicts批改
选中文件,右击菜单选项 tortoiseGit --> Edit conflict
批改编辑区:将Theirs- 或者 Local-中须要的数据增加到Meged中。
保留时 标记抵触解决。
如何测试本人的接口?
postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等
poi导入excel时如果数据溢出如何解决?
POI官网举荐解决内存溢出的形式应用CSV格局解析
linux常用命令有哪些?
如何调用第三方的接口?
ajax(会呈现跨域问题)
from表单(此办法在Android端不实用),form的提交不存的跨域的问题,所以能够思考应用form的action办法来解决。)
通过Java代码调用(Android端实用,结构一个字符流缓存)
分布式、集群、微服务的了解?
分布式:一个业务分拆多个子业务,部署在不同的服务器上;
集群:同一个业务,部署在多个服务器上;
微服务是一种架构格调,一个大型简单软件应用由一个或多个微服务组成。零碎中的各个微服务可被独立部署,各个微服务之间是松耦合的,通过接口来实现数据的交互。每个微服务仅关注于实现一件工作并很好地实现该工作。在所有状况下,每个工作代表着一个小的业务能力。
分布式属于微服务
分布式:散布压力(集群)
微服务:散布能力
事务的个性?分布式如何保证数据一致性?
ACID
数据的一致性协定有:
1. 两阶段提交协定 2PC
2. 三阶段提交协定 3PC
3. RWN协定
4. raft协定
5. Paxos协定
docker的常用命令有哪些?
模板引擎的理解和应用?
模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)拆散而产生的,它能够生成特定格局的文档,用于网站的模板引擎就会生成一个规范的HTML文档。
模板引擎有哪些:jsp、Velocity、FreeMarker、Thymleaf、Beetl、Enjoy。
FreeMarker:
创立Configuration实例,该实例负责管理FreeMarker的模板加载门路,负责生成模板实例;
应用Configuration实例来生成Template实例,同进须要指定应用的模板文件;
填充数据模型,数据模型就是一个Map对象;
调用Template实例的process办法实现合并。
Thymleaf:
特点:
动静联合:页面采纳模板+数据的形式,在前端美工手中,能够展现动态页面。在后盾开发人员手中,也能够展现数据返回到页面后的界面。这是因为thymeleaf反对html原型,能够在原型上增加额定的属性,浏览器在解释html时会漠视未定义的属性,当定义的属性有值时就会动静替换动态页面,来实现动静展现。
开箱即用:提供规范和spring规范两种方言,能够间接套用模板实现JSTL、 OGNL表达式成果,
防止每天套模板、改jstl、改标签的困扰。同时开发人员也能够扩大和创立自定义的方言。
多方言反对:
Thymeleaf 提供spring规范方言和一个与 SpringMVC 完满集成的可选模块,能够疾速的实现表单绑定、属性编辑器、国际化等性能。
与springboor完满整合:SpringBoot提供了Thymeleaf的默认配置,并且为Thymeleaf设置了视图解析器,咱们能够像以前操作jsp一样来操作Thymeleaf。代码简直没有任何区别,就是在模板语法上有区别。
应用:
增加依赖;
增加配置(敞开thymeleaf的缓存,不然在开发过程中批改页面不会立即失效须要重新启动,开发完之后能够改为true,能够帮忙客户减速拜访)
我的项目中定时工作怎么写的?
最简略的一种:在线程中执行 Thread.sleep(),休眠挂起线程,期待一段时间后再执行;
借助Timer和TimerTask实现定时工作;
借助调度线程池 Executors.newScheduledThreadPool() 实现定时工作;
借助第三方工具,如spring的定时工作; Quartz;
如何实现邮箱和短信的发送?
短信:阿里云SMS,百度云SMS,七牛云SMS等
邮件:
进入邮箱设置,将其开启POP3/SMTP服务,以容许咱们通过第三方客户端发送邮件。并且获取受权码(不是登录明码)
应用JavaMail发送邮件非常简单,也是三步曲:
创立连贯对象javax.mail.Session
创立邮件对象 javax.mail.Message
发送邮件
两个异构我的项目之间的实时数据互通会怎么做?
Web Service就能够解决异构零碎的通信的整合。
nginx的理解和应用?
Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务;
次要性能:反向代理,通过配置文件能够实现集群和负载平衡,动态资源虚拟化
maven如何解决jar包抵触?
移除依赖:
用于排除某项依赖的依赖jar包;
能够借助Maven Helper插件中的Dependency Analyzer剖析抵触的jar包,而后在对应标红版本的jar包下面点击execlude,就能够将该jar包排除进来。
手动排除:
手动在pom.xml中应用<exclusion>
标签去排除抵触的jar包(下面利用插件Maven Helper中的execlude办法其实等同于该办法):
mvn dependency:tree
版本锁定准则:
个别用在继承我的项目的父我的项目中;
失常我的项目都是多模块的我的项目,如moduleA和moduleB独特依赖X这个依赖的话,那么能够将X抽取进去,同时设置其版本号,这样X依赖在降级的时候,不须要别离对moduleA和moduleB模块中的依赖X进行降级,防止太多中央(moduleC、moduleD…)援用X依赖的时候遗记降级造成jar包抵触,这也是理论我的项目开发中比拟常见的办法。
树形构造的表怎么设计?
设计1:邻接表,是最常见的设计,能正确的表白菜单的树状构造且没有冗余数据,但在跨层级查问须要递归解决。长处构造简略;毛病:不应用递归状况下无奈查问某节点所有父级,所有子集
设计2:门路枚举;在设计1根底上新增一个父部门id集字段,用来存储所有父集,多个以固定分隔符分隔,比方逗号。长处:不便查问所有的子集;也能够因而通过比拟字符串dept_parent_ids长度获取以后节点层级。毛病:新增节点时须要将dept_parent_ids字段值解决好;dept_parent_ids字段的长度很难确定,无论长度多大,都存在不可能无线扩大的状况;节点挪动简单,须要同时变更所有子集中的dept_parent_ids字段值。
设计3:闭包表 是解决分级存储的一个简略而优雅的解决方案,是一种通过空间换取工夫的形式;须要额定创立一张TreePaths表,它记录了树中所有节点间的关系;蕴含两列,先人列与后辈列,即便这两个节点之间不是间接的父子关系;同时减少一行指向节点本人;长处:非递归查问缩小冗余的计算工夫;不便非递归查问任意节点所有的父集;不便查问任意节点所有的子集;能够实现有限层级;反对挪动节点;毛病:层级太多状况下挪动树节点会带来关系表多条操作;须要独自一张表存储对应关系,在新增与编译节点时操作绝对简单;
如何实现菜单及增删改查的性能权限治理?
SpringSecurity
Shiro
开发程序须要哪些文档?
可行性剖析报告;
我的项目开发计划;
软件需要说明书(软件规格说明书);
概要设计说明书;
具体设计说明书;
用户操作手册;
测试计划;
测试剖析报告;
开发进度月报;
软件维护手册;
软件问题报告;
软件批改报告。