
Java基础
niceyoo
这个作者很懒,什么都没留下…
展开
-
Map<String,Object>接收参数,Long类型降级为Integer,报类型转换异常
前言今天看群里小伙伴问了一个非常有意思的问题:使用 Map<String,Object> 对象接收前端传递的参数,在后端取参时,因为接口文档中明确该字段类型为 Long ,所以对接收的参数进行了强转,即 (Long)参数 ,但是却发生了类型转换异常,报错信息如下:class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in modul原创 2020-11-19 22:53:35 · 4342 阅读 · 2 评论 -
Java中的Set对象去重
前言部分Set<T> 去重相信大家一定不陌生,尤其是在 Set<String>、Set<Integer> 等等,但是在使用 Set<实体> ,在不重写 equals()、hashCode() 方法情况下,直接使用貌似并不能生效。所以想要 Set<实体> 实现去重,核心部分在实体中重写 equals()、hashCode() 方法。如下以 User 实体为例,进行测试。代码部分测试代码:public static void main(St原创 2020-11-12 09:03:24 · 10158 阅读 · 1 评论 -
java.util.UnknownFormatConversionException: Conversion = ‘j‘ || Conversion = ‘D‘ || Conversion = ‘Y‘
执行内容:String a = "select * from j_question j where j.status = %s and j.title like '%java%'";String format = String.format(a, 1);System.out.println(format);拼接SQL时,最后需要 format 替换字符串中的 %s 占位符。预期效果:select * from j_question j where j.status = 1 and j.titl原创 2020-11-10 22:33:03 · 8875 阅读 · 0 评论 -
面试官:说一下List排序方法
1. 前言排序算是比较高频的面试题了,节前面试了的两家公司都有问到排序问题,整理后分享给大家(文末见总结)。通常我们想到实现排序就是 Collections 工具类的 sort() 方法,而 sort() 方法有两种:直接调用 Collections.sort(List list) 方法进行排序(正序排序)。调用 Collections.sort(List list,Comparator<? super T> c) ,自定义实现 Comparator 接口,重新 compareT原创 2020-10-18 23:38:22 · 853 阅读 · 0 评论 -
为什么SimpleDateFormat不是线程安全的?
一、前言日期的转换与格式化在项目中应该是比较常用的了,最近同事小刚出去面试实在是没想到被 SimpleDateFormat 给摆了一道…面试官:项目中的日期转换怎么用的?SimpleDateFormat 用过吗?能说一下 SimpleDateFormat 线程安全问题吗,以及如何解决?同事小刚:用过的,平时就是在全局定义一个 static 的 SimpleDateFormat,然后在业务处理方法(controller)中直接使用,至于线程安全… 这个… 倒是没遇到过线程安全问题。哎,面试官的考察点真原创 2020-09-15 14:42:18 · 684 阅读 · 1 评论 -
如何关闭线程池?会创建不会关闭?调用关闭方法时线程池里的线程如何反应?
前言相信大家在面试的时候经常会遇到「线程池」相关的问题,比如:什么是线程池?线程池的优点?有哪几种创建线程池的方式?四种创建线程池的使用场景?线程池的底层原理?线程池相关的参数,比如CorePoolSize、maximunPoolSize、keepAliveTime等等为什么阿里巴巴不允许线程池使用Executors去创建?如何合理的设置线程池参数的等等等等…如上这些问题,如果看过线程池源码的小伙伴,基本就能回答上来了,即便是看面试题也能说上个一二,但是当真的问你,如何关闭线程池?你能原创 2020-09-14 07:14:44 · 877 阅读 · 1 评论 -
如何暂停一个正在运行的线程?
今天把小伙伴问懵了,小刚,你知道怎么停止一个线程吗?这…,这…,stop?原来平时小刚这小子只知道创建线程,不知道怎么暂停线程呀~[狗头]停止线程是在多线程开发中很重要的技术点,比如在多线程持续处理业务代码时,由于处理逻辑中有第三方接口异常,我们就假设发送短信接口挂了吧,那么此时多线程调用短信接口是没有任何意义的,我们希望接口恢复后再对接口进行处理,那么此时怎么办呢,如何中止已经启动的线程呢?其实在Java中有3种方式可以终止正在运行的线程:使用stop方法强制退出:使用stop()方法强制终原创 2020-07-27 09:20:22 · 1965 阅读 · 1 评论 -
创建线程都有哪些方式?— Callable篇
今天我们来看一道面试题引发的思考问: 创建线程都有哪些方式?答: 我了解的有四种创建方式:继承Thread类创建线程类通过Runnable接口创建线程类通过Callable和Future创建线程通过线程池创建相信大家回答这个问题没什么难度吧?通常问完创建方式,那么接下来就是问「1、2」跟「3」创建方式的不同了,只要说出「3」有返回值基本这个问题就过了,不管是出于好奇还是疑惑,我们今天来会会这个Callable。实现Runnable接口或者是继承Thread,这两种方式都有个缺点,那就.原创 2020-07-26 15:41:44 · 310 阅读 · 0 评论 -
ArrayList与String[]
不逼自己一把,你永远不知道什么是绝望。今天被初学java的朋友问到了String[]跟ArrayList是不是有关系呢?猜测是名称之间的联想,记此篇解惑。Array英语单词里是数组、阵列的意思,在java中数组是这样定义的:一组相关类型的变量集合。格式:数据类型[] 数组名称 = new 数据类型[长度];根据上边的格式,列举几个常见的数组,比如:String[] i...原创 2019-11-16 00:13:00 · 2764 阅读 · 0 评论 -
如何理解Java中的自动拆箱和自动装箱?
小伟刚毕业时面的第一家公司就被面试官给问住了,记忆尤深啊…如何理解Java中的自动拆箱和自动装箱?自动拆箱?自动装箱?什么鬼,听都没听过啊,这…这…知识盲区…回到家后小伟赶紧查资料,我透,这不就是问基本类型跟封装类型吗,面试官整啥名词呢…别问结果,问就是没过。1、 什么是自动装箱,自动拆箱定义:基本数据类型和包装类之间可以自动地相互转换理解:装箱就是自动将基本数据类型转换为封装类型,拆箱就是自动将封装类型转换为基本数据类型。我们知道,Java中提供了四大类基本数据类型,分别是:整数、浮点数、原创 2020-05-28 10:42:46 · 1834 阅读 · 0 评论 -
重温类加载机制
前言我们在学习 java 基础的时候,从宏观上了解一个类到运行大致是:.java 文件通过 javac 编译器编译得到 .class 文件,在用到该类时,jvm 会加载该 class 文件,并创建对应的 class 对象,将 class 文件加载到 jvm 的内存当中,这个过程也被称之为类加载过程。下面我们将详细了解这个过程,本篇过长建议先收藏。1、类加载过程其实关于类加载过程是分为5个阶...原创 2019-07-24 23:57:52 · 244 阅读 · 0 评论 -
Java集合List、Set、Map
集合是 java 基础中非常重要的一部分,同样也是 Java 面试中很重要的一个知识点。所以,给王小整理了这篇关于集合的文章。1、接口继承关系以及实现集合类存放于 Java.util 包中,主要有 3 种:set、list 和 map。Collection:Collection 是集合 List、Set、Queue 的最基本的接口Iterator:迭代器,可以通过迭代器遍历集合中的数...原创 2019-03-21 20:09:41 · 258 阅读 · 0 评论 -
Java序列化与反序列化
一、什么是序列化与反序列化?Java 序列化是指把 Java 对象转换为字节序列的过程;Java 反序列化是指把字节序列恢复为 Java 对象的过程;二、为什么要用序列化与反序列化?在 为什么要用序列化与反序列化 之前我们先了解一下对象序列化的两种用途:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;在网络上传送对象的字节序列。我们可以想想如果没有序列化之前,又是怎...原创 2019-03-25 21:06:38 · 153 阅读 · 0 评论 -
Java异常分类及处理
一、概念如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。二、异常分类Throwable 是 Java 语言中所有错误或异常的超类,在 Java 中只有 Throwable 类型的实例才可以被抛出(t...原创 2019-03-23 20:39:17 · 231 阅读 · 0 评论 -
Eclipse中将java类打成jar包形式运行
记录一次帮助小伙伴将java类打成jar包运行1、创建java project项目file > new > project > java project随便起一个项目名称,finish 完成后项目结构如下:2、植入java类将准备好的java类,植入项目中,在 src 目录中,新建包名,例如:club.sscai,然后将文件放入该包下。pac...原创 2019-06-23 20:29:00 · 707 阅读 · 0 评论 -
面试必备:HashMap、Hashtable、ConcurrentHashMap的原理与区别
本文转载自 夏雪冬日:https://www.cnblogs.com/heyonggang/p/9112731.html在实际面试过程中出现集合 Map 的概率接近 100%,可见不背上个 Map 相关的题目都不好意思去面试了。如果你去面试,面试官不问你这个问题,你来找我^_^下面直接来干货,先说这三个 Map 的区别:1、HashTable底层数组+链表实现,无论key还...原创 2019-06-23 19:56:00 · 480 阅读 · 0 评论 -
并发编程快速入门
1、线程与进程的区别进程是所有线程的集合,每一个线程是进程中的一条执行路径。比方:通过查看 windows 任务管理器中的列表,我们可以把运行在内存中的 exe 文件理解成进程,进程是受操作系统管理的基本运行单元。2、为什么要使用多线程?主要体现在多线程提高程序效率,但是需要注意,并不是使用了多线程就一定能提升性能,有的情况反而会降低性能。多线程应用场景:2.1、避免阻塞我们知道,在...原创 2019-07-10 11:28:35 · 251 阅读 · 0 评论 -
Java_WEB项目OOM(OutOfMemError内存溢出) MyEclipse配置Jvm内存
前言刚刚接触的项目是基于SSM,但Tomcat启动时默认的64M内存就总显得不太够。程序运行过程中经常出现OOM(OutOfMemError)。措施搜索网上的解决方案,还是比较好解决的,需要给MyEclipse设置Jvm内存大小(即设置Tomcat的Jvm内存大小) : Windows–>preference–>MyEclipse–>Servers–>Tomcat–>Tomcatx.x(展开)–原创 2017-08-06 15:02:31 · 1085 阅读 · 0 评论