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

Java多线程的面试面试题及答案解析

  1. 什么是进程?什么是线程?有什么区别?

    • 进程是系统资源分配的基本单位,拥有独立的地址空间。线程是 CPU 调度和分派的基本单位,是比进程更小的独立执行的单位,共享所在进程的内存空间等资源。一个进程可以包含多个线程。
  2. 说说线程的不同状态?

    • NEW:新建状态,线程被创建但尚未启动。
    • RUNNABLE:就绪状态,等待 CPU 调度执行。
    • BLOCKED:阻塞状态,如等待 I/O 操作、获取锁等。
    • WAITING:等待状态,如调用 Object.wait() 方法后进入该状态,等待其他线程通知或中断。
    • TIMED_WAITING:超时等待状态,在指定时间内等待其他线程执行特定操作,如调用带有超时参数的 Object.wait(long timeout) 方法。
    • TERMINATED:终止状态,线程执行完毕。
  3. 并发与并行、串行的区别?

    • 并发是指多个任务同时进行,但不一定同时完成;并行是指多个任务同时进行且同时完成;串行则是指任务依次顺序执行。
  4. synchronized 关键字的作用?

    • 实现对共享资源的互斥访问,保证同一时刻只有一个线程可以访问被 synchronized 修饰的方法或代码块,避免数据不一致等问题。它是基于对象头和 Monitor 机制实现的。
  5. synchronized 关键字的原理是什么?

    • 基于 Java 对象头和 Monitor 机制。每个对象都有对象头信息,其中包含锁状态标记位等信息。当线程访问 synchronized 方法或代码块时,会根据对象头信息判断是否需要获取锁,若需要则通过 CAS 等方式修改锁状态标记位,将锁与当前线程关联,执行完同步代码后释放锁。
  6. synchronized 关键字是可重入锁吗?为什么?

    • 是可重入锁。因为同一个线程可以多次获取同一个对象的锁而不会被阻塞,这是为了避免自己锁死自己,提高程序的灵活性和效率。
  7. 多线程编程中,什么是上下文切换?

    • 多线程编程中一般线程的个数都大于 CPU 核心的个数,而一个 CPU 核心在任意时刻只能被一个线程使用,为了让这些线程都能得到有效执行,CPU 采取的策略是为每个线程分配时间片并轮转的形式。当一个线程的时间片用完的时候就会重新处于就绪状态让给其他线程使用,这个过程就属于一次上下文切换。概括来说就是:当前任务在执行完 CPU 时间片切换到另一个任务之前会先保存自己的状态,以便下次再切换回这个任务时,可以再加载这个任务的状态。任务从保存到再加载的过程就是一次上下文切换。上下文切换通常是计算密集型的。也就是说,它需要相当可观的处理器时间,在每秒几十上百次的切换中,每次切换都需要纳秒量级的时间。所以,上下文切换对系统来说意味着消耗大量的 CPU 时间,事实上,可能是操作系统中时间消耗最大的操作。
  8. 创建线程的方式有几种?

    • 继承 Thread 类:定义一个继承自 Thread 类的子类,重写 run() 方法,在 run() 方法中编写线程要执行的代码,然后创建该子类的实例并调用 start() 方法启动线程。
    • 实现 Runnable 接口:定义一个实现 Runnable 接口的类,实现 run() 方法,在 run() 方法中编写线程要执行的代码,然后创建该类的实例,将其作为参数传递给 Thread 类的构造函数来创建线程对象,最后调用线程对象的 start() 方法启动线程。
    • 使用 Callable 和 Future:定义一个实现 Callable 接口的类,实现 call() 方法,在 call() 方法中编写线程要执行的代码并返回一个结果,然后创建该类的实例,将其作为参数传递给 Executors 类的静态方法(如 Executors.submit(Callable task))来提交任务并获得一个 Future 对象,通过 Future 对象可以获取任务的执行结果。
  9. 线程池的核心构造参数有哪些?

    • corePoolSize:核心线程数,即线程池中始终保持活跃的线程数量。
    • maximumPoolSize:最大线程数,即线程池中允许的最大线程数量。
    • keepAliveTime:非核心线程闲置的最大时间,超过这个时间非核心线程将被终止。
    • unit:时间单位,用于指定 keepAliveTime 的单位。
  10. 什么是死锁?如何避免和解决死锁?

    • 死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,如果没有外力作用,它们都将无法推进下去。
    • 避免死锁的方法包括:避免一个线程同时获得多个锁;避免一个线程在持有一个锁的同时申请其他锁;给锁的获取设置一定的顺序等。
    • 解决死锁的方法有:使用 tryLock() 方法尝试获取锁,若获取失败则不再继续等待;使用 LockSupport 类的 park() 和 unpark() 方法来控制线程的挂起和恢复执行;采用死锁检测算法,定期检查系统中是否存在死锁,若存在则采取相应措施解除死锁。
  11. 并发编程三要素是什么?

    • 原子性:指一个操作或者一组操作要么全部执行成功,要么全部执行失败,不会被其他线程干扰而导致中间状态的出现。
    • 可见性:指一个线程对共享变量的修改能够及时被其他线程看到,以保证数据的一致性。
    • 有序性:指程序执行的结果必须按照代码的顺序执行,不能出现乱序的情况。
  12. 什么是并发容器?常见的并发容器有哪些?

    • 并发容器是指专门设计用于多线程环境下的线程安全的集合类。常见的并发容器有 ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentLinkedQueue 等。
  13. Java 中的并发工具类有哪些?

    • CountDownLatch:用于让一个或多个线程等待其他线程完成操作后再继续执行,常用于实现线程间的同步。
    • CyclicBarrier:类似于 CountDownLatch,但它可以重复使用,允许一组线程互相等待到达某个公共屏障点后再继续执行。
    • Semaphore:信号量,用于控制对共享资源的访问数量,可以实现资源的限流。
    • Exchanger:用于在两个线程之间交换数据。
    • ReadWriteLock:读写锁,允许多个读线程同时访问资源,但写线程的访问是独占的。
  14. 什么是线程的中断机制?如何使用中断机制来控制线程的执行?

    • 线程的中断机制是指在线程执行过程中,可以通过其他线程发送中断请求来通知该线程停止执行或做出相应的处理。在 Java 中,可以通过调用线程的 interrupt() 方法来发送中断请求。线程在执行过程中可以通过响应中断来处理中断请求,例如通过检查线程的中断状态(使用 Thread.interrupted() 方法)来决定是否退出循环或执行特定的逻辑。
  15. 什么是线程优先级?如何设置和获取线程优先级?

    • 线程优先级是指线程在竞争 CPU 资源时的优先程度。在 Java 中,可以使用 Thread 类的 setPriority(int newPriority) 方法来设置线程的优先级,使用 getPriority() 方法来获取线程的优先级。线程优先级分为 10 个级别,从 Thread.MIN_PRIORITY(1)到 Thread.MAX_PRIORITY(10),默认优先级为 Thread.NORM_PRIORITY(5)。
  16. 什么是守护线程?守护线程与用户线程有什么区别?

    • 守护线程是为其他线程提供服务的线程,通常在后台默默地执行一些系统任务,比如垃圾回收线程等。守护线程的特点是,当所有的用户线程都结束时,守护线程也会自动结束,而不管守护线程本身的执行状态如何。用户线程是由用户程序主动创建和启动的线程,用于执行具体的业务逻辑。
  17. 什么是线程安全问题?如何保证线程安全?

    • 线程安全问题是指在多线程环境下,由于多个线程同时访问和修改共享数据而导致的数据不一致、竞态条件等问题。为了保证线程安全,可以采取以下措施:使用同步机制(如 synchronized 关键字、Lock 接口等)来控制对共享资源的访问;使用线程安全的类(如 ConcurrentHashMap、AtomicInteger 等);避免共享可变数据,尽量使用不可变对象;对临界区代码进行合理的设计和优化,减少线程间的竞争。
  18. 什么是乐观锁和悲观锁?它们有什么区别?

    • 乐观锁是一种假设操作总是能够成功的锁机制,它不会阻塞其他线程对共享资源的访问,而是在更新数据时通过版本号或其他验证方式来检查是否有其他线程已经修改了数据,如果有则放弃本次操作并重试。悲观锁则是假设操作可能会失败,因此在访问共享资源时直接阻塞其他线程,直到当前线程完成操作为止。
  19. 什么是类加载器?类加载器的工作原理是什么?

    • 类加载器负责将类的字节码文件加载到 JVM 中,并将其转换为 Class 对象,以便在程序中创建该类的实例和调用其方法。类加载器的工作原理主要包括以下几个步骤:首先,根据类的全限定名找到对应的字节码文件;然后,将字节码文件读取到内存中;接着,对字节码进行验证、准备和解析等操作,生成 Class 对象;最后,将 Class 对象存储到方法区中,以便后续使用。
  20. 什么是双亲委派模型?为什么要使用双亲委派模型?

    • 双亲委派模型是指当一个类加载器收到一个类加载请求时,它首先会将请求委托给其父类加载器去处理,直到最顶层的类加载器(通常是引导类加载器)无法处理该请求时,才会由当前的类加载器自己去加载该类。使用双亲委派模型的好处是可以保证类的唯一性和安全性,防止不同的类加载器加载相同的类导致冲突和安全问题。
  21. 什么是垃圾回收(GC)?垃圾回收的机制是什么?

    • 垃圾回收(GC)是 Java 虚拟机自动管理内存的一种机制,它会定期扫描内存中不再使用的对象并将其释放,以回收内存空间,防止内存泄漏。垃圾回收的机制主要包括标记 - 清除、复制、标记 - 整理等算法。标记 - 清除算法会先标记出所有可达的对象,然后将未被标记的对象视为垃圾进行回收;复制算法则会将内存分为两个区域,将存活的对象复制到另一个区域中,然后清空原区域;标记 - 整理算法是在标记 - 清除算法的基础上,对存活的对象进行整理,使其在内存中连续存储。
  22. Java 中的内存模型是怎样的?

    • Java 内存模型(JMM)将内存分为堆内存、方法区、栈内存和本地方法栈等几个区域。堆内存用于存储对象实例;方法区用于存储类的元数据信息、静态变量和常量池等;栈内存用于存储方法的局部变量和参数;本地方法栈则用于存储 native 方法的局部变量和参数。
  23. 什么是逃逸分析?逃逸分析的作用是什么?

    • 逃逸分析是指编译器对变量的作用域和使用情况进行分析,以确定该变量是否会被其他线程访问或是否可以被优化为栈上分配。逃逸分析的作用主要包括提高性能和优化内存使用。如果一个变量不会逃逸出方法或线程,那么编译器可以将其优化为栈上分配,从而减少了堆内存的使用和垃圾回收的压力。
  24. 什么是CAS?CAS 有什么作用?

    • CAS(Compare And Swap)是一种无锁的同步机制,它通过比较和交换操作来实现对共享资源的原子性更新。CAS 的作用是避免了使用传统的互斥锁带来的性能开销和线程阻塞问题,提高了并发性能。在 Java 中,CAS 操作通常用于实现原子变量的更新和同步容器的实现。
  25. 什么是 AQS?AQS 的作用是什么?

    • AQS(AbstractQueuedSynchronizer)是一个用于构建同步组件的框架,它提供了队列、锁、条件变量等基础功能,许多同步类(如 ReentrantLock、CountDownLatch、Semaphore 等)都是基于 AQS 实现的。AQS 的作用是简化了同步组件的开发难度,提供了一种统一的同步解决方案。
  26. 什么是并发编程三原则?

    • SA(Single Responsibility):单一职责原则,即一个类或方法应该只有一个引起变化的原因。
    • OCP(Open/Closed):开闭原则,即软件实体应该对扩展开放,对修改关闭。
    • LSP(Liskov Substitution):里氏替换原则,即子类对象能够替换父类对象而不影响程序的正确性。
  27. Java 中的并发编程模型有哪些?

    • Java 中的并发编程模型主要包括:基于锁的编程模型(如使用 synchronized 关键字和 Lock 接口)、基于并发工具类的编程模型(如使用 CountDownLatch、CyclicBarrier、Semaphore 等)、基于并发容器的编程模型(如使用 ConcurrentHashMap、CopyOnWriteArrayList 等)以及基于 Actor 模型的编程模型(Java 本身没有直接支持 Actor 模型,但可以通过第三方库如 Akka 来实现)。
  28. 什么是线程的并发与并行?

    • 并发是指多个任务同时进行,但不一定同时完成;并行是指多个任务同时进行且同时完成。在单核 CPU 上,真正的并行是不可能的,只能通过并发来模拟并行的效果;而在多核 CPU 上,可以实现真正的并行执行。
  29. Java 中的锁机制有哪些?它们之间有什么区别?

    • Java 中的锁机制主要包括:公平锁、类锁、对象锁和可重入锁、死锁、类锁、对象锁和可重入锁、偏向锁、轻量级锁和重量级锁等。公平锁是指按照线程请求锁的顺序来分配锁;类锁是锁定当前类的所有对象实例;对象锁是锁定特定的对象实例;可重入锁是指同一个线程可以多次获取同一个锁而不会被阻塞;死锁是指两个或两个以上的线程因争夺资源而造成的一种互相等待的现象;类锁、对象锁和可重入锁是三种基本的锁类型;偏向锁是为了减少无竞争情况下的同步开销而引入的一种优化机制;轻量级锁是在对象头中记录锁的信息,是一种开销较小的锁实现;重量级锁则是在竞争激烈的情况下使用的较为重量级的锁实现。
  30. 什么是线程的生命周期?线程的不同状态之间是如何转换的?

    • 线程的生命周期包括创建、就绪、运行、阻塞、死亡等状态。创建状态是指线程被创建但尚未启动;就绪状态是指线程已经具备运行条件,等待 CPU 调度执行;运行状态是指线程正在 CPU 上执行;阻塞状态是指线程因为某种原因(如等待 I/O 操作、获取锁等)而不能继续执行;死亡状态是指线程执行完毕或因异常退出。

