实习
收获
今天阅读了spring boot电商项目的大部分文档,对于文档中每新增一个函数,就进行单元测试的做法印象深刻。我自己平时编码时,只会简单验证输出是否正确,然后在将所有模块完成,正式输入时,往往发现一些bug,只能在大量的代码中寻找错误,比较麻烦且痛苦。这种利用自动化工具进行单元测试的做法非常值得借鉴,希望能在以后的项目开发中坚持使用自动化工具进行单元测试,虽然搭建环境可能是一个非常痛苦的过程,但收益是值得的。
其他
今天下午进行了小组分组,16个人完成一个新闻管理系统……只能说,这实习有点水,希望能学到东西,不是白白浪费20天。
mybatis
学习了mapper类与xml之间的映射关系,对于mybatis的工作流程有了初步了解。
晚上的时候,学习了mabtis利用xml进行复杂查询的过程,了解association、collection、constructior的基本使用以及与sql语句、javaBean之间的对应关系。
小林coding
图解网络
常见字段
了解了http的常见字段:Host、Content-Length、Connection、Content-Type、Conten-Encoding
安全和幂等
了解了http协议中安全 和幂等的概念:安全指不会修改服务器上资源,幂等指执行多次相同操作,返回值相同
GET方法不一定就是安全和幂等的,因为服务器端对GET方法的处理方式是不可预料的,POST方法也可以是安全和幂等的。
因此,判断安全和幂等需要看具体的服务器实现
强制缓存与协商缓存
强制缓存指定缓存的过期时间,是否使用缓存由浏览器端进行判断
协商缓存则是由服务器端指示浏览器端可以使用本地缓存
协商缓存需要将本地缓存数据与服务器端数据进行对比,判断缓存数据是否在服务器端已经被修改。可以通过Last-Modified 和Etag来判断本地缓存与服务器数据是否一致。Last-Modified为修改时间,Etag为根据服务器数据生成的唯一标识。由于浏览器实现及时间精度问题,Last-Modified不够可靠,而Etag在服务器数据修改后,其Etag值都会变化,因此根据本地Etag与服务器Etag比较,即可判断缓存是否与服务器数据一致。
只有Cache-Control中的值过期时,才需要进行协商缓存的请求
http/1.1性能特点
- 长连接 只有任意一端发起断开连接请求或过长时间无数据交互时,才会断开连接。因此,在拔掉网线后,tcp连接仍然未中断,需要一定时间后才会断开。
- 队头阻塞 顺序发送的请求被阻塞时,其后所有的请求都会被阻塞(相当于单车道,后面的车辆无法超车,取决于最前面车的速度)