Java并发编程高频面试题
一、基础概念
1. 并行与并发的区别?
- 并行:多个任务在多个CPU核心上同时执行(物理上同时)。
- 并发:多个任务在单CPU核心上交替执行(逻辑上同时)。
- 类比:并行是多个窗口同时服务,并发是一个窗口轮流服务。
2. 线程的创建方式?
- 继承
Thread
类:重写run()
方法,通过start()
启动。 - 实现
Runnable
接口:更灵活,避免单继承限制。 - 实现
Callable
接口:支持返回值和异常处理,配合FutureTask使用。
3. 线程的状态?
状态 | 说明 |
---|---|
NEW | 线程被创建但未启动 |
RUNNABLE | 线程正在执行或等待CPU资源 |
BLOCKED | 线程等待锁(进入同步代码块) |
WAITING | 线程调用wait() /join() 后等待唤醒 |
TIMED_WAITING | 超时等待(如sleep(long) ) |
TERMINATED | 线程执行完毕或异常终止 |
4. sleep()
与wait()
的区别?
特性 | sleep() | wait() |
---|---|---|
所属类 | Thread | Object |
锁行为 | 不释放锁 | 释放锁 |
唤醒方式 | 超时自动唤醒 | 需其他线程调用notify() 唤醒 |
使用场景 | 线程休眠 | 线程间通信 |
5. 进程与线程的区别?
- 进程:资源分配的最小单位(如内存、文件句柄)。
- 线程:调度的最小单位,共享进程资源(如堆、方法区),但有独立栈和寄存器。
- 协程:比线程更轻量级(如Kotlin的Coroutine)。
6.为什么用start()而非直接调用run()?
- start()会创建新线程并执行run(),而直接调用run()仅在当前线程执行,无并发效果。
二、ThreadLocal
7. ThreadLocal的作用?
- 线程隔离:为每个线程提供独立变量副本,避免共享数据冲突。
- 典型场景:用户会话管理、数据库连接上下文传递。
8. ThreadLocal的实现原理?
- 线程私有Map:每个线程维护一个
ThreadLocal.ThreadLocalMap
,键为ThreadLocal
对象,值为线程变量。 - 弱引用:键使用弱引用,防止内存泄漏。
9. ThreadLocal内存泄漏问题?
- 原因:线程未及时调用
remove()
,导致Entry
的value
强引用无法被回收。 - 解决:使用
try-finally
确保调用remove()
。
三、Java内存模型(JMM)
9.JMM的核心是什么?
- 定义线程间共享变量的访问规则,解决可见性、有序性、原子性问题。
- 主内存:共享变量存储区。
- 本地内存:线程私有的共享变量副本(抽象概念,对应CPU缓存等)。
10. JMM的三大特性?
- 原子性:操作不可分割(如
synchronized
保证代码块原子性)。 - 可见性:一个线程修改的值对其他线程立即可见(
volatile
或synchronized
)。 - 有序性:禁止指令重排序(
volatile
通过内存屏障实现)。
11. volatile
的作用?
- 可见性:强制将修改刷新到主内存,禁止缓存。
- 有序性:通过内存屏障禁止指令重排序。
12. volatile的作用及实现原理?
- 作用:保证可见性和禁止指令重排。
- 原理:
- 写操作后插入Store-Barrier,强制刷新主内存。
- 读操作前插入Load-Barrier,强制从主内存读取。
四、锁机制
13. synchronized的使用方式?
- 修饰方法:锁对象实例(非静态方法)或类(静态方法)。
- 修饰代码块:指定锁对象,更细粒度控制。
14. synchronized的实现原理?
- Monitor对象:每个Java对象关联一个监视器,线程通过获取Monitor实现互斥。
- 锁升级:偏向锁 → 轻量级锁 → 重量级锁(基于CAS和自旋优化)。
15. synchronized与ReentrantLock的区别?
特性 | synchronized | ReentrantLock |
---|---|---|
可重入 | 自动支持 | 需手动释放(unlock() ) |
公平性 | 非公平 | 支持公平锁(通过构造函数) |
锁获取 | 阻塞等待 | 支持tryLock() 非阻塞获取 |
条件变量 | 仅wait() /notify() | 支持Condition 多条件变量 |
15. CAS的原理及问题?
- 原理:Compare-And-Swap,通过原子指令实现无锁操作。
- 问题:
- ABA问题:通过版本号(如
AtomicStampedReference
)解决。 - 循环开销:长时间自旋消耗CPU。
- ABA问题:通过版本号(如
五、并发工具类
16. CountDownLatch与CyclicBarrier的区别?
- CountDownLatch:计数器递减至0时释放所有等待线程(一次性)。
- CyclicBarrier:所有线程到达屏障后继续执行(可重用)。
17. Semaphore的作用?
- 控制并发量:允许指定数量的线程同时访问资源。
- 应用场景:限流、资源池管理。
六、线程池
18. 线程池的工作流程?
- 任务提交到线程池。
- 核心线程处理任务,空闲则创建新线程(未达最大线程数)。
- 任务队列已满且线程数达最大值时,触发拒绝策略。
提交任务 → 核心线程执行 → 队列缓冲 → 最大线程处理 → 拒绝策略。
19. 线程池参数配置?
- corePoolSize:核心线程数。
- maximumPoolSize:最大线程数。
- keepAliveTime:空闲线程存活时间。
- workQueue:阻塞队列(如
LinkedBlockingQueue
)。 - handler:拒绝策略(如
AbortPolicy
)。
20. 线程池的拒绝策略?
- AbortPolicy:抛异常(默认)。
- CallerRunsPolicy:任务回退到调用线程执行。
- DiscardPolicy:静默丢弃。
- DiscardOldestPolicy:丢弃队列中最老的任务。
七、高级主题
21. 死锁的条件及避免?
- 条件:互斥、持有并等待、不可抢占、循环等待。
- 避免:
- 按顺序加锁。
- 设置超时时间。
- 使用
ReentrantLock
的tryLock()
。
22. ConcurrentHashMap的线程安全机制?
- 分段锁(JDK7):将数据分段,锁粒度细化。
- CAS+synchronized(JDK8):数组+链表/红黑树结构,CAS保证原子性,synchronized保证同步。
23.CAS的问题及解决?
- 问题:ABA问题、循环开销大。
- 解决:AtomicStampedReference解决ABA,结合volatile减少循环。
八、代码实战
24. 手写双重校验单例模式?
public class Singleton {private static volatile Singleton instance; // 禁止指令重排private Singleton() {}public static Singleton getInstance() {if (instance == null) { // 第一次检查synchronized (Singleton.class) { // 加锁if (instance == null) { // 第二次检查instance = new Singleton(); // 初始化对象}}}return instance;}
}
volatile的必要性:
- 防止instance = new Singleton()的指令重排(先分配内存,再初始化对象,最后赋值引用)。
- 若未使用volatile,其他线程可能在初始化完成前拿到未完全构造的对象。
25.线程的创建方式对比
// 继承Thread类
public class ThreadDemo extends Thread {@Overridepublic void run() {System.out.println("Thread running");}
}// 实现Runnable接口
public class RunnableDemo implements Runnable {@Overridepublic void run() {System.out.println("Runnable running");}
}// 实现Callable接口
public class CallableDemo implements Callable<String> {@Overridepublic String call() throws Exception {return "Callable result";}
}// 使用示例
public static void main(String[] args) throws Exception {// Threadnew ThreadDemo().start();// Runnablenew Thread(new RunnableDemo()).start();// Callable + FutureTaskFutureTask<String> futureTask = new FutureTask<>(new CallableDemo());new Thread(futureTask).start();System.out.println("Result: " + futureTask.get());
}
原理对比:
- Thread类本身实现了Runnable接口,通过继承方式耦合度较高。
- Runnable和Callable将任务与线程解耦,支持更灵活的扩展。
- Callable通过FutureTask包装后,可通过get()方法获取异步结果。
26.ThreadLocal内存泄漏
public class ThreadLocalDemo {private static final ThreadLocal<String> threadLocal = new ThreadLocal<>();public static void main(String[] args) {threadLocal.set("value");// 未调用threadLocal.remove(),可能导致内存泄漏}
}
原理分析:
- ThreadLocalMap的Entry以ThreadLocal为键(弱引用),若未手动remove(),当ThreadLocal对象被回收后,value仍被强引用在Entry中。
- 解决方案:
try {threadLocal.set("value");// 业务逻辑
} finally {threadLocal.remove(); // 在finally中确保清理
}
27.volatile的内存屏障
public class VolatileDemo {private volatile int x = 0;public void write() {x = 1; // 写操作后插入Store-Barrier}public void read() {int y = x; // 读操作前插入Load-Barrier}
}
内存屏障原理:
- Store-Barrier:确保屏障前的写操作全部刷新到主内存。
- Load-Barrier:确保屏障后的读操作从主内存获取最新值。
- 禁止指令重排:通过内存屏障阻止编译器和CPU对volatile变量操作的重排序。
28.synchronized vs ReentrantLock
// synchronized示例
public class SynchronizedDemo {public synchronized void method() {// 同步代码}
}// ReentrantLock示例
public class ReentrantLockDemo {private final ReentrantLock lock = new ReentrantLock();public void method() {lock.lock();try {// 同步代码} finally {lock.unlock();}}
}
29.CountDownLatch vs CyclicBarrier
// CountDownLatch示例
public class CountDownLatchDemo {public static void main(String[] args) throws InterruptedException {CountDownLatch latch = new CountDownLatch(2);new Thread(() -> {System.out.println("Task1 done");latch.countDown();}).start();new Thread(() -> {System.out.println("Task2 done");latch.countDown();}).start();latch.await(); // 等待两个任务完成System.out.println("All tasks done");}
}// CyclicBarrier示例
public class CyclicBarrierDemo {public static void main(String[] args) {CyclicBarrier barrier = new CyclicBarrier(2, () -> {System.out.println("Barrier reached");});new Thread(() -> {try {System.out.println("Task1 ready");barrier.await();System.out.println("Task1 continue");} catch (InterruptedException | BrokenBarrierException e) {e.printStackTrace();}}).start();new Thread(() -> {try {System.out.println("Task2 ready");barrier.await();System.out.println("Task2 continue");} catch (InterruptedException | BrokenBarrierException e) {e.printStackTrace();}}).start();}
}
核心区别:
- CountDownLatch:计数器递减到0后不可重置,用于“等待多个任务完成”。
- CyclicBarrier:计数器达到阈值后重置,可循环使用,用于“多个线程同步执行”。
30.线程池工作流程
ExecutorService executor = new ThreadPoolExecutor(2, // corePoolSize4, // maximumPoolSize30, // keepAliveTimeTimeUnit.SECONDS,new ArrayBlockingQueue<>(10), // workQueueExecutors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy() // 拒绝策略
);
工作流程:
- 提交任务 → 核心线程执行(未达corePoolSize时创建新线程)。
- 核心线程满 → 任务存入队列(如ArrayBlockingQueue)。
- 队列满 → 非核心线程执行(不超过maximumPoolSize)。
- 所有线程忙且队列满 → 触发拒绝策略(如AbortPolicy抛异常)。
31.CAS的ABA问题
AtomicInteger atomicInt = new AtomicInteger(100);
// 线程A:
int oldValue = atomicInt.get();
// 假设线程B将值改为101,再改回100
atomicInt.compareAndSet(oldValue, 200); // CAS成功,但值已被篡改
解决方案:
AtomicStampedReference<Integer> stampedRef = new AtomicStampedReference<>(100, 0);
// 线程A:
int[] stampHolder = new int[1];
int oldValue = stampedRef.get(stampHolder);
int oldStamp = stampHolder[0];
// 线程B修改值并增加版本号
stampedRef.compareAndSet(oldValue, 101, oldStamp, oldStamp + 1);
// 线程A再次尝试CAS:
stampedRef.compareAndSet(oldValue, 200, oldStamp, oldStamp + 1); // 失败(版本号不匹配)
总结:以上题目覆盖Java并发编程核心知识点,建议重点掌握线程安全实现、锁优化、JMM原理、线程池调优等模块。面试时需结合源码和实际场景说明设计原理,体现对底层机制的理解。
相关文章:
Java并发编程高频面试题
一、基础概念 1. 并行与并发的区别? 并行:多个任务在多个CPU核心上同时执行(物理上同时)。并发:多个任务在单CPU核心上交替执行(逻辑上同时)。类比:并行是多个窗口同时服务&#x…...
Invalid bound statement (not found)
前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…...
【Vue-路由】学习笔记
目录 <<回到导览路由1.单页应用和多页面2.路由基本使用2.1.路由的含义2.2.VueRouter插件2.3.配置路由规则和导航2.4.组件目录存放2.5.路由模块封装 3.rounter3.1.router-link实现高亮3.2.自定义匹配类名3.3.声明式导航3.3.1.查询参数传参3.3.2.动态路由传参3.3.3.总结 3.…...
前端服务配置详解:从入门到实战
前端服务配置详解:从入门到实战 一、环境配置文件(.env) 1.1 基础结构 在项目根目录创建 .env 文件: # 开发环境 VUE_APP_API_BASE_URL http://localhost:3000/api VUE_APP_VERSION 1.0.0# 生产环境(.env.produc…...
Java安全管理器 - SecurityManager
什么是Java安全管理器? Java安全管理器是Java提供的保护JVM和程序安全的机制,它能限制用户的代码对文件、内存、资源、网络的操作和访问,防止恶意代码入侵程序。常用来控制用户提交的代码对各种资源的访问权限,防止用户恶意提交代…...
Arrays操作工具 Lambda表达式 集合 迭代器 数据结构 泛型 set集合 list集合
Arrays操作工具 自己定义的排序规则 简单理解如果是:o1 - o2 升序排列 o2 - o1 降序排列 Lambda表达式 函数式编程 函数式编程(Functional programming)是一种思想特点。 面向对象:先去找对象,让对象做事情。。函数式…...
ORM、Mybatis和Hibernate、Mybatis使用教程、parameterType、resultType、级联查询案例、resultMap映射
DAY21.1 Java核心基础 ORM Object Relationship Mapping 对象关系映射 面向对象的程序到—关系型数据库的映射 比如java – MySQL的映射 ORM框架就是实现这个映射的框架 Hibernate、Mybatis、MybatisPlus、Spring Data JPA、Spring JDBC Spring Data JPA的底层就是Hiber…...
《Java八股文の文艺复兴》第十一篇:量子永生架构——对象池的混沌边缘(终极试炼·完全体)
Tags: - Java高并发 - 量子架构 - 混沌工程 - 赛博修真 - 三体防御 目录: 卷首语:蝴蝶振翅引发的量子海啸 第一章:混沌初开——对象池的量子涅槃(深度扩展) 第二章:混沌计算——对象复活的降维打击&…...
蓝桥杯备赛---真题训练之15届蓝桥杯找回连接之旅
题目 介绍 在网络世界中,突然间失去了所有的连接。作为勇敢的冒险者,你将踏上一段惊险刺激的旅程,穿越充满谜题和挑战的网络景观,与神秘的网络幽灵对抗,解开断网之谜,找回失去的连接,带领人们重…...
PowerApps MDA-模版-文档模版无法下载和上传Word模版
Power Apps的高级设置-模版中,文档模版目前只能看到新建和上传Excel模版,看不到Word模版 这是一个已知bug, 什么时候能修复不好说,解决办法也很简单,先上传一个Excel模版,随便任何一个实体就行,为的是视图列…...
全国大学生数学建模竞赛赛题深度分析报告(2010-2024)
全国大学生数学建模竞赛赛题深度分析报告(2010-2024) 全国大学生数学建模竞赛(CUMCM)是中国最具影响力的大学生科技竞赛之一,本报告将对2010-2024年间的赛题进行全面统计分析,包括题目类型、领域分布、模型方法等多个维度&#x…...
职坐标解析自动驾驶技术发展新趋势
内容概要 作为智能交通革命的核心驱动力,自动驾驶技术正以惊人的速度重塑出行生态。2023年,行业在多传感器融合与AI算法优化两大领域实现突破性进展:激光雷达、摄像头与毫米波雷达的协同精度提升至厘米级,而深度学习模型的实时决…...
快速入手-前后端分离Python权限系统 基于Django5+DRF+Vue3.2+Element Plus+Jwt
引用:打造前后端分离Python权限系统 基于Django5DRFVue3.2Element PlusJwt 视频教程 (火爆连载更新中..)_哔哩哔哩_bibili 说明:1、结合个人DRF基础和该视频去根据自己的项目进行开发。 2、引用该视频中作者的思路去升华自身的项…...
HTTP 协议详解
HTTP 协议 HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的协议之一,用于在客户端(如浏览器)和服务器之间传输超文本(如网页)。 HTTP 是万维网ÿ…...
巧记英语四级单词 Unit1-4【晓艳老师版】
tain—take拿着、sus 下面,只有sur表示上面、ob表示方向、de往下,分开 retain v.保持 re-重复,tain—take拿着,重复的拿着maintain v. 维持,维修,保养 main主要的,主要的东西都拿着的那个人维…...
Transformers without Normalization论文翻译
论文信息: 作者:Jiachen Zhu, Xinlei Chen, Kaiming He, Yann LeCun, Zhuang Liu 论文地址:arxiv.org/pdf/2503.10622 代码仓库:jiachenzhu/DyT: Code release for DynamicTanh (DyT) 摘要 归一化层在现代神经网络中无处不在…...
Ollama
目录 定义与核心功能应用场景Ollama与Llama的关系安装与使用 Ollama是一个开源的本地大语言模型(LLM)运行框架,专为在本地机器上便捷部署和运行大型语言模型而设计。以下是关于Ollama的全面介绍: 定义与核心功能 多种预训练语言模…...
社交app圈子模块0到1实现
一、逻辑分析 用户相关 用户需要能够创建圈子,这涉及到用户身份验证,确保只有注册用户可以进行创建操作。每个圈子有创建者,创建者对圈子有一定的管理权限,如设置圈子规则、邀请成员等。 圈子信息 圈子需要有名称、简介、头像等基…...
OpenCV--图像边缘检测
在计算机视觉和图像处理领域,边缘检测是极为关键的技术。边缘作为图像中像素值发生急剧变化的区域,承载了图像的重要结构信息,在物体识别、图像分割、目标跟踪等众多应用场景中发挥着核心作用。OpenCV 作为强大的计算机视觉库,提供…...
批量压缩 jpg/png 等格式照片|批量调整图片的宽高尺寸
图片格式种类非常的多,并且不同的图片由于像素、尺寸不一样,可能占用的空间也会不一样。文件太大会占用较多的磁盘空间,传输及上传系统都非常不方便,可能会收到限制,因此我们经常会碰到需要对图片进行压缩的需求。如何…...
[Linux系统编程]多线程
多线程 1. 线程1.1 线程的概念1.2 进程与线程对比1.3 轻量级进程 2. Linux线程控制2.1 POSIX 线程(pthread)2.2 线程ID、pthread_t、和进程地址空间的关系2.2.1 pthread_self2.2.2 pthread_create2.2.3 pthread_join2.2.4 线程终止的三种方式2.2.5 pthre…...
进程状态(运行 阻塞 僵尸)及其场景分析
【Linux学习笔记】Linux基本指令及其分析 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 前言 哈喽,各位小伙伴大家好!上期我们讲了进程PCB 今天我们讲的是进程状态(运行 阻塞 僵尸)及其场景分析。话不多说&#…...
程序化广告行业(67/89):DMP系统标签制作与人群拓展深度解析
程序化广告行业(67/89):DMP系统标签制作与人群拓展深度解析 大家好!在之前的分享中,我们对程序化广告的多个关键环节进行了探讨。今天,咱们继续深入了解程序化广告中的DMP系统,聚焦于标签制作和…...
【QT】QPixmap QImage QBitmap QPicture
文章目录 **1. QPixmap****特点****典型应用场景****示例** **2. QImage****特点****典型应用场景****示例** **3. QBitmap****特点****示例** **4. 三者的主要区别****5. 如何选择?****使用 QPixmap 的情况****使用 QImage 的情况****使用 QBitmap 的情况** **6. 相…...
如何开通google Free Tier长期免费云服务器(1C/1G)
Google宣布的一项政策,为标准层级的网络提供每地域200G的免费流量。两项政策结合,于是便可以得到一台1核心、1G内存、30G磁盘、200G流量的小云服务器,可玩性大大提高。这篇文章就分享一下如何正确开机,避免产生额外的费用。 免费…...
Kaggle房价预测
实战 Kaggle 比赛:预测房价 这里李沐老师讲的比较的细致,我根据提供的代码汇总了一下: import hashlib import os import tarfile import zipfile import requests import numpy as np import pandas as pd import torch from matplotlib i…...
4.7学习总结 java集合进阶
集合进阶 泛型 //没有泛型的时候,集合如何存储数据 //结论: //如果我们没有给集合指定类型,默认认为所有的数据类型都是object类型 //此时可以往集合添加任意的数据类型。 //带来一个坏处:我们在获取数据的时候,无法使用他的特有行为。 //此…...
设计模式 - 代理模式Proxy
设计思想: 举个通俗的例子,你想找某局长帮你做一件事情,但局长官位显赫,你又不能轻易见着,你就想到了找他的秘书,通过她传话给局长,这样你就等于请他的秘书帮你办成了那件事。秘书为什么就可以…...
计算机网络体系结构(一)
1.计算机网络概述 1.1计算机网络的概念 计算机网络是由相互连接的计算机及其周边设备构成的系统,这些计算机和设备通过各种通信介质实现数据和资源的共享。计算机网络的主要目的是为了增强信息传递的效率、便利性和可靠性。以下是一些计算机网络的关键概念…...
数据结构与算法-数学-基础数学2(扩展欧几里得算法,组合数问题)
六:扩展欧几里得算法 同余: 若 a≡b(modm),则 m 整除 a−b,即 abkm(k 为整数)。 扩展欧几里得算法 扩展欧几里得算法可用于求解 axbygcd(a,b) 的一组整数解。 #include <iostream> using namesp…...
【力扣hot100题】(072)柱状图中的最大矩阵
这绝对是我做过印象最深的算法题之一。(还有是那道盛水最多的贪心题) 当初不知道想了多少个日日夜夜,所幸这道题已经深深的烙印在了我的脑海里。 现在看来也没那么可怕()不过初见确实非常难想到单调栈。 方法如下&a…...
T-SQL语言的压力测试
T-SQL语言的压力测试 随着数据驱动技术的发展,数据库在现代应用中的角色愈加重要。而在数据库管理系统中,微软的SQL Server凭借其强大的功能和易用性,广泛应用于各行业。在这一环境中,T-SQL(Transact-SQL)…...
debian 系统gnome怎么关闭触摸屏三指滑动
ubuntu如何限制三指手势操作_ubuntu 手势-CSDN博客 参考方案给上面了, kiosk模式 就是专用模式,类似于广告机、售货机那种。 方案 在 Debian 系统的 GNOME 桌面环境中,可以通过以下方法关闭触摸屏三指滑动功能: 安装 gnome-tweaks 工具:...
【9】搭建k8s集群系列(二进制部署)之安装work-node节点组件(kube-proxy)和网络组件calico
承接上一篇文章,继续安装工作节点的第二个组件:kube-proxy 一、创建配置文件 cat > /opt/kubernetes/cfg/kube-proxy.conf << EOF KUBE_PROXY_OPTS"--logtostderrfalse \\ --v2 \\ --log-dir/opt/kubernetes/logs \\ --config/opt/kubern…...
MongoDB及Yapi迁移数据
一、MongoDB安装及迁移 1、导入MongoDB GPG密钥 sudo rpm --import https://www.mongodb.org/static/pgp/server-5.0.asc 2、创建MongoDB 安装源配置文件 vi /etc/yum.repos.d/mongodb-org-5.0.repo,添加以下内容: [mongodb-org-5.0] nameMongoDB Repo…...
高效解读机器语言,profinet转ethernet ip网关烟草企业自动化升级案例分析
工业通信协议转换在烟草生产线的实践应用 某中型烟草生产企业为提高自动化水平,引进了西门子S7-1500系列PLC控制系统和防爆型科氏力质量流量计。但在系统集成阶段,技术人员发现PLC支持的PROFINET协议与流量计采用的EtherNet/IP协议存在互操作障碍&#x…...
使用Scade实现神经网络算法
在ERTS2022中,ANSYS 发表了使用Scade实现神经网络AI算法的相关工作。论文题目为《Programming Neural Networks Inference in a Safety-Critical Simulation-based Framework》 背景与挑战 神经网络在安全关键系统中的应用:随着嵌入式系统中自主性的引入…...
rom定制系列------小米10pro机型定制解锁固件 原生安卓15批量线刷固件 操作解析与界面预览
注意;固件用于自己机型忘记密码或者手机号注销等出现设备锁 过保修期 售后无视的机型,勿用于非法途径 目前有粉丝联系,自己的机型由于手机号注销导致手机更新系统后出现设备锁界面。另外也没有解锁bl。目前无法使用手机。经过询问是小米10pro机型。根据…...
2023年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析
2023年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析 全国大学生数学建模竞赛(China Undergraduate Mathematical Contest in Modeling)是国家教委高教司和中国工业与应用数学学会共同主办的面向全国大学生的群众性科技活动,目的在于激…...
2014年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析
2014年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析 全国大学生数学建模竞赛(China Undergraduate Mathematical Contest in Modeling)是国家教委高教司和中国工业与应用数学学会共同主办的面向全国大学生的群众性科技活动,目的在于激励学生学习数学的积极性,提高学…...
【Docker基础】--查阅笔记1
目录 Docker是什么Docker解决什么问题Docker的理念Docker基本组成镜像(image)容器(container)仓库(registry) Docker平台架构Docker基本实现原理 Docker常用命令总结 Docker是什么 Docker解决什么问题 统…...
算法(动态规划)
动态规划 基本思想 将问题分解为相互重叠的子问题 定义子问题:将原问题分解为若干个子问题。确定状态转移方程:找到子问题之间的递推关系。边界条件:确定初始状态的值。递推计算:根据状态转移方程和边界条件逐步计算子问题的解。…...
2025 年前端与后端开发方向的抉择与展望-优雅草卓伊凡
2025 年前端与后端开发方向的抉择与展望-优雅草卓伊凡 在 2025 年这个科技浪潮奔涌的时代,软件开发领域持续变革,前端与后端开发方向的抉择,成为众多从业者和爱好者亟待破解的关键命题。卓伊凡就频繁收到这样的疑问:“2025 年了&…...
指纹浏览器技术架构解析:高并发批量注册业务的工程化实践——基于分布式指纹引擎与防关联策略的深度实现
一、技术背景与行业痛点 在跨境电商、广告投放、问卷调查等场景中,批量注册与多账号矩阵运营已成为刚需。然而,主流平台(如亚马逊、Facebook、Google)的风控系统通过浏览器指纹追踪(Canvas/WebGL/WebRTC等)…...
基于SpringBoot的“智慧医疗采购系统”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“智慧医疗采购系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 局部E-R图 系统首页界面 系统…...
codeforces B. Large Array and Segments
题目简述: 给定一个长度为n的数组,以及两个整数k和p,该数组可以通过复制在增加长度,可以复制k次,我们最后要找到保证后缀和至少为p的首元结点的数量 思路简述: 找到有多少个完整的原数组n,最…...
VS Code-i18n Ally国际化插件
前言 本文借鉴:i18n Ally 插件帮你轻松搞定国际化需求-按模块划分i18n Ally 是一款 VS Code 插件,它能通过可视 - 掘金本来是没有准备将I18n Ally插件单独写一个博客的,但是了解过后,功能强大,使用方便,解决…...
ResNet改进(21):基于ECA注意力机制的ResNet18网络实现
一、引言 在计算机视觉领域,ResNet(残差网络)一直是图像分类任务中的重要基准模型。今天我们要介绍的是一个改进版的ResNet18网络,它在传统ResNet结构的基础上加入了ECA(Efficient Channel Attention)注意力机制,能够在不显著增加计算量的情况下提升模型性能。 二、网络…...
[ERROR] Some problems were encountered while processing the POMs
记录一次maven的错误 问题复现: 我在ruoyi-vue-plus项目的ruoyi-modules中新建了一个子项目ruoyi-network-telphonem,然后某一次编译的时候提示SysTenantServiceImpl找不到无参的构造函数,检查了很久都没发现问题,于是我想着删掉本地maven仓…...
【网络协议】WebSocket讲解
目录 webSocket简介 连接原理解析: 客户端API 服务端API(java) 实战案例 (1)引入依赖 (2)编写服务端逻辑 (3)注册配置类 (4)前端连接 WebSocket 示例…...