自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

想到就写点东西的博客

等待变成咸鱼的那一天

  • 博客(79)
  • 问答 (1)
  • 收藏
  • 关注

原创 Apache Commons FileUpload 拒绝服务漏洞(CVE-2023-24998)

网上搜索资料得知解决办法是将 Commons FileUpload 升级到 1.5 及以上版本,注意就是fileupload包的升级,可能会导致commons-io包的版本不匹配。我测试了一下,commons-fileupload-1.5和commons-io-2.4应该是没问题的,在这里也提供jar包,有需要的可自行下载。前几天客户委托的第三方软件扫描出漏洞:Apache Commons FileUpload 拒绝服务漏洞(CVE-2023-24998)。

2024-03-28 11:02:19 190

原创 Long.getLong和parseLong的区别

最近项目上有小伙伴在string转long的时候,看到有getLong方法没多思考就使用了。自己写方法的时候名字也尽可能规范点,比如说这个getLong()方法要是叫getSystemPropLong之类的,估计就没这么多人用错了。毕竟jdk也是人写的,总会有不规范的地方。要实现字符串string转换成long,一般是用Long.parseLong(String s) ,大部分情况下性能最优。Long.getLong(String s)方法是获取系统参数,并将系统参数转为Long类型。

2023-07-19 15:53:53 789

原创 ORA-12704字符集不匹配 问题解决

通过日志发现是一个UNION ALL的连接语句出现的,根据资料发现,UNION ALL用法必须前后两个结果集的字段类型要完全相同才行。由于oracle如果该字段有内容,不能直接修改类型,需要新建个字段把旧数据拷贝过去,再把旧字段的内容清空才能修改类型。最近有客户新上线反馈,查询的时候报错:ORA-12704字符集不匹配。类型修改成一致后,可以正常查询。

2023-04-24 17:05:50 4017 1

转载 Linux 开启防火墙和指定端口

例: netstat -ntulp |grep 1935 //查看所有1935端口使用情况·–add-port=1935/tcp #添加端口,格式为:端口/通讯协议。netstat -ntlp //查看当前所有tcp端口·–permanent #永久生效,没有此参数重启后失效。–zone #作用域。

2023-04-12 19:12:54 243

原创 失败,因为下列 SET 选项的设置不正确: ‘ARITHABORT‘。请确保 SET 选项正确无误,可以用于 计算列上的索引视图和/或索引和/或筛选的索引和/或查询通知和/或 XML 数据类型方法和/

execute sql error: CREATE INDEX 失败,因为下列 SET 选项的设置不正确: 'ARITHABORT'。请确保 SET 选项正确无误,可以用于 计算列上的索引视图和/或索引和/或筛选的索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作。前几天发现sqlserver数据库有几条数据重了,明明设置了唯一索引,为啥呢?解决办法:使用管理员权限执行以下语句即可。执行后重新创建索引,成功创建。

2023-03-28 17:38:55 390

原创 Linux统计java线程状态

Linux系统没有图形界面,用jvisualvm工具监控线程数和状态可能不方便,可以使用jstack命令统计。然后cd到jdk的bin目录,使用jstack命令,目的是生成一个dump。第二列就是进程号,找到相应服务的进程号。首先使用命令获取服务的进程号pid。最后统计dump里面的线程状态。

2023-03-06 10:32:26 569

原创 Linux jmap命令报错:unable to open socket file

网上资料是说可能是权限问题,登录用户和启动服务的用户不一致;或者是/tmp/hsperfdata_$USER目录下面没有pid文件。最后解决:java服务使用了jetty的线程池QueuedThreadPool,该版本线程数最大值是250,后面发现服务把线程数用完了,导致新线程一直无法创建。前几天客户的java服务出问题了,反馈说业务都不能操作,页面也不能登了,像宕机一样。登上Linux服务器一看,服务还在啊,也没内存溢出。可能也因为该原因无法使用jmap和jstack命令,重启服务后一切正常。

2023-03-03 10:22:33 1577

