java相关知识点(二)

数据库

1.Oracle 与 MySql 的区别
	a.数据类型
		oracle 特有的 varchar2
		Mysql 只有 varchar
		oracle 整数 number(3)/Integer   小数表达式 number(3,2)
		MySQL  整数 int  小数 double
		Oracle 大文本类型  CLOB
		MySQL  大文本类型  Text
	b.主键自动生成方式
		Oracle sequence
			create sequence suns_seq start with 1 increment by 1;
			suns_seq.nextval
		Mysql
			create table t_user(
				id int primary key auto_increment,
			);
	c.分页查询
		Oracle rownum伪列子查询
			select id,name form (select id,name,rownum r from y_user)
			where r>=? and r<=?
		Mysql limit
			select * from t——user limit 2,10
	d. 存储过程
	e. 体系结构
2. 分页sql  
3. Oracle 序列  负责主键的自动生成
4. View 视图
	特点:拔一次查询的结果存储起来,创建成视图,后续的使用方便
5.索引
	特点:优化查询 索引列的查询的效率更高
	Oracle 索引:
		a.B+Tree 索引    一般会加在数据唯一的列
		b.BitMap位图索引   一般会加在数据不唯一的列
6.Mysql的sql优化(5条)
	一.当使用到数字类型时 尽量使用  mediumint、smallint 和 tinyint  如果非负数最好加入UNSIGNED 
			tinyint  				-128 - 127 
			tinyint   unsigned  	0 - 255 
			smallint  				-32768 - 32767 
			smallint  unsigned  	0 - 65535 
			mediumint  				-8388608 - 8388607 
			mediumint unsigned  	0 - 16777215 
			
	二.VARCHAR的长度只分配真正需要的空间
		
	三.尽量使用TIMESTAMP而非DATETIME
	
	四.单表不要有太多字段,建议在20以内
	
	五.避免使用NULL字段,很难查询优化且占用额外索引空间
	
	六.不做列运算查询 如 SELECT id WHERE age + 1 = 10,任何对列的操作都将导致表扫描,它包括数据库教程函数、计算表达式等等,查询时要尽可能将操作移至等号右边
	
	七.不用SELECT *  查询
	
	八.少用JOIN
	
	九.尽量避免在WHERE子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描
	
	十.列表数据不要拿全表,要使用LIMIT来分页,每页数量也不要太大

JDBC开发

1. PrepareStatement 与 Statement 的区别?
	psmt a) ? 占位符  可以防止SQL的注入
		在数据库段  会对SQL语句进行预编译   运行效率高
2.	MyBatis 或者 Hibernate 的框架  底层的封装都是JDBC

Servlet

1. JavaEE 他是一种规范(一组接口)
	JDBC、Servlet、JSP
2. Servlet 的生命周期
	1). 什么时候创建?
		a. 默认情况  用户第一次请求的时候创建
		b. 如果配置<load-on-startup>1</load-on-startup>
			服务器启动时创建
	2).  会有tomcat调用init()方法
	3). 正常服务  service
	4). 销毁 destory() 方法
3. servlet 是单实例 还是多实例
	他是单实例  但不是单例
	a. 如何解决多线程访问的问题?
		1. synchronized(不建议)
		2. 不定义成员变量 (推荐) servlet中便没有成员变量
	b. 单实例 是不是 单例设计模式?
		Servlet不是单例设计模式,单例模式必须要将构造函数私有
		单实例
			1.单例设计模式  构造私有
			2.容器单例  容器保证单实例    如:tomcat | spring
			3.线程单例  一个线程一个对象
				ThreadLocal --- Connection
				线程中  只有一个Connection Service DAO
4. Servlet 的相关组件的启动的顺序
	tomcat先启动 Listener 然后再执行 Filter 最后在执行 Servlet,
	如果有多个,则顺序执行
5. 中文乱码问题(get方式通过 url , post 通过请求体(请求正文)传递)
	get tomcat中的conf/server.xml <Connector URIEncoding="UTF-8" />
	post 底层 request.setCharacterEncoding("UTF-8");(框架中自己封装)

JSP

1. JSP本质上就是Servlet,tomcat会在第一次请求jsp时,将jsp翻译成Servlet进行运行,
	所以JSP的运行效率低,适合做MVC中的View视图
	而Servlet适合做MVC中 Controller
2. JSP的九大内置对象
	request response session application page pageContext 
	out config exception
3. page指令
	pageEncoding 	jsp转换成的.java文件编译成.class文件时的编码格式 
	contentType	就是response响应的内容,等价与resonse.set...("UTF-8"); 
4. EL + JSTL
	jsp中  EL+JSTL 比 struts2 标签库的运行效率高

猜你喜欢

转载自blog.csdn.net/qq_41047055/article/details/84251165