发表于: 2017-10-24 18:23:13
1 745
今天完成的内容:
(1)概念的理解。
任务三与网络较为密切,需要理解服务器,代理,http请求,响应等概念。
网络上的各种链接,其实都是一系列请求,点击链接到内容显示在屏幕上这段时间,有快有慢,这是有原因的。
据老大的原文,对于一个网络请求来说,需要知道的时间的损耗可以分解成三大部分。
第一部分前端的响应,一般包括解析和渲染,这部分的性能跟前端的代码,前端硬件有关系。
第二部分就是网络延迟,这部分的代码正常来讲是在8~16MS左右,Http请求就是差不多这个性能,如果是WebSocket几乎可以做到零延迟,
第三部分就是服务器端的响应,网站慢,一般而言,也就是主要在这里,要做性能优化的地方,基本上也是看这里。
请求是先到nginx再到tomcat,首先,nginx会记录访问请求的各种信息,次数,访问方,延时等,可以说是一层保护吧。
然后到了tomcat,这里过程就较多了,第一个接受到响应的就是Controller,Controller通常是用来控制Service的,Controller根据请求来调用Service,再给出结果。
所以Tomcat响应的时间可以分为:
1.Controller的处理时间
2.Service的调用时间
3.返回结果的处理时间
controller本身的处理事情,一般都会是在开始和结束各打一条毫秒数这是所有的业务逻辑处理的总时间。调用各Service的时间包含网络传输和Service的响应时间。返回结果的时间一般都是解析成Json的时间。
当然时间问题还涉及到很多内容,如硬件带宽等,目前还没有研究过。
(2)回顾任务。
传统JDBC部分,需要重视的是dao中接口的实现,和jdbc工具类。
jdbcUtil中,Connection 调用getConn方法来获取数据库连接(在url中),然后是释放资源即关闭连接,用release方法,关闭rs,pstmt。
接口实现中:
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
初始化这三个类,然后就是写CRUD等方法,包括sql语句,try catch语句等。不过crud这几种方法,写的原理和调用的其他是不尽相同的,如有些方法需要index占位符有的不用。
PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。
数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。
ResultSet 接口提供用于从当前行检索列值的获取方法(getBoolean、getLong 等)。可以使用列的索引编号或列的名称检索值。
明天的计划:根据nginx访问日志统计时间等信息,访问提交任务三。
遇到的问题:还是nginx日志404状态,请教师兄后解决了,明天总结到日报里。
收获:以上。
禅道:http://task.ptteng.com/zentao/task-view-10666.html
评论