
Java基础/JUC/JVM
文章平均质量分 51
Java基础
石头wang
平凡码农,强迫症,抠细节。
展开
-
什么是cross field validation(交叉验证)
什么是cross field validation(交叉验证)原创 2022-12-17 22:00:00 · 424 阅读 · 0 评论 -
建Maven项目最好的事件设置jdk版本和文件编码(maven.compiler.source)
建Maven项目最好的事件设置jdk版本和文件编码(maven.compiler.source)写这个的目的是这个经常要用但是经常忘记,方便搜索找回来<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <ma原创 2022-01-10 21:00:00 · 2849 阅读 · 2 评论 -
关于 stream( ) 或 forEach() 为什么不能用如continue和break,如何替代
关于 stream( ) 或 forEach() 为什么不能用如continue和break,如何替代结论:使用不了continue和break,会编译失败。在forEach里头使用return就相当于continue。那有人会问,怎么break呢?背景比如// 用 forEach 替代arrayList.forEach(x -> { if (x.equals("8")) { //continue; // 不支持,提示 Continue outside of lo原创 2021-12-22 21:30:00 · 10170 阅读 · 3 评论 -
Java如何将List转成Map,及其细节(Java中用Stream)
Java如何将List转成Map,及其细节(Java中用Stream)详细看代码package com.example.demo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.stream.Co原创 2021-12-20 21:00:00 · 968 阅读 · 0 评论 -
如何用jconsole连接远程的springboot程序?(实测可行,网上其他的有点问题)
如何用jconsole连接远程的springboot程序?背景我们需要用jconsole连接远程的springboot的程序进行监控步骤首先在启动springboot的时候,需要加入一定的参数,如下是模板nohup java \-Djava.rmi.server.hostname=10.211.55.11 \-Dcom.sun.management.jmxremote=true \-Dcom.sun.management.jmxremote.port=1099 \-Dcom.sun.ma原创 2021-05-05 22:03:47 · 1551 阅读 · 5 评论 -
在单元测试的时候,会发现-ea的vm options参数,这个参数是干什么的? 为什么会自动添加
在单元测试的时候,会发现-ea的vm options参数,这个参数是干什么的? 为什么会自动添加-ea 的参数-ea就是中的ea就是enable assertion的意思,即 “启用断言”。加了-ea参数后可以使用 assert <表达式> 的写法。当然,不加-ea并不是不能写 assert xxx ,实际上依然是可以这么写,并且也能通过编译,只是在运行的时候实际是不起作用的。自动添加-ea,是因为IDEA中的单元测试模板(Templates)添加了这个参数,所有新开的junit测试就会自原创 2020-08-31 16:37:18 · 6082 阅读 · 0 评论 -
位运算详解
位运算1、“与” 运算(&)**运算规则:**两个参与运算的数据,按照它们的二进制位进行运算,只有两个位都是1的时候结果才是1,否则是0。例如1&1=1,1&0=0,0&1=0,0&0=0**举例:**3&5=? 首先将3换算成成2二进制数,3是 0000_0011,5是 0000_0101,则 0000_0011&0000_0101=0000_0001 即结果是十进制的1补充:1、负数按补码的形式参与 “与” 运算。用途:原创 2021-05-04 17:34:44 · 20975 阅读 · 1 评论 -
如何在官网下载早期的JDK 版本历史的版本
如何在官网下载早期的JDK 版本历史的版本网址访问这个http://www.oracle.com/technetwork/java/javase/archive-139210.html(Oracle网站(包括了很多的外国网站),下载都隐藏得比较深,总是感觉外国人的思维习惯和中国差别太大了)闲聊说起外国的人的思维,顺表聊下GreasyFork,是一个油猴脚本网站,这站点不登录的时候不显示 “收藏按钮”,只有登录之后才显示。真的非常智障,按中国人的思维,你登不登录都要显示这个按钮,要让别人知道啊,如原创 2021-05-08 06:45:32 · 874 阅读 · 0 评论 -
POJO/DTO/DO/EO/VO/BO/PO/AO的含义和使用
关于POJO/DTO/DO/EO/VO/BO/PO/AO本文讨论 POJO/DTO/DO/EO/VO/BO/PO/AO 的定义,另外讨论了这些xO在controller、service、dao/mapper层里的使用规范。另外还稍微讨论了controller中是否要 “轻逻辑”,mapper接口的规范等等问题。前言在我们的java项目中存在各种xO的概念,如POJO/DTO/DO/EO/VO...原创 2019-12-12 19:46:44 · 9341 阅读 · 3 评论 -
什么是SaaS系统
什么是SaaS系统对于SaaS可能听得很多,并且网上百科可以查到很多,但是要么是文绉绉没有温度的文字,理解上需要进一步自己加工,下面是我的理解,可能会存在偏颇,但是是用自己语言,自己的想法表达出来的,欢迎讨论什么是SaaS系统之我的理解举个例子,我觉得如下就是SaaS服务某企业B想要用一套OA系统,提供OA系统服务的公司S开一个账号给B,不同的服务试用者(企业)用不同的帐号,数据互相隔...原创 2019-03-12 11:01:56 · 22190 阅读 · 3 评论 -
关于 @DateTimeFormat 和 @JsonFormat 的区别以及springboot接口传Date的时候如何传参(dateformat)
背景你真的用对了 @DateTimeFormat 和 @JsonFormat 吗? 相信90%的人都搞不清楚它们的区别以及本文提到的细节本文基于 springboot 2.3.7.RELEASE 版本结论可以花两分钟看看结论,其他有时间选看。传非 JSON (比如键值对 x-www-form-urlencoded 或 form-data)得使用 @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss"),否则无法转换,具体的格式可以自行修改传非JSO原创 2021-12-01 22:45:00 · 2958 阅读 · 0 评论 -
lombok的SneakyThrows究竟还原成什么代码、它的用法
背景@SneakyThrows 这个 lombok 的注解背后生成的代码是什么样的?这个注解可以放在方法上(含静态)或构造方法上作用:其实就是用 try-catch 将方法的代码包起来。用 Throwable 接收可以接住一切1、可用于:构造方法、普通方法、静态方法。不可放在类里。2、它是使用 Throwable 作为 catch 的参数 (而不是Exception),所以不用担心有catch不到的3、并不是像他的名字 “sneaky” 一样偷偷地catch住异常并吞掉,还是会抛出来的,放心。原创 2021-11-30 19:12:07 · 762 阅读 · 0 评论 -
如何解决终端(cmd或Terminal)的下载速度很慢
如何解决终端(cmd或Terminal)的下载速度很慢?### 操作windows仅当前窗口生效set http_proxy=socks5://127.0.0.1:10808set https_proxy=socks5://127.0.0.1:10808或 (二选一即可,端口自行查看自己的软件)set http_proxy=http://127.0.0.1:10809set https_proxy=http://127.0.0.1:10809全局生效(所有窗口)设置Wi原创 2021-10-06 21:31:53 · 21097 阅读 · 1 评论 -
关于打印日志父类的字段不打印出来
背景编程这么多年,羞愧,才发现lombok的 @Data 和 @ToString 方法,只会打印子类的字段不打印父类的字段这样在打印日志的时候就要注意了,父类的字段在日志里是打印不出来的,写代码的时候就要提前预判到这风险,不要等到日志打印出来后想要查看的字段值在父类中就没办法了解决办法自行 log.info("xxxxx:{}", JsonUtil.toJSONString(yyy)) 或者需要的类自己重写 toString 方法,比如@Overridepublic String toStrin原创 2021-09-17 17:35:23 · 3176 阅读 · 0 评论 -
有人说没有用到的 import 语句会被忽略,真的这样吗?
背景有人说没有用到的 import 语句会被忽略,真的这样吗? 本工程寻求真相结论没有用的 import 语句,在编译过程不会被忽略,比如把 java.util.List 改成 java.util.List2 就会编译失败假设有 java.util.List 这个没用到的语句,编译出来的class 再反编译回java,会看到这个语句没有了这个仅仅说明反编译转件会把没有用的import 语句在反编译的时候没有体现出来。不能说明多余的import语句在编译过程会被忽略,实际我长久以来的经验认为是原创 2021-08-14 10:18:04 · 2169 阅读 · 0 评论 -
怎么样在 IDEA 同一个项目里使用不同的 jdk 版本
怎么样在 IDEA 同一个项目里使用不同的 jdk 版本背景有时我们需要在不同的 jdk 版本里头测试,这里我们建一个 Maven 项目,里面包含各种版本的模块,想要测哪个版本就在哪个版本里写测试代码。步骤建 Maven 项目,一个父 pom 的项目(Project),多个子模块(Module),以 jdk6/7/8 为例,项目结构:multi-jdk --jdk6 --jdk7 --jdk8前提保证你的电脑上安装了你要研究的 jdk 版本,比如 jdk6/7/8,并且 idea 里原创 2021-07-20 15:18:33 · 3184 阅读 · 0 评论 -
关于`Charset.defaultCharset()` 默认的编码的值是如何设进来的
关于Charset.defaultCharset() 默认的编码的值是如何设进来的对于代码System.out.println(Charset.defaultCharset());跟踪进去后会发现private static volatile Charset defaultCharset;public static Charset defaultCharset() { if (defaultCharset == null) { synchronized (Charset.class)原创 2021-07-04 11:25:39 · 1261 阅读 · 2 评论 -
Java如何获取平台(操作系统)的默认编码
Java如何获取平台(操作系统)的默认编码平台,这两个字指的就是操作系统,比如Windows平台,MacOS平台,Linux平台。这也是我们经常读API文档的时候见到的英文 “platform”,如 “platform encoding”。如何获取平台默认的编码import java.nio.charset.Charset; public class getDefaultCharset { public static void main(String[] args) {原创 2021-07-04 11:07:59 · 2548 阅读 · 2 评论 -
Information:java: javacTask: 源发行版 8 需要目标发行版 1.8
摘抄自本人博客,详细可以参考:https://blog.youkuaiyun.com/w8y56f/article/details/117825442问题Information:java: javacTask: 源发行版 8 需要目标发行版 1.8解决方法这个乍看错误提示似乎不太好定位问题所在,不过肯定是配置的问题。那怎么解决呢?你把本文提到的那些配置的地方,检查一下,改成一致版本。(建议看上述的链接)...原创 2021-06-15 09:21:46 · 1152 阅读 · 1 评论 -
java.lang.UnsupportedClassVersionError: com/wyf/test/non/T : Unsupported major.minor version 52.0
摘抄自本人博客,详细可以参考:https://blog.youkuaiyun.com/w8y56f/article/details/117825442问题java.lang.UnsupportedClassVersionError: com/wyf/test/non/T : Unsupported major.minor version 52.0如何解决举个例子,如果你的class是jdk8编译的,如果你切换成7运行。这里的 52.0 是不支持的版本,指你的class文件是用52版本编译的,不支持。为什么原创 2021-06-15 09:19:55 · 285 阅读 · 0 评论 -
Diamond types are not supported at language level ‘5‘
摘抄自本人博客,详细可以参考:https://blog.youkuaiyun.com/w8y56f/article/details/117825442如何解决java.lang.UnsupportedClassVersionError: com/wyf/test/non/T : Unsupported major.minor version 52.0解决方法修改language level即可能可以临时解决。diamond指钻石,即钻石符号(<>),长得像钻石吧!所以看到diamond这个单原创 2021-06-15 09:17:06 · 378 阅读 · 0 评论 -
打包部署后无法读取jar包里的文件(实测可行,Java中读取jar包中的文件)
打包部署后无法读取jar包里的文件Java中读取jar包中的文件linux中无法读取jar包中的内容(windows可以的!),如何解决一、背景项目中免不了需要读取文件,如果文件用绝对路径读取,就需要配置或写死路径,非常不便。如果我们读取类路径上的文件,就不会这么麻烦。比如要读取的文件位于类路径下 java/main/resources/myfile.txt,这个文件在项目打成jar包的时候,也会压缩在里头,非常方便。用 this.getClass().getResource(resource原创 2021-06-03 17:44:54 · 7678 阅读 · 4 评论 -
关于Map的get方法的巨坑
关于Map的get方法的巨坑Map中的get方法真的很坑,为什么泛型对于put方法有效,而get方法的入参却可以随便传任何类型?例如:Map<String, String> map = new HashMap<>();map.put("key", "vvv");String s = map.get(Long.parseLong("123"));为什么put的时候key和value都做了泛型的约束,即key和value的类型如果跟泛型约束对不上就编译错误。但是为什么get原创 2021-05-08 16:03:55 · 1326 阅读 · 1 评论 -
ClassNotFoundException 和 NoClassDefFoundError 的区别
ClassNotFoundException 和 NoClassDefFoundError 的区别结论ClassNotFoundExceptionNoClassDefFoundError是异常,而且是checked exception(需要你处理)是Error,不需要你处理,你要用try-catch(Throwable t) 捕获也行,Error跟checked exception不一样,不会强制需要处理一般在执行Class.forName() 的时候抛出来。其他方法比如还有原创 2021-04-07 08:03:23 · 288 阅读 · 0 评论 -
DateUtil,时区,常用的日期接口
DateUtil,时区,常用的日期接口背景这期总结了Java中常用的关于日期和时间的接口,代码在后面的 DateUtil 类中。顺便讨论了一下时区。文章尽量做到精简表示时间的形式在 Java 里,表示时间通常有3种形式时间戳Date (java.util.Date)字符串(不讨论LocalDateTime之类的)例如时间戳: System.currentTimeMillis() 的值Date:你经常 new Date()字符串: 比如 2015-04-04 16:22:01,或原创 2021-04-04 17:17:11 · 2601 阅读 · 0 评论 -
关于用select-for-update语句产生锁住记录不让其他事务(线程)修改的问题
背景我们知道update库表里的一条数据会产生行锁,提交事务后才会释放行锁,在行锁阶段别的事务无法去修改同一条记录。在 Navicat 和命令行中,执行完这条update的 SQL 就立即提交事务。但是在Java程序里,用 @Transactional 修饰的方法只有执行完毕后才会提交事务。除了update 语句,select for update 语句也是可以产生行锁的,可以用于临时锁定一行记录不被修改。今天研究的课题就是研究下 select for update 的细节代码直接上代码Re原创 2021-04-02 13:45:38 · 2663 阅读 · 3 评论 -
什么是java中的checked exception?runtime exception?unchecked exception?以及一些思考
什么是java中的checked exception?runtime exception?unchecked exception?概述checked exception是java官方文档中提过的,就是那些强迫程序员一定要处理的异常(抛出或者try-catch处理); 继承Exceptionunchecked exception貌似是java官方没有提到的词,但是网络上很多这个词,所以列出来。其实就是runtime exception; 继承 RuntimeException印象中曾经读过原创 2020-12-24 19:14:53 · 583 阅读 · 1 评论 -
内部类生成的class文件名的规律
说明研究一下内部类,编译出来后的类名有什么规律详细内部类也是类,是个类就会有独立的class文件.可以看到,不管哪种内部类,文件名都有 $ 符号. 所以, 凡是有$的class文件都是内部类一共4种内部类成员内部类(位于类中非静态)静态内部类(位于勒种静态)局部内部类(位于方法内,或者代码块内)匿名内部类1. 成员内部类 & 静态内部类成员和静态内部类,生产的class文件名的规律是: 外部类名$内部类名.class (这个规则就可保持不重名)如:成员内部类p原创 2020-12-13 21:16:11 · 1932 阅读 · 0 评论 -
mapstruct的使用
mapstruct的使用背景我们可能都用过spring的BeanUtils将bean1转成bean2,例如BeancopyProperties(source, target);这个工具其实在有些公司是被禁止的,我猜是这几个原因可读性差了,虽然代码简单了有些错误不能在编译期就暴露出来,有时候甚至是在运行时也暴露不出来例如bean1转为bean2,如果bean1有List<A> list,而bean2有List<B> list,由于类型相同,都是List,且变量名相同原创 2020-09-28 18:45:17 · 1960 阅读 · 0 评论 -
java类和类之间的关系
java类和类之间的关系概览5种关系依赖(dependency)关联(association)聚合(aggregation)组合(composition)继承(inheritance)可以更加细得分为实现(realization)和泛化(generalization)从上至下依赖关系逐渐增强详细说明区别其实依赖、 关联、聚合、组合 都是差不多的,在日常的表达中也很容易混为一...原创 2020-02-26 10:59:52 · 213 阅读 · 0 评论 -
Java里的json工具类(fastjson、Jackson(即ObjectMapper)、Gson)的使用
Java里的json工具类(fastjson、Jackson(即ObjectMapper)、Gson)的使用说明本文探讨 JSON 的工具类:Fastjson、Jackson(ObjectMapper)、GsonFastjson:这是阿里巴巴的json工具类Jackson:这是spring框架自带的(就是那个ObjectMapper类)Gson:是谷歌的工具类本文给出了通用的Jso...原创 2020-02-13 16:33:11 · 4946 阅读 · 0 评论 -
三目运算符发生空指针异常的坑
三目运算符的坑public static void main(String[] args) { // 报错。三目运算符有个很隐蔽的操作,会把nullValue转换成跟 "-1L" 同样的类型,即原始类型(primitive type)。null值转原始类型自然出现NPE Long nullValue = null; Long l = true ? nullValue : -1L; //...原创 2019-10-15 15:47:48 · 534 阅读 · 0 评论 -
最简单的Lombok教程及其原理
使用Lombok一、如何使用 Lombok首先IDE必须安装插件才能支持 lombok。插件安装教程自行搜索Maven 项目引入依赖,请自行依赖最新版本(也可以不指定版本,继承spring)<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombo...原创 2019-10-11 19:52:46 · 589 阅读 · 0 评论 -
struts1.x小笔记
1、 Struts1.2的.jsp中要用到Struts自己的标签,要引入才能用一般在.jsp的前面写上<%@ taglib prefix=”html” uri=”http://struts.apache.org/tags-html” %>如果还要用其他的,也必须加上。例如想用bean的,加上<%@ taglib prefix=”bean” uri...原创 2011-02-11 15:52:00 · 755 阅读 · 0 评论 -
Validator验证框架入门
一、Validator框架的优势 Validator框架是一个Struts插件,最初由David Winterfeldt设计并实现。Validator框架从Struts 0.5时代就可以使用,但那时Validator框架只是被捐助的一个jar包。Apache组织为了使开发人员更方便地使用Validator框架,决定从Struts1.1开始,将Validator框架作为Struts的一部分...原创 2011-02-11 15:57:00 · 670 阅读 · 0 评论 -
关于The serializable class XXX does not declare a static final serialVersionUID field of type long的警告
关于The serializable class XXX does not declare a static final serialVersionUID field of type long的警告2009-01-04 08:22 by Johnny Qian, 2365 visits,网摘,收藏,编辑今天在编写Java程序的时候,发现这个警告提示,于是google了一下。得到...转载 2011-02-11 23:02:00 · 668 阅读 · 0 评论 -
POJO、VO、DTO、DO
一些英文单词:POJO(Plain Ordinary Java Object,也有Plain Old Java Object)VO(Value Object)DTO(Data Transfer Object)DO(不知道是Data Object还是Domain Object)原创 2011-02-11 20:04:00 · 542 阅读 · 0 评论