- 博客(21)
- 问答 (1)
- 收藏
- 关注
原创 Zuul网关源码跟踪之Zuul四种过滤器的生命周期及执行异常时的细节探讨
本篇文章记录的是笔者在学习Zuul时对四大Filters的疑惑及求解过程。文章结尾有总结结论,可以直接看结论(所有内容均来自于源码跟踪后总结)。pre、route、post类型过滤器链执行过程中出现异常,都会由error过滤器链进行异常处理,但只有pre、route类型产生的异常会在error类型过滤器链处理后,再交由post类型过滤器链进行二次处理。
2023-12-04 19:09:53 1130
原创 Centos7.4重启网络失败(虚拟机无法连接互联网)Job for network.service failed
本篇博客主要是记录在使用VMware安装Centos7.4时,虚拟机无法连接互联网问题(重启网络指令执行失败 / 重启成功但无法ping通外网)。启动网络服务时提示 Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
2023-09-09 22:38:33 7163 10
原创 ActiveMQ高级特性——死信队列及常用属性说明
该文章主要针对ActiveMQ高级特性中的死信队列进行相关的介绍和说明,由于目前网上相关知识的介绍有所欠缺,因此本文着重介绍在activemq.xml中对死信队列的相关策略进行配置时的属性说明。
2022-07-28 03:51:23 1144 1
原创 在Linux中安装ActiveMQ并通过本地访问MQ管理控制台
在虚拟机Linux系统中安装ActiveMQ时的常见注意事项,以及通过windows环境访问Linux的MQ控制台管理页面时失败的解决策略。
2022-07-03 14:34:24 2214
原创 SpringMVC中各类请求和匹配Servlet处理的问题详解
前言:本次文章主要是介绍在SpringMVC项目中,我们的页面上的所有请求是如何被服务器进行处理的。前置知识(重点):页面上的所有请求,到服务器上都需要有一个对应的Servlet来进行处理。Servlet中的service()方法就是用来处理所匹配到的请求的。一个请求最少被一个Servlet处理,如果处理过程没有发生请求转发或重定向,那么浏览器发送的请求只会被服务器的一个Servlet的service()处理,并携带处理结果返回给浏览器。页面中,除了普通的超链接、表单提交等常见的能发起请求的标
2021-10-26 15:38:22 795 1
原创 Spring中的事务传播行为
前言:在Spring中,我们可以通过声明式事务,实现对数据库操作的事务管理。其中,在声明式事务时,有一个事务的属性为propagation,即事务的传播行为。今天,就来讨论该属性的作用。什么是事务的传播行为? 首先,事务的传播行为,可以拆成两部分理解,即事务的传播,和事务的行为。指的是,当有两个或以上的方法同时声明为事务方法(事务方法:即加了事务管理的增删改方法)时,如果在一次程序执行过程中,这些事务方法彼此间相互调用,
2021-10-18 01:47:54 3208 1
原创 SSM中的DAO层的编码小技巧——利用运行时异常解决返回值歧义
我们在写SSM时,需要写DAO层与数据库进行交互,然而,我们会发现,与数据库的交互,肯定会有异常出现,此时需要我们进行捕获。所以通常而言,我们的DAO层的代码都会如下:比如上面的例子,查询商城的订单详情,我们需要向数据库进行查询。我们分析下上面的代码,可以发现,该方法的执行结果会有三种情况出现:如果成功查询,那么会返回我们想要的数据,执行完try语句后就直接结束该方法。如果成功查询,并且查询的结果刚好为空,即数据库并没有符合要求的行数据,那么该方法也会在执行完try语句后返回null,然后结束
2021-10-06 21:57:24 377
原创 字节数组与String类型转换时的默认字符集
引入:在学习javaWeb时,碰到需要将字节数组和String类型做相互转换的,如使用Base64编码时。那么,我们知道String其实提供了API:getBytes() 将字符串转换为字节数组,而通过构造器new String(byte[]) 又可以将字节数组重新转化为字符串,对吧?但我们经常需要跟客户端做交互,此时很容易在这两个转换之间发生乱码问题。所以今天,我们一起来解决这个问题吧!首先,我们需要明白,要使 字节数组 -> 字符串,或 字符串 -> 字节数组,两个过程来去自如而不乱码,
2021-10-06 21:37:14 2538
原创 JDK-ThreadLocal的理解与解读
前言:关于ThreadLocal,JDK文档中解释得有些晦涩,这几天看一个培训视频正好用到了该类,很多的弹幕兄弟也没整明白这是个啥,所以写篇文章谈下我对这个类的理解。先上官方文档的中文解释:这个类提供线程局部变量。 这些变量与其正常的对应方式不同,因为访问一个的每个线程(通过其get或set方法)都有自己独立初始化的变量副本。 ThreadLocal实例通常是希望将状态与线程关联的类中的私有静态字段(例如,用户ID或事务ID)。个人解读:首先,这个类的主要作用,是为每个线程提供一个专属于该线程的内
2021-09-28 20:56:27 157
原创 JavaBean的属性命名和属性值注入的关系
进入JavaEE阶段后,我们的实体类(Model)都是以一个JavaBean的形式出现的,在使用框架等可以实现属性值的自动注入。先说下什么是JavaBean,其实就是一个普通的类,但他有一些规范约束:Ⅰ提供一个公有的无参构造函数.Ⅱ需要被序列化并且实现了java.io.Serializable接口.Ⅲ该类的属性一般是私有(private)修饰的.Ⅳ可能有一系列的公有的"getter"或"setter"的访问器方法.Ⅴ该类是一个公有类,并且用package语句声明属于某一个包.划重点,要求
2021-09-23 18:18:59 411
原创 JavaWeb关于在IDEA中整合tomcat部署项目的一些思考
关于IDEA对tomcat服务器的整合在IDEA中整合tomcat服务器,其实是将tomcat的一些文件夹进行了拷贝,主要拷贝了三个文件夹的内容:conf文件夹存放tomcat运行实例对应的配置;log文件夹存放tomcat运行时产生的日志信息;work文件夹是tomcat运行时的工作目录,用于存放部署的项目在运行过程中jsp翻译为servlet的源码,及session的保存。说白了,存放的是部署在服务器的项目运行时产生的数据,其中,每个项目都有自己的文件夹,对应的目录名与项目对外提供的访问路径“
2021-09-11 19:27:04 582 2
原创 数据库事务隔离级别的理解(以mysql为例)
解决不可重复读,是在开启事务后,先查询某个表后,对该表的结果进行了保存;此后在该事务中,有关此次表的查询,都是以副本表来查出结果的。幻读,是本事务先对某表进行查询,之后其他事务对该表插入数据后提交,然后本事务再次对该表进行增删改操作时,虽然查询出的结果仍然没有新插入的数据,但增删改由于需要对底层的数据做修改了,因为会出现新数据受影响的提示,但再次查询该表时,仍然看不到该新插入的数据....
2021-09-04 14:52:10 299
原创 IDEA中导入第三方jar包
如何在IDEA中导入第三方jar包jar包就指第三方提供的开源的API,这些API不属于JDK的,需要通过导入才能使用。导入步骤如下:一、在工程下新建一个文件夹,习惯性叫做lib或libs(library的缩写),然后将下载好的jar方复制进去注意:从网上下载的第三方库很多时候是压缩文件,需要解压成jar包后才可以复制进去IDE二、复制好后,右键该jar包,选中“Add as Library…”三、选中后直接点击OK按钮即可成功添加四、效果如下添加成功前,如图一,无法打开jar包。添
2021-08-13 22:17:04 9549 4
原创 Java中泛型的?和T的区别
前言:jdk5.0后java提供了泛型,用大写字母表示,一般用T,表示是一个不确定的具体的类型。?表示是一群不确定的具体的类型,但?是它们的父类。正文:?和T的区别T:代表一种类型。?:通配符,泛指所有的类型,是所有类型的父类。用法:一般而言,T主要用于泛型类的定义、泛型方法的定义,还有具体的变量的类型定义上,如:定义泛型类:class Super<T>{}定义泛型方法:public <T> void testMethod(T[] a, Collection&
2021-06-03 19:11:47 12511
原创 java中泛型擦除时不完全等同于Object的原因分析
前言在java中,泛型是指一个类型符号,通过在类、接口或方法中定义泛型,可以使数据更具有安全性。但泛型在使用时,以泛型类为例,虽然类的定义中有声明泛型,但在实际开发中,如果使用该类没有特别注明泛型的具体类型,也没有任何问题。比如:List< T >,ArrayList< T >等java提供的API,很多都是属于有泛型声明的,但如果我们在创建实例时不指出具体的泛型类型,也可以很好的利用该实例。如下: List list = new ArrayList(); list.add
2021-06-03 16:16:47 434
转载 关于迭代器模式中的remove()操作和集合容器的remove()操作的区别
迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节。在学习java的集合框架中,难免涉及到对集合对象的遍历操作,由于集合的实现类比较多,且不一定有序,因此无法像数组一样通过下标来遍历。基于这点,官方提供了迭代器,使用迭代器时不需要关注容器内部的结构,因此用迭代器可以很方便实现对集合对象的遍历。迭代器的工作原理:主要是依靠一个内部游标,通过游标的移动,来实现对容器的读取,因此迭代器本身并不具备存储数据的功能,要有迭代器对象,得先有容器对象。那么,如果我们通
2021-06-01 22:48:59 604 2
原创 关于Calendar中的set操作的理解
前因:在学习Calendar类的相关操作时发现,可以通过该类的set()方法设置日期时间的某一部分,查看源码发现,相应的日期时间变量全都是static final类型变量,即静态常量,觉得很不可思议。下面写写关于我查阅资料后的一些理解,希望对看官们有所帮助:先上API中关于Calendar属性变量的定义:可以发现很多字段都被static修饰,点开其中一个进行查看,如下:从截图可以发现,所有的关于日期/时间的属性都设置为了static final,即常量,那么为什么我们可以通过set()对Ca
2021-05-07 22:55:49 1801
原创 关于利用字符串String自带方法获得的返回值的存储位置
关于String类型的存储说明String类型作为新手最开始接触的引用类型而言,其存储特点与普通的引用类型有所不同。String类型可以存储在堆空间(通过new+构造器方式声明)中。String还可以通过字面量声明方式,存储在方法区的字符串常量池中。 String s1 = "helloWORLD"; //字面量方式,存储在常量池中。 String s = new String("HELLOWORLD"); //new+构造器方式,存储在堆空间中。那么这篇文章想
2021-05-05 20:51:02 367
原创 探究Lock控制的代码块出现异常后线程是否会自动释放锁
探究Lock控制的代码块出现异常后线程是否会自动释放锁Lock的说明接口是JDK5.0以后新出的对同步机制的补充,其与synchronized的最大区别就在于Lock接口是必须手动上锁和手动解锁的,不管在什么情况下。本文章主要是为了测试需要同步的代码在出现了异常后,Lock是否会自动释放锁,从而探究在利用Lock实现同步机制时,是否一定要将需要同步的代码块全都放在try-catch-finally中。测试Lock上锁的同步代码块出现异常后是否会自动释放锁测试思路:创建一个线程类,并声明一个静态锁,
2021-04-28 13:22:25 2271 2
原创 SSM项目资源路径没有问题跳转时却404错误
前引:今天写了个SSM项目,写完启动项目后发现,在信息提交页面(JSP)信息填写完成后提交信息,却跳转不到控制器,出现了404问题。检查排错:(0)在控制器中加入了输出测试语句,结果测试语句没有输出,说明问题出现在JSP和控制器之间的跳转上。(1)检查JSP的跳转路径和控制器的注解所写映射地址,没有出错。(2)检查前端控制器配置和控制器扫描机制配置,没有出错。(3)检查各个文件的位置关系。结果发现,web.xml文件位置放错了!!!放在了WebContent的一级目录,也就是跟WEB-INF同一
2020-06-04 10:22:23 2370
原创 SSM项目中可以访问控制器类但JSP却404的原因
前引:今天写了SSM项目,初学不久,项目的构成是:信息收集页面(JSP) -> 控制器类处理 -> 返回结果JSP页面出现的问题:启动项目后,JSP页面无法正常显示,直接返回404初步改进:在控制器类中加入了输出语句作为测试,再次部署项目重新启动结果:输出语句在控制台打印了出来,但浏览器还是显示404上图可以看出,页面还是404,但控制台输出了test语句说明控制器类是可达的,但JSP页面无法显示最终结果处理:经常一番排查才发现,原来是因为web.xml文件中的前端控制器的url
2020-06-04 00:19:30 1051
空空如也
JavaWeb中,请求转发过程中的Request对象在不同的Servlet中地址不同?
2021-09-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人