自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

子謀的博客

此博客作为学习知识记录,大佬多多指教,勿喷小弟!

  • 博客(20)
  • 收藏
  • 关注

转载 新版本Tomcat 静态文件中文乱码

为了跟踪此问题,笔者翻阅了Tomcat代码提交记录,其中2017年有一条提交记录代码中在默认的servlet中未指定编码的情况下,自动读取操作系统中的文件编码当作静态文件的编码windows通常是gbk编码,linux通常是utf8编码。但是现在大部分程序默认都使用utf8编码,就是这处逻辑导致了新版本tomcat处理静态文件时会产生中文乱码,这种自作聪明的做法很显然不符合java一次编译到处运行的思想。这个问题具体影响的版本为:8.5.17及以上,7.0.80及以上,9.0解决方法有如下两种,

2020-12-31 17:01:31 604 1

原创 Java内部类序列化问题

Java内部类序列化不仅自身需实现java.io.Serializable接口,其所在的外部类也需要实现序列化接口。原因:内部类中含有隐藏的指向外部类的引用,所以在序列化内部类时,该引用作为属性也需要能序列化,所以外部类也需要实现java.io.Serializable...

2020-10-24 23:13:43 278

原创 注解@RequestParam一定要指定接收的参数名称

@RequestParam作用:该注解描述了一个方法参数变量应该被一个web请求参数绑定。如果使用@RequestParam不指定具体的web请求参数名称,那么默认其与方法变量参数名称相同。那么问题来了,如果使用@RequestParam不指定具体的web请求参数名称,SpringMVC如何做到得知一个方法参数变量的名称的呢?你可能想可不可以通过反射,确实是通过反射获取。那么反射为什么能获取,除非在编译的时候保留了原本参数名称,否则Class类中一样得不到原本的参数名称。最终导致的问题就是,如果编译不保

2020-09-29 01:49:53 2968

原创 xshell无法连接vmware虚拟机

一、问题描述本机使用Xshell无法连接VMware中的虚拟机,并且从本机也无法ping通虚拟机,虚拟机也无法ping通本机物理机。二、环境&场景物理机:windows10系统, Xshell 6,VMware Workstation 16 Pro虚拟机:CentOS 7系统虚拟机采用NAT网络模式,使用物理机的网络适配器是VMnet8,规划网段为192.168.141.0/24。CentOS 7 Linux系统使用静态IP配置。具体网络配置如下:物理机IP地址:192.168.66

2020-09-29 01:47:50 2624

原创 理解字符集和字符编码(Charset & Encoding)

理解字符集和字符编码(Charset & Encoding)前言一、字符集和字符编码的理解二、常用字符集和字符编码1.ASCII1.1.标准ASCII1.2.扩展ASCII2. ISO-8859-13. GB23124. GBK5. Unicode字符集5.1. UTF-8编码5.2. UTF-16编码5.3. UTF-32编码5.4. 字节序常见疑问前言由于字符集和字符编码的种类比较多、历史也很久远,在许多方面不好理解。在此梳理总结我对字符集和字符编码的认识与理解,以供查阅。若有不对,欢迎指正

2020-09-07 16:45:03 1414

原创 Java线程状态切换与Java中断

Java线程状态切换与Java中断前言Java的6种线程状态Java线程状态切换图Java中断前言最近看到synchronized和ReentrantLock两者的不同点时有这么一句:Lock可以让等待锁的线程响应中断,而synchronized 却不能。对此进行了实验,发现是正确的。接着又看了Java中断的概念和讲解,发现没整明白,反而给我整懵了。于是从下面的角度开始出发重新理解Java中断。ReentrantLock底层挂起线程是通过java.util.concurrent.locks.LockS

2020-07-19 23:22:59 339

原创 分析Spring如何管理Hibernate事务

分析Spring如何管理Hibernate事务前言JDBC事务Hibernate事务Spring管理Hibernate事务总结前言本文从源码层面分析Spring是如何来管理Hibernate事务的,我认为换作其它的ORM框架也是类似的思想,以此来触类旁通。如果分析有误,欢迎指正。分析路线是从JDBC管理事务 => Hibernate管理事务 => Spring管理Hibernate事务,逐步递进。JDBC事务我们先回忆一下JDBC是如何开启事务的,因为无论再怎么高级的封装,最终的根本还

2020-06-05 20:19:31 433

原创 阻塞队列ArrayBlockingQueue源码理解(JDK 1.8)

阻塞队列ArrayBlockingQueue源码理解(JDK 1.8)阻塞队列简介类继承结构入队列操作出队列操作分析总结阻塞队列简介阻塞队列顾名思义是一个队列的数据结构,ArrayBlockingQueue采用数组来实现这个队列,与其对应的LinkedBlockingQueue则采用链表来实现的。那么既然是一个队列,那么就会有入队列和出队列两种操作。那阻塞队列中的阻塞代表的是什么意思呢?我认...

2020-04-29 22:39:13 164

原创 通过ReentrantLock理解AbstractQueuedSynchronizer抽象队列同步器(JDK 1.8)

通过ReentrantLock理解AbstractQueuedSynchronizer抽象队列同步器(JDK 1.8)什么是AbstractQueuedSynchronizer从ReentrantLock到AQSAbstractQueuedSynchronizer核心方法AbstractQueuedSynchronizer中的state信号量AbstractQueuedSynchronizer中的...

2020-02-21 00:05:51 213 1

原创 Java中锁的分类及概念理解

