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

Java 并发编程常见问题

1、线程状态它们之间是如何扭转的?

1、谈谈对于多线程的理解?

1、对于多核CPU,多线程可以提升CPU的利用率;

2、对于多IO操作的程序,多线程可以提升系统的整体性能及吞吐量;

3、使用多线程在一些场景下可以提升程序的处理效率;

2、哪些场景下使用多线程比较合适?为什么?

1、使用线程池,线程隔离,对服务做保护作用;

2、IO密集型程序(有较多线程是出于等待状态),多线程可以并发处理多个任务,提升效率;

3、批量任务处理,可以使用多线程提升速度;

4、使用多线程处理多个任务,可以让多个任务执行看起来是一起执行的(比如游系效果)-平均分配cpu资源,而不是存在明显的断层跟不连贯;

3、多线程并发安全怎么控制?

【加锁-确保并发情况下线程安全】

在多线程编程中,确保并发安全是非常重要的,避免数据竞争和其他线程间的冲突。以下是一些常见的方法和技术来控制多线程并发安全:

  1. 互斥锁(Mutex)和同步块

    • 使用互斥锁(Mutex)或者同步块(Synchronized Block)来保护共享资源。通过在访问共享资源的关键代码段周围放置锁来确保一次只有一个线程可以访问该资源。这样可以避免多个线程同时修改数据造成的问题。
  2. 原子操作

    • 对于一些基本的数据类型(如整数、布尔值),可以使用原子操作来确保操作的原子性。在Java中,可以使用 AtomicIntegerAtomicBoolean等类来实现原子操作,从而避免了使用锁时可能引入的性能开销。
  3. 线程安全的数据结构

    • 使用线程安全的数据结构,如 ConcurrentHashMapCopyOnWriteArrayList等,这些数据结构内部实现了加锁机制或者采用了其他的线程安全策略,能够在高并发场景下安全地操作数据。
  4. 使用并发工具类

    • Java提供了多种并发工具类,如 SemaphoreCountDownLatchCyclicBarrier等,它们能够帮助控制多线程间的协调和同步,确保线程安全性。
  5. 避免可变状态

    • 尽量减少共享状态的使用,特别是可变状态。如果某个数据可以设计为不可变对象,则避免多线程并发修改。不可变对象在多线程环境中通常是线程安全的。
  6. 使用线程安全的第三方库

    • 对于特定的需求,可以使用已经经过充分测试和验证的线程安全的第三方库,如并发集合、并发队列等。
  7. 合理的线程设计

    • 在设计多线程程序时,合理规划线程的职责和数据共享范围,避免过多的锁竞争和复杂的同步逻辑。
  8. 测试和调试

    • 对多线程程序进行充分的测试,包括并发测试和性能测试,以确保程序在高并发和负载下的稳定性和正确性。

综上所述,确保多线程并发安全的关键在于合理的使用锁、使用线程安全的数据结构、避免共享可变状态、以及对程序进行充分的测试和调试。这些方法可以帮助有效地管理多线程程序中的并发问题,提升系统的稳定性和性能。

4、AQS是用来做什么的?谈谈对它的理解

AQS(AbstractQueuedSynchronizer)是Java中一个重要的同步框架,用于实现锁和其他同步器的基础设施。它在并发编程中起着关键作用,主要用来管理同步状态和控制多线程对共享资源的访问。

主要作用和功能:

  1. 提供了一个框架

    • AQS提供了一种基于FIFO等待队列的同步器框架,可以通过继承和重写其方法来实现各种同步器,如独占锁(ReentrantLock)、共享锁(Semaphore、CountDownLatch)、同步队列等。
  2. 状态管理

    • AQS内部维护了一个整型状态(state),可以表示资源的占用情况或者其他自定义的状态信息。开发者可以通过操作状态来控制并发访问,例如获取锁、释放锁等。
  3. 线程的排队与唤醒

    • AQS利用了等待队列(CLH队列)来管理获取同步状态失败的线程,这些线程会被阻塞并按照FIFO顺序排队等待唤醒。当同步状态可用时,AQS会负责按照规定的策略唤醒合适的线程。
  4. 内置了同步操作的基础

    • AQS提供了acquirerelease等核心方法,这些方法定义了同步器的获取和释放行为。具体的同步器可以通过重写这些方法来实现自定义的同步逻辑,例如独占锁的获取和释放。
  5. 可扩展性

    • AQS是一个抽象类,提供了良好的扩展性和定制性。开发者可以基于AQS实现自己的同步器,满足特定的并发控制需求。

对AQS的理解:

AQS的设计理念是基于"状态"和"等待队列"的管理,通过状态来反映同步资源的占用情况,通过等待队列来管理竞争同步资源失败的线程。它的核心思想是将共享资源的访问控制和线程调度分离开来,使得同步逻辑更加灵活和高效。