原创 Linux启动tomcat提示Cannot find ./catalina.sh

linux启动tomcat,start.sh之后提示Cannot find ./catalina.sh。解决办法:cd到tomcat的上层目录,对tomcat整个文件夹赋权。成功赋权后,即可正常启动tomcat。出现报错原因:权限不足。

2022-12-27 10:45:38 1544

转载 java过滤 \u、不可见的乱码

由于用户经常从excel,word等乱七八糟的地方copy内容过来,而其中有不可见的字符,导致输出内容看上去是对的,但放到文本编辑工具里发现,其实是多了一个零长度的字符(比如:\u2028,0000200B ZERO WIDTH SPACE),所以需要过滤掉不合法的unicode编码等特殊字符。

2022-11-02 10:30:59 2339

原创 根据jdk32位或64位 启动应用选择不同的内存

由于产品的jdk是免安装版的,即不会写入环境变量,所以稍微有点麻烦。最近做了一个优化需求,要写一个脚本,根据用户环境已安装的jdk是32位还是64位,来启动不同的java-xmx最大内存。linux系统中,即使是32位的jdk1.6,设置成Xmx为2G,也是能正常启动的,所以不需要修改shell脚本。,产品后面升级成64位了,但是还有许多存量客户使用旧的32位的jdk,这时候就需要根据位数来选择不同内存启动了。,通过这种方式来判断产品在运行的jdk的位数。因为产品使用的jdk是1.6,而。

2022-10-31 15:10:27 471

原创 Eclipse git切换分支后 sh脚本文件换行符自动修改的设置

现在很多系统都是windows开发环境,linux运行环境,而git会有一个转换换行符的自动设置,这会导致sh脚本文件经常会自动转换成\r\n,导致部署的时候才发现出错。无论在哪个设置页面,都是把autocrlf属性设置为false即可。这样切换分支的时候就不会自动修改换行符。由于 sh脚本文件在在Linux系统编写时,换行是\n,而在Windows系统编写时,换行是\r\n;所以在Linux中运行脚本时,系统会认为\r是一个真实的字符(不是换行符),导致运行错误。

2022-10-20 14:45:52 666

原创 与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。问题解决

可以看出是在做修改的时候发生的报错,从日志里面分析发现是两个不同的进程对同一张表进行update,但是修改的范围where id是不同的。后面发现问题是因为,该表没有给id设置索引导致,sqlserver如果没有索引默认update的时候会锁整个表,导致该死锁问题。解决方案:给id加上索引或者主键。

2022-10-18 10:26:34 5125

原创 fastjson格式化输出打印

java使用fastjson组装json报文的时候,如果直接.toString()打印出来字符串是很丑的,没有空格和缩进。SerializerFeature也是fastjson包里面的类。这样设置后,打印出来日志输出就会是格式化好的字符串了。

2022-10-14 15:48:38 2828

原创 idea设置类似 Eclipse的outline视图

菜单找到-视图(View)--> 工具窗口(Tool Windows)--> 结构(Structure)eclipse中有个视图叫outline,可以列出所有方法和变量,在一个类很多行数的时候非常有作用。

2022-09-29 19:24:50 1522

转载 linux too many open files解决办法

too many open files是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。如果你对你的程序有一定的解的话,应该对程序打开文件数(链接数)上限有一定的估算,如果感觉数字异常,请使用第一步的lsof -p 进程id > openfiles.log命令,获得当前占用句柄的全部详情进行分析。

2022-09-13 10:14:54 4126

原创 PGP加密后密文内容缺少的问题解决

无意中发现,使用的jdk是1.8.0_141,资料有显示说jdk1.8后面的版本有修复什么密钥加密问题,于是让客户更换成1.8.0_201,问题解决了!前几天一个客户反馈,PGP加密后,密文比正常的少了一大截,导致服务端解密失败。虽然更换jdk解决了问题,但是不知道问题的原因是什么……知其然而不知其所以然。(正常应该还有十几二十行密文才对)

2022-08-23 17:16:06 232

