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

Mac下Ollama安装全攻略:开启本地大模型之旅

文章目录

  • Mac下Ollama安装全攻略:开启本地大模型之旅
    • 一、Ollama 是什么
      • 功能特点
      • 优势
      • 应用场景
    • 二、安装前准备
      • (一)系统要求
      • (二)硬件要求
    • 三、下载安装包
      • (一)官网下载
      • (二)其他途径
    • 四、安装过程详解
      • (一)解压安装包
      • (二)移动应用程序
      • (三)终端验证
    • 五、下载和使用模型
      • (一)模型下载
      • (二)模型运行
      • (三)模型管理

Mac下Ollama安装全攻略:开启本地大模型之旅

一、Ollama 是什么

Ollama 是一个开源的大语言模型平台,允许用户在本地环境中便捷地运行、创建和共享大型语言模型。它提供了丰富的功能和特性,让用户在自己的计算机上就能轻松部署和运行大型语言模型,无需依赖云服务 。

功能特点

类似 Docker 的 CLI 界面:Ollama 提供了一个类似于 Docker 的命令行界面(CLI),使得用户可以快速地在本地进行大语言模型的推理部署,操作流程得到极大简化。

丰富的 API 接口和聊天界面:拥有类似 OpenAI 的 API 接口和聊天界面,支持热加载模型文件,用户可以通过接口使用最新版本的模型,并且无需重新启动即可切换不同的模型,为用户提供了更加灵活和高效的使用体验。

模型库支持:内置了一个模型库,用户可以从中下载和运行不同的大型语言模型,如 Llama 2、Mistral 等。此外,它还支持自定义和创建模型,以满足用户的个性化需求。

多平台支持和灵活扩展:支持 macOS、Windows 和 Linux 等主流操作系统,具备灵活的扩展性,支持与很多工具集成,用户还可以通过编写 Modelfile 来导入更多的自定义模型。

优势

本地部署:用户可以在自己的计算机上运行大型语言模型,而不需要依赖云服务或远程服务器,这不仅节省了成本,还能更好地保护用户的数据隐私和安全。

易于使用:简洁明了的 API 设计,使得即使是没有经验的用户也可以轻松上手。同时,提供的类似 OpenAI 的简单内容生成接口以及类似 ChatGPT 的聊天界面,无需开发即可直接与模型聊天,进一步降低了使用门槛。

灵活多变:支持多种主流的大语言模型,并允许用户根据特定需求定制和创建自己的模型。同时支持热切换模型,用户可以根据不同的任务需求,随时切换到最适合的模型。

社区和文档支持:Ollama 得到了积极的维护和更新,拥有一个庞大而活跃的社区,为用户提供了丰富的支持和资源。此外,其官方网站和 GitHub 页面提供了详细的安装和使用指南,帮助用户更好地使用平台。

应用场景

Ollama 可以应用于各种自然语言处理任务:

文本生成:可以用于生成各种文本内容,例如新闻文章、博客文章、诗歌、代码等。

翻译:帮助用户将文本从一种语言翻译成另一种语言。

问答:回答用户提出的各种问题,为用户提供准确的信息和解答。

代码生成:根据用户的需求生成相应的代码,例如 Python 代码、JavaScript 代码等,提高开发效率。

对于 Mac 用户来说,在 Mac 系统上安装 Ollama,就可以利用 Mac 的硬件性能,在本地享受大语言模型带来的各种便利,无论是进行开发工作、学习研究还是日常的文本处理,都能提供强大的支持。

二、安装前准备

在 Mac 上安装 Ollama 之前,需要确保你的系统和硬件满足一定的条件,以保证 Ollama 能够正常安装和运行。

(一)系统要求

Ollama 支持在 macOS 11 及更高版本的系统上运行。请确保你的 Mac 运行的是符合要求的系统版本 ,你可以通过点击屏幕左上角的苹果图标,选择 “关于本机” 来查看系统版本信息。如果你的系统版本低于要求,建议先进行系统更新。
如图所示:
在这里插入图片描述

(二)硬件要求

内存:运行 Ollama 对内存有一定要求,具体取决于你要使用的模型大小。一般来说,运行较小的模型(如 7B 参数的模型)至少需要 8GB 内存;如果要运行更大的模型(如 13B 参数的模型),则建议至少拥有 16GB 内存;对于 33B 参数的模型,至少需要 32GB 内存 。如果内存不足,可能会导致模型运行缓慢甚至无法运行。

