C#、.Net 中级高级架构管理面试题杂烩
1、简述值类型和引用类型的区别
存储位置:值类型变量直接存储数据的值,通常存储在栈上;引用类型变量存储的是对象在堆上的引用地址。
内存管理:值类型的内存由系统自动管理,当超出作用域时自动释放;引用类型的内存需要通过垃圾回收机制来释放。
赋值操作:值类型赋值时会复制整个值;引用类型赋值时只是复制引用地址,两个变量指向同一个对象。
2、解释 const 和 readonly 的区别
const:是编译时常量,必须在声明时进行初始化,且初始化后不能再修改。它的值在编译时就已经确定,在程序运行期间不可改变。
readonly:是运行时常量,可以在声明时初始化,也可以在构造函数中初始化。一旦初始化后,在对象的生命周期内不能再修改。
3、什么是装箱和拆箱?
装箱:是将值类型转换为引用类型的过程。例如,将一个 int 类型的值转换为 object 类型。装箱操作会在堆上分配内存,并将值类型的值复制到该内存中。
拆箱:是将引用类型转换为值类型的过程。需要注意的是,拆箱操作必须显式进行,并且只有当引用类型实际上是由相应的值类型装箱而来时才能成功。
4、简述委托和事件的概念及区别
委托:是一种类型,它可以封装一个或多个方法,并且可以像调用方法一样调用委托实例。委托可以作为参数传递给其他方法,也可以作为返回值返回。
事件:是基于委托的一种特殊机制,用于实现对象之间的消息传递。事件是一种特殊的委托实例,它只能在声明它的类内部触发,外部类只能订阅和取消订阅事件。
5、解释异步编程中的 async 和 await 关键字
async:用于修饰方法,表示该方法是一个异步方法。异步方法可以包含 await 关键字,用于等待一个异步操作完成。
await:只能在 async 方法中使用,用于等待一个 Task 或 Task<T> 对象完成。当遇到 await 关键字时,方法会暂停执行,直到异步操作完成,然后继续执行后续代码。
6、什么是泛型?泛型有什么优点
泛型:是一种编程机制,允许在定义类、接口、方法等时使用类型参数,而不是具体的类型。在使用泛型时,可以指定具体的类型来替换类型参数。
优点:
- 代码复用:可以编写通用的代码,适用于不同的数据类型,提高代码的复用性。
- 类型安全:在编译时进行类型检查,避免了运行时的类型转换错误。
- 性能优化:避免了装箱和拆箱操作,提高了性能。
7、如何优化 C# 程序的性能?
内存管理:避免不必要的对象创建,及时释放不再使用的对象,使用 using 语句管理实现了 IDisposable 接口的对象。
算法优化:选择合适的算法和数据结构,避免使用时间复杂度高的算法。
异步编程:使用异步编程模型处理 I/O 密集型操作,避免阻塞线程。
缓存机制:使用缓存来减少重复计算和数据库查询。
性能分析工具:使用性能分析工具(如 Visual Studio 中的性能分析器)来找出性能瓶颈,并进行针对性的优化。
8、简述垃圾回收机制的工作原理
标记阶段:垃圾回收器从根对象(如全局变量、栈上的变量等)开始,遍历所有可达对象,并将这些对象标记为存活对象。
清除阶段:垃圾回收器遍历堆上的所有对象,将未标记的对象视为垃圾对象,并释放它们占用的内存。
压缩阶段:为了减少内存碎片,垃圾回收器可以选择将存活对象移动到堆的一端,从而使空闲内存连续。
9、简述 MVC、MVP 和 MVVM 架构模式的区别
MVC(Model-View-Controller):将应用程序分为三个主要部分:模型(Model)表示数据和业务逻辑,视图(View)负责显示数据,控制器(Controller)负责处理用户输入和协调模型与视图之间的交互。
MVP(Model-View-Presenter):是 MVC 的一种变体,将控制器改为了 presenter。Presenter 负责处理视图的逻辑和与模型的交互,视图只负责显示数据和接收用户输入。
MVVM(Model-View-ViewModel):通过数据绑定和命令绑定机制,将视图和视图模型(ViewModel)分离。ViewModel 负责处理视图的逻辑和与模型的交互,视图通过数据绑定自动更新显示。
10、如何设计一个高可用、可扩展的 应用程序架构?
分层架构:将应用程序分为多个层次,如表示层、业务逻辑层、数据访问层等,各层之间通过接口进行通信,提高代码的可维护性和可扩展性。
负载均衡:使用负载均衡器(如 Nginx、HAProxy)将请求均匀分配到多个服务实例上。
微服务架构:将应用程序拆分为多个小型的、自治的服务,每个服务可以独立开发、部署和扩展。
分布式系统:使用分布式缓存、消息队列等技术,提高系统的并发处理能力和容错性。
弹性伸缩:使用云计算平台的弹性伸缩功能,根据系统负载自动调整资源配置。
监控和日志:建立完善的监控和日志系统,及时发现和解决系统中的问题。
11、C# 中的垃圾回收机制是如何工作的?
垃圾回收(GC)是 .NET 框架提供的自动内存管理机制,其工作原理如下:
- 标记阶段:从根对象(如全局变量、栈上的变量引用的对象)开始,遍历对象图,标记所有可达对象为存活对象。
- 清除阶段:遍历堆上的所有对象,回收未标记的对象所占用的内存。
- 压缩阶段:可选阶段,将存活对象移动到堆的一端,使空闲内存连续,减少内存碎片。
12、C# 中的值类型和引用类型有什么区别?
| 区别点 | 值类型 | 引用类型 |
|---|---|---|
| 存储位置 | 通常存储在栈上(结构体嵌套引用类型时部分数据在堆上) | 存储在堆上,变量保存堆上对象的引用地址 |
| 内存管理 | 超出作用域时系统自动释放内存 | 由垃圾回收机制负责回收内存 |
| 赋值操作 | 复制整个值 | 复制引用地址,多个变量可能指向同一个对象 |
| 类型示例 | int、double、struct、enum 等 | class、interface、delegate、object 等 |
13、C# 中的 LINQ 是如何实现的?
LINQ(Language Integrated Query)是集成在 C# 语言中的查询功能,实现原理如下:
- 查询表达式:C# 编译器将查询表达式转换为对应的方法调用。
- 方法调用:LINQ 提供了一系列扩展方法(如
Where、Select、OrderBy等),这些方法基于委托和泛型实现,通过迭代器模式遍历数据源。 - 提供者:不同的数据源(如集合、数据库等)有对应的 LINQ 提供者,负责将 LINQ 查询转换为特定数据源能理解的查询语句(如 SQL)。
14、C# 中的反射是什么?它有什么优缺点?
反射是指在运行时获取类型信息、创建对象、调用方法、访问属性等的能力。
- 优点
- 提高代码的灵活性和可扩展性,可在运行时动态加载和使用类型。
- 用于实现插件式架构、序列化和反序列化等功能。
- 缺点
- 性能开销较大,因为反射涉及到运行时类型检查和动态调用。
- 破坏了类型安全,可能导致运行时错误。
15、C# 中的 yield 关键字有什么作用?
yield 关键字用于创建迭代器方法,有 yield return 和 yield break 两种用法:
yield return:用于返回一个值,并暂停方法的执行,下次调用迭代器时从暂停处继续执行。yield break:用于终止迭代器方法的执行。
16、C# 中的 Span 和 Memory 是什么?它们有什么优势?
Span<T> 是一个值类型,代表连续的内存区域,可以指向栈上、堆上或非托管内存。
Memory<T> 是一个引用类型,也表示连续的内存区域,可用于异步操作。
优势:
- 避免内存分配,减少垃圾回收压力。
- 提供统一的内存操作接口,提高代码的可读性和可维护性。
- 可以直接操作内存,提高性能。
17、.NET 中的依赖注入是如何工作的?
依赖注入(DI)是一种设计模式,用于实现对象之间的解耦。在 .NET 中,工作流程如下:
- 注册服务:在服务容器中注册服务及其实现类型。
- 解析服务:在需要使用服务的地方,从服务容器中解析服务实例。
- 注入服务:将解析得到的服务实例注入到需要使用该服务的类的构造函数或属性中。
18、如何设计一个高性能的缓存系统?
缓存选型:根据业务需求选择合适的缓存技术,如 Redis、Memcached 等。
缓存分层:采用多级缓存架构,如本地缓存(如 MemoryCache)和分布式缓存结合。
缓存更新策略:采用合适的缓存更新策略,如主动更新、过期淘汰等。
缓存穿透、击穿和雪崩处理:实现缓存穿透、击穿和雪崩的预防和处理机制。
缓存监控和优化:实时监控缓存的使用情况,根据监控数据进行缓存优化。
19、如何设计一个安全的身份验证和授权系统?
身份验证:采用多因素身份验证(如用户名 / 密码、短信验证码、指纹识别等),确保用户身份的真实性。
授权管理:基于角色的访问控制(RBAC)或基于属性的访问控制(ABAC),对用户的操作权限进行精细管理。
令牌机制:使用 JWT(JSON Web Token)等令牌机制,实现无状态的身份验证和授权。
安全传输:使用 HTTPS 协议进行数据传输,确保数据的安全性。
审计和日志:记录用户的登录和操作日志,便于审计和追踪。
20、如何设计一个可扩展的数据库架构?
数据库分区:采用水平分区和垂直分区技术,将数据分散存储在多个数据库实例上。
读写分离:使用主从复制或读写分离架构,将读操作和写操作分离到不同的数据库实例上。
分布式数据库:采用分布式数据库(如 Cassandra、MongoDB 等),实现数据的分布式存储和处理。
数据库缓存:使用缓存技术(如 Redis)缓存常用数据,减少数据库的访问压力。
数据库监控和优化:实时监控数据库的性能指标,根据监控数据进行数据库优化。
21、如何设计一个实时数据处理系统?
数据采集:使用消息队列(如 Kafka)采集实时数据。
数据处理:使用流式处理框架(如 Apache Flink、Spark Streaming)对实时数据进行处理。
数据存储:将处理后的数据存储到合适的数据库(如 Elasticsearch、InfluxDB 等)中。
实时展示:使用可视化工具(如 Grafana)实时展示处理后的数据。
容错和恢复:实现容错和恢复机制,确保系统在出现故障时能够快速恢复。
22、如何设计一个可测试的系统?
解耦设计:将系统拆分为多个独立的模块,降低模块之间的耦合度,便于进行单元测试。
依赖注入:使用依赖注入模式,将依赖关系通过构造函数或属性注入,便于替换依赖对象进行测试。
接口设计:定义清晰的接口,使模块之间通过接口进行交互,便于进行模拟测试。
单元测试框架:使用单元测试框架(如 NUnit、xUnit)编写单元测试用例。
集成测试:进行集成测试,确保模块之间的交互正常。
23、如何优化 C# 应用程序的性能?
算法优化:选择合适的算法和数据结构,避免使用时间复杂度高的算法。
内存管理:避免不必要的对象创建,及时释放不再使用的对象,使用 using 语句管理实现了 IDisposable 接口的对象。
异步编程:使用异步编程模型处理 I/O 密集型操作,避免阻塞线程。
缓存机制:使用缓存来减少重复计算和数据库查询。
性能分析工具:使用性能分析工具(如 Visual Studio 中的性能分析器)来找出性能瓶颈,并进行针对性的优化。
24、如何诊断和解决内存泄漏问题?
使用内存分析工具:如 Visual Studio 中的内存分析器、dotnet-dump 等,找出内存占用过高的对象和代码。
检查对象的生命周期:确保对象在不再使用时及时释放,避免持有不必要的引用。
实现 IDisposable 接口:对于使用非托管资源的对象,实现 IDisposable 接口,并在 Dispose 方法中释放资源。
使用弱引用:对于一些不需要长期持有引用的对象,使用弱引用(WeakReference)来避免内存泄漏。
25、如何优化数据库查询性能?
索引优化:为经常用于查询条件和排序的字段创建索引,提高查询速度。
查询优化:避免使用复杂的子查询和全表扫描,优化查询语句的逻辑。
数据库分区:采用水平分区和垂直分区技术,将数据分散存储在多个数据库实例上,提高查询性能。
读写分离:使用主从复制或读写分离架构,将读操作和写操作分离到不同的数据库实例上。
数据库缓存:使用缓存技术(如 Redis)缓存常用数据,减少数据库的访问压力。
26、如何优化 Web 应用程序的加载速度?
压缩资源:对 HTML、CSS、JavaScript 等资源进行压缩,减少文件大小。
缓存静态资源:使用浏览器缓存和 CDN(内容分发网络)缓存静态资源,减少服务器的请求压力。
优化图片:使用合适的图片格式和压缩算法,减少图片大小。
异步加载:使用异步加载技术(如 async 和 defer 属性)加载 JavaScript 文件,避免阻塞页面渲染。
优化服务器性能:使用高性能的 Web 服务器(如 Nginx、Apache),优化服务器配置。
27、如何优化高并发场景下的系统性能?
负载均衡:使用负载均衡器将请求均匀分配到多个服务器上,避免单点故障和过载。
异步编程:使用异步编程模型处理 I/O 密集型操作,提高系统的吞吐量。
缓存技术:使用缓存(如 Redis、Memcached)缓存常用数据,减少数据库的访问压力。
数据库优化:采用数据库分区、读写分离等技术,提高数据库的读写性能。
分布式架构:采用微服务架构和分布式系统技术,提高系统的可扩展性和容错性。
28、如何优化大规模数据处理的性能?
数据分区:将大规模数据进行分区处理,减少单次处理的数据量。
并行处理:使用多线程、多进程或分布式计算框架(如 Apache Hadoop、Spark)进行并行处理,提高处理速度。
数据压缩:对数据进行压缩,减少数据的存储空间和传输时间。
缓存机制:使用缓存技术缓存中间结果,减少重复计算。
算法优化:选择合适的算法和数据结构,提高数据处理的效率。
29、如何优化 I/O 密集型应用程序的性能?
异步 I/O:使用异步 I/O 操作(如 async 和 await),避免阻塞线程,提高系统的吞吐量。
缓冲技术:使用缓冲区(如 BufferedStream)减少 I/O 操作的次数。
并发处理:使用多线程或异步编程模型处理多个 I/O 操作,提高并发性能。
磁盘优化:选择高性能的磁盘设备,优化磁盘的读写策略。
网络优化:优化网络配置,提高网络带宽和稳定性。
30、如何管理一个技术团队?
明确目标和职责:为团队设定清晰的目标和任务,明确每个成员的职责和分工。
建立沟通机制:建立有效的沟通机制,定期组织团队会议,及时解决团队成员之间的问题和矛盾。
激励和培养:激励团队成员,提供培训和发展机会,帮助他们提升技术能力和职业素养。
绩效考核:建立科学的绩效考核体系,对团队成员的工作表现进行评估和反馈。
团队文化建设:营造积极向上、团结协作的团队文化,增强团队的凝聚力和战斗力。
31、如何激励团队成员提高工作效率?
目标激励:为团队成员设定明确的目标和任务,让他们清楚自己的工作方向和重点。
奖励激励:设立合理的奖励机制,对表现优秀的团队成员进行奖励,如奖金、晋升、荣誉等。
培训激励:提供培训和发展机会,
32、Task、Thread 和 ThreadPool 的区别是什么?
-
Task 是 .NET 框架的一种抽象,用于表示一项异步操作或任务。它提供了丰富的 API,可以方便地执行异步操作,并等待其完成。
-
Thread 是操作系统级别的线程,用于执行应用程序的代码。线程是较低级别的概念,需要手动管理线程的生命周期和同步机制。
-
ThreadPool 是 .NET 框架提供的线程池,用于管理和重用线程,以实现并行执行多个任务的效率。
33、 Task、Thread 和 ThreadPool 分别适用于哪些场景?
- Task 是在编写异步操作时最常用的抽象,它可以方便地执行异步任务,并通过 async/await 关键字实现代码简洁性。
- Thread 适用于需要手动控制线程的生命周期和同步机制的场景,对于精细的线程控制有更大的灵活性。
- ThreadPool 适用于需要执行大量的短期任务的场景,它会自动管理线程的创建和销毁,可以避免频繁创建和销毁线程带来的性能开销。
34、 Task、Thread 和 ThreadPool 的性能有何异同?
- Task 是建立在 ThreadPool 上的,它可以更好地利用 ThreadPool
的线程池机制,减少线程创建和销毁的开销,从而提高性能。 - Thread 直接创建和管理操作系统级别的线程,具有更高的灵活性,但相对而言,创建和销毁线程的代价较高,可能会降低性能。
- ThreadPool
具有线程池管理的优势,可以自动重用线程,减少线程创建和销毁的开销,从而提高性能。但是,在线程池中一次性执行大量的长时间运行的任务可能会降低性能,因为线程池中的线程是有限的。
相关文章:
C#、.Net 中级高级架构管理面试题杂烩
1、简述值类型和引用类型的区别 存储位置:值类型变量直接存储数据的值,通常存储在栈上;引用类型变量存储的是对象在堆上的引用地址。 内存管理:值类型的内存由系统自动管理,当超出作用域时自动释放;引用类…...
从零开始:使用Jenkins实现高效自动化部署
在这篇文章中我们将深入探讨如何通过Jenkins构建高效的自动化部署流水线,帮助团队实现从代码提交到生产环境部署的全流程自动化。无论你是Jenkins新手还是有一定经验的开发者,这篇文章都会为你提供实用的技巧和最佳实践,助你在项目部署中走得…...
Lua限流器的3种写法
学而不思则罔,思而不学则殆 引言 上篇文章讲解了Lua脚本,事务和Pipline之间的使用方式和性能差距,本篇文章将聚焦Lua脚本,我将用三种写法来展现如何实现一个Redis限流器 固定窗口限流 固定窗口限流也是最简单的限流算法&#x…...
hive的几种复杂数据类型
Hive的几种复杂数据类型 Hive 提供了几种复杂数据类型,能够支持更灵活和多样的数据存储。这些复杂数据类型对于处理嵌套数据或不规则数据特别有用。主要包括以下几种: 文章目录 Hive的几种复杂数据类型1. 数组(ARRAY)2. 结构体&a…...
序列化/反序列化与TCP通信协议
深入理解序列化/反序列化与TCP通信协议 一、序列化与反序列化 1.1 基本概念 序列化(Serialization): 将数据结构或对象状态转换为可存储/传输格式的过程反序列化(Deserialization): 将序列化后的数据恢复为原始数据结构的过程 …...
Ollama 本地部署 体验 deepseek
下载安装ollama,选择模型 进行部署 # 管理员命令行 执行 ollama run deepseek-r1:70b浏览器访问http://ip:11434/ 返回 Ollama is runninghttp://ip:11434/v1/models 返回当前部署的模型数据 下载安装CherryStudio,本地对话UI 客户端 在设置中 修改API地址&#x…...
Linux探秘坊-------4.进度条小程序
1.缓冲区 #include <stdio.h> int main() {printf("hello bite!");sleep(2);return 0; }执行此代码后,会 先停顿两秒,再打印出hello bite,但是明明打印在sleep前面,为什么会后打印呢? 因为ÿ…...
postgreSQL16.6源码安装
1.获取源码 从PostgreSQL: File Browser获取tar.bz2或者tar.gz源码 2.解压 tar xf postgresql-version.tar.bz2 roothwz-VMware-Virtual-Platform:/usr/local# tar xf postgresql-16.6.tar.bz2 roothwz-VMware-Virtual-Platform:/usr/local# ll 总计 24324 drwxr-xr-x 12 ro…...
树莓派上 基于Opencv 实现人脸检测与人脸识别
一,需求 基于树莓派4b,usb1080p摄像头,实现人脸检测与人脸识别。尝试了海陵科的模组和百度的sdk。海陵科的模组无法录入人脸,浪费了100多块钱。百度的sdk 在树莓派上也无法录入人脸,官方解决不了。最后只能用opencv自…...
vscode怎么更新github代码
vscode怎么更新github代码 打开终端: 在 VS Code 中,使用快捷键 Ctrl (Mac 上是 Cmd) 打开终端。 导航到项目目录: 确保你当前所在的终端目录是你的项目目录。如果不是,可以使用 cd 命令导航到项目目录,例如…...
Golang Web单体项目目录结构最佳实践
在Golang 开发Web 项目的过程中,如何组织目录结构是一项至关重要的任务。合理的目录结构不仅能提高代码的可维护性,还能为团队协作提供清晰的代码规范。 为什么要设计合理的目录结构? 在 Golang 项目中,代码的组织方式会影响开发…...
Zookeeper 作注册中心 和nacos 和eruka 有什么差异 ?基于什么理论选择?
目录 三者的差异 1. 设计定位与功能特性 2. 服务注册与发现机制 3. 可用性与容错性 4. 性能 选择依据 1. 业务场景 2. 可用性和一致性需求 3. 性能需求 三者的差异 1. 设计定位与功能特性 Zookeeper 设计定位:最初是为分布式应用提供协调服务的,本身并不是专门作为…...
mac下dify+deepseek部署,实现私人知识库
目前deepseek 十分火爆,本地部署实现私有知识库,帮助自己日常工作,上一篇使用工具cherry studio可以做到私人知识库。今天学习了一下,使用Dify链接deepseek,实现私人知识库,也非常不错,这里分享…...
CSS 实现下拉菜单效果实例解析
1. 引言 在 Web 开发过程中,下拉菜单是一种常见且十分实用的交互组件。很多前端教程都提供过简单的下拉菜单示例,本文将以一个简洁的实例为出发点,从 HTML 结构、CSS 样式以及整体交互逻辑三个层面进行详细解析,帮助大家理解纯 C…...
C# 比较两个List集合内容是否相同
在 C# 中,要比较两个 List<T> 集合的内容是否相同,可以通过以下几种方法: 一、非自定义类的元素比较 1. 使用 SequenceEqual 方法(顺序和内容都相等) 顺序和内容都相等:使用 SequenceEqual。 usin…...
x64、aarch64、arm与RISC-V64:详解四种处理器架构
x64、aarch64、arm与RISC-V64:详解四种处理器架构 x64架构aarch64架构ARM架构RISC-V64架构总结与展望在计算机科学领域,处理器架构是构建计算机系统的基石,它决定了计算机如何执行指令、管理内存和处理数据。x64、aarch64、arm与RISC-V64是当前主流的四种处理器架构,它们在…...
vscode卡住---回退版本解决
一、回退 今日本人打开vscode,发现慢到起飞,最终卡到起飞 删除缓存: C:\Users\python\AppData\Roaming\Code 重启发现回到刚安装时的界面,但是插件还在。启动速度快了,但是一打开terminal就卡。 关闭vscode,重装&…...
Java使用aspose实现pdf转word
Java使用aspose实现pdf转word 一、下载aspose-pdf-21.6.jar包【下载地址】,存放目录结构如图;配置pom.xml。 <!--pdf to word--> <dependency><groupId>com.aspose</groupId><artifactId>aspose-pdf</artifactId>…...
国产编辑器EverEdit - 迷你查找
1 迷你查找 1.1 应用场景 某些场景下,用户不希望调出复杂的查找对话框,此时可以使用迷你查找窗口。 1.2 使用方法 选择主菜单查找 -> 迷你查找,或使用快捷键Ctrl Alt F,会在右上角弹出迷你查找窗口,如下图所示…...
嵌入式音视频开发(一)ffmpeg框架及内核解析
系列文章目录 嵌入式音视频开发(零)移植ffmpeg及推流测试 嵌入式音视频开发(一)ffmpeg框架及内核解析 文章目录 系列文章目录前言一、ffmpeg的内核1.1 框架解析1.2 内核解析1.3 FFmpeg内部数据流1.3.1 典型的解码流程1.3.2 典型的…...
javaEE-11.javaScript入门
目录 一.什么是javaScript 二.快速实现 三.JS引入方式 1.行内引入: 2.内部引入: 3.外部引入: 四.基础语法 1.变量 变量命名规则: 2.数据类型 3.运算符 五.JS对象 1.数组 创建数组: 2.操作数组 3.函数 函数注意事项: 函数参数: 4.对象 1.使用字面量 创建对象:…...
畅游Diffusion数字人(16):由音乐驱动跳舞视频生成
畅游Diffusion数字人(0):专栏文章导航 前言:从Pose到跳舞视频生成的工作非常多,但是还没有直接从音乐驱动生成的工作。最近字节跳动提出了MuseDance,无需复杂的动作引导输入(如姿势或深度序列),从而使不同专业水平的用户都能轻松进行灵活且富有创意的视频生成。 目录 贡…...
OnlyOffice docker 运行(详细)
下载镜像 推荐使用 GitHub Action 方式下载: Action 地址:https://github.com/Shixuebin/DockerTarBuilder 教程地址:https://www.bilibili.com/video/BV1EZ421M7mL/ docker 镜像安装 docker load -i xxx.tar镜像运行 docker run -i -t -…...
DeepSeek 助力 Vue 开发:打造丝滑的步骤条
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
领略算法真谛:差分
嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…...
【Python深入浅出】Python3中os模块:开启系统交互的万能钥匙
目录 一、引言:os 模块初印象二、os 模块基础操作2.1 文件与目录操作2.1.1 创建操作2.1.2 读取操作2.1.3 删除操作2.1.4 信息获取 2.2 系统信息获取与环境变量管理2.2.1 系统信息获取2.2.2 环境变量管理 2.3 进程管理与工作目录操作2.3.1 进程管理2.3.2 工作目录操作…...
【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案
建筑设计公司在项目执行过程中,会产生大量的设计图纸、效果图、实景照片等图片资料。这些资料按照项目名称、阶段、专业等维度存放在多个文件夹和子文件夹中。 操作需求:为了方便内部管理和向客户交付完整的设计方案,公司需要将每个项目文件…...
在Linux上如何让ollama在GPU上运行模型
之前一直在 Mac 上使用 ollama 所以没注意,最近在 Ubuntu 上运行发现一直在 CPU 上跑。我一开始以为是超显存了,因为 Mac 上如果超内存的话,那么就只用 CPU,但是我发现 Llama3.2 3B 只占用 3GB,这远没有超。看了一下命…...
程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<8>
大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们复习前面学习的指针知识 目录 关于指针数组和数组指针的区别指针数组(Array of Poi…...
快速集成DeepSeek到项目
DeepSeek API-KEY 获取 登录DeekSeek 官网,进入API 开放平台 2. 创建API-KEY 复制API-KEY进行保存,后期API调用使用 项目中集成DeepSeek 这里只展示部分核心代码,具体请查看源码orange-ai-deepseek-biz-starter Slf4j AllArgsConstructo…...
