当前位置: 首页 > news >正文

面试题30天打卡-day17

1、什么是内部类? 内部类的分类有哪些 ?内部类的优点 ,内部类有哪些应用场景?

内部类:在一个类中创建一个新的类

内部类主要分为以下4种:成员内部类、局部内部类、静态内部类、匿名内部类。

  1. 成员内部类
    • 可以无条件的访问外部的所有成员属性和成员方法(包括private成员和静态成员)
    • 如果要访问外部类的同名成员,通过以下的形式进行访问
      1. 外部类.this.成员变量
      2. 外部类.this成员方法
    • 在外部类中如果要访问内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问。
    • 创建成员内部类,需要先创建一个外部类的对象
      1. Outter outter = new Outter(); Outter.Inner inner = outter.new Inner() // 通过Outter创建
      2. Outter.Inner inner = outter.getInnerInstance()
    • 内部类可以拥有private 访问权限、protected 访问权限、public访问权限及包访问权限
    • 成员内部类中不能存在任何static的变量和方法,但是可以自定义常量
  2. 局部内部类
    • 局部内部类就行方式里面的一个局部变量一样,是不能使用public、protected、private以及static修饰符修饰的
  3. 静态内部类
    • 静态内部类是不需要依赖于外部类的,这点和类的静态成员属性类似,并且它不能使用外部类的非static成员变量和方法
  4. 匿名内部类
    • 一般使用内部类的方法来编写事件监听代码
    • 匿名内部类也是不能访问修饰符和static修饰符的成员变量
    • 匿名内部类是唯一一种没有构造器的类

内部类的优点

  1. 成员内部类可以访问外部类的所有属性和方法
  2. 使代码简洁、提高代码的可读性,便于维护代码、避免线程阻塞和资源浪费
  3. 解决了Java中单一继承的缺点
  4. 可以隐藏实现细节
  5. 内部类使代码更加灵活和富有扩展性

内部类的使用场景

  1. 需要实现多继承

  2. 当某个类除了他的外部类,不想被其他的类公开使用

  3. 实现接口和继承类:内部类可以实现接口和继承类,从而扩展类的功能和特性。当需要为一个类实现多个接口或继承多个类时,内部类提供了一种非常灵活和方便的方式。

  4. 实现回调函数:内部类可以被用于实现回调函数,当某个类需要在异步执行完毕后通知调用者时,可以定义一个内部类作为回调函数,从而实现异步编程模型。

2、Spring 如何处理线程并发问题,ThreadLocal 你了解过吗?

Spring 框架提供了多种方式来处理线程并发问题,其中比较常用的有以下几种:

  1. Synchronized 关键字

Java 中的 synchronized 关键字可以保证同一时刻只有一个线程执行临界区代码,从而避免了线程安全问题。在 Spring 中,可以使用 synchronized 关键字来保护共享资源,避免多个线程同时访问。但是存在线程死锁问题。

  1. ReentrantLock 类

ReentrantLock 类是 Java 中的一个锁对象,可以用于保护共享资源,避免多个线程同时访问。与 synchronized 关键字相比,ReentrantLock 类提供了更加灵活和精细的锁定机制,可以实现可重入锁和公平锁等多种功能。

  1. ThreadLocal 类

ThreadLocal 类是 Java 中的一个线程本地变量,可以为每个线程提供独立的变量副本,从而避免了线程安全问题。在 Spring 中,可以使用 ThreadLocal 类来处理线程安全问题,将共享变量转化为线程本地变量,从而避免了多个线程同时访问共享变量。

ThreadLocal 类的原理是,每个线程都有一个独立的 ThreadLocalMap 对象,用于存储线程本地变量。当线程第一次访问 ThreadLocal 对象时,会在 ThreadLocalMap 中创建一个新的 Entry 对象,并将 ThreadLocal 对象作为键,变量副本作为值。随后,线程可以通过 ThreadLocal 对象获取变量副本,每个线程都有自己独立的变量副本,互相之间不会产生干扰。

ThreadLocal 的使用场景包括:

  • 线程池中的共享变量
  • Web 应用程序中的用户上下文信息
  • 事务管理中的数据库连接
  • 框架中的上下文信息

需要注意的是,在使用 ThreadLocal 类时,需要注意内存泄漏问题,因为 ThreadLocalMap 中存储的变量副本是与线程绑定的,如果线程不被销毁,则对应的变量副本也不会被回收,从而可能导致内存泄漏问题。因此,在使用 ThreadLocal 类时,应该注意适时地清理变量副本,避免内存泄漏问题。

相关文章:

面试题30天打卡-day17

1、什么是内部类? 内部类的分类有哪些 ?内部类的优点 ,内部类有哪些应用场景? 内部类:在一个类中创建一个新的类 内部类主要分为以下4种:成员内部类、局部内部类、静态内部类、匿名内部类。 成员内部类 …...

对标世界一流|弹性应对“供应链不确定性常态化” ——快消与重资产行业的经验互鉴

1963年,气象学家洛伦兹提出的“蝴蝶效应”表示:“一只蝴蝶在巴西扇动翅膀,有可能会在美国德克萨斯州引起一场龙卷风”。本文希望通过提供快消行业的先进实践,帮助重资产企业从“蝴蝶扇动翅膀”之前就开始行动,避免“龙…...

【MPC|云储能】基于模型预测控制(MPC)的微电网调度优化的研究(matlab代码)

目录 1 主要内容 2 程序难点及问题说明 3 部分程序 4 下载链接 1 主要内容 该程序分为两部分,日前优化部分——该程序首先根据《电力系统云储能研究框架与基础模型》上面方法,根据每个居民的实际需要得到响应储能充放电功率,优化得到整体…...

796. 子矩阵的和(C++和Python3)——2023.5.6打卡