磁盘空间:模型文件通常会占用一定的磁盘空间,不同模型的大小有所差异。例如,Llama 2 7B 模型大约需要 3.8GB 磁盘空间,而 Llama 2 70B 模型则需要约 39GB 磁盘空间 。因此,在安装 Ollama 之前,请确保你的 Mac 有足够的可用磁盘空间来存储模型文件,建议至少预留 50GB 以上的磁盘空间,以应对未来可能下载的更多模型。

处理器:虽然 Ollama 可以在各种处理器上运行,但为了获得更好的性能,建议使用较新的多核处理器,如 Intel Core i5 及以上或 Apple Silicon 芯片。这些处理器能够更快地处理模型推理任务,提高响应速度 。

GPU(可选但推荐):如果你有 NVIDIA GPU,并且安装了相应的驱动和 CUDA 工具包,可以显著加速模型的运行速度。不过,Apple Silicon 芯片的 Mac 也能通过 Metal 加速来运行 Ollama 模型,同样能提供不错的性能表现 。如果你的 Mac 配备了 GPU,建议安装最新的驱动程序,以确保最佳性能。

三、下载安装包

(一)官网下载

打开你常用的浏览器,访问 Ollama 官方网站:https://ollama.com/download 。在该页面,你会看到针对不同操作系统的下载选项。

因为我们是在 Mac 上安装,所以找到适用于 macOS 的下载链接,通常会显示为 “Download for macOS” 或类似字样,点击该链接开始下载安装包 。安装包一般为压缩文件,文件名为 “Ollama-darwin.zip”。

下载完成后,找到下载的安装包文件,通常位于浏览器的默认下载路径(一般是 “下载” 文件夹) 。双击解压该压缩包,你会得到一个名为 “Ollama.app” 的应用程序文件 。

(二)其他途径

除了官网下载,你还可以在 GitHub 上获取 Ollama 的安装文件。GitHub 是一个开源代码托管平台,Ollama 的开发者会将项目代码和相关资源发布在上面 。你可以访问 Ollama 的 GitHub 仓库:https://github.com/ollama/ollama 。在仓库页面中,找到与 Mac 安装相关的内容,可能会有编译好的二进制文件可供下载,也可能需要你根据提供的说明自行编译安装 。

不过,通过非官方渠道下载可能存在一些风险:

版本问题:非官方渠道提供的版本可能不是最新的,这意味着你可能无法享受到最新的功能和修复的漏洞 。同时,较旧版本可能与当前系统或其他软件存在兼容性问题。

安全风险:在非官方渠道下载时,有可能会下载到被篡改过的文件,这些文件可能包含恶意软件,如病毒、木马等,会对设备安全和数据安全造成严重威胁 。因此,若非必要,建议优先选择从官方网站下载 Ollama 安装包,以确保下载的安全性和稳定性。

四、安装过程详解

(一)解压安装包

当你从官网下载好 “Ollama-darwin.zip” 安装包后,它默认会保存在浏览器的 “下载” 文件夹中。找到这个压缩包文件,然后双击它,Mac 系统会自动进行解压操作 。解压完成后,你会看到一个名为 “Ollama.app” 的应用程序文件 ,这个就是我们即将要安装的 Ollama 应用。如果你在解压过程中遇到问题,比如提示磁盘空间不足,那就需要清理一下磁盘空间,删除一些不必要的文件,然后重新解压;又或者解压后的文件损坏,这可能是下载过程中出现了错误,你可以尝试重新下载安装包 。

(二)移动应用程序

接下来,我们要将解压得到的 “Ollama.app” 移动到 “/Applications” 目录中,这是 Mac 系统存放应用程序的标准目录。你可以通过以下两种常见的方法来完成移动操作:

Finder 操作:打开 “访达(Finder)”,在左侧边栏中点击 “应用程序”,打开 “应用程序” 文件夹。然后回到刚才解压 “Ollama.app” 的位置,选中 “Ollama.app”,直接将它拖曳到 “应用程序” 文件夹窗口中 ,松开鼠标即可完成移动。

终端操作:如果你对终端命令比较熟悉,也可以使用终端来完成移动操作。打开 “终端” 应用程序,在终端中输入以下命令(注意将命令中的路径替换为你实际的路径):

mv /Users/你的用户名/下载/Ollama.app /Applications/