在实际应用中,开发者可以利用AQS提供的基础设施,如状态管理和线程排队机制,来实现复杂的并发控制。常见的应用场景包括实现独占锁、共享锁、倒计时器等,并通过AQS提供的方法来确保线程安全和资源正确的并发访问。

总结来说,AQS作为Java并发包中的核心组件,为开发者提供了一个强大的同步框架,通过其提供的状态管理和线程调度机制,实现了高效、可扩展的并发控制方案。

5、线程安全-加锁需要注意一些什么?死锁是怎么造成的?

1、加锁的顺序要一致,避免加锁的嵌套;

2、加锁的范围尽可能的小,减少互斥,提升性能;

3、如果可以使用乐观锁或者“无锁机制”那么就不要使用锁;

4、损耗性能的操作非必要可以从同步逻辑中移除,减少加锁时长;

死锁:

Java死锁是由于多个线程在争夺共享资源时出现的一种特定情况,其中每个线程都在等待其他线程释放它所需的资源,导致所有线程都被阻塞,无法继续执行下去。

死锁通常发生在多个线程同时持有多个锁,并且每个线程试图获取其他线程已持有的锁时。为了形象化地解释,可以举一个简单的例子:

假设有两个线程 A 和 B,以及两个共享资源 X 和 Y,它们的执行过程如下:

  1. 线程 A 已经获取了资源 X 的锁,但是需要资源 Y 才能继续执行。
  2. 同时,线程 B 已经获取了资源 Y 的锁,但是需要资源 X 才能继续执行。

这时候,线程 A 和 B 都在等待对方释放所需的资源,而导致彼此永远无法继续下去,这种情况就是死锁。

造成死锁的四个必要条件称为死锁的四个必要条件,它们是:

  1. 互斥条件:至少有一个资源必须是被排他性控制的,即一次只能被一个线程使用。
  2. 请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放。
  3. 不剥夺条件:已获得的资源在未使用完之前,不能被其他线程强行剥夺,只能由自己释放。
  4. 循环等待条件:若干线程之间形成一种头尾相接的循环等待资源的关系。

在Java中,死锁通常发生在使用多个锁对象并且锁的获取顺序不当时。为了避免死锁,开发者通常需要注意以下几点:

  • 锁的顺序:尽量确保所有线程按照相同的顺序获取锁。
  • 避免持有锁的时间过长:减少锁定资源的时间可以降低死锁发生的可能性。
  • 使用线程池和并发工具类:Java提供了一些并发工具类(如 ExecutorServiceConcurrentHashMap 等),它们在设计时已经考虑了线程安全问题,可以减少手动管理锁的需求。

通过理解死锁的原因和条件,并采取适当的措施来规避,可以有效地避免Java程序中的死锁问题。

6、出现死锁以后会有什么现象?如何排查?

当程序出现死锁时,通常会表现为以下几种现象:

  1. 程序停止响应:所有涉及到死锁的线程都会停止执行,程序无法继续向前执行,表现为卡住或者无响应状态。

  2. 资源利用率不高:由于死锁导致部分线程或资源无法正常工作,整体资源利用率会下降,CPU等待时间增加。

  3. 日志或调试信息:一些开发环境或运行时会记录死锁信息或者相关线程的状态信息,这些信息有助于排查死锁。

  4. 如果是多线程或者是线程池的应用场景,出现死锁后会出现大量的线程被消耗并且阻塞等待获取锁。比如-dubbo-线程池。

使用 jstack 工具来定位死锁问题通常需要以下步骤:

  1. 确定Java进程ID:首先,需要确定出现死锁问题的Java进程的ID。可以通过命令行或者任务管理器等工具获取。

  2. 获取线程堆栈信息:在命令行中执行 jstack 命令来获取Java进程的线程堆栈信息。命令格式为:

    jstack <pid>

    其中 <pid> 是Java进程的ID。

  3. 分析堆栈信息jstack 命令会打印出当前Java进程中每个线程的堆栈跟踪信息。关注以下几点来分析可能的死锁情况:

    • 线程状态:查看每个线程的状态,例如是否处于 BLOCKED(被阻塞等待锁)、WAITING(无限期等待另一个线程来执行特定操作)、TIMED_WAITING(有时限等待)等状态。
    • 线程持有的锁:检查每个线程当前持有的锁对象。
    • 线程等待的锁:查看每个线程正在等待的锁对象。
  4. 寻找死锁线程:在堆栈信息中寻找可能的死锁线程,即那些处于 BLOCKED 状态并且等待某个资源释放的线程。

  5. 定位死锁原因:根据 jstack 输出的信息,分析死锁的具体原因。通常死锁发生的原因包括锁的竞争、顺序不当等。

  6. 解决死锁问题:根据分析的结果,修改程序代码来避免死锁的发生。可能的解决方法包括调整锁的获取顺序、减少锁的持有时间、使用并发工具类等。

  7. 验证和测试:修改代码后,进行相应的测试和验证,确保死锁问题已经解决或者得到显著改善。

