Filter(过滤器)常见应用

2023-11-15

javaweb学习总结(四十六)——Filter(过滤器)常见应用

一、统一全站字符编码

  通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题

 1 package me.gacl.web.filter;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.Filter;
 5 import javax.servlet.FilterChain;
 6 import javax.servlet.FilterConfig;
 7 import javax.servlet.ServletException;
 8 import javax.servlet.ServletRequest;
 9 import javax.servlet.ServletResponse;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletRequestWrapper;
12 import javax.servlet.http.HttpServletResponse;
13 
14 /**
15 * @ClassName: CharacterEncodingFilter
16 * @Description: 此过滤器用来解决全站中文乱码问题
17 * @author: 孤傲苍狼
18 * @date: 2014-8-31 下午11:09:37
19 *
20 */ 
21 public class CharacterEncodingFilter implements Filter {
22 
23     private FilterConfig filterConfig = null;
24     //设置默认的字符编码
25     private String defaultCharset = "UTF-8";
26 
27     public void doFilter(ServletRequest req, ServletResponse resp,
28             FilterChain chain) throws IOException, ServletException {
29         
30         HttpServletRequest request = (HttpServletRequest) req;
31         HttpServletResponse response = (HttpServletResponse) resp;
32         String charset = filterConfig.getInitParameter("charset");
33         if(charset==null){
34             charset = defaultCharset;
35         }
36         request.setCharacterEncoding(charset);
37         response.setCharacterEncoding(charset);
38         response.setContentType("text/html;charset="+charset);
39         
40         MyCharacterEncodingRequest requestWrapper = new MyCharacterEncodingRequest(request);
41         chain.doFilter(requestWrapper, response);
42     }
43 
44     public void init(FilterConfig filterConfig) throws ServletException {
45         //得到过滤器的初始化配置信息
46         this.filterConfig = filterConfig;
47     }
48     
49     public void destroy() {
50 
51     }
52 }
53 
54 /*
55 1.实现与被增强对象相同的接口 
56 2、定义一个变量记住被增强对象
57 3、定义一个构造器,接收被增强对象
58 4、覆盖需要增强的方法
59 5、对于不想增强的方法,直接调用被增强对象(目标对象)的方法
60  */
61  
62 class MyCharacterEncodingRequest extends HttpServletRequestWrapper{
63     
64     private HttpServletRequest request;
65     public MyCharacterEncodingRequest(HttpServletRequest request) {
66         super(request);
67         this.request = request;
68     }
69     /* 重写getParameter方法
70      * @see javax.servlet.ServletRequestWrapper#getParameter(java.lang.String)
71      */
72     @Override
73     public String getParameter(String name) {
74         
75         try{
76             //获取参数的值
77             String value= this.request.getParameter(name);
78             if(value==null){
79                 return null;
80             }
81             //如果不是以get方式提交数据的,就直接返回获取到的值
82             if(!this.request.getMethod().equalsIgnoreCase("get")) {
83                 return value;
84             }else{
85                 //如果是以get方式提交数据的,就对获取到的值进行转码处理
86                 value = new String(value.getBytes("ISO8859-1"),this.request.getCharacterEncoding());
87                 return value;
88             }
89         }catch (Exception e) {
90             throw new RuntimeException(e);
91         }
92     }
93 }

  web.xml文件中的配置如下:

 1  <filter>
 2       <filter-name>CharacterEncodingFilter</filter-name>
 3       <filter-class>me.gacl.web.filter.CharacterEncodingFilter</filter-class>
 4       <init-param>
 5           <param-name>charset</param-name>
 6           <param-value>UTF-8</param-value>
 7       </init-param>
 8   </filter>
 9   
