● 【JAVA】
文章平均质量分 86
Java专栏
Thinkingcao
CSDN2019年度博客之星、博客专家,专注架构、Java、Spring、SpringBoot、SpringCloud、微服务、数据库、分布式、中间件、源码分析、JVM性能调优、K8S等领域
微信搜索公众号:「Thinking曹」,一个执着于架构的JAVA基层码农,每天带你学习新知识。
展开
-
JDK1.8新特性 Optional判空详解,简化判空操作
一、简介从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但是 Optional 的意义显然不止于此。我们从一个简单的用例开始。在 Java 8 之前,任何访问对象原创 2022-03-09 11:27:56 · 22020 阅读 · 0 评论 -
JDK1.8时间接口 LocalDateTime用法
一、JDK 8新增日期和时间的新类Java 8为Date和Time引入了新的API,以解决旧java.util.Date和java.util.Calendar的缺点。Java 8时间类库中的核心类,比如LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Period, Duration以及它们的api。1、获取时间 @Test public void testGetDate() { /** * 1.原创 2021-05-17 14:36:26 · 888 阅读 · 0 评论 -
一文教你如何透彻理解Java异常处理
一、JAVA 异常类型结构分类在Java中Throwable是所有异常类型的基类,并且Throwable异常下一层分为两个分支,分别为Error 和 Exception,Error和 Exception都继承自基类Throwable。其关系结构图如下:二、Error 和 Exeption区别1. ErrorError表示不可恢复的情况,例如Java虚拟机(JVM)内存不足,内存泄漏,堆栈溢出错误,库不兼容,无限递归等,描述了 JAVA程序运行时系统的内部错误,通常比较严重,该异常产生的错误通常原创 2020-11-25 17:13:22 · 1534 阅读 · 0 评论 -
Java序列化和反序列化为什么要实现Serializable接口
一、前言最近公司的在做服务化, 需要把所有model包里的类都实现Serializable接口, 同时还要显示指定serialVersionUID的值. 听到这个需求, 我脑海里就突然出现了好几个问题, 比如说:(1) 序列化和反序列化是什么?(2) 实现序列化和反序列化为什么要实现Serializable接口?(3) 实现Serializable接口就算了, 为什么还要显示指定serialVersionUID的值?(4) 我要为serialVersionUID指定个什么值?下面我们来一一解答这转载 2020-11-10 10:20:29 · 515 阅读 · 0 评论 -
JDK1.8新特性Stream流式操作,简化遍历操作
一. 前言 随着Java的发展,越来越多的企业开始使用JDK1.8 版本。JDK1.8 是自 JDK1.5之后最重要的版本,这个版本包含语言、编译器、库、工具、JVM等方面的十多个新特性。本次文章将着重学习Stream。 Stream 是JDK1.8 中处理集合的关键抽象概念,Lambda 和 Stream 是JDK1.8新增的函数式编程最有亮点的特性了,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操原创 2020-09-18 14:59:19 · 14394 阅读 · 8 评论 -
java8中的流式处理数据,stream的使用
一、Jdk8stream操作package com.hf.mypractice.Javabase; import com.hf.mypractice.model.User; import java.util.*;import java.util.stream.Collectors;import java.util.stream.Stream; /** * @Descriptio...转载 2020-04-22 13:34:57 · 1231 阅读 · 0 评论 -
HttpServletRequest获取项目请求路径
原创 2020-01-02 10:57:57 · 867 阅读 · 0 评论 -
Long类型参数传到前端精度丢失的解决方案
一、前言由于公司数据库表的id是利用雪花算法生成的,所以实体类里面定义的数据类型为Long。但是这个数据传到前端时,发生了精度丢失的现象。本文记录了从java后端的角度如何解决这个精度丢失的问题,便于自己后续查阅。二、问题的描述前端通过ajax请求后端接口,返回json数据,然后将数据渲染到一个表格中。突然发现表格中id这一列出现了精度丢失的现象,这精度丢失是由前端引起的。三、解决方案...转载 2019-12-17 14:28:54 · 3696 阅读 · 0 评论 -
深入理解java注解的实现原理
前言在Spring 2.0及早期时代,Web项目开发是通过配置文件 xml来实现 Bean 的依赖注入,有多少个Bean,就在xml配置问价中加多少个,这样一来在 Bean 的数量越来越多的时候,xml的配置也就会越来越复杂,显得格外的冗余,很多代码都是一个模式,需要做下封装才好。Spring 2.0在xml配置文件上做了一定的优化,让配置看起来越来越简单,但是并没语完全解决xml冗余的问题...翻译 2019-11-13 17:02:40 · 4083 阅读 · 0 评论 -
Java时间处理工具类DateUtils
下面贴一些常见Java后台时间处理的工具封装,部分借鉴开源作者ThinkGem的,部分自己添入的;/** * Copyright &copy; 2012-2014 <a * href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved. */package c...原创 2018-09-21 09:54:11 · 839 阅读 · 0 评论 -
Java中为什么实体类需要实现序列化
一、什么是Java对象序列化 Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,也可用于网络传输,一般当我们使用缓存cache(内存空间不够有可能会本地存储到硬盘)或远程调用rpc(网络传输)就是目前使用比较火的分布式框架的时候,经常需要让我们的实体类实现Serializable接口,目的...原创 2017-07-14 19:53:11 · 13580 阅读 · 5 评论 -
java中final修饰方法传入参数的含义
final类型修饰的参数分为两种类型 基本类型 与引用类型 参数加final1、斯坦福教授说的好,方法可以比喻成一台机器(面包机),没错,在我的机器(方法)里面,我要的参数加了final(要原料),你给我传过来的参数,机器里面就无法改了,也就是说在机器里的这个参数,一直指向的都是你传进来的参数。public class FinalNBA { public static voi...转载 2018-10-16 11:24:21 · 10929 阅读 · 3 评论 -
使用URLDecoder.decode解析字符串含有“+“,“+“号这个特殊字符会自动转换成空格
1.问题: 在使用url的时候,一般从网络或是服务器得到的一个url地址一般都是经过encode编码过(一般是使用URLEncoder.encode),或者是我们要给服务端传递url参数,直接使用的话,到服务端去解析的时候(应该服务端就是URLEncoder.encode来解码),原来没有经历过encode编码的字符串,比如"g/H/4/+i026qwzShXW/bSmHqkZD9G...原创 2018-10-31 17:03:55 · 8340 阅读 · 4 评论 -
Java注解之 @Target、@Retention、@Documented详解
一、前言想了解下Spring框架里面的注解一些用法和配置,下面以@RestController注解为例子package org.springframework.web.bind.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java...原创 2019-09-07 21:01:35 · 1611 阅读 · 0 评论 -
彻底让你明白 Integer 类和 int 基本数据类型的区别
突然发现自己对Integer i = 10;这种语法不太明白,于是乎有了这篇文章,那么在讲解 Integer 之前,我们先看下面这段代码:public static void main(String[] args) {Integer i = 10;Integer j = 10;System.out.println(i == j);Int...转载 2019-08-16 11:21:21 · 2067 阅读 · 0 评论 -
request.getRequestURI(),request.getRequestURL(),request.getQueryString()区别
1.方法String requestURI = request.getRequestURI();StringBuffer requestURL = request.getRequestURL();String queryString = request.getQueryString();2.编写测试Controller测试import org.springframework.s...原创 2019-06-24 17:31:03 · 3991 阅读 · 0 评论 -
史上最完善的判断URL是否可访问工具类
1.URLUtils工具类@Slf4jpublic class URLUtils { private static final String URL_PREFIX_INSECURITY = "http://"; private static final String URL_PREFIX_SECURITY = "https://"; /*** 建立连接http连...转载 2019-05-21 13:58:30 · 1345 阅读 · 1 评论 -
@JsonFormat与@DateTimeFormat注解的使用
背景:从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题,其次,另一个问题是,我们在使用WEB服务的时,可能会需要用到,传入时间给后台,比如注册新用户需要填入出生日...原创 2019-04-03 10:08:13 · 1910 阅读 · 0 评论 -
java实现动态将Java文件编译为Class字节码的几种方法
所谓动态编译,就是在程序运行时产生java类,并编译成class文件。在D盘test目录下有两个java文件:AlTest1.java、AlTest2.java,现需要通过java代码实现java文件到class文件的编译操作: import java.io.BufferedReader;import java.io.InputStream;import java.io.Input...原创 2019-03-28 16:53:55 · 3615 阅读 · 0 评论 -
final修饰的类有什么特点
final修饰的类有什么特点2018年04月22日 10:59:31点点滴滴的记录阅读数:129变量定义为final,一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。方法定义为final,是为了防止任何继承类改变它。类定义为final,则该类无法给任何类继承。 final类不能被继承,没有子类,final类中的方法默...转载 2019-03-22 17:32:17 · 1344 阅读 · 0 评论 -
二维码生成工具
在项目中有时候需要用到二维码,集成二维码生成工具会方便很多,最近浏览GitHub时,发现一个好的二维码生成工具类二维码生成工具源码地址:https://github.com/binarywang/qrcode-utilsMaven项目中直接加入二维码生成工具的依赖信息:<dependency> <groupId>com.github.binarywang&...原创 2019-02-18 13:24:43 · 717 阅读 · 0 评论 -
都2019了,还在问GET和POST的区别
GET和POST的区别本质区别:https://segmentfault.com/a/1190000018129846原创 2019-02-15 13:12:32 · 259 阅读 · 0 评论 -
java中重写toString()方法的意义
前言 学习Java的人都知道,Java所有类都是Object的子类。所以,所有的Java对象都可以调用Object类提供的方法。其中,toString()就是其中一个。下面讲解一下为什么会有重写toString()方法一说。重写ToString首先,我们先来创建一个Persion类,它只简单的包含name和sex、city、site这4个属性,当然,生成它的setter...原创 2017-02-13 11:00:52 · 4076 阅读 · 0 评论 -
Java重写ToString()方法的意义
“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点人工智能教程可以跳转到教程。1、为什么要重写ToString?其实对于一般的对象来说都会有这个方法,ToString()这个方法的作用,主要就是将对象中各个属性值按字符串的方式输出出来,用白话说就是:使用文字描述这个对象里各个变量是什么值...原创 2017-02-13 10:59:15 · 23503 阅读 · 10 评论 -
什么是重写?重写的作用?
1、什么是重写? 个人理解:在子类中可以根据需要对从基类中继承来的方法进行重写,重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西 官方理解:在Java和其他一些高级面向对象的编程语言中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写...原创 2017-02-13 10:38:58 · 67437 阅读 · 4 评论 -
什么是重载?重载的作用?
一、什么是重载?重载,从简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。在java中同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。这种情况下,该方法就被称为重载,这个过程称为方法重载 ,通俗的讲就是省了给method命名了.差不多的都用一个.例如:publiccla...原创 2017-02-13 10:17:46 · 122134 阅读 · 15 评论 -
Java中static深入理解
static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。需要了解jvm classloader1、static变量按照是否静态的对类成员变量进行分类可分两种:一种原创 2017-02-13 16:57:58 · 498 阅读 · 0 评论 -
@SuppressWarnings(“serial“)注解
@SuppressWarningsJ2SE 提供的一个批注或者注解。该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默,即忽略这些警告信息。在平常的编码过程中,我们经常使用到的是unchecked,serial这些。@SuppressWarnings()中可传入一个字符串数组,数组中列出需要忽略的情况。如果传入多种情况,这几种情况的处理同原创 2017-05-04 15:01:59 · 12779 阅读 · 0 评论 -
内部类的对象生命周期和static的作用
如:public class InnerClassDemo{int x;class A{static int a = 0;//这样写是不合法的.static final int b=0;//这样写是合法的}} java类加载顺序,首先加载类,执行static变量初始化,接下来执行对象的创建,如果我们要执行代码中的变量int a 初始化,那么必须先执行原创 2017-04-10 16:17:41 · 1757 阅读 · 0 评论 -
getString()方法用法详解
StringgetString(intcolumnIndex)以 Java 编程语言中String的形式获取此ResultSet对象的当前行中指定列的值。getStringString getString(intcolumnIndex)throws SQLException 以 Java 编程语言中String的形式获取原创 2017-04-10 15:49:11 · 71424 阅读 · 2 评论 -
使用commons-lang包中API实现javabean的equals,hashCode和toString三个方法重写
在实际项目中,有时需要对javabean的equals,hashCode和toString三个方法重写,一般情况下会选择手写,这样比较繁琐,另外一种方式是通过反射机制就可以完成,这样就显得更为简单。1.手写借用其他博客中手写代码案例1packageper.jone;2importjava.util.Date;3importorg.apache.commons.l原创 2017-02-15 14:40:45 · 874 阅读 · 0 评论