相关文章:

Java多线程的面试面试题及答案解析

什么是进程?什么是线程?有什么区别? 进程是系统资源分配的基本单位,拥有独立的地址空间。线程是 CPU 调度和分派的基本单位,是比进程更小的独立执行的单位,共享所在进程的内存空间等资源。一个进程可以包含…...

python flask中使用or查询和and查询,还有同时使用or、and的情况

在 Flask 中处理数据库查询时,通常会结合使用 ORM 工具,例如 SQLAlchemy。以下是 or 查询、and 查询以及两者同时使用的示例。 文章目录 基础准备1. 使用 or_ 查询2. 使用 and_ 查询3. 同时使用 or_ 和 and_4. 更加复杂的嵌套查询 基础准备 假设有一个…...

C# 解析视频流播放全解析

在多媒体技术日益发达的今天,视频流播放已经成为众多应用中不可或缺的功能。对于开发者而言,掌握如何使用编程语言来解析和播放视频流是一项重要的技能。本文将深入探讨如何使用 C# 来实现视频流的解析与播放。 一、视频流播放原理简介 视频流是将视频…...

关于为什么java中nextInt()和nextLine()不能混用 | nextInt()和nextInt()之类的可以一起用

键盘录入的区别: 第一套体系:遇到空格、制表符、回车都结束,并且都不接收 nextInt()、nextDouble()、next() 遇到空格、制表符、回车就结束,只接收其之前的数据,空格以及空格之后的数据都在缓冲区内,如果…...