10   <filter-mapping>
11       <filter-name>CharacterEncodingFilter</filter-name>
12       <url-pattern>/*</url-pattern>
13   </filter-mapping>

二、禁止浏览器缓存所有动态页面

  有3 个HTTP 响应头字段都可以禁止浏览器缓存当前页面,它们在 Servlet 中的示例代码如下:

1 response.setDateHeader("Expires",-1);
2 response.setHeader("Cache-Control","no-cache");
3 response.setHeader("Pragma","no-cache"); 

  并不是所有的浏览器都能完全支持上面的三个响应头,因此最好是同时使用上面的三个响应头。

  • Expires数据头:值为GMT时间值,为-1指浏览器不要缓存页面
  • Cache-Control响应头有两个常用值:
  • no-cache指浏览器不要缓存当前页面。
  • max-age:xxx指浏览器缓存页面xxx秒。
 1 package me.gacl.web.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 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 
14 /**
15 * @ClassName: NoCacheFilter
16 * @Description: 禁止浏览器缓存所有动态页面
17 * @author: 孤傲苍狼
18 * @date: 2014-8-31 下午11:25:40
19 *
20 */ 
21 public class NoCacheFilter implements Filter {
22 
23 
24     public void doFilter(ServletRequest req, ServletResponse resp,
25             FilterChain chain) throws IOException, ServletException {
26         //把ServletRequest强转成HttpServletRequest
27         HttpServletRequest request = (HttpServletRequest) req;
28         //把ServletResponse强转成HttpServletResponse
29         HttpServletResponse response = (HttpServletResponse) resp;
30         //禁止浏览器缓存所有动态页面
31         response.setDateHeader("Expires", -1);
32         response.setHeader("Cache-Control", "no-cache");
33         response.setHeader("Pragma", "no-cache");
34         
35         chain.doFilter(request, response);
36     }
37 
38     public void init(FilterConfig filterConfig) throws ServletException {
39 
40     }
41     
42     public void destroy() {
43         
44     }
45 }

  web.xml文件中的配置如下:

 1   <filter>
 2       <filter-name>NoCacheFilter</filter-name>
 3       <filter-class>me.gacl.web.filter.NoCacheFilter</filter-class>
 4   </filter>
 5   
 6   <filter-mapping>
 7       <filter-name>NoCacheFilter</filter-name>
 8         <!--只拦截Jsp请求-->
 9       <servlet-name>*.jsp</servlet-name>
10   </filter-mapping>

三、控制浏览器缓存页面中的静态资源

  有些动态页面中引用了一些图片或css文件以修饰页面效果,这些图片和css文件经常是不变化的,所以为减轻服务器的压力,可以使用filter控制浏览器缓存这些文件,以提升服务器的性能。

 1 package me.gacl.web.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 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 
14 /**
15 * @ClassName: CacheFilter
16 * @Description: 控制缓存的filter
17 * @author: 孤傲苍狼
18 * @date: 2014-9-1 下午9:39:38
19 *
20 */ 
21 public class CacheFilter implements Filter {
22 
23     private FilterConfig filterConfig;
24 
25     public void doFilter(ServletRequest req, ServletResponse resp,
26             FilterChain chain) throws IOException, ServletException {
27     
28         HttpServletRequest request = (HttpServletRequest) req;
29         HttpServletResponse response = (HttpServletResponse) resp;
30         
31         //1.获取用户想访问的资源
32         String uri = request.getRequestURI(); 
33         
34         //2.得到用户想访问的资源的后缀名
35         String ext = uri.substring(uri.lastIndexOf(".")+1);
36         
37         //得到资源需要缓存的时间
38         String time = filterConfig.getInitParameter(ext);
39         if(time!=null){
40             long t = Long.parseLong(time)*3600*1000;
41             //设置缓存
42             response.setDateHeader("expires", System.currentTimeMillis() + t);
43         }
44         
45         chain.doFilter(request, response);
46 
47     }
48 
49     public void init(FilterConfig filterConfig) throws ServletException {
50         this.filterConfig = filterConfig;
51     }
52     
53     public void destroy() {
54         
55     }
56 }

  web.xml文件中的配置如下:

 1  <!-- 配置缓存过滤器 -->
 2    <filter>
 3       <filter-name>CacheFilter</filter-name>
 4       <filter-class>me.gacl.web.filter.CacheFilter</filter-class>
 5        <!-- 配置要缓存的web资源以及缓存时间,以小时为单位 -->
 6       <init-param>
 7           <param-name>css</param-name>
 8           <param-value>4</param-value>
 9       </init-param>