通过以上步骤,可以利用 jstack 命令有效地定位和解决Java程序中的死锁问题。

Dubbo_JStack.log 文件

Dubbo_JStack.log 文件通常是用来记录 Dubbo 进程的线程堆栈信息的文件。在 Dubbo 的运行过程中,特别是当遇到一些问题如死锁、线程池耗尽等情况时,Dubbo 可能会记录线程的堆栈信息到 Dubbo_JStack.log 文件中,以便后续的故障诊断和分析。

这个文件通常不是自动创建的,而是需要一些特定的配置或者触发条件才会生成。具体来说,可以通过如下方式生成 Dubbo_JStack.log 文件:

  1. 手动生成:可以手动使用 jstack 命令来获取 Dubbo 进程的线程堆栈信息,并将输出重定向到 Dubbo_JStack.log 文件中,例如:

    jstack <pid> > Dubbo_JStack.log

    其中 <pid> 是 Dubbo 进程的ID。

  2. Dubbo 日志配置:有些情况下,Dubbo 的日志配置文件中可能包含配置项来指定是否记录线程堆栈信息,以及记录的文件位置。通常需要查看具体的 Dubbo 日志配置文件(如 log4j.properties 或者 logback.xml)来了解是否有相关的配置项。

  3. 调试或监控工具:一些调试或监控工具可能会自动记录 Dubbo 进程的线程堆栈信息到类似 Dubbo_JStack.log 的文件中,这些工具通常提供了故障诊断和监控功能,帮助用户定位和解决问题。

总之,Dubbo_JStack.log 文件通常是用来存储 Dubbo 进程的线程堆栈信息的,它的生成方式可能是手动执行 jstack 命令或者通过某些监控或调试工具自动生成的。

7、并行跟并发的区别是什么?

  1. 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。
  2. 并行:单位时间内,多个处理器或多核处理器同时处理多个任务,是真正意义上的“同时进行”。
  3. 串行:有n个任务,由一个线程按顺序执行。由于任务、方法都在一个线程执行所以不存在线程不安全情况,也就不存在临界区的问题。

8、为什么 wait ,notify 和 notifyAll 必须在同步方法或者同步块中被调用?

如果不在获取了obj锁的前提下调用方法,抛出了 java.lang.IllegalMonitorStateException 异常信息。

抛出 IllegalMonitorStateException 异常是由于调用wait方法的时当前线程没有获取到调用对象的锁。

wait和notify方法介绍
wait和notify是Object类中定义的方法。调用这两个方法的前提条件:当前线程拥有调用者的锁。
wait方法有好几个重载方法,但最终都调用了如下的wait本地方法。调用wait方法后,当前线程会进入waiting状态直到其他线程调用此对象的notify、notifyAll方法或者指定的等待时间过去。

public final native void wait(long timeout) throws InterruptedException;

notify和notifyAll方法,两者的区别是notify方法唤醒一个等待在调用对象上的线程,notifyAll方法唤醒所有的等待在调用对象上的线程。
那么唤醒后的线程是否就可以直接执行了? 答案是否定的。唤醒后的线程需要获取到调用对象的锁后才能继续执行。

public final native void notify();
public final native void notifyAll();

9、介绍一下线程池

ThreadPoolExecutor 略...

其它待补充....

20、ConcurrentHashMap为什么不允许插入Null?

参考文章:

https://blog.51cto.com/u_11702014/6235764

相关文章:

Java 并发编程常见问题

1、线程状态它们之间是如何扭转的&#xff1f; 1、谈谈对于多线程的理解&#xff1f; 1、对于多核CPU&#xff0c;多线程可以提升CPU的利用率&#xff1b; 2、对于多IO操作的程序&#xff0c;多线程可以提升系统的整体性能及吞吐量&#xff1b; 3、使用多线程在一些场景下可…...

网络基础:静态路由

静态路由是一种由网络管理员手动配置的路由方式&#xff0c;用于在网络设备&#xff08;如路由器或交换机&#xff09;之间传递数据包。与动态路由不同&#xff0c;静态路由不会根据网络状态的变化自动调整。 不同厂商的网络设备在静态路由的配置上有些许差异&#xff1b;下面…...

库存管理系统基于spingboot vue的前后端分离仓库库存管理系统java项目java课程设计java毕业设计

