![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java基础
对java基础部分的一些经典问题以及常见的面试题进行归纳总结。
白白甜甜冰
这个作者很懒,什么都没留下…
展开
-
什么是乐观锁和悲观锁
一、什么是乐观锁乐观锁,顾名思义就是总是假设最好的情况,每次获取数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和 CAS 算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于 write_condition 机制,其实都是提供的乐观锁。在 Java 中 java.util.concurrent.atomic 包下面的原子变量类就是使用了乐观锁的一种实现方式 CAS 实现的。二、什么是悲观锁.原创 2022-04-09 21:50:37 · 5957 阅读 · 0 评论 -
maven的安装和配置以及如何在IDEA中配置maven
maven是当前开发中最常用的项目管理工具之一,IDEA是目前最受欢迎的Java开发工具,对于Java开发者来说,掌握在IDEA中配置maven是很有必要的,本文将详细介绍如何在IDEA中配置maven。一、maven的下载 首先是在maven的官网中下载maven,官网地址:https://maven.apache.org/,下载完成后,需要对压缩包进行解压,需要注意的是,解压到的目录不能含有中文和空格,而且我们需要记住这个目录的位置,后续环境变量的配置需要用到。...原创 2022-02-14 20:33:11 · 9802 阅读 · 0 评论 -
解决IntelliJ IDEA下载插件时MarketPlace加载不出来的情况
使用IDEA下载插件时,可能会出现MarketPlace一直加载不出来的问题,导致我们无法从MarketPlace中选择我们需要的插件进行下载,在确保网络正常的情况下,针对这个问题,只需要进行一个简单的设置即可。以IDEA 2020.1版本为例,找到File->Settings->Appearance&Behavior->System Settings->Updates,如下图所示,将画圈部分的打勾去掉并保存修改即可。...原创 2022-02-14 16:24:10 · 6422 阅读 · 1 评论 -
解决JDBC连接mysql时,插入或修改数据在mysql上出现中文乱码的问题
当我们使用JDBC连接mysql数据库时,经常需要在Java端往mysql数据库中插入或修改数据,这时可能会出现这样的情况,如果插入或修改的数据中出现中文的话,我们查看数据库时会发现插入或修改的内容会变成乱码,如???,针对这种情况,我们需要对JDBC的配置文件进行相对应的修改,如下图所示,在jdbcUrl后面加上characterEncoding=utf8即可,这个时候重新测试插入或修改数据,即使数据含有中文,也不会出现乱码的情况了。...原创 2022-02-14 16:45:36 · 1605 阅读 · 1 评论 -
解决maven下载jar包速度慢的问题,将maven的下载源修改为阿里云源
由于maven中央仓库的服务器在国外,因此在国内使用maven下载jar包时可能会出现速度很慢的问题,对此,我们只需要将maven的下载源进行修改即可。首先,找到maven的配置文件settings.xml,该配置文件位于maven安装路径下的conf目录,例如我的配置文件的位置是D:\apache-maven-3.6.3\conf\settings.xml,如下图所示: 打开settings.xml文件,找到<mirrors>...原创 2022-02-14 21:15:27 · 4294 阅读 · 0 评论 -
java创建多线程的四种方式
java多线程的创建方式是面试经常会被问到的一个问题,因此在这里我对java创建多线程的四种方式做一个简单的归纳与总结,便于复习。一、继承Thread类创建多线程① 创建一个继承于Thread类的子类。② 重写Thread类中的run()方法,在run()方法中实现线程需要完成的功能。③ 创建Thread类的子类的对象,并调用这个对象的start()方法,调用start()后会自动启动当前线程,并调用当前线程的run()方法。...原创 2022-02-15 17:33:56 · 4665 阅读 · 0 评论 -
java设计模式:单例模式的两种实现,饿汉式和懒汉式
java单例模式是java设计模式中最为简单的设计模式之一,但是其在面试中出现的频率还是很高的,这里提供单例模式的两种实现方式,即饿汉式和懒汉式,便于复习。首先对单例模式做一个简单介绍,这种设计模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。饿汉式实现(不需要考虑线程安全问题):public class SingletonTest1 { public...原创 2022-02-15 19:04:20 · 387 阅读 · 0 评论 -
java安装教程以及环境变量的配置
一、下载jdk① 官网下载地址:https://developer.oracle.com/java/,找到自己需要的版本以及操作系统下载安装即可,作为初学者,jdk1.8的版本以及足够使用了。② 如果从官网下载是需要注册oracle的账号的,如果觉得麻烦的话,本人已经在网盘上传了下载好的jdk1.8安装包,需要的可以自取,网盘地址:https://pan.baidu.com/s/1MBXQLVgRCSmqL9uZz8HRwg提取码:zxhz二、安装jdkjdk的安装过程属于傻瓜式.原创 2022-02-16 19:40:55 · 2696 阅读 · 0 评论 -
java基础:==运算符和equals( )方法的区别
关于==运算符和equals()方法的区别,是java基础中一个很重要、也是面试中很常见的一个问题,本文将对它们的区别进行概括和总结,便于复习。一、== 运算符① 如果比较的是基本数据类型变量,那么比较两个变量保存的数据是否相等。(数据类型不一定要相同)② 如果比较的是引用数据类型变量,那么比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体。二、 equals()方法① equals()方法是定义在根父类Object类中的一个方法,只适用于比较引用数据类型。② Obj原创 2022-02-17 13:23:19 · 473 阅读 · 0 评论 -
java基础:String、StringBuilder、StringBuffer的区别
在面试中,String、StringBuilder、StringBuffer的区别是一个经常出现的考点,但其实这也是一个很基础、较为简单的问题,这里对三者的区别做一个简单总结,便于复习。一、执行效率执行效率从高到低依次是:StringBuilder > StringBuffer > String二、底层原理① 底层存储: String、StringBuilder、StringBuffer的底层都是用char[]存储的,其中StringBuilder、Str...原创 2022-02-17 14:08:30 · 370 阅读 · 0 评论 -
java集合:HashMap的底层实现原理
HashMap的底层实现原理是面试中出现频率非常高的一道面试题,本文将对HashMap的底层实现原理做一个简要的概况和总结,便于复习。一、对于Map集合存储结构的理解首先介绍以HashMap为典型代表的Map集合的存储结构① Map中的key:无序的、不可重复的,底层使用Set集合存储key;key所在的类要重写equals()和hashCode()② Map中的value:无序的、可重复的,底层使用Collection集合存储value;value所在的类要重写equa...原创 2022-02-18 18:21:22 · 20781 阅读 · 1 评论 -
IDEA中如何使用自定义的模板来新建文件
当我们使用IDEA进行开发时,有时候希望使用我们自定义的模板来新建文件(如HTML文件、JSP文件、XML文件等),提高我们的开发效率,本文就将介绍如何在IDEA中自定义新建文件的模板。以IntelliJ IDEA 2020.1版本为例进行说明,点击左上角的File -> Settings,进入设置界面后,找到Editor -> File and Code Templates,如下图所示:然后我们就可以在右侧选择自己需要自定义模板的文件类型,对文件的默认模板进行修改并...原创 2022-02-18 20:31:52 · 1760 阅读 · 0 评论 -
java基础:java多线程的通信问题(包括sleep( )和wait( )方法的异同)
java多线程的通信问题也是面试的高频考点之一,本文对java多线程涉及到的方法进行简单的说明和概括,包括对sleep( )和wait( )方法的比较,便于复习。一、线程通信涉及到的三个方法① wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。② notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个。③ notifyAll():一旦执行此方法,就会唤醒所有被wait的线程。二、对wa...原创 2022-02-23 21:03:39 · 230 阅读 · 0 评论 -
java基础: final、finally、finalize 有什么区别?
在java面试中,我们可能会被要求解释一些关键字、类、接口、方法的区别,本文归纳总结了final、finally、finalize的区别,便于复习。① final是一个关键字,可以修饰类、变量、方法,修饰类表示该类不能被继承,修饰方法表示该方 法不能被重写,修饰变量表示该变量是一个常量不能被重新赋值。 ② finally是一个关键字,一般出现在 try-catch代码块中,在处理异常的时候,通常我们将一定要执 行的代码放在 finally代码块中,表示不管是否出现异常,该...原创 2022-02-26 20:17:58 · 530 阅读 · 0 评论