在上述命令中,“/Users/ 你的用户名 / 下载 /” 是你下载的 “Ollama.app” 所在的路径,“/Applications/” 是目标路径 。输入完成后,按下回车键,即可将 “Ollama.app” 移动到 “/Applications” 目录中。

(三)终端验证

完成前面的步骤后,我们需要验证 Ollama 是否安装成功。打开 “终端” 应用程序,在终端中输入以下命令:

ollama --version

如果你看到类似 “0.5.7” 这样的版本号输出,就说明 Ollama 已经成功安装到你的 Mac 系统中了 。如果在输入命令后,提示 “command not found”,这意味着系统无法找到 “ollama” 命令,可能是因为安装过程出现了问题,比如没有正确将 “Ollama.app” 移动到 “/Applications” 目录,或者系统环境变量配置不正确 。这时,你可以重新检查前面的安装步骤,确保所有操作都正确无误。另外,你还可以尝试重新打开终端,再次输入验证命令,看是否能解决问题 。

五、下载和使用模型

(一)模型下载

在 Mac 上安装好 Ollama 后,就可以开始下载模型了。Ollama 提供了丰富的模型库,涵盖了各种不同类型和规模的模型,以满足用户多样化的需求 。

要下载模型,你可以使用ollama pull命令,后面跟上你想要下载的模型名称 。例如,如果你想下载流行的 Llama 2 模型,可以在终端中输入以下命令:

ollama pull deepseek-r1:14b

执行上述命令后,Ollama 会自动从模型仓库中下载deepseek-r1:14b 模型到你的本地计算机 。下载过程中,你可以看到下载进度和相关信息。模型下载完成后,就可以随时使用该模型进行各种任务了 。

