JAVA开发+基础+面试题
文章平均质量分 76
八股文基础知识
涵冰...
学无止境
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring AOP基础、快速入门(Spring的设计思想之一)
AOP,面向切面编程,作为面向对象的一种补充,将公共逻辑(事务管理、日志、缓存、权限控制、限流等)封装成切面,跟业务代码进行分离,可以减少系统的重复代码和降低模块之间的耦合度。切面就是那些与业务无关,但所有业务模块都会调用的公共逻辑。原创 2024-12-15 12:37:59 · 861 阅读 · 0 评论 -
手写一个单例模式
一个私有构造函数 (确保只能单例类自己创建实例)一个私有静态变量 (确保只有一个实例)一个公有静态函数 (给使用者提供调用方法)简单来说就是,单例类的构造方法不让其他人修改和使用;并且单例类自己只创建一个实例,这个实例,其他人也无法修改和直接使用;然后单例类提供一个调用方法,想用这个实例,只能调用。这样就确保了全局只创建了一次实例。原创 2024-11-21 09:45:00 · 808 阅读 · 0 评论 -
保证线程安全的处理策列
weakCompareAndSetInt中会再次通过偏移量offset从对象o中获取字段的当前值,如果这期间字段值被其他线程修改,那么此时获取到的当前值就不等于期望值,就不会执行更新操作,只有确保在修改字段值之前,字段的当前值与预期值依然相等,才能执行更新操作,从而确保了原子操作的安全性。1、单独操作:上述我们的demo中,出现了两个线程A、B,它们分别调用get()、put()方法,虽然看起来像是在组合操作,但实际上对于单个线程而言,这是单独操作,是线程安全的。线程3这不就获取了错误的数据?原创 2024-11-11 10:00:00 · 947 阅读 · 0 评论 -
线程本地变量-ThreadLocal
ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。原创 2024-10-25 13:13:14 · 1357 阅读 · 0 评论 -
再通过for循环遍历list集合时,怎么删除list集合中的元素
在Java中,如果你尝试在一个迭代过程中直接修改正在迭代的集合(如使用remove),可能会遇到ConcurrentModificationException异常。这是因为迭代器检测到了集合的结构性修改(比如添加或删除元素)。原创 2024-10-25 12:54:59 · 929 阅读 · 0 评论 -
Spring中的循环依赖
1.Spring首先从一级缓存singletonObjects中获取。2.如果获取不到,并且对象正在创建中,就再从二级缓存earlySingletonObjects中获取。3.如果还是获取不到且允许singletonFactories通过getObject()获取,就从三级缓存singletonFactory.getObject()(三级缓存)获取.4.如果从三级缓存中获取到就从singletonFactories中移除,并放入earlySingletonObjects中。其实也就是从三级缓存移原创 2024-10-23 11:43:25 · 1104 阅读 · 0 评论 -
@Autowried privite static User user的输出结果是什么
在控制台上的输出结果是 Null原创 2024-10-28 09:45:00 · 1560 阅读 · 0 评论 -
在Spring中,什么是配置类
配置类是用来配置 Spring 应用程序上下文的 Java 类。它通过使用特定的注解和方法,为应用程序提供各种配置信息,使得 Spring 容器能够正确地初始化和管理应用程序的各个组件。原创 2024-10-21 12:03:30 · 618 阅读 · 0 评论 -
@Component 和 @Bean 的区别与联系
@Component 和 它的子类型(@Controller, @Service and @Repository)注释在类上。告诉Spring,我是一个bean,通过类路径扫描自动检测并注入到Spring容器中。@Bean不能注释在类上,只能用于在配置类(@Configuration)中显式声明单个bean。意思就是,我要获取这个bean的时候,spring要按照这种方式去获取这个bean。默认情况下@Bean注释的方法名作为对象的名字,也可以用name属性定义对象的名字。原创 2024-10-21 11:56:41 · 383 阅读 · 0 评论 -
面试题:分布式事务,你了解多少?来谈谈2PC、TCC、可靠消息、最大努力通知
在条件允许的情况下,我们尽可能选择本地事务单数据源,因为它减少了网络交互带来的性能损耗,且避免了数据弱一致性带来的种种问题。若某系统频繁且不合理的使用分布式事务,应首先从整体设计角度观察服务的拆分是否 合理,是否高内聚低耦合?是否粒度太小?分布式事务一直是业界难题,因为网络的不确定性,而且我们习惯于拿分布式事务与单机事务 ACID 做对比。无论是数据库层的 XA、还是应用层 TCC、可靠消息、最大努力通知等方案,都没有完美解决分布式事务问题,它们不过是各自在性能、一致性、可用性等方面做取舍,寻求某些场景原创 2024-10-18 15:19:17 · 1811 阅读 · 0 评论 -
Spring事务的底层原理
事务其实是一个并发控制单位,是用户定义的一个操作序列,这些操作要么全部完成,要不全部不完成,是一个不可分割的工作单位原创 2024-10-03 18:49:09 · 1827 阅读 · 1 评论 -
JAVA基础-线程(Thread)、多线程(Multi-threaded)
线程是进程中的⼀个执⾏单元,负责当前进程中程序的执⾏,⼀个进程中⾄少有⼀个线程。⼀个进程中是可以有多个线程的,这个应⽤程序也可以称之为多线程程序。原创 2024-10-03 11:24:29 · 1598 阅读 · 0 评论 -
JAVA的三大特性-封装、继承、多态
Java作为一种面向对象的编程语言,其核心特性包括封装、继承和多态。这三大特性是Java语言的基石,它们相互关联,共同构成了Java强大的面向对象能力。原创 2024-10-03 10:29:58 · 551 阅读 · 0 评论 -
JDK的下载,安装,与环境配置
JDK:英文全称 Java Development Kit,是Java的开发工具包原创 2023-07-03 16:27:14 · 497 阅读 · 4 评论 -
拆箱与装箱
Java中的基本数据类型不是对象型(引用类型)。但是在程序中有时需要对对象而不是基本数据类型进 行操作。因此,java里提供了一种叫做包装类(wrapper),它能够把基本数据类型包装成对象类型。原创 2023-07-14 17:28:52 · 154 阅读 · 3 评论 -
时间戳-JAVA日期工具类Date()与Calendar()
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,本质是一个long类型的整数,表示日期对象。java 体系的时间戳是毫秒。原创 2023-07-08 16:03:41 · 680 阅读 · 2 评论 -
程序的输入与输出的方法以及输出控制颜色
String n = JOptionPane.showInputDialog("请输入姓名");System.out.println("欢迎:" + args[0]);System.out.println("欢迎:" + n);System.out.println("欢迎:" + n);System.out.print("请输入姓名:");System.out.print("请输入年龄:");//不换行输出,必须有内容。fg取值范围:30-39。//输入Scanner。//main入口参数。原创 2023-07-11 21:49:19 · 270 阅读 · 3 评论 -
使用idea的JavaDoc生成java源程序的API文档时出现java.lang.IllegalArgumentException异常
是因为之前配置的环境变量中的CLASSPATH里边的字符串异常发生冲突,一种方法是:可以将。可以选择修改CLASSPATH变量名。环境变量CLASSPATH删除。原创 2023-07-05 16:53:51 · 750 阅读 · 2 评论 -
流程控制-分支语句(if与switch)
Java 的 switch 语句和 if 语句是一种常用的控制流语句,用于基于不同的输入值执行不同的操作。本文将详细介绍 Java switch 和 if 语句的作用、用法以及在实际工作中的应用。原创 2023-07-11 21:20:39 · 177 阅读 · 3 评论 -
idea组件lombok和GenerateAllSetter插件的安装和使用
Lombok项目是一个java库,它可以自动插入到编辑器和构建工具中,增强java的性能。不需要再写getter、setter或equals方法,只要有一个注解,就有一个功能齐全的构建器、自动记录变量等等。原创 2023-07-12 21:49:40 · 791 阅读 · 4 评论 -
数组的声明和使用-一维数组和多维数组(冒泡排序问题,洗牌问题以及双色球问题)
数组(Array)是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。 组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量/12713827)。用于区分数组 的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序 的形式组织起来的一种形式。 这些有序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。 数组是对象类型(引用类型)原创 2023-07-12 21:27:17 · 163 阅读 · 3 评论 -
JDK,JRE,JVM的区别与联系
JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,原创 2023-07-13 19:44:45 · 155 阅读 · 3 评论 -
JAVA时间戳-Calendar类(包括set,get,add方法)
Calendar 类是一个抽象类,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。原创 2023-07-15 10:39:47 · 3406 阅读 · 5 评论 -
流程控制-循环语句(for和while以及流程控制语句break,continue):含有九九乘法表,打印菱形图案,百鸡百钱问题,猜数字游戏
最少循环一次,无条件进入循环语句。条件为true,再循环一次,如果条件为false结束循环。鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。条件循环,条件为true进入循环,每次循环都要看条件,为false,退出循环。//循环语句结束,循环条件为false,或在循环体中的语句有break执行。表达式一:初始化值;表达式二:循环条件;break语句出现在 switch语句,循环语句,代表退出当前的程序执行块。continue 结束本次循环,立即开始下次循环。for (表达式1;}while(条件);原创 2023-07-12 08:56:20 · 370 阅读 · 4 评论 -
JAVA类的继承
继承是面向对象的三大特征之一.也是实现软件复用的重要手段.原创 2023-07-14 20:19:53 · 369 阅读 · 4 评论 -
JAVA抽象类,抽象方法
类用于描述现实生活中一类事物。类中有属性、方法等成员。父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有 意义,而方法主体则没有存在的意义了。某种情况下,父类只能知道子类应该具备一个怎样的方法,但是不能够明确知道如何实现该方法。只能在子类中才能确定如何去实现方法体。例如:所有几何图形都应该具备一个计算面积的方法。但是不同的几何图形计算面积的方式不同。我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法 的类就是抽象类。原创 2023-07-14 20:58:17 · 3006 阅读 · 3 评论 -
面对对象-class类(属性和方法)
面向对象编程(Object-Oriented Programming,OOP)是一种编程方法,其中程序是由对象组成的。面向对象的编程的核心思想是,将程序中的实体、数据和功能抽象为单独的对象,并在这些对象之间建立联系。这些方面可以使程序更易于维护、扩展和重用,并使代码更具可读性和清晰度。面向对象的方法已经成为现代编程的重要方法,并应用于各种领域,如桌面应用程序、移动应用程序、游戏等。原创 2023-07-13 22:02:12 · 233 阅读 · 3 评论 -
熟悉软件项目开发-编写一个简单的翻译软件(从项目开发到投入使用的过程)
4:在命令提示符内输入一下内容并回车:jlink --module-path jmods --add-modules java.desktop,java.base --output jre。1:在新创建的jar包同级目录下新建一个文本文件,编辑如下内容并保存:start ./jre/bin/javaw.exe -jar jar.jar。3:在applications目录下找到javaw.exe 进入command文件。2:将编辑的txt文件更改问bat批处理文件。点击Project Structure。原创 2023-07-04 19:11:09 · 799 阅读 · 2 评论 -
JAVA接口类-interface
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口。原创 2023-07-14 21:34:21 · 1547 阅读 · 3 评论 -
String、StringBuilder、StringBuffer的区别和常用方法
对于String来说,是把数据存放在了常量池中,因为所有的String,默认都是以常量形式保存,且由final修饰,因此在线程池中它是线程安全的。因为每一个String当被创建好了以后,他就不再发生任何变化,但是它的执行速度是最差的。原创 2023-07-18 21:29:27 · 156 阅读 · 2 评论 -
JAVA基础案例-利用I/O文件delete()方法删除磁盘内文件夹(包括目录和文件)
File是一个类,那么在使用的时候就需要创建对象,但是File类的实例是不可变的,也就 是说,一旦创建,由File对象表示的抽象路径名将永远不会改变,也就是说利用构造方法,指定路径名、文件 名等来构造File类的对象,之后调用该对象的createNewFile()方法就可以创建出相应的文件。File类的对象可以代表一个具体的文件路径,在实际运用种,可以使用绝对路径也可以使用相对路径, 下面是创建文件对象实例。delete():删除文件或空目录文件夹目录。原创 2023-07-22 14:28:00 · 593 阅读 · 2 评论 -
JAVA-正则表达式基本语法规则和Pattern,Matcher,PatternSyntaxException三大类
正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别原创 2023-07-19 14:58:28 · 495 阅读 · 2 评论 -
JAVA基础-Stream流
Java 8 版本新增的Stream,配合同版本出现的Lambda ,给我们操作集合(Collection)提供了极大的 便利。Stream流是JDK8新增的成员,允许以声明性方式处理数据集合,可以把Stream流看作是遍历数据集 合的一个高级迭代器。Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操 作,可以执行非常复杂的查找/筛选/过滤、排序、聚合和映射数据等操作。使用Stream API 对集合数据进行 操作,就类似于使用 SQL 执行的数据库查询。原创 2023-07-25 19:57:24 · 894 阅读 · 4 评论 -
final、finally与finalize的区别
`final`、`finally` 和 `finalize` 在 Java 中的含义和用法都不同原创 2023-07-19 19:02:02 · 172 阅读 · 3 评论 -
JAVA开发工具-maven的安装与配置(最新最详细教程)
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具 软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较 高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方 法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。原创 2023-07-31 12:58:39 · 4597 阅读 · 2 评论 -
JAVA关键字-static,以及static应用(代码块)
在 Java 中,static 是一个关键字,主要用于修饰类变量、方法或代码块,其含义跟随所修饰的对象不同而不同。原创 2023-07-15 15:46:28 · 244 阅读 · 3 评论 -
JAVA基础-集合(List与Map)
程序中可能通过数组来保存多个对象,因为数组长度是不可变的。JDK中提供了一些特殊的类,这些类 可以存储任何对象,并且长度可变,在java中这些类被为集合。集合类位于 java.util 包中。原创 2023-07-20 21:23:27 · 3357 阅读 · 2 评论 -
递归:一个图教学会递归原理
自身调用:原问题可以分解为子问题,子问题和原问题的求解方法是一致的,即都是调用自身的同一个函数。终止条件:递归必须有一个终止的条件,即不能无限循环地调用本身。原创 2023-07-29 11:42:34 · 387 阅读 · 1 评论 -
I/O文件File类的方法和操作案例
如果 parent 是空抽象路径名,则通过将 child 转换为抽象路径名,并根据与系统有关的默认目录解析结果来创建新的 File 实例。File是一个类,那么在使用的时候就需要创建对象,但是File类的实例是不可变的,也就 是说,一旦创建,由File对象表示的抽象路径名将永远不会改变,也就是说利用构造方法,指定路径名、文件 名等来构造File类的对象,之后调用该对象的createNewFile()方法就可以创建出相应的文件。如果给定字符串是空字符串,那么结果 是空抽象路径名。原创 2023-07-22 15:05:15 · 193 阅读 · 2 评论 -
JAVA基础-异常与异常处理
在 Java 中你可以自定义异常。编写自己的异常类时需要记住下面的几点。所有异常都必须是 Throwable 的子类。如果希望写一个检查性异常类,则需要继承 Exception 类。如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。private String message="输入错误";System.out.println("请输入你的数字");try {原创 2023-07-19 18:44:26 · 283 阅读 · 3 评论
分享