感觉接触的太多,或者时间已久。好多东西都模糊不清了,不过学过的东西,当然是很快可以找回来的啦。
Servlet(server Applet),全称Java Servlet, 是用java编写的服务器端程序。而这些Servlet都要实现Servlet的这个借口,其主要的功能在交互的浏览和修改数据,生成动态的web。Servlet运行支持于java的服务器中。
HttpServlet重写了doGet和doPost方法,或者也可以重写service方法完成对get和post的请求相应。
简单的说一下servlet的生命周期。
servlet有良好的生存期定义,包括加载和实列化,初始化,请求处理,服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destory方法表达。
加载Servlet的class--->实列化Servlet--->调用Servlet的init完全初始化--->相应请求(Service的service方法)--->Servlet容器关闭时(Service的destory方法)
Servlet中forward()与redirect()的区别。
1.0 forward是服务器端的转向,而redirect是客户端的跳转。
2.0 使用forward浏览器地址不会改变,而direct会改变。
3.0 forward是一次请求完成,而direct是重新发起请求。
4.0 Forward在服务器端完成,不用在客户端重新请求,效率更高。
jsp和servlet有哪些相同点和不同点?
Jsp是servlet的扩展,所有的jsp文件都会被翻译成一个继承HttpServlet的类。也就是jsp最终也是一个Servlet,这个Servlet对外提供服务。
不同点在于:Servlet的应用逻辑是在java文件中,并且完全从表示层的html分离,而jsp的情况是java和html组合成一个扩展名为.jsp的文件,jsp侧重视图,servlet主要用于逻辑控制。
数据库优化
定位: 查找,定位慢查询,并优化。
创建索引,创建合适的索引,就可以在索引中查询,查询到以后直接找对应的记录。
分表 ,当一个表的数据比较多或者一张表的某些字段的值比较多并且很少使用时,采用水平分表或者垂直分表。
读写分离,当一台服务器不能满足需求时,采用读写分离的方式进行集群。
缓存,使用redis进行缓存。
定位,查找,定位慢查询,
在项目自验项目测试之前,在启动mysql数据库时开启慢查询,并把查询慢的语句写到日志中,并运行一定时间后,通过日志找到慢查询语句。
数据库优化之遵循方式。
1NF,表的列具有原子性,不可分解,列不可分解。
2NF,表中的记录是唯一的,通过我们设计一个主键来维护。
3NF,表中不要有数据冗余,就是说表的信息能够被推导出来,就不应该单独设计一个字段来存放(外键)
选择合适的储层引擎
在并发中,我们经常使用存储引擎myisam/innodb/memory
myisam存储引擎
如果对事务要求不高,同时以查询添加为主,没有考虑使用myisam存储引擎,比如bbs中的发帖,回复等。
Innodb存储引擎
对事务要求高,保存的数据都是重要的数据,我们建议用INNODB,比如表单,账号等。
Memory存储引擎
我们的数据变化频繁,不需要入库,同时又频繁的查询和修改,我们考虑使用memory,速度极快。
Myisam和Innodb的区别
1.0 事务安全myisam不支持事务而Innodb支持。
2.0 查询和添加速度,myisam不支持事务就不用考虑同步锁,查找和添加速度快。
3.0 Myisam支持全文索引,Innodb不支持全文索引。
4.0 Myisam不支持外键,Innodb支持外键(通常不设置外键,通常在程序中保持数据一致。)
索引,帮助DBMS高效获取数据的数据结构。
分类:普通索引/唯一索引/主键索引/全局索引。
普通索引:允许出现重复的值。
唯一索引:除了不能有重复的记录外,其它和普通索引一样(用户名,用户身份证。)
主键索引:随着设定主键而创建,也就是把某列设为主键的时候,数据库就会给该列设为索引。
全文索引:用来对表中的文本(char,varchar,text)进行索引。
索引的弊端
1.0 占用磁盘空间
2.0 对dml(插入,修改,删除)操作有影响,变慢。
总结:满足以下条件的字段,才被创建索引。
a:在where条件下经常使用。
b:该字段的内容不是唯一的几个值。
c:字段内容不会频繁变化
数据库的分表
分表分为水平(按照行)分表和垂直(按照列)分表
mysql表的数据一般到达百万级别,查询效率会很低,容易造成表锁,水平分表。
如果一张表中的数据字段非常多(长文本,二进制等),并且只有很少的情况下会查询。这个时候就可以把字段多个单独放到一个表,通过外键关联。采用垂直分表
水平分表的策略
1.0 按照时间分表,
这个分表有一定的局限性,当前的数据有较强的时效性。
2.0 按照区间范围分表。
3.0 hash分表
通过一个原始目标的id或者名称通过一定的hash算法计算出数据存储表的表名。
数据库的读写分离
一个数据库支持的最大并发链接数是有限的,如果用户的并发访问太多,一台服务器满足不了要求,就可以集群处理。mysql的集群处理技术最常用的就是读写分离。
主从同步
主从同步,数据库最终会把数据持久化到硬盘中,如果集群必须保证每一个数据库的服务器的数据是一致的,能改变数据库的操作都往主数据写,而其他的数据库从主数据库上同步。
读写分离
使用负载均衡来实现写的操作都往主数据去,而读的操作往从服务器去。
网友评论