随笔分类 -  JAVA

摘要:@Validated和@Valid注解主要是做入参校验,我们一般用在Controller上,但是有时候需要在Service层的方法上做参数校验,应该怎么实现呢? 通过使用@Validated和@Valid注释的组合即可实现这一需求! 示例代码如下: @Service @Validated publi 阅读全文
posted @ 2022-04-03 12:39 gaopengpy
摘要:1.快速合并List集合中的元素 import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class Test { public static void main(St 阅读全文
posted @ 2021-06-17 18:46 gaopengpy
摘要:金额计算不能用doube!!!! 金额计算必须用BigDecimal,下面对比一下用double 跟BigDecimal的区别。先看一个小例子: 请看题: 示例1 问, 结果是多少? 0.01? No! 结果是0.009999999999999998! 为什么会这样呢? 因为float和double 阅读全文
posted @ 2021-03-05 23:06 gaopengpy
摘要:为什么wait notify会放在Object里边?wait(),notify(),notifyAll()用来操作线程为什么定义在Object类中? 1、这些方法存在于同步中; 2、使用这些方法必须标识同步所属的锁; 3、锁可以是任意对象,锁在Java中是对象头中的数据结构中的数据,在JVM中每个对 阅读全文
posted @ 2020-09-30 11:35 gaopengpy
摘要:JAVA技术体系比较庞大,没事对着图看看,查缺补漏。 阅读全文
posted @ 2020-08-28 14:13 gaopengpy
摘要:我们做的每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。 分享一个.gitignore模板,将下面的内容保存为一个.gitignore文件,存放于git仓库的根目录下。 /target/ !.mvn/wrapper/maven-wr 阅读全文
posted @ 2020-08-21 18:11 gaopengpy
摘要:SPI 全称为Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。 这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。 当服 阅读全文
posted @ 2020-08-18 10:52 gaopengpy
摘要:JAVA对象保存在内存中时,由以下三部分组成: 1、对象头 2、实例数据 3、对象填充字节 JAVA对象头由以下三部分组成: 1、Mark Word 2、指向类的指针 3、数组长度(只有数组对象才有) 阅读全文
posted @ 2020-08-11 15:11 gaopengpy
摘要:字符串是面试经常被问到的问题,需要正确理解字符串常量池,才能答好这类问题。 public class Test { public static void main(String[] args) { String s1 = "hello world"; String s2 = "hello world 阅读全文
posted @ 2020-07-24 16:36 gaopengpy
摘要:JOL全称为Java Object Layout,是分析JVM中对象布局的工具 java对象的组成部分: 1.对象头 在jvm虚拟机中每一个java对象都有一个对象头,对象头中包含标记字段以及对象指针,标记字段用来储存hash码、gc信息以及锁信息,而指针则指向改对象的类。在64位jvm虚拟机中这两 阅读全文
posted @ 2020-07-23 11:14 gaopengpy
摘要:最近在做一个项目,采用SpringBoot整合MybatisPlus开发,由于mapper.xml文件和mapper路径地址不一致,导致做单元测试报异常 application.yml配置如下: 写了个单元测试的代码: @RunWith(SpringRunner.class) @SpringBoot 阅读全文
posted @ 2020-04-29 11:43 gaopengpy
摘要:Java基本类型长度及对应对象的字节长度基本类型 长度 the size of an objectInt 4 16Short 2 16Long 8 24Byte 1 16Character 1 16Float 4 16Double 8 24 在JDK1.8中可以采用ObjectSizeCalcula 阅读全文
posted @ 2019-12-26 11:17 gaopengpy
摘要:举个小例子来看看,如果重写了equals而不重写hashcode会发生什么样的问题: 运行结果: 结果:null 如果我们已经对HashMap的原理有了一定了解,这个结果就不难理解了。尽管我们在进行get和put操作的时候,使用的key从逻辑上讲是等值的(通过equals比较是相等的),但由于没有重 阅读全文
posted @ 2019-12-18 11:37 gaopengpy
摘要:1.基本类型是值传递 运行结果: param= 2a= 1 2.对象封装是引用传递 运行结果: my name is wuqimy name is wuqi 3.String类型可以看作是值传递 运行结果: my name is wuqimy name is wutianqi 阅读全文
posted @ 2019-12-17 12:37 gaopengpy
摘要:使用SpringBoot同步微信公众号的粉丝详情,由于粉丝数量不多,一次拉取足矣,数量很多的话要改造为多线程模式。 项目结构如下: POM添加依赖: <!-- json工具类 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fa 阅读全文
posted @ 2019-12-02 16:31 gaopengpy
摘要:序列化和反序列化的概念:序列化:把对象转换为字节序列的过程称为对象的序列化。反序列化:把字节序列恢复为对象的过程称为对象的反序列化。 什么情况下需要序列化当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;当你想用套接字在网络上传送对象的时候;当你想通过RMI传输对象的时候; 如何实现序列化 阅读全文
posted @ 2019-11-22 10:56 gaopengpy
摘要:项目当中需要对用户操作菜单的行为记录日志,用SpringAOP写了个大概实现,切点是采用注解的方式,用包名的方式虽然也可以达到相同的效果,但是不如注解方式灵活方便。 不多说,直接上代码,此处只是简单写写实现原理。 工程目录: pom.xml引入以下依赖: <!-- 热部署模块 --> <depend 阅读全文
posted @ 2019-11-20 15:12 gaopengpy
摘要:这种运算符比较罕见,因为它有三个运算对象。但它确实属于运算符的一种,因为它最终也会生成一个值。这与本章后一节要讲述的普通if-else语句是不同的。表达式采取下述形式: 布尔表达式 ? 值0:值1 若“布尔表达式”的结果为true,就计算“值0”,而且它的结果成为最终由运算符产生的值。但若“布尔表达 阅读全文
posted @ 2017-05-13 16:50 gaopengpy
摘要:package test; import javax.xml.namespace.QName;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.descrip 阅读全文
posted @ 2017-05-13 16:47 gaopengpy