今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
1、过任务二深度思考
2、总结提交任务二
明天计划的事情:(一定要写非常细致的内容)
1、规划任务三的学习,新建禅道
2、拆禅道
3、开始任务三
遇到的问题:(遇到什么困难,怎么解决的)
收获:(通过今天的学习,学到了什么知识)
1、深度思考
14、 端口是什么含义,怎么判断一个端口是否被占用了,如何判断一个端口是否被防火墙拦截,怎么用Telnet判断端口号是否打开?
端口是设备与外界信息交流的通道,分为物理和虚拟,像插网线的网口就是物理端口。平时说的80、8080等是虚拟端口。
linux中用top查看整体状态
linux中用 /etc/init.d/iptables status 查看是否被防火墙拦截
linux中用 telnet + 端口号 查看是否打开端口,
15、 WEB服务器通常要配置哪几个端口,如果一台服务器上有多个不同的WEB服务,该怎么规划端口的使用,修真院的端口分配是怎么样的?
通常配置端口,80:直接访问域名;3306:mysql端口;8080:Tomcat首页
1、公认端口:0-1023端口由IANA管理,分配给一些重要应用程序。
2、注册端口:1024-49151端口是公司和其他用户登记的端口号,特定的额应用程序需要这些端口。
3、客户端使用的端口:49152-65535端口仅在客户进程运行时才动态选择。
16、 常用的性能统计命令有哪些,Top,Vmstat,free等命令都有什么用处,CPU占用率,内存使用分别代表什么含义?到什么情况下,应该产生报警信息?
top查看服务器整体性能;Vmstat查看cpu性能;free查看内存使用情况。
cpu占用率:运行的程序占用cpu的资源占了总资源的百分比
内存使用:运行的程序占用内存的资源
一般使用top命令后,load average 中三个数据的平均值大于0.6后报警
17、 为什么要知道响应时间的分布情况,如果一个请求很慢,它的时间可能会被耗费在哪里?
知道了相应的分布情况可以进行相应的优化和故障处理等问题。可能耗费在读取数据或者加载页面
18、 怎么查看Resin或者是Tomcat中的DB访问时间和Controller时间,有没有可能用Aop的方法自动记录Controller的时间和DB时间?Controller时间和DB时间的区别是什么,在你写的业务逻辑里,相差有多大?
在Controller开始处理的时候AOP记录一次时间,请求访问DB在记录一次数据,得到数据在记录一次,Controller返回的时候在记录一次
Controller时间中包括db时间
19、 怎么判断WEB容器是否收到了一个Http请求,WEB容器中的Access.log是什么意思,包含哪些字段,代表什么含义,是哪里配置修改字段的。
查看日志。Access.log记录着所有客户端请求的信息,在directory的pattern中修改
%h 远程的主机名或IP
%l 远程的逻辑用户名
%u 通过身份验证的远程用户
%t 通用日志格式的日期和时间
%r 请求
%s 返回的HTTP状态码
%b 响应中发送的字节,不包括HTTP头
20、 为什么通常都是将部署文件放置在/data/盘下,在云服务器中数据盘和系统盘的区别是什么?
data是根目录。系统盘类似于c盘,数据盘类似其他盘。
系统盘用来存放运行系统需要的文件的。重装系统会清空,而数据盘不会清空。
21、 常用的主流数据库有哪些,Mysql有几种安装方式?
主流的数据库 oracle(听过),SQL SERVER(听过),MySQL(用过)、 postgreSQL(没听过)、 sqlite(没听过)。
服务器上安装MySQL,yum、 rpm包、gz包
22、 有哪些常用的云服务器公司,Linux服务器和Windows服务器的差别是什么,Linux有哪些主流的版本,不同版本之间的差别在哪里?
云服务器公司:阿里云、腾讯云、 百度云。
Linux是内核的开源操作系统,有很多版本,而Windows Server则是一个专用的商业操作系统。
Linux主流版本: Ubuntu,Linux Mint和PCLinuxOS是其中最易用使用的。
Slackware Linux,Arch Linux和FreeBSD是更激进的发行版,更新比较频繁,所以需要有一定的基础。
23、 什么是ssh?如何在linux服务器上从网站下载文件?
ssh是安全外壳协议,secure shell的缩写。转为远程登录和其他网络服务提供安全性的协议。
wget -c 后面是该网络地址和文件的位置
24、 C标签是什么,为什么要使用C标签,有哪些常见的指令?
c标签是jstl的核心标签。方便,简单明了。常用的指令:out、set、IF、choose、when、forEach等
25、 什么叫反向代理?为什么要使用反向代理?
反向代理是根据客户端的请求,从其关联的一组或多组服务器上获取资源,然后返回给客户端。
使用反向代理可以提高服务器的性能,解决高并发问题,还可以隐藏服务器的信息。
26、 Nginx的作用是什么,在WEB服务前端配置Nginx的好处是什么,除了Nginx,还有别的反向代理服务器吗?
Nginx可以实现反向代理和负载均衡。提高web服务器的性能。
Squid、 Varnish、 Apache TS、 HAProxy
27、 为什么要用start.sh,stop.sh,deploy.sh 来完成容器的启动,停止和部署,而不是直接用容器自带的命令?
脚本部署方便了灵活。
不同的容器有不同的命令,规范。不方便管理
28、 什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?
Filter是过滤器对所有请求进行过滤处理,
Interceptor是拦截器,属于AOP的一种运用。
拦截器是归Spring管理,可以使用Spring里的资源,Filter不能。
并且Filter只能在Servlet前后起作用,拦截器深入方法前后。
29、 使用Annotaion的时候需要有哪些配置,他的加载过程是怎么样的?
控制层:@Controller,服务层:@Server,持久层:@Responsitory
当使用注解的时候,Spring配置文件有扫描配置
加载Spring配置文件时,相应的注解也将加载。
30、 Annotation和XML两种配置的差别,为什么更喜欢使用Annotaion来配置Spring MVC?
xml:根据组件相应的标签进行配置
注解:使用相应的注解,添加组件扫描和开启注解
注解比较灵活,配置内容少便于维护
31、 web.xml里的主要配置都包括什么,都代表什么含义,比如怎么加载Spring 配置的?
1、Filter过滤器
2、 ContextLoaderListener监听器
3、 contextConfigLocation部署 applicationContext的配置文件
4、 DispatcherServlet前端控制器
32、 Spring MVC和Struts的区别是什么,为什么更倾向于使用Spring MVC?
Struts是基于类开发的,入口是Filter
Spring MVC是基于方法开发的,入口是Servlet,性能强于前者
33、 什么是WEBService,实现WEBService有哪些框架,为什么WEBService经常被认为太重了,只有银行和大型国企才会使用的更多有一些?
WebService是一个平台独立的、低耦合的、自包含的、基于可编程的web的应用程序
实现框架: JWS、 Axis2、 XFire、 CXF
使用soap协议去完成简单的数据传输的效率不高。
34、 什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?
tcp/ip是 网络通讯协议,是Internet最基本的协议。三次握手指的是发送端口和接收端口在传输数据前的三次信息交互
首先发送端口会发送头信息给接收端,第一次握手
然后接收端确认后会返回一段确认信息,第二次握手
发送端口携带确认信息和数据发给接收端,第三次握手
35、 什么是http协议?get和post请求有什么区别?http请求content-Type有几种,有什么区别?http适合什么场景?http状态码有哪些?
http协议是请求-相应协议。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
application/x-www-form-urlencoded 在最开始的请求方式中,请求参数都是放在url中,表单提交的时候,都是以key=&value=的方式写在url后面。这也是浏览器表单提交的默认方式。
multipart/form-data 此种方式多用于文件上传,表单数据都保存在http的正文部分,各个表单项之间用boundary分开。
application/json 现在越来越多的应用使用application/json,用来告诉服务端消息主体是序列化的json字符串。由于json规范的流行,各大浏览器都开始原生支持JSON.stringfy。
36、 了解maven的module。
37、 为什么要用Rest风格,如果不用Rest的话,接口应该怎么定义,在使用Rest风格之前,大家都是用什么方式写接口的?
Rest风格 层次清楚简单明了,信息也不会暴露。另外 RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。
不使用Rest,接口也尽量要见名知意,一般使用动词和名词交替使用
38、 生成Json有几种方式,他们之间的好处和坏处分别是什么,为什么推荐使用JsonTaglib来处理Json?
jsp中js对象可以直接转化为json对象。使用JsonTaglib还是方便,格式简单。
39、 一份规范的接口文档应该包括什么内容,衡量接口(API)设计好和坏的准则是什么?
功能、路径、入参、出参、各字段说明、复杂数据给出实例
好的api:简单明了,容易上手,好看好学好用好改。
40、 Http的Header里面包含哪些字段,每个字段都有哪些含义?
general header:通用头,请求的url、状态码、远程ip
request header:请求头,接受内容的类型、浏览器支持的类型和语言等
response header:响应头,内容的压缩类型、返回内容的长度、返回内容的类型
41、 如何写shell脚本?尝试自己编写一个简单脚本。
将cd切换目录、从git上pull项目、Maven打包等命令写到一个.sh文件中。即完成了一个简单的脚本
42、 在Linux服务器上部署的时候,一般都要有哪些脚本,这些脚本该怎么编写?
从git上pull代码、管理服务器(开启关闭)的命令等。
43、 如果有多个WEB服务,都把WEB服务都配置在一个容器里,还是一个WEB配置一个容器,他们的差别是什么,你觉得哪种方式更好?
一个服务配置一个容器吧,一旦一个容器挂了只会挂一个服务,其他服务不受影响
44、 Resin/tomcat/jetty等WEB容器的内存大小,一般应该设置多大合适,怎么估算WEB程度占用内存的大小?
根据网站的类型、访问量、数据大小、目标用户来决定内存大小。
45、 jetty,resin,tomcat的常见配置有哪些,内存,端口,日志文件都怎么配置?
端口、项目位置、日志文件等。内存根据网站配,端口配80便于直接访问,日志文件放到一个文件夹中
46、 jetty,resin,tomcat的差别在哪里,在线上服务应该选择哪一种WEB服务器?
jetty是最轻量的,Tomcat和resin访问量小的情况下没有太大差别,网站做大,访问量大的话还是Tomcat好一点
线上服务器应该根据网站类型访问量等信息选择服务器
47、 maven常用的打包插件有哪些?有什么区别?如何使用 ?
package、 不能打可直接运行的jar包; jar-dependency插件,繁琐,性能差,不建议使用;
assembly插件,可以打多种格式的包,具有基本的解决所打jar包内依赖包冲突的问题,但一旦出现冲突则无法解决
shade插件,终极杀器,jar包出现依赖包冲突可以通过调整配置解决
48、 War包是什么,为什么WEB服务通常打出来的都是War包?除了War包,还有几种打包格式,他们之间的区别呢?
war包就是web应用的一个部署文件,不会缺少目录与文件,方便管理
jar包是可运行或可作为依赖
ear包除了jar、war还有EJB组件
49、 Put请求在Linux下的Tomcat或者是Resin中会收不到数据,怎么解决这个问题,原因是什么?为什么本地使用Jetty的时候往往是正常的?
未知
50 、Content-type中的数据类型,在Spring MVC中都怎么接收数据?、
和35类似
51、 什么是restful?rest的请求方法有哪些,有什么区别?
restful是一种借口编写风格。 基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
rest的请求方式:POST(新增)GET(查询)PUT(修改)DELETE(删除)
做任务只是学习到每个功能很小的一部分,尤其在查询深度思考的时候感受更加深刻
当任务告一段落一定要回过头仔细在过一遍。
2、任务总结
任务总结:
任务名称:JAVA=TASK2
成果链接:https://github.com/Mars-xjy/jnshu/tree/master/spring
任务耗时:8.8-8.28,耗时20天
技能脑图:
个人