转载 Wireshark常用过滤使用方法

过滤源ip、目的ip。在wireshark的过滤规则框Filter中输入过滤条件。如查找目的地址为192.168.101.8的包,ip.dst==192.168.101.8;查找源地址为ip.src==1.1.1.1端口过滤。如过滤80端口,在Filter中输入,tcp.port==80,这条规则是把源端口和目的端口为80的都过滤出来。使用tcp.dstport==80只过滤目的端口为80的,tcp.srcport==80只过滤源端口为80的包协议过滤比较简单,直接在Filter框中直接输入协议名即可,如过

2022-08-13 10:50:16 5929

原创 Comparison method violates its general contract解决办法

查询JDK的资料得知,在JDK1.7开始对Comparator类进行了优化,必须包含3个特性。也就是compare(a,b)>0, compare(b,c)>0, 则compare(a,c)>0。反对称性:如果compare(o1,o2) = 1,则compare(o2, o1)必须返回符号相反的值也就是 -1;自反性:当两个相同的元素相比,compare方法必须返回0,也就是compare(o1, o1) = 0;最近有客户自行升级了系统的JDK版本,原本是1.6的,升到了1.8。...

2022-08-12 11:18:19 1422

原创 com/jowto/agent/AgentBridge报错解决

最后还是坚持搜索有所发现,椒图公司写了篇攻略是怎么修复log4j漏洞的,里面提到了同样的包名com.jowto。又通过天眼查发现,椒图是做守护进程的,360给投资了8000W。那真相就显而易见了,客户最近装了这个椒图的安全软件,当我们的应用启动时它就开始注入搞事情。结果注入之后没多久,它们自己的类初始化失败,把我们的应用搞挂了。这个报错后面还跟随着数据库创建连接失败等报错,所以我们一开始分析方向错误了,搜这个包名和类名没什么资料,又一直在检查数据库连接池、泄露、超时释放等问题,但一无所获。...

2022-07-19 14:08:58 742

原创 linux $‘\r‘: command not found的解决方法

Linux系统执行Shell脚本,出现了报错:'\r': command not found查阅资料得知,因为脚本在Windows系统编写时,换行是\r\n。而在Linux系统中换行是\n。所以在Linux中运行脚本时,系统会认为\r是一个真实的字符(不是换行符),导致运行错误。解决方法:linux系统的脚本去掉\r,执行以下命令即可(该命令自动重写覆盖):...

2022-06-13 17:14:19 2736

原创 Linux 导出java dump文件

有时候巡检要关注一下系统的运行情况,防止内存使用过多,随时会OOM,这时候需要导出dump文件查看。1、获取java应用的pid输入命令后,找到java应用的pid2、使用jdk的jmp命令导出dump文件如果环境已经配好java环境,可以直接如果没配java环境,那就复制一个jdk文件到linux服务器上,cd到bin目录,然后在命令前面加上./3、导出成功后,一般这个dump文件都挺大的,压缩好再传到windows。用eclipse memory analyzer工具分析,观察内存使用

2022-06-01 11:00:10 3744

原创 CSS失效 Resource interpreted as Stylesheet but transferred with MIME type text/html

前段时间系统从JDK1.6升到了1.8,tomcat也从6.0换到了8.5,但用着用着发现前端样式没了!浏览器点开F12看到控制台输出了Resource interpreted as Stylesheet but transferred with MIME type text/html的报错。奇怪,代码没动,怎么升级就不行。搜索了资料发现,后端如果使用servlet,编码格式是text/html的话,CSS文件会无法解析。猜测可能是tomcat升级的原因。解决办法:1、新增一个专门给css文

2022-05-20 14:53:06 346

原创 BouncyCastleProvider引起的内存泄露修复

