java学习之路——第四十七---第五十一天

前段时间,这个坑公司又把网给断了,所以就一直没发,今天把之前的都发一下吧,请允许我复制。。。。

12.27:连接池

一、数据库连接池:

         为什么要连接池技术?

                   传统的连接,一次物理连接一次关闭连接资源,极度的消耗资源。连接池技术能很好的解决这个问题。

 

         开发中常用的连接池技术为:

                   DBCP

                   C3P0

连接池使用的规范和原则:

1.服务启动时建立一定的初始化连接数。

2.当无连接可用或达到最小连接数的时候,按照指定的增量添加连接数

扫描二维码关注公众号,回复: 4812829 查看本文章

3.如何取判断达到最小连接数:

         1、动态检查:定时的去检查连接数是否小于最小连接数,小于就会自行创建

         2、静态检查:当空闲连接不足的时候,系统才去检测是否小于最小连接数

4.按需配置,超时释放,用过的时候及时归还。

 

二、PreparedStatement接口 继承statement

         作用:提升java对数据的处理效率

因为statement使用的是静态(每次操作sql语句都要进行编译和运行)的处理方式,效率较低

 

PS工作原理:对sql语句进行预编译,sql语句中的值全部用占位符(?)替换,在执行sql语句之前设置各个占位符的值用ps.setXXX。这样sql语句就可以编译一次执行多次,大大的提升了执行效率。

 

 

 

12.28:PS

一、PraparedStatement

作用:

1.提升性能

2.防止sql注入

3.批量处理数据

 

sql注入:在用Statement处理sql语句的时候,你传入的参数值可能会改变sql语句的逻辑结构。例:password=’a’ or 1=1;导致任何一个都会正确,就会存在注入问题。

praparedStatement就能防止sql注入,因为在执行sql语句的时候不允许更改语句的逻辑结构       

 

二、ResultSetMataData:数据结果集的元数据

主要是针对ResultSet而言,从中获取相关的元数据

 

三、可滚动结果集

         Statement  s = conn.createStatement(type,con)

 

 

12.29:事务

事务:保证数据库数据操作的准确性的一种可靠机制

事务在操作的时候得看所使用的存储引擎是否支持

mysql中我们默认使用的存储引擎为Innobd支持事务,有些存储引擎是不支持的

事务的特征(ACID):

         1、原子性:事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。      

         2、一致性:事务在完成时,必须使所有的数据都保持一致状态。

         3、隔离性:由并发事务所作的修改必须与任何其他并发事务所作的修改隔离。

         4、持久性:事务完成之后,它对于系统的影响是永久性的。

 

二、批量处理数据

         Statement和PreparedStatement都提供了批量处理数据的方法

批处理的思想:将多条sql语句添加到sql列表中去,然后一次处理或少次处理数据。

         addBatch(sql);Statement类提供的方法

         addBatch();PreparedStatement提供的方法

执行sql列表的语句方法:executeBatch();

 

案例:插入1000条数据

备注:批处理数据,如果数据过大可能会导致内存溢出的情况。

此时你可以分批次进行,不用一次处理

 

1.3  Sevlet Day01

一、servlet

         什么是servlet:

                   一种扩展web功能的组件规范

                   组件规范:开发的程序符合一定规范,且部署在一定容器才能运行的程序模块

                   容器:提供运行环境的一个程序                            

下载安装Tomcat:最好用的是Tomcat7.0

开发servlet步骤:

         1.创建一个web项目

         2.创建一个继承HttpServlet类或者实现Servlet接口的类,重写service方法

3.配置XML配置文件

         一个标准的servlet,配置文件中需要配置两个标签。

                  <servlet>

                            <servlet-name>随便命名</servlet-name>

                            <servlet-class>servlet类的相对路径(带上包名)</servlet-class>

                  </servlet>

                  <servlet-mapping>

                   <servlet-name>要与上面的name一致</servlet-name>

                   <url-pattern>以斜杠/开头的随便名字,用于找到对应的类,访问的类名其实就是这里的名字</url-pattern>

                  <servlet-mapping>

4.将项目部署在Tomcat服务器中

5.启动Tomcat服务器,访问相关内容

 

在运行过程中可能会出现的几个状态码:

         404:找不到路径

         500:一般servlet代码写错

         405:一般很少见,是service方法的错误

         200:一切正常

 

二、HTTP协议

什么是http协议?

         超文本传输协议,是由W3C制定的一种应用层协议,用来定义浏览器与web服务器之间如何通信以及通信的数据格式

         如何通信:

         浏览器发送请求到服务器,服务器解析请求数据包执行相应的内容,然后服务器将执行的结果响应给浏览器,浏览器解析响应包将结果显示在页面中。

         数据格式:

         请求数据包:

                   请求行:请求方式(get/post)+http协议版本号+请求资源路径

                   消息头:一般自动生成

                   实体内容:只有post才有具体的值(参数信息)

         响应数据包:

                   状态行:http协议版本号+状态码

                   消息头:一般自动生成

                   实体内容:将服务器处理的结果用页面形式返回

 

1.4

一、Servlet中获取请求参数值

         1.请求参数为一个值的时候:getParameter

         2.请求参数为多个值的时候:getParameterValues

 

二、Servlet中的请求方式

         get   post

         get提交方式的使用场景:

                   1.地址栏直接输入地址

                   2.超链接

                   3.表单中的默认提交方式

         get提交方式的特点:

         1.将请求数据添加在请求资源路径后面,往往只能提交少量的数据,(往往不超过4kb),且只能提交文本。

         2.会将请求参数显示在地址栏后面,安全性不高!

 

         post提交方式的使用场景:

         1.修改表单中的method属性

         post提交方式的特点:

         1.请求参数提交到实体内容中可以添加大量的参数,且格式没有限制。

         2.不会将请求参数显示在地址栏后面,相对安全。

 

面试题:

get和post的区别:二个特点

 

 

 

三、页面中的中文乱码问题

         为什么会有中文乱码?

浏览器提交请求的时候会对请求数据进行编码(编码格式为:在表单中设置的字符编码)

而web服务器默认情况下使用ISO-8859-1进行解码,当编码和解码格式不一致的时候就会导致乱码。

         如何解决乱码:

         让编码和解码的字符集一样即可。

post请求解决乱码问题:

         第一步:查看表单中的编码格式

         第二步:在service方法中处理具体的业务逻辑前,将解码格式设置为和表单中的编码格式一致即可。

         方法:request.setCharacterEncoding(“text/html;charset=utf-8”);

在响应页面的时候得告诉浏览器使用什么数据类型和编码格式对数据进行包装。浏览器根据指定的数据类型和编码格式作出解码操作。

         方法:response.setContentType(“text/html;charset=utf-8”);

 

get请求解决乱码问题:

         第一步:查看表单中的编码格式

         第二步:获取相应的请求参数的值

通过String类中的构造函数String(byte[] bytes,Charset charset)

通过使用指定的charset解码指定的byte数组,构造一个新的String。

猜你喜欢

转载自blog.csdn.net/mataodehtml/article/details/85989226