Filter

Nginx filter分析 在CONTENT阶段产生的数据被发往客户端(系统发送缓存区)之前,会先经过过滤。Nginx的filter的工作方式和做鱼有些类似。比如一条鱼,可以把它切成鱼片(也可以切块,切泥),然后通过不同的烹饪方法就得到水煮鱼或者日式生鱼片或者废了等等。同样是一条鱼,加工得到的结果却截然不同,就是因为中间不同的工序赋予了这条鱼各种属性。Nginx的filter也是一个道理,前面的Handler好比这条鱼,fi 阅读详情

一、Filter过滤器

1、Filter什么是过滤器

1) Filter过滤器是JavaWeb的三大组件之一;三大组件分别是Servlet程序、Listener监听器、Filter过滤器

2) Filter过滤器是JavaEE的规范,也就是接口

3) Filter过滤器作用是:拦截请求、过滤响应。

拦截请求常见的应用场景有:
	① 权限检查
	② 日记操作
	③ 事务管理
		... ...等

2、Filter操作

要求:在web工程下,有一个admin目录,这个admin目录下的所有资源(html页面、jpg图片、jsp文件等)都必须是用户登陆之后才允许访问。

用户登录才允许访问的实现思路 ①:

根据之前学过的内容,可以知道,用户登录之后都会把用户登录的信息保存到Session域中。所以要检查用户是否登录,可以判断Session中是否包含有用户登录的信息即可!!!

        存在局限性,只能在jsp页面去写,html页面或者图片不能实现。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
        <%
            Object user = session.getAttribute("user");
            //如果等于null,说明还没登录
            if (user==null){
                request.getRequestDispatcher("/login.jsp").forward(request,response);
                return;
            }
        %>
        b.jsp文件
</body>
</html>

用户登录才允许访问的实现思路 ②:

采用Filter过滤器可以来实现

过滤器的功能实现如下所示:
在这里插入图片描述

类似于Servlet

public class AdminFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    // doFilter方法,专门用于拦截请求(可以做权限检查),过滤响应
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;

        HttpSession session = httpServletRequest.getSession();

        Object user = session.getAttribute("user");
        //如果等于null,说明还没登录
        if (user==null){
            servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse);
            return;
        }else {
            //让程序继续往下访问用户的目标资源
            filterChain.doFilter(servletRequest,servletResponse);
        }
    }

    @Override
    public void destroy() {

    }
}