文章目录 库存管理系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;带走&#xff09; 库存管理系统 一、项目演示 库存管理系统 二、项目介绍 基于spingboot和vue前后端分离的库存管理系统 功能模块&#xff…...

【ArcGIS AddIn插件】【可用于全国水旱灾害风险普查】全网最强洪水淹没分析插件-基于8邻域种子搜索算法-有源淹没分析算法

最近有很多GIS小伙伴咨询我关于基于8邻域种子搜索算法的有源淹没分析插件的使用方法及原理&#xff0c;咱们通过这篇文章给大家详细介绍下这款插件的运行机制。 一、插件类型及适用版本 本插件属于ArcGIS AddIn工具条插件&#xff0c;基于ArcGIS Engine10.2.2的开发环境开发的&…...

==和equals的区别(面试题)

和equals有什么区别 对于基本数据类型&#xff0c;比较的是值是否相等&#xff0c;对于引用类型则是比较的地址是否相等&#xff1b;对于equals来说&#xff0c;基本数据类型没有equals方法&#xff0c;对于引用类型equals比较的是引用对象是否相同 那针对以上结论&#xff0c…...

本地项目上传到GitHub上(李豆)

本地项目上传到GitHub上(李豆) 准备工作&#xff1a; 本地需要有 git 也需要有一个 GitHub 账号 首先需要在 GitHub 新建一个空仓库 在想要上传项目的文件夹中使用 Git 命令操作 初始化&#xff1a; git init与 github 仓库进行链接 &#xff1a;git remote add origin …...

碧海威L7云路由无线运营版 confirm.php/jumper.php 命令注入漏洞复现(XVE-2024-15716)

0x01 产品简介 碧海威L7网络设备是 北京智慧云巅科技有限公司下的产品,基于国产化ARM硬件平台,采用软硬一体协同设计方案,释放出产品最大效能,具有高性能,高扩展,产品性能强劲,具备万兆吞吐能力,支持上万用户同时在线等高性能。其采用简单清晰的可视化WEB管理界面,支持…...

redis实战-添加商户缓存

为什么要使用缓存 言简意赅&#xff1a;速度快&#xff0c;好用缓存数据存储于代码中&#xff0c;而代码运行在内存中&#xff0c;内存的读写性能远高于磁盘&#xff0c;缓存可以大大降低用户访问并发量带来的服务器读写压力实际开发中&#xff0c;企业的数据量&#xff0c;少…...

SQL游标的基本使用方法与示例

SQL游标的基本使用方法与示例 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨SQL游标的基本使用方法及示例。在数据库编程中&#xff0c;游标是一…...

还不知道工业以太网和现场总线区别???

工业以太网 工业以太网是一种专为工业环境设计的网络通信技术&#xff0c;它基于标准的以太网技术&#xff0c;但针对工业应用进行了优化。工业以太网能够适应高温、低温、防尘等恶劣工业环境&#xff0c;采用TCP/IP协议&#xff0c;与IEEE 802.3标准兼容&#xff0c;并在应用层…...

量化交易 - 策略回测

策略回测 1、什么是策略回测&#xff1f;2、策略回测的作用3、策略回测系统概述3.1策略回测中相关的指标介绍3.2量化交易策略的资金容量3.3 完整的策略回测系统包含哪些内容 1、什么是策略回测&#xff1f; 策略回测&#xff0c;也称之为策略回溯测试&#xff0c;是指利用交易…...

Java--选择排序

思想 从左向右遍历数组&#xff0c;让每个数组元素依次作为基准&#xff0c;将基准数组扫描一次&#xff0c;若有元素比基准小则标记这个元素&#xff0c;若后续元素存在比此元素更小的&#xff0c;则标记更小的元素&#xff0c;遍历完此次数组之后&#xff0c;交换基准和标记数…...

Python基础之模块和包

文章目录 1 模块和包1.1 模块和包1.1.1 模块1.1.2 包1.1.3 简单使用 1.2 import 语句1.2.1 import1.2.2 from … import 语句1.2.3 from … import * 语句 1.4 深入模块1.4.1 模块符号表1.4.2 __name__属性1.4.3 dir() 函数1.4.4 作用域 1.5 常用内置模块 1 模块和包 1.1 模块…...

基于SpringBoot漫画网站系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…...

Mysql----表的约束

提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、表的约束 表的约束&#xff1a;表中一定要有约束&#xff0c;通过约束让插入表中的数据是符合预期的。它的本质是通过技术手段&#xff0c;让程序员插入正确的数据&#xff0c;约束的最终目标是保证…...

如何用 PHP 实现一个自定义爬虫框架

随着互联网的不断发展&#xff0c;信息量爆炸式增长&#xff0c;获取有价值的信息已经成为了许多人的需求。在这样的大环境下&#xff0c;爬虫技术逐渐兴起&#xff0c;成为了大数据时代的重要工具之一。爬虫技术的应用十分广泛&#xff0c;其可以用于网络舆情监测、数据分析、…...

