Java
文章平均质量分 66
有关java方面的一些经验
Dyhamic
山高水远,来日方长
展开
-
Java虚拟机内存管理,关于垃圾回收器的理解
介绍自动内存管理也就是俗称的垃圾收集(garbage-collection),可以让程序员减轻许多负担,也减少程序员犯错的机会,所以相当受欢迎。在Java中,你不需要主动删除对象,而是由Java虚拟机代劳。Java虚拟机会“持续追踪”每个对象被使用的情形,如果某对象未被用到,Java虚拟机就会自动将其释放。而要如何“持续追踪”,具体实现细节留给Java虚拟机的实现者发挥。在早期,许多虚拟机只...原创 2024-07-22 16:10:25 · 362 阅读 · 1 评论 -
Java反射机制的理解与运用,如何通过反射获取Class对象、获取成员变量、成员方法、构造方法以及如何通过暴力反射获取私有构造、私有方法、私有属性
可以理解为是解剖class对象的一个技术,能解剖class对象的成员变量、成员方法、构造方法。使用反射可以让代码变的更通用,更灵活。下面是类加载到内存的大致过程。原创 2024-07-22 11:20:57 · 772 阅读 · 0 评论 -
Java关于JDBC的理解
Java Database Connectivity:意为Java数据库连接。是Java提供的一组独立于任何数据库管理系统的API。Java提供接口规范,由各个数据库厂商提供接口的实现,厂商提供的实现类封装成jar文件,也就是我们俗称的数据库驱动jar包。我们只关心标准和规范,而无需关注实现过程。原创 2024-07-19 20:57:37 · 364 阅读 · 0 评论 -
Java中正则表达式regex详解
".": 匹配任何字符。(重点) 不能加[ ]"\\d":任何数字[0-9]的简写;(重点)"\\D":任何非数字[^0-9]的简写;"\\s": 空白字符:[ \t\n\x0B\f\r] 的简写"\\S": 非空白字符:[^\s] 的简写"\\w":单词字符:[a-zA-Z_0-9]的简写(重点)"\\W":非单词字符:[^\w]原创 2024-07-19 15:39:36 · 860 阅读 · 0 评论 -
Java关于方法引用的理解
方法引用是Java的jdk8版本引入的一个特性,算是Lambda表达式的另一种格式。操作符是。被引用的方法要写在重写方法里面,被引用的方法从参数上,返回值上要和所在重写方法一致,而且引用的方法最好是操作重写方法的参数值的。原创 2024-07-18 10:37:24 · 223 阅读 · 0 评论 -
Java版本jdk8的特性Lambda表达式详解
( )->{ }:( )是重写方法的参数位置,->是将参数传递到方法体中,{ }是重写方法的方法体。原创 2024-07-17 16:11:04 · 992 阅读 · 0 评论 -
Java关于注解的使用、如何自定义注解、如何通过元注解解析注解
注解属性,其实本质上是抽象方法。但是我们按照属性来理解容易理解,因为到时候使用注解的时候,需要用=为其赋值。public @interface 注解名{XXXXXXX定义属性:增强注解的作用数据类型 属性名():此属性没有默认值,需要在使用注解的时候为其赋值。数据类型 属性名() default 值:此属性有默认值,如果有需要,还可以二次赋值。注解中能定义8种基本类型:String类型、class类型、枚举类型、注解类型、以及以上类型的一维数组。//品牌//车零件//价格//数量。原创 2024-07-17 11:52:49 · 1286 阅读 · 0 评论 -
Java关于枚举的介绍
枚举是Java的五个引用数据类型类、数组、接口、注解、枚举之中的一种。枚举一般用来表示对象的状态。原创 2024-07-16 21:30:46 · 384 阅读 · 0 评论 -
Java的jdk8版本常用函数式接口配合Stream流的使用
函数式接口是有且仅有一个抽象方法的接口,通过@FunctionalInterface来检测(自定义函数式接口时可以不要,只要满足条件就是函数式接口)。Java中函数式编程体现就是Lambda表达式,所以函数式接口就是适用于Lambda使用的接口。有两个抽象方法就会报错。原创 2024-07-13 14:15:47 · 869 阅读 · 0 评论 -
Java中PrintStream打印流改变流向是什么意思
先介绍下PrintStream打印流,我们经常使用的System.out.println(),其实就是打印流对象里面的一个方法。print()原创 2024-07-13 10:36:11 · 279 阅读 · 0 评论 -
Java关于Junit单元测试插件中@Test等常用注解分析
1.概述:Junit是一个单元测试框架插件,可以代替main方法去执行其他的方法,即单独执行一个方法,测试该方法是否能跑通。想要使用Junit需要先导入jar包,下面来介绍一下Junit的常用注解。原创 2024-07-12 14:52:33 · 573 阅读 · 0 评论 -
Java中Timer定时器的使用
执行结果如下:每秒执行一次。原创 2024-07-12 10:34:08 · 241 阅读 · 0 评论 -
基于IDEA的Lombok插件安装及简单使用
Lombok能以注解形式来简化java代码,提高开发效率。开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护。而Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。特别的是它在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。原创 2024-07-11 13:13:10 · 1202 阅读 · 0 评论 -
Java中关于File类的详解
File类是文件和目录路径名称的抽象表示,主要用于文件和目录的创建、查找和删除等操作。在创建File对象的时候,需要传递一个路径,这个路径定位到哪个文件或者文件夹上,File就代表哪个对象。原创 2024-07-11 09:47:28 · 482 阅读 · 0 评论 -
Collections集合工具类简介
特点:构造私有,方法都是静态的,通过类名直接调用。原创 2024-07-10 14:15:15 · 298 阅读 · 0 评论 -
Collection接口及遍历集合的方式Iterator接口、增强for循环的介绍和使用
Iterator接口与Collection接口不同,主要用于迭代访问Collection中的元素,因此Iterator对象也被称为迭代器。通过Collection接口中的iterotor()返回的迭代器的实现对象。注意:增强for循环遍历集合时,底层实现原理为迭代器,不能随意修改集合长度,否则会出现并发修改异常。增强for循环遍历数组时,底层实现原理为普通for循环。增强for循环用来遍历数组或者集合。原创 2024-07-10 09:09:09 · 841 阅读 · 0 评论 -
Java泛型的定义与运用
public class 类名<E>{ }//定义一个数组,充当ArrayList底层的数组,长度直接规定为10int size;public boolean add(E e){ //定义一个add方法,参数类型需要和泛型类型保持一致size++;@Overridelist1.add("张三");list1.add("李四");//直接输出对象名,默认调用toString。原创 2024-07-09 16:59:23 · 902 阅读 · 0 评论 -
Java中toString()方法的理解使用及如何通过IDEA快速自动调用,重写toString()方法
在Java中,toString()是一个非常基础且广泛使用的方法,它属于根类java.lang.Object。每个Java对象都继承自Object类,因此默认情况下,每个Java对象都有一个toString()方法。格式:它没有参数,并返回一个字符串。原创 2024-07-09 12:53:58 · 480 阅读 · 0 评论 -
解决线程不安全问题的几种方式
这里面就存在着线程安全的问题,因为当多个线程访问同一个资源时,会导致数据出错,例如甲和乙两人同时看中了一张票,甲先点击购买,此时线程直接转到乙去执行,乙点击购买,并锁定票,但甲还不知道此时就会发生数据错误。执行: 一个线程拿到锁之后,会进入到同步代码块中执行,在此期间,其他线程拿不到锁,就进不去同步代码块,需要在同步代码块外面等待排队。等着执行的线程执行完毕,出了同步代码块,相当于释放锁了,等待的线程才能抢到锁,才能进入到同步代码块中执行。同步方法有两类,一种是非静态的,一种是静态的。原创 2024-07-08 18:35:38 · 580 阅读 · 0 评论 -
Java创建多线程的几种方式详解
线程池(ThreadPool)是一种基于池化思想管理和使用线程的机制:它是将多个线程预先存储在一个“池子”内,当有任务出现时可以避免重新创建和销毁线程所带来性能开销,只需要从“池子”内取出相应的线程执行对应的任务即可具体可以看看这篇。线程:进程中最小的执行单元,作用是负责当前进程中程序的运行。一个进程中至少有一个线程,一个进程还可以有多个线程,这样的应用程序就称之为多线程程序。下面介绍下创建多线程的几种方式。进程:在内存中执行的应用程序。原创 2024-07-08 14:19:47 · 1214 阅读 · 0 评论 -
Java的Thread类中的常用方法解析
Java可以通过Thread类实现多线程,下面来介绍几个Thread类中常用的方法。原创 2024-07-07 23:11:33 · 379 阅读 · 0 评论 -
关于Java异常机制及finally关键字的详解
异常机制(Exception)软件程序在运行过程中,非常可能遇到刚刚提到的异常问题。这些,例外情况,或者叫异常,怎么让我们写的程序做出合理的处理,而不至于程序崩溃。常见的异常:1、用户输入错误2、设备错误3、硬件问题,例如打印机关掉、服务器问题4、物理限制:磁盘满了Java是采用面向对象的方式来处理异常的。处理过程:抛出异常:在执行一个方法是,如果发生异常,则这个方法生成代表该异...原创 2024-07-07 21:34:22 · 827 阅读 · 1 评论 -
Java中关于构造代码块和静态代码块的解析
特点:静态代码块优先于构造代码块和构造方法执行,而且只执行一次,所以静态代码块的应用场景一般是想让一些数据最先初始化,而且只需要初始化一次,例如初始化数据库的操作。特点:优先于构造方法执行,每new一次,就会执行一次。原创 2024-07-06 09:29:37 · 207 阅读 · 0 评论 -
Java中四种全限修饰符public、protected、default、private的访问能力区别
在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限。原创 2024-07-06 00:41:57 · 237 阅读 · 0 评论 -
关于Java面向对象三大特征中多态的分析及出现类型转换异常ClassCastException,通过关键字instanceof解决的方法
原始方式new的对象既能调用重写的,还能调用继承的、自己特有的成员。但缺点是扩展性差,而多态解决了这个问题,它的扩展性强,缺点就是不能直接调用子类特有功能。我创建的方法的形参传递父类类型,调用此方法父类类型可以接收任意它的子类对象,传递哪个子类对象,就指向哪个子类对象,就调用哪个子类对象重写的方法。今天来研究一下多态,首先我们要知道多态的好处,为什么要学习多态。我创建一个方法形参接收的是dog对象,如果我想让method传cat只能新建一个新的方法,扩展性很差。向下转型好比强转,将大类型强制转成小类型。原创 2024-07-05 12:30:22 · 681 阅读 · 0 评论 -
Java中继承接口和实现接口的区别、接口和抽象类的区别、并理解关键字interface、implements
final代表最终的,被它修饰的变量,不能二次赋值,可以视为常量public static final 数据类型 变量名 = 值特点1、不写public static final 默认也有2、接口名直接调用3、被static final修饰的成员变量需要手动赋值4、习惯上我们会将static final修饰的成员变量名大写//不写public static final 默认也有。原创 2024-07-04 19:20:57 · 724 阅读 · 0 评论 -
Java关于标准输入和标准输出的理解
java中的标准输入指的是System.in还是键盘输入?概念搞不太清楚,用Scanner类从键盘输入算是标准输入吗?先理清一些概念:每个控制台程序都有标准输入、标准输出、标准错误输出三个管道(句柄),这三个管道都可以重定向(即改变与管道关联的对象)。而标准输入默认是与键盘关联的(即从键盘获取输入),标准输出和标准错误输出默认是与显示器相关联的(即把数据和错误输出到显示器)。所以,从键盘输入不...原创 2024-07-03 08:39:24 · 313 阅读 · 1 评论 -
标准JavaBean介绍、IDEA中快速创建符合标准JavaBean规范的类。
JavaBean是Java语言编写类的一种标准规范,具有以下三点的类,可以算是符合JavaBean的类。1、类需要具有有参和无参构造方法2、类必须是具体公共的,public class 类名3、类的成员变量私有化,并提供用来操作成员变量的set()和get()方法。下面通过IDEA快捷键快速创建一个简单的符合标准JavaBean规范的类。先试用(如果不是全键盘,笔记本使用或者Alt+Fn+I)键位打开构造界面。原创 2024-07-03 00:52:00 · 444 阅读 · 0 评论 -
IDEA中如何快速生成set()和get()方法及关于Java中的set()和get()方法的理解
根据词的表面意思,set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的。而且,在类中使用set和get方法时,都是在set和get后面跟上一些特定的词来形成特定意思的方法名,比如set age()和get age(),表示设置年龄和获取年龄。然后我们来了解一下JAVA面向对象编程中的封闭性和安全性。封闭性即对类中的域变量进行封闭操作,即用private来修饰他们...原创 2024-07-02 20:14:46 · 1972 阅读 · 1 评论 -
@TableId注解详细介绍
@TableId注解@TableId注解是专门用在主键上的注解,如果数据库中的主键字段名和实体中的属性名,不一样且不是驼峰之类的对应关系,可以在实体中表示主键的属性上加@Tableid注解,并指定@Tableid注解的value属性值为表中主键的字段名既可以对应上。比如数据中的表中的字段是vote_id,但是实体类是voteId。那么就需要在voteId上打上这个注解,如下:/** 主键 */ @TableId("vote_id") @TableId(value = "vote_id"原创 2021-10-29 21:04:29 · 67763 阅读 · 8 评论 -
@restcontroller和@controller注解的区别
restcontroller和controller区别主要有以下几点:1、用Controller配合视图解析器才能返回到指定页面。在对应的方法上加上ResponseBody注解才能返回JSON,XML或自定义mediaType的内容到页面。2、不可以只用RestController注解Controller,因为这样会让Controller中的内容不能返回jsp页面,而且会直接返回Return里的内容。3、RestController相当于Controller和ResponseBody两者合并起来的作用原创 2021-10-24 08:00:00 · 1752 阅读 · 0 评论 -
@Autowired用法详解
@Autowired 注解简介@Autowired 注解,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。在使用@Autowired之前,我们对一个bean配置起属性时,是这样用的<property name="属性名" value=" 属性值"/> 通过这种方式来,配置比较繁琐,而且代码比较多。在Spring 2.5 引入了 @Autowired 注解。下面用案例来具体说明UserRepositor原创 2021-10-22 08:00:00 · 12874 阅读 · 0 评论 -
YAML使用教程
YAML语言简介YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。Clark Evans在2001年首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。当前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。YAML是"YAML Ain’t a Markup Language"(YA原创 2021-10-21 09:45:00 · 2445 阅读 · 0 评论 -
@Override注解的作用
优点@Override注解告诉你下面这个方法是从父类/接口继承过来的,需要你重写一次,这样就可以方便你阅读,也不怕会忘记。@Override是伪代码,表示重写(当然不写也可以),不过写上有以下优点:1、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以通过的(它以为这个方法是你的子类中自己增加的方法)。所以使用@Override注解是为了增强程序在编译时候的检查,如果该方法并不是一个覆盖原创 2021-10-20 15:30:00 · 10948 阅读 · 1 评论 -
@Component注解的用法
注解注解本质上就是一个类,开发中我们可以使用注解取代xml配置文件。@component是spring中的一个注解,它的作用就是实现bean的注入。在Java的web开发中,提供3个@Component注解衍生注解(功能与@component一样)分别是:1、@Controller 控制器(注入服务) 用于标注控制层,相当于struts中的action层。2、@Service 服务(注入dao) 用于标注服务层,主要用来进行业务的逻辑处理3、@Repository(实现dao访问) 用于标注数据访原创 2021-10-19 10:30:00 · 66298 阅读 · 1 评论 -
@GetMapping与@RequestMapping的区别
Spring中引进了@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping注解来帮助简化常用的HTTP方法的映射,并更好地表达被注解方法的语义。两者的区别@GetMapping用于将HTTP GET请求映射到特定处理程序方法的注解,是一个作为快捷方式的组合注解。@GetMapping它其实相当于@RequestMapping(method = RequestMethod.GET)。@RequestMapping@Reque原创 2021-10-17 17:08:58 · 4174 阅读 · 1 评论 -
使用springBoot报错Circular view path [success]: would dispatch back to the current handler URL 解决方法
使用springboot在整合使用thymeleaf模板时报错,出错原因应该是使用thymeleaf 模板版本跟springBoot不匹配第一种快速解决的方法是直接将@controller改为@RestController返回页面用@Controller,返回数据用@RestController第二种方式是更改thymeleaf版本使其与springBoot版本匹配就行。起初pom.xml的配置是这样<!--Thymeleaf--> <!-- https://mvnrepo原创 2021-07-21 11:24:14 · 789 阅读 · 0 评论 -
maven加载依赖时总是Updating [central] https://repo.maven.apache.org/maven2
最近在使用maven添加依赖的时候,动不动idea就会从Updating [central] https://repo.maven.apache.org/maven2开始下载1.23G的文件。即使在maven setting.xml中配置了阿里云的镜像。原因是所有自定义pom.xml都是继承自super pom:<repositories> <repository> <id>central</id> <name>原创 2021-07-20 15:59:39 · 1571 阅读 · 0 评论 -
你真的懂面向对象了么?一篇文章带你全面领悟面向对象的思想
面向对象原创 2020-04-18 00:10:29 · 1161 阅读 · 0 评论 -
Java中利用Scanner类获取键盘的输入、讨论next()和nextLine()方法的详细区别
java提供了一个Scanner类,利用这个类,我们可以很方便的获取键盘输入的参数,它也是java最强大的一种接收方式,也是最常用的一种方式,它可以接收任意数据类型,Scanner是一个基于正则表达式的文本扫描器~~可以从文件,输入流,字符串中解析出基本类型和字符串类型的值。Scanner类提供了多个构造器,不同的构造器可以接受文件,输入流,字符串作为数据源,用于从文件,输入流字符串中解析数据。...原创 2020-04-04 16:05:52 · 552 阅读 · 1 评论