
java
文章平均质量分 59
java
TanaStudy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
详解 JVM 内存分配和垃圾回收算法
目录1. JVM 内存分配与回收1.1. 概要1.2. 堆内存常见的分配策略1.3. GC简介1. JVM 内存分配与回收1.1. 概要Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收。Java 堆是垃圾收集器管理的主要区域,因此也被称作GC 堆(Garbage Collected Heap)。从垃圾回收的角度,由于现在收集器基本都采用分代垃圾收集算法,所以 Java 堆还可以细分为:新生代和老年代:再细致一点有原创 2021-01-19 10:42:57 · 2327 阅读 · 0 评论 -
JVM 双亲委派机制(通俗易懂)
类加载器Java是运行在Java的虚拟机(JVM)中的,我们在IDE中编写的Java源代码被编译器编译成.class的字节码文件。然后ClassLoader负责将这些class文件加载到JVM中去执行。JVM中提供了自上而下提供了三层的ClassLoader:BootstrapClassLoader(启动类加载器) :最顶层的加载类,由C++实现,负责加载 %JAVA_HOME%/lib目录下的jar包和类或者或被 -Xbootclasspath参数指定的路径中的所有类。ExtensionClass原创 2021-01-20 11:30:25 · 3842 阅读 · 3 评论 -
RestTemplate请求:Could not extract response: no suitable HttpMessageConverter found for response type
1、问题描述使用RestTemplate发请求时出现Could not extract response: no suitable HttpMessageConverter found for response type.... content type [text/html;charset=UTF-8]的问题,具体错误如下:org.springframework.web.client.UnknownContentTypeException: Could not extract response: no原创 2021-09-23 11:03:24 · 26872 阅读 · 31 评论 -
解决java.lang.UnsupportedOperationException的问题
1、问题描述在项目中对List进行操作时报错java.lang.UnsupportedOperationException,详细如下Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108) at com.atgui原创 2021-09-23 10:50:06 · 3983 阅读 · 6 评论 -
Guava Cache LoadingCache 之 refreshAfterWrites和expireAfterWrite区别
三种基于时间清理或刷新缓存数据的方式:expireAfterAccess: 当缓存项在指定的时间段内没有被读或写就会被回收。expireAfterWrite:当缓存项在指定的时间段内没有更新就会被回收(移除key),需要等待获取新值才会返回。refreshAfterWrite:当缓存项上一次更新操作之后的多久会被刷新。第一个请求进来,执行load把数据加载到内存中(同步过程),指定的过期时间内比如10秒,都是从cache里读取数据。过了10秒后,没有请求进来,不会移除key。再有请求过来,才则执行re转载 2021-09-23 10:43:53 · 2523 阅读 · 4 评论 -
Spring定时任务:Cron expression must consist of 6 fields
1、问题描述Caused by: java.lang.IllegalStateException: Encountered invalid @Scheduled method 'userRegPersist': Cron expression must consist of 6 fields (found 7 in "0 12 17 14 3 ? 2018") at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPost原创 2021-09-22 11:40:01 · 13695 阅读 · 14 评论 -
Java 逆序数组元素的三种方式
Java 逆序数组元素的三种方式原创 2021-02-02 16:01:31 · 3202 阅读 · 2 评论 -
Java 字符串、数组、ArrayList转换
1、字符串转数组// 字符串转数组 java.lang.StringString str = "0,1,2,3,4,5";String[] arr = str.split(","); // 用,分割System.out.println(Arrays.toString(arr)); // [0, 1, 2, 3, 4, 5]1234注意: . 、 | 和 * 等转义字符,必须得加 \。多个分隔符,可以用 | 作为连字符。2、数组转字符串方法一:遍历String[] arr = {原创 2021-02-02 16:43:19 · 7536 阅读 · 0 评论 -
Java中Date类型获取年月日时分秒的两种方法
Java的Date类型是,提供用来描述日期时间的类,它可以存储时间的年月日、时分秒的信息。但是如何从Date的实例中获取这些信息呢?原创 2021-04-14 19:43:32 · 22192 阅读 · 3 评论 -
Java如何判断数组中是否包含某个元素
如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow中也是一个非常热门的问题。在投票比较高的几个答案中给出了几种不同的方法,但是他们的时间复杂度也是各不相同的。本文将分析几种常见用法及其时间成本。原创 2021-04-14 19:27:17 · 3244 阅读 · 2 评论 -
cron表达式详解
目录cron表达式格式一:每个字段的允许值二:允许值的意思:三:每个符号的意义:四:一些cron表达式案例五:表达式生成器(cron = "* * * * * *")cron表达式格式{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}例 “0 0 12 ? * WED” 在每星期三下午12:00 执行(年份通常 省略)先了解每个位置代表的含义,在了解每个位置允许的范围,以及一些特殊写法,还有常用的案例,足够你掌握cron表达式一:每个字段的允许值字段原创 2021-09-18 14:56:05 · 1055 阅读 · 6 评论 -
Spring Boot定时器使用动态cron表达式
前言需要实现一个动态改变cron表达式的定时器任务。我们知道Spring Boot要使用定时任务,就要在启动类上加上@EnableScheduling注解,并且在某个方法上加上@Scheduled(cron = “0 0 1 * * ?”)这种普通的方式,注解中的cron是没办法改变的,不能自定义动态的。即使当你强行去定义一个cron变量时,也会提醒你需要用final static修饰。但Spring提供了一个接口:SchedulingConfigurer,实现接口重写方法就可以动态配置cron。原创 2021-09-18 14:39:18 · 2605 阅读 · 4 评论 -
spring中 allowBeanDefinitionOverriding(spring.main.allow-bean-definition-overriding) 分析
问题描述最近在学习spring cloud sleuth过程中,遇到了一个问题:The bean 'characterEncodingFilter', defined in class path resource [zipkin/autoconfigure/ui/ZipkinUiAutoConfiguration.class], could not be registered. A bean with that name has already been defined in class path r转载 2021-08-31 17:33:19 · 2309 阅读 · 4 评论 -
IDEA在Terminal中使用Git命令
1、打开Settings[ 快捷键Ctrl+Alt+S ]2、在Settins中搜索[ terminal ]按照下图描述进行修改3、IDEA就可以在Terminal终端使用Git命令行了原创 2021-08-18 14:24:34 · 7879 阅读 · 14 评论 -
解决跨域配置问题:When allowCredentials is true, allowedOrigins cannot contain the special value
1、问题描述SpringBoot配置跨域时出现:java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value "*"since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of原创 2021-08-16 17:09:54 · 22960 阅读 · 8 评论 -
计算机优质书籍搜集(持续更新)
目录计算机基础计算机网络操作系统数据结构算法数据库数据库基础MySQLRedisJavaJava基础并发JVMSpring/SpringBoot面试原创 2021-01-26 11:56:32 · 1426 阅读 · 2 评论 -
Java如何获得从1970年1月1日0时0分0秒到当前时间毫秒数
想通过1970年1月1日0时0分0秒到当前时间的毫秒数来生成一个随机的ID,以下两种方法可以实现 1、Calendar包下的getTimeInMillis()方法getTimeInMillis()方法的解释 /** * Returns this Calendar's time value in milliseconds. * * @return the current time as UTC milliseconds from the epoch.原创 2021-07-15 14:39:42 · 11509 阅读 · 2 评论 -
idea 快捷键ctrl+shift+f失效的解决方案
文章目录 搜狗输入法快捷键冲突微软输入法快捷键冲突修改idea冲突的快捷键 搜狗输入法快捷键冲突 刚换了新环境,新装的idea的快捷键ctrl+shift+f按了没反应,于是想到快捷键冲突了,马上查看qq和搜狗输入法的快捷键: 这里是将搜狗输入法的简繁切换快捷键换下,我是换成了ctrl+shift+a 微软输入法快捷键冲突 最近新装了win10系统后又出问题了,但是我又没有装搜狗输入法,只能想到微软自带的拼音了,话说这个快捷键设置相当隐蔽。 默认情况下 ctrl+shift+f 是..转载 2021-07-07 16:37:42 · 3171 阅读 · 2 评论 -
IDEA新版本界面Version Control窗口中不显示Local Changes
问题描述以前的IDEA在底部有个Version Control窗口,用来显示版本控制相关的信息(如下图所示)但是新版的IDEA变成了下图这样,Git菜单栏就是原来的Version Control,但是上面的Local Changes的标签页默认不会显示了问题原因官网说2020.1版本以后Local Changes这个标签页默认在git commit时才会看到。解决办法如果想跟以前一样在底部窗口显示,可以进入Settings→Preferences→Version Control→Commi原创 2021-07-05 17:28:58 · 11339 阅读 · 10 评论 -
JDK1.8 api 中文文档下载
想找一下中文版的jdk 1.8 api的文档,发现网上很多都是需要CSND积分来下载的。下面把我找到的JDK1.8 api 中文文档免费分享给大家链接:https://pan.baidu.com/s/1TjBgHeHRAcpfDg_L3jshEA 提取码:7hw7如果下载下来不能显示,右键属性勾选解除锁定应用即可。...原创 2021-06-28 14:46:07 · 9514 阅读 · 4 评论 -
Windows配置Java环境变量(下载、安装、配置环境)
推荐文章MySql 5.7 安装教程(超详细) https://myhub.blog.csdn.net/article/details/103532734 (JavaSE) 目录 下载、安装 配置环境变量 下载、安装 官网下载 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 快速下载链接:ht...转载 2021-06-22 15:26:51 · 4458 阅读 · 2 评论 -
idea输入sout无法自动补全System.out.println()的问题
问题描述我今天重新下载idea之后发输入sout无法出现自动补全 System.out.println(); 问题原因idea 默认的sout补全的是 println(); 解决办法左上角 File----Setting,搜索soutSystem.out.println($END$);,其中 $END$ 表示补全后光标所处位置其它的一些快捷键如果没有生效也是这样改,比如psvm...原创 2021-06-22 15:18:09 · 3980 阅读 · 2 评论 -
synchronized 关键字详解
synchronized 关键字1. synchronized 关键字的三种使用方法1.1. 修饰实例方法2.2. 修饰静态方法3.3. 修饰代码块2. 双重检验锁方式实现单例模式3. 构造方法可以使用 synchronized 关键字修饰么?4. JDK1.6 之后的 synchronized 关键字底层做了哪些优化?5. synchronized 和 ReentrantLock 的区别6. synchronized 关键字与Lock的区别synchronized 关键字解决的是多个线程之间访问资源的同原创 2021-04-07 14:52:16 · 7262 阅读 · 14 评论 -
Ubuntu 16.04 安装 IDEA
1. 官网下载地址https://www.jetbrains.com/idea/download/#section=linux选择Community版进行免费下载 2. 下载完成后,进入到下载目录对下载的文件进行解压$ sudo tar -zxvf ideaIC-2020.3.3.tar.gz 3. 进入/idea-IC-203.7717.56/bin,该目录下的idea.sh是IDEA的启动文件 我们运行它启动 IDEA在终端输入$ ./idea.sh即可启原创 2021-04-07 11:14:10 · 1527 阅读 · 2 评论 -
某Java大佬在地表最强Java企业(阿里)面试总结
面试题真的是博大精深,也通过这个面试题学到了很多东西,很多笔者也不是很懂,如有描述错误的地方还望大佬赐教, 每一次面试都可能问到相同的问题,一面问到,二三面还可能会问到,笔者认为这一点是整理这篇面试题收获最大的一点。 目录: 一面 1.1、HashMap和Hashtable的区别 1.2、实现一个保证迭代顺序的HashMap 1.3、 说一说排序算法,稳定性,复杂度 1.4、 说一说GC 1.5、 可以保证的实习时长 1.6、 职业规划 二面 2.1、 自我介绍。 2.2、 JVM如何加载一.转载 2021-02-02 16:06:04 · 2931 阅读 · 0 评论 -
Ubuntu16.04安装 java JDK8
Java JDK在linux系统有两个版本,一个开源版本Openjdk,还有一个oracle官方版本jdk,oracle JDK既可以通过添加ppa源命令行安装,也可以去官网下载jdk压缩包安装。下面分别记录一下这三种安装方式的步骤。推荐直接使用第一种方法安装,简单快捷。 方法一:安装开源版本openjdk1、更新软件包列表:$ sudo apt-get update2、安装openjdk-8-jdk:$ sudo apt-get install openjdk-8-jdk3、查转载 2021-01-19 16:55:49 · 1661 阅读 · 2 评论 -
通俗易懂的 Java 线程和进程区别
1. 什么是线程和进程1.1. 何为进程?进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。补充:什么是程序程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。 1.2. 何为线程?线程与进程相似,但线程是一个比进程更小的执行原创 2021-01-18 17:28:00 · 2408 阅读 · 2 评论 -
详解 Java 创建线程的三种方式
java中创建线程的方式主要有三种:继承Thread类创建线程实现Runnable接口创建线程使用Callable和Future创建线程1. 通过继承Thread类创建线程定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。创建Thread子类的实例,即创建了线程对象调用线程对象的start()方法来启动该线程。package com.thread; public class First原创 2021-01-18 16:02:50 · 3515 阅读 · 0 评论 -
Java中创建String的两种方式与常量池
String的两种创建方式1. 常量式创建:String str1 = "abcd";当我们创建字符串常量时,JVM会首先检查字符串常量池,如果该字符串已经存在常量池中,那么就直接返回常量池中的实例引用。如果字符串不存在常量池中,就会实例化该字符串并且将其放到常量池中。由于String字符串的不可变性我们可以十分肯定常量池中一定不存在两个相同的字符串。上面这行代码可以理解为:先检查字符串常量池中有没有"abcd",如果字符串常量池中没有,则创建一个,然后 str1 指向字符串常量池中的对象。如果有原创 2021-01-18 15:12:18 · 1924 阅读 · 0 评论 -
详解 Java 内存区域
目录1. 概述2. 运行时数据区域2.1. 程序计数器2.2. Java 虚拟机栈2.3. 本地方法栈2.4 堆2.5 方法区直接内存方法区和永久代的关系为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace)1. 概述对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存原创 2021-01-18 14:39:18 · 4133 阅读 · 0 评论 -
Java容器之Map接口详解
目录HashMap 和 Hashtable 的区别HashMap 和 Hashtable 的区别1. 线程是否安全HashMap 是非线程安全的。HashTable 是线程安全的,因为 HashTable 内部的方法基本都经过synchronized 修饰。2. 效率因为线程安全的问题,HashMap 要比 HashTable 效率高一点。另外,HashTable 基本被淘汰,不要在代码中使用它。3. 对 Null key 和 Null value 的支持HashMap 可以存储 null原创 2021-01-16 17:52:35 · 3168 阅读 · 6 评论 -
常见数据结构的Java实现
总结了一下在刷LeetCode过程中碰到的一些常用数据结构,用Java容器进行定义 1. 栈Deque<Integer> stack = new ArrayDeque<Integer>();2. 队列Queue<Integer> queue = new LinkedList<Integer>();3. 小顶堆PriorityQueue<Integer> pq = new PriorityQueue<I原创 2021-01-15 19:23:39 · 1620 阅读 · 6 评论 -
面向对象编程三大特性: 封装 继承 多态
封装将类的某些信息隐藏在类的内部,不允许外部程序直接访问,并通过该类提供的方法来实现对隐藏信息的操作和访问。也就是说隐藏对象的信息,留出访问的接口。直接通过操控类对象来达到目的,不需要对具体实现十分了解,类属性和方法的具体实现对外不可见。不但方便还起到了保护作用。 继承继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承能够非常方便地复用以前的代码。关于继承如下 3 点请记住:原创 2021-01-15 16:03:56 · 2055 阅读 · 5 评论 -
关于Maven创建module出现Ignored pom.xml文件如何解决
问题描述:在Maven创建module时,没有正确建好module所以把它删掉了!又创建了一个之前删除了的同名的module名称。但是,新创建的module中的pom.xml文件出现Ignored pom.xml的问题,如图:问题分析:由于相同名称的module在之前被创建过,因此在IDEA中留有痕迹。重新创建一个新的同名module会让IDEA误以为是之前被删除掉的module,所以才自动将这个pom.xml文件忽略了呢。解决方案:1. 点击file > Setting进入设置&nbs转载 2021-01-13 22:40:24 · 23957 阅读 · 21 评论 -
什么是 JDK JRE JVM
JREJRE(Java Runtime Enviroment)是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。JRE面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序JDKJDK(Java Development Kit)是Java开发工具包。它拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 j..转载 2021-01-13 14:32:49 · 1509 阅读 · 2 评论 -
详解 Java 的八种基本数据类型和BigDecimal
Java 中的几种基本数据类型Java中有 8 种基本数据类型,分别为:6 种数字类型 :byte、short、int、long、float、double1 种字符类型:char1 种布尔型:boolean对应的包装类型boolean -> Booleanbyte -> Bytechar -> Charactershort -> Shortint -> Integerlong -> Longfloat -> Floatdouble -&原创 2021-01-13 15:28:38 · 4314 阅读 · 6 评论 -
equals() 和 == 的区别、与hashCode() 的关系
== 和 equals()==它的作用是判断两个对象的地址是不是相等,即判断两个对象是不是同一个对象。基本数据类型 == 比较的是值,引用数据类型 == 比较的是内存地址。equals它的作用也是判断两个对象是否相等,它不能用于比较基本数据类型的变量。主要有以下两种用法:类没有覆盖 equals() 方法。则通过equals()比较该类的两个对象时,等价于通过 == 比较这两个对象。使用的默认是 Object 类 equals() 方法。类覆盖了 equals() 方法。一般,我们都覆原创 2021-01-13 15:04:48 · 2298 阅读 · 4 评论