线程安全问题指的是由多个线程对共享变量进行写操作时导致数据出错,此时需要同步机制来控制线程按次序访问数据,那么如何同步,我想锁就是保证同步的基石。锁对象:我认为是一个信号量用来标记或区分是否有线程已经获取了锁并进入了需要同步的代码里(即是否加锁)。如synchronized后面括号中的对象(具体是在该对象的对象头中做标记),AQS(AbstractQueuedSynchronizer)抽象队列同步器中的state对象(是一个int类型的数值,在ReentrantLock中state大于0表示已经有线

2019-12-23 23:59:30 306

原创 Tomcat 8.5.9不接收带有|{}字符的URL,返回状态码400

问题描述在Tomcat部署了两个项目,其中一个会对另一个发起HTTP请求获取查询的结果。但是请求一直返回400错误。HTTP状态码400代表错误的请求(bad request)或者无效的域名(invalid hostname)。返回400错误的可能性:参数个数问题参数类型问题,导致转换器转换失败请求映射重复,例:在spring mvc出现了相同的映射地址@RequestMapping...

2019-12-11 16:59:55 776

原创 Linux打包压缩命令 - tar,gzip,bzip2

Linux打包压缩命令扩展名常见压缩指令gzipbzip2打包指令: tar压缩和打包概念:因为压缩程序只能对单个文件进行压缩和解压,所以需要一个可以将多个文件打包成一个文件的打包软件(tar)。这样有很多文件需要压缩时则可打包成一个文件后再进行压缩,两者相辅相成。扩展名虽然在Linux系统中扩展名对文件没有什么实际的作用,但是从文件扩展名就能知道对应的文件类型,就可以方便的选择对应的程序对...

2019-11-27 17:42:58 296

原创 ArrayList源码阅读记录(JDK 1.8)

ArrayList源码阅读记录(JDK 1.8)类继承结构ArrayList中存储的数据结构构造方法添加元素删除元素查询元素修改元素类继承结构public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.i...

2019-11-22 16:41:04 122

原创 提交的表单中disable的select标签其参数不会被采集传输

问题描述在一个form表单中有一个select标签但被disable了,目的是为了不能使用此选择框但是可以显示值,select标签也没有readonly属性只有disable属性。disable定义及用法:disabled 属性规定禁用下拉列表。被禁用的下拉列表既不可用,也不可点击。<select disabled="value">问题:当提交表单时,disabled为t...

2019-11-22 16:36:55 529

原创 HashMap源码理解(JDK1.8)

HashMap中存储数据的结构是数组加上链表或者是数组加上红黑树。在ArrayList中存储数据用的数组,在LinkedList中存储数据用的链表,这两种数据结构在查询某个数据的时候都会遍历数组或链表来找到相应的数据再返回,这样的时间复杂度将是O(n)。如果有一种算法可以将一个元素算出一个对应不变的值,再利用数组的特性,将这个计算出来的特征值作为数组的下标索引,那么查找某个元素的时候只需计算出这个值即可通过数组取得这个元素,这样时间复杂度将是常数。这个计算出来的特征值由哈希算法也可叫做散列算法算

2019-11-11 10:51:43 607

原创 Linux文件复制cp

Linux文件复制命令cpcp命令可以复制单个文件、多个文件或者目录。命令格式命令格式根据来源文件的个数可以分为两种:#复制单个来源文件cp [-adfilprsu] 来源文件(source) 目标文件(destination)#复制多个来源文件cp [options] source1 source2 source3 .... directory命令选项-a :相当于选项 ...

2019-10-28 15:42:16 304

原创 谈一谈对元注解@Inherited的理解

谈一谈对元注解@Inherited的理解引发思考起因@Inherited说明代码验证引发思考起因在工作中遇到的问题,问题是需要给许多类添加事务,添加事务的原因是这些类原来都继承了同一个父类,由于这个父类的改动导致每个类需要开启事务才能执行。所以使用Spring的事务注解@Transactional去标注每一个子类,后来了解到可以标注在其父类上,然后所有的子类均可继承到这个注解。这得归功于@In...

2019-10-18 10:39:46 215

原创 Linux例行工作排程(at,crontab 定时任务执行)

Linux例行工作排程即指在Linux中定时的运行任务,通常分为两类:只执行一次的定时任务和循环执行的定时任务。`crontab` :crontab 这个指令所设定的工作将会循环的一直执行下去!可循环的时间为分钟、小时、每周、每月或每年等。crontab 除了可以使用指令执行外,也可编辑 /etc/crontab 来支持。 让 crontab 可以生效的服务则是 crond 这个服务。`at `:at 是个可以处理仅执行一次就结束排程的指令,不过要执行 at 时, 必须要有 atd 这个服务

2019-10-17 14:17:52 449

原创 Java一些基本概念

在此记录我学习的笔记,方便以后查阅静态导入:import static +包(好比绝对路径和相对路径的问题)例:import static java.lang.System.out;//调用打印函数则可以这样调用out.println("hello");自动装箱:可以把一个基本数据类型直接赋给对应的包装类例:Integer i=1;//实际上Integer i=new Inte...

2019-10-16 17:43:49 113

原创 从java源代码到jar文件到exe可执行文件到setup安装文件

经过一番折腾终于成功将java源代码打包为jar包,再转换为exe执行文件,再转换为安装包。在这里记录下我的过程。需要用到的软件:exe4j,Inno setup。一、将源代码导出为jar文件1、右键单机想要导为jar文件的工程,选择Export。 ​2、选择Runable JAR file,可运行的jar文件 ​3、Launch configu...

2019-10-16 17:32:47 270

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除