回归JAVA
文章平均质量分 81
琦彦
Find out who you are,and be that person.
展开
-
JVM——内存泄漏与内存溢出
内存泄漏与内存溢出1. 面试题什么是内存泄漏和什么是内存溢出 (陌陌)Java存在内存泄漏吗,内存泄漏的场景有哪些,如何避免(百度)Java 中会存在内存泄漏吗,简述一下?(猎聘)内存泄漏是怎么造成的?(拼多多、字节跳动)内存泄漏与内存溢出的区别 (字节跳动)Java存在内存溢出的现象吗 (字节跳动)Java中会存在内存泄漏吗,请简单描述。 (美团)2. 内存溢出内存溢出相对于内存泄漏来说,尽管更容易被理解,但是同样的,内存溢出也是引发程序崩溃的罪魁祸首之一。由于GC一直在发展原创 2022-01-31 15:59:44 · 3056 阅读 · 0 评论 -
JVM——垃圾回收算法
1. 概述垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候回收?如何回收?1.1. 面试题讲讲JVM的gc (携程)GC是什么?为什么要有GC? (蚂蚁金服)垃圾回收的优点和原理。 (蚂蚁金服)垃圾回收机制等 (支付宝)GC回收的是哪部分的垃圾?(vivo)垃圾回收的优点和原理?基本原理是什么?(瓜子)GC是什么?为什么要有GC? (美团)简述Java垃圾原创 2022-01-31 14:26:39 · 4931 阅读 · 0 评论 -
JVM——字符串常量池详解
JVM——字符串常量池详解引言在Java开发中不管是前后端交互的JSON串,还是数据库中的数据存储,我们常常需要使用到String类型的字符串。作为最常用也是最基础的引用数据类型,JVM为String提供了字符串常量池来提高性能,本篇文章我们一起从底层JVM中认识并学习字符串常量池的概念和设计原理。字符串常量池由来在日常开发过程中,字符串的创建是比较频繁的,而字符串的分配和其他对象的分配是类似的,需要耗费大量的时间和空间,从而影响程序的运行性能,所以作为最基础最常用的引用数据类型,Java设计者在转载 2022-01-30 21:28:11 · 2927 阅读 · 8 评论 -
Java 9 新特性
Java 9 新特性在 2011 年的 JavaOne 中,Oracle 讨论了一些他们希望在 2016 年于 Java 9 中发布的功能。Java 9 应当对千兆级堆拥有更好的支持,同时能够更好地集成本机代码,且拥有新的垃圾收集器 G1 和能够自我调节的 JVM。2016 年初,Java 9 的发布被重新定为 2017 年 3 月;2017 年 3 月时,发布日期又被拖延至 2017 年 7 月;后来又因 Java 执行委员会对 Jigsaw 项目实现的分歧而最终定为 2017 年 9 月 21 日,翻译 2022-01-30 20:58:58 · 2207 阅读 · 0 评论 -
Java 8的新特性
Java 8的新特性前言: Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级。在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java 8 – Lambdas and Concurrency、Java 8 Date Time API Tutorial : LocalDateTime和Abstract Class Versus Interface in the JDK 8 Era。本文还参考了一些其他资料,例如:15 Mu翻译 2022-01-29 20:40:11 · 1974 阅读 · 0 评论 -
Java8: @Repeatable注解原理和使用技巧
目录前言Spring中@PropertySources与@PropertySource区别是?@PropertySources@PropertySource应用场景原理问题来了推荐方式前言@Repeatable是java8为了解决同一个注解, 不能重复在同一类/方法/属性上使用的问题。也就是说该注解可以重复的注解某个元素。Spring中@PropertySources与@PropertySource区别是?@Prop...转载 2021-08-11 20:33:47 · 1221 阅读 · 0 评论 -
Java面试题答案解析: 基础考核-拆箱装箱, 数据类型, MAP
原题Java面试题: 基础考核-拆箱装箱, 数据类型, MAPhttps://glory.blog.csdn.net/article/details/117279415答案解析问题1参考答案A 运行时异常解题思路和原因(Integer) null 在拆箱过程中有NPE问题我的思考如果需要返回null,其中(Integer) null 多加个Integer时多余的问题2参考答案D 以上答案都不是解题思路和原因结论: 最总输出值为 3原创 2021-05-26 09:32:08 · 304 阅读 · 1 评论 -
Java面试题: 基础考核-拆箱装箱, 数据类型, MAP
目录1. 以下程序输出内容是?2.以下程序输出内容是?3. 以下程序输出内容是?参考答案1. 以下程序输出内容是?public class Parsing { /** * Returns Integer corresponding to s, or null if s is null. * @throws NumberFormatException if s is nonnull and * doesn't represent a valid.原创 2021-05-26 09:21:56 · 389 阅读 · 1 评论 -
BeanUtils——JavaBean相互转换及字典翻译
JavaBean相互转换在升级公司架构过程中,发现有大量Entity与DTO相互转换的问题,并且其中还伴随DTO中的数据字典翻译,所以特意写个工具类,主要利用spring提供的BeanUtils工具类,用redis翻译字典其中功能包括: 翻译JavaBean中带有@CacheFormat的属性 /** * 翻译当前类中需要翻译的字典值 * * @param ...转载 2019-10-27 10:04:41 · 793 阅读 · 0 评论 -
Java小细节:List可以add(null)吗?
在写代码的时候,有时候遇到for循环,写到下面的时候有一点犹豫。遍历的时候,是否需要对每个元素判空?换句话说,List是否可以允许add null。List<Data> dataList = ...;for (Data d : dataList) { if (d != null) { // 我需要这个判断吗? // ... }}然后我实...转载 2018-12-20 09:14:20 · 10686 阅读 · 0 评论 -
jdk历史版本下载
Java SE 所有版本下载https://www.oracle.com/technetwork/cn/java/archive-139210-zhs.htmlJava SE 8 历史版本下载https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html...原创 2018-12-28 08:57:49 · 2789 阅读 · 0 评论 -
从分布式一致性谈到CAP理论、BASE理论
问题的提出在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景。1、火车站售票假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车 票,然后拿着车票去检票口,再坐上火车,开始一段美好的旅行----一切似乎都是那么和谐。想象一下,如果他选择的目的地是杭州,而某一趟开往杭州的火车 只剩下最后一张车票,可能在同一时刻,不同售票窗口...翻译 2018-12-28 09:50:45 · 731 阅读 · 2 评论 -
CSRF:攻击与防御
CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作。比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为...转载 2019-01-18 20:14:27 · 449 阅读 · 0 评论 -
try-with-resource:自动地关闭资源
一、资源关闭背景我们知道,在Java编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们。因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制,如果我们不在编程时确保在正确的时机关闭外部资源,就会导致外部资源泄露,紧接着就会出现文件被异常占用,数据库连接过多导致连接池溢出等诸多很严重的问题。二、JDK7之前的资源关闭方...原创 2019-01-08 19:37:45 · 14342 阅读 · 0 评论 -
Java8:20 个使用 Java CompletableFuture的例子
异步计算所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法。在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。 JDK5新增了Future接口,用于描述一个异步计算的结果。虽然 Future 以及相关使用方法提供了异步执行任务的能力,但是对于结果的获取却是很不方便,只...翻译 2019-02-16 16:08:49 · 1636 阅读 · 0 评论 -
JVM:类加载机制
前言:有这样一道面试题:class Singleton{ private static Singleton singleton = new Singleton(); public static int value1; public static int value2 = 0; private Singleton(){ value1++;...转载 2019-02-19 18:13:04 · 9073 阅读 · 0 评论 -
Java中HashMap原理?hash函数实现?hash 碰撞解决?
1、为什么用HashMap?HashMap是一个散列桶(数组和链表),它存储的内容是键值对(key-value)映射 HashMap采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改 HashMap是非synchronized,所以HashMap很快 HashMap可以接受null键和值,而Hashtable则不能(原因就是equlas()方法需要对象,...转载 2019-03-26 19:59:29 · 3399 阅读 · 0 评论 -
Java:实现集合分组
1.概述在本教程中,我将说明如何将List拆分为给定大小的多个子列表。对于相对简单的操作,令人惊讶的是在标准Java集合API中没有支持。幸运的是,Guava和Apache Commons Collections都以类似的方式实现了操作2.使用Guava对List进行分区Guava便于将列表分成指定大小的子列表-经由Lists.partition操作:@Testpu...翻译 2019-04-15 10:22:01 · 8153 阅读 · 0 评论 -
Arrays.sort.Collections.sort 排序出现的java.lang.IllegalArgumentException的异常
1.问题分析(Java 7)在Java 6中Arrays.sort()和Collections.sort()使用的是MergeSort,而在Java 7中,内部实现换成了TimSort(做了大量优化的归并排序),其对对象间比较的实现要求更加严格:Comparator的实现必须保证以下几点: 原则1. sgn(compare(x, y)) == -sgn(compare...转载 2019-05-09 16:54:50 · 2219 阅读 · 0 评论 -
还在使用SimpleDateFormat?你的项目崩没?
论SimpleDateFormat线程安全问题及解决方案日常开发中,我们经常需要使用时间相关类,说到时间相关类,想必大家对SimpleDateFormat并不陌生。主要是用它进行时间的格式化输出和解析,挺方便快捷的,但是SimpleDateFormat并不是一个线程安全的类。在多线程情况下,会出现异常,想必有经验的小伙伴也遇到过。下面我们就来分析分析SimpleDateFormat为什么不安全...转载 2019-05-13 11:32:10 · 1831 阅读 · 0 评论 -
你知道么?static关键字有5种用法
说到static,静态变量和静态方法大家随口就来,因为他们在实际开发中应用很广泛,但他们真正在使用的时候会存在很多问题,而且它的使用不只那两种: 1.静态变量。 2.静态方法。 3.静态代码块。 4.静态内部类。 5.静态导入。接下来我们看一下这些用法。1.静态变量 静态变量属于类,内存中只有一个实例,...转载 2019-07-03 08:57:29 · 599 阅读 · 1 评论 -
回归Java:Map遍历的4种方式
package com.java.map; import java.util.HashMap;import java.util.Iterator;import java.util.Map; /** * @Title: Map 遍历的四种?方法 * @ClassName:com.java.map.MapErgodic.java原创 2017-11-02 16:40:37 · 12475 阅读 · 0 评论 -
为什么阿里巴巴禁止工程师直接使用日志系统(Log4j、Logback)中的 API
作为Java程序员,我想很多人都知道日志对于一个程序的重要性,尤其是Web应用。很多时候,日志可能是我们了解应用程序如何执行的唯一方式。 所以,日志在Java Web应用中至关重要,但是,很多人却以为日志输出只是一件简单的事情,所以会经常忽略和日志相关的问题。 Java语言之所以强大,就是因为他很成熟的生态体系。包括日志这一功能,就有很多成熟的开源框架...转载 2018-11-29 14:25:14 · 6213 阅读 · 0 评论 -
java中的break、continue、return区别
1、break:可以用于for循环等循环体和开关语句switch case中;用在循环中时,break是指跳出当前的循环体,如果是嵌套循环的话,只能跳出离break最近的for循环层;例如: public static void main(String[] args) { for (int i = 0; i<=5; i++) { if...转载 2018-11-02 17:15:25 · 7079 阅读 · 0 评论 -
数据结构: 算法的时间复杂度和空间复杂度
1、算法的概念:算法 (Algorithm),是对特定问题求解步骤的一种描述。解决一个问题往往有不止一种方法,算法也是如此。那么解决特定问题的多个算法之间如何衡量它们的优劣呢?有如下的指标:2、衡量算法的指标:(1)时间复杂度:执行这个算法需要消耗多少时间。(2)空间复杂度:这个算法需要占用多少内存空间。 同一个问题可以用不同的算法解决,而一个算法的优劣将影响到算法乃至程...转载 2018-09-11 18:32:25 · 6799 阅读 · 0 评论 -
Java和Spring注解基本介绍
前言注解早在J2SE1.5就被引入到Java中,主要提供一种机制,这种机制允许程序员在编写代码的同时可以直接编写元数据。注解可以被用在包,类,方法,变量,参数上。自Java8起,有一种注解几乎可以被放在代码的任何位置,叫做类型注解。注解会被编译至class文件中,而且会在运行时被处理程序提取出来用于业务逻辑。当然,创建在运行时不可用的注解也是可能的,甚至可以创建只在源文件中可用,在编译转载 2017-11-24 19:43:45 · 14046 阅读 · 0 评论 -
pinyin4j:获取中文串拼音或拼音首字母
package pinyin;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import net.so原创 2017-11-13 17:24:50 · 15936 阅读 · 0 评论 -
java.lang.OutOfMemoryError异常解决方法
原因:常见的有以下几种:内存中加载的数据量过于庞大,如一次从数据库取出过多数据;集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;代码中存在死循环或循环产生过多重复的对象实体;使用的第三方软件中的BUG;启动参数内存值设定的过小;常见错误提示:tomcat:java.lang.OutOfMemoryError:PermGen spacetomca转载 2017-11-13 11:44:52 · 13706 阅读 · 0 评论 -
回归Java:泛型使用
什么是泛型泛型(Generics )是把类型参数化,运用于类、接口、方法中,可以通过执行泛型类型调用分配一个类型,将用分配的具体类型替换泛型类型。然后,所分配的类型将用于限制容器内使用的值,这样就无需进行类型转换,还可以在编译时提供更强的类型检查。 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理原创 2017-11-02 12:05:45 · 12589 阅读 · 0 评论 -
java:函数--返回多个值
在开发过程中,经常会有这种情况,就是一个函数需要返回多个值,这是一个问题!!网上这个问题的解决方法:1、【使用集合类】使用map返回值;这个方法问题是,你并不知道如何返回值的key是什么,只能通过doc或者通过源代码来查看。2、【使用引用传递】传入一个引用进去,修改引用的属性值。问题:不实用。3、【使用封装对象】通过泛型构造一个类似python的tuple类,或者构转载 2017-10-07 17:21:50 · 24850 阅读 · 0 评论 -
javax异常: javax.imageio.IIOException: Can't create output stream解决方法
package com.newcapec.utils;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder;import java.awt.*;import java.awt.image.BufferedImage;import jav原创 2017-08-22 11:10:34 · 17996 阅读 · 0 评论 -
ServletConfig和ServletContext的简单使用
ServletConfig对象ServletConfig:代表当前Servlet在web.xml中的配置信息(用的不多)在Servlet的配置文件中,可以使用一个或多个init-param>标签为servlet配置一些初始化参数。当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对原创 2017-12-07 09:52:00 · 13965 阅读 · 0 评论 -
Java并发编程之CAS
CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术。简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替换当前变量的值。这听起来可能有一点复杂但是实际上你理解之后发现很简单,接下来,让我们跟深入的了解一下这项技术。CAS的使用场景在程序和算法中一个经常出现的模转载 2018-02-01 08:56:56 · 13167 阅读 · 0 评论 -
深入理解Java中的IO
引言: 对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务 < Thinking in Java > Java IO概要 为了方便理解与阐述,先引入两张图: a、Java IO中常用的类在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStrea...转载 2018-08-15 16:37:59 · 5817 阅读 · 0 评论 -
java:compareTo和compare方法之比较
compareTocompareTo(Object o)方法是java.lang.Comparable<T>接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable<T>接口的,必须重写public int compareTo(T o)方法。 它强行将实现它的每一个类的对象进行整体排序-----称为该类的自然排序,实现此接口的对象列表和数组可以用...原创 2018-08-14 17:01:04 · 21122 阅读 · 0 评论 -
java命令 : java -jar 和 java -cp
java -jar java -jar myClass.jar执行该命令时,会用到目录META-INF\MANIFEST.MF文件, 在该文件中,有一个叫Main-Class的参数,它说明了java -jar命令执行的类 java -jar *.jar param1 param2运行jar包,会自动到 jar 包中查询mainfest中定义的启动类并运行 param...原创 2018-08-14 15:46:16 · 121573 阅读 · 5 评论 -
使用Lombok减少JavaBean的重复代码
Lombok 介绍Lombok 旨在通过用一组简单的注释来替代它们来减少代码的重复。 例如,简单地将@Data注释添加到数据类中,如下所示,将在IDE中产生许多新方法:IntelliJ IDEA安装Lombok Plugin定位到 File > Settings > Plugins 点击 Browse repositories… 搜索 Lombok Plugin ...原创 2018-02-24 18:45:23 · 13763 阅读 · 0 评论 -
Java单例模式的不同写法(懒汉式、饿汉式、双检锁、静态内部类、枚举)
Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。单例模式好处:它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间; 能够避免由于操作多个实例导致的逻辑错误。 如果一个对象有可能贯穿整个应用程序,而且起到了全局统一管理控制的作用...原创 2018-02-08 10:19:47 · 34444 阅读 · 5 评论 -
Java多线程总结
前言Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式创建线程比较好(比如:继承thread类还是调用Runnable接口),然后逐渐问到并发问题像在Java并发编程的过程中遇到了什么挑战,Java内存模型,JDK1.5引入了哪些更高阶的并发工具,并发编...转载 2018-02-07 19:33:19 · 14082 阅读 · 0 评论 -
ThreadLocal概述和API
一、概述ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制转载 2017-12-21 10:38:13 · 13796 阅读 · 0 评论