计算机图形学:实验一 OpenGL基本绘制

1.OpenGL的环境配置: 集成开发环境Visual Studio Community 2019的安装: 在Windows一栏选择使用C的桌面开发;再转到“单个组件”界面,在“编译器、生成工具和运行时”一栏选择用于“Windows的C CMake工具”;然后转到…...

Node.js 到底是什么

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者使用 JavaScript 编写服务器端代码。 一、主要特点 1. 事件驱动和非阻塞 I/O 模型 Node.js 采用事件驱动架构,通过回调函数处理 I/O 操作,这使得它在处理大量并发请…...

2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题5)

目录 任务描述 任务清单 (一)基础配置 (二)有线网络配置 (三)无线网络配置 (四)出口网络配置 附录1:拓扑图 附录2:地址规划表 任务描述 随着业务的发展,现在要对海琼银行进行全网改造,为其它区域的网络提供高效的保障服务。同时,海琼银行还针对各个分支行、网点的…...

智慧脚下生根,智能井盖监测终端引领城市安全新革命

在繁忙的都市生活中,我们往往只关注地面的繁华与喧嚣,却忽略了隐藏在地面之下的基础设施——井盖。这些看似不起眼的井盖,实则承担着排水、通讯、电力等重要功能,是城市安全运转的重要一环。然而,传统的井盖管理面临着…...