在web.xml文件中的配置如下: - - 其中 /admin/* 表示拦截此路径下的所有。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--同Servlet类似-->

    <!--filter标签用于配置一个Filter过滤器-->
    <filter>
        <!--给filter起一个别名-->
        <filter-name>AdminFilter</filter-name>
        <!--配置filter的全类名-->
        <filter-class>filter.AdminFilter</filter-class>
    </filter>

    <!--filter-mapping配置Filter过滤器的拦截路径-->
    <filter-mapping>
        <!--filter-name表示当前的拦截路径给哪个filter使用-->
        <filter-name>AdminFilter</filter-name>
        <!--url-pattern配置拦截路径
            /           表示请求地址为:http://ip:port/工程路径/            映射到IDEA的web目录
            /admin/*    表示请求地址为:http://ip:port/工程路径/admin/*     拦截全部
        -->
        <url-pattern>/admin/*</url-pattern>
    </filter-mapping>

</web-app>

3、完整的用户登录

AdminFilter实现类中doFilter方法拦截请求如下: /admin/* 拦截此路径下的所有

public class AdminFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    // doFilter方法,专门用于拦截请求(可以做权限检查),过滤响应
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;

        HttpSession session = httpServletRequest.getSession();

        Object user = session.getAttribute("user");
        //如果等于null,说明还没登录
        if (user==null){
            servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse);
            return;
        }else {
            //让程序继续往下访问用户的目标资源
            filterChain.doFilter(servletRequest,servletResponse);
        }
    }

    @Override
    public void destroy() {

    }
}

login.jsp代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    这是login登录界面<br/>
    <form action="http://localhost:8080/15_filter/loginServlet" method="get">
        用户名:<input type="txet" name="username"><br/>
        密  码:<input type="password" name="password"><br/>
        <input type="submit" name="提交">
    </form>
</body>
</html>

登录的LoginServlet代码如下:

public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        response.setContentType("text/html;charset=UTF-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        if ("wzg168".equals(username) && "123456".equals(password)){
            request.getSession().setAttribute("user",username);
            response.getWriter().write("登录 成功!");
        }else {
            request.getRequestDispatcher("/login.jsp").forward(request,response);
        }
    }
}

解释如下:

由于拦截了admin路径下的所有,因此在不登录的前提下是不可以访问路径下的文件的。

访问login,jsp页面,进行登录请求,跳转到LoginServlet程序,获取请求参数,并判断用户名和密码是否与要求的一致,不一致重新输入,一致就登录成功,并赋值给Session。

当用户登录之后就可以访问之前被拦截的文件了,例如:http://localhost:8080/15_filter/admin/a.html		http://localhost:8080/15_filter/admin/b.jsp

4、Filter的生命周期

Filter的生命周期包含几个方法:

① 构造器方法
② init初始化方法

第①、②步,在web工程启动的时候执行(Filter已经创建)

③ doFilter过滤方法

第③步,每次拦截到请求,就会执行

④ destroy销毁

第④步,停止web工程的时候,就会执行(停止web工程,也会销毁Filter过滤器)	
public class AdminFilter implements Filter {

    public AdminFilter() {
        System.out.println("1、Filter构造器方法AdminFilter()");
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("2、Filter的init(FilterConfig filterConfig)初始化");
    }

    // doFilter方法,专门用于拦截请求(可以做权限检查),过滤响应
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("3、Filter的doFilter()过滤方法");

        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;

        HttpSession session = httpServletRequest.getSession();

        Object user = session.getAttribute("user");
        //如果等于null,说明还没登录
        if (user==null){
            servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse);
            return;
        }else {
            //让程序继续往下访问用户的目标资源
            filterChain.doFilter(servletRequest,servletResponse);
        }
    }

    @Override
    public void destroy() {
        System.out.println("4、Filter的destroy()销毁方法");
    }
}

5、FilterConfig类

FilterConfig类见名知义,它是Filter过滤器的配置文件类;Tomcat每次创建Filter的时候,也会同时创建一个FilterConfig类,这里包含了Filter配置文件的配置信息。

FilterConfig类的作用是获取filter过滤器的配置内容:

① 获取Filter的名称filter-name的内容
② 获取Filter在web.xml中配置的init-param初始化参数
③ 获取ServletContext对象

web.xml文件加入init初始化参数配置如下:

	<!--配置初始化参数-->
        <init-param>
            <param-name>username</param-name>
            <param-value>root</param-value>
        </init-param>

        <init-param>
            <param-name>url</param-name>
            <param-value>jdbc:mysql://localhost3306/test</param-value>
        </init-param>

下面再init方法中进行演示:

public class AdminFilter implements Filter {

    public AdminFilter() {
        System.out.println("1、Filter构造器方法AdminFilter()");
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("2、Filter的init(FilterConfig filterConfig)初始化");
        // 1、获取Filter的名称filter-name的内容
        System.out.println("filter-name的值是:"+filterConfig.getFilterName());
        // 2、获取在web.xml中配置的init-param初始化参数
        System.out.println("初始化参数username的值是:"+filterConfig.getInitParameter("username"));
        System.out.println("初始化参数url的值是:"+filterConfig.getInitParameter("url"));
        // 3、获取ServletContext对象
        System.out.println(filterConfig.getServletContext());
    }

    // doFilter方法,专门用于拦截请求(可以做权限检查),过滤响应
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("3、Filter的doFilter()过滤方法");

        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;

        HttpSession session = httpServletRequest.getSession();

        Object user = session.getAttribute("user");
        //如果等于null,说明还没登录
        if (user==null){
            servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse);
            return;
        }else {
            //让程序继续往下访问用户的目标资源
            filterChain.doFilter(servletRequest,servletResponse);
        }
    }

    @Override
    public void destroy() {
        System.out.println("4、Filter的destroy()销毁方法");
    }
}

6、FilterChain过滤器链

Filter 过滤器
Chain 链,链条
FilterChain 就是过滤器链(多个过滤器如何一起工作)

多个Filter过滤器的底层工作原理:
在这里插入图片描述

重点:

1) FilterChain.doFilter()方法的作用

① 执行下一个Filter过滤器(如果有其他Filter的前提下)
② 执行目标资源(已经没有Filter的前提下)

2) 在多个Filter过滤器执行的时候,它们的执行优先顺序是由它们在web.xml中从上到下配置的顺序决定!!!

3) 多个Filter过滤器执行的特点:

① 所有filter和目标资源默认都执行在同一个线程中
② 多个Filter共同执行的时候,它们都使用同一个Request对象

Filter1代码如下:

public class Filter1 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        System.out.println("Filter1 前置代码");

        filterChain.doFilter(servletRequest,servletResponse);

        System.out.println("Filter1 后置代码");
    }

    @Override
    public void destroy() {

    }
}

Filter2代码如下:

public class Filter1 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        System.out.println("Filter2 前置代码");

        filterChain.doFilter(servletRequest,servletResponse);

        System.out.println("Filter2 后置代码");
    }

    @Override
    public void destroy() {

    }
}

target.jsp代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
        <%
            System.out.println("target.jsp页面执行了");
        %>
</body>
</html>

web.xml配置文件

<filter>
        <filter-name>Filter1</filter-name>
        <filter-class>filter.Filter1</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>Filter1</filter-name>
        <url-pattern>/target.jsp</url-pattern>
    </filter-mapping>

    <filter>
        <filter-name>Filter2</filter-name>
        <filter-class>filter.Filter2</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>Filter2</filter-name>
        <url-pattern>/target.jsp</url-pattern>
    </filter-mapping>

执行http://localhost:8080/15_filter/target.jsp显示结果如下:

Filter1 前置代码
Filter2 前置代码
target.jsp页面执行了
Filter2 后置代码
Filter1 后置代码

注:

情况1:如果过滤器2的filterChain.doFilter()及其后置的代码不存在
	结果如下:
		Filter1 前置代码
		Filter2 前置代码
		Filter1 后置代码
情况2:如果过滤器1的filterChain.doFilter()及其后置的代码不存在
	结果如下:
		Filter1 前置代码

7、Filter的拦截路径

在这里插入图片描述


二、ThreadLocal的使用

1、TheadLocal的介绍

该类提供了线程局部(thread-local)变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其get或set方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal实例通常是类中的private static字段,它们希望将状态与某一个线程(例如:用户ID或事务ID)相关联。

ThreadLocal可以给当前线程关联一个数据(可以是普通变量,可以是对象,也可以是数组、集合)。

ThreadLocal的作用:

可以解决多线程的数据安全问题

ThreadLocal的特点:

① ThreadLocal可以为当前线程关联一个数据(它可以像Map一样存取数据,key为当前线程)	

② 每一个ThreadLocal对象,只能为当前线程关联一个数据,如果要为当前线程关联多个数据,就需要使用多个ThreadLocal对象实例

③ 每个ThreadLocal对象实例定义的时候,一般都是static类型

④ ThreadLocal中保存数据,在线程销毁后,会由JVM虚拟自动释放。

测试OrderDao类代码如下:

public class OrderDao {

    public void SaveOrder(){
        String name = Thread.currentThread().getName();
        //System.out.println("saveOrder当前线程["+name+"]中保存的数据是:"+ThreadLocalTest.data.get(name));
        System.out.println("saveOrder当前线程["+name+"]中保存的数据是:"+ThreadLocalTest.threadLocal.get());
    }

}

测试OrderService类代码如下:

public class OrderService {

    public void createOrder(){
        String name = Thread.currentThread().getName();
        //System.out.println("OrderService当前线程["+name+"]中保存的数据是:"+ThreadLocalTest.data.get(name));
        System.out.println("OrderService当前线程["+name+"]中保存的数据是:"+ThreadLocalTest.threadLocal.get());
        new OrderDao().SaveOrder();
    }
}

ThreadLocalTest类代码如下:(与普通Map赋键值进行对比)

public class ThreadLocalTest {

    // public static Map<String,Object> data=new Hashtable<>();
    public static ThreadLocal<Object> threadLocal=new ThreadLocal<>();
    private static Random random =new Random();

    public static  class Task implements Runnable{
        @Override
        public void run(){
            //在Run方法中,随机生成一个变量(线程要关联的数据),然后以当前线程名为key保存到map中
            Integer i = random.nextInt(1000);
            //获取当前线程名
            String name = Thread.currentThread().getName();
            System.out.println("线程[" + name + "]生成的随机数是:" + i);

            //data.put(name,i);
            threadLocal.set(i);

            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            new OrderService().createOrder();

            //在Run方法结束之前,以当前线程名获取出数据并打印,查看是否可以取出操作
            //Object o = data.get(name);
            Object o = threadLocal.get();
            System.out.println("在线程["+name+"]快结束时取出关联的数据是:"+ o);
        }
    }

    public static void main(String[] args) {
        for (int i=0;i<3;i++){
            new Thread(new Task()).start();
        }
    }
}

2、使用Filter和TheadLocal组合管理事务

1)使用ThreadLocal来确保所有dao操作都在同一个Connection连接对象中完成。

原理分析图:
在这里插入图片描述

2)使用Filter过滤器统一给所有的Service方法都加上try-catch。来进行实现的管理

原理分析图:
在这里插入图片描述
3)将所有异常都统一交给Tomcat,让Tomcat展示友好的错误信息页面

在web.xml中可以通过错误页面配置来进行管理。

	<!--error-page标签配置,服务器出错之后,自动跳转的页面-->
    <error-page>
        <!--error-code是错误类型-->
        <error-code>500</error-code>
        <!--location标签表示,要跳转去的页面路径-->
        <location>/pages/error/error500.jsp</location>
    </error-page>
bloom filter与Cuckoo Filter bloom filter与Cuckoo Filter 1.  bloom filter      算法是: 创建一个m位BitSet,先将所有位初始化为0,然后选择k个不同的哈希函数。第i个哈希函数对字符串str哈希的结果记为h(i,str),且h(i,str)的范围是0到m-1 。 (1) 加入字符串过程  下面是每个字符串处理的过程,首先是将字符串str“记录” 阅读详情

相关推荐

Elasticsearch Filter 查询详解

本文介绍了Elasticsearch中Filter查询的核心概念与应用。Filter查询不计算相关性分数且支持缓存,适用于精确匹配、范围查询等场景,性能优于Query查询。文章详细讲解了两种主要用法:post_filter和bool中的filter子句,并针对文本字段精确匹配(如大小写问题)和null值处理等常见问题提供了解决方案。最后对比了Filter与Query的适用场景,建议精确匹配使用Filter,全文搜索使用Query,并合理利用Filter缓存提升性能。通过正确使用Filter查询,可以显著优化

ywl470812087的博客 11万+

matplotlib 清除画布,图,ax.cla()

记录。 在同一个图里,清除图,可以用ax.cla(),具体用法还没研究。

reyyy的博客 4175

endnote让参考文献整整齐齐

这篇文章主要是针对利用 endnote 插入参考文献时,参考文献第一行和后面的行对不齐的问题 下面是示意图 可以看到我们的参考文献对的整整齐齐的,比较好看。 下面介绍具体步骤 1、打开endnote。编辑我们使用的参考文献样式。我这儿是叫 ZZ_MODIFIED_GEEBINF 复制 2、找到布局,每个参考开头,将光标放在在参考开头后面,点插入字段,制表符 3、右下角悬挂式输出哪儿选择全部段...

雾隐雾现的至渝博客 5万+

matplotlib中cla() clf() close()用途

cla() # Clear axis即清除当前图形中的当前活动轴。其他轴不受影响。 clf() # Clear figure清除所有轴,但是窗口打开,这样它可以被重复使用。 close() # Close a figure window...

o0haidee0o的博客 4万+

YOLOv13改进策略【Neck】| CVPR2024 LGAG:大核分组注意力门模块,3×3分组卷积与注意力协同的特征精准融合

本文记录的是利用LGAG 模块改进 YOLOv13 的颈部融合部分。(Large-kernel Grouped Attention Gate)通过3×3分组卷积与注意力机制结合,引导解码器处理特征与跳接特征的精准融合。本文利用模块,通过3×3分组卷积扩大感受野以捕捉更广泛局部空间上下文,同时结合注意力机制生成自适应注意力系数,对YOLOv13中关键目标特征赋予高激活值、抑制冗余背景特征,在特征融合阶段实现全局语义与局部细节的高效结合,减少计算成本的同时提升特征表达能力,增强模型对复杂场景下目标的检测精度与效

Limiiiing的博客 103

2025年软件测试职业院校技能大赛—ERP管理平台-基础信息管理商品管理测试用例

竞赛对接软件测试相关标准,以“ERP管理平台” 为被测系统,围绕软件测试领域的主流技术及工具,考查选手面 对实际问题的综合分析能力,对测试文档、测试用例的设计能力, 对单元测试、自动化测试、性能测试、接口测试等测试工具及方 法的掌握程度,检验选手团队协作能力、组织规划能力、方法运用能力等。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 320

【Power BI 基础】Filter+All 以及Calculate+filter 方法的使用

目的:得到每一年的Gowrth Rate! =calculate(计算式,条件1,条件2,。。。,条件n) 首先GrowthRate:=CY Sales/PY Sales-1, (今年的sales/去年的Sales-1),今年的Sales很简单,我们做Measure1,SalesValue:=sum(data[sales]),轻松完成!(就是上边的图了) 然后最大的挑战就来了,去年的Sale...

Babyfatliang的博客 3万+

基于STM32L4XX、HAL库的RTL8201F 以太网收发器(PHY)驱动程序设计

define PHY_RESET_DELAY 1000 // PHY复位延迟(ms)#define PHY_AUTONEGO_DELAY 3000 // 自动协商延迟(ms)/* 检查PHY ID (RTL8201F的ID为0x001CC816) *//* 系统时钟配置,确保ETH有50MHz时钟 *//* 初始化CPU, AHB和APB总线时钟 */

