
Java
russle
Java开发工程师
**注意事项**:本博客所有代码是为了介绍相关内容而编写或者引用的,示例代码并非可直接用于生产的代码。仅供参看而已。
展开
-
升级程序到Java21的记录一(先升级jdk到21)
为了使用Java21的最新特性虚拟线程以及提高程序的整体性能,决定将一个程序A升级到Java21.:程序A有很多文件操作因为使用虚拟线程对提升性能有帮助,如果读者的程序是其他类型,请下参考虚拟线程的一些资料决定是否使用本系列分为三个部分,本文是第一篇,先升级jdk,也就是开发机器上的jdk和运行机器上的jdk。原使用的jdk17. 使用sdkman安装的, 读者可以根据自己需要使用jdk不同的发型版本。本人主要是因为经常需要切换jdk所以使用sdkman安装的。原创 2024-03-31 23:51:16 · 1385 阅读 · 0 评论 -
Java函数式编程实践一---记录使用函数作为参数
Java8 引入了函数式编程,但是本人在日常的开发中使用较少,这里简要记录其中一些使用示例。原创 2023-12-31 20:42:48 · 554 阅读 · 0 评论 -
java工程构建时带上分支,commit等信息
线上部署的jar包(不管是直接运行jar包,还是通过容器运行的jar)有时出现问题时需要查看源代码,需要知道该jar包是从哪个分支,哪个commit,哪个时间打包的。有了这些信息能更好辅助我们分析判断问题。这里以gradle工程为例子。原创 2023-05-13 16:35:44 · 880 阅读 · 1 评论 -
jvm中指定时区信息user.timezone
同一份程序使用时间LocalDateTime类型,在国内和国外部署后,返回的时间信息前端使用出问题。因为LocalDateTime不带时区信息,国内调用后,前端页面默认使用的浏览器所在os的时区(我们的系统中没有给用户设置时区), 因此会出现时间不一致, 或者判断超时了,但是实际上没有超时的问题。原创 2023-02-17 21:43:39 · 1285 阅读 · 0 评论 -
S3 client向ceph上传文件注意事项
众所知周,AWS S3 client功能强大,能与各类符合OSS标准的存储进行工作。本项目中刚好用到ceph,就是直接使用S3 java client上传文件。在根据ceph官网的的一些文档操作时遇到一些问题,这里记录下来,仅供遇到类似问题的网友参考。原创 2022-11-13 23:05:17 · 1469 阅读 · 0 评论 -
springboot全局设置LocalDateTime的格式解析
程序中使用LocalDateTime类型, 在api返回response时,LocalDateTime类型的数据返回的格式是数组形式,非常不便于展示和解析。原有的通过修改application.yaml方式也行不通,因为使用的是LocalDateTime, 不是DateTime类型。原创 2022-11-12 15:45:40 · 2360 阅读 · 0 评论 -
stream lambda 异常java.lang.IllegalStateException: End size 0 is less than fixed size 20
程序中通过遍历map生成简要的summary信息,但是该接口不定时发生异常,绝大部分时候正常,偶尔出现类似如下异常.................................................原创 2022-10-30 21:26:00 · 553 阅读 · 0 评论 -
Junit单测如何测试是否抛出预期的异常
单测是提高软件质量最有效最节省成本的的手段,不是之一。本文展示的如何使用Junit测试会抛出异常的函数。原创 2022-10-12 23:40:08 · 943 阅读 · 0 评论 -
Java 对文件取md5摘要的简单示例
对文件进行md5值作为摘要,作为其他地方下载时的一个校验。 本文不讨论MD5算法可能发生的碰撞。具体实现方法有很多种,这里以https://www.baeldung.com/java-md5 中一种最方便的示例为例子相比其他方法,这个直接传入文件的全路径(文件路径和文件全名),直接获得md5值, 省去打开文件读取文件内容的步骤。 简单直接。如下这种直接使用google对应类库的也很方便...原创 2022-07-10 23:24:39 · 1205 阅读 · 0 评论 -
url中query参数传递数组
好久不写rest api, query中传递数组都快忘记了,(post中body传递数组还记得), 做好记录方便查询先看curl命令 curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'Token: 123456' 'http://127.0.0.1:17001/api/v1/admin/arraydemo?hostName=worker1&ports=12%原创 2022-01-24 21:03:04 · 6733 阅读 · 0 评论 -
OOM之GC Overhead limit exceeded
Java8常见的OOM主要有三种,分别是Exception in thread thread_name: java.lang.OutOfMemoryError: Java heap space、Exception in thread thread_name: java.lang.OutOfMemoryError: GC Overhead limit exceeded 以及Exception in ...原创 2019-12-08 19:38:20 · 3286 阅读 · 0 评论 -
Google Guava-缓存
项目需要使用缓存,恰好缓存对象不适合存储为字符串,而且为了高性能希望能有过期时间和LRU特性。 LRU好办,直接集成JDK自带的LinkedHashMap,实现removeEldestEntry方法就行。 可是过期时间就需要自己实现了,实现思路到还不复杂,可以需要测试。最后还是决定找找看看现有类库是否已经提供该功能,首先想到的就是Guava,一看文档果然提供了这种类。直接上代码LoadingC...原创 2019-10-29 19:00:17 · 1291 阅读 · 0 评论 -
static in Java
Variables with static variables can be declared with the static keyword. Example:static int y=0;When a variable is declared with the static keyword, its called a class variable. All转载 2009-08-10 10:22:00 · 609 阅读 · 0 评论 -
==, .equals(), compareTo(), and compare() (之一)
Equality comparison: One way for primitives, Four ways for objects相等比较:一种是基本,其他四种是对象的Comparison Primitives Objectsa == b, a != bEqual valuesCompares refe转载 2009-08-10 15:55:00 · 1764 阅读 · 0 评论 -
Equals and Hash Code (之二)
IntroductionThe Java super class java.lang.Object has two very important methods defined in it. They are -public boolean equals(Object obj)public int hashCode()These methods转载 2009-08-10 16:11:00 · 1564 阅读 · 0 评论 -
How to Write an Equality Method in Java(之三)Java中如何写equals()方法
How to Write an Equality Method in Javaby Martin Odersky, Lex Spoon, and Bill Venners June 1, 2009 Summary This article翻译 2009-08-10 16:28:00 · 2355 阅读 · 0 评论 -
Abstract Class and Interface 抽象类与接口的区别
abstract Methods and Classes---抽象方法和抽象类 An abstract class is a class that is declared abstract,it may or may not include abstract methods. Abstract classes cannot be instantiated, but they ca转载 2009-08-10 10:47:00 · 1116 阅读 · 0 评论 -
Difference between final. finally , and finalize() final, finally 和finalize区别
Final --- constant declaration. 常量声明 A final method or variable is one that cant be overridden, you can define a method as final within a class to ensure that any extesions to the class don转载 2009-08-08 23:05:00 · 934 阅读 · 0 评论 -
抽象类和接口的区别(之二)
When should you use an abstract class, when an interface,when both? Interfaces and abstract classes seemsuperficially to provide almost the same capability. How do you decide which touse?翻译 2009-08-16 23:00:00 · 1151 阅读 · 0 评论 -
JAVA开发者最常去的20个英文网站
JAVA开发者最常去的20个英文网站 JAVA开发者最常去的20个英文网站1.[http://www.javaalmanac.com] – Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧的用法及示例代码, 这是一个不错的去处.2.[http://www.onjava.com] – O’Reilly的Java网站. 每周转载 2009-09-13 21:34:00 · 724 阅读 · 0 评论 -
JAVA System.getProperty() System.getenv() 示例
最近的程序中优先使用系统环境设置的变量,其次使用默认的路径。查找了java中如何获取环境变量,发现System.getenv()时最实用的方法, 其实这个也可以用材程序调式设置,一起其他类似的环境中。 public class TestSystemproperty {public static void main(String[] args){ Syste原创 2009-12-09 16:21:00 · 25226 阅读 · 0 评论 -
Java源代码的折行规则(转载自http://news.youkuaiyun.com/a/20090929/213943.html)
Java源代码的折行规则一些企业在招聘程序员的时候,总会特意提出一个要求,即要求具有良好的编码规范。确实现在程序开发人员已经不在是单枪匹马的单干,而是讲究团体作战。此时就要求团队内的乘员都可能够恪守代码的编写规范,这对于乘员之间共享代码、排错等作业都具有非常现实的意义。这在Java语言中当然也不例外。笔者借这次机会,就跟大家分享一下Java源代码的折行规则。虽然这基本不涉及到功能层转载 2009-12-11 10:03:00 · 730 阅读 · 0 评论 -
java 执行批处理文件
运行 bat(批处理) 文件(不确定,我自己的简单demo是java可以执行批处理文件的) Java 对批处理文件还不支持。刚开始一直在研究 Java 如何调用批处理文件,始终找不到解决方法。后来只好绕过批处理,考虑如何将批处理转换为exe可执行文件。然后再通过Java调用可执行文件。 在Google上搜索一下,找到Quick Batch File转载 2010-02-22 13:40:00 · 1909 阅读 · 0 评论 -
JAVA变量path , classpth ,JAVA_HOME设设置作用和作用
http://www.goceanedu.com.cn/Read_1855.htm 在把jdk安装到计算机中之后,我们来进行设置使java环境能够使用。首先右键点我的电脑。打开属性。然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量需要设置三个属性“JAVA_HOME”、“path”、“classpath”,其中在没安装过jdk的环境下。path属性是本来存在转载 2010-02-22 13:24:00 · 713 阅读 · 0 评论 -
JAVA如何调用exe或者批处理文件
/** * JavaExec.java version 1.0 Feb 22, 2010 */ import java.lang.Runtime; import java.lang.Process; import java.io.InputStreamReader; import java.lang.Exception; import java.io.*;原创 2010-02-22 13:56:00 · 4522 阅读 · 0 评论 -
Java 读写文件 字符分隔
前一段时间因为需要帮别人写了简单的字符串分隔的java小程序,尽管最后没用上,但是作为练习还是不错的。 需求:对于像如下的字符创将其分隔为两列,这样就可以直接粘贴的Excel中各自列,否则一个一个分隔会耗费很多时间。16 bit microcomputer 16 位微型计算机3 d distribution 三维分布4 bit slice processor 4位片原创 2010-03-05 17:20:00 · 1303 阅读 · 0 评论 -
JAVA 解析 XML
XML文件时很多项目经常使用的配置或者其他用途的文件格式,解析xml文件格式的开发包也很多,本文主要使用java自带的DOM解析包。本文以一个实际例子来讲述解析xml文件的过程。 目标:解析这样一个XML文件 employees.xml =======内容开始======== Seagull 3674 34原创 2010-04-14 15:59:00 · 669 阅读 · 0 评论 -
Java参数传递 数组的使用
<br />数组在函数定义中的使用格式(int[] OrphanCount)<br /> <br />调用的时候一般使用: int[] OrphanCountBefore = new int[2];<br /><br /> theCalledMethod(OrphanCountBefore);<br /> <br /> <br /> <br />这是公共函数<br /> <br />public void GetOrphanCount(int原创 2010-10-14 10:58:00 · 4399 阅读 · 0 评论 -
转载 Windows下 JAVA_HOME PATH CLASSPATH 三个变量的配置
:java_home:指向的是JDK的安装路径,如C:/jdk1.5.0_04 2:path:环境变量原来Windows里面就有,你只需修改一下,使他指向JDK的bin目录,这样你在控制台下面编译、执行程序时就不需要再键入一大串路径了。设置方法是保留原来的PATH的内容,并在其中加上;%JAVA_HOME%/bin3:class_path:import进去的class文件,以".;转载 2012-02-08 22:19:15 · 730 阅读 · 0 评论 -
Eclipse 的版本名称(比如Helios | Galileo | Ganymede | Europa) 和数字对应关系
Eclipse 3.1 版本代号 IO 【木卫1,伊奥】 Eclipse 3.2 版本代号 Callisto 【木卫四,卡里斯托 】 Eclipse 3.3 版本代号 Eruopa 【木卫二,欧罗巴 】 Eclipse 3.4 版本代号 Ganymede 【木卫三,盖尼米德 】 Eclipse 3.5 版本代号 Galileo 【伽利略】 Eclipse 3.6 版本代号 He转载 2012-02-23 11:14:16 · 1156 阅读 · 0 评论 -
如何给自己程序通过命令行添加logging.properties文件
最新的几个小工具都使用了Logger(java.util.logging.Logger;, 大部分的信息都是finer级别的,只有少信息是info,但是字调试的时候需要使用finer级别,如何启用finer级别?1, 创建一份自己的logging。properties, 内容可以选handlers = java.util.logging.ConsoleHandler,原创 2014-12-26 13:47:29 · 4674 阅读 · 0 评论 -
Groovy语言的安装和Hello World例子
因为项目需求,看了一下动态语言,发现Groovy是一种和java语言紧密集合,同时又具备脚本语言的特写。Groovy语言的间接就不做了,有兴趣的看看http://groovy.codehaus.org/。 下面直接开始如何使用Groovy。 从最经典的hello world开始 1, 安装Java的JDK。 前面介绍了,Groovy是运行在JVM上面的,原创 2014-12-28 15:13:20 · 3954 阅读 · 0 评论 -
JSTL c if test 标签
工作中最近需要使用JSTL标签,特别是c if test。 记录下几个常用的例子 确保你可以通过pageContext.findAttribute("projectTemplateProp") 找到projectTemplateProp。 isDefinedProp is个boolean变量,原创 2015-04-07 18:39:58 · 11495 阅读 · 0 评论 -
JSP中的EL
Person.javapackage com.journaldev.model; public interface Person { public String getName(); public void setName(String nm);}Address.javapackage com.journaldev.model;转载 2015-04-09 21:33:00 · 576 阅读 · 0 评论 -
Java中使用AES加密的简单示例
整理文件时,发现以前一个例子。加解密经常用到就放到博客上供大家参考。代码如下,package com.yq.security;import java.security.InvalidAlgorithmParameterException;import java.security.InvalidKeyException;import java.security.NoS原创 2015-11-14 16:30:15 · 881 阅读 · 0 评论 -
多语言支持如何显示各种语言的名称
Java的JDK已经包含了各种语言的显示名称,比如中文,在Locale.SIMPLIFIED_CHINESE就显示为“中文 (中国)”,在Locale.ENGLISH,就显示“Chinese (China)”, 因为我们只获取当前用户的Locale,然后使用loc.getDisplayName(Locale.xxx)就能显示各种locale在用户locale该显示的名称。package原创 2015-12-29 10:50:53 · 759 阅读 · 0 评论 -
以当前默认file encoding读取文件然后以utf-8写入新文件
在简体中文Windows上, 默认启动的Java程序如果没有加上设置file encoding,那么默认生成的文件(写文件时没有指定编码的那种)是GBK编码的,这样的文件传输到其它非GBK编码的机器上会无法正常显示。 需要将其转换为utf-8格式的,这样就能在所有机器上以utf-8打开正常显示。 下面这段代码是如何将文件从当前默认的encoding读取后以utf-8写入原创 2015-12-22 10:20:55 · 5638 阅读 · 0 评论 -
log4j 如何配置不同的classeslog写入不同的文件中
项目中我们会写日志共以后出现问题时进行分析。但是将所有日志写入一个文件会导致日志文件内容庞杂很难分析,因此需要将不同的component的或者同一个component的不同类或者包的日子写入不同的文件。下面就是这样一个简单示例。 项目有个两个包,分别是package com.yq.logShow;和package com.yq.test;, 其中package com.yq原创 2016-03-23 10:53:26 · 2056 阅读 · 0 评论 -
Ant unless 和condition的用法
我们先看这个build.xml, 有三个target,其中dist默认会调用conditionOne的if部分。ifTarget默认因为有if="conditionOne",如果不是这事conditionOne属性就不执行。 elseTarget部分因为unless="conditionOne", 默认执行echo,除非设置conditionOne属性原创 2016-04-14 13:33:51 · 4162 阅读 · 0 评论 -
log4j.additivity用法和例子
因为需要将packageOne和packageTwo的日志写入各自单独的文件,同时在总的日志中不出现packageOne和PackageTwo的日志。可以使用log4j.additivity。因为log4j是层次的,如果没有log4j.additivity默认写入到packageOneFileAppender和packageTwoFileAppender的都会写入rootLogger的rootFi原创 2016-04-11 16:13:03 · 5398 阅读 · 0 评论