10       <init-param>
11           <param-name>jpg</param-name>
12           <param-value>1</param-value>
13       </init-param>
14       <init-param>
15           <param-name>js</param-name>
16           <param-value>4</param-value>
17       </init-param>
18       <init-param>
19           <param-name>png</param-name>
20           <param-value>4</param-value>
21       </init-param>
22   </filter>
23   <!-- 配置要缓存的web资源的后缀-->
24   <filter-mapping>
25       <filter-name>CacheFilter</filter-name>
26       <url-pattern>*.jpg</url-pattern>
27   </filter-mapping>
28   
29   <filter-mapping>
30       <filter-name>CacheFilter</filter-name>
31       <url-pattern>*.css</url-pattern>
32   </filter-mapping>
33   
34   <filter-mapping>
35       <filter-name>CacheFilter</filter-name>
36       <url-pattern>*.js</url-pattern>
37   </filter-mapping>
38    <filter-mapping>
39       <filter-name>CacheFilter</filter-name>
40       <url-pattern>*.png</url-pattern>
41   </filter-mapping>

四、实现用户自动登陆

  思路是这样的:

  1、在用户登陆成功后,发送一个名称为user的cookie给客户端,cookie的值为用户名和md5加密后的密码。
  2、编写一个AutoLoginFilter,这个filter检查用户是否带有名称为user的cookie来,如果有,则调用dao查询cookie的用户名和密码是否和数据库匹配,匹配则向session中存入user对象(即用户登陆标记),以实现程序完成自动登陆。

  核心代码如下:

  处理用户登录的控制器:LoginServlet

 1 package me.gacl.web.controller;
 2 
 3 import java.io.IOException;
 4 
 5 import javax.servlet.ServletException;
 6 import javax.servlet.http.Cookie;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 
11 import me.gacl.dao.UserDao;
12 import me.gacl.domain.User;
13 import me.gacl.util.WebUtils;
14 
15 public class LoginServlet extends HttpServlet {
16 
17     public void doGet(HttpServletRequest request, HttpServletResponse response)
18             throws ServletException, IOException {
19 
20         String username = request.getParameter("username");
21         String password = request.getParameter("password");
22         
23         UserDao dao = new UserDao();
24         User user = dao.find(username, password);
25         if(user==null){
26             request.setAttribute("message", "用户名或密码不对!!");
27             request.getRequestDispatcher("/message.jsp").forward(request, response);
28             return;
29         }
30         request.getSession().setAttribute("user", user);
31         //发送自动登陆cookie给客户端浏览器进行存储
32         sendAutoLoginCookie(request,response,user);
33         request.getRequestDispatcher("/index.jsp").forward(request, response);
34     }
35 
36     /**
37     * @Method: sendAutoLoginCookie
38     * @Description: 发送自动登录cookie给客户端浏览器
39     * @Anthor:孤傲苍狼
40     *
41     * @param request
42     * @param response
43     * @param user
44     */ 
45     private void sendAutoLoginCookie(HttpServletRequest request, HttpServletResponse response, User user) {
46         if (request.getParameter("logintime")!=null) {
47             int logintime = Integer.parseInt(request.getParameter("logintime"));
48             //创建cookie,cookie的名字是autologin,值是用户登录的用户名和密码,用户名和密码之间使用.进行分割,密码经过md5加密处理
49             Cookie cookie = new Cookie("autologin",user.getUsername() + "." + WebUtils.md5(user.getPassword()));
50             //设置cookie的有效期
51             cookie.setMaxAge(logintime);
52             //设置cookie的有效路径
53             cookie.setPath(request.getContextPath());
54             //将cookie写入到客户端浏览器
55             response.addCookie(cookie);
56         }
57     }
58     
59     public void doPost(HttpServletRequest request, HttpServletResponse response)
60             throws ServletException, IOException {
61 
62         doGet(request, response);
63     }
64 
65 }

  处理用户自动登录的过滤器:AutoLoginFilter

 1 package me.gacl.web.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 import javax.servlet.http.Cookie;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14 