ES6 简单练习笔记--变量申明

一、ES5 变量定义 1.在全局作用域中 this 其实就是window对象 <script>console.log(window this) </script>输出结果: true 2.在全局作用域中用var定义一个变量其实就相当于在window上定义了一个属性 例如: var name "孙悟空" 其实就相当于执行了 win…...

MsfVenom木马制作及使用

msfvenom基本用法 1、功能介绍 msfvenom的功能&#xff1a;常用于生成木马&#xff0c;在目标机器执行&#xff0c;在本地机器kali中上线&#xff0c;与反弹shell类似。MsfVenom可以生成两种类型的攻击载荷&#xff1a; &#xff08;1&#xff09;Payload&#xff1a;Payloa…...

ChromeOS 132 版本更新

ChromeOS 132 版本更新 1. 企业定制化 Chrome Web Store 管理员现在可以使用新设置定制 Chrome Web Store 以适应他们管理的用户&#xff0c;包括以下功能&#xff1a; 添加公司标志添加首页横幅和自定义公告策划扩展集合实施基于类别的控制 这些设置可以通过管理员控制台进…...

MySQL(表空间)

​开始前先打开此图配合食用 MySQL表空间| ProcessOn免费在线作图,在线流程图,在线思维导图 InnoDB 空间文件中的页面管理 后面也会持续更新&#xff0c;学到新东西会在其中补充。 建议按顺序食用&#xff0c;欢迎批评或者交流&#xff01; 缺什么东西欢迎评论&#xff01;我都…...

