目录

我的学习分享

记录精彩的程序人生

标签: Java (28)

java 使用qq邮箱发送邮件报错 port: 465, response: 550 错误 有更新!

项目中使用到 QQ 邮箱进行批量发送邮件的经常会报如下的错误: javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465, response: 550 at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1960) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642) at javax.mail.Service.connect(Service.java:295) at javax.mail.Service.connect(Service.java:176) 或者这样的错误: com.sun.mail.smtp.SMTPSendFailedException: 550 Mail content denied. http://service.mail.qq.com/cgi-bin/help?subtype....

【Java基础】Java可以如何实现文件变动的监听的示例 有更新!

本篇文章主要介绍了Java可以如何实现文件变动的监听的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 应用中使用logback作为日志输出组件的话,大部分会去配置 logback.xml 这个文件,而且生产环境下,直接去修改logback.xml文件中的日志级别,不用重启应用就可以生效 那么,这个功能是怎么实现的呢? 应用中使用logback作为日志输出组件的话,大部分会去配置 logback.xml 这个文件,而且生产环境下,直接去修改logback.xml文件中的日志级别,不用重启应用就可以生效 那么,这个功能是怎么实现的呢? I. 问题描述及分析 针对上面的这个问题,首先抛出一个实际的case,在我的个人网站 Z+中,所有的小工具都是通过配置文件来动态新增和隐藏的,因为只有一台服务器,所以配置文件就简化的直接放在了服务器的某个目录下 现在的问题时,我需要在这个文件的内容发生变动时,应用可以感知这种变动,并重新加载文件内容,更新应用内部缓存 一个最容易想到的方法,就是轮询,判断文件是否发生修改,如果修改了,则重新加载,并刷新内存,所以主要需要关心的....

【Java基础】StringBuilder后加换行符 有更新!

我有一个StringBuilder对象, StringBuilder result = new StringBuilder(); result.append(someChar); 现在我想添加一个换行字符到StringBuilder。我该怎么做? result.append("/n"); 不工作。所以,我正在考虑使用Unicode编写换行符。这会有帮助吗?如果是这样,我如何添加一个?它应该是 r.append("\n"); 但我建议你做如下, r.append(System.getProperty("line.separator")); System.getProperty(“line.separator”)给出在java中依赖于系统的换行符。从Java 7也有一个方法直接返回值:System.lineSeparator() http://stackoverflow.com/questions/14534767/how-to-append-a-newline-to-stringbuilder

【Java基础】DecimalFormat数字格式化用法“0”和“#”的区别

先来介绍一下“0”和“#”的区别 以“0”补位时: 如果数字少了,就会补“0”,小数和整数都会补; 如果数字多了,就切掉,但只切小数的末尾,整数不能切; 同时被切掉的小数位会进行四舍五入处理。 以“#”补位时: 如果数字少了,则不处理,不会补“0”,也不会补“#”; 如果数字多了,就切掉,但只切小数的末尾,整数不能切; 同时被切掉的小数位会进行四舍五入处理。 public class PriceUtil { public static String decimalFormat(float value) { DecimalFormat decimalFormat; decimalFormat = new DecimalFormat(); decimalFormat.applyPattern("0.##"); return decimalFormat.format(value); } public static String decimalFormat(double value) { DecimalFormat decimalFormat; decimalFormat = new ....

【Java基础】java保留两位小数(四舍五入和非四舍五入)

非四舍五入型 : //DecimalFormat 需要导入 import java.text.DecimalFormat; Double dev; DecimalFormat df = new DecimalFormat("#.00000");// 保留五位小数非四舍五入型 String str = df.format(dev); System.out.println("The standard deviation is " + str); 四舍五入型 : double dev; dev = (double) Math.round(dev*100) / 100; //保留两位小数 四舍五入型 https://www.cnblogs.com/LLLAIH/p/11552145.html

【java基础】java.util.logging.Logger使用详解

