servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
- servlet过滤器
- 1.filter过滤器的含义
- 2.filter过滤器的使用
- 3.测试-过滤字符编码正确响应中文编码
- 3.1 创建servlet用于显示中文字符
- 3.2 自定义过滤器
- 3.3 配置web.xml中的servlet映射以及过滤器请求拦截
- 3.4 运行输出
- 4. / 和 /* 以及 /** 的区别
servlet过滤器
1.filter过滤器的含义
它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。servlet的过滤器,通过实现Filter
接口来实现。
过滤器的本质:过滤一些非法请求(常见的场景就是非法登录验证,以及一些需要登录后才能去访问的页面和资源),在浏览器和服务器响应中间添加一个拦截过滤请求的容器。
比如针对非法登录的用户的请求过滤:
当我们使用了Filter过滤器的时候,同样的场景,用户每一次发送请求的时候都要经过Filter过滤器,那么我们可以在过滤器里面编辑逻辑代码,进行判断当用户没有登录的时候,我们就让他跳转到提示错误的页面,在提示错误的页面里提示他只有登录了之后才可以访问系统主页。
2.filter过滤器的使用
首先,需要引入对应的包 javax.servlet
,和HttpServlet是同一个包下。
filter接口源码:
package javax.servlet;import java.io.IOException;public interface Filter {default void init(FilterConfig filterConfig) throws ServletException {}void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;default void destroy() {}
}
创建一个类,实现filter接口,并且重写它的三个方法即可:
package com.robin.filter;import javax.servlet.*;
import java.io.IOException;public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig);}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {// 编写自己的业务逻辑代码即可}@Overridepublic void destroy() {Filter.super.destroy();}
}
接着,去web.xml中配置过滤器:
<!-- 过滤器配置 --><filter><!-- 过滤器名 --><filter-name>MyFilter </filter-name><!--过滤器对应的全类名 --><filter-class>com.robin.filter.MyFilter</filter-class></filter><!--过滤器拦截请求映射 --><filter-mapping><!-- 过滤器名与上面的一致 --><filter-name>MyFilter </filter-name><!-- 过滤请求配置 下面的相当于过滤servlet包下的所有请求 --><url-pattern>/servlet/*</url-pattern></filter-mapping>
3.测试-过滤字符编码正确响应中文编码
3.1 创建servlet用于显示中文字符
package com.robin.servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class ShowServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().write("我是中文字符");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
3.2 自定义过滤器
package com.robin.filter;import javax.servlet.*;
import java.io.IOException;/*** 自定义字符过滤器*/
public class CharacterEncodingFilter implements Filter {// 过滤器初始化@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("CharacterEncodingFilter初始化");Filter.super.init(filterConfig);}//@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {// 设置过滤器的功能servletRequest.setCharacterEncoding("utf-8");servletResponse.setCharacterEncoding("utf-8");servletResponse.setContentType("text/html;charset=utf-8");System.out.println("CharacterEncodingFilter过滤器执行之前");// 将自定义过滤器加入过滤器链中 filterChain 如果不加入链中,是无法执行过滤器的功能,以及拦截请求filterChain.doFilter(servletRequest,servletResponse);System.out.println("CharacterEncodingFilter过滤器执行之后");}// 过滤器销毁@Overridepublic void destroy() {System.out.println("CharacterEncodingFilter销毁");Filter.super.destroy();}
}
3.3 配置web.xml中的servlet映射以及过滤器请求拦截
<?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映射配置 --><servlet><servlet-name>ShowServlet</servlet-name><servlet-class>com.robin.servlet.ShowServlet</servlet-class></servlet><!-- 配置第一个映射,走过滤器的映射 --><servlet-mapping><servlet-name>ShowServlet</servlet-name><url-pattern>/servlet/Show</url-pattern></servlet-mapping><!-- 第二个映射,不走过滤器,则显示字符会乱码 --><servlet-mapping><servlet-name>ShowServlet</servlet-name><url-pattern>/Show</url-pattern></servlet-mapping><!-- 过滤器配置 --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>com.robin.filter.CharacterEncodingFilter</filter-class></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><!-- 过滤servlet下的所有请求 --><url-pattern>/servlet/*</url-pattern></filter-mapping>
</web-app>
3.4 运行输出
先访问走过滤器的请求http://localhost:8080/servlet/Show
,字符正确显示
访问不会走过滤器的请求http://localhost:8080/Show
,则输出乱码
其余的非法登录验证,以及敏感字符请求过滤等,本质都一样,大家可以自行测试
4. / 和 /* 以及 /** 的区别
-
/
<url-pattern>/</url-pattern>
解释:会匹配到/login这样的路径型url,.js和.html等静态资源,不会匹配到*.jsp页面 -
/*
<url-pattern>/*</url-pattern>
解释:会匹配所有url(只匹配当前文件夹下文件,不匹配子文件夹下文件),包括*.jsp页面 -
/**
<url-pattern>/**</url-pattern>
解释:会匹配所有url(匹配当前文件夹下文件和子文件夹下文件):路径型的和后缀型的url(包括/login,.jsp,.js和*.html等)
相关文章:
【网络知识基础】--网络攻击
...
深圳个缴社保如何自行扣费2024
深圳个缴社保如何自行扣费2024- 深圳本地宝 (bendibao.com)自主缴费说明 个缴人员在社保经办机构完成申报后,社保部门将核定费额传递至税务部门,缴费人可自行登录自然人电子税务局、@深税等渠道完成线上缴费,或前往办税服务厅办理。...
【生活日记1】初见博客园
你好博客园!!!!从大学起就已开始接触博客园,那时候基本上都在这里找相关的技术文档和教程。那时候对编程计算机相关的知识感兴趣一些,可惜自己的专业并不是计算机相关专业,自己是机体一体化专业毕业,那时候不懂学什么专业才好,就是想学点有技术含量的比较好就业!!!…...
nginx学习:CentOS 8 安装 keepalived
https://blog.csdn.net/HelloCedar/article/details/108967078...
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别servlet过滤器1.filter过滤器的含义2.filter过滤器的使用3.测试-过滤字符编码正确响应中文编码3.1 创建servlet用于显示中文字符3.2 自定义过滤器3.3 配置web.xml中的servlet映射以及过滤器请求拦截3.4 运行输出…...
Java链表OJ题
目录1. 删除链表中等于给定值val的所有结点2. 逆置单链表3. 链表的中间结点4. 链表中倒数第k个结点5. 将两个有序链表合并为一个新的有序链表6. 以给定值x为基准将链表分割成两部分7. 判断是否为回文链表8. 两个链表的第一个公共结点9. 判断链表中是否有环10. 链表开始入环的第…...
0、Spring工程构建Spring快速入门Spring配置文件详解注入Sprint相关API
1、Spring工程构建 创建工程项目目录文件夹 IDEA选择项目new一个module 配置案例 aop创建 创建并下载完毕后,点击file选择projert 选择按照的jdk版本 output选择当前目录, 点击右下方apply 选择facets,点击""号选择web 选择当前…...
网络原理之HTTP/HTTPS、TCP、IP四层协议栈
文章目录一、应用层(一)xml协议(二)json协议(三)protobuffer协议(四)HTTP协议1. 抓包工具,fiddler2. HTTP报文格式3. HTTP请求(Request)(1)URL基本…...
CS61B 2021spring HW0
HW 0: A Java Crash Course 文章目录HW 0: A Java Crash CourseA Basic ProgramCreative Exercise 1a: Drawing a TriangleCreative Exercise 1b: DrawTriangleExercise 2、3Optional: Exercise 4Java可视化orz表达积累参考资料这个hw是optional,然后主要是给至少学…...
自动驾驶环境感知——视觉传感器技术
文章目录1. 摄像头的成像原理1.1 单目视觉传感器的硬件结构1.2 单目视觉的成像原理 –小孔成像模型1.3 单目视觉的成像原理 – 像素坐标系1.4 单目视觉三维坐标系转换 – 外参1.5 单目视觉的坐标系转换 – 从世界坐标点到像素坐标1.6 单目视觉的特性2. 视觉传感器的标定2.1 视觉…...
分享148个ASP源码,总有一款适合您
ASP源码 分享148个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 148个ASP源码下载链接:https://pan.baidu.com/s/1e2PvBmXxZA8C3IelkP8ZtQ?pwdj7lp 提取码&#x…...
Java线程的生命周期的五种状态
前面在《有关Java多线程的几个概念》(https://blog.csdn.net/helloworldchina/article/details/128753898)讲述了Java线程的生命周期的五种状态。在这里再详述一下线程的5种状态。 在java中,任何对象都要有生命周期,线程也一样&a…...
springboot自定义拦截器的简单使用和一个小例子
springboot自定义拦截器的使用1. 自定义拦截器2. 拦截器登录验证的小demo2.1 配置pom.xml2.2 创建User的bean组件2.3 创建需要的表单页面以及登录成功的页面2.4 编写controller映射关系2.5 自定义拦截器类,实现intercepetor接口2.6注册添加拦截器,自定义…...
APT之木马静态免杀
前言 这篇文章主要是记录手动编写代码进行木马免杀,使用工具也可以免杀,只不过太脚本小子了,而且工具的特征也容易被杀软抓到,指不定哪天就用不了了,所以要学一下手动去免杀木马,也方便以后开发一个只属于…...
设计模式 - 创建型模式_抽象工厂模式
文章目录创建型模式概述Case场景模拟工程模拟早期单机Redis的使用Bad ImplBetter Impl (抽象⼯⼚模式重构代码)定义适配接⼝实现集群适配器接口代理方式的抽象工厂类单元测试小结创建型模式 创建型模式提供创建对象的机制, 能够提升已有代码…...
9、断点调试
文章目录9、断点调试9.1 为什么需要Debug9.2 Debug的步骤1 添加断点2 启动调试3 单步调试工具介绍9.3 多种Debug情况介绍1 行断点2 方法断点3 字段断点4 条件断点5 异常断点6 线程断点7 强制结束9.4 自定义调试数据视图9.5 常见问题【尚硅谷】idea实战教程-讲师:宋红…...
yolo结构介绍
更新中 yolo结构: 这个是针对最早的v5版本1.0进行讲解,现在2022最新版本是V6.2。有一些细节的差别比如Backbone部分Focus倍替换成6*6的Conv,bottleneckCSP替换为C3,Neck部分SPP被替换成SPPF等 Release v1.0 ultralytics/yolov5 (github.com) # parameters nc: 80 # n…...
大数据技术架构(组件)7——Hive:Filter PushDown Cases And Outer Join Behavior
1.2、Filter PushDown Cases And Outer Join Behavior前提:关闭优化器set hive.auto.convertjoinfalse; set hive.cbo.enablefalse;Inner Join:1、Join On中的谓词: 左表下推、右表下推2、Where谓词:左表下推、右表下推-- 第一种情况: join on 谓词 selectt1.user_id,t2.user_i…...
【MySQL】第十二部分 子查询
【MySQL】第十二部分 子查询 文章目录【MySQL】第十二部分 子查询12. 子查询12.1 单行子查询12.2 多行子查询12.3 非相关子查询和相关子查询12.4 EXISTS 与 NOT EXISTS关键字总结12. 子查询 子查询 说白了就是嵌套查询,在一个查询语句中嵌套另外一个查询语句进行内部查询. 子…...
Day08 C++STL入门基础知识五——vector容器(下) 插入删除-数据存取-交换容器-预留空间【全面深度剖析+例题代码展示】
More haste, less speed. 欲速则不达 文章目录1. 承接上文2. 插入操作2.1 函数原型(总括)2.2 尾插尾删2.2.1 操作2.2.2 代码展示2.2.3 测试结果2.3 迭代器插入2.3.1 操作2.3.2 代码展示2.3.3 测试结果2.4 think小思考2.4.1 小疑问2.4.2 思路2.4.3 代码展示2.4.4 测试结果3. 删除…...
打工人必知必会(二)——劳动合同解除
目录 1、劳动合同的解除种类 2、协商解除劳动合同 3、用人单位解除劳动合同 1)过错性解除劳动合同 2)非过错性解除劳动合同 4、经济性裁员解除劳动合同 5、违法解除劳动合同 6、 劳动者解除劳动合同 提前30日以书面形式通知用人单位 员工即时解…...
量化选股——基于多因子模型的量化策略(第1部分—因子测算策略构建)
文章目录1.多因子模型概述2.因子挖掘3.多因子策略4.多因子策略构建基于多因子的策略通用流程Fama-French三因子因子效果测算方法因子测算结论&量化策略构建东西有点多,拆开成多个文章,边写边整合~,应该会分成2部分: 第1部分—…...
(Java高级教程)第四章必备前端基础知识-第三节1:JavaScript简介和基础语法
文章目录一:JavaScript简介(1)JavaScript概述(2)JavaScript特点(3)JavaScript运行过程(4)JavaScript组成(5)JavaScript的引入方式和基本使用&…...
好的质量+数量 = 健康的创作者生态
缘起 CSDN 每天都有近万名创作者发表各种内容, 其中博客就有一万篇左右。 这个数量是非常可喜的,这也是 CSDN 的产品、研发运营小伙伴、和各位博主持续工作的结果。 衡量一个 IT 内容平台,除了数量之外,还有另外一些因素…...
利用Golang可选参数实现可选模式
本文讨论Golang函数可选参数及函数类型,以及如何利用可选函数类型实现可选模式。同时通过构造函数作为示例,实现强大带可选参数的构造函数,让代码更直观、灵活、支持扩展。 从需求开始 可选参数给函数传递额外参数扩展或修改其行为…...
【Git】Git 的基本使用
Git的简介 Git是一个版本管理控制系统(缩写VCS),是一个工具,github或者gitee是git命令行工具的网站化。它可以在任何时间点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复回来。 git的诞生历…...
MyBatis(一)MyBatis概述
一、什么是框架 ● 在文献中看到的framework被翻译为框架 ● java常用的框架: SSM三大框架:SpingSpringMVCMyBatisSpringBootSpringCloud● 框架其实就是对通用代码的封装,提前写好了一堆接口和类,我们可以在做项目的时候直接引…...
吴恩达机器学习笔记(三)逻辑回归
机器学习(三) 学习机器学习过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。 —— 吴恩达机器学习第五章 —— 四、逻辑回归 线性回归局限性 线性回归对于分类问题的局限性:由于离群点…...
[python入门㉞] - python错误和异常处理
目录 ❤ 语法错误 ❤ 异常 ❤ 异常的分类 ❤ 错误异常处理 错误就是Python中的语法错误或者异常(解析错误)。 ❤ 语法错误 语法错误也叫做解析错误,是指python无法正确的识别代码的造成的。根本原因在于人的行为。 解决方法:按照正确的语法进…...
用1行Python代码识别增值税发票,YYDS
大家好,这里是程序员晚枫。 录入发票是一件繁琐的工作,如果可以自动识别并且录入系统,那可真是太好了。 今天我们就来学习一下,如何自动识别增值税发票并且录入系统~ 识别发票 识别发票的代码最简单,只需要1行代码…...
Sharding-JDBC(五)PageHelper分页报错 Can‘t find index: AggregationSelectItem
目录1.详细报错信息:2.问题原因:3.解决方法:3.1)使用MyBatisPlus自带的分页功能3.2)PageHelper ShardingJDBC53.3)PageHelper ShardingJDBC41.详细报错信息: Caused by: org.apache.ibatis.e…...
十六进制转八进制+超大数据处理(蓝桥杯基础练习C/C++)
目录 1 题目要求 2 代码 2.1 以十进制为媒介(不可行) 2.2 以二进制为媒介 3 可能会遇到的难点 4 结论 5 延伸 5.1 超大数据阶乘 5.2 超大数据加法 5.3 以十进制为媒介的进制转换 1 题目要求 2 代码 2.1 以十进制为媒介ÿ…...
蓝桥杯2020省赛python
蓝桥杯2020省赛Python 第一题:门牌制作 用了一个时间复杂度是n的算法,反正是填空题也不会出现TLE的事,只要别太离谱就行了。 利用python 的count函数 res 0 for i in range(1,2021):i str(i)res i.count(2) print(res)答案是2 第二题&…...
kaggle竞赛 | 计算机视觉 | Doodle Recognition Challenge
目录赛题链接赛题背景数据集探索合并多个类别CSV数据集数据建模 (pytorch)赛题链接 https://www.kaggle.com/competitions/quickdraw-doodle-recognition/overview/evaluation 数据集从上述链接中找 赛题背景 Quick,Draw!作为实验性游戏发布ÿ…...
如何设计一个70W在线人数的弹幕系统文章分析
原文地址: 如何设计一个70W在线人数的弹幕系统 1:http包头 一个http数据包请求由4个部分组成:请求行、请求头标、空行、请求数据。 请求行分为了三个部分。请求方法,请求url与http版本。请求头行,由关键字值对组成&…...
基于Android的动漫之家系统的设计与实现
目录 1.课题研究立项依据 2.文献综述 3.课题研究的基本内容及预期目标或成果 4.课题的研究方案 5.研究进度安排 6.主要参考文献 1.课题研究立项依据 目前国家的动漫交流也正处在不断改革、创新的阶段,我国有关部门充分吸取国外优秀的动漫交流模式,…...
流批一体计算引擎-7-[Flink]的DataStream连接器
参考官方手册DataStream Connectors 1 DataStream连接器概述 一、预定义的Source和Sink 一些比较基本的Source和Sink已经内置在Flink里。 1、预定义data sources支持从文件、目录、socket,以及collections和iterators中读取数据。 2、预定义data sinks支持把数据写…...
测试篇(三):测试用例的万能公式、对水杯和登录页面设计测试用例、测试用例的设计方法
目录一、测试用例的万能公式二、对登录页面设计测试用例三、测试用例的设计方法3.1 基于需求的设计方法3.2 等价类3.3 边界值3.4 判定表3.5 正交排列3.6 场景设计法3.7 错误猜测法四、面试真题一、测试用例的万能公式 首先,为"水杯"设计一个测试用例&…...
【进击的算法】基础算法——怎么优雅地控制边界范围
学习范围 : ✔️数组 ✔️边界控制本文作者 : 蓝色学者i 边界控制的艺术前言一、为什么需要控制边界?二、怎么优雅地控制边界?三、令人抓狂的二分查找3.1 题目概述3.2解题思路3.3 解决方案方案一:边界都有效方案二&…...
linux基本功系列之-rpm命令实战
文章目录前言🚀🚀🚀一. rpm命令介绍1.1 RPM包介绍1.2 rpm包的优缺点1.3 rpm包获取方式二. 语法格式及常用选项2.1 RPM安装常用参数2.2 rpm格式介绍三. 应用案例3.1 从本地安装软件包3.2 查询lrzsz的包有没有安装3.3 查询命令是哪个包安装的3.…...
冯诺依曼体系结构及操作系统(OS)的简单认识
文章目录冯诺依曼体系结构操作系统(Operator System)冯诺依曼体系结构 冯诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储结构。数学家冯诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑…...
day4 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ●160 链表相交 ● 142.环形链表II
两两交换链表中的节点 链表的指针,要仔细画图,搞清楚cur和cur的next在哪里 这个题还是有点绕的,两两一组交换,还有奇偶数要考虑 class Solution { public:ListNode* swapPairs(ListNode* head) {ListNode* dummyhead new ListNo…...
【Linux】目录权限和默认权限
上期介绍了Linux的文件权限,这期我们仔细来说说Linux环境下目录权限和默认权限一、目录权限1.1 进入目录所需的权限我们在进入目录时需要什么样的权限呢?是r、w还是x呢?下面我们一起来验证一下:📋如下我门拥有全部目录…...
kaggle竞赛 | 计算机视觉 | 数字图像基础操作
目录cv2基本操作图片哈希图像数据扩展无监督数据扩展方法监督式数据扩展方法cv2基本操作 import numpy as np import matplotlib.pyplot as plt import cv2img cv2.imread(cat.jpeg) plt.imshow(img)img cv2.imread(cat.jpeg) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) pl…...
7. 好客租房-项目日常推进ing
7. 好客租房-项目日常推进ing 本章节不涉及大量内容,主要是为了推荐项目代码日常进度而设置, 包括添加mock接口, 添加更新房源接口, 为系统添加缓存. 7.1 为前端系统提供mock服务 往往在项目开发中, 为实现前后端并行开发,后端需要对前端所有的请求都都进行支持。…...
前同事居然因为 Pycharm 的这个功能,即使离职三年也依然经常被请去喝茶~
大家好,我是 哈士奇 ,一位工作了十年的"技术混子", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 ὎…...
python使用类装饰器生成函数的使用日志
1 什么是类装饰器 在了解类装饰器之前,建议大家先了解装饰器的概念。 装饰器知识快速入门链接 类装饰器是 Python 中的一种特殊类型的装饰器,它是一个类而不是一个函数。与函数装饰器不同,类装饰器可以在运行时接收参数并返回一个可调用的对…...
有关Android的TextView组件的几个问题
文章目录小结问题及解决参考小结 TextView组件与EditText类似,但有一些不同,理论上TextView是只读的。尝试了让TextView组件可以弹出SetError的提示信息,只读,并不能弹出Android软键盘。 问题及解决 如果需要将TextView组件不能…...
Spring核心模块解析—BeanDifinition。
BeanDifinition前言什么是BeanDefinition?为什么要有BeanDefinition?BeanDifinition重点源码总结前言 Spring中的BeanDifinition在Bean的实例化流程中占有着非常重要的角色,如果你不了解BeanDifinition的话,面试或者学习Bean的生…...
【目标跟踪】------deepsort
目前主流的目标跟踪算法都是基于Tracking-by-Detecton策略,即基于目标检测的结果来进行目标跟踪。DeepSORT运用的就是这个策略,上面的视频是DeepSORT对人群进行跟踪的结果,每个bbox左上角的数字是用来标识某个人的唯一ID号。 Deepsort的前身是sort算法,sort算法的核心是卡尔…...
教你一键生成形如Springboot的高大上banner打印效果
背景 今天闲来无聊,想搞一个类似于Springboot项目启动时打印效果,如下图: 问题解决方案 那这个打印效果怎么实现的呢? 其实,对于这个中效果实现起来也是很简单的。毕竟依托于Springboot强大的框架,任何问…...
RESTful的意义及其使用规则
本文参考: https://javaguide.cn/system-design/basis/RESTfulAPI.html 何为 RESTful API? GET /classes:列出所有班级 POST /classes:新建一个班级RESTful API 可以让你看到 URLHttp Method 就知道这个 URL 是干什么的&…...
Linux产生死锁的必要条件和常见的锁种类
目录前言产生死锁的4个必要条件预防(解决)死锁Linux常见的锁互斥锁(普通锁)自旋锁互斥锁和自旋锁小结递归锁读写锁乐观锁与悲观锁乐观锁和悲观锁小结其他锁(了解)前言 之前面试的时候,有面试官问我产生死锁的(4个)必要条件,这个我之前有了解过ÿ…...
【HBase入门】8. HBase Java编程(2)——创建表、插入数据、删除数据
前言 本文是HBase Java编程(2)——创建表、插入数据、删除数据。 需求一:使用Java代码创建表 创建一个名为WATER_BILL的表,包含一个列蔟C1。 实现步骤: 1.判断表是否存在——存在,则退出 2.使用TableDe…...
[董晓算法]搜索相关题目及模板
前言: 本系列是学习了董晓老师所讲的知识点做的笔记 董晓算法的个人空间-董晓算法个人主页-哔哩哔哩视频 (bilibili.com) 动态规划系列(还没学完) 【董晓算法】动态规划之线性DP问题-CSDN博客 【董晓算法】动态规划之背包DP问题ÿ…...
mybatis 跨库查询 mysql
跨库,表关联的查询,实现起来很简单: select a.uid from ucenter.user a , database user_profile b where a.uid b.uid;只要在表的前边加上库名即可。 这个是我项目中xml 中的一个例子,项目采用的是springmvc,持久层框架就是my…...
使用Docker创建verdaccio私服
verdaccio官网 1.Docker安装 这边以Ubuntu安装为例Ubuntu 安装Docker,具体安装方式请根据自己电脑自行搜索。 2.下载verdaccio docker pull verdaccio/verdaccio3.运行verdaccio 运行容器: docker run -it -d --name verdaccio -p 4873:4873 ver…...
docker 容器无法直接读取宿主机文件
最近一个需求, 要在后端直接使用代码直接生成 pdf 文档, 由于使用的 apache 的工具包, 该工具包无法直接解析中文字体, 需要导入外部 中文插件包, 相关代码如下: PDPage page new PDPage(PDRectangle.A4);document.addPage(page);PDFont fontFile PDType0Font.load(document…...
虚拟化技术 安装和配置StartWind iSCSI目标服务器
一、实验内容 安装StartWind iSCSI目标服务器配置StartWind iSCSI目标服务器 二、实验主要仪器设备及材料 安装有64位Windows操作系统的台式电脑或笔记本电脑,建议4C8G或以上配置已安装vSphere Client已创建虚拟机并在其上安装CentOS6.5StarWind安装介质starwind.…...
现代R语言【Tidyverse、Tidymodel】的机器学习
机器学习已经成为继理论、实验和数值计算之后的科研“第四范式”,是发现新规律,总结和分析实验结果的利器。机器学习涉及的理论和方法繁多,编程相当复杂,一直是阻碍机器学习大范围应用的主要困难之一,由此诞生了Python…...
JETBRAINS IDES 分享一个2099通用试用码,支持一键升级!DataGrip 2024 版
文章目录 废话不多说上教程:(动画教程 图文教程)一、动画教程激活 与 升级(至最新版本) 二、图文教程 (推荐)Stage 1.下载安装 toolbox-app(全家桶管理工具)Stage 2 : 下…...
前端小白的JavaScript学习指南
文章导读:AI 辅助学习前端,包含入门、进阶、高级部分前端系列内容,当前是 javascript 的部分,瑶琴会持续更新,适合零基础的朋友,已有前端工作经验的可以不看,也可以当作基础知识回顾。 对于初学…...
不懂技术可以当项目经理吗?看完这篇你就知道了
项目经理作为项目的核心负责人,主要负责项目的规划、组织、协调和控制。 如果你不懂技术,但具备出色的项目管理技能,你仍然可以成功地管理项目。你可以通过与技术团队建立紧密的合作关系,明确项目需求,并依赖技术团队…...
DOTWeen插件使用技巧
今天我们一起来研究一下DOTween动画插件。 对于该插件官网上的介绍是:“DOtween是一种快速,高效,完全类型安全的面向对象的动画引擎。” 将它导入Unity中,可以很方便快速地帮我们完成许多动画效果。本篇文章主要将通过一些小案例…...
C++之lambda【匿名函数】
1、语法 语法结构: [捕获列表](参数列表) mutable(可选) 异常属性 -> 返回类型 {// 函数处理 }注意: 一般情况下,编译器可以自动推断出lambda表达式的返回类型,所以我们可以不指定返回类型。 但是如果函数体内有多个return语…...
代码随想录——二叉树的最大深度(Leetcode104)
题目链接 层序遍历 当遍历到二叉树每一层最后一个节点时,depth /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* …...