智能化加速标准和协议的更新并推动验证IP(VIP)在芯片设计中的更广泛应用

作者&#xff1a;Karthik Gopal, SmartDV Technologies亚洲区总经理 智权半导体科技&#xff08;厦门&#xff09;有限公司总经理 随着AI技术向边缘和端侧设备广泛渗透&#xff0c;芯片设计师不仅需要考虑在其设计中引入加速器&#xff0c;也在考虑采用速度更快和带宽更高的总…...

Chrome远程桌面无法连接怎么解决?

Chrome远程桌面连接已停止工作 Chrome远程桌面是一款极为便捷的浏览器插件&#xff0c;能够帮助用户将自己的计算机连接到其他设备&#xff0c;无论是手机、平板电脑还是其他电脑。然而&#xff0c;在实际使用中&#xff0c;许多用户可能会面临各种各样的问题&#xff0c;比如…...

springcloud alibaba 五大组件

Spring Cloud Alibaba是Spring Cloud的一个子项目&#xff0c;致力于为构建分布式应用提供一站式解决方案。它基于阿里巴巴的底层Java开源框架&#xff0c;主要包含以下五大核心组件&#xff1a; 1. Nacos&#xff08;服务注册与配置中心&#xff09; 功能&#xff1a;Nacos提…...

es 3期 第25节-运用Rollup减少数据存储

#### 1.Elasticsearch是数据库&#xff0c;不是普通的Java应用程序&#xff0c;传统数据库需要的硬件资源同样需要&#xff0c;提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库&#xff0c;不是关系型数据库&#xff0c;不具备严格的ACID事务特性&#xff…...

理解深度学习pytorch框架中的线性层

文章目录 1. 数学角度&#xff1a; y W x b \displaystyle y W\,x b yWxb示例 2. 编程实现角度&#xff1a; y x W T b \displaystyle y x\,W^T b yxWTb3. 常见错误与易混点解析4. 小结参考链接 在神经网络或机器学习的线性层&#xff08;Linear Layer / Fully Connect…...

“上门按摩” 小程序开发项目:基于 SOP 的全流程管理

