![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础知识
文章平均质量分 67
YHJ
你有找到为之奋不顾身的事吗?
展开
-
@Value和@ConfigurationProperties接收List、Map格式配置信息的2种方式
引以为戒:指点江山(装逼)后请帮人解答疑惑(大佬的基本素养) 科普借鉴:https://cloud.tencent.com/developer/article/1522660 @Value不支持复杂类型封装,但是我们可能有实际需要指定不同的全路径进行List、Map的接收(详见下文)。 属性默认值大家可以在评论区贴出来(赶需求中,临时记录一下)配置信息(Nacos配置格式缩进用的Tab,复制需要修改缩进) url: apk: download: def.转载 2021-05-23 12:59:51 · 3507 阅读 · 0 评论 -
JVM 加载 class 文件的原理机制----------【Java基础】
问:你在写Java代码时,有没有对代码是如何转换为你想要的结果的。答:这是eclipse中自带的JVM,使其编译成字节码文件;所以Java代码的运行过程也就是:编译源码文件---编译字节码文件---加载class文件---运行class字节码文件;之后的两个过程是在JVM中运行。问:那你知道如何在cmd命令窗口编译Java文件吗?而这个过程等于eclipse的什么操作?答:其...原创 2019-05-27 21:24:24 · 1331 阅读 · 0 评论 -
了解对象-----------【Java基础】
对象,是什么?对一个小白的理解的话,应该就是那个了。。。但是在代码中是什么意思?查了下字典,它是这么解释:对象指的是行动或思考时作为目标的事物。(其中一段)那么在代码的话,也就是你想实现的功能;加法、减法。。。但是,功能的实现在方法上就可以实现了,那方法能被称为“对象”吗?如果按上面的解释理解的话,好似就行了。但是,在代码的理解的话,这是错误的。为什么?其实在代码中,...原创 2019-05-07 08:21:03 · 245 阅读 · 0 评论 -
对象的理解-----------【Java基础】
对象,是什么?对一个小白的理解的话,应该就是那个了。。。但是在代码中是什么意思?查了下字典,它是这么解释:对象指的是行动或思考时作为目标的事物。(其中一段)那么在代码的话,也就是你想实现的功能;加法、减法。。。但是,功能的实现在方法上就可以实现了,那方法能被称为“对象”吗?如果按上面的解释理解的话,好似就行了。但是,在代码的理解的话,这是错误的。为什么?其实在代码中,...原创 2018-09-04 12:34:10 · 393 阅读 · 0 评论 -
了解IO(1)-------------【Java基础】
问:流的概念?在Java中的流是一种抽象的概念,表示数据的无结构化传递;平常说的数据流就是一种数据的传输通道。流也是分种类的,而且依据不同,分的数据流也有不同的名称和区别的;流的结构图如下图所示:问:了解它们之间的区别?答:其实计算机的数据都是以字节保存的,所以对于我们的字符,都需要使用其对应的字节之后再传入计算机中。因为计算机的底层设备永远使用只接受字节数据。字...原创 2019-05-06 12:15:33 · 186 阅读 · 0 评论 -
JDK中的适配器模式(1)-------------【Java基础】
适配器模式在JDK中的使用,大概有这些java.util.Arrays #asList()javax.swing.JTable (TableModel)java.io.InputStreamReader (InputStream)java.io.OutputStreamWriter (OutputStream)javax.xml.bind.an...原创 2019-05-24 19:56:38 · 799 阅读 · 0 评论 -
从内存泄漏理解它(2)--------------【Java基础】
在上篇博文中,我们留有了疑问。。。解答没,^_^在这篇博文中,我们会解答的。不过在那之前,我们先了解下内存:原文出处:java虚拟机内存区域的划分以及作用详解 1. 线程计数器,是一块较小的内存空间,用来指定当前线程执行字节码的行数,每个线程计数器都是私有的,因为每个线程都需要记录执行的行数;这里解释一下为什么每个线程都需要一个线程计数器,JVM的多线程是通过线程轮流切...原创 2019-05-23 19:22:43 · 130 阅读 · 0 评论 -
从内存泄漏理解它(1)--------------【Java基础】
内存,它在计算机中含义为: 内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将...原创 2019-05-23 16:17:55 · 250 阅读 · 0 评论 -
Java序列化可能出现的问题(3)------------【Java基础】
第一篇引言将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写。然而在有些情况下,光知道这些还远远不够,文章列举了笔者遇到的一些真实情境,它们...转载 2019-05-23 08:08:06 · 355 阅读 · 0 评论 -
Java反序列化漏洞实现(2)------------【Java基础】
通过上篇我们明白了它的出现是怎么一回事,但是我们在上面实践的代码,你们有仔细想过吗?那个反序列漏洞是如何在源码中来的?我们再来一个实践: public static void main(String[] args) { /*under attacker's control*/ File f =new File(args[0]); ...转载 2019-05-23 08:05:12 · 341 阅读 · 0 评论 -
Java反序列化漏洞实现(1)------------【Java基础】
好吧,这个在网上的讲解一大堆了。我之所以写这个呢,是为了加深理解序列化和反序列化,当然还有反射。序列化,它是让Java对象脱离Java运行环境的一种手段,可以有效的实现多平台之间的通信、对象持久化存储。序列化和反序列化的过程,讲解下,Java 序列化是指把Java 对象转换为字节序列的过程,便于保存在内存、文件、数据库中。----------ObjectOutpu...原创 2019-05-22 22:48:20 · 255 阅读 · 0 评论 -
JDK中的桥梁模式-------------【Java基础】
好吧,先来使用下://加载及注册JDBC驱动程序Class.forName("com.mysql.jdbc.Driver");Class.forName("com.mysql.jdbc.Driver").newInstance(); Class.forName("oracle.jdbc.driver.OracleDriver")Class.forName("oracle.jdbc....转载 2019-05-27 15:27:19 · 183 阅读 · 0 评论 -
JDK中的适配器模式(2)-------------【Java基础】
原本是想接着写写的,但是一上网搜搜,结果发现这篇博文《适配器模式和InputStreamReader/OutputStreamWriter》。嗯,感觉。。。写的比我好。。。原文:在前一篇文章中,我们已经对Java IO中的Reader和Writer做了介绍,并对其中一些实现的使用做了分析和整理。除了上篇文章中提到的那些字符流IO类,Reader和Writer还有InputS...转载 2019-05-24 20:47:06 · 872 阅读 · 0 评论 -
package和import的理解---------------【Java基础】
包???——》是分类class(类)与interface(接口)的方式;import的作用???——》在java中,编译器是根据包名+类名找到类的,而import语句是告诉编译器找到指定的类;在源文件中如何声明类、包和写import的规则:源文件???——》多个非public类,一个public类; public类名应该是源文件,以及应当以.java扩展名结尾; 如果类在包中...原创 2019-05-06 23:05:31 · 620 阅读 · 0 评论 -
了解final--------------【Java基础】
final,中文为“不可改变的”。final可以在类、方法、变量上使用,但有些需要注意的地方:变量成员变量:类变量:必须要在静态初始化块中指定初始值或者声明该类变量时指定初始值,而且只能在这两个地方之一进行指定。 实例变量:必要要在非静态初始化块,声明该实例变量或者在构造器中指定初始值,而且只能在这三个地方进行指定。局部变量:final修饰基本数据类型变量时,不能对基本数据...原创 2019-01-25 11:33:39 · 98 阅读 · 0 评论 -
JVM的了解----------【Java基础】
问:代码是如何在JVM中转换的?JVM是eclipse中自带的,它可以使Java文件编译成字节码文件;运行过程大概如下:问:Java是如何通过JVM实现跨平台的?JVM是通过自身类似命令集这种方式,所以针对不同的cpu,把同种意思翻译不同种机器语言;所以也就由了“一次编译,到处运行”的说法;当然这是相对的,如果是没有对应的翻译就会出现错误了。问:如何在c...原创 2018-08-30 17:41:21 · 140 阅读 · 0 评论 -
String、StringBuilder与StringBuffer的区别-----------【Java基础面试】
String类是不可变类,任何对String的改变都会引发新的String对象的生成;StringBuffer是可变类,任何对它所指代的字符串的改变都不会产生新的对象,可变和不可变类这一对对象已经齐全了;引入新的StringBuilder类???——》改变字符串内容时,采用StringBuffer能获得更好的性能,但是并不是最好的;StringBuffer???——》线程安全St...原创 2018-08-31 15:54:30 · 323 阅读 · 0 评论 -
数组、ArrayList、List、LinkedList的区别
【题目】问题来源:List<QueryScriptManageEntity> list = new ArrayList<>();本来想用的是 List<QueryScriptManageEntity> list = new List<>() 存储数据,结果ArrayList<>();能用,而list()不能用???...转载 2018-08-31 13:33:19 · 5879 阅读 · 1 评论 -
【Java】——垃圾回收
什么是垃圾回收器???——》作为一个单独的低级别的线程运行;在不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,而且程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收; 引入垃圾回收机制???——》优点:Java程序员在编写程序的时候不再需要考虑内存管理(c++程序员最头疼的内存管理的问题迎刃而解); Java中的对象不再有“作用域”的概念,只...原创 2018-08-31 10:15:17 · 206 阅读 · 0 评论 -
【Java】——常见问题02
【问题1】在Java中,一个变量重新new,重新分配空间进行复用,和重新定义一个变量使用哪个好?解答:1、看上去两者并没有什么区别,其实是有一个内存分配的问题;2、方式1,对于SimpleDateFormat的分配空间只分配了一个;方式二,分配了两个SimpleDateFormat;方法一和方法二对比,方式一节省了一个内存; 【问题2】System.out.print...原创 2018-08-23 15:19:32 · 176 阅读 · 0 评论 -
【Java】——常见问题03
【问题】需求如下:aaa1,aaa2...这一类代表的是名字,bbb1...代表是生日,ccc1....表示性别,现在需要讲aaa1...表示名字和ccc1这些表示性别的读出来,放入另一个.txt中;读取之前数据如下 他们各个表示的类型有 --- 读取之后 读取后变为由“,”分隔,读取的.txt文本比较大如果java堆栈不够,能不能分批读取完,...原创 2018-08-23 15:31:37 · 114 阅读 · 0 评论 -
【Java】——常见问题集01
1、java中字符串下标和字符串数组下标有什么不同区别?解答:字符数组的下标是单个的字符,字符串数组的下标是字符串,而字符数组又是由n个字符组成的。java语言和c++不同,字符串和字符数组是两个不同的概念。在C语言里:char str[] = "hello";char h = str[0];在Java里,如果是String str = "hello";并不能写 ...原创 2018-08-23 17:18:19 · 360 阅读 · 0 评论 -
了解抽象类和接口----------【Java基础】
抽象类抽象是从具体中抽取出具有类似规律;所以它和普通类是有区分的:1、它本身不能被实例化,但是其子类可以。2、普通类不能有抽象方法,但抽象类可以不仅有抽象的,还可以有非抽象的成员变量和成员方法。3、某个类继承了一个抽象类,那么该类必须实现其抽象类的抽象方法,如果不实现,则该类必须使用abstact修饰,也就作为一个抽象类而存在。接口它是一个比抽象类更为抽象的...原创 2019-05-03 22:59:54 · 980 阅读 · 0 评论 -
了解static------------【Java基础】
static,英文的意思即是“静态”;在代码里,静态代表的即是固定的,不变的;所以被static修饰和普通的具有一定的区别:生命周期 调用方式 别名 数据存储位置注:static仅能修饰成员,无论是变量还是函数。参考博文:static关键字的作用那它和final的区别是什么?...原创 2018-08-28 21:56:14 · 220 阅读 · 0 评论 -
【Java】——Eclipse快捷键
常用的快捷键 编辑Ctrl+1 快速修复(最经典的快捷键,就不用多说了,可以解决很多问题,比如import类、try catch包围等) Ctrl+Shift+F 格式化当前代码 Ctrl+Shift+M 添加类的import导入 Ctrl+Shift+O 组织类的import导入(既有Ctrl+Shift+M的作用,又可以帮你去除没用的导入,很有用) Ctrl+Y...转载 2018-09-02 22:47:34 · 144 阅读 · 0 评论 -
深拷贝和浅拷贝的理解-----------【Java基础】
拷贝,在IT界是一个计算机系统的DOS命令,意为“复制”,是一个新名词,广泛地应用于IT的各个领域;拷贝还分深拷贝和浅拷贝;拷贝的对象不同还会导致拷贝方式的不同;拷贝的若是引用数据类型即是引用拷贝,拷贝的是对象的话就是对象拷贝;所以,深拷贝和浅拷贝都是对象拷贝。浅拷贝,仅仅复制所考虑的对象,而不复制它所引用的对象;深拷贝的话,还需要拷贝它引用的对象;所以总结的话:1、浅拷贝:...原创 2018-08-30 11:20:35 · 217 阅读 · 0 评论 -
了解this和super----------【Java基础】
this有三个用处,分别是:区分成员变量和局部变量。 在构造函数中调用构造函数。 普通的直接引用参考博文:this关键字的作用运用this关键字时该注意以下几点:必须为构造函数中的第一条语句。 可以用this调用一个构造器,但却不能调用两个。 this和super不能同时出现在一个构造函数里面。 不可以在static环境中使用。 不能在普通函数中调用构造函数。...原创 2018-08-29 09:43:11 · 264 阅读 · 0 评论 -
分析内部类------------【Java基础】
内部类,就是在已存在的类中再定义class;注:这个不能被public修饰,但是允许拥有private和protect权限;至于它存在的理由嘛,是因为它:隐藏性好(修饰符),可实现多重继承(继承一个与外部类无关的类,保证了内部类的独立性),还可以避免修改接口而实现同一个类中两种同名方法的调用和拥有外部类所有元素的访问权限(无论是在类、方法或者区域块中都可以可以访问外围的成员和元素...原创 2018-09-02 22:22:16 · 122 阅读 · 0 评论