面试准备——Java理论高级【笔试,面试的核心重点】
集合框架
Java集合框架是面试中的重中之重,尤其是对List
、Set
、Map
的实现类及其底层原理的考察。
1. List
-
ArrayList:
- 底层是动态数组,支持随机访问(通过索引),时间复杂度为O(1)。
- 插入和删除元素时,如果是在中间位置,需要移动后续元素,时间复杂度为O(n)。
- 扩容机制:默认初始容量为10,扩容时增加为原来的1.5倍。
- 线程不安全。
面试问题:
- ArrayList的扩容机制是什么?
- ArrayList和LinkedList的区别?
案例:
List<Integer> list = new ArrayList<>(); list.add(1); // 添加元素 list.get(0); // 获取元素 list.remove(0); // 删除元素
-
LinkedList:
- 底层是双向链表,适合频繁的插入和删除操作,时间复杂度为O(1)。
- 随机访问效率低,时间复杂度为O(n)。
- 线程不安全。
面试问题:
- LinkedList的实现原理是什么?
- 如何实现一个LRU缓存?(可以用LinkedList实现)
案例:
List<Integer> linkedList = new LinkedList<>(); linkedList.add(1); linkedList.add(2); linkedList.remove(1); // 删除元素
2. Set
-
HashSet:
- 基于
HashMap
实现,元素无序且不允许重复。 - 添加元素时,先计算哈希值,再通过
equals
方法判断是否重复。 - 线程不安全。
面试问题:
- HashSet如何保证元素唯一性?
- HashSet和TreeSet的区别?
案例:
Set<String> set = new HashSet<>(); set.add("A"); set.add("B"); set.add("A"); // 不会重复添加
- 基于
-
TreeSet:
- 基于
TreeMap
实现,元素按自然顺序或自定义顺序排序。 - 内部使用红黑树实现,插入、删除、查找的时间复杂度为O(log n)。
- 线程不安全。
案例:
Set<Integer> treeSet = new TreeSet<>(); treeSet.add(3); treeSet.add(1); treeSet.add(2); System.out.println(treeSet); // 输出 [1, 2, 3]
- 基于
3. Map
-
HashMap:
- 基于哈希表实现,允许
null
键和null
值。 - 扩容机制:默认初始容量为16,负载因子为0.75,扩容时容量变为原来的2倍。
- 线程不安全。
面试问题:
- HashMap的底层实现原理?
- HashMap如何解决哈希冲突?(链地址法)
- JDK 1.8中HashMap的优化?(引入红黑树)
案例:
Map<String, Integer> map = new HashMap<>(); map.put("A", 1); map.put("B", 2); map.get("A"); // 获取值
- 基于哈希表实现,允许
-
ConcurrentHashMap:
- 线程安全的HashMap,JDK 1.8之前使用分段锁,JDK 1.8之后使用CAS + synchronized。
- 面试问题:
- ConcurrentHashMap如何保证线程安全?
- ConcurrentHashMap的锁粒度是什么?
案例:
Map<String, Integer> concurrentMap = new ConcurrentHashMap<>(); concurrentMap.put("A", 1); concurrentMap.put("B", 2);
File API
File API用于操作文件和目录,常见操作包括创建、删除、重命名、遍历等。
常见面试问题:
-
如何递归遍历目录下的所有文件?
- 使用递归或
Files.walk()
方法。
案例:
public void listFiles(File dir) {if (dir.isDirectory()) {File[] files = dir.listFiles();for (File file : files) {if (file.isDirectory()) {listFiles(file); // 递归} else {System.out.println(file.getName());}}} }
- 使用递归或
-
如何读取大文件?
- 使用
BufferedReader
逐行读取。
案例:
try (BufferedReader br = new BufferedReader(new FileReader("largeFile.txt"))) {String line;while ((line = br.readLine()) != null) {System.out.println(line);} }
- 使用
IO
Java IO分为字节流和字符流,常见类包括InputStream
、OutputStream
、Reader
、Writer
。
常见面试问题:
-
字节流 vs 字符流的区别?
- 字节流以字节为单位操作数据,适合处理二进制文件(如图片、视频)。
- 字符流以字符为单位操作数据,适合处理文本文件。
案例:
// 字节流 try (FileInputStream fis = new FileInputStream("input.txt");FileOutputStream fos = new FileOutputStream("output.txt")) {int data;while ((data = fis.read()) != -1) {fos.write(data);} }// 字符流 try (FileReader fr = new FileReader("input.txt");FileWriter fw = new FileWriter("output.txt")) {int data;while ((data = fr.read()) != -1) {fw.write(data);} }
-
NIO是什么?
- NIO(Non-blocking IO)是Java提供的高性能IO API,基于通道(Channel)和缓冲区(Buffer)操作。
- 核心组件:
Channel
、Buffer
、Selector
。
案例:
try (FileChannel channel = FileChannel.open(Paths.get("input.txt"), StandardOpenOption.READ)) {ByteBuffer buffer = ByteBuffer.allocate(1024);while (channel.read(buffer) > 0) {buffer.flip();while (buffer.hasRemaining()) {System.out.print((char) buffer.get());}buffer.clear();} }
线程
线程是Java并发编程的核心,面试中常考线程的创建、生命周期、同步机制等。
常见面试问题:
-
如何实现线程同步?
- 使用
synchronized
关键字或ReentrantLock
。
案例:
class Counter {private int count = 0;public synchronized void increment() {count++;}public int getCount() {return count;} }
- 使用
-
wait()、notify()、notifyAll()的作用?
- 用于线程间的通信,
wait()
使线程等待,notify()
唤醒一个等待线程,notifyAll()
唤醒所有等待线程。
案例:
class SharedResource {private boolean flag = false;public synchronized void produce() {while (flag) {try {wait();} catch (InterruptedException e) {e.printStackTrace();}}flag = true;notify();}public synchronized void consume() {while (!flag) {try {wait();} catch (InterruptedException e) {e.printStackTrace();}}flag = false;notify();} }
- 用于线程间的通信,
线程池
线程池是面试中的高频考点,尤其是对ThreadPoolExecutor
的参数和原理的考察。
常见面试问题:
-
线程池的核心参数有哪些?
corePoolSize
:核心线程数。maximumPoolSize
:最大线程数。keepAliveTime
:空闲线程存活时间。workQueue
:任务队列。threadFactory
:线程工厂。handler
:拒绝策略。
-
线程池的拒绝策略有哪些?
AbortPolicy
:直接抛出异常。CallerRunsPolicy
:由调用线程处理任务。DiscardOldestPolicy
:丢弃队列中最老的任务。DiscardPolicy
:直接丢弃任务。
案例:
ThreadPoolExecutor executor = new ThreadPoolExecutor(2, // corePoolSize5, // maximumPoolSize60, // keepAliveTimeTimeUnit.SECONDS,new LinkedBlockingQueue<>(10),Executors.defaultThreadFactory(),new ThreadPoolExecutor.CallerRunsPolicy() );
问题答案
ArrayList的扩容机制是什么?
-
答案:
ArrayList
的底层是一个动态数组,初始容量为10。- 当元素数量超过当前容量时,
ArrayList
会自动扩容。 - 扩容时,新容量通常是旧容量的1.5倍(即
oldCapacity + (oldCapacity >> 1)
)。 - 扩容过程会创建一个新的数组,并将旧数组中的元素复制到新数组中。
示例:
ArrayList<Integer> list = new ArrayList<>(); for (int i = 0; i < 20; i++) {list.add(i); // 当元素数量超过10时,ArrayList会自动扩容 }
ArrayList和LinkedList的区别?
-
答案:
- 底层实现:
ArrayList
基于动态数组,支持随机访问,时间复杂度为O(1)。LinkedList
基于双向链表,插入和删除操作效率高,时间复杂度为O(1),但随机访问效率低,时间复杂度为O(n)。
- 内存占用:
ArrayList
占用连续内存空间。LinkedList
占用非连续内存空间,每个节点需要额外存储前后节点的引用。
- 适用场景:
ArrayList
适合频繁查询的场景。LinkedList
适合频繁插入和删除的场景。
示例:
List<Integer> arrayList = new ArrayList<>(); arrayList.add(1); // 适合查询 arrayList.get(0); // O(1)List<Integer> linkedList = new LinkedList<>(); linkedList.add(1); // 适合插入和删除 linkedList.remove(0); // O(1)
- 底层实现:
HashSet如何保证元素唯一性?
-
答案:
HashSet
基于HashMap
实现,元素存储在HashMap
的键中。- 添加元素时,先计算元素的哈希值(通过
hashCode()
方法),然后通过equals()
方法判断是否重复。 - 如果哈希值相同且
equals()
返回true
,则认为元素重复,不会添加。
示例:
Set<String> set = new HashSet<>(); set.add("A"); set.add("B"); set.add("A"); // 不会重复添加
HashMap的底层实现原理?
-
答案:
HashMap
基于哈希表实现,底层是数组 + 链表(JDK 1.8之前)或数组 + 链表 + 红黑树(JDK 1.8之后)。- 添加元素时,先计算键的哈希值,然后通过哈希值找到数组中的位置(桶)。
- 如果发生哈希冲突(即多个键映射到同一个桶),则使用链表或红黑树存储冲突的元素。
- 当链表长度超过8时,链表会转换为红黑树,以提高查找效率。
示例:
Map<String, Integer> map = new HashMap<>(); map.put("A", 1); map.put("B", 2); map.get("A"); // 获取值
LinkedList的实现原理是什么?
-
答案:
LinkedList
是基于双向链表实现的。- 每个节点(
Node
)包含三个部分:- 数据域(存储元素值)。
- 前驱指针(指向前一个节点)。
- 后继指针(指向后一个节点)。
- 链表的头节点(
first
)和尾节点(last
)分别指向链表的第一个和最后一个节点。 - 插入和删除操作只需要修改节点的指针,时间复杂度为O(1)。
- 随机访问需要从头节点或尾节点遍历,时间复杂度为O(n)。
示例:
LinkedList<Integer> list = new LinkedList<>(); list.add(1); // 添加到链表尾部 list.add(2); list.remove(1); // 删除元素
如何实现一个LRU缓存?(可以用LinkedList实现)
-
答案:
- LRU(Least Recently Used)缓存是一种淘汰最近最少使用数据的缓存策略。
- 可以使用
LinkedList
+HashMap
实现:LinkedList
用于维护数据的访问顺序,最近访问的数据放在链表头部。HashMap
用于快速查找数据。
实现步骤:
- 当访问一个数据时,如果数据在缓存中,则将其移动到链表头部。
- 如果数据不在缓存中,则将其添加到链表头部。
- 如果缓存已满,则移除链表尾部的数据。
示例:
class LRUCache<K, V> {private final int capacity;private final Map<K, V> map;private final LinkedList<K> list;public LRUCache(int capacity) {this.capacity = capacity;this.map = new HashMap<>();this.list = new LinkedList<>();}public V get(K key) {if (map.containsKey(key)) {list.remove(key); // 移除旧位置list.addFirst(key); // 放到链表头部return map.get(key);}return null;}public void put(K key, V value) {if (map.containsKey(key)) {list.remove(key); // 移除旧位置} else if (map.size() >= capacity) {K lastKey = list.removeLast(); // 移除链表尾部数据map.remove(lastKey);}list.addFirst(key); // 放到链表头部map.put(key, value);} }
HashSet和TreeSet的区别?
-
答案:
- 底层实现:
HashSet
基于HashMap
实现,元素无序。TreeSet
基于TreeMap
实现,元素按自然顺序或自定义顺序排序。
- 性能:
HashSet
的插入、删除、查找操作的时间复杂度为O(1)。TreeSet
的插入、删除、查找操作的时间复杂度为O(log n)。
- 适用场景:
HashSet
适合需要快速查找且不关心顺序的场景。TreeSet
适合需要有序数据的场景。
示例:
Set<Integer> hashSet = new HashSet<>(); hashSet.add(3); hashSet.add(1); hashSet.add(2); System.out.println(hashSet); // 输出顺序不确定Set<Integer> treeSet = new TreeSet<>(); treeSet.add(3); treeSet.add(1); treeSet.add(2); System.out.println(treeSet); // 输出 [1, 2, 3]
- 底层实现:
HashMap如何解决哈希冲突?(链地址法)
-
答案:
HashMap
使用链地址法解决哈希冲突。- 当多个键映射到同一个桶(数组位置)时,
HashMap
会将这些键值对存储在同一个链表中。 - 在JDK 1.8中,当链表长度超过8时,链表会转换为红黑树,以提高查找效率。
示例:
Map<String, Integer> map = new HashMap<>(); map.put("A", 1); map.put("B", 2); map.put("C", 3); // 假设 "A" 和 "B" 的哈希值相同,它们会被存储在同一个链表中
JDK 1.8中HashMap的优化?(引入红黑树)
-
答案:
- 在JDK 1.8中,
HashMap
引入了红黑树来优化性能。 - 当链表长度超过8时,链表会转换为红黑树,查找时间复杂度从O(n)降低到O(log n)。
- 当红黑树的节点数少于6时,红黑树会退化为链表。
优化点:
- 提高了哈希冲突严重时的查找效率。
- 减少了链表过长时的性能问题。
示例:
Map<String, Integer> map = new HashMap<>(); for (int i = 0; i < 100; i++) {map.put("Key" + i, i); } // 当链表长度超过8时,会自动转换为红黑树
- 在JDK 1.8中,
ConcurrentHashMap的锁粒度是什么?
-
答案:
- 在JDK 1.7中,
ConcurrentHashMap
使用分段锁(Segment),每个段独立加锁,锁粒度是段级别。 - 在JDK 1.8中,
ConcurrentHashMap
使用CAS +synchronized
,锁粒度是桶级别(数组中的每个位置)。- 对每个桶(数组中的每个位置)使用
synchronized
锁。 - 使用CAS操作保证原子性。
- 对每个桶(数组中的每个位置)使用
示例:
Map<String, Integer> concurrentMap = new ConcurrentHashMap<>(); concurrentMap.put("A", 1); concurrentMap.put("B", 2);
- 在JDK 1.7中,
ConcurrentHashMap如何保证线程安全?
-
答案:
- 在JDK 1.7中,
ConcurrentHashMap
使用分段锁(Segment),每个段独立加锁。 - 在JDK 1.8中,
ConcurrentHashMap
使用CAS(Compare-And-Swap) +synchronized
实现线程安全。- 对每个桶(数组中的每个位置)使用
synchronized
锁。 - 使用CAS操作保证原子性。
- 对每个桶(数组中的每个位置)使用
示例:
Map<String, Integer> concurrentMap = new ConcurrentHashMap<>(); concurrentMap.put("A", 1); concurrentMap.put("B", 2);
- 在JDK 1.7中,
如何递归遍历目录下的所有文件?
-
答案:
- 使用递归方法遍历目录及其子目录。
- 对于每个文件,如果是目录,则递归调用;如果是文件,则输出文件名。
示例:
public void listFiles(File dir) {if (dir.isDirectory()) {File[] files = dir.listFiles();for (File file : files) {if (file.isDirectory()) {listFiles(file); // 递归} else {System.out.println(file.getName());}}} }
字节流 vs 字符流的区别?
-
答案:
- 字节流:以字节为单位操作数据,适合处理二进制文件(如图片、视频)。
- 核心类:
InputStream
、OutputStream
。
- 核心类:
- 字符流:以字符为单位操作数据,适合处理文本文件。
- 核心类:
Reader
、Writer
。
- 核心类:
示例:
// 字节流 try (FileInputStream fis = new FileInputStream("input.txt");FileOutputStream fos = new FileOutputStream("output.txt")) {int data;while ((data = fis.read()) != -1) {fos.write(data);} }// 字符流 try (FileReader fr = new FileReader("input.txt");FileWriter fw = new FileWriter("output.txt")) {int data;while ((data = fr.read()) != -1) {fw.write(data);} }
- 字节流:以字节为单位操作数据,适合处理二进制文件(如图片、视频)。
如何实现线程同步?
-
答案:
- 使用
synchronized
关键字或ReentrantLock
实现线程同步。 synchronized
可以修饰方法或代码块,确保同一时刻只有一个线程访问共享资源。
示例:
class Counter {private int count = 0;public synchronized void increment() {count++;}public int getCount() {return count;} }
- 使用
线程池的核心参数有哪些?
-
答案:
corePoolSize
:核心线程数。maximumPoolSize
:最大线程数。keepAliveTime
:空闲线程存活时间。workQueue
:任务队列。threadFactory
:线程工厂。handler
:拒绝策略。
示例:
ThreadPoolExecutor executor = new ThreadPoolExecutor(2, // corePoolSize5, // maximumPoolSize60, // keepAliveTimeTimeUnit.SECONDS,new LinkedBlockingQueue<>(10),Executors.defaultThreadFactory(),new ThreadPoolExecutor.CallerRunsPolicy() );
线程池的拒绝策略有哪些?
-
答案:
AbortPolicy
:直接抛出异常。CallerRunsPolicy
:由调用线程处理任务。DiscardOldestPolicy
:丢弃队列中最老的任务。DiscardPolicy
:直接丢弃任务。
示例:
ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 5, 60, TimeUnit.SECONDS,new LinkedBlockingQueue<>(10),Executors.defaultThreadFactory(),new ThreadPoolExecutor.CallerRunsPolicy() );
哈希表核心原理
相关文章:
面试准备——Java理论高级【笔试,面试的核心重点】
集合框架 Java集合框架是面试中的重中之重,尤其是对List、Set、Map的实现类及其底层原理的考察。 1. List ArrayList: 底层是动态数组,支持随机访问(通过索引),时间复杂度为O(1)。插入和删除元素时&#…...
Docker 部署 verdaccio 搭建 npm 私服
一、镜像获取 # 获取 verdaccio 镜像 docker pull verdaccio/verdaccio 二、修改配置文件 cd /wwwroot/opt/docker/verdaccio/conf vim config.yaml config.yaml 配置文件如下,可以根据自己的需要进行修改 # # This is the default configuration file. It all…...
每日一题--数组中只出现一次的两个数字
数组中只出现一次的两个数字 题目描述数据范围提示 示例示例1示例2 题解解题思路位运算方法步骤: 代码实现代码解析时间与空间复杂度按位与操作获取最小位1的原理为什么选择最低有效的 1 位而不是其他位? 题目描述 一个整型数组里除了两个数字只出现一次…...
蓝耘智算平台与DeepSeek R1模型:推动深度学习发展
公主请阅 前言何为DeepSeek R1DeepSeek R1 的特点DeepSeek R1 的应用领域DeepSeek R1 与其他模型的对比 何为蓝耘智算平台使用蓝耘智算平台深度使用DeepSeek R1代码解释:处理示例输入:输出结果: 前言 在深度学习领域,创新迭代日新…...
数据中台是什么?:架构演进、业务整合、方向演进
文章目录 1. 引言2. 数据中台的概念与沿革2.1 概念定义2.2 历史沿革 3. 数据中台的架构组成与关键技术要素解析3.1 架构组成3.2 关键技术要素 4. 数据中台与其他平台的对比详细解析 5. 综合案例:金融行业数据中台落地实践5.1 背景5.2 解决方案5.3 成果与价值 6. 方向…...
告别2023~2024
时间过得真快,距离上次写作2年多了。2023年~2024年的这两年时光里经历太多人生大事: 房贷,提前还贷买车,全款拿下租房搬家媳妇怀孕,独自照顾,……老人离世开盲盒喜提千金,百岁宴&am…...
PMO项目管理规范标准
这份文档是一份关于 PMO 项目管理规范标准的 V3.0 版本。以下是该文档的主要内容: 1. 立项管理 - 立项标准、级别划分和管理:定义了立项管理的标准、级别划分和管理,包括立项的审批流程、产品可行性分析、立项建议书、产品需求文档等。 - 立项…...
通过类加载和初始化的一些题目理解Java类加载过程
通过题目重点理解:Class加载流程和运行时区域 目录 子类和父类static变量父子类加载顺序2class.forName初始化 子类和父类static变量 class Parent {static int a 1;static int b 2;static int c;static {c 3;System.out.println("parent static block&quo…...
【人工智能】解码语言之谜:使用Python构建神经机器翻译系统
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 神经机器翻译(NMT)是近年来机器翻译领域的一项重大突破。它利用深度学习模型,特别是循环神经网络(RNN)和Transformer网络,以端到端的…...
瑞芯微 Rockchip 系列 RK3588 主流深度学习框架模型转成 rknn 模型教程
前言 在瑞芯微 Rockchip 芯片上进行 NPU 推理,需要先将模型文件转换成 rknn 模型文件,才能执行各种推理任务。本文将介绍如何安装各种工具,并最终实现将各种深度学习框架的模型文件转换成 rknn 文件。 本教程不仅适合 RK3588 平台ÿ…...
51单片机俄罗斯方块计分函数
/************************************************************************************************************** * 名称:scoring * 功能:计分 * 参数:NULL * 返回:NULL * 备注:采用非阻塞延时 ****************…...
C++线程池
使用线程情况比较频繁的地方,由于线程的创建及销毁都会产生对资源的占用及性能的损耗。为了优化性能,提升效率,在这种场景中,就应该使用线程池来处理任务。 线程池创建的关键点: 装载线程的容器,在C中使用…...
Golang GORM系列:定义GORM模型及关系指南
使用GORM进行数据库管理的核心是定义模型的技能。模型是程序的面向对象结构和数据库的关系世界之间的纽带。本文深入研究了在GORM中创建成功模型的艺术,研究了如何设计结构化的Go结构,用标记注释字段,以及开发跨模型的链接,以便最…...
ssm校园二手交易平台小程序
博主介绍:✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
【虚幻引擎UE】AOI算法介绍与实现案例
【虚幻引擎UE】AOI算法介绍与实现 一、AOI算法介绍AOI算法的典型应用场景二、AOI相关算法1. 边界框法(Bounding Box Method)2. 动态AOI算法3. 布尔运算(Boolean Operations)4. 四叉树(Quadtree)5. R树(R-Tree)6. 圆形AOI算法7. 网格分割(Grid Partitioning)8. 多边形…...
JavaScript 基础语法:变量、数据类型、运算符、条件语句、循环
JavaScript 是一种动态类型的脚本语言,广泛用于前端开发。以下是 JavaScript 基础语法的核心内容,包括变量、数据类型、运算符、条件语句和循环。 --- ### 1. 变量 变量用于存储数据。JavaScript 中有三种声明变量的方式: - **var**&…...
ASP.NET Core 如何使用 C# 从端点发出 GET 请求
使用 C#,从 REST API 端点获取 JSON;如何从 REST API 接收 JSON 数据。 本文需要 ASP .NET Core,并兼容 .NET Core 3.1、.NET 6和.NET 8。 要将数据发布到端点,请参阅本文。 使用 . 从端点发布 GET 数据非常容易HttpClient&…...
Docker 部署 MinIO | 国内阿里镜像
一、导读 Minio 是个基于 Golang 编写的开源对象存储套件,基于Apache License v2.0开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如 NodeJS、Redis、MySQL等。 二、…...
量化交易数据获取:xtquant库的高效应用
量化交易数据获取:xtquant库的高效应用 在量化交易领域,历史行情数据的重要性不言而喻。它不仅为策略回测提供基础,也是实时交易决策的重要参考。本文将介绍如何使用xtquant库来高效获取和处理历史行情数据。 技术背景与应用场景 对于量化…...
Mysql中存储引擎各种介绍以及应用场景、优缺点
概述 MySQL 提供了多种存储引擎,每种引擎有不同的特点和适用场景。以下是几种常见的 MySQL 存储引擎的详细介绍,包括它们的底层工作原理、优缺点,以及为什么 MySQL 默认选择某种引擎。 1. InnoDB 底层工作原理: 事务支持&#…...
面试题整理:Java虚拟机 JVM 内存区域、垃圾回收、类加载器
文章目录 JVM虚拟机内存区域1. ⭐JVM的内存区域有哪些?每个区域的作用是什么?2. 堆和栈的区别是什么?3. 堆内存是如何划分的?4. 永久代和元空间是什么关系?5. 对JVM常量池的理解?6. ⭐Java 对象的创建过程&…...
ASP.NET Core 使用 WebClient 从 URL 下载
本文使用 ASP .NET Core 3.1,但它在.NET 5、 .NET 6和.NET 8上也同样适用。如果使用较旧的.NET Framework,请参阅本文,不过,变化不大。 如果想要从 URL 下载任何数据类型,请参阅本文:HttpClient 使用WebC…...
第六届MathorCup高校数学建模挑战赛-A题:淡水养殖池塘水华发生及池水自净化研究
目录 摘要 1 问题的重述 2 问题的分析 2.1 问题一的分析 2.2 问题二的分析 2.3 问题三的分析 2.4 问题四的分析 2.5 问题五的分析 3. 问题的假设 4. 符号说明 5. 模型的建立与求解 5.1 问题一的建模与求解 5.1.1 分析对象与指标的选取 5.1.2 折线图分析 5.1.3 相关性分析 5.1.4…...
GnuTLS: 在 pull 函数中出错。 无法建立 SSL 连接。
提示信息 [root@localhost ~]# wget https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz --2025-02-06 12:45:34-- https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz 正在解析主机 download.docker.com (download.docker.…...
OpenAI 实战进阶教程 - 第十二节 : 多模态任务开发(文本、图像、音频)
适用读者与目标 适用读者:已经熟悉基础的 OpenAI API 调用方式,对文本生成或数据处理有一定经验的计算机从业人员。目标:在本节中,你将学会如何使用 OpenAI 提供的多模态接口(图像生成、语音转录等)开发更…...
《qt easy3d中添加孔洞填充》
《qt easy3d中添加孔洞填充》 效果展示一、创建流程二、核心代码效果展示 参考链接Easy3D开发——点云孔洞填充 一、创建流程 创建动作,并转到槽函数,并将动作放置菜单栏,可以参考前文 其中,槽函数on_actionHoleFill_triggered实现如下:...
windows蓝牙驱动开发-蓝牙常见问题解答
Windows 可以支持多少个蓝牙无线电? Windows 中的蓝牙堆栈仅支持一个蓝牙无线电。 此无线电必须符合蓝牙规范和最新的 Windows 硬件认证计划要求。 蓝牙和 Wi-Fi 无线电如何有效共存? 蓝牙和 Wi-Fi 无线电都在 2.4 GHz 频率范围内运行,因此…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_ssl_version 函数
定义 event\ngx_event_openssl.h 中: #if (OPENSSL_VERSION_NUMBER > 0x10100001L)#define ngx_ssl_version() OpenSSL_version(OPENSSL_VERSION)#else#define ngx_ssl_version() SSLeay_version(SSLEAY_VERSION)#endif #if (OPENSSL_VERSION_NUMBER…...
提示工程:少样本提示(Few-shot Prompting)
少样本提示(Few-shot Prompting)是一种利用大语言模型从少量示例样本中学习并处理任务的方法。它的核心思想是利用大语言模型的上下文学习能力,通过在提示中增加“示例样本”来启发大语言模型达到举一反三的效果。这种方法避免了重新训练或者…...
从量化投资到AI大模型:DeepSeek创始人梁文锋的创新之路
一、学术的启蒙:学霸的崭露头角 梁文锋的成长故事始于1985年,他出生在广东省湛江市的一个普通家庭。从小,梁文锋就展现出对知识的强烈渴望和非凡的学习能力,尤其在数学领域,他总是能够轻松解决复杂的难题,成为学校里备受瞩目的“学霸”。 2002年,年仅17岁的梁文锋以吴川…...
基于lstm+gru+transformer的电池寿命预测健康状态预测-完整数据代码
项目视频讲解: 毕业设计:基于lstm+gru+transformer的电池寿命预测 健康状态预测_哔哩哔哩_bilibili 数据: 实验结果:...
物品匹配问题-25寒假牛客C
登录—专业IT笔试面试备考平台_牛客网 这道题看似是在考察位运算,实则考察的是n个物品,每个物品有ai个,最多能够得到多少个物品的配对.观察题目可以得到,只有100,111,010,001(第一位是ci,第二位是ai,第三位是bi)需要进行操作,其它都是已经满足条件的对,可以假设对其中两个不同…...
Pyecharts系列课程05——散点图(Scatter)
本章我们学习Pyecharts中散点图的实现方法,散点图通常用于观察数据的分布和相关性。 1. 基础使用 散点图也是数据直角坐标系,与我们之前的直方图、折线图的基本用法是一致的。 示例: from pyecharts.charts import Scatterx_data [1, 2, …...
c/c++蓝桥杯经典编程题100道(18)括号匹配
括号匹配 ->返回c/c蓝桥杯经典编程题100道-目录 目录 括号匹配 一、题型解释 二、例题问题描述 三、C语言实现 解法1:栈匹配法(难度★) 解法2:计数器法(仅限单一括号类型,难度★☆) …...
C++病毒
免费版请关注作者,私信 第一期 声明: 仅供损害电脑,不得用于非法。 直接上代码 #include <bits/stdc.h> #include <windows.h> using namespace std; HHOOK g_hHook; LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LP…...
vue学习4
1.自定义创建项目 2.ESlint代码规范 正规的团队需要统一的编码风格 JavaScript Standard Style 规范说明:https://standardjs.com/rules-zhcn.html 规则中的一部分: (1)字符串使用单引号 ‘aabc’ (2)无分号 const name ‘zs’ (3)关键字后加空格 if(n…...
解锁 DeepSeek 模型高效部署密码:蓝耘平台深度剖析与实战应用
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
《DEADiff:一种具有解耦表示高效的风格化扩散模型》
paper:2403.06951 GitHub:bytedance/DEADiff: [CVPR 2024] Official implementation of "DEADiff: An Efficient Stylization Diffusion Model with Disentangled Representations" 目录 摘要 1、介绍 2、相关工作 2.1 扩散模型在文本到…...
webpack系统学习
webpack4和webpack5区别1---loader_webpack4与webpack5处理图片的不同-CSDN博客 webpack4和webpack5区别2---代码压缩_webpack4如何使用terser-CSDN博客 webpack4和webpack5区别3---缓存_cacheprune-CSDN博客 webpack4和webpack5区别4---自动清除打包目录_webpack4打包目录清…...
C++11新特性之unique_ptr智能指针
本节继续介绍智能指针,不了解的读者可以先阅读——C11新特性之shared_ptr智能指针-CSDN博客 1.介绍 unique_ptr是C11标准提供的另一种智能指针。与shared_ptr不同的是,unique_ptr指针指向的堆内存无法同其他unique_ptr共享,也就是每一片堆内…...
如何使用python制作一个天气预报系统
制作一个天气预报系统可以通过调用天气 API 来获取实时天气数据,并使用 Python 处理和展示这些数据。以下是一个完整的指南,包括代码实现和注意事项。 1. 选择天气 API 首先,需要选择一个提供天气数据的 API。常见的天气 API 有: OpenWeatherMap API:提供全球范围内的天…...
保姆级教程Docker部署Zookeeper模式的Kafka镜像
目录 一、安装Docker及可视化工具 二、Docker部署Zookeeper 三、单节点部署 1、创建挂载目录 2、运行Kafka容器 3、Compose运行Kafka容器 4、查看Kafka运行状态 5、验证生产消费 四、部署可视化工具 1、创建挂载目录 2、Compose运行Kafka-eagle容器 3、查看Kafka-e…...
在阿里云ECS上一键部署DeepSeek-R1
DeepSeek-R1 是一款开源模型,也提供了 API(接口)调用方式。据 DeepSeek介绍,DeepSeek-R1 后训练阶段大规模使用了强化学习技术,在只有极少标注数据的情况下提升了模型推理能力,该模型性能对标 OpenAl o1 正式版。DeepSeek-R1 推出…...
P3413 SAC#1 - 萌数
题目背景 本题由世界上最蒟蒻的 SOL 提供。 寂月城网站是完美信息教室的官网。地址:http://191.101.11.174/mgzd。 题目描述 蒟蒻 SOL 居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的。只有满足“存在长度至少为 22 的回文子串”的数是萌的——也就是说,101 是萌…...
DeepSeek-R1系列01——技术报告解读:DeepSeek-R1:通过强化学习激励 LLM 中的推理能力
1.阅读目标 DeepSeek-R1 发布,性能对标 OpenAI o1 正式版 DeepSeek-R1已经发布,并同步开源模型权重。 DeepSeek-R1 遵循 MIT License,允许用户通过蒸馏技术借助 R1 训练其他模型。 DeepSeek-R1 上线API,对用户开放思维链输出&a…...
(1/100)每日小游戏平台系列
每日小游戏平台 项目简介以及地址 准备开发一个一百天小游戏平台,使用Flask构建的简单游戏导航网站,无需登录,让大家在返工的同时也可以愉快的摸鱼玩耍。 每天更新一个小游戏上传,看看能不能坚持一百天。 这些小游戏主要使用前端…...
前端布局与交互实现技巧
前端布局与交互实现技巧 1. 保持盒子在中间位置 在网页设计中,经常需要将某个元素居中显示。以下是一种常见的实现方式: HTML 结构 <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><m…...
spark单机版本搭建
spark单机版本搭建 服务器配置 CPU内存磁盘操作系统内核版本2c2g40GCentOS 73.10.0 1.JDK 下载安装 # 列出版本 yum -y list java* # 安装 yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel # 检查 java -version2.spark下载 spark下载地址 本文下载&#x…...
【C++八股】std::atomic —— 原子操作
std::atomic 是 C11 引入的模板类,主要用于多线程编程中的原子操作,确保在多个线程访问或修改共享变量时不会产生数据竞争。 1. std::atomic 的作用 在多线程环境下,普通变量的操作不是原子的,可能被多个线程同时访问和修改&…...
GPU、CUDA 和 cuDNN 学习研究【笔记】
分享自己在入门显存优化时看过的一些关于 GPU 和 CUDA 和 cuDNN 的网络资料。 更多内容见: Ubuntu 22.04 LTS 安装 PyTorch CUDA 深度学习环境-CSDN博客CUDA 计算平台 & CUDA 兼容性【笔记】-CSDN博客 文章目录 GPUCUDACUDA Toolkit都包含什么?NVID…...