在竞争激烈的生活服务市场,“上门按摩” 服务需求日益增长。为满足这一需求,我们启动了 O2O 模式的 “上门按摩” 小程序开发项目,该项目涵盖客户端、系统管理端、技师端。以下将通过各类 SOP 对项目进行全面管理,确保项目顺利推进。 一、项目启动 SOP:5W2H 分析法 What(…...

【xcode 16.2】升级xcode后mac端flutter版的sentry报错

sentry_flutter 7.11.0 报错 3 errors in SentryCrashMonitor_CPPException with the errors No type named terminate_handler in namespace std (line 60) and No member named set_terminate in namespace std 替换sentry_flutter版本为&#xff1a; 8.3.0 从而保证oc的…...

Unity自学之旅05

Unity自学之旅05 Unity学习之旅⑤&#x1f4dd; AI基础与敌人行为&#x1f94a; AI导航理论知识&#xff08;基础&#xff09;开始实践 &#x1f383; 敌人游戏机制追踪玩家攻击玩家子弹碰撞完善游戏失败条件 &#x1f917; 总结归纳 Unity学习之旅⑤ &#x1f4dd; AI基础与敌…...

LINUX下设置分离状态(Detached State)和未设置分离状态的主要区别在于线程资源的管理方式和线程的生命周期。以下是两种状态的对比:

1. 设置分离状态&#xff08;Detached State&#xff09; 资源管理&#xff1a; 线程终止时&#xff0c;系统会自动释放与线程相关的所有资源&#xff08;如线程栈、线程控制块&#xff09;。不需要其他线程显式回收&#xff08;pthread_join&#xff09;。 线程生命周期&…...

软考信安26~大数据安全需求分析与安全保护工程

1、大数据安全威胁与需求分析 1.1、大数据相关概念发展 大数据是指非传统的数据处理工具的数据集,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低等特征。 大数据的种类和来源非常多,包括结构化、半结构化和非结构化数据。 1.2、大数据安全威胁分析 (…...

Alibaba Spring Cloud 一 核心组件、特性

Alibaba Spring Cloud 是 Alibaba 基于 Spring Cloud 的分布式微服务解决方案&#xff0c;提供了一套高性能、高可靠的微服务开发和运维工具。它扩展了 Spring Cloud 的功能&#xff0c;并优化了许多在生产环境中的实践场景&#xff0c;例如服务发现、配置管理、熔断限流等。 …...

通过脚本申请免费SSL证书(泛解析SSL证书)

参考来源 1.https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E 2.https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode 3.https://github.com/acmesh-official/acme.sh/wiki/dnsapi 安装 acme.sh 配置账号 配置默认CA 安装依赖 # Cento…...

基于相机内参推导的透视投影矩阵

基于相机内参推导透视投影矩阵&#xff08;splatam&#xff09;&#xff1a; M c a m [ 2 ⋅ f x w 0.0 ( w − 2 ⋅ c x ) w 0.0 0.0 2 ⋅ f y h ( h − 2 ⋅ c y ) h 0.0 0 0 f a r n e a r n e a r − f a r 2 f a r ⋅ n e a r n e a r − f a r 0.0 0.0 − 1.0 0.0 ] M_…...

代码随想录算法训练营day34

代码随想录算法训练营 —day34 文章目录 代码随想录算法训练营前言一、62.不同路径动态规划动态规划空间优化 二、63. 不同路径 II动态规划动态规划优化空间版 三、343. 整数拆分动态规划贪心算法 96.不同的二叉搜索树总结 前言 今天是算法营的第34天&#xff0c;希望自己能够…...

Orgill EDI需求分析

Orgill 是一家位于美国的家族企业&#xff0c;主要为五金零售商、建材供应商及相关行业提供全面的分销服务和支持&#xff0c;覆盖范围遍及全球。 EDI需求分析 EDI全称Electronic Data Interchange&#xff0c;中文名称是电子数据交换&#xff0c;也被称为“无纸化贸易”。EDI…...

好用的js工具类

格式化相关 // 数字每三位增加一个逗号 function toThousands(num) {if (num) {return num.toString().replace(/\d/, function(n) {// 先提取整数部分return n.replace(/(\d)(?(\d{3})$)/g, function($1) {return $1 ,})})} else {return 0} }//输出10,000 toThousands(10…...

C++ —— 基于范围的 for 循环

C —— 基于范围的 for 循环 语法push_back() 与 emplace_back() 的区别**emplace_back()** 示例代码如下&#xff1a;**push_back()** 示例代码如下&#xff1a; 容器中的元素是结构体和类 语法 C11中引入了基于范围的for循环&#xff0c;语法如下&#xff1a; for (迭代的变…...

15-spring整合mybatis方式一

spring整合mybatis 方式一【重要】 步骤: 1.导入相关jar包 junit mybatis mysql数据库 spring相关的 aop织入 mybatis-spring 【new】 junit junit 4.12 mysql mysql-connector-java 8.0.23 org.mybatis mybatis 3.5.2 org.springframework spring-webmvc 5…...

数据结构:二叉树—面试题(一)

目录 1、相同的树 2、另一棵树的子树 3、翻转二叉树 4、平衡二叉树 5、对称二叉树 6、二叉树遍历 7、二叉树的分层遍历 1、相同的树 习题链接https://leetcode.cn/problems/same-tree/description/https://leetcode.cn/problems/same-tree/description/ 描述&#xff1a…...

GPU算力平台|在GPU算力平台部署可图大模型Kolors的应用实战教程

文章目录 一、GPU算力服务平台GPU算力服务平台的概述 二、平台账号注册流程可图大模型Kolors的应用实战教程可图大模型的介绍可图大模型的应用场景可图大模型Kolors的部署步骤 一、GPU算力服务平台 GPU算力服务平台的概述 蓝耘GPU算力平台专为高性能计算设计&#xff0c;广泛…...

Linux探秘坊-------4.进度条小程序

1.缓冲区 #include <stdio.h> int main() {printf("hello bite!");sleep(2);return 0; }执行此代码后&#xff0c;会 先停顿两秒&#xff0c;再打印出hello bite&#xff0c;但是明明打印在sleep前面&#xff0c;为什么会后打印呢&#xff1f; 因为&#xff…...

Ansys Motor-CAD:IPM 电机实验室 - 扭矩速度曲线

各位电动机迷们&#xff0c;大家好&#xff1a; 在本博客中&#xff0c;我讨论了如何使用 Ansys Motor-CAD 通过 LAB 模块获取扭矩速度曲线。使用每安培最大扭矩电机控制策略&#xff0c;并涵盖恒定扭矩区域和恒定功率、磁通减弱区域。分析了高转子速度如何影响功率输出。 模型…...

关于事件捕获和事件冒泡的理解

我一直对事件捕获和事件冒泡是挺困惑的&#xff0c;好像理解了&#xff0c;但又感觉哪里不对。这篇文章打算深入探讨一些细节性的问题&#xff0c;更好的理解事件捕获和事件冒泡。 当我们点击的时候&#xff0c;浏览器的默认行为是怎么样的&#xff1f; 搞清楚这个非常的重要…...

如何使用HASH创建低交互式蜜罐系统

关于HASH HASH是一个用于创建和启动低交互蜜罐的框架&#xff0c;可以帮助广大研究人员轻松创建HTTP无关的低交互式软件蜜罐。 HASH 的主要理念是易于配置&#xff0c;能够灵活地模拟在 HTTP/HTTPs 上运行的任何软件。尽可能减少占用空间&#xff0c;避免被检测为蜜罐。 功能…...

vue3+vite+ts安装wangeditor富文本编辑器

需求: 实现粘贴,上传图片时本地渲染但并不实现上传功能,工具栏移除不需要的工具 安装方法看官网 安装 | wangEditor 封装子组件 wangEditor.vue <template><div><div style"border: 1px solid #ccc; margin-top: 10px"><Toolbar:editor&qu…...

PostIn教程-安装配置

PostIn是一款国产开源免费的接口管理工具&#xff0c;包含项目管理、接口调试、接口文档设计、接口数据MOCK等模块&#xff0c;支持常见的HTTP协议、websocket协议等&#xff0c;支持免登陆本地接口调试&#xff0c;同时可以对项目进行灵活的成员权限、消息通知管理等。 1、服务…...

SpringBoot读取配置优先级顺序是什么?

Spring Boot外部化配置详解 目录 引言Spring Boot外部化配置概述配置加载优先级配置加载顺序详解实际案例总结 引言 Spring Boot因其“开箱即用”的特性&#xff0c;极大地简化了Java应用的开发和部署过程。它通过外部化配置机制&#xff0c;允许开发者根据不同的环境&#x…...

群晖docker获取私有化镜像http: server gave HTTP response to HTTPS client].

群晖docker获取私有化镜像提示http: server gave HTTP response to HTTPS clien 问题描述 层级时间用户事件Information2023/07/08 12:47:45cxlogeAdd image from xx.xx.31.240:1923/go-gitea/gitea:1.19.3Error2023/07/08 12:47:48cxlogeFailed to pull image [Get "http…...

MySQL8【学习笔记】

第一章前提须知 1.1 需要学什么 Dbeaver 的基本使用SQL 语句&#xff1a;最重要的就是查询&#xff08;在实战的时候&#xff0c;你会发现我们做的绝大部分工作就是 “查询”&#xff09;MySQL 存储过程&#xff08;利用数据库底层提供的语言&#xff0c;去进行业务逻辑的封装…...

汇编实验·子程序设计

一、实验目的: 1.掌握汇编中子程序编写方法 2.掌握程序传递参数的基本方法,返回值的方法。 3.掌握理解子程序(函数)调用的过程 二、实验内容 1.编写汇编语言子程序,实现C表达式SUM=X+Y的功能,具体要求: 1)函数的参数传递采用寄存器实现 2)函数的参数传递采用堆栈…...

