JAVA学习与工作实践
文章平均质量分 64
Java语言,从入门到精通
火星人小X
这个作者很懒,什么都没留下…
展开
-
JVM记录
1、方法区:也称“永久代”,“非堆”,用于储存虚拟机加载的类信息,常量,静态变量,是各个线程共享的内存区域。运行时常量池:方法区的一部分,Class文件中除了有类的版本,字段,方法,接口等描述信息外,还有一项信息就是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中。2、虚拟机栈:描述的是java方法执行的内存模型,每个方法被执行的时候,都会创建一个“栈帧”用于存储局部变量(包括参数),操作栈,方法出口等信息。原创 2023-02-23 14:00:51 · 348 阅读 · 0 评论 -
Java常用数据结构
Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。一、几个常用类的区别1.ArrayList: 元素单个,效率高,多用于查询2.Vector: 元素单个,线程安全,多用于查询3.LinkedList:元素单个,多用于插入和删除4.HashMap: 元素成对,元素可为空5.HashTable: 元素成对,线程安全,元素不可为空。原创 2023-02-23 13:53:24 · 420 阅读 · 0 评论 -
关于Java中的String,String Buffer, String Builder
可以看到,String类是final类,一旦赋值就不可改变,成员方法都默认为final方法。并且String类是通过char数组来保存字符串的。观察以下String类方法的实现的源代码,可以看出,String的操作都不是在原有的字符串上进行的,而是重新生成了一个新的字符串对象。在这些操作后,原来的对象都没有改变,得出的结果属于新的对象。因此,String对象创建之后,此对象中存储的字符串内容不再被改变,String类对象有编辑的功能,但是编辑功能是通过创建一个新的对象来实现的,而不是对原有对象进行修改。原创 2023-02-23 13:49:37 · 211 阅读 · 0 评论 -
关于Bigdecimal 的equals 和compare
关于Bigdecimal 的equals 和compare在比较两个Bigdecimal 的值是否相等时,我们有equals 和compare两个选择,那么这两种方式有什么不同吗?接下来看一下源码。 @Override public boolean equals(Object x) { if (!(x instanceof BigDecimal)) return false; BigDecimal xDec = (BigDecimal)原创 2021-06-08 09:39:22 · 402 阅读 · 0 评论 -
创建BigDecimal对象的时候,最好使用String作为参数
一、构造BigDecimalBigDecimal提供了丰富的构造函数,可以通过int、long、double、String等来构造一个BigDecimal对象。但是,使用double作为参数的构造函数,无法精确构造一个BigDecimal对象,需要自己指定一个上下文的环境,也就是指定精确位。BigDecimal bg = new BigDecimal(1.1);System.out.println(bg.toString()); 运行结果:1.100000000000000088817841.转载 2021-06-08 09:34:09 · 2894 阅读 · 0 评论 -
(学习笔记)关于SpringMVC中的Controller、Service、DAO的多线程问题
SpringMVC中Controller为什么能够处理并发访问?SpringMVC中用来处理http请求的Controller是基于Servlet实现的,Spring中绝大多数的类都是单例的,Servlet也是这样。Controller、Service、DAO都是默认单例模式既然Controller是单例模式,那么它是怎么能够在同时处理很多个请求的呢?想要搞明白这点,首先面临的一个问题是:计算机是如何处理一个请求的呢?计算机大部分的任务都是由CPU来完成的,Controller虽然叫做控制器,但是原创 2021-04-08 11:53:12 · 3521 阅读 · 4 评论 -
SpringBoot入门教程(第一阶段):整合Themleaf
SpringBoot入门教程:使用Themleaf创建项目并添加相关依赖原创 2021-02-17 10:14:56 · 524 阅读 · 0 评论 -
SpringBoot入门教程(第一阶段):整合SpringData JPA
SpringBoot入门:使用SpringData JPA1、首先创建项目,添加依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency>原创 2021-02-16 23:17:42 · 229 阅读 · 1 评论 -
计算机网络与Java网络编程基础知识总结
关于Java网络编程计算机网络将地理位置不同的计算机通过通信线路连接起来,实现资源的共享和信息的传递,网络中的计算机通常称之为主机,而网络编程就是通过程序来实现两台以上主机之间的通信。实际的通信网络内容较多,但是Java语言提供了许多网络类,屏蔽了底层的复杂细节,是程序员可以很容易地编写出网络程序。计算机网络知识基础在进行Java网络编程之前,需要对关于计算机网络的总体知识有一个大致的理解。分层结构模型众所周知,计算机网络传输实际上是一个很复杂的模型,为了更方便程序开发,我们一般会简历网络传输模原创 2020-10-06 21:21:58 · 729 阅读 · 1 评论 -
Java-关于并发与多线程笔记
进程与线程进程:是计算机中的程序在某个数据集合上的一次独立的运行活动,是系统进行资源分配和调度的基本单位。进程特征:1.每个进程都有自己独立的一块内存空间和一组系统资源;2.创建并执行一个进程的系统开销比较大;3.进程是程序的一次基本执行过程,是系统运行程序的基本单位;线程:被称为轻量级进程,.是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的 资源。虽然系统是把资源分给进程,但是CPU很特殊,是被分配到线程的,所以线程是CPU分配的基本单位。线程特征:1.线程自己原创 2020-10-04 23:15:57 · 142 阅读 · 0 评论 -
Java-关于异常处理笔记
什么是异常?在程序开发过程中,我们要尽量避免错误的发生,但是总会发生一些不可预期的事情,例如除法除数为0,内存不足,栈溢出等,这些就属于异常;Java中提供了异常处理机制,处理这些不可预期的事情;异常也被称为例外,是程序运行过程中会发生的,会打断程序正常执行的事件,以下是几种常见的异常:1.算术异常(ArithmeticException)2.没有给对象开辟内存空间时出现的空指针异常(NullpointException)3.找不到文件异常(FileNotFoundException)在程序原创 2020-10-03 13:17:23 · 338 阅读 · 0 评论 -
Java-泛型编程笔记
Java泛型编程原创 2020-10-02 21:27:17 · 126 阅读 · 0 评论 -
Java笔记2-面向对象
面向对象(OOP)在程序中使用对象的概念来映射现实中的事物,使用对象的关系来描述事实的联系,这种思想就是面向对象。把要解决的问题按照一定的规则划分为多个独立的对象,然后通过调用对象的方法来解决问题,一个应用程序会包含多个对象,通过多个对象的相互配合实现代码功能,当某个应用程序出现问题时或功能需求变化时,只需要修改相应对象即可,这样代码更容易维护开发,效率更高,逻辑结构更加清晰。面向对象三大特性封装继承多态类与对象类是一张用于组合对象属性和行为的一种机制;类的实例化就是对象;在Java中,原创 2020-09-27 20:21:18 · 251 阅读 · 0 评论 -
Java基础语法杂记
1.java工作原理编写,编译,运行.java文件——>.class文件——>机器代码.class文件交给JVM解释运行一次编译,到处运行java编译器与java解释器JRE(Java Runtime Enviroment) java运行时环境JDK(Java Devolopment Kit) Java开发工具包,其中包括Java运行时环境2.配置PATH环境变量系统查找bin目录JAVA的初学者,必须要学会配置PATH环境变量,否则无法编译、运行JAVA程序。那么,为原创 2020-09-25 22:40:30 · 105 阅读 · 0 评论 -
关于Java的Static函数调用非静态方法
关于Java的Static函数调用非静态方法通常情况下,Java 静态函数中能不能调用非静态函数的方法?答案是不行的,因为在Java中,非静态方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接.调用。为什么是这样呢?从内存的角度看,在Java中,静态局部变量初始化是在第一次调用函数的时候初始化,全局变量是在main方法执行之前就已经初始化了,这时系统已经为该静态变量分配好内存。也就是说,当类被加载的时候,静态方法和静态属性原创 2020-09-20 11:05:17 · 634 阅读 · 0 评论 -
Java笔记之Class.forName()用法详解
Class.forName()用法详解主要功能Class.forName(xxx.xx.xx)返回的是一个类。Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段。下面,通过解答以下三个问题的来详细讲解下Class.forName()的用法:一.什么时候用Class.forName()?先提个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?你第一想到的肯定是new,但是注意一点:A a = (A)Clas原创 2020-07-21 21:07:47 · 356 阅读 · 0 评论 -
JAVA的类加载器(一)
学习笔记-JAVA的类加载器(一)一.什么是加载一般来说,我们写的java文件是不能直接运行的。而我们之所以可以在开发平台上写完代码后直接点击运行,这中间其实掺杂了一系列的复杂处理过程。而代码在运行之前有一个环节,叫做类的加载。我们编写的java文件通过编译器变成了.class文件,接下来类加载器又将这些.class文件加载到JVM中。这就是类的加载过程,Java类加载器是Java运行时环境的一部分,负责动态加载Java类到Java虚拟机的内存空间中。二.加载过程一般来说,类通常是按需加载,原创 2020-07-17 12:14:38 · 110 阅读 · 0 评论