kafka服务端之日志磁盘存储
文章目录
- 页缓存
- 顺序写
- 零拷贝
Kafka依赖于文件系统(更底层地来说就是磁盘)来存储和缓存消息 。 那么kafka是如何让自身在使用磁盘存储的情况下达到高性能的?接下来主要从3各方面详细解说。
页缓存
页缓存是操作系统实现的一种主要的磁盘缓存, 以此用来减少对磁盘I/0 的操作。 具体来说, 就是把磁盘中的数据缓存到内存中, 把对磁盘的访间变为对内存的访问。 为了弥补性能上的差异, 现代操作系统越来越 “ 激进地 ” 将内存作为磁盘缓存, 甚至会非常乐意将所有可用的内存用作磁盘缓存, 这样当内存回收时也几乎没有性能损失, 所有对于磁盘的读写也将经由统一的缓存。
当一个进程准备读取磁盘上的文件内容时, 操作系统会先查看待读取的数据所在的页
(page)是否在页缓存(pagecache)中, 如果存在(命中)则直接返回数据, 从而避免了对物理磁盘的I/O操作;如果没有命中, 则操作系统会向磁盘发起读取请求并将读取的数据页存入页缓存, 之后再将数据返回给进程。 同样, 如果 一个进程需要将数据写入磁盘, 那么操作系统也会检测数据对应的页是否在页缓存中, 如果不存在, 则会先在页缓存中添加相应的页, 最后将数据写入对应的页。 被修改过后的页也就变成了脏页, 操作系统会在合适的时间把脏页中的数据写入磁盘, 以保持数据的一致性。
Linux操作系统中的vm.dirty_background_ra巨o参数用来指定当脏页数量达到系统
内存的百分之多少之后就会触发pdflush/flush/kdmflush等后台回写进程的运行来处理脏页, 一般设置为小千10 的值即可,但不建议设置为0。与这个参数对应的还有一个vm.dirty_ratio参数, 它用来指定当脏页数量达到系统内存的百分之多少之后就不得不开始对脏页进行处理,在此过程中, 新的VO请求会被阻挡直至所有脏页被冲刷到磁盘中。
对一个进程而言, 它会在进程内部缓存处理所需的数据, 然而这些数据有可能还缓存在操作系统的页缓存中, 因此同 一份数据有可能被缓存了两次。 并且, 除非使用DirectI/0的方式,否则页缓存很难被禁止。 此外, 用过Java的人一般都知道两点事实: 对象的内存开销非常大,通常会是真实数据大小的几倍甚至更多, 空间使用率低下; Java的垃圾回收会随着堆内数据的增多而变得越来越慢。 基千这些因素, 使用文件系统并依赖于页缓存的做法明显要优于维护 一个进程内缓存或其他结构, 至少我们可以省去了一份进程内部的缓存消耗, 同时还可以通过结构紧凑的字节码来替代使用对象的方式以节省更多的空间。如此, 我们可以在32GB的机器上使用28GB至30GB的内存而不用担心GC所带来的性能间题。 此外, 即使Kafka服务重启,页缓存还是会保持有效, 然而进程内的缓存却需要重建。 这样也极大地简化了代码逻辑, 因为维护页缓存和文件之间的一致性交由操作系统来负责, 这样会比进程内维护更加安全有效。
Kafka 中大量使用了页缓存, 这是Kafka 实现高吞吐的重要因素之一。 虽然消息都是先被写入页缓存, 然后由操作系统负责具体的刷盘任务的, 但在Kafka中同样提供了同步刷盘及间断性强制刷盘( fsync )的功能,这些功能可以通过 log.flush.interval . messages 、log.flush .int erval .m s 等参数来控制。同步刷盘可以提高消息的可靠性,防止由于机器掉电等异常造成处于页缓存而没有及时写入磁盘的消息丢失。不过笔者并不建议这么做,刷盘任务就应交由操作系统去调配,消息的可靠性应该由多副本机制来保障,而不是由同步刷盘这种严重影响性能的行为来保障 。
Linux 系统会使用磁盘的 一部分作为 swap 分区,这样可以进行进程的调度:把当前非活跃的进程调入 swap 分区,以此把内存空出来让给活跃的进程。对大量使用系统页缓存的 Kafka而言,应当尽量避免这种内存的交换,否则会对它各方面的性能产生很大的负面影响 。我们可以通过修改 vm.swappiness 参数 ( Linux 系统参数〉来进行调节 。 vm. swappiηess 参数的上限为 100,它表示积极地使用 swap 分区,并把内存上的数据及时地搬运到 swap 分区中;vm.swappiness 参数的下限为 0 ,表示在任何情况下都不要发生交换( vm . swappiness=0的含义在不同版本的 Linux 内核中不太相同,这里采用的是变更后的最新解释) ,这样一来 ,当内存耗尽时会根据一定的规则突然中止某些进程。可以将这个参数的值设置为 1 ,这样保留了 swap 的机制而又最大限度地限制了它对 Kafka 性能的影响 。
顺序写
Kafka顺序写磁盘是其实现高性能数据存储的关键技术之一。
-
日志分段:Kafka的每个分区在磁盘上以日志文件的形式存储,这些日志文件会被切分成多个日志段。新消息会不断追加到当前活跃的日志段末尾,当达到一定条件(如文件大小达到阈值或时间间隔),就会创建新的日志段。
-
顺序追加:生产者发送到Kafka的消息会按照到达的顺序依次追加到分区日志文件中,不会随机插入或修改中间的内容,保证了磁盘写入是顺序的。
优势
-
提升写入性能:与随机写相比,顺序写磁盘时磁头移动距离小,减少了寻道时间和旋转延迟,能充分利用磁盘的顺序读写带宽,大幅提升写入速度,使Kafka能处理大量并发写入请求。
-
提高数据可靠性:顺序写的方式使数据在磁盘上连续存储,降低了数据碎片化和存储错误的风险,同时也便于Kafka进行日志的分段、清理和压缩等管理操作,有助于保证数据的完整性和一致性。
实现条件
-
底层文件系统支持:Kafka依赖底层文件系统提供的顺序写支持,如常见的ext4、XFS等文件系统都能很好地配合Kafka实现顺序写。
-
合理配置参数:通过合理设置 log.segment.bytes (日志段大小)、 log.roll.hours (日志滚动时间间隔)等参数,能确保Kafka按预期进行日志分段和顺序写入,避免因参数设置不当导致的写入性能下降。
零拷贝
Kafka 还使用零拷 贝 ( Zero-Copy )技术来进一步提升性能 。 所谓的零拷贝是指将数据直接从磁盘文件复制到网卡设备中,而不需要经由应用程序之手 。零拷贝大大提高了应用程序的性能,减少了内核和用户模式之间的上下文切换 。 对 Linux操作系统而言,零拷贝技术依赖于底层的 sendfile() 方法实现 。 对应于 Java 语言,
FileChannal.transferTo()方法的底层实现就是 sendfile()方法 。
传统的文件读写中 文件经历了 4 次复制的过程:
- (1)调用read()时, 文件A中的内容被复制到了内核态下的Read Buffer中。
- (2)CPU控制将内核模式数据复制到用户模式下。
- (3)调用write()时, 将用户模式下的内容复制到内核模式下的SocketBuffer中。
- (4)将内核模式下的SocketBuffer的数据复制到网卡设备中传送。
从上面的过程可以看出, 数据平白无故地从内核模式到用户模式 “ 走了一 圈 ” , 浪费了2次复制过程: 第一次是从内核模式复制到用户模式;第二次是从用户模式再复制回内核模式,即上面4次过程中的第2步和第3步。 而且在上面的过程中, 内核和用户模式的上下文的切换也是4次。
如果采用了零拷贝技术, 那么应用程序可以直接请求内核把磁盘中的数据传输给Socket,如图所示。
零拷贝技术通过 DMA (Direct Memory Access) 技术将文件内容复制到内核模式下的 Read Buffer 中。 不过没有数据被复制到 Socket Buffer, 相反只有包含数据的位置和长度的信息的文件描述符被加到 Socket Buffer 中。 DMA 引擎直接将数据从内核模式中传递到网卡设备(协议引擎)。 这里数据只经历了2次复制就从磁盘中传送出去了, 并且上下文切换也变成了2次。零拷贝是针对内核模式而言的, 数据在内核模式下实现了零拷贝。
相关文章:
kafka服务端之日志磁盘存储
文章目录 页缓存顺序写零拷贝 Kafka依赖于文件系统(更底层地来说就是磁盘)来存储和缓存消息 。 那么kafka是如何让自身在使用磁盘存储的情况下达到高性能的?接下来主要从3各方面详细解说。 页缓存 页缓存是操作系统实现的一种主要的磁盘缓存…...
deepseek来讲lua
Lua 是一种轻量级、高效、可嵌入的脚本语言,广泛应用于游戏开发、嵌入式系统、Web 服务器等领域。以下是 Lua 的主要特点和一些基本概念: 1. 特点 轻量级:Lua 的核心非常小,适合嵌入到其他应用程序中。高效:Lua 的执…...
C++开发(软件开发)常见面试题
目录 1、C里指针和数组的区别 2、C中空指针请使用nullptr不要使用NULL 3、http/https区别和头部结构? 4、有了mac地址为什么还要ip地址?ip地址的作用 5、有了路由器为什么还要交换机? 6、面向对象三大特性 7、友元函数 8、大端小端 …...
AtCoder Beginner Contest 391(A~E题题解)
A - Lucky Direction 思路:纯模拟的一个水题 #include <bits/stdc.h> using namespace std; #define int long long string s; signed main() { cin>>s;for(int i0;i<s.size();i){char cs[i];if(cN){cout<<"S";}else if(c…...
使用线性回归模型逼近目标模型 | PyTorch 深度学习实战
前一篇文章,计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 使用线性回归模型逼近目标模型 什么是回归什么是线性回归使用 PyTorch 实现线性回归模型代码执行结…...
解决com.kingbase8.util.KSQLException: This _connection has been closed.
问题描述 一个消息管理系统,系统采用kingbase8数据库,数据库采用单体模式,后台应用也采用springboot单体模式。系统正式上线后,出现几个JDBC响应的异常信息: com.kingbase8.util.KSQLException: An I/O error occurred while sending to the backend.java.net.SocketTime…...
Pyqt 的QTableWidget组件
QTableWidget 是 PyQt6 中的一个表格控件,用于显示和编辑二维表格数据。它继承自 QTableView,提供了更简单的方式来处理表格数据,适合用于需要展示结构化数据的场景。 1. 常用方法 1.1 构造函数 QTableWidget(parent: QWidget None)&#x…...
DeepSeek R1 Distill Llama 70B(免费版)API使用详解
DeepSeek R1 Distill Llama 70B(免费版)API使用详解 在人工智能领域,随着技术的不断进步,各种新的模型和应用如雨后春笋般涌现。今天,我们要为大家介绍的是OpenRouter平台上提供的DeepSeek R1 Distill Llama 70B&…...
24.ppt:小李-图书策划方案【1】
目录 NO1234 NO5678 NO1234 新建PPT两种方式👇docx中视图→导航窗格→标题1/2/3ppt新建幻灯片→从大纲→重置开始→版式设计→主题插入→表格 NO5678 SmartArt演示方案:幻灯片放映→自定义幻灯片放映→新建→选中添加...
百科词条创建审核不通过的原因有哪些?
我们知道的国内有名的百科网站有百度百科、快懂百科、搜狗百科、360百科,这些有名的百科网站。一般来说,百科的词条排名都是在第一页的,无论是名人、明星、软件、影视名称,还是其他名称,大多排名都在首页,这就拥有了更多的曝光量和流量,而且由于百科是人们获取信息、查找资料的…...
amis组件crud使用踩坑
crud注意 过滤条件参数同步地址栏 默认 CRUD 会将过滤条件参数同步至浏览器地址栏中,比如搜索条件、当前页数,这也做的目的是刷新页面的时候还能进入之前的分页。 但也会导致地址栏中的参数数据合并到顶层的数据链中,例如:自动…...
【docker】Failed to allocate manager object, freezing:兼容兼容 cgroup v1 和 v2
参考大神让系统同时兼容 cgroup v1 和 v2 要解决你系统中只挂载了 cgroup v2 但需要兼容 cgroup v1 的问题,可以通过以下几步来使系统同时兼容 cgroup v1 和 cgroup v2。这样 Docker 和其他服务就可以正常工作了。步骤 1:更新 Grub 配置,启用兼容模式 编辑 GRUB 配置来启用同…...
LeetCode:503.下一个更大元素II
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:503.下一个更大元素II 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[…...
【AI日记】25.02.08
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 探索 AI 应用探索周二有个面试,明后天打算好好准备一下,我打算主要研究下 AI 如何在该行业赋能和应用,以及该行业未来的发展前景和公司痛点&#…...
32. C 语言 安全函数( _s 尾缀)
本章目录 前言什么是安全函数?安全函数的特点主要的安全函数1. 字符串操作安全函数2. 格式化输出安全函数3. 内存操作安全函数4. 其他常用安全函数 安全函数实例示例 1:strcpy_s 和 strcat_s示例 2:memcpy_s示例 3:strtok_s 总结 …...
常用数据结构之String字符串
字符串 在Java编程语言中,字符可以使用基本数据类型char来保存,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。 操作字符串常用的有三种类:String、StringBuilder、StringBuffer 接下来看看这三类常见用…...
Android开发获取缓存,删除缓存
Android开发获取缓存,删除缓存 app设置中往往有清理缓存的功能。会显示当前缓存时多少,然后可以点击清理缓存 直接上代码: object CacheHelper {/*** 获取缓存大小* param context* return* throws Exception*/JvmStaticfun getTotalCache…...
网络安全 | 保护智能家居和企业IoT设备的安全策略
网络安全 | 保护智能家居和企业IoT设备的安全策略 一、前言二、智能家居和企业 IoT 设备面临的安全威胁2.1 设备自身安全缺陷2.2 网络通信安全隐患2.3 数据隐私风险2.4 恶意软件和攻击手段 三、保护智能家居和企业 IoT 设备的安全策略3.1 设备安全设计与制造环节的考量3.2 网络…...
掌握API和控制点(从Java到JNI接口)_38 JNI从C调用Java函数 01
1. Why? 将控制点下移到下C/C层 对古典视角的反思 App接近User,所以App在整体架构里,是主导者,拥有控制权。所以, App是架构的控制点所在。Java函数调用C/C层函数,是合理的。 但是EIT造形告诉我们: App…...
vue组件间的数据传递:自定义输入组件(v-model/defineModel)
文章目录 引言I Vue 3.4 开始,推荐使用 defineModel() 宏子组件使用defineModel父组件用 v-model 绑定值底层机制II Vue 3.4之前:自定义输入组件(组件中实现 v-model )前置知识父组件监听自定义事件进行 v-model 的数据绑定子组件通过监听input事件触发自定义的 `update:mo…...
记录一下 在Mac下用pyinstallter 打包 Django项目
安装: pip install pyinstaller 在urls.py from SheepMasterOneToOne import settings from django.conf.urls.static import staticurlpatterns [path("admin/", admin.site.urls),path(generate_report/export/, ReportAdmin(models.Report, admin.site).generat…...
大模型相关概念
文章目录 部署相关数据并行模型并行张量并行管道并行(流水线并行) 混合并行(数据并行模型并行)显存优化技术InfiniBand去中心化的All-Reduce操作软件 大模型命名**1. 模型架构相关****2. 模型用途相关****3. 训练方法相关****4. 多…...
【实用教程】在 Android Studio 中连接 MuMu 模拟器
MuMu 模拟器是一个非常流行的安卓模拟器,特别适合开发人员进行应用测试,我使用它的根本原因在于Android Studio自带的AVM实现是太难用了,但是Mumu模拟器启动以后不会自动被Android Studio识别到,但是其他模拟器都是能够正常被Andr…...
Linux 安装 Ollama
1、下载地址 Download Ollama on Linux 2、有网络直接执行 curl -fsSL https://ollama.com/install.sh | sh 命令 3、下载慢的解决方法 1、curl -fsSL https://ollama.com/install.sh -o ollama_install.sh 2、sed -i s|https://ollama.com/download/ollama-linux|https://…...
双亲委派(JVM)
1.双亲委派 在 Java 中,双薪委派通常是指双亲委派模型,它是 Java 类加载器的一种工作模式,用于确保类加载的安全性和一致性。以下是其相关介绍: 定义与作用 定义:双亲委派模型要求除了顶层的启动类加载器外…...
青少年编程与数学 02-009 Django 5 Web 编程 01课题、概要
青少年编程与数学 02-009 Django 5 Web 编程 01课题、概要 一、Django 5Django 5 的主要特性包括: 二、MVT模式三、官方网站四、内置功能数据库 ORM(对象关系映射)用户认证和授权表单处理模板引擎URL 路由缓存框架国际化和本地化安全性功能管…...
为AI聊天工具添加一个知识系统 之90 详细设计之31 Derivation 之5-- 神经元变元用它衍生神经网络
本文要点 要点 Derivation 神经元变元衍生模型( 衍生 神经网络) 整体上说,它( Derivation)自己充当 整体无意识原型anestor的代言--作为所有神经网络的 共生环境。Derivation 初始断言了 基于最古老的 自然和逻辑树…...
Centos挂载镜像制作本地yum源,并补装图形界面
内网环境centos7.9安装图形页面内网环境制作本地yum源 上传镜像到服务器目录 创建目录并挂载镜像 #创建目录 cd /mnt/ mkdir iso#挂载 mount -o loop ./CentOS-7-x86_64-DVD-2009.iso ./iso #前面镜像所在目录,后面所挂载得目录#检查 [rootlocalhost mnt]# df -h…...
【Python实战练习】Python类中的方法:形式与作用详解
文章目录 Python类中的方法:形式与作用详解1. 实例方法 (Instance Method)定义与使用作用2. 类方法 (Class Method)定义与使用作用3. 静态方法 (Static Method)定义与使用作用4. 特殊方法 (Magic/Dunder Methods)常见的特殊方法定义与使用作用5. 抽象方法 (Abstract Method)定…...
Idea 2024.3 使用CodeGPT插件整合Deepseek
哈喽,大家好,我是浮云,最近国产大模型Deepseek异常火爆,作为程序员我也试着玩了一下,首先作为简单的使用,大家进入官网,点击开始对话即可进行简单的聊天使用,点击获取手机app即可安装…...
神经网络常见激活函数 1-sigmoid函数
sigmoid 1 函数求导 sigmoid函数 σ ( x ) 1 1 e ( − x ) \sigma(x) \frac{1}{1e^{(-x)}} σ(x)1e(−x)1 sigmoid函数求导 d d x σ ( x ) d d x ( 1 1 e − x ) e − x ( 1 e − x ) 2 ( 1 e − x ) − 1 ( 1 e − x ) 2 1 1 e − x − 1 ( 1 e − x ) 2 …...
Vue(6)
一.路由板块封装 (1)路由的封装抽离 目标:将路由板块抽离出来 好处:拆分板块,利于维护 // 路由的使用步骤 5 2 // 5个基础步骤 // 1. 下载 v3.6.5 // 2. 引入 // 3. 安装注册 Vue.use(Vue插件) // 4. 创建路由对象…...
深入理解进程优先级
目录 引言 一、进程优先级基础 1.1 什么是进程优先级? 1.2 优先级与系统性能 二、查看进程信息 2.1 使用ps -l命令 2.2 PRI与NI的数学关系 三、深入理解Nice值 3.1 Nice值的特点 3.2 调整优先级实践 四、进程特性全景图 五、优化实践建议 结语 引言 在操…...
机器学习 - 需要了解的条件概率、高斯分布、似然函数
似然函数是连接数据与参数的桥梁,通过“数据反推参数”的逆向思维,成为统计推断的核心工具。理解它的关键在于区分“参数固定时数据的概率”与“数据固定时参数的合理性”,这种视角转换是掌握现代统计学和机器学习的基础。 一、在学习似然函…...
程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<7>
大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们一起来学习转移表,回调函数,qsort… 目录 一、转移表1.1 定义与原理1.3…...
4、C#基于.net framework的应用开发实战编程 - 测试(四、一) - 编程手把手系列文章...
四、 测试; 四.一、调试; 开发完应用,就需要对应用进行测试,第一部就从调试开始,特别是一些重要的功能点,还有如果运行时有问题,也需要对应用进行调试,以找出问题。 1、 …...
逻辑回归:Sigmoid函数在分类问题中的应用
欢迎来到我的主页:【Echo-Nie】 本篇文章收录于专栏【机器学习】 1 什么是Sigmoid函数? Sigmoid函数(Logistic函数)是机器学习中最经典的激活函数之一,是一个在生物学中常见的S型函数,也称为S型生长曲线。…...
使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)上安装 Java 8
文章目录 1. 安装 SDKMAN!2. 查找可用的 Java 8 版本3. 安装 Java 84. 验证安装5. 切换 Java 版本(可选)6. 解决 ARM 架构兼容性问题总结 可以使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)上安装 Java 8。SDKMAN! 是一个强大…...
AUTOSAR汽车电子嵌入式编程精讲300篇-基于FPGA的CAN FD汽车总线数据交互系统设计
目录 前言 汽车总线以及发展趋势 汽车总线技术 汽车总线发展趋势 CAN FD总线国内外研究现状 2 系统方案及CAN FD协议分析 2.1系统控制方案设计 2.2 CAN FD总线帧结构分析 2.2.1数据帧分析 2.2.2远程帧分析 2.2.3过载帧分析 2.2.4错误帧分析 2.2.5帧间隔分析 2.3位…...
滴水逆向_程序实现弹窗修改OEP
作业: 几个很重要的注意事项。 1 我们模拟的是内核如何将一个文件硬盘中拉伸到内存中,但是我们做的仅仅是 模拟拉伸过程。也就是说其中的属性字段是无差别的拷贝的。 但是加载exe的时候 ,imagebase 是随机分配的。 我们打开内存中的exe&…...
HTTP报文格式
HTTP请求报文格式 1. 结构: [请求行] [请求头] [空行] [请求体] (可选)请求行:方法 URI HTTP版本 常见方法:GET(获取资源)、POST(提交数据)、PUT(替…...
pytest.fixture
pytest.fixture 是 pytest 测试框架中的一个非常强大的功能,它允许你在测试函数运行前后执行一些设置或清理代码。以下是关于 pytest.fixture 的详细介绍: 一、定义与用途 pytest.fixture 是一个装饰器,用于标记一个函数为 fixture。Fixture 函数中的代码可以在测试函数运…...
位运算算法篇:进入位运算的世界
位运算算法篇:进入位运算的世界 本篇文章是我们位运算算法篇的第一章,那么在我们是算法世界中,有那么多重要以及有趣的算法,比如深度优先搜索算法以及BFS以及动态规划算法等等,那么我们位运算在这些算法面前相比&#…...
Heterogeneous Graph Attention Network(HAN)
HAN WWW19 分类:异构图神经网络 元路径 (图片地址:异构图注意力网络(3) HAN_哔哩哔哩_bilibili) 如图所示,假如异构图如上所示。那么,按照MAM和MDM就可以生成不同的子图。这样,就可以生成MAM与MDM的一阶邻居…...
重学SpringBoot3-Spring WebFlux之SSE服务器发送事件
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞??收藏评论 Spring WebFlux之SSE服务器发送事件 1. 什么是 SSE?2. Spring Boot 3 响应式编程与 SSE 为什么选择响应式编程实现 SSE? 3. 实现 SSE 的基本步骤 3.1 创建 Spr…...
Java中实现定时锁屏的功能(可以指定时间执行)
Java中实现定时锁屏的功能(可以指定时间执行) 要在Java中实现定时锁屏的功能,可以使用java.util.Timer或java.util.concurrent.ScheduledExecutorService来调度任务,并通过调用操作系统的命令来执行锁屏。下面我将给出一个基本的…...
工作案例 - python绘制excell表中RSRP列的CDF图
什么是CDF图 CDF(Cumulative Distribution Function)就是累积分布函数,是概率密度函数的积分。CDF函数是一个在0到1之间的函数,描述了随机变量小于或等于一个特定值的概率。在可视化方面,CDF图表明了一个随机变量X小于…...
推理大模型DeepSeek迅速觉醒
随着人工智能技术的快速发展,DeepSeek作为一种创新的技术工具,正在重塑行业格局。本文将深入分析如何把握这一波由DeepSeek带来的流量红利,揭示其在市场洞察、技术创新和用户需求中的潜在机会,并提供实用策略帮助个人或企业快速融…...
Ubuntu22.04部署deepseek大模型
Ollama 官方版 Ollama 官方版: https://ollama.com/ 若你的显卡是在Linux上面 可以使用如下命令安装 curl -fsSL https://ollama.com/install.sh | shollama命令查看 rootheyu-virtual-machine:~# ollama -h Large language model runnerUsage:ollama [flags]ollama [comman…...
redis的数据结构介绍(string
redis是键值数据库,key一般是string类型,value的类型很多 string,hash,list,set,sortedset,geo,bitmap,hyperlog redis常用通用命令: keys: …...