1、说下原生JDBC操作数据库流程?
● 第一步:Class.forName()加载数据库连接驱动;
● 第二步:DriverManager.getConnection()获取数据连接对象;
● 第三步:根据SQL获取sql会话对象,有2种方式 Statement、PreparedStatement ;
● 第四步:执行SQL,执行SQL前如果有参数值就设置参数值setXXX();
● 第五步:处理结果集;
● 第六步:关闭结果集、关闭会话、关闭连接。
2、为什么要使用PreparedStatement?
PreparedStatement接口继承Statement,PreparedStatement实例包含已编译的SQL语句,所以其执行速度要快于Statement对象。
作为Statement的子类, PreparedStatement 继承了Statement的所有功能。三种方法execute、 executeQuery和executeUpdate已被更改以使之不再需要参数。
● 在 JDBC 应用中,多数情况下使用PreparedStatement,原因如下:
代码的可读性和可维护性。Statement需要不断地拼接,而PreparedStatement不会。
PreparedStatement尽最大可能提高性能。DB有缓存机制,相同的预编译语句再次被调用不会再次需要编译。
最重要的一点是极大地提高了安全性。Statement容易被SQL注入,而PreparedStatement传入的内容不会和sql 语句发生任何匹配关系。
3、http的长连接和短连接区别?
HTTP协议有HTTP/1.0版本和HTTP/1.1版本。HTTP1.1默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。
在 HTTP/1.0 中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。从HTTP/1.1起,默认使用的是长连接,用以保持连接特性。
4、HTTP/1.1与HTTP/1.0的区别?
● 可扩展性
● HTTP/1.1在消息中增加版本号,用于兼容性判断。
● HTTP/1.1增加了OPTIONS方法,它允许客户端获取一个服务器支持的方法列表。
● 为了与未来的协议规范兼容,HTTP/1.1在请求消息中包含了Upgrade头域,通过该头域,客户端可以让服务器知道它能够支持的其它备用通信协议,服务器可以据此进行协议切换,使用备用协议与客户端进行通信。
● 缓存
在HTTP/1.0中,使用Expire头域来判断资源的fresh或stale,并使用条件请求(conditional request)来判断资源是否仍有效。HTTP/1.1在1.0的基础上加入了一些cache的新特性,当缓存对象的Age超过Expire时变为stale对象,cache不需要直接抛弃stale对象,而是与源服务器进行重新激活(revalidation)。
● 带宽优化
HTTP/1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了。例如,客户端只需要显示一个文档的部分内容,又比如下载大文件时需要支持断点续传功能,而不是在发生断连后不得不重新下载完整的包。
HTTP/1.1中在请求消息中引入了range头域,它允许只请求资源的某个部分。在响应消息中Content-Range头域声明了返回的这部分对象的偏移值