linux概念详解
用户守护进程
用户空间守护进程是一些在后台运行的长期服务程序,提供系统级服务。
下面举一些例子。
网络服务:
如sshd(SSH服务)、httpd(HTTP服务)。
sshd:sshd
守护进程会在后台运行,并等待来自网络的SSH连接请求。
httpd:httpd
守护进程负责处理和响应来自客户端(如浏览器)的HTTP请求。常见的Web服务器如Apache、Nginx都是这种类型的守护进程。
ftpd:FTP守护进程,提供文件传输协议(FTP)服务,允许用户通过FTP协议上传和下载文件。
系统日志:
如syslog,记录系统和应用程序日志。又如cron,定期执行预定的任务。
syslog
守护进程会不断地在后台监视系统日志文件,并进行日志记录。
cron:定期执行计划任务。cron
守护进程在后台持续运行,根据预设的计划任务表(crontab)定期执行命令或脚本。例如,每天定时备份数据或每周更新系统。
库文件
1.介绍
库文件是技术大牛写的代码,我们可以引用这些文件到我们的代码中。
文件分为静态库和动态库。
所谓静态库,在编译时便和和其他代码一起编译成一个可执行文件了。
而动态库是在其他代码运行时被加载进去的。
2.库文件的形式
-
静态库文件:在Linux系统中,静态库通常是以
.a
结尾的文件。 -
动态库文件:在Linux中,动态库通常是以
.so
结尾的文件。
3. 如何使用静态库和动态库
静态库的使用
-
创建静态库:你可以使用
ar
工具将多个目标文件打包成一个静态库文件。ar rcs libexample.a example1.o example2.o
-
编译时链接静态库:在编译程序时,通过
gcc
或g++
的-l
选项链接静态库。例如,如果要使用libexample.a
库,可以这样编译:gcc -o myapp myapp.c -L/path/to/libs -lexample
这里的
-L
用于指定静态库的路径;-l
用于指定要链接的库(去掉前缀lib
和文件扩展名.a
)。 -
生成可执行文件:编译后,
myapp
将包含静态库的代码。
动态库的使用
-
创建动态库:通过
gcc
生成共享库文件(.so
文件),例如:gcc -shared -o libexample.so example1.o example2.o
-
编译时链接动态库:在编译程序时,通过
gcc
的-l
选项链接动态库。例如:gcc -o myapp myapp.c -L/path/to/libs -lexample
动态库的编译方式与静态库类似,但是生成的文件是
.so
格式。 -
运行时加载动态库:运行时,操作系统会根据
LD_LIBRARY_PATH
环境变量查找并加载动态库。export LD_LIBRARY_PATH=/path/to/libs:$LD_LIBRARY_PATH ./myapp
4.静态库和动态库各自缺点
由1可知,只要有n个代码要使用静态库,这n个代码都会将静态库复制到他们的内存。而动态库可以被多个程序共享,即 程序需要时,操作系统才会将它加载到内存。 这样的区别有无优劣?
===》.他们的优点我就不说了,他们的不足如下:
静态库的缺点有:
-
如果有多个程序都使用同一个静态库,那么每个程序都会将该库的代码复制到自己的内存中。这会导致内存的浪费,内存使用效率较低。
-
静态库的代码会被嵌入到每个可执行文件中,这使得最终的可执行文件比较大。
-
如果静态库的代码需要更新,必须重新编译所有使用该库的程序。
动态库的缺点有:
-
程序在运行时依赖操作系统加载动态库。如果动态库的路径不正确或库文件丢失,程序将无法启动,给系统带来依赖问题。
-
虽然现代操作系统会优化动态库的加载,但动态库仍然需要在运行时由操作系统加载,这可能会导致一定的延迟,特别是在程序启动时。
-
不同的程序可能依赖于相同库的不同版本,这会导致版本冲突。这种情况需要特别小心版本控制和兼容性。
5.使用静态库与动态库的选择
静态库适用于需要高性能和独立运行、不需要频繁更新的程序,但会导致内存和存储浪费,且不便于库的更新。
动态库适用于需要节省内存、减少存储空间、易于更新和共享的场景,但依赖外部库文件,可能引起依赖问题(即有些程序需要保持完全独立,不依赖于外部的库文件;以及动态库丢失的影响)
对于大多数应用程序,动态库通常是更常见和灵活的选择,尤其是在开发大型应用程序时,可以通过共享库提高资源利用率并减少重复代码。但是在一些独立的、小型的或对启动性能要求较高的程序中,静态库可能更为合适。
系统调用
常见的系统调用包括:
文件操作:
open():打开文件。 read():从文件读取数据。 write():向文件写入数据。
close():关闭文件。
进程管理:
fork():创建子进程。 exec():执行新的程序。 wait():等待子进程结束。 exit():终止进程。
内存管理:
mmap():映射内存区域。 munmap():解除内存映射。
设备管理:
ioctl():控制设备。 poll():监视文件描述符事件。
网络操作:
socket():创建网络套接字。 bind():绑定地址到套接字。
listen():监听连接。 accept():接受连接。
Linux操作系统的典型体系结构:
硬件层,内核,外设驱动程序,文件系统 ,系统调用接口,用户空间。
内核的组成
我们可以简单的将内核分为内核核心部分和各种内核模块,这是对内核结构的一种常见分类方式。
1.内核核心部分,内核的核心部分通常包括以下几个部分:
-
进程管理:调度和管理系统中的进程。
内存管理:管理系统的内存,包括虚拟内存和物理内存。
硬件抽象层(HAL):提供与硬件设备的交互接口。
系统调用接口:为用户空间提供与内核的交互接口。
2.各种内核模块,例如驱动程序。文件系统。 网络协议模块 ,其他功能模块等等。
所谓 内核模块就是说这样的一个程序片段能够被加载到内核中,并可以在运行时动态地与内核互动。
插述:虽然说文件系统和内核的核心部分是分开的,但是 Linux等操作系统中,文件系统是通过内核模块来实现的。这些文件系统模块(如ext4、NTFS、FAT等)是在内核中加载并执行的,实际上是内核的一个子系统。
另外关于内核态和用户态的切换:
系统调用是用户程序请求内核服务的主要方式,
而中断是硬件设备向CPU发出的信号。
驱动设备
最常见的三种驱动设备类型通常是字符设备、块设备和网络设备。
驱动程序
1) 每个Linux驱动程序通常是一个内核模块,所谓 内核模块就是说这样的一个程序片段能够被加载到内核中,并可以在运行时动态地与内核互动。
2)驱动程序用于控制特定类型的硬件设备 。 驱动程序可以在系统运行时动态加载或卸载。
3) 内核通过函数调用的方式直接调用驱动代码。
举个应用驱动程序的例子, 例如,当你插入一个USB设备时,相应的USB驱动程序模块会被加载到内核中,设备可以开始工作。一旦不再需要,可以卸载该模块,释放系统资源。
内核源码树
内核源码树其实就是一个经过配置编译之后的内核源码。.
在编写驱动代码的时候,我们需要用到系统内核的头文件,所以要具备这一份内核的源码。
文件系统和根文件系统
文件系统介绍
在linux中无疑需要文件系统。常见的文件系统有:
ext系列文件系统: 例如 ext4(第四扩展文件系统), 它是许多Linux发行版的默认文件系统。
NTFS 是Windows操作系统的主要文件系统
VFAT,它是FAT文件系统的扩展,主要用于较小的存储设备,如USB闪存驱动器、SD卡等 。
什么是挂载
什么是挂载?我们可以理解为一个文件系统挂载到某一目录下,该目录下就存放了对于文件系统的东西 。
挂载的时候,我们得选择一个空目录。
例如,我有一个USB设备,它上面有一个ext4格式的文件系统。我们要对它进行挂载,得先创建一个 /mnt/usb 目录,再执行以下命令:
mount /dev/sdb1 /mnt/usb
之后,该目录下的内容就会变成USB设备中存储的数据 。
从而,我们就可以 通过访问 /mnt/usb
来访问USB设备中的内容。
文件系统介绍
RootFS(根文件系统)是指在 Linux 系统启动时,第一个被挂载的文件系统。
在Linux中,文件系统以树形结构组织,根文件系统位于树的最顶端,挂载点是“/”。
根文件系统包含系统运行所需的核心文件和目录,如:
-
/bin:基础命令和工具,如ls、cp等。
-
/sbin:系统管理命令,仅限管理员使用,如ifconfig、reboot等。
-
/etc:系统配置文件,如网络配置、用户信息、系统服务等。
-
/lib:共享库文件,系统程序运行时需要的动态链接库。
-
/dev:设备文件,代表硬件设备,如硬盘、终端等。
-
/mnt:挂载点,用于临时挂载其他文件系统。
根文件系统的作用有:
-
启动系统:根文件系统包含启动操作系统所需的文件。在系统启动时,Linux内核会从存储设备加载根文件系统,然后根据根文件系统中的初始化脚本(如rcS或init)启动系统服务和进程。
-
提供关键文件和命令:因为根文件系统存储了系统的核心文件和命令(如/bin和/sbin目录)。
什么是内核移植
什么叫内核移植?
内核移植就是 将 Linux 内核从一个硬件平台移植到另一个硬件平台的过程。而不同硬件平台有不同的架构和设备(如 ARM、x86、MIPS 等), ,因此要使 Linux 内核能够在新的硬件平台上运行,必须针对新平台进行相应的调整和修改。 例如:
1.我们需要根据目标硬件平台的架构 来修改 修改内核代码以支持新的 CPU 和硬件组件。
2.因为新平台上的硬件设备(如串口、网卡、显示屏、存储设备等)可能与原平台有所不同 ,所以我们需要移植或编写新的设备驱动程序,使内核能够与这些设备进行交互。
3.在移植过程中,需要根据目标平台配置内核参数,编译适合该硬件平台的内核映像。
4.另外,内核启动程序(如 U-Boot)需要进行配置和修改,以便正确地加载和启动新移植的内核。
什么是内核映像文件
什么是内核映像文件,为什么要将内核代码编译成为内核映像文件?
====》
1.内核代码的映像文件(Kernel Image) 是指经过编译后、包含操作系统内核代码的可执行文件。
2.我们将内核代码编译成一个映像文件可以提高启动速度,并减少内存占用。另外就是内核映像文件的格式便于引导加载程序(如GRUB)读取和加载 。而且, 更新内核时,我们只需要替换这个内核映像文件,而不必修改系统中的每个单独文件。
内核映像文件通常包含一个核心内核部分以及指向外部内核模块的接口。从而这些外部的内核模块可以在运行时动态加载,扩展内核的功能,如支持新硬件、文件系统等。
不同的计算机有不同的计算机架构(如x86、ARM等), 可能需要不同的内核映像格式 ,通过 将内核编译成不同格式的映像文件 ,可以高效的适配这些不同的架构,从而 Linux内核 移植工作能够更加简便。
linux启动
在前面我们介绍了 启动过程中,引导加载程序会从启动设备(硬盘、USB等)加载内核映像文件到内存中,然后将控制权交给内核。即启动内核后, 内核会初始化硬件并加载系统组件。
还会加载根文件系统并执行初始化脚本,如/etc/rc.d
、/etc/inittab
等,启动系统的服务和进程。
一旦内核初始化完成,系统进入用户空间,开始正常运行。
相关文章:
linux概念详解
用户守护进程 用户空间守护进程是一些在后台运行的长期服务程序,提供系统级服务。 下面举一些例子。 网络服务: 如sshd(SSH服务)、httpd(HTTP服务)。 sshd:sshd 守护进程会在后台运行&#x…...
嵌入式开发应该具备哪些编程思维?
目录 1、资源限制思维 2、实时性思维 3、硬件抽象思维 4、中断驱动思维 5、功耗优化思维 6、可靠性和容错思维 7、并发和同步思维 8、故障排除与调试思维 9、状态机思维 嵌入式开发与一般的软件开发不同,嵌入式系统通常受到资源(内存、处理器、…...
MongoDB索引介绍
索引简述 索引是什么 索引在数据库技术体系中占据了非常重要的位置,其主要表现为一种目录式的数据结构,用来实现快速的数据查询。通常在实现上,索引是对数据库表(集合)中的某些字段进行抽取、排列之后,形成的一种非常易于遍历读取…...
编程速递-庆祝Delphi诞生30周年!
庆祝Delphi 30周年纪念是一个特别的时刻。 回到1995年,也就是30年前,在微软Windows和互联网时代的曙光初现之时,Borland Delphi的创建者们无法想象,当时使用Borland Delphi构建的应用程序至今仍在运行——为全世界数十亿人服务。…...
YOLOv11-ultralytics-8.3.67部分代码阅读笔记-tuner.py
tuner.py ultralytics\utils\tuner.py 目录 tuner.py 1.所需的库和模块 2.def run_ray_tune(model, space: dict None, grace_period: int 10, gpu_per_trial: int None, max_samples: int 10, **train_args,): 1.所需的库和模块 # Ultralytics 🚀 AGPL-…...
一文说清楚什么是Token以及项目中使用Token延伸的问题
首先可以参考我的往期文章,我这里说清楚了Cookie,Seesion,Token以及JWT是什么 其实Token你就可以理解成这是一个认证令牌就好了 详细分清Session,Cookie和Token之间的区别,以及JWT是什么东西_还分不清 cookie、sessi…...
VueRouter 实例
分析下列代码 const router new VueRouter({mode:history,routes }) 1.const router new VueRouter({ ... })用来创建一个 Vue Router 实例,用于管理 Vue.js 应用的路由。2.mode: history: 作用:启用 HTML5 History 模式,去除…...
【算法工程】解决linux下Aspose.slides提示No usable version of libssl found以及强化推理模型的短板
1. 背景 构建ubuntu镜像,然后使用Aspose.slides解析PPTX文档,发现一直提示“No usable version of libssl found”。 2. 尝试 使用deepseek R1、kimi1.5、chatgpt o3,并且都带上联网能力,居然还是没有一个能够真正解决…...
解析浏览器中JavaScript与Native交互原理:以WebGPU为例
引言 随着Web应用复杂度的提升,开发者对浏览器访问本地硬件能力的需求日益增长。然而,浏览器必须在开放性与安全性之间找到平衡——既不能放任JavaScript(JS)随意操作系统资源,又要为高性能计算、图形渲染等场景提供支…...
小火车理论
格助词...
深度学习框架探秘|Keras 应用案例解析以及 Keras vs TensorFlow vs PyTorch
引言 上一篇文章《深度学习框架探秘|Keras:深度学习的魔法钥匙》 我们初步学习了 Keras,包括它是什么、具备哪些优势(简洁易用的 API、强大的兼容性、广泛的应用领域),以及基本使用方法。本文,…...
【01 背包】
01 背包解题思路: 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 这是标准的背包问题,每一件物品其实只有两个状…...
算法10-二分查找算法
一、二分查找算法概念 二分查找(Binary Search)是一种高效的查找算法,适用于在有序数组中快速查找目标值。它的核心思想是通过不断缩小查找范围,将时间复杂度从线性查找的 O(n) 优化到 O(log n)。 二、二分查找的流程图 以下是二…...
变相提高大模型上下文长度-RAG文档压缩-3.优化map-reduce(reranker过滤+社区聚类)
我遇到的业务问题实际上是RAG需要处理很多同一对象的日常报告,不像常识类问题,它的相关Document更多而且更分散,日常报告代表数据库里有很多它的内容,而且对象可能只在段落中的几句话提及到。top-k数量受限于大模型长度࿰…...
算法11-分治算法
一、分治算法概念 分治算法(Divide and Conquer)是一种重要的算法设计思想,通过将问题分解为多个子问题,分别解决后再合并结果,从而解决原问题。分治算法的核心思想是“分而治之”,通常包含三个步骤&#…...
Golang internals
To be continued... time.Time golang的时区和神奇的time.Parse context.Context Go Context的踩坑经历 sync.Pool sync.Pool workflow in Go 1.12 new shared pools in Go 1.13 什么是cpu cache理解 Go 1.13 中 sync.Pool 的设计与实现Go: Understand the Design of Sync.Pool…...
Flask中获取请求参数的一些方式总结
在 Flask 中,可以从 request 对象中获取各种类型的参数。以下是全面整理的获取参数的方式及示例代码。 1. 获取 URL 查询参数(Query String Parameters) URL 中的查询参数通过 ?keyvalue&key2value2 的形式传递,使用 reques…...
vscode/cursor 写注释时候出现框框解决办法
一、问题描述 用vscode/cursor写注释出现如图的框框,看着十分难受,用pycharm就没有 二、解决办法 以下两种,哪个好用改那个 (1)Unicode Highlight:Ambiguous Characters Unicode Highlight:Ambiguous Characters &a…...
11-跳跃游戏
给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 贪心算法思路分析 在遍…...
TestHubo基础教程-创建项目
TestHubo是一款国产开源一站式测试工具,涵盖功能测试、接口测试、性能测试,以及 Web 和 App 测试,可以满足不同类型项目的测试需求。本文将介绍如何快速创建第一个项目,以快速入门上手。 1、创建项目 在 TestHubo 中,…...
GHOST重装后DEF盘丢失的全面解析与数据恢复实战指南
GHOST作为一款经典的系统备份与还原工具,因其高效便捷的特性被广泛应用于系统重装和数据恢复场景。然而,许多用户在使用GHOST重装系统后,发现DEF盘(即D盘、E盘、F盘等非系统盘)突然丢失,导致重要数据无法访…...
soular基础教程-使用指南
soular是TikLab DevOps工具链的统一帐号中心,今天来介绍如何使用 soular 配置你的组织、工作台,快速入门上手。  1. 账号管理 可以对账号信息进行多方面管理,包括分配不同的部门、用户组等,从而确保账号权限和职责…...
刷题记录(回顾)HOT100 二叉树-10: 199. 二叉树的右视图
题目:199. 二叉树的右视图 难度:中等 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左…...
【Java学习】类和对象
目录 一、选择取块解 二、类变量 三、似复刻变量 四、类变量的指向对象 五、变量的解引用访问 1.new 类变量(参) 2.this(参) 3.类变量/似复刻变量. 六、代码块 七、复制变量的赋值顺序 八、访问限定符 1.private 2.default 九、导类 一、选择取块解 解引用都有可以…...
安卓基础(Adapter)
想象一下,你有一堆玩具(数据),这些玩具很特别,每个玩具都是不同的,可能有汽车、飞机、积木等。现在,你想把这些玩具摆放到一个展示柜(显示的界面)里,给大家看…...
mybatis-lombok工具包介绍
Lombok是一个实用的]ava类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以自动化生成日志变量,简化java开发、提高效率。 使用前要加入Lombok依赖...
React - 高阶函数-函数柯里化
在 JavaScript 和 React 中,高阶函数是指能够接收其它函数作为参数,或者返回一个函数的函数。柯里化是一种将函数的多个参数转化为一系列嵌套函数的技术,通常用于简化函数的使用和提高其可组合性。 使用前: import React,{Compo…...
数据守护者:备份文件的重要性及自动化备份实践
在信息化社会,数据已成为企业运营和个人生活的重要组成部分。无论是企业的核心业务数据,还是个人的珍贵照片、重要文档,数据的丢失或损坏都可能带来无法估量的损失。因此,备份文件的重要性愈发凸显,它不仅是数据安全的…...
【kafka系列】消费者重平衡
目录 流程 1. 消费者组重平衡(Rebalance)的流程逻辑分析 阶段一:触发重平衡 阶段二:消费者组协调 阶段三:重平衡完成 关键设计思想 2. Mermaid 流程代码 关键点总结 重平衡的影响 1. 重平衡期间的消费行为 2…...
光谱相机在天文学领域的应用
天体成分分析 恒星成分研究:恒星的光谱包含了其大气中各种元素的吸收和发射线特征。通过光谱相机精确测量这些谱线,天文学家能确定恒星大气中氢、氦、碳、氮、氧等元素的含量。如对太阳的光谱分析发现,太阳大气中氢元素占比约 71%࿰…...
Java 基于 SpringBoot+Vue 的家政服务管理平台设计与实现
博主介绍:✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
ABC393E/F简要题解
ABC393E 给定数组 A A A,求包含元素 A i A_i Ai的大小为 k k k的子集中最大的最大公约数。 题解: 首先思考对于整个数组所有包含 k k k个元素的子集中最大的GCD是多少,可以怎么求。 我们发现,如果一个数 x x x,数组中如果存在至少 k k …...
什么是Mustache
Mustache 是一种轻量级模板引擎,用于将变量插入到模板中生成最终的文本输出。它的设计简单且易于使用,适用于多种编程语言,包括 JavaScript、Python、Ruby、Java 等。 Mustache 的模板语法使用双大括号 {{}} 包裹变量或表达式,用…...
GGUF格式的DeepSeek-R1-Distill-Qwen-1.5B模型的字段解析
在将GGUF文件转换为PyTorch格式之前,先要读取文件并了解模型中都有什么字段,会遇到了各种参数不匹配的问题。现在,我们先读取GGUF文件的元数据字段,并希望将这些字段中的内存映射(mmap)数据转换为字符串显示…...
Java和SQL测试、性能监控中常用工具
下面我会详细列举一些在Java和SQL测试、调试、性能监控中常用的工具,并结合项目中提到的各个技术点说明如何选择合适的工具和方法。 一、Java项目常用的测试、调试与性能监控工具 单元测试与集成测试: JUnit/TestNG: 用于编写单元测试和集成测…...
CAS单点登录(第7版)13.票务
如有疑问,请看视频:CAS单点登录(第7版) 票务 概述 票务 有两个核心的可配置工单组件: TicketRegistry - 提供持久票证存储。ExpirationPolicy - 提供票证过期语义的策略框架。 工单注册 部署环境和技术专业知识…...
大语言模型入门
大语言模型入门 1 大语言模型步骤1.1 pre-training 预训练1.1.1 从网上爬数据1.1.2 tokenization1.1.2.1 tokenization using byte pair encoding 1.3 预训练1.3.1 context1.3.2 training1.3.3 输出 1.2 post-training1.2.1 token 1.2 SFT监督微调1.3 人类反馈强化学习1.3.1 人…...
从ARM官方获取自己想要的gcc交叉编译工具链接(Arm GNU Toolchain),并在Ubuntu系统中进行配置
前言 本文是博文 https://blog.csdn.net/wenhao_ir/article/details/145547974 的分支博文。 在本博文中我们完成gcc交叉编译工具gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz的下载、配置、测试。 下载自己想要的gcc交叉编译工具的源码 目标文件的名字及说…...
LDR6500:重塑充电与数据传输的新篇章
在当今快速发展的数字时代,电子设备对充电速度、数据传输效率和兼容性提出了更高要求。LDR6500,作为一款专为USB Type-C Bridge设备设计的USB-C DRP(Dual Role Port,双角色端口)接口USB PD(Power Delivery&…...
Matlab 机器人 雅可比矩阵
工业机器人运动学与Matlab正逆解算法学习笔记(用心总结一文全会)(四)——雅可比矩阵_staubli机器人正逆向运动学实例验证matlab-CSDN博客 matlab求雅可比矩阵_六轴机械臂 矢量积法求解雅可比矩阵-CSDN博客 (63 封私信 / 80 条消息…...
网络安全防护:开源WAF雷池SafeLine本地部署与配置全流程
文章目录 前言1.关于SafeLine2.安装Docker3.本地部署SafeLine4.使用SafeLine5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 对于建站新手来说,无论你选择创建的是个人博客、企业官网还是各类应用平台来推广自己的内容或是产品&am…...
vue框架生命周期详细解析
Vue.js 的生命周期钩子函数是理解 Vue 组件行为的关键。每个 Vue 实例在创建、更新和销毁过程中都会经历一系列的生命周期阶段,每个阶段都有对应的钩子函数,开发者可以在这些钩子函数中执行特定的操作。 Vue 生命周期概述 Vue 的生命周期可以分为以下几…...
Ollama 安装使用指南
rootdeepseek-1:/home/zgq/.ollama# lsof -i :11434 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ollama 29005 root 3u IPv4 47359 0t0 TCP localhost:11434 (LISTEN) 从以上提供的 lsof 输出来看,Ollama 服务正在监听 localhost:11434…...
力扣 38. 外观数列 打表 迭代 阅读理解
Problem: 38. 外观数列 🧑🏫 参考题目补充说明 🧑🏫 参考题解 迭代法 class Solution {public String countAndSay(int n) {String str "1";for (int i 2; i < n; i) {StringBuilder sb new StringBuild…...
文心一言4月起全面免费,6月底开源新模型:AI竞争进入新阶段?
名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、文心一言免费化的背后:AI成本与应用的双重驱动1️⃣成本下降,推动文心一言普及2…...
基于LSTM+前向均值滤波后处理的癫痫发作检测(包含数据集)
引言 癫痫是一种常见的神经系统疾病,患者会经历反复的癫痫发作。早期检测和预警对于改善患者的生活质量至关重要。近年来,深度学习技术,尤其是长短期记忆网络(LSTM),在时间序列数据分析中表现出色…...
Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
文章目录 Redis下载地址:一、zip压缩包方式下载安装 1、下载Redis压缩包2、解压到文件夹3、启动Redis服务4、打开Redis客户端进行连接5、使用一些基础操作来测试 二、msi安装包方式下载安装 1、下载Redis安装包2、进行安装3、进行配置4、启动服务5、测试能否正常工…...
什么是交叉熵
交叉熵 定义公式 针对离散变量x的概率分布 p ( x ) p(x) p(x) , q ( x ) q(x) q(x) x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4… x n x_n xnp( x 1 x_1 x1)p( x 2 x_2 x2)p( x 3 x_3 x3)p( x 4 x_4 x4)…p( x n x_n xn)q( x 1 x_1 x1)q( x 2 x_2 …...
虚拟机安装k8s集群
环境准备 - 主节点(Master Node): IP地址: 192.168.40.100主机名: k8s-master - 工作节点(Worker Node): IP地址: 192.168.40.101主机名: k8s-node1 步骤 1: 配置虚拟机环境 1.1 设置主机名 在每台虚拟机上设置唯一的主机名…...
【mysql部署】在ubuntu22.04上安装和配置mysql教程
一.安装mysql 1. 更新软件包列表: sudo apt-get update2.安装 MySQL 服务器: sudo apt-get install mysql-server3.设置 MySQL 安全性: sudo mysql_secure_installation按照提示输入相关问题的回答,例如删除匿名用户、禁止 root 远程登录…...