zoukankan      html  css  js  c++  java
  • 每日一记--索引/过滤器

    打卡的时间不一定要在晚上,应该要学会灵活应对。

    然后由于每天脑袋中会冒出许多其他的问题,所以也打算记下来,免得下次忘记又得去查看资料。

    1、主键索引与唯一索引的区别?

    一直以来都不知道主键索引与唯一索引是什么,觉得概念很模糊,所以觉得对其进行了解。

    因为只对mysql比较熟悉,所以只能结合mysql进行说明。

    首先我觉得对于这个问题,应该先知道在mysql中主键索引和唯一索引是什么,怎么书写?

    主键索引还称为聚集索引(primary key),唯一索引(unique key)

    1  create table user4 (id int auto_increment primary key,name varchar(10) unique key, address varchar(20) unique key) character set utf8;
    View Code

    那么之间的区别有哪些呢?

    ①一个表中的主键只能有一个,可以有多个唯一索引。

    ②主键不允许为空值,唯一索引可以为空值。

    2、全文索引

     全文索引是什么呢?

    首先全文索引在mysql中的书写为:fulltext key;

    全文索引的作用是什么呢?

    一般的数据库搜索都是用的SQL的 like 语句,like 语句是不能利用索引的,每次查询都是从第一条遍历至最后一条,查询效率极其低下。一般数据超过10万或者在线人数过多,like查询都会导致数据库崩溃。这也就是为什么很多程序都只提供标题搜索的原因了,因为如果搜索内容,那就更慢了,几万数据就跑不动了。

    Mysql 全文索引是专门为了解决模糊查询提供的,可以对整篇文章预先按照词进行索引,搜索效率高,能够支持百万级的数据检索。

    从 Mysql 4.0 开始就支持全文索引功能,但是 Mysql 默认的最小索引长度是 4。如果是英文默认值是比较合理的,但是中文绝大部分词都是2个字符,这就导致小于4个字的词都不能被索引,全文索引功能就形同虚设了。国内的空间商大部分可能并没有注意到这个问题,没有修改 Mysql 的默认设置。

    如果您使用的是自己的服务器,请马上进行设置,不要浪费了这个功能。
    如果您使用的是虚拟主机,请马上联系空间商修改配置。首先,Mysql 的这个默认值对于中文来说就是一个错误的设置,修改设置等于纠正了错误。其次,这个配置修改很简单,也就是几分钟的事情,而且搜索效率提高也降低了空间商数据库宕掉的几率。如果你把本文发给空间商,我相信绝大部分都会愿意改的。

    设置方法:
    请联系服务器管理员修改my.ini ,在 [mysqld] 后面加入一行“ft_min_word_len=1”,然后重启Mysql,再登录网站后台(模块管理->全站搜索)重建全文索引,否则将无法使用全站搜索功能。

    详细参考地址:https://yq.aliyun.com/ziliao/59989

    3、过滤器

    过滤器一般发生的情况时在网页请求时,需要对某些特定的东西进行过滤。比如:权限管理、编码设置、session检查等等。

    那么我们应该怎么针对网页的请求进行过滤呢?

      ①创建一个class实现filter接口,重写init()、doFilter()、destroy()方法,一般对于请求的过滤重点是doFilter方法。

      ②方法写好了,那么应该需要在开始请求的时候让服务器找到这个类,所以需要配置web.xml文件。

    实际操作是怎样的呢?

      ①创建类MyFilter实现Filter接口

     1 package com.bjsxt.filter;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.Filter;
     6 import javax.servlet.FilterChain;
     7 import javax.servlet.FilterConfig;
     8 import javax.servlet.ServletException;
     9 import javax.servlet.ServletRequest;
    10 import javax.servlet.ServletResponse;
    11 
    12 public class MyFilter implements Filter{
    13 
    14     public void destroy() {
    15         // TODO Auto-generated method stub
    16         System.out.println("我被销毁了");
    17     }
    18 
    19     public void doFilter(ServletRequest arg0, ServletResponse arg1,
    20             FilterChain arg2) throws IOException, ServletException {
    21         // TODO Auto-generated method stub
    22         System.out.println("我被过滤了");
    23         arg2.doFilter(arg0, arg1);
    24         System.out.println("我被过滤了12");
    25     }
    26 
    27     public void init(FilterConfig arg0) throws ServletException {
    28         // TODO Auto-generated method stub
    29         System.out.println("我被初始化了");
    30     }
    31     
    32 }
    View Code

       ②配置web.xml,一般在WEB-INF文件下

    1         <filter>
    2         <filter-name>myFilter</filter-name>
    3         <filter-class>com.bjsxt.filter.MyFilter</filter-class>
    4     </filter>
    5     <filter-mapping>
    6         <filter-name>myFilter</filter-name>
    7         <url-pattern>/*</url-pattern>
    8     </filter-mapping>
    9   <servlet>        
    View Code

     

    这样在请求的时候全对所有的请求进行过滤。

    其中:

        <url-pattern>参数有几个情况:

          /* :对所有请求过滤。

            *.do :对带.do的请求进行过滤。

           /st :对莫一模块下的请求进行过滤。

    好了 !今天上午的总结!!!不建议每天多进行几次的总结笔记~~~

  • 相关阅读:
    HTML5新增
    【目录】洛谷|CODEVS题解汇总
    【搜索】kkksc03考前临时抱佛脚
    【模拟】压缩技术
    【模拟】爱与愁的一千个伤心的理由
    【搜索】棋盘
    【模拟】图书管理员
    【递归】对称二叉树
    【题单】挖坑大行动
    【模拟】弹珠游戏
  • 原文地址:https://www.cnblogs.com/ZNwithLC/p/9504882.html
Copyright © 2011-2022 走看看