- 基于 MySQL 递归 CTE 实现表,父级id与子级id拼接
ekkcole
javamysql数据库
1、函数xr_test.tb_content替换成自己的表CREATEDEFINER=`root`@`%`FUNCTION`get_related_ids`(start_idBIGINT)RETURNSvarchar(1000)CHARSETutf8mb4COLLATEutf8mb4_general_ciDETERMINISTICBEGINDECLAREresult_idsVARCHAR(1000
- Ollama的安装及使用
dwjf321
大模型ollama大模型
文章目录1.ollama下载2.linux安装3.ollama离线安装4.windows安装5.使用ollama1.ollama下载下载地址:https://ollama.com/download2.linux安装执行命令:curl-fsSLhttps://ollama.com/install.sh|sh设置启动访问IP和模型存储路径:vim/etc/systemd/system/ollama.s
- UE_C++ —— Gameplay Tags
挨代码
UE#CPPc++UE
目录一,DefiningGameplayTagsAddingTagsinProjectSettingsImportingTagsfromDataTableAssetsDefiningTagswithC++二,UsingDefinedGameplayTagsApplyingTagstoObjectsEvaluatingTagswithConditionalFunctions三,AdvancedTop
- UE_C++ —— Logging in Unreal
挨代码
UE#CPPc++UE
目录一,UE_LOGLogVerbosityConsoleCommandsLoggingFundamentalDataTypesDefineYourOwnLogCategory二,UE_LOGFMTOn-screendebugmessages日志是一种非常实用的调试工具,可以详细说明代码当前的执行逻辑;可以检查函数之间传递的数据值,并报告潜在的问题;引擎中的日志提供了多种方法,来有序记录运行时特定
- Java 中的构造方法与构造代码块的区别
冰糖心书房
Java开发
1.publicclassDev{static{System.out.println("静态代码块");}{System.out.println("构造代码块");}publicDev(){System.out.println("我是一个无参构造方法");}publicDev(Stringname){System.out.println("我是带有一个参数的构造方法");}}2.这段代码的执行顺序
- 23贪心算法
居然有人654
贪心算法算法数据结构
分发饼干classSolution{public:intfindContentChildren(vector&g,vector&s){inti=0,j=0;intcount=0;sort(s.begin(),s.end());sort(g.begin(),g.end());while(i&nums){intcount=1;intprev=nums[0];boolneg=0;intstart=1;f
- NoSQL注入攻击如何防范
abckingaa
MongoDBORMBeenosql数据库Bee
一些常见的MongoDB中的NoSQL注入攻击如下所示。1.基本的NoSQL注入攻击####示例假设有以下代码,用于查找特定用户:```javascriptletusername=req.body.username;//假设来自用户输入db.collection('users').find({username:username});```如果攻击者输入`username`为`{"$ne":null
- Android操作系统详细目录结构
Zengyangtech
Androidandroid文件管理器systemgmail音乐测试
Android操作系统相信大家已经非常熟悉了。该系统没有内置文件管理器,经过安装第三方文件管理器后可以对主系统内存和SD卡上的文件管理。主内存中的文件目录都是由主系统自动生成,那么又有多少人他们目录结构的具体分工呢?下面是本站整理的Android操作系统详细目录结构,供大家交流使用。首先是/system/app文件夹,这里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。在这个
- 使用spring-boot-starter-test做单元测试简单示例
Leo_Hu666
javaspringboot单元测试
一、jar依赖org.springframework.bootspring-boot-starter-testtest二、demo示例**@SpringBootTest**publicclassTest{//要引入的Bean使用@Autowired注入//在要测试的方法上添加@org.junit.Test注释**@org.junit.Test**publicvoidtest(){System.ou
- C# 实现 Modbus TCP 服务端客户端寄存器
云端狂人
ModbusTCPtcp/ip网络协议网络
以下是一个使用C#实现ModbusTCP服务端的示例代码。这个示例使用了NModbus4库,这是一个开源的Modbus库,支持ModbusTCP和ModbusRTU协议。首先,您需要安装NModbus4库。您可以通过NuGet包管理器来安装:Install-PackageNModbus4然后,您可以编写以下代码来实现一个简单的ModbusTCP服务端:usingSystem;usingSystem
- 冬训周报(二)
HL0614SC
算法c++
一、天梯训练赛L2-1插松枝模拟题:有一个推送器和一个盒子,推送器会给出松针片,松针下面的片一定要比上面的大,看能组合成一些什么样的松针感觉没什么特别的地方,模拟就行了,但是赛时写拉了,只拿了19分#includeusingnamespacestd;#defineintlonglong#definell__int128#definePIIpair#defineendl'\n'#definemkma
- 报错 Cannot read properties of undefined(reading‘addEventListener‘)如何解决
聂聂脸
前端javascript开发语言
我在制作项目中遇到了一个问题,给大家分享一下,如下图:问题:这是我给一个input输入框绑定的监听事件出现的报错翻译:无法读取未定义的属性(读取'addEventListener')错误原因:js中操作的dom元素的函数方法需要再html文档中渲染完之后再去执行,没有渲染完时dom树是不完整的,所以根本就找不到监听的元素。(也就是在页面还没加载完的时候这串监听的代码已经执行了)解决方法将addEv
- GreatSQL修改配置文件参数无法生效
数据库mysql
GreatSQL修改配置文件参数无法生效一、问题描述客户需要创建无主键表,因提供默认模板设置了参数sql_require_primary_key=ON(创建新表或更改现有表结构的语句强制要求表具有主键),当创建无主键表时会提示ERROR3750(HY000):Unabletocreateorchangeatablewithoutaprimarykey,whenthesystemvariable's
- docker中常用的命令
moxiaoran5753
docker容器
一、服务命令systemctlstartdocker.service启动docker服务systemctlstopdocker.service关闭docker服务systemctlenabledocker.service设置docker服务开机启动systemctldisabledocker.service.禁止docker服务开机自启动二、镜像命令dockerimages列出本地所有的镜像doc
- c#中的DataSet原理和用法
家里有蜘蛛
#c#学习笔记
c#中的DataSet1.DataSet是什么DateSet在c#程序中建立一个临时数据库下图所示:2…命名空间usingSystem.Data;3.DataSet的建立和用法下面是常用的方法//创建一个临时数据库DataSetds=newDataSet();//创建一个临时表DataTabledt=newDataTable();//添加自增主键DataColumndcId=newDataColu
- Pyecharts 保存 png 图片问题
myqijin
python可视化python
记录一下问题:pyecharts中使用snapshot_phantomjs保存png图片时报错ReferenceError:Can'tfindvariable:echarts\n\nundefined:1\nnull\n代码:frompyecharts.renderimportmake_snapshotfromsnapshot_phantomjsimportsnapshot'''省略内容'''ma
- vue3+vite+axios 配置连接后端调用接口的实现方法
嫣嫣细语
vue.jsjavascript前端前端javascriptvue.js
在vite.config.ts文件中添加以下配置exportdefaultdefineConfig({plugins:[vue()],optimizeDeps:{include:['axios'],},build:{target:'modules',outDir:'dist',assetsDir:'assets',minify:'terser'//混淆器},server:{cors:true,op
- 组件封装-List
Bunury
VUE3listjavascript数据结构
对于数组对象渲染列表的组件进行渲染,可支持定制里面的内容与列表外部的内容。子组件&{id:any}">import{PropType,defineSlots}from'vue';defineProps({data:{//eslint-disable-next-lineno-undeftype:ArrayasPropType,required:true},//根据条件定制列表外内容showCheck
- QT学习笔记(6)-文本编辑器与模态与非模态对话框
zwz_chome
QTQT
本篇文章是对b站学习视频上面的一些总结与笔记,觉得这个视频还是不错的,值得花时间去听,那样才能更好的打好基础。共勉!目录文本编辑器模态与非模态对话框设计器的功能展示文本编辑器首先,先上效果:然后,给出代码,相应的解释都在代码之中了:mainwindow.h#ifndefMAINWINDOW_H#defineMAINWINDOW_H#includeclassMainWindow:publicQMai
- uniapp获取元素高度
if时光重来
uni-app
uni.getSystemInfo({success:function(res){//res-各种参数console.log(res.windowWidth);//屏幕的宽度letinfo=uni.createSelectorQuery().select(".类名");info.boundingClientRect(function(data){//data-各种参数console.log(dat
- haproxy编译安装
qiqi妈
服务器网络linux
1.下载安装包2.将安装包上传至本地目录3.解压tarxvfhaproxy-1.5.19.tar.gz4.创建haproxy安装目录mkdir/usr/local/haproxy5.编译并安装haproxycd/home/haproxy-1.5.19/makeARCH=x86_64TARGET=linux2628USE_PCRE=1USE_OPENSSL=1USE_ZLIB=1USE_SYSTEM
- DTrace
麦晓宇
xcodeDTrace编译器调试器
很少有人听过DTrace,它是隐藏在OS中的小宝藏。DTrace是强大的debug工具-因为它拥有极其灵活的特性,并且因为与其它工具差异很大而可能相对不那么有名。许多时候你的app的真正的用户或测试人员会看到一些意外的行为。DTrace可以让你无需重启app就能够在生产版本上回答关于app的任何问题。动态追踪大概10年前,SunMicrosystems创建了DTrace,它的名字是DynamicT
- 探索动态追踪的新边界——《DTrace与SystemTap实战》开源项目
齐游菊Rosemary
探索动态追踪的新边界——《DTrace与SystemTap实战》开源项目去发现同类优质开源项目:https://gitcode.com/1、项目介绍在软件开发和系统监控的领域中,动态追踪是一个强大的工具,它让我们能够深入了解程序执行的细节,以及操作系统内部的工作机制。dtrace-stap-book是一本开源电子书,专为那些想要掌握DTrace和SystemTap这两款领先的动态追踪工具的人而设计
- 探索 Linux 系统性能的利器:DTrace for Linux
明俪钧
探索Linux系统性能的利器:DTraceforLinux去发现同类优质开源项目:https://gitcode.com/本文将向您介绍一个强大的Linux性能分析工具——DTrace。通过使用DTrace,您可以更深入地了解您的系统行为,并发现潜在的性能瓶颈。什么是DTrace?DTrace是一种动态跟踪框架,最初由SunMicrosystems开发并引入Solaris操作系统。DTrace提供
- Android仿人人客户端(v5(2)
2401_87555477
androidharmonyos华为
@OverrideprotectedvoidsetupView(){mTopNavbar=(TopNavbar)findViewById(R.id.rl_top_navbar);mWebView=(WebView)findViewById(R.id.wv_auth);mWebView.setVerticalScrollBarEnabled(false);mWebView.setHorizontal
- Domain Name System
竹某
互联网应用网络网络协议服务器
目录一.BasicFunction&BriefHistory二.从数据库层面理解DNS2.1DomainNamespace&ResourceRecord2.2DNSserver2.3DNSresolver三.从协议层面理解DNS3.1DNSserver正确解析domainname返回IP地址的方法3.1.1递归方法解析域名3.1.2迭代方法解析域名3.2DNSserver提高域名解析效率的缓存机制
- DNS (Domain Name System) - 域名系统
dlz0836
网络tcp/ip
DNS(域名系统)是互联网中的一个关键系统,负责将人类易于记忆的域名(如www.example.com)转换为计算机能理解的IP地址(如192.168.1.1)。DNS使得我们不需要记住一长串数字的IP地址,而只需使用简洁的域名即可访问网站或网络服务。一、DNS基本概念1.域名(DomainName)域名是互联网中标识一个特定计算机或网络服务的名称,分为多个级别。最常见的顶级域名(TLD)包括.c
- DNS, domain name system
yourkin666
计网八股网络服务器linux
DNS是一种应用层协议和http/https是同一等级的其传输层主要用的是udp,也可能用tcpDNS协议完成的作用:查域名对应的ipDNS服务器完成的作用:存储域名->ip的映射DNS服务器有三个等级:根DNS,顶级域DNS,权威DNS过一遍DNS协议的运作过程1.用户请求-用户在浏览器中输入一个网址(例如`www.example.com`)-浏览器首先检查浏览器缓存,看看是否已有该域名的IP地
- 从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不相同
阳洞洞
数据结构
由于是有序顺序表,值相同的元素一定在连续的位置上,用类似于直接插入排序的思想,初始时将第一个元素视为非重复的有序表。之后依次判断后面的元素是否是与前面非重复有序表的最后一个元素相同,若相同则继续向后判断,若不同则插入到前面的非重复有序表的最后,直至判断到表尾为止。#defineInitSize100typedefstruct{ElemType*data;intMaxSize;intlength;}
- Ubuntu linux crash core dump 文件路径
cbruno
linuxubuntu运维
网上搜索了很多文章,看了之后,发现还是这一篇说的清楚。16.04-WheredoIfindthecoredumpinubuntu16.04LTS?-AskUbuntu
- ios内付费
374016526
ios内付费
近年来写了很多IOS的程序,内付费也用到不少,使用IOS的内付费实现起来比较麻烦,这里我写了一个简单的内付费包,希望对大家有帮助。
具体使用如下:
这里的sender其实就是调用者,这里主要是为了回调使用。
[KuroStoreApi kuroStoreProductId:@"产品ID" storeSender:self storeFinishCallBa
- 20 款优秀的 Linux 终端仿真器
brotherlamp
linuxlinux视频linux资料linux自学linux教程
终端仿真器是一款用其它显示架构重现可视终端的计算机程序。换句话说就是终端仿真器能使哑终端看似像一台连接上了服务器的客户机。终端仿真器允许最终用户用文本用户界面和命令行来访问控制台和应用程序。(LCTT 译注:终端仿真器原意指对大型机-哑终端方式的模拟,不过在当今的 Linux 环境中,常指通过远程或本地方式连接的伪终端,俗称“终端”。)
你能从开源世界中找到大量的终端仿真器,它们
- Solr Deep Paging(solr 深分页)
eksliang
solr深分页solr分页性能问题
转载请出自出处:http://eksliang.iteye.com/blog/2148370
作者:eksliang(ickes) blg:http://eksliang.iteye.com/ 概述
长期以来,我们一直有一个深分页问题。如果直接跳到很靠后的页数,查询速度会比较慢。这是因为Solr的需要为查询从开始遍历所有数据。直到Solr的4.7这个问题一直没有一个很好的解决方案。直到solr
- 数据库面试题
18289753290
面试题 数据库
1.union ,union all
网络搜索出的最佳答案:
union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
2.索引有哪些分类?作用是
- Android TV屏幕适配
酷的飞上天空
android
先说下现在市面上TV分辨率的大概情况
两种分辨率为主
1.720标清,分辨率为1280x720.
屏幕尺寸以32寸为主,部分电视为42寸
2.1080p全高清,分辨率为1920x1080
屏幕尺寸以42寸为主,此分辨率电视屏幕从32寸到50寸都有
适配遇到问题,已1080p尺寸为例:
分辨率固定不变,屏幕尺寸变化较大。
如:效果图尺寸为1920x1080,如果使用d
- Timer定时器与ActionListener联合应用
永夜-极光
java
功能:在控制台每秒输出一次
代码:
package Main;
import javax.swing.Timer;
import java.awt.event.*;
public class T {
private static int count = 0;
public static void main(String[] args){
- Ubuntu14.04系统Tab键不能自动补全问题解决
随便小屋
Ubuntu 14.04
Unbuntu 14.4安装之后就在终端中使用Tab键不能自动补全,解决办法如下:
1、利用vi编辑器打开/etc/bash.bashrc文件(需要root权限)
sudo vi /etc/bash.bashrc
接下来会提示输入密码
2、找到文件中的下列代码
#enable bash completion in interactive shells
#if
- 学会人际关系三招 轻松走职场
aijuans
职场
要想成功,仅有专业能力是不够的,处理好与老板、同事及下属的人际关系也是门大学问。如何才能在职场如鱼得水、游刃有余呢?在此,教您简单实用的三个窍门。
第一,多汇报
最近,管理学又提出了一个新名词“追随力”。它告诉我们,做下属最关键的就是要多请示汇报,让上司随时了解你的工作进度,有了新想法也要及时建议。不知不觉,你就有了“追随力”,上司会越来越了解和信任你。
第二,勤沟通
团队的力
- 《O2O:移动互联网时代的商业革命》读书笔记
aoyouzi
读书笔记
移动互联网的未来:碎片化内容+碎片化渠道=各式精准、互动的新型社会化营销。
O2O:Online to OffLine 线上线下活动
O2O就是在移动互联网时代,生活消费领域通过线上和线下互动的一种新型商业模式。
手机二维码本质:O2O商务行为从线下现实世界到线上虚拟世界的入口。
线上虚拟世界创造的本意是打破信息鸿沟,让不同地域、不同需求的人
- js实现图片随鼠标滚动的效果
百合不是茶
JavaScript滚动属性的获取图片滚动属性获取页面加载
1,获取样式属性值
top 与顶部的距离
left 与左边的距离
right 与右边的距离
bottom 与下边的距离
zIndex 层叠层次
例子:获取左边的宽度,当css写在body标签中时
<div id="adver" style="position:absolute;top:50px;left:1000p
- ajax同步异步参数async
bijian1013
jqueryAjaxasync
开发项目开发过程中,需要将ajax的返回值赋到全局变量中,然后在该页面其他地方引用,因为ajax异步的原因一直无法成功,需将async:false,使其变成同步的。
格式:
$.ajax({ type: 'POST', ur
- Webx3框架(1)
Bill_chen
eclipsespringmaven框架ibatis
Webx是淘宝开发的一套Web开发框架,Webx3是其第三个升级版本;采用Eclipse的开发环境,现在支持java开发;
采用turbine原型的MVC框架,扩展了Spring容器,利用Maven进行项目的构建管理,灵活的ibatis持久层支持,总的来说,还是一套很不错的Web框架。
Webx3遵循turbine风格,velocity的模板被分为layout/screen/control三部
- 【MongoDB学习笔记五】MongoDB概述
bit1129
mongodb
MongoDB是面向文档的NoSQL数据库,尽量业界还对MongoDB存在一些质疑的声音,比如性能尤其是查询性能、数据一致性的支持没有想象的那么好,但是MongoDB用户群确实已经够多。MongoDB的亮点不在于它的性能,而是它处理非结构化数据的能力以及内置对分布式的支持(复制、分片达到的高可用、高可伸缩),同时它提供的近似于SQL的查询能力,也是在做NoSQL技术选型时,考虑的一个重要因素。Mo
- spring/hibernate/struts2常见异常总结
白糖_
Hibernate
Spring
①ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
缺少aspectjweaver.jar,该jar包常用于spring aop中
②java.lang.ClassNotFoundException: org.sprin
- jquery easyui表单重置(reset)扩展思路
bozch
formjquery easyuireset
在jquery easyui表单中 尚未提供表单重置的功能,这就需要自己对其进行扩展。
扩展的时候要考虑的控件有:
combo,combobox,combogrid,combotree,datebox,datetimebox
需要对其添加reset方法,reset方法就是把初始化的值赋值给当前的组件,这就需要在组件的初始化时将值保存下来。
在所有的reset方法添加完毕之后,就需要对fo
- 编程之美-烙饼排序
bylijinnan
编程之美
package beautyOfCoding;
import java.util.Arrays;
/*
*《编程之美》的思路是:搜索+剪枝。有点像是写下棋程序:当前情况下,把所有可能的下一步都做一遍;在这每一遍操作里面,计算出如果按这一步走的话,能不能赢(得出最优结果)。
*《编程之美》上代码有很多错误,且每个变量的含义令人费解。因此我按我的理解写了以下代码:
*/
- Struts1.X 源码分析之ActionForm赋值原理
chenbowen00
struts
struts1在处理请求参数之前,首先会根据配置文件action节点的name属性创建对应的ActionForm。如果配置了name属性,却找不到对应的ActionForm类也不会报错,只是不会处理本次请求的请求参数。
如果找到了对应的ActionForm类,则先判断是否已经存在ActionForm的实例,如果不存在则创建实例,并将其存放在对应的作用域中。作用域由配置文件action节点的s
- [空天防御与经济]在获得充足的外部资源之前,太空投资需有限度
comsci
资源
这里有一个常识性的问题:
地球的资源,人类的资金是有限的,而太空是无限的.....
就算全人类联合起来,要在太空中修建大型空间站,也不一定能够成功,因为资源和资金,技术有客观的限制....
&
- ORACLE临时表—ON COMMIT PRESERVE ROWS
daizj
oracle临时表
ORACLE临时表 转
临时表:像普通表一样,有结构,但是对数据的管理上不一样,临时表存储事务或会话的中间结果集,临时表中保存的数据只对当前
会话可见,所有会话都看不到其他会话的数据,即使其他会话提交了,也看不到。临时表不存在并发行为,因为他们对于当前会话都是独立的。
创建临时表时,ORACLE只创建了表的结构(在数据字典中定义),并没有初始化内存空间,当某一会话使用临时表时,ORALCE会
- 基于Nginx XSendfile+SpringMVC进行文件下载
denger
应用服务器Webnginx网络应用lighttpd
在平常我们实现文件下载通常是通过普通 read-write方式,如下代码所示。
@RequestMapping("/courseware/{id}")
public void download(@PathVariable("id") String courseID, HttpServletResp
- scanf接受char类型的字符
dcj3sjt126com
c
/*
2013年3月11日22:35:54
目的:学习char只接受一个字符
*/
# include <stdio.h>
int main(void)
{
int i;
char ch;
scanf("%d", &i);
printf("i = %d\n", i);
scanf("%
- 学编程的价值
dcj3sjt126com
编程
发一个人会编程, 想想以后可以教儿女, 是多么美好的事啊, 不管儿女将来从事什么样的职业, 教一教, 对他思维的开拓大有帮助
像这位朋友学习:
http://blog.sina.com.cn/s/articlelist_2584320772_0_1.html
VirtualGS教程 (By @林泰前): 几十年的老程序员,资深的
- 二维数组(矩阵)对角线输出
飞天奔月
二维数组
今天在BBS里面看到这样的面试题目,
1,二维数组(N*N),沿对角线方向,从右上角打印到左下角如N=4: 4*4二维数组
{ 1 2 3 4 }
{ 5 6 7 8 }
{ 9 10 11 12 }
{13 14 15 16 }
打印顺序
4
3 8
2 7 12
1 6 11 16
5 10 15
9 14
13
要
- Ehcache(08)——可阻塞的Cache——BlockingCache
234390216
并发ehcacheBlockingCache阻塞
可阻塞的Cache—BlockingCache
在上一节我们提到了显示使用Ehcache锁的问题,其实我们还可以隐式的来使用Ehcache的锁,那就是通过BlockingCache。BlockingCache是Ehcache的一个封装类,可以让我们对Ehcache进行并发操作。其内部的锁机制是使用的net.
- mysqldiff对数据库间进行差异比较
jackyrong
mysqld
mysqldiff该工具是官方mysql-utilities工具集的一个脚本,可以用来对比不同数据库之间的表结构,或者同个数据库间的表结构
如果在windows下,直接下载mysql-utilities安装就可以了,然后运行后,会跑到命令行下:
1) 基本用法
mysqldiff --server1=admin:12345
- spring data jpa 方法中可用的关键字
lawrence.li
javaspring
spring data jpa 支持以方法名进行查询/删除/统计。
查询的关键字为find
删除的关键字为delete/remove (>=1.7.x)
统计的关键字为count (>=1.7.x)
修改需要使用@Modifying注解
@Modifying
@Query("update User u set u.firstna
- Spring的ModelAndView类
nicegege
spring
项目中controller的方法跳转的到ModelAndView类,一直很好奇spring怎么实现的?
/*
* Copyright 2002-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* yo
- 搭建 CentOS 6 服务器(13) - rsync、Amanda
rensanning
centos
(一)rsync
Server端
# yum install rsync
# vi /etc/xinetd.d/rsync
service rsync
{
disable = no
flags = IPv6
socket_type = stream
wait
- Learn Nodejs 02
toknowme
nodejs
(1)npm是什么
npm is the package manager for node
官方网站:https://www.npmjs.com/
npm上有很多优秀的nodejs包,来解决常见的一些问题,比如用node-mysql,就可以方便通过nodejs链接到mysql,进行数据库的操作
在开发过程往往会需要用到其他的包,使用npm就可以下载这些包来供程序调用
&nb
- Spring MVC 拦截器
xp9802
spring mvc
Controller层的拦截器继承于HandlerInterceptorAdapter
HandlerInterceptorAdapter.java 1 public abstract class HandlerInterceptorAdapter implements HandlerIntercep