java.util.logging.Logger使用详解 一、创建Logger对象 // 为指定子系统查找或创建一个 logger。 static Logger getLogger(String name) // 为指定子系统查找或创建一个 logger。 static Logger getLogger(String name, String resourceBundleName) 注意:name是Logger的名称,当名称相同时候,同一个名称的Logger只创建一个。 二、Logger的级别 比log4j的级别详细,全部定义在java.util.logging.Level里面。 各级别按降序排列如下: SEVERE(最高值) WARNING INFO CONFIG FINE FINER FINEST(最低值) 此外,还有一个级别 OFF,可用来关闭日志记录,使用级别 ALL 启用所有消息的日志记录。 logger默认的级别是INFO,比INFO更低的日志将不显示。 Logger的默认级别定义是在jre安装目录的lib下面。 # Limit the message that ar....

【java基础】JAVA日期查询:季度、月份、星期等时间信息

package com.stt.dateChange; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * * @author zengms * @date 2012-12-27 * */ public class DateUtils { private static final Log logger = LogFactory.getLog(DateUtils.class); public static final String YYYYMMDD = "yyyy-MM-dd"; public static final String YYYYMMDD_ZH = "yyyy年MM月dd日"; public static final int FIRST_DAY_OF_WEEK = Calendar....

【Java基础】Enhancing Swing——Yes, you can (still) build beautiful user interfaces with Swing! 有更新!

About this series So you think you know about Java programming? The fact is, most developers scratch the surface of the Java platform, learning just enough to get the job done. In this ongoing series, Java technology sleuths dig beneath the core functionality of the Java platform, turning up tips and tricks that could help you solve even your stickiest programming challenges. User interface design and development have changed a lot and the Java™ platform has kept pace with these changes. The re....

【Java基础】Java中将InputStream读取为String, 各种方法的性能对比

如下, 一共存在11种实现方式及其对应的性能测试结果: 1、使用IOUtils.toString (Apache Utils) String result = IOUtils.toString(inputStream, StandardCharsets.UTF_8); 2、使用CharStreams (guava) String result = CharStreams.toString(new InputStreamReader(inputStream, Charsets.UTF_8)); 3、使用Scanner (JDK) Scanner s = new Scanner(inputStream).useDelimiter("\\A"); String result = s.hasNext() ? s.next() : ""; 4、使用Stream Api (Java 8). 提醒: 这种方式会将不同的换行符 (比如\r\n) 都替换为 \n. String result = new BufferedReader(new InputStreamReader(inputStrea....

【Java基础】Maven的Scope区别笔记 有更新!

依赖的Scope scope定义了类包在项目的使用阶段。项目阶段包括: 编译,运行,测试和发布。 分类说明 compile 默认scope为compile,表示为当前依赖参与项目的编译、测试和运行阶段,属于强依赖。打包之时,会达到包里去。 test 该依赖仅仅参与测试相关的内容,包括测试用例的编译和执行,比如定性的Junit。 runtime 依赖仅参与运行周期中的使用。一般这种类库都是接口与实现相分离的类库,比如JDBC类库,在编译之时仅依赖相关的接口,在具体的运行之时,才需要具体的mysql、oracle等等数据的驱动程序。 此类的驱动都是为runtime的类库。 provided 该依赖在打包过程中,不需要打进去,这个由运行的环境来提供,比如tomcat或者基础类库等等,事实上,该依赖可以参与编译、测试和运行等周期,与compile等同。区别在于打包阶段进行了exclude操作。 system 使用上与provided相同,不同之处在于该依赖不从maven仓库中提取,而是从本地文件系统中提取,其会参照systemPath的属性进行提取依赖。 import 这个是mave....

【Java基础】Java InputStream转File

文件处于磁盘上或者流处于内存中 在输入流有已知的和预处理的数据时,如在硬盘上的文件或者在流处于内存中。这种情况下,不需要做边界校验,并且内存容量条件允许的话,可以简单的读取并一次写入。 InputStream initialStream = new FileInputStream(new File("src/main/resources/sample.txt")); byte[] buffer = new byte[initialStream.available()]; initialStream.read(buffer); File targetFile = new File("src/main/resources/targetFile.tmp"); OutputStream outStream = new FileOutputStream(targetFile); outStream.write(buffer); 基于Guava的实现 InputStream initialStream = new FileInputStream(new File("src/main/resour....

【Java基础】Java压缩解压ZIP之Zip4j

Zip4j是一个Java操作zip压缩格式的开源项目,功能强大而且使用方便,能完全满足Java操作Zip压缩文件。默认采用UTF-8编码,所以支持中文,同时也支持密码,而且支持多种压缩算法。Zt-ZIP也不错,有兴趣的可以试试。 http://www.lingala.net/zip4j/ 压缩 1、文件压缩 ZipFile zipFile = new ZipFile("c:\\ZipTest\\test1.zip"); ArrayList filesToAdd = new ArrayList(); filesToAdd.add(new File("c:\\ZipTest\\sample.txt")); filesToAdd.add(new File("c:\\ZipTest\\文件.doc")); filesToAdd.add(new File("c:\\ZipTest\\파일.xls")); filesToAdd.add(new File("c:\\ZipTest\\ファイル.ppt")); ZipParameters parameters = new ZipParameters(....

【Java基础】Java获取系统信息(用户目录,临时目录等)

Java获取系统信息(用户目录,临时目录等) col1col2col3 java.versionJava运行时环境版本 java.vendorJava运行时环境供应商 java.vendor.urlJava供应商的 URL java.homeJava安装目录 java.vm.specification.versionJava虚拟机规范版本 java.vm.specification.vendorJava虚拟机规范供应商 java.vm.specification.nameJava虚拟机规范名称 java.vm.versionJava虚拟机实现版本 java.vm.vendorJava虚拟机实现供应商 java.vm.nameJava虚拟机实现名称 java.specification.versionJava运行时环境规范版本 java.specification.vendorJava运行时环境规范供应商 java.specification.nameJava运行时环境规范名称 java.class.versionJava类格式版本号 java.cla....

【Java基础】JVM系列:解决JVM最大内存设置问题

你知道JVM内存最大能调多大吗,这里和大家分享一下JVM最大内存方面的内容,Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。 JVM内存最大能调多大 今天分析了当前比较流行的几个不同公司不同版本JVM最大内存,得出来的结果如下: 公司JVM版本最大内存(M)client最大内存(M)server SUN1.5.x14921520 SUN1.5.5(Linux)26342660 SUN1.4.215641564 SUN1.4.2(Linux)19001260 IBM1.4.2(Linux)2047N/A BEAJRockit1.5(U3)19091902 除非特别说明,否则JVM版本都运行在Windows操作系统下 如何获得JVM最大内存 在命令行下用java -XmxXXXXM -version命令来进行测试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息。 实际发现版本上有细微差别的JDK最大容许内存值都不尽相同,因此在实际的应用中还是要自己试验一下看到底内存能达到什....

【Swing基础】border中的inset什么意思?

border:#efefff 3px inset; 其中inset、还有outset是指什么? inset 就是border框内嵌效果 而outset相应的就是外凸效果 你可以参考下面这个关于border的效果的 http://www.tizag.com/cssT/border.php

【Swing基础】Swing GUI中validate(),revalidate()和invalidate()

Swing组件有多种与屏幕布局更新相关的方法,特别是: validate() invalidate() revalidate() Java文档从技术角度对这些进行了一些定义,但是它们的使用方式并不是特别清楚。 它们之间有什么区别,在什么情况下你应该使用一个而不是其他一个?

【Swing基础】Java的绘图模式使用浅析

绘图模式是指后绘制的图形与早先绘制的图形有重叠时,如何确定重叠部分的颜色。例如,后绘制的覆盖早先绘制的;或者后绘制与早先绘制的两种颜色按某种规则混合。主要有正常模式和异或模式两种:正常模式是后绘制的图形覆盖在早先绘制的图形之上,使早先绘制图形的重叠部分不再可见。异或模式把绘图看作是按图形着色。异或模式绘图时,将当前正要绘图的颜色、原先绘制的颜色以及异或模式设定的颜色作特定的运算,得到实际绘图颜色。设置绘图模式的方法有: setPaintMode():设置绘图模式为覆盖模式(正常模式)。正常模式是绘图的默认模式。 setXORMode(Color c):设置绘图模式为异或模式,参数c为异或模式设定的绘图颜色。 设背景色为B,用setXORMode()设置的颜色为C,另用某个非背景色D绘图,XOR模式有以下确定实际绘图颜色的法则: B + B = C,用背景色绘图,出现C颜色。 D + D = B,当一个图形重画时就能清除原先画的图形。 B + D = B和D的混合色(当B,D不相同时)。 如果某区域已用D着色,再用E着色,则结果是: D + E = D和E的混合色(当D,E不相同时....

【Swing基础】Graphics2D的RenderingHints方法 有更新!

RenderingHints 类定义了多种着色微调,它们存储在一个映射集的 Graphics2D 对象里。 setRenderingHint() 方法的参数是一个键以及对应的键值。在我们的代码中,第一个参数是代表 alpha 合成微调的键,第二个参数是该微调的值。该微调的其它可能的值有 VALUE_ALPHA_INTERPOLATION_DEFAULT,代表平台缺省值;以及 VALUE_ALPHA_INTERPOLATION_SPEED,代表追求速度而不是质量。   您还可以为下面的键提供微调: 键 描述 KEY_ANTIALIASING 决定是否使用抗锯齿。当着色有倾斜角度的线时,通常会得到一组阶梯式的像素排列,使这条线看上去不平滑,经常被称为 锯齿状图形。抗锯齿是一种技术,它设置有倾斜角度的线的像素亮度,以使线看起来更平滑。因此,这个微调是用来决定在着色有倾斜角度的线时是否在减少锯齿状图形上花费时间。可能的值有 VALUE_ANTIALIAS_ON, _OFF 或 _DEFAULT。 KEY_COLOR_RENDERING 控制颜色着色的方式。可能的值有 VALUE_COLOR_R....

【Swing基础】Java2D: 硬件加速 - 第二部分 - 缓冲策略:Buffer Strategies 有更新!

原文地址:Java2D: Hardware Accelerating - Part2 - Buffer Strategies 利用我们已经学到的东西 昨天的帖子(Java2D: Hardware Acceletating - Part1 - Volatile Images)里,我讨论了java.awt.image.VolatileImage,以及如何使用它们(实现)双缓冲Java 2D的代码。如果你还不能实现,请先看一下那个帖子。今天的小提示将扩展引用那个提示里提供的例子。为了演示如何使用VolatileImage对象,我使用了一种极普通的代码格式来处理Java 2D代码 - 在例如java.awt.Canvas这样的对象中重载 paint(Graphics)方法,并在控件内部使用Graphics对象执行自定义画图。记住,正如前面的帖子中提到的以及对它的回复所述那样,如果你在做标准的AWT/Swing开发的话,这种重载并非很有用。在这种情况下,你通常应该依赖于已有的控件实现来优化渲染。我今天(以及昨天)所说的,只对你开发低层图像渲染,并且需要自己实现缓冲策略的工作很有用。通常这种情况发....

【Swing基础】Java2D: 硬件加速 - 第一部分 - 非恒定图像类:Volatile Image 有更新!

Java 1.4在Java 2D的功能方面引入了对硬件加速的支持。毫无疑问,硬件加速非常有用——不过有效的使用java.awt.image.VolatileImage至少要比使用传统的“图像缓冲”机制要复杂一些。仅当你在自行实现复杂的Java 2D渲染的时候,使用低级的“硬件加速”功能才是的确很重要的。如果你只是在使用比方说Swing里预编译的控件的话,那么这个技巧的大部分都不太合适。但是对那些Java的2D游戏编程的人,或者那些操作大量图形,如图表、图解的人来说,就非常有用了。 我假设这个技巧的读者至少熟悉双缓冲的概念——如果你不熟悉,请读这里。简短地说,双缓冲就是把渲染的过程推迟在“画面外”的缓冲里,然后快速地把缓冲复制到画面设备上,从而提高了画质(画面渲染得更柔和)。标准双缓冲的简单实现方式(没有硬件加速),代码基本如下: // 也可以扩展其它类 - 不过通常会选择Canvas。 public class CustomGUI extends Canvas { private Image offscreenImage; private Graphics offscreenGrap....