zhusl6688的博客 803

ospf章关于filter-policy和traffic-filter区别

混淆 “路由过滤” 和 “流量过滤”:配置了过滤某路由,不代表该网段的数据包无法转发(可能通过其他路由或静态路由可达);错误应用方向:如将扩展 ACL 通过应用在出口,会导致无效流量占用设备内部带宽(建议inbound应用在入口)。当需要控制路由表中的条目(如 “不学习某网段的路由”)时,用;当需要控制实际通过接口的数据包(如 “禁止某网段的电脑上网”)时,用。二者独立工作,可配合使用(例如:先用过滤冗余路由,再用控制接口流量),共同实现网络的路由控制和安全防护。在思科设备上。

euiajjjj的博客 1329

水很深的深度学习(四): 卷积神经网络CNN

深度学习-CNN,卷积神经网络的概念 上世纪60年代,Hubel等人通过对猫视觉皮层细胞的研究,提出了感受野这个概念,到80年代,Fukushima在感受野概念的基础之上提出了神经认知机的概念,可以看作是卷积神经网络的第一个实现网络,神经认知机将一个视觉模式分解成许多子模式(特征),然后进入分层递阶式相连的特征平面进行处理

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 3620

HandwrittenMathFormulaRecognition:基于YOLOv8的手写数学公式识别系统

