java学习
文章平均质量分 60
承与
这个作者很懒,什么都没留下…
展开
-
自定义添加校验注解
序: 最近项目用到了自定义添加校验注解,记录一下过程1. 校验注解使用校验注解一般是在后端实体类上进行定义,对参数数据类型进行核查,例如邮箱地址是否正确,首字母大小写等,javax.validation.constraints提供了一系列注解使用,常用比如:@Null 验证对象是否为null@NotNull 验证对象是否不为null, 无法查检长度为0的字符串@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.@NotEmpty 检查.原创 2021-08-17 14:42:04 · 324 阅读 · 0 评论 -
JDK1.7后为什么Switch能对String字符串类型提供支持及原理
在JDK7之后,switch提供了对String字符串的支持,而在我们印象之中,Switch只提供byte,char,short,int类型的常量表达式的支持,为什么JDK7之中能对String字符串对象使用呢?抱着这个疑问,就有了本文。 首先,让我们看一下一般情况下Switch语句写法:int num = 1;switch (num) { case 2: System.out.println(2); break; case 1: Sy原创 2021-06-20 12:16:16 · 581 阅读 · 0 评论 -
Java多线程中使用If判断导致的虚假唤醒问题及解决方法
什么是虚假唤醒在一般条件下,当线程进入wait状态下,需要其他线程调用notify,notifyAll方法后,线程才会从wait方法中返回, 而虚假唤醒是指线程通过其他方式,从wait方法中返回。举一个例子:当购买车票时,线程A买票,如果发现没有余票,则会调用wait方法,线程进入等待队列中,线程B进行退票操作,余票数量加一,然后调用notify 方法通知等待线程,此时线程A被唤醒执行购票操作。如果是按照if(余票数<0)判断,程序按逻辑完全可行。那么此时线程A的状态应该如下:(1)释放锁.原创 2021-06-18 20:19:22 · 508 阅读 · 0 评论 -
Java中常见几种字符串拼接以及如何选择拼接方式
在Java编码过程中,经常需要将字符串拼接到一起,本文主要介绍Java中几种常见拼接方式。“+” 在java中,可以直接采用"+"进行字符串的拼接,例如:String name = "lby" + "dcy"; 原理:有些人会认为这是运算符重载,但其实并不是,java中不支持运算符重载,这其实是一个语法糖。 上面代码反编译如下:String name = (new StringBuilder()).append("lby").append("dcy").toString();原创 2021-06-18 12:29:56 · 4983 阅读 · 0 评论 -
Java中关于自动拆装箱
首先我们要了解基本数据类型与包装类型。包装类型 Java 语言是一个面向对象的语言,但是 Java 中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。 包装类均位于 java.lang 包,包装类和基本数据类型的对应关系如下表所示基本数据类型包装类byteBytebooleanBooleans原创 2021-06-17 17:13:18 · 116 阅读 · 0 评论 -
什么POJO(实体类)中使用包装对象而不用基本数据类型?
在阿里巴巴Java开发手册中,对于POJO中如何选择变量的类型时强制规定必须使用包装类: 举个例子,在做金融业务时,如果系统出现异常,返回的为系统默认值,那么在包装类中,会返回null,而基本数据类型,如double中,会返回0.0。那么,对于这其中来说,系统拿到null值会直接报错,阻断程序运行;但是如果是0.0,那么系统会继续运行返回错误值。...原创 2021-06-17 17:11:11 · 680 阅读 · 0 评论 -
tableSizeFor方法理解
tableSizeFor方法理解最近在学习HashMap的一些知识点,感觉tableSizeFor方法很巧妙,特意记录一下首先看一下tableSizeFor方法源码static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |原创 2020-12-10 16:09:37 · 2196 阅读 · 0 评论 -
SpringBoot之@SpringBootApplication底层理解
@SpringBootApplication底层理解近期在学习SpringBoot,摸索了很久,结合几位老师的理解将自己对@SpringBootApplication的底层理解记录一下1. @SpringBootApplication的作用@SpringBootApplication来标注这是一个springboot的应用,被标注的类是一个主程序,运行SpringApplication.run(App.class, args)方法;传入的类App.class必须是被@SpringBootApplica原创 2021-04-09 20:47:57 · 472 阅读 · 0 评论 -
SpringBoot中关于参数基本注解
学习SpringBoot过程中,参数这几个注解一直傻傻搞不清,今天做一个总结!1. @PathVariable注解与@RequestParam注解这两个注解开始搞混了,报了400的错还一直找不到,就放一起,便于对比区分。@PathVariable:作用:接收请求路径中占位符的值,举个栗子:@RequestMapping("/user/{id}")//请求地址"localhost:8080/user/{id}"@PathVariable("id")Integer id//@PathVar.原创 2021-04-17 20:46:09 · 1292 阅读 · 0 评论 -
Zookeeper+Dubbo集成基本准备环境搭建
1. Zokeeper and DubboZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。RPC【Remote Procedure Ca原创 2021-04-22 20:21:35 · 85 阅读 · 0 评论