官方

任务总结:
任务进度是否符合预期,是否延期,如果延期,原因是什么,如何避免下次继续延期
进度基本符合预期,但是还有很多需要学习地方,目前仅仅完成任务需求的技能,任务背后的技能还没有进行挖掘
任务二开始的时候散开的面有点广,学习每个面的知识点正反馈较低,效率偏低
到后期代码效果逐渐明显后,效率有所提高
脑图对比分析
大致相同
任务中遇到哪些疑难问题,最终是如何解决的,有哪些值得分享的收获
(对于任务总结应该更多的描述出任务所走的弯路以及遇到的困难,不应鼓励将知识点无脑的堆砌在总结之中)
我大致的学习路线及踩的坑
1、刚接触任务二的时候,打算找一个可以实现的实例,照着敲下来然后进行逐步学习,但是找到的实例大多实现不了
后来才发现创建web项目后的结构配置了Tomcat就可以直接运行 显示 Hello World 这里浪费了部分时间
采坑预警:IDE中配置Tomcat及项目的配置不要浪费太多时间,不会要及时问师兄,这个不值得花时间扣。
技能点:使用Mavenwebapp创建项目添加MVC框架、配置Tomcat、运行显示Hello World
2、然后面对 Model View Controller 开始逐步学习,
先学习的View,学习jsp语法,el表达式,学习json及Taglib。不过刚接触这里,对于收发数据,表单发送等还不是很理解
采坑预警:学习View的时候最好将js语法也简单学习,因为jsp页面也支持js语句,并且后续用js语法也会很简单。
然后学习Controller和Model,由于Controller是在熟悉的环境中编写,所以学习和编写较View来说方便很多。
这里突然想起最开始网上关于web的实例,关于Controller的部分正好拿来学习,
这里的注解比较多而且还很重要,要注意使用
简单编写几个页面切换和收发数据的实例,结合jsp完成数据交互。
技能点:jsp页面收发数据(js语法、el表达式、表单及input)> 后端收发数据(注解、Model及Modelandview)
3、整合SSM
在SpringMVC上将之前的增查改删添加进来,这里最好开始学着使用rest风格和json传输数据
这里其实是对上一步的应用,jsp如何收集用户输入的数据,然后如何处理发送给后端,
后端怎么收到前端发来的数据,然后怎么处理,最后把结果发送给前端,前端怎么展示
最终加一个管理员查看,使用分页显示。
采坑预警:还是注解,如果大部分注解都理解了会省去很多不必要的麻烦,另外这里可能有乱码,添加过滤器顺便学习一下
技能点:rest风格、前后端使用json收发数据、前后端处理json数据、分页、
4、将项目部署到服务器
这里有个小插曲,我的服务器崩了,重新换了一个服务器,重新安装了MySQL、JDK、Maven、Tomcat
重新建立连接,然后将项目部署到服务器上,使用浏览器进行访问。
这里顺便学习jetty和Resin,它们的日志管理,还有postman进行测试。
在写一个一键部署,可以是服务器端的从git上pull到本地然后进行打包部署。也可以是从win端的终极一条龙部署。
最后学习一下Nginx,这里可以简单了解,正确运行,后面任务会用到
采坑预警:网上有些没有必要的软件(宝塔、gitlab等)暂时用不到就先别装了,毕竟10元一个月的服务器配置一般。也省的去管理它们
技能点:SVN/Git操作、服务器配置、日志管理、脚本部署、服务器管理、Nginx部署
5、完善一下代码
对任务二的理解:
1、任务二学习建立一个比较简单的web项目,但是可以完成一些简单的操作和页面设计
页面交互,信息处理,访问日志的记录,管理员分页。
2、任务一的成果永远显示在控制台中,任务二可以将成果以想要的方式展示出来,
正反馈远大于任务一。
3、另外对于支持项目运行的工具的学习,服务器等,逐渐也多了起来了,
毕竟会写代码重要,让代码动起来也很重要
还添加了一些维护和保障的工具,比如Nginx等
使得项目运行更加有效率稳定。
评论