输入:包含手写数学公式的图像(拍摄的板书、作业纸等)输出:对应的数字文本形式的数学公式(如LaTeX格式或文本表达式)标准的手写数学表达式数据集,包含在线轨迹及图片,广泛用于公式识别研究。包含近10万对公式图片及对应的LaTeX标注,适合训练公式识别模型。MathBrush公开手写数学公式图像数据集,含多种书写风格。手写数字与符号数据集(MNIST及其扩展)用于基础数学符号的训练。

YOLO 283

oracle全文索引之FILTER

介绍完Oracle全文索引的DATASTORE属性,继续介绍Oracle的FILTER属性。Oracle全文索引的FILTER属性主要是针对具有一定格式的文档,Oracle根据FILTER的设定来过滤那些不属于文章内容的部分。FILTER属性包含的属性有:CHARSET_FILTER、INSO_FILTER、NULL_FILTER、USER_FILTER、PROCEDURE_F

乐敏@技术驿站 1984

全志F1C100S/F1C200S学习笔记(1)——基础简介及资料

资料: 荔枝派资料下载站 荔枝派github 荔枝派中文论坛 荔枝派DIY-github资料 荔枝派Nano 全流程指南 芒果派 坑网

丨晋丨 1万+

注册DirectShow Filter信息

编写自己的DirectShow Filter,除了编写实现功能的代码之外,要使自己的DLL称为一个Filter,还有一个重要的工作需要做,那就是注册信息。DirectShow Filter有两种信息注册,一种是包含Filter的DLL作为COM组件的注册信息,一种是注册Filter种类信息。当应用程序通过CoCreateInstane创建Filter的时候,通过第一中注册信息定位DLL。第

