zoukankan      html  css  js  c++  java
  • 知识点题纲

    Filter(过滤器)与servlet的区别:

    1、 Filter实现Filter接口,Servlet实现Servlet接口;

    2、 Filter是当Servlet容器启动后就会初始化,Servlet是当Servlet类被调用之后才初始化;

    3、 Filter层次调用doFilter()方法中FilterChain.doFilter()(过滤链)之前的内容,然后调用servlet中的service方法,再调用doFilter()方法中FilterChain.doFilter()(过滤链)之后的内容;按配置顺序和条件调用满足条件的Servlet,调用之前事先调用满足条件的Filter;

    4、 Filter服务器停止后销毁,晚于Servlet销毁之后,Servlet在服务器停止之后销毁;

    5、 Filter在请求到达Servlet之前拦截请求,根据条件对请求进行处理,Servlet主要是处理客户端请求并将结果返回给客户端。

    二、jsp的九大内置对象:

    1、request

    HttpServletRequest类的实例,request对象具有请求域,完成客户端请求之前该对象一直有效。

    2、response

    HttpServletResponse类的实例,response对象具有页面作用域,在页面内该对象只能对这次访问有效。

    3、session

    HttpSession类的实例,Session对象具有一次会话的作用域,一次会话就是客户端连接到服务器直到客户端与服务器断开连接

    4、out

    JSPWriter类的实例,out是向客户端输出内容时常用到的对象。

    5、page

     Java.lang.Object类的实例,page对象就是指当前jsp页面本身。

    6、application

    ServletContext类的实例,application对象实现了用户间数据的共享,可以存放全局变量。它开始于服务器的启动一直到服务器关闭,在此期间该对象一直存在。

    7、exception

    Java.lang.Throwable类的实例,exception对象是一个例外对象,当一个页面在运行的过程中发生了例外,就会产生这个对象。如果一个页面要用这个对象,就必须把isErrorPage设为true,负责无法编译。

    8、pageContext

    PegeContext类的实例,pageContext对象提供了对jsp页面内所有对象以及名字空间的访问。

    9、config

    config对象是在一个Servlet初始化时,jsp引擎向它传递信息用的,此信息包括Servlet初始化时需要用到的参数以及服务器的有关信息。

    三、jQuery选择器:

    详见下面链接:

    http://www.cnblogs.com/kissdodog/archive/2012/11/05/2755103.html

    1、 基本选择器:

    1、#id 根据id匹配一个元素;

    2、.class 根据给定的class匹配元素;

    3、element 根据元素名匹配元素;

    4、* 匹配所有元素。

    2、层次选择器:

    1、 ancestor descendant 根据祖先匹配所有的后代元素;

    2、 parent>child 根据父元素匹配所有的子元素,直接后代;

    3、 prev+next 匹配下一个兄弟元素;

    4、 prev~siblings 匹配后面的兄弟元素。

    3、简单过滤选择器:

    4、内容过滤选择器:

    5、可见性过滤选择器:

    6、属性过滤选择器:

    7、子元素过滤选择器:

    8、表单对象属性过滤选择器:

    9、表单选择器:

    四、Mysql常用函数:

    详见下面链接:

    http://www.jb51.net/article/40179.htm

    1、 数学函数:

    1、 abs(x) 返回x的绝对值;

    2、 ceiling(x) 返回大于x的最小整数;

    3、 floor(x) 返回小于x的最大整数;

    4、 mod(x,y) 返回x%y的模数;

    5、 pi() 返回π(圆周率);

    6、 round(x,y) 返回参数x四舍五入有y位小数的值;

    7、 truncate(x,y) 返回参数x截短为有y位小数的值;

    8、 ……等等。

    2、聚合函数:

    1、 avg(column) 返回指定列的平均值;

    2、 count(column) 返回指定列中非null值的个数;

    3、 min(column) 返回指定列的最小值;

    4、 max(column) 返回指定列的最大值;

    5、 sum(column) 返回指定列的所有值的和;

    6、 group_concat(column) 返回由属于一组的列值连接组合而成的结果。

    3、字符串函数:

    1、 concat(s1,s2,……)将s1,s2,……连接成字符串;

    2、 Concat_ws(sep,s1,s2,……)将s1,s2,……连接成字符串,并用sep字符间隔;

    3、 insert(str,x,y,instr)将字符串str从x位置开始,y个字符长的子串替换为字符串instr,返回结果;

    4、 trim(str)去除字符串首尾所有的空格;

    5、 ……等等。

    4、日期和时间函数:

    1、 curdate() 返回当前的日期;

    2、 curtime() 返回当前的时间;

    3、 hour(time) 返回time的小时值(0~23);

    4、 now() 返回当前的日期和时间;

    5、 year(date) 返回日期date的年份(1000~9999);

    6、 ……等等。

    5、加密函数:

    6、控制流函数:

    7、格式化函数:

    8、类型转化函数:

    9、系统信息函数:

    五、Hibernate与Mybatis的区别:

    1、 Hibernate是一个完全的ORM框架,维护的是对象与表之间的映射,Mybatis不是一个完全的ORM框架,维护的是sql结果集合;

    2、 Mybatis没有提供事务,其事务管理用的是JDBC的,Hibernate3和Hibernate4提供了事务管理;

    3、 Hibernate的ORM映射能力强,数据库无关性强,数据库可移植性自然就强;

    4、 Hibernate自动生成sql语句,sql不可控,Mybatis需要程序员编写sql,sql可控性强。

    六、Struts2与SpringMVC的区别:

    1、 Struts2的核心控制器是一个过滤器:DispatchFilter在StrutsPrepareAndExcuteFilter的init()方法中加载struts.xml文件,SpringMVC的核心控制器是一个Servlet:DispatchServlet,application.xml文件在该servlet的init()方法中加载;

    2、 Struts2基于类,接受前台传递参数是通过属性驱动和模型驱动给全局变量赋值,多个方法可以共享,SpringMVC是基于方法,接受前台传值是通过方法传参得到的,多个方法之间不可以共享。

    七、Spring和SpringMVC的常用注解:

    1、 Spring的常用注解:

    使用注解之前需要开启注解,和加上包扫描。

    1、@Configuration:把一个类作为IOC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean;

    2、@Scope:用于指定scope的作用域(用在类上);

    3、@Lazy(true):表示延迟初始化;

    4、@Service:用于标注业务层组件;

    5、@Controller:用于标注控制层组件;

    6、@Repository:用于标注数据访问组件,即DAO层;

    7、@Component:泛指组件,当组件不好归类时,使用此注解;

    8、@PostConstruct:用于指定初始化方法(用在方法上);

    9、@PreDestory:用于指定销毁方法(用在方法上);

    10、@AutoWired:默认按类型自动装配;

    11、@Resource:默认按名称装配,如果找不到与名称匹配的Bean才会按照类型装配。

    2、SpringMVC的常用注解:

    1、@Controller:负责注册一个Bean到Spring上下文中,Bean的ID默认为类名首字母小写,也可以由程序员自定义;

    2、@RequestMapping:用来定义访问的URL(用在类上和每个方法上);

    3、@PathVariable:用于方法中的参数,表示方法参数绑定到URL上;

    4、@RequestParam:从Request域当中读取参数,类似于request.getParameter(“name”)。

    八、final和static总结:

    final表示最终的,无法改变的;static表示全局的,静态的。

    1、修饰变量:

    1、 final修饰的变量只能赋值一次,赋值后值不再改变。

    2、 static修饰的变量称为类变量,在内存中只分配一次空间,在加载类的时候就会分配,可以用类名直接访问。

    2、修饰方法:

    1、 final修饰的方法不能被子类的方法覆盖,但可以被继承。

    2、 static修饰的方法叫静态方法:

    ①、可以用类名直接调用;

    ②、静态方法中不能有this和supper关键字;

    ③、不能在静态方法中直接访问该类非静态的变量和方法;

    ④、静态方法独立于任何实例,因此静态方法必须被实现,不能是抽象的abstract。

    3、修饰类:

    1、 final修饰的类不能被继承,不能被扩展,没有子类,该类中的方法默认是final的。

    2、 static不能修饰普通类,但可以修饰内部类,被static修饰的内部类可以作为一个普通类来使用,不需要实例一个外部类。

    4、静态块:

    static{静态代码体}:称为静态块,不再任何方法体中,是独立的语句块。

    ①、JVM加载类时会执行静态块,每个静态块只被执行一次;

    ②、一个类中可以有多个静态块,顺序可以任意放;

    ③、执行时按照静态块在类中出现的先后顺序依次执行。

    九、Set、List、Map:

    1、区别以及使用场景:

    ①、List和Set都是继承自Collection接口,而Map不是;

    ②、List的特点:元素有放入顺序,元素可以重复,可以用下标来取元素;

    Set的特点:元素无放入顺序,元素不可重复,重复元素会被覆盖。

    ③、Set和List对比:

    Set:检索元素效率低,删除和插入效率高,删除和插入不会影响元素位置;

    List:和数组类似,List可以动态增长,查找元素效率高,删除和插入元素效率低,因为会引起其它元素位置变化。

    ④、Map适合存储键值对数据。

    ⑤、多线程同步问题:

    HashSet、TreeSet线程不同步;

    ArrayList、LinkedList线程不同步;

    Vector线程同步;

    HashMap线程不同步;

    Hashtable线程同步。

    2、ArrayList与LinkedList:

    ①、优点:

    ArrayList:基于动态数组的数据结构,地址连续,一旦存储好,查询效率高;

    LinkedList:基于链表的数据结构,地址任意,增删操作效率高。

    ②、缺点:

    ArrayList:地址连续,增删需要移动数据效率低;

    LinkedList:地址任意,要移动指针,查询效率低。

    ③、适用场景:

    ArrayList:适用于对数据多次查询和访问时;

    LinkedList:适用于对数据需要多次增删操作时。

    3、ArrayList与Vector:

    ①、底层都是数组,多线程安全问题不同:

    ArrayList:线程不同步,效率高;

    Vector:线程同步,多线程访问不会产生不确定结果,执行效率低。

    ②、使用场景:

    需要线程安全时使用Vector;

    如果不考虑线程安全因素时使用ArrayList。

    4、HashSet与TreeSet:

    ①、底层实现:

    HashSet:哈希表实现,数据无序,可以放null但只能存放一个,值不重复;

    TreeSet:二叉树实现,数据自动排序,不允许有null值。

    ②、使用场景:

    HashSet基于哈希算法实现,其性能优于TreeSet;

    一般不需要排序时都用HashSet;

    如果需要排序就要选择TreeSet。

    5、HashMap、TreeMap与Hashtable:

    ①、线程安全问题:

    HashMap、TreeMap线程不安全;

    Hashtable线程安全。

    ②、使用场景:

    HashMap适用于增删元素和定位元素;

    TreeMap适用于按自然顺序遍历键(key)。

    十、Struts2

    1、struts2的工作流程:

    ①、客户端初始化一个指向servlet容器的请求;

    ②、这个请求经过一系列过滤(Filter);

    ③、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

    ④、如果ActionMapper决定需要调用某个Action,FilterDispatcher就把请求的处理交给ActionProxy;

    ⑤、ActionProxy通过Configuration Manager(配置管理器)询问框架的配置文件,找到需要调用的Action类;

    ⑥、ActionProxy创建一个ActionInvocation(Action的调用者,在Action的执行过程中,负责Interceptor、Action、Result等一系列元素的调用)的实例;

    ⑦、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(intercepter)的调用;

    ⑧、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(也不完全是,也可能是一个Action链)一个需要被展示的jsp页面。

    2、struts2的优点:

    ①、struts2的应用可以不依赖与Servlet API和Struts API,struts2属于无侵入式设计,而struts1属于侵入式设计;

    ②、struts2提供了拦截器,利用拦截器可以进行AOP(面向切面编程)编程,实现如权限拦截等功能;

    ③、struts2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型;

    ④、struts2提供多种表现层技术;

    ⑤、struts2的输入校验可以对指定方法进行校验。

    ⑥、struts2框架更加简单的将jsp页面与Action进行融合;

    ⑦、struts2框架集成了很多MVC的常用功能,如:校验、国际化、拦截器等;

    ⑧、Action的代码充分与底层的Servlet解耦,不需要引入Servlet的相关对象。

    十一、Hibernate

    1、Hibernate简介:

    Hibernate是一个完全基于Java面向对象的ORM持久层框架,Hibernate完全对Java对象进行操作,使用Hibernate框架提供的API来进行数据库的操作,完全的ORM映射,能够把数据库中的表和java类中的所有信息进行映射。

    2、Hibernate的优点:

    ①、完全面向对象,对数据库的操作大部分都是通过对Java类对象的操作来实现的,看不到SQL,看不到底层的JDBC;

    ②、ORM(对象关系映射)映射,实现了数据库与Java类之间的映射,更大的支持面向对象,让程序对对象的操作映射到了数据库的层面;

    ③、支持跨数据库平台,方便数据库的迁移;

    ④、关系映射能够满足很多业务场景(一对一、一对多、多对多等);

    ⑤、支持一些高级功能,包括一级缓存、二级缓存、延迟加载等。

    3、Hibernate的缺点:

    ①、数据量大时会影响Hibernate的性能,做数据量大的项目比较吃力;

    ②、SQL相关的程序不可控,无法直接的对SQL进行优化,都需要通过Hibernate来生成SQL。

    4、Hibernate的主键生成策略:

    ①、Increment(Hibernate生成):

    说明由Hibernate来生成主键,Hibernate会在插入数据之前下一条SQL语句(select  max(主键列名) from 表名)来查询表中的最大主键,将其加1作为要插入数据的主键,并且set给对象。

    ②、Identity(数据库生成):

    主键由数据库生成,如果数据库没有生成就会报错,一般情况会将主键设为自增。

    ③、UUID(Hibernate生成):

    Hibernate生成一个128-bit的字符串作为标识,保证每次生成都是唯一的。

    ④、Assigned(程序员编写):

    程序员在save之前对对象的id进行赋值。

    5、Hibernate的工作流程:

    ①、读取并解析配置文件;

    ②、读取并解析映射文件,创建SessionFactory;

    ③、打开Session;

    ④、创建事务Transation;

    ⑤、持久化操作;

    ⑥、提交事务;

    ⑦、关闭Session;

    ⑧、关闭SessionFactory。

    6、Hibernate中Bean的三种状态:

    ①、瞬时态:new出来或者被实例化时,在Java的内存中,但还没有与Hibernate进行对象的关联,没有进入Session缓存,此时的对象必须经过Session的方法才能进入缓存变成持久状态;

    ②、持久态:通过Hibernate从数据库里取出来的数据都是持久态,对象发生变化之后,直接提交事务就能同步到数据库,进而变成游离态;

    ③、游离态:Hibernate将事务提交,对象通过持久态变成游离态,完成与数据库的同步。

    十二、Spring

    1、Spring简介:

    Spring是轻量级的JavaEE框架,集成了Java企业级开发当中大部分的功能与组件,同时可以集成很多第三方框架。

    2、Spring概要:

    、控制反转(IOC):

    传统方式对象的实例化由程序来控制,IOC指的就是将控制权反转,不由程序来控制实例化对象,而由IOC容器来做,就是由IOC容器来统一管理对象的实例化。

    ②、依赖注入(DI):

    DI是将依赖关系放入IOC容器中,由容器来管理依赖,我们通过容器只需要拿到实例即可。

    ③、解耦:

    在代码中可以充分的降低类与类之间的耦合度,这种耦合的关系交给容器来处理。

    、面向切面编程(AOP):

    把相同的功能抽取出来共同处理。

  • 相关阅读:
    fatal error C1902: 程序数据库管理器不匹配;请检查安装 (zz)
    c++ std string reserve 测试
    2018年长沙理工大学第十三届程序设计竞赛
    2018年东北农业大学春季校赛
    从本质看海明码——海明码的由来
    CodeForces475
    一维背包问题
    2018年长沙理工大学第十三届程序设计竞赛 箱庭的股市
    高精度加法模板
    for,while,do while
  • 原文地址:https://www.cnblogs.com/efforts-will-be-lucky/p/7063567.html
Copyright © 2011-2022 走看看