【机器学习】机器学习的重要方法——强化学习:理论,方法与实践

目录 一、强化学习的核心概念 二、强化学习算法的分类与示例代码 三.强化学习的优势 四.强化学习的应用与挑战 五、总结与展望 强化学习&#xff1a;理论&#xff0c;方法和实践 在人工智能的广阔领域中&#xff0c;强化学习&#xff08;Reinforcement Learning, RL&…...

Linux磁盘监控思路分析

磁盘监控原理 设备又名I/O设备&#xff0c;泛指计算机系统中除主机以外的所有外部设备。 1.1 计算机分类 1.1.1 按照信息传输速度分&#xff1a; 1.低速设备&#xff1a;每秒传输信息仅几个字节或者百个字节&#xff0c;如&#xff1a;键盘、鼠标等 2.中速设备&#xff1a…...

pc端制作一个顶部固定的菜单栏

效果 hsl颜色 hsl颜色在css中比较方便 https://www.w3school.com.cn/css/css_colors_hsl.asp 色相&#xff08;hue&#xff09;是色轮上从 0 到 360 的度数。0 是红色&#xff0c;120 是绿色&#xff0c;240 是蓝色。饱和度&#xff08;saturation&#xff09;是一个百分比值…...

ONLYOFFICE 8.1版本桌面编辑器深度体验:创新功能与卓越性能的结合

ONLYOFFICE 8.1版本桌面编辑器深度体验&#xff1a;创新功能与卓越性能的结合 随着数字化办公的日益普及&#xff0c;一款高效、功能丰富的办公软件成为了职场人士的必备工具。ONLYOFFICE团队一直致力于为用户提供全面而先进的办公解决方案。最新推出的ONLYOFFICE 8.1版本桌面编…...

使用Java连接数据库并且执行数据库操作和创建用户登录图形化界面(2)

&#xff08;1&#xff09;在student数据库上创建一个用户表tb_account&#xff0c;该表包含用户id&#xff0c;用户名和密码。 字段名称 数据类型 注释 约束 user_id Char(8) 用户id 主键 user_name char(10) 用户名 不能为空 password char(10) 密码 默认值&a…...

socket编程常见操作

1、连接的建立 分为两种&#xff1a;服务端处理接收客户端的连接&#xff1b;服务端作为客户端连接第三方服务 //作为服务端 int listenfd socket(AF_INET, SOCK_STREAM, 0); bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr))) listen(listenfd, 10); //…...

springcloud-config git配置源加载(部署公钥问题)

使用gitUrl作为配置源 gitee 或者github 中有类似于发布密钥的功能&#xff0c;允许通过私钥只读访问指定的仓库&#xff0c;文档中说的是 限制了git的操作为pull 和 clone。生成私钥的方式文档连接在此 https://gitee.com/help/articles/4181#article-header0 spring config只…...

华为OD机考题HJ24 合唱队

前言 应广大同学要求&#xff0c;开始以OD机考题作为练习题&#xff0c;看看算法和数据结构掌握情况。有需要练习的可以关注下。 描述 N 位同学站成一排&#xff0c;音乐老师要请最少的同学出列&#xff0c;使得剩下的 K 位同学排成合唱队形。 设&#x1d43e;K位同学从左到…...

基于bootstrap的12种登录注册页面模板

基于bootstrap的12种登录注册页面模板&#xff0c;分三种类型&#xff0c;默认简单的登录和注册&#xff0c;带背景图片的登录和注册&#xff0c;支持弹窗的登录和注册页面html下载。 微信扫码下载...

【劳德巴赫 Trace32 高阶系列 3.1 -- trace32 svf 文件操作与 InitState】

文章目录 SVF InitStateJTAG 状态机JTAG Test-Logic-ResetJTAG Run-Test-IdleSVF InitState Format: JTAG.PROGRAM.SVF <file> [/<option>] <option>: IRPRE <value>IRPOST <value>DRPRE <value>DRPOST <value<...

爬虫知识:补环境相关知识

学习目标&#xff1a;知道为什么要补环境&#xff0c;知道要补什么环境&#xff08;使用Proxy检测&#xff09;。没有讲解怎么补 本章没有动手去实操&#xff0c;只是纯理论知识 补环境介绍 DOM与BOM DOM主要关注文档内容和结构&#xff0c;而BOM关注浏览器窗口和功能。在浏…...

Crontab命令详解:轻松驾驭Linux定时任务,提升系统效率

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 引言&#xff1a; crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件…...

【Python】探索 Pandas 中的 where 方法:条件筛选的利器