馋嘴猪没胃口 2500

【数据集】基于ubESTARFM法的100m 地温LST数据集(澳大利亚)

【数据集】基于ubESTARFM法的100m 地温LST数据集(澳大利亚)

WW、forever的博客 264

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

php filter功能,PHP filter用法

第一种、PHP filter判断一个变量的内容是否符合要求使用函数filter_var,第一个参数是要判断的变量。第二个参数是判断的要求,FILTER_VALIDATE_EMAIL表示判断是否符合email格式。如果变量是类似’boy@163.com’的数据,系统就会完整的输出‘boy@163.com’。如果是错误的格式,比如’boy’,就会输出false。如果没有填写表单中的email字段,系统...

weixin_34129222的博客 411

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

filter函数的用法_Power BI学习-CALCULATE,CALCULATETABLE和FILTER的区别

CALCULATE和CALCULATETABLE其实一样,区别在于返回结果不同,CALCULATE返回一个值,CALCULATETABLE返回一个表,是一个表函数,用于建立虚拟表,在这点上又跟FILTER类似,今天重点也是分享CALCULATETABLE和FILTER的区别。首先先认识一下CALCULATETABLE:语法:CALCULATETABLE(表,过滤条件1,过滤条件2...)参数:第一...

weixin_39563132的博客 2957

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