你可以在 Ollama 的官方网站(https://ollama.com/library )上查看完整的模型库,了解每个模型的特点、适用场景和下载命令 。在选择模型时,需要考虑你的计算机硬件配置,如内存和磁盘空间,以及你的具体使用需求。例如,如果你的计算机内存有限,可能更适合选择较小规模的模型,以确保模型能够正常运行 。

(二)模型运行

下载好模型后,就可以使用ollama run命令来运行模型,与模型进行交互了。例如,要运行刚刚下载的 deepseek-r1:14b 模型,在终端中输入以下命令:

ollama run deepseek-r1:14b

执行上述命令后,你会进入与 deepseek-r1:14b 模型的交互界面 。在交互界面中,你可以输入各种问题或指令,模型会根据你的输入生成相应的回答 。例如,你可以输入 “请介绍一下人工智能的发展历程”,模型会分析你的问题,并生成关于人工智能发展历程的介绍内容 。模型的回答会实时显示在终端中,你可以与模型进行多轮对话,不断提出新的问题或指令 。

下面是一个与deepseek-r1:14b 模型的对话交互示例:

\$ ollama run deepseek-r1:14b\> 请介绍一下人工智能的发展历程人工智能的发展历程可以追溯到20世纪50年代。以下是其主要阶段:1\. \*\*诞生(20世纪50年代)\*\*:1956年,达特茅斯会议上正式提出“人工智能”这一术语,标志着人工智能作为一个学科的诞生。早期的研究主要集中在逻辑推理和简单的问题解决上。2\. \*\*发展与挫折(20世纪60-70年代)\*\*:在这一时期,人工智能取得了一些进展,如开发出了一些早期的专家系统。然而,由于计算能力的限制和对人工智能的过高期望,研究遇到了一些挫折,进入了所谓的“人工智能寒冬”。3\. \*\*复苏(20世纪80-90年代)\*\*:随着计算机技术的发展,特别是计算能力的提升,人工智能开始复苏。机器学习和神经网络等领域取得了重要进展,专家系统也开始在商业和工业领域得到应用。4\. \*\*快速发展(21世纪初至今)\*\*:进入21世纪,大数据、云计算和深度学习等技术的发展,推动人工智能进入了快速发展阶段。深度学习算法在图像识别、语音识别、自然语言处理等领域取得了巨大成功,使得人工智能在各个领域得到了广泛应用,如自动驾驶、智能助手、医疗诊断等。\> 目前人工智能在医疗领域有哪些应用?目前人工智能在医疗领域有多种应用,包括:1\. \*\*疾病诊断\*\*:通过分析医学影像(如X光、CT、MRI等)和临床数据,人工智能算法可以辅助医生进行疾病的早期诊断和精准诊断。例如,一些人工智能系统能够识别医学影像中的异常,帮助医生检测癌症、心脏病等疾病。2\. \*\*药物研发\*\*:人工智能可以加速药物研发过程,通过分析大量的生物数据,预测药物的疗效和副作用,筛选潜在的药物靶点,以及优化药物分子结构。3\. \*\*个性化医疗\*\*:根据患者的基因信息、病史和生活习惯等数据,人工智能可以为患者提供个性化的治疗方案,提高治疗效果和减少不良反应。4\. \*\*医疗机器人\*\*:医疗机器人在手术、康复治疗等方面发挥着重要作用。例如,手术机器人可以实现精确的手术操作,减少手术创伤;康复机器人可以帮助患者进行康复训练。5\. \*\*医疗管理\*\*:人工智能可以用于医疗资源的管理和优化,如医院的排班、药品库存管理等,提高医疗服务的效率和质量。

在与模型交互时,你可以充分发挥模型的能力,进行各种文本处理任务,如文本生成、翻译、问答、代码生成等 。不同的模型在不同的任务上可能有不同的表现,你可以根据实际需求选择合适的模型进行交互 。

(三)模型管理

随着使用 Ollama 下载的模型越来越多,你可能需要对这些模型进行管理,例如查看已下载的模型列表、删除不需要的模型等 。

查看模型列表:要查看本地已下载的模型列表,可以使用ollama list命令 。在终端中输入该命令后,会列出所有已下载的模型,包括模型名称、版本、大小等信息 。例如:

\$ ollama listNAME       TYPE     IMAGE ID        SIZE       MODIFIEDdeepseek-r1:14b     model    923489234892    10GB      2024-07-15 10:30:00mistral    model    892347892347    4.1GB      2024-07-15 10:45:00

通过查看模型列表,你可以清楚地了解本地已安装的模型情况,方便进行后续的管理操作 。

删除模型:如果你想删除某个已下载的模型,可以使用ollama rm命令,后面跟上要删除的模型名称 。例如,如果你想删除名为 “deepseek-r1:14b” 的模型,可以在终端中输入以下命令:

ollama rm deepseek-r1:14b

执行上述命令后,Ollama 会删除指定的模型及其相关文件 。请谨慎使用删除命令,因为删除后模型将无法恢复,如果后续还可能使用该模型,建议不要轻易删除 。

查看模型信息:如果你想查看某个模型的详细信息,如模型的参数、许可证等,可以使用ollama show命令,后面跟上模型名称 。例如:

\$ ollama show deepseek-r1:14bName: deepseek-r1:14bType: modelVersion: 1.0Size: 10GBParameters: 14BLicense: Apache 2.0Description: Llama 2 is a large language model developed by Meta. It has been trained on a vast amount of text data and can generate high-quality text for various tasks.

通过ollama show命令,你可以获取模型的详细信息,更好地了解模型的特点和适用范围 。

通过这些模型管理命令,你可以方便地对本地下载的模型进行有效的管理,确保模型的使用更加高效和便捷 。

相关文章:

Mac下Ollama安装全攻略:开启本地大模型之旅

文章目录 Mac下Ollama安装全攻略:开启本地大模型之旅一、Ollama 是什么功能特点优势应用场景 二、安装前准备(一)系统要求(二)硬件要求 三、下载安装包(一)官网下载(二)其…...

[HelloCTF]PHPinclude-labs超详细WP-Level 1-FILE协议

源码分析 <?php include("get_flag.php");isset($_GET[wrappers]) ? include("file://".$_GET[wrappers]) : ;highlight_file(__FILE__); ?>第一句 include("get_flag.php");, 使代码包含了 get_flag.php 的内容 大概是生成 Flag 之类的…...

Skia 图形引擎介绍

文章目录 一、Skia 的基本概念1. 定位与作用2. 历史背景 二、Skia 的核心架构1. 模块化设计2. 渲染流程3. 跨平台适配 三、Skia 在 Flutter 中的角色1. 自绘 UI 的核心依赖2. 跨平台一致性3. 性能优化 四、Skia 的性能优势1. 高效的图形处理2. 与原生渲染的对比3. 性能瓶颈 五、…...

构建高可靠NFS存储:自动化挂载保障机制的设计与优势

一、背景与需求场景 在分布式系统或集群架构中&#xff0c;NFS&#xff08;Network File System&#xff09;是跨节点共享存储的经典方案。然而&#xff0c;传统/etc/fstab配置的静态挂载方式存在明显缺陷&#xff1a; 服务启动顺序不可控&#xff0c;网络未就绪时挂载失败临…...

Spring Boot对接twilio发送邮件信息

要在Spring Boot应用程序中对接Twilio发送邮件信息&#xff0c;您可以使用Twilio的SendGrid API。以下是一个简单的步骤指南&#xff0c;帮助您完成这一过程&#xff1a; 1. 创建Twilio账户并获取API密钥 注册一个Twilio账户&#xff08;如果您还没有的话&#xff09;。在Twi…...

如何创建并保存HTML文件?零基础入门教程

原文&#xff1a;如何创建并保存HTML文件&#xff1f;零基础入门教程 | w3cschool笔记 本文将以Windows系统为例&#xff0c;教你用最简单的记事本创建并保存第一个HTML网页。 &#x1f4dd; 第一步&#xff1a;准备工具 文本编辑器&#xff1a;使用系统自带的记事本&#xff…...

vue3 + css 列表无限循环滚动+鼠标移入停止滚动+移出继续滚动

1.动画文件.vue <template><div class"dashboard" click"setFullScreen"><div class"warp-box"><el-scrollbar ref"scrollRef" height"100%" scroll"handelScroll"><div class"…...

C#的简单工厂模式、工厂方法模式、抽象工厂模式

工厂模式是一种创建型设计模式&#xff0c;主要将对象的创建和使用分离&#xff0c;使得系统更加灵活和可维护。常见的工厂模式有简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;以下是 C# 实现的三个案例&#xff1a; 简单工厂模式 简单工厂模式通过一个工厂类来创建…...

Vue:Vue2和Vue3创建项目的几种常用方式以及区别

前言 Vue.js 和 Element UI 都是用 JavaScript 编写的。 1、Vue.js 是一个渐进式 JavaScript 框架。2、Element UI 是基于 Vue.js 的组件库。3、JavaScript 是这两个项目的主要编程语言。 而Element Plus是基于TypeScript开发的。 一、Vue2 1、基于vuecli工具创建 vue2 …...

C++ list类

C list类 目录 C list类引言1.list的使用1.1 list的构造1.2 list的iterator的使用1.3 list capacity1.4 list element acess1.5 list modifiers 2. list的迭代器失效3. list的模拟实现3.1 List.h文件3.2 List的反向迭代器 4.list与vector的对比 引言 在C标准库中&#xff0c;l…...

LeetCode 热题 100_跳跃游戏(78_55_中等_C++)(贪心算法)

LeetCode 热题 100_跳跃游戏&#xff08;78_55&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;贪心算法&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08;贪心算法&#xff09;&am…...

【Redis】Redis的数据删除(过期)策略,数据淘汰策略。

如果问到&#xff1a;假如Redis的key过期之后&#xff0c;会立即删除吗&#xff1f; 其实就是想问数据删除(过期)策略。 如果面试官问到&#xff1a;如果缓存过多&#xff0c;内存是有限的&#xff0c;内存被占满了怎么办&#xff1f; 其实就是问&#xff1a;数据的淘汰策略。…...

C++和标准库速成(八)——指针、动态数组、const、constexpr和consteval

目录 1. 指针和动态数组1.1 栈和自由存储区1.2 使用指针1.3 动态分配的数组1.4 空指针常量 2. const2.1 const修饰类型2.2 const与指针2.3 使用const保护参数2.4 const方法(建议&#xff09; 3. constexpr4. consteval参考 1. 指针和动态数组 动态内存允许所创建的程序具有在编…...

深入解析 Spring Boot 中的 FailureAnalyzer

深入解析 Spring Boot 中的 FailureAnalyzer 在 Spring Boot 应用中&#xff0c;我们难免会遇到启动失败的情况&#xff0c;而默认的异常信息往往过于复杂&#xff0c;导致排查问题变得困难。Spring Boot 提供了一套强大的 FailureAnalyzer 机制&#xff0c;能够捕获常见的异常…...

20. Excel 自动化:Excel 对象模型

一 Excel 对象模型是什么 Excel对象模型是Excel图形用户界面的层次结构表示&#xff0c;它允许开发者通过编程来操作Excel的各种组件&#xff0c;如工作簿、工作表、单元格等。 xlwings 是一个Python库&#xff0c;它允许Python脚本与Excel进行交互。与一些其他Python库&#x…...

【Matlab GUI】封装matlab GUI为exe文件

注&#xff1a;封装后的exe还是需要有matlab环境才能运行 &#xff08;1&#xff09;安装MCRinstaller.exe文件&#xff0c;在matlab安装目录下的toolbox/compiler/deploy/win64文件夹里 &#xff08;2&#xff09;安装完MCRinstaller.exe&#xff0c;字命令窗口输入&#x…...

ModBus TCP/RTU互转(主)(从)|| Modbus主动轮询下发的工业应用 || 基于智能网关的串口服务器进行Modbus数据收发的工业应用

目录 前言 一、ModBus TCP/RTU互转&#xff08;从&#xff09;及应用|| 1.1 举栗子 二、ModBus TCP/RTU互转&#xff08;主&#xff09; 2.1 举栗子 三、ModBus 主动轮询 3.1 Modbus主动轮询原理 3.2 Modbus格式上传与下发 3.2.1.设置Modbus主动轮询指令 3.2.2 设…...

Linux top 命令详解:从入门到高级用法

Linux top 命令详解&#xff1a;从入门到高级用法 在 Linux 系统中&#xff0c;top 是一个强大的实时监控工具&#xff0c;用于查看系统资源使用情况和进程状态。它可以帮助你快速了解 CPU、内存、负载等信息&#xff0c;是系统管理员和开发者的日常利器。本文将从基本用法开始…...

【网络协议】基于UDP的可靠协议:KCP

TCP是为流量设计的&#xff08;每秒内可以传输多少KB的数据&#xff09;&#xff0c;讲究的是充分利用带宽。而 KCP是为流速设计的&#xff08;单个数据包从一端发送到一端需要多少时间&#xff09;&#xff0c;以10%-20%带宽浪费的代价换取了比 TCP快30%-40%的传输速度。TCP信…...

【Docker入门】构建推送第一个Docker映像

【Docker入门】构建推送第一个Docker映像 Build and Push the First Docker Image By JacksonML Docker的容器(Container)映像是轻量级的可执行独立包&#xff0c;包含代码、运行时、库、环境变量以及配置文件&#xff0c;它对于运行软件至关重要。注册表可在团队间分享映像。…...

Python----计算机视觉处理(Opencv:图像颜色替换)

一、开运算 开运算就是对图像先进行腐蚀操作&#xff0c; 然后进行膨胀操作。开运算可以去除二值化图中的小的噪点&#xff0c;并分离相连的物体。 其主要目的就是消除那些小白点 在开运算组件中&#xff0c;有一个叫做kernel的参数&#xff0c;指的是核的大小&#xff0c;通常…...

搭建自己的OCR服务

网上看到相关文章&#xff0c;这里整理记录一下&#xff0c;仅供学习。 搭建自己的OCR服务&#xff0c;第一步&#xff1a;选择合适的开源OCR项目 - PandaCode辉 - 博客园 一、OCR是什么&#xff1f; 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09…...

vue:组件的使用

Vue&#xff1a;组件的使用 1、什么是组件 1.1、传统方式开发的应用 一个网页通常包括三部分&#xff1a;结构&#xff08;HTML&#xff09;、样式&#xff08;CSS&#xff09;、交互&#xff08;JavaScript&#xff09;。在传统开发模式下&#xff0c;随着项目规模的增大&a…...

leetcode日记(105)买卖股票的最佳时机Ⅱ

原本以为是一个很难想的动态规划&#xff0c;没想到是最简单的贪心…… 如果实在想不出就画个折线图&#xff0c;只买上涨的就行了&#xff0c;所有上涨的段都取到。 真的没想到会这么简单…… class Solution { public:int maxProfit(vector<int>& prices) {int …...

7种数据结构

7种数据结构 顺序表sqlite.hseqlite.c 单链表linklist.clinklist.h 双链表doulinklist.cdoulinklist.h 链式栈linkstack.clinkstack.h 队列SeqQueue.cSeqQueue.h 树tree.c 哈希表hash.c 顺序表 sqlite.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ typedef struct person…...

论文阅读:Deep Hybrid Camera Deblurring for Smartphone Cameras

今天介绍一篇 ACM SIGGRAPH 2024 的文章&#xff0c;关于手机影像中的去模糊的文章。 Deep Hybrid Camera Deblurring for Smartphone Cameras Abstract 手机摄像头尽管取得了显著的进步&#xff0c;但由于传感器和镜头较为紧凑&#xff0c;在低光环境下的成像仍存在困难&am…...

Redis 三主三从集群部署的完整方案

一、架构设计原理‌ 分布式数据分片 哈希槽机制‌&#xff1a;Redis Cluster 将数据划分为 16384 个槽位&#xff0c;每个主节点负责部分槽位&#xff08;如主节点1管理槽0-5460&#xff0c;主节点2管理5461-10922等&#xff09;。 自动负载均衡‌&#xff1a;数据按哈希值分配…...

C++项目:高并发内存池_上

目录 1. 项目介绍 2. 内存池概念 2.1 池化技术 2.2 内存池和内存碎片 2.3 细看malloc 3. 定长内存池的实现 ObjectPool.hpp 4. 高并发内存池框架 5. thread cache测试 5.1 thread cache框架 5.2 ConcurrentAlloc.hpp 6. central cache测试 6.1 central cache框架 …...

『Plotly实战指南』--折线图绘制基础篇

在数据分析的世界中&#xff0c;折线图是一种不可或缺的可视化工具。 它能够清晰地展示数据随时间或其他变量的变化趋势&#xff0c;帮助我们快速发现数据中的模式、趋势和异常。 无论是金融市场分析、气象数据监测&#xff0c;还是业务增长趋势预测&#xff0c;折线图都能以直…...

【css酷炫效果】纯CSS实现波浪形分割线

【css酷炫效果】纯CSS实现波浪形分割线 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;https://download.csdn.net/download/u011561335/90492023 缘 创作随缘&#xff0c;不定时更新。 创作背景 刚看到csdn出活动了&…...

【资料分享】全志科技T113-i全国产(1.2GHz双核A7 RISC-V)工业核心板规格书

核心板简介 创龙科技SOM-TLT113 是一款基于全志科技T113-i 双核ARM Cortex-A7 玄铁C906 RISC-V HiFi4 DSP 异构多核处理器设计的全国产工业核心板&#xff0c;ARM Cortex-A7 处理单元主频高达1.2GHz。核心板 CPU、ROM、RAM、电源、晶振等所有元器件均采用国产工业级方案&…...

Coco AI 智能检索 Hugo Blog 集成指南

在此前的文章中&#xff0c;我们介绍了如何使用 Coco Server 连接 Notion&#xff0c;实现智能内容检索。本次&#xff0c;我们将进一步探索如何在 Coco Server 最新版本 中集成 Hugo Site&#xff0c;以便对 Hugo 站点 进行高效检索。 Coco Server 部署方式 要在本地或服务器…...

【MySQL数据库】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法

在DQL的基础查询中&#xff0c;我们已经学过了多表查询的一种&#xff1a;联合查询&#xff08;union&#xff09;。本文我们将系统的讲解多表查询。 笛卡尔积现象 首先&#xff0c;我们想要查询emp表和stu表两个表&#xff0c;按照我们之前的知识栈&#xff0c;我们直接使用…...

jmeter将返回的数据写入csv文件

举例说明&#xff0c;我需要接口返回体中的exampleid与todoid的数据信息&#xff08;使用边界提取器先将其提取&#xff09;&#xff0c;并将其写入csv文件进行保存 使用后置处理器BeanShell 脚本实例如下 import java.io.*;// 设置要写入的文件路径 String filePath "…...

AI如何在财务工作中提升效率的一些看法

文章目录 1. 自动化重复性任务2. 财务预测与分析3. 欺诈检测与风险管理4. 智能报表与决策支持5. 税务管理优化6. 提升团队协作与客户体验未来的趋势与挑战结论 随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;其正全方位地革新各行各业的运作模式&#xff0…...

OpenCV入门指南:从安装到基本操作

引言 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它包含了数百种计算机视觉算法&#xff0c;广泛应用于图像处理、视频分析、物体检测、人脸识别等领域。本文将带你从安装OpenCV开始&#xff0c;逐步了解其基…...

简单以太网配置

display arp //查看路由器mac地址 交换机配置命令&#xff1a; system-view // 从用户视图进入系统视图 dis mac-address //查看mac地址表 路由器配置命令: system-view // 从用户视图进入系统视图 int GigabitEthernet 0/0/0 //进入G口 0/0/0 进入之后配置网关: ip addre…...

蓝桥杯嵌入式组第十四届省赛题目解析+STM32G431RBT6实现源码

文章目录 1.题目解析1.1 分而治之&#xff0c;藕断丝连1.2 模块化思维导图1.3 模块解析1.3.1 KEY模块1.3.2 LED模块1.3.3 LCD模块1.3.4 TIM模块1.3.4.1 频率变化处理1.3.4.1 占空比计算 1.3.5 ADC模块 2.源码2.1cubemx配置3.第十四届题目 前言&#xff1a;STM32G431RBT6实现嵌入…...

让双向链表不在云里雾里

又来博客留下我的足迹了&#xff0c;哈哈哈&#xff0c;这次是对于双向链表的理解 目录 创建双向链表&#xff1a; 申请结点&#xff1a; 双向链表初始化&#xff1a; 双向链表插入结点&#xff1a; 双向链表删除结点&#xff1a; 双向链表的打印&#xff1a; 双向链表…...

基于django+vue的购物商城系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 热卖商品 优惠资讯 个人中心 后台登录 管理员功能界面 用户管理 商品分类管理…...

在Vue3中使用Echarts的示例

1.常用-引用ts文件方式 1.1 导出ts文件-一个简单的柱状图 export const baseBarChart (xdata: string[], data: number[][], legendData: string[]) > {if (data.length 0) {return noData;}// 定义颜色数组const color [#00CCCC,#FF9900,#1677DC,#FF6666,#B366FF,#666…...

TCP协议的多线程应用、多线程下的网络编程

DAY13.2 Java核心基础 多线程下的网络编程 基于单点连接的方式&#xff0c;一个服务端对应一个客户端&#xff0c;实际运行环境中是一个服务端需要对应多个客户端 创建ServerSocketNable类&#xff0c;多线程接收socket对象 public class ServerSocketNable implements Run…...

每日学习Java之一万个为什么(待补充)

Git分支操作 git branch 分支名 git branch -v git checkout -b 分支名 git checkout 分支名 git merge 分支名 git branch -d | -D 分支名Git冲突 git同名文件合并的最基本单位是行。同名文件同一行不同就会发生冲突。 解决办法&#xff1a;及时沟通&#xff0c;手动更改&…...

设计C语言的单片机接口

一、主要内容 (一)控制引脚 1、定义管脚 // 定义管脚的结构体 struct pin{ int id; // 管脚编号 int mode; // 模式&#xff0c;输入为1&#xff0c;输出为0 int pull; // 输入电阻 int driver; // 功率 } 2、输出电平 语法&#xff1a; void pin_output(s…...

博客迁移----宝塔面板一键迁移遇到问题

前景 阿里云轻量级服务器到期了&#xff0c;又免费领了个ESC&#xff0c; 安转了宝塔面板。现在需要迁移数据&#xff0c;使用宝塔面板一键迁移功能&#xff0c;完成了数据的迁移&#xff0c;改了域名的解析&#xff0c;现在进入博客是显示502 bad grateway 宝塔搬家参考链接…...

抽象工厂模式 (Abstract Factory Pattern)

抽象工厂模式 (Abstract Factory Pattern) 是一种创建型设计模式&#xff0c;它提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。 一、基础 1. 意图 提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。 2. …...

LeetCode 第14~16题

目录 LeetCode 第14题&#xff1a;最长公共前缀 LeetCode 第15题&#xff1a;三数之和 LeetCode 第16题&#xff1a;最接近的三数之和 LeetCode 第14题&#xff1a;最长公共前缀 题目描述 编写一个函数来查找字符数组中的最长公共前缀。如果不存在公共前缀&#xff0c;返回字符…...

深入了解Linux —— git三板斧

版本控制器git 为了我们方便管理不同版本的文件&#xff0c;就有了版本控制器&#xff1b; 所谓的版本控制器&#xff0c;就是能够了解到一个文件的历史记录&#xff08;修改记录&#xff09;&#xff1b;简单来说就是记录每一次的改动和版本迭代的一个管理系统&#xff0c;同…...

再学:abi编码 地址类型与底层调用

目录 1.内置全局变量及函数 2.abi 3.地址类型 4.transfer 1.内置全局变量及函数 2.abi data就是abi编码 abi描述&#xff1a;以json格式表明有什么方法 3.地址类型 4.transfer x.transfer:合约转给x call 和 delegatecall 是 Solidity 中用于底层合约调用的函数&#xff0…...

Redis的消息队列是怎么实现的

Redis 本身并不是一个专门的消息队列系统,但它的 List、Pub/Sub 和 Stream 数据结构可以用来实现消息队列的功能。以下是 Redis 实现消息队列的几种常见方式: 1. 基于 List 实现消息队列 Redis 的 List 是一个双向链表,支持在头部和尾部进行高效的插入和删除操作,非常适合…...