EDI安全:2025年数据保护与隐私威胁应对策略

在数字化转型的浪潮中&#xff0c;电子数据交换&#xff08;EDI&#xff09;已成为企业间信息传递的核心基础设施。然而&#xff0c;随着数据规模的指数级增长和网络威胁的日益复杂化&#xff0c;EDI安全正面临前所未有的挑战。展望2025年&#xff0c;企业如何构建一套全面、高…...

Cloudpods是一个开源的Golang实现的云原生的融合多云/混合云的云平台,也就是一个“云上之云”。

Cloudpods是一个开源的Golang实现的云原生的融合多云/混合云的云平台&#xff0c;也就是一个“云上之云”。Cloudpods不仅可以管理本地的虚拟机和物理机资源&#xff0c;还可以管理多个云平台和云账号。Cloudpods隐藏了这些异构基础设施资源的数据模型和API的差异&#xff0c;对…...

C++小病毒-1.0勒索

内容供学习使用,不得转卖,代码复制后请1小时内删除,此代码会危害计算机安全,谨慎操作 在C20环境下,并在虚拟机里运行此代码! #include <iostream> #include <windows.h> #include <shellapi.h> #include <stdio.h> #include <fstream> #include…...

MySQL入门(数据库、数据表、数据、字段的操作以及查询相关sql语法)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

AIGC视频扩散模型新星:Video 版本的SD模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍慕尼黑大学携手 NVIDIA 等共同推出视频生成模型 Video LDMs。NVIDIA 在 AI 领域的卓越成就家喻户晓&#xff0c;而慕尼黑大学同样不容小觑&#xff0c;…...

08-ArcGIS For JavaScript-通过Mesh绘制几何体(Cylinder,Circle,Box,Pyramid)

目录 概述代码实现1、Mesh.createBox2、createPyramid3、Mesh.createSphere4、Mesh.createCylinder 完整代码 概述 对于三维场景而言&#xff0c;二位的点、线、面&#xff0c;三维的圆、立方体、圆柱等都是比较常见的三维对象&#xff0c;在ArcGIS For JavaScript中我们知道点…...

在 Go 语言中如何高效地处理集合

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…...

Python的进程和线程

ref 讲个故事先 这就像一个舞台&#xff08;CPU核心&#xff09;​&#xff0c; 要供多个剧组演出多个剧目&#xff08;进程&#xff09;​&#xff0c; 剧目中有多个各自独立的角色&#xff08;线程&#xff09;​&#xff0c;有跑龙套的&#xff0c;有主角&#xff0c;第一…...