![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java 基础
文章平均质量分 88
Dancen
这个作者很懒,什么都没留下…
展开
-
Tomcat崩溃排查
Tomcat运行过程中出现崩溃现象,所幸服务器监控程序自动对其执行了重新启动,因此对生成环境没有造成太久的服务中断。 崩溃问题首次出现,考虑为偶然情况。然而在几日之内,Tomcat再次崩溃,因此需要调查具体崩溃原因,初步考虑后,推测是由于Tomcat运行所占内存过大,因此被系统kill,准备升级服务器。假设是系统所为,一般会有系统日志:cat /var/log/messages查看后没有发现kill、mem相关日志。如果Jvm遇到致命错误而崩溃,应当会在程序目录生成hs_err_pid.log等错误报告文件原创 2022-06-21 12:06:22 · 4164 阅读 · 0 评论 -
Exchange 2013接收连接器以及邮件客户端若干问题介绍
一. 什么是接收连接器?上图显示出了Exchange 2013完整安装后默认的5种接收连接器。接收连接器用于控制发送到Exchange组织的入站邮件流,不同的接收连接器负责监听不同的网络端口,独立控制客户的认证等。接收连接器的作用域限于单台服务器,及每个接收连接器都属于单台服务器,其设置仅对此台服务器生效。例如,我们在域中部署了多台Exchange服务器,每台服务器都拥有独立的5种接收连接器。接收连接器按角色分只有两类,分别为:FrontendTran...原创 2022-03-10 15:03:42 · 4338 阅读 · 1 评论 -
Java线程池爆满原因调查
在服务器监控程序ServerDog运行过程中,偶尔收到过几次运行错误报告,报告内容为线程池已满,无法接收新任务:造成线程池爆满的原因自然是某些线程执行耗时太久,一直占用线程池。起初,我粗略估计造成这一问题的原因有以下可能:1. ServerDog与远程服务器的ssh命令执行操作缺少超时设定。2. ServerDog与远程服务器的ftp/sftp文件传输操作缺少超时设定。鉴于此,我分别给ssh和ftp/sftp都增加了超时处理。然而,今天,线程池已满的运行错误再次出原创 2021-11-03 20:58:42 · 3789 阅读 · 0 评论 -
JDK bug
1. JDialog类之setBounds方法。setBoundspublic void setBounds(int x, int y, int width, int height)说明:setBounds方法用于设定窗体的位置、宽、高。已知涉及的jdk版本:jdk-8u271、jdk-8u281bug描述:setBounds方法设置的width与窗体真实的width存在约为10的误差,设置值比真实的值多出了10,例如设置width为500,但窗体实际的wi...原创 2021-04-07 17:11:45 · 305 阅读 · 0 评论 -
curl报错:由于吊销服务器已脱机,吊销功能无法检查吊销
最近在修改ServerDog中有关curl的功能时,调试curl命令出现报错。命令:curl -o d:\curl.jpg --connect-timeout 10 --max-time 20 -X GET https://src.xxx.com/curl.jpg报错:curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - 由于吊销服务器已脱机,吊销功能 无法检查吊销原创 2020-11-16 21:26:25 · 13929 阅读 · 0 评论 -
Linux终端中的文本颜色
现象:ServerDog的其中一个服务器命令行监控功能是用于监控服务器的各个网卡的流量情况的,以往该功能一直能够正常运行。但是最近新添加的几台服务器,ServerDog一直无法获取到有效的网络sar -n DEV信息,相关的各项网络数据一直为0。查看ServerDog的日志发现,这几台服务器的命令行输出有异常,其中包含了一些奇怪的字符,如:ESC[32;22mESC[0mESC[34;1m等。命令行输出中这些字符的出现导致ServerDog对命令行输出的结果解析异..原创 2020-11-05 16:16:55 · 1320 阅读 · 0 评论 -
Java源码:通过 ftp 和 sftp 协议进行文件上传、下载、删除、遍历等
多年以前编写了一个文件上传工具,能够通过ftp协议执行文件上传操作。在工具的使用过程中,面临着远程服务器的不断增加、替换等,为了实现文件上传,需要的远程服务器上安装配置ftp服务,比较麻烦;而我们使用的远程服务器多数是Linux服务器,本身运行了ssh服务,可以通过sftp协议执行文件上传,于是在文件上传工具中,便增加了sftp协议的支持。为了减少代码的修改量,将原来的文件上传操作类抽象为一个抽象类,维持文件上传操作API接口不变:public abstract class FtpHelper原创 2020-10-15 15:55:56 · 916 阅读 · 2 评论 -
JAVA 排序异常:java.lang.IllegalArgumentException:Comparison method violates its general contract!
java.lang.IllegalArgumentException:Comparison method violates its general contract!这个异常是一个很坑的异常,异常在调用Collections.sort()方法时产生。具体异常信息如下:Comparison method violates its general contract!java.lang.IllegalArgumentException: Comparison method violates .原创 2020-08-10 22:16:14 · 5076 阅读 · 1 评论 -
文件智能排序(根据文件名称中的数字编号排序)
最近需要编写一个将一系列图片合并为一个webp动图的程序,遇到了一个文件排序的问题。文件排序问题:1.按照文件大小排序2.按照文件修改时间排序3.按照文件名称排序这些排序操作都很简单,编程实现也很容易。但是对于第3种排序,即按照文件名称排序,理解上其实存在一些歧义。例如对于以下文件序列:a10.txtfile9.txta9.txtfile8.txta8.txtfile11.txtfile7.txtfile10.txta11.txt可以给出以下两种文件名称原创 2020-07-30 16:30:36 · 5488 阅读 · 1 评论 -
Java 读取jpeg图片 Unsupported Image Type 异常
使用Java的ImageIO做一些图片处理的工作,突然今天有人反馈说我的程序无法处理jpg图片。我拿到图片进行调试,出现了如下报错:javax.imageio.IIOException: Unsupported Image Type at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(Unknown S...原创 2019-12-30 20:53:49 · 3899 阅读 · 1 评论 -
使用JTable过程中遇到的两个坑
大坑1:JScrollPane.setColumnHeaderView() 在JTable被加入之后无法生效。JTable在加入到JScrollPane中之后,会自动产生一个关联的TableHeader,但该TableHeader并不是JScrollPane的columnHeaderView,因为null == JScrollPane.getColumnHeader(),而此时再去修改JS原创 2013-12-19 13:12:32 · 1072 阅读 · 0 评论 -
Process阻塞问题
Java中Runtime.getInstance().exec (String cmd)或者new ProcessBuilder(String cmd).start()都可以产生子进程对象Process。通过调用Process对象的waitFor()方法可以使主进程进入等待状态,直至子进程执行完毕,再进行下一步工作。如果对子进程处理不当,有可能造成主进程阻塞,整个程序死掉。ja原创 2012-09-11 23:28:56 · 13123 阅读 · 3 评论 -
JComboBox之大坑——子控件的不稳定性
下拉列表控件是最为常用的UI控件之一,在swing中即JComboBox。原创 2014-07-07 11:32:32 · 2125 阅读 · 0 评论 -
深入讨论Java开发异常的处理
原文地址:http://sunflowers.iteye.com/blog/767175转载 2014-07-31 22:16:57 · 1901 阅读 · 0 评论 -
Class.getSimpleName()导致JVM崩溃
[13:21:46][DEBUG][MsgHandler-5]ServerLogger.debugf - # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (constantPoolOop.hpp:239),原创 2014-07-30 18:19:53 · 2813 阅读 · 0 评论 -
改进异常处理的6条建议
本文由 ImportNew - 唐尤华 翻译自 northconcepts。欢迎加入Java小组。转载请参见文章末尾的要求。合理地使用异常处理可以帮你节省数小时(甚至数天)调试时间。一个乘法异常会毁掉你的晚餐乃至周末计划。如果处置不及时,甚至对你的名誉都会造成影响。一个清晰的异常处理策略可以助你节省诊断、重现和问题纠正时间。下面是6条异常处理建议。1. 使用一个系统全局异常类转载 2014-06-12 23:49:52 · 1026 阅读 · 0 评论 -
一张帅图看清Java异常类的层次结构
图中红色部分为受检查异常,它们必须被捕获,或者在函数中声明为抛出该异常。原创 2014-06-12 17:13:11 · 1793 阅读 · 0 评论 -
JSch - Java实现的SFTP(文件下载详解篇)
原文地址:http://www.cnblogs.com/longyg/archive/2012/06/25/2561332.html上一篇讲述了使用JSch实现文件上传的功能,这一篇主要讲述一下JSch实现文件下载的功能。并介绍一些SFTP的辅助方法,如cd,ls等。 同样,JSch的文件下载也支持三种传输模式:OVERWRITE, RESUME和APPEND,请参考上篇随转载 2014-02-13 18:14:15 · 1726 阅读 · 0 评论 -
JSch - Java实现的SFTP(文件上传详解篇)
原文地址:http://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html JSch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。 本文只介绍如何使用JS转载 2014-02-13 18:10:39 · 1854 阅读 · 1 评论 -
怎么略过 Java/Scala 字符流中的无效的字符?
转自:http://article.yeeyan.org/bilingual/316748代码如下:Source.fromFile(new File( path), "UTF-8").getLines()运行这段代码时抛出一个MalformedInputException, 异常内容如下:Exception in thread "main" java.n转载 2013-12-19 12:48:18 · 2630 阅读 · 0 评论 -
Integer做锁
在并发编程时,对象锁是无法回避的问题,什么样的对象可以用了做锁呢?就Java语法而言,只要是对象就能作为锁来使用,然而,仍有几点必须遵守:1 锁不能为空,即用作锁的对象不能为空,这种错误很容易暴露,一般都能避免;2 锁应该是final的,此处并非要求用作锁的对象的引用一定要声明为final,而是指一个对象要用作锁的话,其引用不应该存在被修改指向的可能,否则引用指向变了,对象锁也就变了,锁可原创 2013-07-01 00:27:14 · 3196 阅读 · 0 评论 -
Java 注解指导手册 – 终极向导
译文出处: Toien Liu 原文出处:Dani Buiza编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它。我们已经在Java Code Geeks提供了丰富的教程, 如Creating Your Own Java Annotations, Java Annotations Tutorial with Custom转载 2016-08-10 10:59:12 · 759 阅读 · 0 评论 -
使用TinyPng来压缩图片
图片资源在安装包中所占的分量很重,减少图片大小,安装包的体积改变立竿见影。怎么压图呢?自己对图像处理也没有研究啊,只能捡现成的。网上一搜,压图工具很多,但测试之后,恕我直言,很多都是垃圾,有的压图之后图片质量下降严重,有的压图之后图片体积减小微乎其微,更有甚者,能把图片越压越大的。TinyPng(https://tinypng.com/)是个好同志,TinyPng能够对PNG和JPG/JP原创 2016-12-23 17:50:12 · 10381 阅读 · 2 评论 -
override 与 overload
“死党”是一种很不健康的朋友关系。确实,收获一名死党能让寂寞远离,但同时也意味着你将面临更多的选择:你不得不爱朋友之所爱,恶朋友之所恶。最终,你将变得不像你自己。而处于一个团队之中,最忌讳出现死党,当你的死党与某人翻脸时,试问你该如何处理与此人的关系呢?死党,在形成一段紧密关系的同时也与外界产生了隔阂。这是最近的一些生活感想。Java 中有两种方式可以复用同一个方法名,这两种方式分别称原创 2011-11-06 17:18:57 · 683 阅读 · 0 评论 -
JTextComponent.select()或者selectAll()方法没有选中效果
public void select(intselectionStart,intselectionEnd)选定指定的开始和结束位置之间的文本。此方法设置选定文本的开始位置和结束位置,并强行限制开始位置必须大于等于零。结束位置必须大于等于开始位置,并大于等于文本组件的文本长度。如果调用者提供不一致或超出限度的值,则该方法静默地实施这些限制,并且不会失败。要特别指出的是,如果开...原创 2019-09-11 15:47:27 · 1139 阅读 · 0 评论 -
再谈java乱码:GBK和UTF-8互转尾部乱码问题分析
我在通过Java调用aapt来获取apk的应用名称时,发现如果应用名称为中文,则会出现乱码,例如:'VlogStar鍗$偣瑙嗛蹇壀杈戣蒋浠?'怎么办呢?当然是转码了:applicationLabelMap.put(language, new String(label.getBytes(MyDocumentManager.ENCODING_CN), MyDocumentMa...转载 2019-07-01 20:35:30 · 2207 阅读 · 0 评论 -
Java File类之getPath | getAbsolutePath | getCanonicalPath
一. API以下是3个方法的api说明。getPathpublic String getPath()将此抽象路径名转换为一个路径名字符串。所得字符串使用默认名称分隔符分隔名称序列中的名称。返回:此抽象路径名的字符串形式getAbsolutePathpublic String getAbsolutePath()返回此抽象路径名的绝对路径名字符串。如果此抽...原创 2019-06-25 10:40:56 · 1446 阅读 · 0 评论 -
jar包运行报错:Invalid or corrupt jarfile
执行:java -jar xxx.jar运行一个jar包时,提示报错:Invalid or corrupt jarfile该jar之前一直是正常运行的,这次只是增加了一项图片处理功能,引入了opencv-2413.jar。除了class文件的变化之外,唯一的修改就是MANIFEST.MF文件了。分析来看,问题很可能就出在这个文件上,将该文件还原,果然,jar至少能启动了。...原创 2019-04-11 11:49:36 · 64757 阅读 · 1 评论 -
如何获取Java运行时的数据位数?
有时候Java运行时需要加载一些动态链接库,而动态链接库通常会根据运行平台分为X86和X64,即32位版本和64位版本。这时就需要根据Java的运行平台来加载不同的动态链接库,注意,这里的运行平台不是指操作系统的平台,而是指Java运行时的数据位数。例如,64位的windows也可以安装32位的JDK,此时Java的运行平台是32位,而非64位。如何加载不同版本的动态链接库,通常的做...原创 2019-04-11 10:44:42 · 578 阅读 · 0 评论 -
分析 java 占用 cpu 过高的原因以及 java ScheduledThreadPoolExecutor bug 介绍
近期发现一个java进程的cpu占用接近100%。开始简单地认为是由于给java分配的内存不足,从而导致频繁GC。于是首先的处理方式就是直接给该java程序分配更多的内存,然而进程启动没几分钟,cpu占用再次接近100%,看来问题没这么简单。 一. 分析 java 占用 cpu 过高的原因1. 通过top命令直接查到该java进程的进程ID,可以看到进程ID为26260。...原创 2018-10-08 15:46:29 · 3510 阅读 · 0 评论 -
JAVA中为 HttpsURLConnection 设置自定义的 HostnameVerifier 导致 SNI 失效的问题
由于我们拥有大量的域名,并且这些域名都使用了https,因此https证书的管理成了一个问题。于是我写了一个https证书的监控器,能在https证书出现问题(例如即将到期,已经到期,或者证书错误)时,主动通知管理人员。该https证书监控器在我本机开发运行时一切正常,但当部署到监控服务器后,大量的https证书无法通过检查,出现了上图所示第2项的预警,即https证书监控器认为证书与域名...原创 2018-09-06 14:57:01 · 5964 阅读 · 0 评论 -
java swing 垂直流布局管理器实现
最近对原来的软件进行一些UI的优化,其中涉及到了垂直流布局的使用,布局中子控件与容器顶部的边距和容器底部的边距相比于子空间与容器左右侧的边距大了一些,打算将子控件与容器顶部的边距和容器底部的边距调小。在查看了垂直流布局MyVFlowLayout.java的源码后,发现布局中子控件与容器顶部的边距和容器底部的边距,与子控件之间的垂直边距一样,统一由一个叫vGap的变量控制,不能单独设置,无法...原创 2012-05-19 00:57:38 · 16496 阅读 · 6 评论 -
Java中的https证书问题
越来越多的网站由http迁移至https,Apple甚至要求必须使用https,现在iOS中的app一律都得使用https。https与http之最大不同便在于安全性,多了一个证书。我们使用浏览器访问https站点的时候,会首先下载该站点的证书并安装,然后验证该证书的权威性。如果证书合法,有些浏览器会在网址栏处出现一个钩状或者绿色的标记;如果证书错误,但不正确,则无法访问;如果证书正确,但不是...原创 2017-08-04 14:43:50 · 8275 阅读 · 2 评论 -
为什么匿名内部类参数必须为final类型
转自:http://java.chinaitlab.com/advance/900639.html作者:未知1) 从程序设计语言的理论上:局部内部类(即:定义在方法中的内部类),由于本身就是在方法内部(可出现在形式参数定义处或者方法体处),因而访问方法中的局部变量(形式参数或局部变量)是天经地义的.是很自然的2) 为什么JAVA中要加上一条限转载 2013-11-13 15:30:12 · 777 阅读 · 0 评论 -
AOP 的利器:ASM 3.0 介绍
原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-asm30/引言什么是 ASM ?ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定转载 2013-07-17 16:37:25 · 857 阅读 · 0 评论 -
java instrument 初探
原文地址:http://blog.csdn.net/pwlazy/article/details/5109742java在1.5引入java.lang.instrument,你可以由此实现一个java agent,通过此agent来修改类的字节码即改变一个类。本文中,会通过java instrument 实现一个简单的profiler。当然instrument并不限于profi转载 2013-07-16 17:01:21 · 2215 阅读 · 0 评论 -
Apache Log4j 学习笔记
原文地址:http://heavyz.sourceforge.net/homepage/homepage_zh/comp/notes/log4j.html Apache Logging Project Homepage: http://logging.apache.org Log4j的类图Logger - 日志写出器,供程序员输出日志信息 Appen转载 2012-02-18 22:50:40 · 588 阅读 · 0 评论 -
ROBBIN谈领域模型
ROBBIN主页:http://www.blogjava.net/GandofYan/archive/2006/05/30/48954.html为了补大家的遗憾,在此总结下ROBBIN的领域模型的一些观点和大家的补充,在网站和演讲中,robbin将领域模型初步分为4大类:1,失血模型2,贫血模型3,充血模型4,胀血模型那么让我们看看究竟有这些领域模型的具体内容,以及他们转载 2012-02-18 22:44:54 · 1877 阅读 · 0 评论 -
J2EE分层设计
原文地址:http://blog.csdn.net/mylovedeye/article/details/4587642 从最常规的分层结构来说,系统层次从上到下依次为: 表现层:主要是客户端的展示。服务层:直接为客户端提供的服务或功能。也是系统所能对外提供的功能。领域层:系统内的领域活动,pojo对象。DAO层:数据访问对象,通过领域实体对象来操作数据库。 其转载 2012-02-18 23:29:39 · 1152 阅读 · 0 评论 -
serialVersionUID作用
原文出处:未知Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。 Eclipse中The serializable c转载 2012-02-06 13:23:06 · 31453 阅读 · 3 评论