那年夏天我和你躲在 这一大片宁静的海 直到后来我们都还在 对这个世界充满期待 今年冬天你已经不在 我的心空出了一块 很高兴遇见你 让我终究明白 回忆比真实精彩 &#x1f3b5; 王心凌《那年夏天宁静的海》 在数据分析中&#xff0c;Pandas 是一个强大且…...

Pikachu靶场--Sql Inject

参考借鉴 pikachu靶场练习&#xff08;详细&#xff0c;完整&#xff0c;适合新手阅读&#xff09;-CSDN博客 数字型注入(post) 这种类型的SQL注入利用在用户输入处插入数值&#xff0c;而不是字符串。攻击者试图通过输入数字来修改SQL查询的逻辑&#xff0c;以执行恶意操作。…...

【Python从入门到进阶】59、Pandas库中Series对象的操作(二)

接上篇《58、Pandas库中Series对象的操作(一)》 上一篇我们讲解了Pandas库中Series对象的基本概念、对象创建和操作&#xff0c;本篇我们来继续学习Series对象的运算、函数应用、时间序列操作&#xff0c;以及Series的案例实践。 一、Series对象的运算 1. 数值型数据的算术运…...

【PYG】使用datalist定义数据集,创建一个包含多个Data对象的列表并使用DataLoader来加载这些数据

为了使用你提到的封装方式来创建一个包含多个 Data 对象的列表并使用 DataLoader 来加载这些数据&#xff0c;我们可以按照以下步骤进行&#xff1a; 创建数据&#xff1a;生成节点特征矩阵、边索引矩阵和标签。封装数据&#xff1a;使用 Data 对象将这些数据封装起来。使用 D…...

【设计模式】【创建型5-2】【工厂方法模式】

文章目录 工厂方法模式工厂方法模式的结构示例产品接口具体产品工厂接口具体工厂客户端代码 实际的使用 工厂方法模式 工厂方法模式的结构 产品&#xff08;Product&#xff09;&#xff1a;定义工厂方法所创建的对象的接口。 具体产品&#xff08;ConcreteProduct&#xff0…...

python API自动化(Pytest+Excel+Allure完整框架集成+yaml入门+大量响应报文处理及加解密、签名处理)

1.pytest数据参数化 假设你需要测试一个登录功能&#xff0c;输入用户名和密码后验证登录结果。可以使用参数化实现多组输入数据的测试: 测试正确的用户名和密码登录成功 测试正确的用户名和错误的密码登录失败 测试错误的用户名和正确的密码登录失败 测试错误的用户名和密码登…...

【Postman学习】

Postman是一个非常流行的API开发和测试工具&#xff0c;广泛用于Web服务的开发、测试和调试。它提供了一个图形界面&#xff0c;允许用户轻松地构建、发送和管理HTTP(S)请求&#xff0c;同时查看和分析响应。下面是对Postman接口测试工具的详细解释&#xff1a; 1. Postman简介…...

【Linux】IO多路复用——select,poll,epoll的概念和使用,三种模型的特点和优缺点,epoll的工作模式

文章目录 Linux多路复用1. select1.1 select的概念1.2 select的函数使用1.3 select的优缺点 2. poll2.1 poll的概念2.2 poll的函数使用2.3 poll的优缺点 3. epoll3.1 epoll的概念3.2 epoll的函数使用3.3 epoll的优点3.4 epoll工作模式 Linux多路复用 IO多路复用是一种操作系统的…...

IBCS 虚拟专线——让企业用于独立IP

在当今竞争激烈的商业世界中&#xff0c;企业的数字化运营对网络和服务器的性能有着极高的要求。作为一家企业的 IT 主管&#xff0c;我深刻体会到了在网络和服务器配置方面所面临的种种挑战&#xff0c;以及 IBCS 虚拟专线带来的革命性改变。 我们企业在业务扩张的过程中&…...

驾驭巨龙:Perl中大型文本文件的处理艺术

驾驭巨龙&#xff1a;Perl中大型文本文件的处理艺术 Perl&#xff0c;这门被亲切称为“实用提取和报告语言”的编程语言&#xff0c;自从诞生之日起&#xff0c;就以其卓越的文本处理能力闻名于世。在面对庞大的文本文件时&#xff0c;Perl的强大功能更是得到了充分的体现。本…...

Kafka~特殊技术细节设计:分区机制、重平衡机制、Leader选举机制、高水位HW机制

分区机制 Kafka 的分区机制是其实现高吞吐和可扩展性的重要特性之一。 Kafka 中的数据具有三层结构&#xff0c;即主题&#xff08;topic&#xff09;-> 分区&#xff08;partition&#xff09;-> 消息&#xff08;message&#xff09;。一个 Kafka 主题可以包含多个分…...

