当前位置: 首页 > 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…...

在rocky linux 9.5上在线安装 docker

前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...