最近项目上使用到了一种加密方式叫PGP,提供的工具类里面有使用BouncyCastleProvider类。JcePGPDataEncryptorBuilder c = new JcePGPDataEncryptorBuilder(PGPEncryptedData.DES) .setWithIntegrityPacket(withIntegrityCheck).setSecureRandom(new SecureRandom()).setProvider(new Bo

2022-04-24 09:49:30 1179

转载 IDEA中文输入法候选框不显示问题解决

本机环境:系统: win7 jdk版本:jdk1.8.0_65 idea版本:2017.2.3解决方法:关掉idea,进入idea的安装目录找到jre64文件夹重命名为jre642(随便什么名字都行)如下图然后找到jdk安装目录下的jre文件复制到上图idea的安装目录下并改名为jre64最后找到jdk安装目录下的jdk >> lib >> tools.jar 文件 复制到idea安装目录下的jre64文件下的lib中即可解决问题...

2022-04-22 19:44:32 453

原创 tomcat控制台乱码问题解决

启动tomcat,发现控制台打印中文变成乱码:问题原因:编码不一致。tomcat默认编码是UTF-8,windows的默认编码是GBK,编码不一致导致乱码,修改编码即可。解决办法:去tomcat目录的conf文件夹,打开logging.properties,设置java.util.logging.ConsoleHandler.encoding编码方式为GBK保存后重启tomcat即可...

2022-01-11 10:19:48 197

原创 cmd执行程序突然卡住解决办法

问题原因:windows系统中,cmd程序默认开启了“快速编辑模式”,当鼠标无意中点到里面的区域时,就自动进入了编辑模式,之后程序的控制台会被阻塞,接受不到任何请求。鼠标右键或者敲一下回车后,就会退出编辑模式。这时候控制台一般会刷一大堆日志,然后程序恢复正常。解决办法:(1)手动取消编辑模式cmd-属性-选项,取消勾选 快速编辑模式(2)脚本解决关闭快速编辑模式也可以通过脚本执行。新建文本,复制以下代码,保存后修改为bat后缀,双击运行即可。如下:@echo..

2022-01-05 14:57:53 6461

转载 wireshark 无捕获过滤器/找不到重要的接口列表 net start npf 服务器名无效

最近有问题需要进行抓包,但是安装好wireshark后无捕获过滤器/找不到重要的接口列表,找不到本地网卡,wireshark无法使用。为解决上述问题,在命令行/管理员身份命令行输入命令 net start npf,居然显示:服务名无效。原因:缺少用于网络封包抓取的工具 winpcap解决办法:下载安装安装WinPcap安装后重新操作:打开wireshark—>捕获—>刷新接口列表,正常显示所有网卡了。如果还不行,在命令行,输入net start npf,然后重启wire..

2021-12-15 14:17:36 2835 2

原创 HttpsURLConnectionOldImpl cannot be cast to javax.net.ssl.HttpsURLConnection

之前新建一个https连接是这样的:URL urlStr = new URL("https", ip, Integer.parseInt(port), uri);HttpsURLConnection conn = (HttpsURLConnection) (url).openConnection();但是会偶发出现一个转换异常:com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl cannot be cast

2021-12-15 13:57:23 2525

转载 eclipse设置行宽Maximum line width

1.Window->Preferences->搜索formatter注:如果不能保存,需要在3处修改名字。然后再保存->确定,应用即可。

2021-10-22 17:41:22 398

原创 Unsupported record version Unknown-0.0 问题解决

前几天要用https调用一个地址,jdk使用的是1.8,协议是tlsv1.2,但是一直调用的时候返回Unsupported record version Unknown-0.0,百思不得其解,网上的资料也很少。有一天奇怪的是,在别人的电脑是可以的!于是怀疑起本机internet选项的tlsv1.2、注册表等等,但还是不行。后来无意中发现,低版本的jdk1.8,会有握手时不会发送SNI的bug,于是升级了高一点版本的jdk,结果就解决了!原来是jdk1.8.0_101,升到了jdk1.8.0_

2021-09-18 17:37:59 5802

转载 varchar和nvarchar区别

varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。两字段分别有字段值:我和coffee那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。例

2021-05-26 10:23:03 461

转载 No buffer space available问题解决

今天在公司服务器上部署的一套后台系统突然不能使用了,上服务器看了一下,控制台打印了如下错误信息:java.net.SocketException: No buffer space available (maximum connections reached?): JVM_Bind之前最快的方法是重启服务器,效果立杆见影(万能的重启大法!),但是治标不治本,过一段时间,这个问题又会再次出现。。是可忍孰不可忍,上网搜寻了一下相关的资料,在stack overflow中看到一条评论说这个是wind

2021-03-11 09:49:54 6353 1

原创 Tomcat设置开机启动

设置之前,首先需要配置Java环境,jdk配置百度就有,不重复了。提醒一下tomcat和jdk的对应版本关系:tomcat v7.0-------->Java EE 6 and 6以上tomcat v8.0-------->Java EE 7 and 7以上tomcat v9.0-------->Java EE 8 and 8以上建议最好都是安装64位的。然后打开系统变量,新建一个变量:CATALINA_HOME=TOMCAT安装目录,例如:CATALINA_..

2021-03-08 10:34:12 128

原创 a标签下载文件

之前实现点击链接就下载文件的功能,后面发现在chrome浏览器直接就打开了,导致乱码不友好。<a href="/doc/csdn.docx">用户操作手册</a>后面发现加上download属性,就可以避免文档、图片、txt等这类型文件直接打开了<a href="/doc/csdn.docx" download="">用户操作手册</a>该属性也可以设置一个值来规定下载文件的名称。所允许的值没有限制,浏览器将自动检测正确的文件扩展名并添加到

2021-02-25 17:33:20 1181

原创 eclipse打开文件所在路径

相当于实现idea的show in explorer功能步骤:1、点击菜单栏上的Run--External Tools--External Tools Configurations2、双击左边的Program3、Name随便填写,location正在上传…重新上传取消

2020-12-09 11:45:33 1358

转载 Java加密 Illegal key size 异常处理

Java进行AES或者DES加密时,如果密钥大于128bit, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制.处理办法: 在官方网站下载JCE无限制权限策略文件JDK6的下载地址: http://www.oracle.com/technetwork

2020-09-08 10:34:43 341

原创 JDK1.6 解决Could not generate DH keypair

Java 早期版本是只支持 1024 位的 DH Parma,如果对方是2048位或以上的情况,会报Could not generate DH keypair的异常。JDK1.6的解决办法如下:1.下载bcprov-ext-jdk15on和bcprov-jdk15on的包到$JAVA_HOME/jre/lib/ext下,版本的话1.50-1.59应该都可以如:bcprov-ext-jdk15on-1.52.jar和bcprov-jdk15on-1.52.jar2.包替换之后,修改$JAVA.

2020-08-28 14:12:46 2801 3

原创 js中 window.location.href使用post请求

本来考虑使用ajax,但ajax是异步提交请求,无法跳转页面。而window.location.href是get的请求,参数过长或者出于安全考虑保密数据,要使用post。最后使用js的表单提交方法,代码如下:<script>$('.test-button').click(function(){ var testId= $(this).attr('id'); var html = "<form action='/manage/test' method='pos

2020-08-27 11:06:57 7133

转载 eclipse 加大每行长度,设置行宽

1.Window->Preferences->搜索formatter注:如果不能保存,需要在3处修改名字。然后再保存->确定,应用即可。

2020-08-26 15:41:19 475

原创 解决 Cannot create PoolableConnectionFactory (ORA-00923: 未找到要求的 FROM 关键字)

昨天测试查询的时候发现使用oracle时有这么一个错误:Cannot create PoolableConnectionFactory (ORA-00923: 未找到要求的 FROM 关键字)。我换成了sqlserver和mysql,发现又没有错误。百思不得其解,因为用ibatis的SqlMapClientBuilder.buildSqlMapClient方法是能成功创建对象的,难道是ibatis的sql语句不兼容oracle?不太可能啊!!于是我翻了下配置文件,破案了。SqlMapConfig

2020-05-09 09:30:49 1674

空空如也

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

TA关注的人

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