springcloud-config 客户端启用服务发现client的情况下使用metadata中的username和password

为了让spring admin 能正确获取到 spring config的actuator的信息&#xff0c;在eureka的metadata中添加了metadata.user.user metadata.user.password eureka.instance.metadata-map.user.name${spring.security.user.name} eureka.instance.metadata-map.user.password${spr…...

云计算 | 期末梳理(中)

1. 经典虚拟机的特点 多态(Polymorphism):支持多种类型的OS。重用(Manifolding):虚拟机的镜像可以被反复复制和使用。复用(Multiplexing):虚拟机能够对物理资源时分复用。2. 系统接口 最基本的接口是微处理器指令集架构(ISA)。应用程序二进制接口(ABI)给程序提供使用硬件资源…...

pytest测试框架pytest-order插件自定义用例执行顺序

pytest提供了丰富的插件来扩展其功能&#xff0c;本章介绍插件pytest-order&#xff0c;用于自定义pytest测试用例的执行顺序。pytest-order是插件pytest-ordering的一个分支&#xff0c;但是pytest-ordering已经不再维护了&#xff0c;建议大家直接使用pytest-order。 官方文…...

吴恩达机器学习 第三课 week2 推荐算法(上)

目录 01 学习目标 02 推荐算法 2.1 定义 2.2 应用 2.3 算法 03 协同过滤推荐算法 04 电影推荐系统 4.1 问题描述 4.2 算法实现 05 总结 01 学习目标 &#xff08;1&#xff09;了解推荐算法 &#xff08;2&#xff09;掌握协同过滤推荐算法&#xff08;Collabo…...

MySQL CASE 表达式

MySQL CASE表达式 一、CASE表达式的语法二、 常用场景1&#xff0c;按属性分组统计2&#xff0c;多条件统计3&#xff0c;按条件UPDATE4, 在CASE表达式中使用聚合函数 三、CASE表达式出现的位置 一、CASE表达式的语法 -- 简单CASE表达式 CASE sexWHEN 1 THEN 男WHEN 2 THEN 女…...

Unity3D 游戏数据本地化存储与管理详解

在Unity3D游戏开发中&#xff0c;数据的本地化存储与管理是一个重要的环节。这不仅涉及到游戏状态、玩家信息、游戏设置等关键数据的保存&#xff0c;还关系到游戏的稳定性和用户体验。本文将详细介绍Unity3D中游戏数据的本地化存储与管理的技术方法&#xff0c;并给出相应的代…...

昇思25天学习打卡营第1天|初学教程

文章目录 背景创建环境熟悉环境打卡记录学习总结展望未来 背景 参加了昇思的25天学习记录&#xff0c;这里给自己记录一下所学内容笔记。 创建环境 首先在平台注册账号&#xff0c;然后登录&#xff0c;按下图操作&#xff0c;创建环境即可 创建好环境后进入即可&#xff0…...

ctfshow-web入门-命令执行(web59-web65)

目录 1、web59 2、web60 3、web61 4、web62 5、web63 6、web64 7、web65 都是使用 highlight_file 或者 show_source 1、web59 直接用上一题的 payload&#xff1a; cshow_source(flag.php); 拿到 flag&#xff1a;ctfshow{9e058a62-f37d-425e-9696-43387b0b3629} 2、w…...

Websocket在Java中的实践——最小可行案例

大纲 最小可行案例依赖开启Websocket&#xff0c;绑定路由逻辑类 测试参考资料 WebSocket是一种先进的网络通信协议&#xff0c;它允许在单个TCP连接上进行全双工通信&#xff0c;即数据可以在同一时间双向流动。WebSocket由IETF标准化为RFC 6455&#xff0c;并且已被W3C定义为…...

python请求报错::requests.exceptions.ProxyError: HTTPSConnectionPool

在发送网页请求时&#xff0c;发现很久未响应&#xff0c;最后报错&#xff1a; requests.exceptions.ProxyError: HTTPSConnectionPool(hostsvr-6-9009.share.51env.net, port443): Max retries exceeded with url: /prod-api/getInfo (Caused by ProxyError(Unable to conne…...

【Unity】Excel配置工具

1、功能介绍 通过Excel表配置表数据&#xff0c;一键生成对应Excel配置表的数据结构类、数据容器类、已经二进制数据文件&#xff0c;加载二进制数据文件获取所有表数据 需要使用Excel读取的dll包 2、关键代码 2.1 ExcelTool类 实现一键生成Excel配置表的数据结构类、数据…...

优选算法2

五、位运算 常见位运算总结 &&#xff1a;有0就是0&#xff1b; |&#xff1a;有1就是1 ^&#xff1a;相同为0&#xff0c;相异就是1/无进位相加 给定一个数n,确定它的二进制表示中的第x位是0还是1&#xff1a;二进制中权值最小的是第0位&#xff0c;所以int整型是从第0位到…...