15 import me.gacl.dao.UserDao;
16 import me.gacl.domain.User;
17 import me.gacl.util.WebUtils;
18 
19 public class AutoLoginFilter implements Filter {
20 
21     public void doFilter(ServletRequest req, ServletResponse resp,
22             FilterChain chain) throws IOException, ServletException {
23         
24         HttpServletRequest request = (HttpServletRequest) req;
25         HttpServletResponse response = (HttpServletResponse) resp;
26         //如果已经登录了,就直接chain.doFilter(request, response)放行
27         if(request.getSession().getAttribute("user")!=null){
28             chain.doFilter(request, response);
29             return;
30         }
31         
32         //1.得到用户带过来的authlogin的cookie
33         String value = null;
34         Cookie cookies[] = request.getCookies();
35         for(int i=0;cookies!=null && i<cookies.length;i++){
36             if(cookies[i].getName().equals("autologin")){
37                 value = cookies[i].getValue();
38             }
39         }
40         
41         //2.得到 cookie中的用户名和密码 
42         if(value!=null){
43             String username = value.split("\\.")[0];
44             String password = value.split("\\.")[1];
45             
46             //3.调用dao获取用户对应的密码
47             UserDao dao = new UserDao();
48             User user = dao.find(username);
49             String dbpassword = user.getPassword();
50             
51             //4.检查用户带过来的md5的密码和数据库中的密码是否匹配,如匹配则自动登陆
52             if(password.equals(WebUtils.md5(dbpassword))){
53                 request.getSession().setAttribute("user", user);
54             }
55         }
56         
57         chain.doFilter(request, response);
58     }
59     
60     public void destroy() {
61         
62     }
63 
64     public void init(FilterConfig filterConfig) throws ServletException {
65 
66     }
67 }

  如果想取消自动登录,那么可以在用户注销时删除自动登录cookie,核心代码如下:

 1 package me.gacl.web.controller;
 2 
 3 import java.io.IOException;
 4 
 5 import javax.servlet.ServletException;
 6 import javax.servlet.http.Cookie;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 