文章目录 QuestionIdeasCode Question 输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2 ,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数…...

docker打包部署spring boot应用(mysql+jar+Nginx)

文章目录 一、基本准备二、mysql部署二、jar部署三、Nginx部署 一、基本准备 小唐拿的就是之前放置在我们服务器上的应用进行部署,主要就是mysql和jar还有Vue的部署。 目前已经有的是jar、已经打包好的vue 项目参考:小破站数据大屏可视化(…...

Golang-常见数据结构Slice

Slice slice 翻译成中文就是切片,它和数组(array)很类似,可以用下标的方式进行访问,如果越界,就会产生 panic。但是它比数组更灵活,可以自动地进行扩容。 了解 slice 的本质, 最简单的方法就是…...

操作系统——设备管理

0.关注博主有更多知识 操作系统入门知识合集 目录 1.设备管理概念 2.SPOOLing技术 1.设备管理概念 在计算中,除CPU、内存以外的所有设备统称为外设,即外部设备,例如鼠标、键盘、打印机、摄像头、磁盘、硬盘......那么这些只需要连接到计…...

图片分类:精细化分类,(Fine-Grained Categorization) 基于人的行为的精细化分类

文字大纲 简介数据集常用数据集方法1 : 强监督方法2 : 弱监督传统 ResNet EfficientNet 等Two Level Attention Model双线性网络 Bilinear CNN model参考文献和学习路径简介 细粒度图像识别 (fine-grained image recognition),即 精细化分类。 细粒度图像分类(Fine-Graine…...

Matlab2012a的图像处理工具箱的imshow函数

在处理图片文件时,除了使用matlab自带的image函数,还可以考虑用matlab的图像处理工具箱。这个工具箱提供了imshow和imtool两个函数,可实现图片的显示。 这两个函数都支持Handle Graphics体系结构,它们可创建图像对象,…...

Linux_红帽8学习笔记分享_10(SELinux管理与防火墙)

Linux_红帽8学习笔记分享_10(SELinux管理与防火墙) 文章目录 Linux_红帽8学习笔记分享_10(**SELinux管理与防火墙**)1.Linux系统的安全机制1.1 Filesystem1.2 Service1.3 Firewall1.4 SELinux 2.SElinux理论概述3.SElinux的配置文件3.1 SELINUX参数3.2 SELINUXTYPE参数 4.查看和…...

【资料分享】

文章目录 前言《408统考,真题&解析(2009-2021)》《Android 移动应用基础教程(Android Studio)(第2版)》黑马程序员 源代码《Hackers & Painters》--Paul Graham《数字电路与逻辑设计(第3版&#xf…...

NewBing 还无法访问的几个问题

大部分的AI自媒体都在说,Bing new已经向全世界开放了,我也凑一下这个热闹,用Edge浏览器打开,访问https://www.bing.com/new?ccus 想体验一下Bing new的效果,结果如下: 相信很多人都碰到了这个问题 此体验…...

将 Segment Anything 扩展到医学图像领域

文章目录 前言技术交流SAM 拆解分析从医学角度理解 SAM 的效用MedSAM实验总结 前言 SAM 是一种在自然图像分割方面取得成功的模型,但在医学图像分割方面表现不佳。MedSAM 首次尝试将 SAM 的成功扩展到医学图像,并成为用于分割各种医学图像的通用工具。为…...

毕业5年,技术越来越好,混的却越来越差...

别人都是越来越好,而我是越来越差! 17年,从一个普通的本科毕业,那个时候的我,很迷茫,简历上的求职岗位都不知道写什么,因为家里是农村的,朴实的父母也帮不上什么忙,关于…...

C#实现把txt文本数据快速读取到excel中

主要介绍了C#实现把txt文本数据快速读取到excel中,本文直接给出示例代码,需要的朋友可以参考下 今天预实现一功能,将txt中的数据转到excel表中,做为matlab的数据源。搜集一些c#操作excel的程序。步骤如下: 下载一个Microsoft.Office.Interop.Excel.dll 在项目中引用。 编…...

Office转换需要用到的SDK(建议)

PDF相关SDK1. PDFBox:一个基于Java的开源库,可以读取、创建和操作PDF文件。2. iText:一个用于Java和.NET的开源库,可以创建、编辑和操作PDF文件。3. MuPDF:一个轻量级的开源PDF阅读器和渲染器,可用于创建和…...

python语法入门到面向过程编程(二)

类型总结 一:整形基本使用(int) 1 int用途:年龄 号码 等级… 2 定义方式 age10 ageint(10) xint(‘1111’) int只能将纯数字的字符串转成十进制的整型 print(type(x)) 3 整形常用操作内置的方法 算数运算(、—、*、/&#xff0…...

Java常用类

基本数据类型包装类 Java是一种纯面向对象语言,但是java中有8种基本数据类型,破坏了java为纯面向对象的特征。为了承诺在java中一切皆对象,java又给每种基本数据类型分别匹配了一个类,这个类我们称之为包装类/封装类。每个基本数据…...

4.30下周美联储携非农来袭黄金多空该如何布局?

近期有哪些消息面影响黄金走势?下周黄金多空该如何研判? ​黄金消息面解析:周五(4月28日)当周金价维持震荡交投,金价基本持稳于2000美元下方。支撑和打压金价的因素参半。经济衰退的担忧,以及避险情绪支持金价&#x…...

利用python查找指定目录下大于300M的文件

直接上代码,欢迎小伙伴们交流 import os def getBigFile(path, filesize): # 遍历指定目录及其子目录 for dirpath, dirnames, filenames in os.walk(path): for filename in filenames: target_file os.path.join(dirpath, filename…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

无法与IP建立连接,未能下载VSCode服务器

如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

ESP32读取DHT11温湿度数据

芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...