开放式耳机怎么选?五大2024年口碑销量爆棚机型力荐!

在选购开放式耳机的时候&#xff0c;我们总会因为有太多的选择而陷入两难&#xff0c;又想要一个颜值比较高的&#xff0c;又想要同时兼顾性能还不错的&#xff0c;所以作为测评博主&#xff0c;今天我们就给大家带来自己的一些选购技巧和自己觉得还不错开放式耳机&#xff0c;…...

Spring Cacheable 注解

Spring Cacheable 注解 在Spring框架中&#xff0c;缓存是一种提高应用程序性能的重要技术手段。Cacheable注解是Spring Cache中最常用的注解之一&#xff0c;它用于将方法的返回值缓存起来&#xff0c;以便后续调用时直接从缓存中获取&#xff0c;而不是再次执行方法。本文将…...

poi-tl 生成 word 文件(插入文字、图片、表格、图表)

文章说明 本篇文章主要通过代码案例的方式&#xff0c;展示 poi-tl 生成 docx 文件的一些常用操作&#xff0c;主要涵盖以下内容 &#xff1a; 插入文本字符&#xff08;含样式、超链接&#xff09;插入图片插入表格引入标签&#xff08;通过可选文字的方式&#xff0c;这种方…...

猫头虎分享[可灵AI」官方推荐的驯服指南-V1.0

猫头虎分享[可灵AI」官方推荐的驯服指南-V1.0 猫头虎是谁&#xff1f; 大家好&#xff0c;我是 猫头虎&#xff0c;别名猫头虎博主&#xff0c;擅长的技术领域包括云原生、前端、后端、运维和AI。我的博客主要分享技术教程、bug解决思路、开发工具教程、前沿科技资讯、产品评…...

linux和mysql基础指令

Linux中nano和vim读可以打开记事文件。 ifdown ens33 ifup ens33 关闭&#xff0c;开启网络 rm -r lesson1 gcc -o code1 code1.c 编译c语言代码 ./code1 执行c语言代码 rm -r dir 删除文件夹 mysql> show databases-> ^C mysql> show databases; -------…...

2.0T275马力,油耗6.3L能加92,5米大7座

探险者固然是一款很好的车型,特别是昆仑巅峰版还带后桥限滑差速器,脱困能力更强。但探险者的价格终归比较高,退而求其次也可以看看全新换代的锐界L,整体实力也不差。新车指导价为22.98-30.98万元,目前终端优惠8800元左右。??优缺点速览优点:1、提供纯燃油和油电混动2、提…...

系统架构设计师【第3章】: 信息系统基础知识 (核心总结)

文章目录 3.1 信息系统概述3.1.1 信息系统的定义3.1.2 信息系统的发展3.1.3 信息系统的分类3.1.4 信息系统的生命周期3.1.5 信息系统建设原则3.1.6 信息系统开发方法 3.2 业务处理系统&#xff08;TPS&#xff09;3.2.1 业务处理系统的概念3.2.2 业务处理系统的功能 …...

科学技术创新杂志科学技术创新杂志社科学技术创新编辑部2024年第10期目录

科技创新 单桩穿越岩溶发育地层力学特征与溶洞处置措施研究 刘飞; 1-7《科学技术创新》投稿&#xff1a;cnqikantg126.com 基于多目标优化的中低压配电网电力规划研究 向星山;杨承俊;张寒月; 8-11 激光雷达测绘技术在工程测绘中的应用研究 张军伟;闫宏昌; 12-15 …...

于AI对话 --如何更好的使用AI工具

文章目录 于AI对话 --如何更好的使用AI工具1、认识AI工具&#xff1a;2、对话原则&#xff1a;3、提问步骤&#xff1a;4、AI可以学习什么&#xff1f;5、提问技巧&#xff1a;1、提出假设性问题:2、&#xff08;鼓励引导式提问&#xff09;跨学科思考:举个例子&#xff1a; 3、…...

YOLOV10阅读总结

GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection YOLOv10 - Ultralytics YOLO Docs https://arxiv.org/pdf/2405.14458 论文地址 最近yolo又出了个yolov10了&#xff0c;不得不感慨CV是真卷&#xff0c;毕竟yolov9也才没多久。记录一下阅读笔记。…...

Python globals的简单使用 和getattr有什么区别?

globals() 和 getattr() 是 Python 中的两个内置函数&#xff0c;但它们的功能和使用场景是完全不同的。 1. **globals()** globals() 函数返回一个字典&#xff0c;表示当前全局符号表的当前状态。这个字典将变量名映射到它们的值。它主要用于查看和修改全局变量。 示例&#…...