11 public class CancelAutoLoginServlet extends HttpServlet {
12 
13     public void doGet(HttpServletRequest request, HttpServletResponse response)
14             throws ServletException, IOException {
15         //移除存储在session中的user
16         request.getSession().removeAttribute("user");
17         //移除自动登录的cookie
18         removeAutoLoginCookie(request,response);
19         //注销用户后跳转到登录页面
20         request.getRequestDispatcher("/login.jsp").forward(request, response);
21     }
22 
23     /**
24     * @Method: removeAutoLoginCookie
25     * @Description: 删除自动登录cookie,
26     *     JavaWeb中删除cookie的方式就是新创建一个cookie,新创建的cookie与要删除的cookie同名,
27     *     设置新创建的cookie的cookie的有效期设置为0,有效路径与要删除的cookie的有效路径相同
28     * @Anthor:孤傲苍狼
29     *
30     * @param request
31     * @param response
32     */ 
33     private void removeAutoLoginCookie(HttpServletRequest request, HttpServletResponse response) {
34         //创建一个名字为autologin的cookie
35         Cookie cookie = new Cookie("autologin","");
36          //将cookie的有效期设置为0,命令浏览器删除该cookie
37         cookie.setMaxAge(0);
38         //设置要删除的cookie的path
39         cookie.setPath(request.getContextPath());
40         response.addCookie(cookie);
41     }
42     
43     public void doPost(HttpServletRequest request, HttpServletResponse response)
44             throws ServletException, IOException {
45         doGet(request, response);
46     }
47 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Filter(过滤器)常见应用 的相关文章

  • JavaWeb案例:实现注册和登录功能

    业务需求分析 在实际开发中 通常会有专门的人去跟客户进行沟通从而了解客户需要什么样的系统 之后由专业的美工将要做的系统以图片的形式表现出来 客户确认后作出一些静态的html demo页面 然后由软件开发人员创建相关数据库 编写代码将该静态页
  • JSP&EL表达式&MVC&三层结构综合案例

    文章目录 JSP 1 JSP 概述 2 JSP 快速入门 2 1 搭建环境 2 2 导入 JSP 依赖 2 3 创建 jsp 页面 2 4 编写代码 2 5 测试 3 JSP 原理 4 JSP 脚本 4 1 JSP 脚本分类 4 2 案例
  • Servlet与Jsp之间有哪些数据传输的方式?

    前言 根据MVC架构大家都很清楚 servlet充当咱们mvc中的c 也就是controller 而jsp则是咱们的view 所以呀 根据它们各自的职责划分 servlet相当于是一个指挥官 将页面数据交给业务逻辑层去处理 处理后的数据也就
  • Java Web JSP开发模型

    看之前先点赞 1 JSP开发模型 为了方便使用JSP技术 SUN公司玮JSP技术提供了两种开发模型 JSP Mode1 和 JSP Mode2 JSP Mode1 JSP Mode2 我们将按照Model2思想来完成用户注册功能 1 创建项
  • Idea的 Cannot resolve method ‘getAttribute(java.lang.String)‘问题解决

    问题 写javaweb jsp时使用application getAttribute出现报错 Cannot resolve method getAttribute java lang String 解决方法 第一步 File gt Proj
  • JavaWeb-13-Tomcat&Servlet学习笔记

    JavaWeb 13 Tomcat Servlet Web核心模块 1 web相关概念回顾 1 1软件架构 1 2资源分类 1 3网络通信三要素 2 web服务器软件 2 1常见的java相关的web服务器软件 2 2Tomcat web服
  • 设计模式之六大原则

    设计模式之六大原则 转载 关于设计模式的六大设计原则的资料网上很多 但是很多地方解释地都太过于笼统化 我也找了很多资料来看 发现CSDN上有几篇关于设计模式的六大原则讲述的比较通俗易懂 因此转载过来 原作者博客链接 http blog cs
  • 前端三剑客---HTML&CSS&JavaScript

    HTML CSS JavaScript 1 HTML 1 1 介绍 1 2 快速入门 1 3 基础标签 1 3 1 标题标签 1 3 2 hr标签 1 3 3 字体标签 1 3 4 换行标签 1 3 5 段落标签 1 3 6 加粗 斜体 下
  • JSP、JSTL标签

  • JavaWeb JDBC

    1 实现第一个JDBC程序 在MySQL中创建一个名称为jdbc的数据库 然后在该数据库中创建一个users表 创建 数据库和表的SQL语句如下所示 CREATE DATABASE jdbc USE jdbc CREATE TABLE us
  • 如何访问WEB-INF文件夹下的jsp文件

    我们都知道不能直接访问WEB INF文件夹下的jsp文件 那应该怎样访问呢 首先 WEB INF目录是Java WEB应用的安全目录 客户端无法访问 只有服务端可以访问 然后 为什么要这么设计 这样做的初衷是在WEB INF文件夹下放一些不
  • ie11对象不支持此属性和方法 ie11的缓存问题

    更改eclipse的js代码 在ie11上调试 发现调用新更改的方法 在ie11的console输出里 一直提示 对象不支持此属性和方法 点击右上角设置图标 然后点击Internet选项 在常规选项卡里的 浏览器历史记录 点击设置 在弹出的
  • idea中Java Web项目的访问路径问题

    说明 这里只以 servlet 为例 没有涉及到框架 但其实路径的基本原理和框架的关系不大 所以学了框架的同学如果对路径有疑惑的也可以阅读此文 项目结构 在 idea 中新建一个 Java Web 项目 项目的初始结构如下 不同版本的 id
  • java_web:基于三层架构实现学生信息管理1.0(对学生信息的增删改查)

    学生信息管理1 0 涉及的知识点 三层架构理论 简单理解三层架构就是 上层调用下层 下层为上层提供服务 最上层 视图层 由jsp servlet组成 中间层 服务层 组装数据访问层所实现的功能 最下层 数据访问层 实现单一得某项功能 为服务
  • javaweb前后台交互传递数据的几种方法

    前端传后台 form表单传递
  • JAVA-WEB项目中,前后台结合AES和RSA对数据加密处理

    实际项目中为了系统安全 我们经常需要对请求数据和响应数据做加密处理 这里以spring后台 vue前台的java web为例 记录一个实现过程 一 为什么要结合AES和RSA 因为AES是对称加密 即加密解密用的秘钥是一样 这样一来AES的
  • JavaWeb —— AJAX

    目录 AJAX 基本介绍 A synchronous JavaScript And XML 多用在 1浏览器搜索联想 2用户注册中离开光标 校验数据的正确性 同步和异步的区别 AJAX快速入门 AJAX 基本介绍 A synchronous
  • 【EasyExcel】 模板填充批量导出,多文件以zip压缩包格式导出

    使用 阿里巴巴的 EasyExcel 填充 excel模板导出 需要支持批量操作 即一个模板循环导出多份 在网上找了下其他大佬们的做法 没有找到想要的 很多都是要先生成excel文件 再压缩导出 但我不想这样做 想直接通过文件流的方式 直接
  • response实现文件下载(java)

    import javax servlet ServletException import javax servlet ServletOutputStream import javax servlet http HttpServlet imp
  • Spring容器和应用上下文理解

    有了Spring之后 通过依赖注入的方式 我们的业务代码不用自己管理关联对象的生命周期 业务代码只需要按照业务本身的流程 走啊走啊 走到哪里 需要另外的对象来协助了 就给Spring说 我想要个对象 于是Spring就很贴心的给你个对象 听

随机推荐

  • MLIR Multi-Level Intermediate Representation Overview (多级中间表示概述)

    多级中间表示概述 MLIR项目是一种构建可重用和可扩展的编译器基础结构的新颖方法 MLIR旨在解决软件碎片问题 改善异构硬件的编译 显着降低构建特定于域的编译器的成本 并有助于将现有的编译器连接在一起 要引用MLIR 请使用 此Arxiv出
  • Cause: java.lang.ClassNotFoundException: Cannot find class怎么解决

    java lang ClassNotFoundException Cannot find class 这个异常通常表示在你的 Java 程序中找不到某个类 这可能是由于以下几种情况造成的 类文件没有被编译 在运行 Java 程序时 需要先使
  • TensorFlow学习之LSTM ---语言模型(PTB数据集的处理)

    语言模型是很多自然语言处理应用的基石 非常多自然语言处理应用的技术都是基于语言模型 语言模型的任务就是预测每个句子在语言中出现的概率 一 评价方法 语言模型效果好坏的常用评价指标时复杂度 perplexity 在一个测试集上得到的perpl
  • Java泛型 自限定类型(Self-Bound Types)详解

    文章目录 简介 普通泛型类 构成自限定 自限定类型的泛型类 JDK源码里自限定的应用 enum JDK源码里自限定的应用 Integer 简介 java泛型里会有class SelfBounded
  • HTTP常见状态码(404、400、500)等错误

    访问网页偶尔会打不开 且有一串数字或带着中文或英文 这都是网页状态码在提示页面打不开的原因 常见的状态码有 200 服务器成功返回网页 404 请求的网页不存在 503 服务不可用 今天就为大家详细分解下有多少种状态码且各类状态码代表的意思
  • dbfread报错ValueError错误解决方法

    问题 我在用dbfread处理 dbf数据的时候出现了报错 ValueError could not convert string to float b 然后查找 dbf源文件的时候 发现在报错的那一行数据中 有一列甚至好几列的数据中出现了
  • 牛客题目——最长无重复子数组、分糖果问题、旋转数组

    文章目录 题目1 最长无重复子数组 解题思路 代码实现 题目2 分糖果问题 解题思路 代码实现 题目3 旋转数组 解题思路 代码实现 题目1 最长无重复子数组 给定一个长度为n的数组arr 返回arr的最长无重复元素子数组的长度 无重复指的
  • volatility内存取证分析与讲解(持续更新)

    volatility内存取证分析与讲解 0x01 volatility的安装 0x02 基本使用 0x03 取证实战 持续更新 0x04 总结 0x01 volatility的安装 本人暂时只使用windows下的volatility进行取
  • AttributeError: Model object has no attribute predict_classes 的解决方案

    第一次用的网络是在model Sequential 下添加模块的的方法 也就是所谓的顺序模型 Sequential class可以使用model predict classes 的方法来实现预测 代码如下 model Sequential
  • android 七巧板布局,iOS界面视图布局框架 – TangramKit

    TangramKit logo TangramKit是一套在Swift3 0语言上开发的iOS界面视图布局框架 它的名字来源于中国古代的玩具七巧板 寓意着可以用简单的功能来构造出各种千变万化且非常复杂的UI界面 TangramKit的内核是
  • 静态分析之数据流分析与 SSA 入门 (二)

    什么是静态单赋值 SSA SSA 是 static single assignment 的缩写 也就是静态单赋值形式 顾名思义 就是每个变量只有唯一的赋值 以下图为例 左图是原始代码 里面有分支 y 变量在不同路径中有不同赋值 最后打印 y
  • 【pytorch】使用model.eval()和torch.no_grad()以及requires_grad = False之间的区别

    model eval 是将模型切换到评估模式 这意味着在模型中使用的一些操作 例如Dropout和BatchNorm 将不会在评估模式下运行 而是使用预定义的值 这对于在测试集上进行推理时很有用 with torch no grad 是一个
  • 【LaTeX入门】11 文本居中

    首先给大家分享一个巨牛巨牛的人工智能教程 是我无意中发现的 教程不仅零基础 通俗易懂 而且非常风趣幽默 还时不时有内涵段子 像看小说一样 哈哈 我正在学习中 觉得太牛了 所以分享给大家 点这里可以跳转到教程 centerline 语法 ce
  • App违法违规收集使用个人信息自评估指南(史宾格隐私合规检查项)

    隐私政策文本 隐私政策的独立性 易读性 是否有隐私政策 在APP界面中能够找到隐私政策 包括通过弹窗 文本链接 常见问题等形式 隐私政策是否单独成文 隐私政策以单独成文的形式发布 而不是作为用户协议 用户说明等文件中的一部分存在 隐私政策是
  • 【Java】无数据源启动

    前言 在开发项目的过程中 经常碰到框架使用SpringBoot进行开发 但是却不需要连接数据库的方式 本篇文章详细记录了具体的解决方法与方式希望能对您有所帮助 一 启动类配置 代码如下 import org springframework
  • 有哪些老程序员都知道对新程序员很有用的经验

    回想起自己刚步入职场的时候 接到任务的心态就是尽快搞完 只要没做完就怕耽误了整个团队 还怕领导觉得自己能不行 怕被开除等等 但是每次完成之后 都有错误 编译通过了 逻辑又有问题 自己就是不断的修改当中 时间久了自己写的代码自己都不愿意看 因
  • CMMI 级别中和BUG率

    关于CMMI 级别中和BUG率相关的信息如下 千行代码缺陷率 bug率 CMM1级 11 95 CMM2级 5 52 CMM3级 2 39 CMM4级 0 92 CMM5级 0 32 基本属于成倍递减 国内通过CMMI 5 级评定的IT行业
  • 【华为OD统一考试B卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • C/C++编程题刷题:leetcode 62. 不同路径 和 63. 不同路径 II

    62 不同路径 一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在下图中标记为 Finish 问总共有多少条不同的路径 例如 上图是一个7 x
  • Filter(过滤器)常见应用

    javaweb学习总结 四十六 Filter 过滤器 常见应用 一 统一全站字符编码 通过配置参数charset指明使用何种字符编码 以处理Html Form请求参数的中文问题 1 package me gacl web filter 2