filter函数的用法_函数周期表丨筛选丨表丨FILTER

FILTER函数FILTER函数属于“筛选”类函数,隶属于“表”函数,其使用频率可以算得上最高的几个函数之一。用途:用来筛选表或者作为计算的筛选条件。语法DAX=FILTER(<表>,<条件>)参数表:可以是固定的表,也可以是表的表达式。条件:过滤条件。返回结果由符合筛选条件的行组成的表。例子模拟数据:例子1:FILTER例子1 =FILTER ( '例子', M...

weixin_39839968的博客 3615

filter_input filter_input_array php筛选器 php过滤器

filter_input 获取一个输入变量,并对它进行过滤 filter_input_array 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤 语法 filter_input ( int $type , string $variable_name [, int $filter = FILTER_DEFAULT [, mixed $options ]] ) : mixed type INPUT_GET, INPUT_POST, INPUT_COOKIE, ...

Never Give Up的专栏 1万+

Dubbo之Filter链原理

本文来说下Dubbo的Filter链原理 文章目录概述 概述

wh柒八九的博客 1781

oracle 去掉 filter,oracle全文索引之FILTER_1_NULL_FILTER

介绍完Oracle全文索引的DATASTORE属性,继续介绍Oracle的FILTER属性。Oracle全文索引的FILTER属性主要是针对具有一定格式的文档,Oracle根据FILTER的设定来过滤那些不属于文章内容的部分。FILTER属性包含的属性有:CHARSET_FILTER、INSO_FILTER、NULL_FILTER、USER_FILTER、PROCEDURE_FILTER几种。[@...

weixin_31755877的博客 450

Lucene6去掉了Filter但是可以用BooleanQuery实现Filter查询

Lucene在6.0版本之后彻底废除了Filter的使用,采用BooleanQuery来实现Filter的功能,核心代码如下: TermQuery termQuery = new TermQuery(new Term("content","长")); TermQuery termQuery1 = new TermQuery(new Term("content...

Zoe_Liu2016的博客 293

Oracle filter 函数,oracle执行计划中的filter

filter这个操作在《Cost Based Oracle Fundamental》此书第九章有介绍。filter的操作是对外表的每一行,都要对内表执行一次全表扫描,所以很多时候提到filter都会感到可怕。他其实很像我们熟悉的neested loop,但它的独特之处在于会维护一个hash table。其实filter 的性能实际上跟列值distinct数有关,oracle在执行的时候实际上做了很...

weixin_39788969的博客 1187

NDIS Filter开发-Filter启动、暂停和绕过

NDIS Filter驱动的绕过模式

王马的博客 1493

PHP扩展之Filter详解

简介   Filter,它的作用就和他的名字一样——过滤。Filter内置了多个常用过滤器,根据过滤器功能的不同,可以分成净化过滤器(Sanitization)和验证过滤器(Validation)两种。两种的差别在于,净化过滤器会把被过滤的变量中不符合规则的东西清除掉,返回清除后的内容;而验证过滤器只是验证的功能,并不会去改变变量的值,如果符合过滤器的规则,则返回变量内容,否则返回false;

BruceMin的专栏 964

PHP Filter函数过滤参数

经常我们需要判断从客户端过来信息的正确性,大多数都是使用正则表达式判断。 但PHP本身已经给我们提供一些判断不同类型数据的方法,而使用PHP的过滤函数会事半功倍并使我们的代码更加地优美。 PHP Filter 简介 PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤。 ...

cihuihuang9657的博客 551
上一篇: 表单重复提交问题
下一篇: JSON、AJAX、i18n
AX_Chu
博客等级 码龄6年 13粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值