【书生大模型实战营】Linux 基础知识-L0G1000
前言:书生大模型实战营是上海人工智能实验室开展的大模型系列实践活动,提供免费算力平台,学员通过闯关式任务,可获得免费算力和存储,助力项目实践。本期是第4期,时间从十一月份开始,持续到十二月底,本期我作为学习者,同时也是9班的助教,将此次实战营相关任务教程文档整理成笔记,记录自己在实践过程中的心得与收获,以及相关知识点讲解。
官方教程可参考:Tutorial/docs/L0/linux/readme.md at camp4 · InternLM/Tutorial
1.关卡任务介绍:
本关是入门岛的第一关,主题是Linux基础知识,闯关任务要求如下:
2.SSH和端口映射介绍
InternStudio 是本次实战营官方提供的云端算力平台,教程教程里面有详细的介绍,在此略去。
2.1 .SSH和远程连接
SSH(Secure Shell)是一种加密的安全协议,用于在不安全的网络上安全地进行远程登录、文件传输和命令执行。SSH 提供了端到端的加密通信,确保数据在传输过程中不会被窃听或篡改。它广泛应用于系统管理员、开发人员和其他需要远程管理服务器或开发环境的用户。
SSH 的主要特点:
-
加密通信:SSH 使用对称加密、非对称加密和哈希算法来保护数据的安全性。
-
身份验证:支持多种身份验证方式,如密码、公钥/私钥对、双因素认证等。
-
隧道功能:可以通过 SSH 隧道转发其他协议的流量,实现安全的远程访问。
-
命令执行:可以在远程服务器上执行命令,类似于本地终端操作。
远程连接允许用户通过网络从一台计算机连接到另一台计算机,从而实现远程管理和操作。远程连接通常使用加密协议(如 SSH),确保通信的安全性,防止敏感信息泄露。
2.2.如何使用 SSH 远程连接开发机
首先我们创建一个开发机,这里我已经在InternStudio平台创建好了一个名为C41的开发机,然后我们点击开发机操作界面的“SSH连接”,就会出现一个小窗口,如下:然后我们"windows+R"打开本地的命令行,输入复制的登陆命令即可,提示需要输入密码,然后复制密码并输入按Enter即可。注意:命令行输入的密码不会显示出来。
因为我之前已经配置过SSH密钥,所以不用输入密码,就可以直接连上开发机,开发机界面如下:
我们可以使用
nvidia-smi
查看GPU的信息,如下:
我们可以输入两次exit命令来退出SSH连接。
配置SSH密钥连接:
每次登录都要输入密码很麻烦,我们可以配置SSH密钥连接,这样就不需要每次登录都输入密码啦。是不是方便很多呢?
我们可以使用RSA算法来生成密钥,命令为:ssh-keygen -t rsa,一路enter即可,轻松愉快。
ssh-keygen -t rsa
生成密钥后,我们看到密钥保存在C:\Users\{your_username}/.ssh/id_rsa.pub
我们使用在powerShell中可以使用Get-Content
命令查看生成的密钥。
接着回到开发机,我们点开添加公钥。输入刚刚复制的公钥值即可,名称会自动生成。
这样我们下次再登录就不用输入密码啦,撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。
2.3.使用VSCode远程连接开发机
接下来我们演示一下,如何使用VSCode远程连接开发机。
VSCode是由微软开发的一款免费、开源的代码编辑器,适用于多种编程语言和开发任务。VSCode 以其轻量级、高度可扩展性和丰富的功能而广受欢迎。使用VSCode远程连接到开发机是一种非常方便的方式来管理和编辑远程服务器上的文件。
操作流程:
首先在扩展插件里面输入ssh,搜索找到Remote-SSH插件并安装。
安装完成后,点击侧边栏的远程连接图标,在SSH中点击“+”按钮,添加开发机SSH连接的登录命令。因为前面已经配置过密钥,所以这次不需要再次输入密码了。
我们将登录命令复制下来,然后将命令粘贴到弹出的窗口中,最后回车。然后在右下角弹出来的提示窗口中点击“连接”就可以远程到开发机中了。
安装完成后,点击侧边栏的远程连接图标,在SSH中点击“+”按钮,添加开发机SSH连接的登录命令。因为前面已经配置过密钥,所以这次不需要再次输入密码了。
我们将登录命令复制下来,然后将命令粘贴到弹出的窗口中,最后回车。然后在右下角弹出来的提示窗口中点击“连接”就可以远程到开发机中了。
连接完成后如下:
2.4.端口映射
端口映射 是一种网络技术,用于将一个设备上的端口(通常是主机)映射到另一个设备上的端口(通常是容器、虚拟机或远程服务器)。通过端口映射,你可以将外部流量转发到内部服务,或者将内部服务暴露给外部网络。
端口映射操作:接下来我们进行端口映射操作,在开发机页面,点开自定义服务,复制图中命令,然后本地PC输入指令:
ssh -p 41837 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
端口映射命令解析:
-
ssh
:启动 SSH 客户端,用于建立与远程服务器的安全连接。 -
-p 41837
:指定 SSH 连接的端口号。每个人的开发机有不同的暴露端口,这里使用的是 41837。 -
root@ssh.intern-ai.org.cn
:指定要连接的远程服务器的用户名(root
)和主机名(ssh.intern-ai.org.cn
)。 -
-C
:启用压缩,减少传输数据量,特别适用于带宽较低或延迟较高的网络环境。 -
-N
:不执行远程命令,只建立隧道。这意味着 SSH 连接不会启动任何远程 shell 或命令,仅用于端口转发。 -
-g
:允许远程主机连接到本地转发的端口。默认情况下,只有本地机器可以连接到转发的端口,使用-g
选项后,其他远程主机也可以连接。 -
-L 7860:127.0.0.1:7860
:这是关键的端口映射部分:-
7860
:本地机器上监听的端口号。任何发送到本地 7860 端口的流量都会被转发。 -
127.0.0.1:7860
:远程服务器上的目标地址和端口号。这里的127.0.0.1
表示远程服务器本身,7860
是远程服务器上运行的 Web 服务的端口。
-
-
-o StrictHostKeyChecking=no
:禁用严格的主机密钥检查。这会自动接受新的主机密钥,避免手动确认,特别适合自动化脚本或频繁连接的场景。
我们举一个WebDemo的例子,我们在开发机创建一个helloworld.py文件。
输入以下内容:
这里我们用到了socket库和gradio库,如果没有安装,需要先行安装一下。
import socket
import re
import gradio as gr# 获取主机名
def get_hostname():hostname = socket.gethostname()match = re.search(r'-(\d+)$', hostname)name = match.group(1)return name# 创建 Gradio 界面
with gr.Blocks(gr.themes.Soft()) as demo:html_code = f"""<p align="center"><a href="https://intern-ai.org.cn/home"><img src="https://intern-ai.org.cn/assets/headerLogo-4ea34f23.svg" alt="Logo" width="20%" style="border-radius: 5px;"></a></p><h1 style="text-align: center;">☁️ Welcome {get_hostname()} user, welcome to the ShuSheng LLM Practical Camp Course!</h1><h2 style="text-align: center;">😀 Let’s go on a journey through ShuSheng Island together.</h2><p align="center"><a href="https://github.com/InternLM/Tutorial/blob/camp3"><img src="https://oss.lingkongstudy.com.cn/blog/202410081252022.png" alt="Logo" width="50%" style="border-radius: 5px;"></a></p>"""gr.Markdown(html_code)demo.launch()
我们在开发机运行这个文件:
我们点击这个URL:http://127.0.0.0:7860。
在没有做端口映射的情况下是没法打开的。如下图:
然后我们做一下端口映射,再次打开就可以正确显示页面了,是不是很神奇。
使用VSCode进行端口映射
前面我们已经SSH远程连接了开发机,VScode提供了自动端口映射的功能,我们不需要手动配置,我们可以使用“Ctrl+Shift+~”快捷键唤醒终端,在终端的右侧可以找到端口选项:
3.Linux基础命令
Linux 是一个开源的、基于 Unix 的操作系统内核,广泛用于服务器、嵌入式系统和个人计算机。它以其稳定性、安全性和灵活性著称,支持多种硬件平台和丰富的软件生态系统。
3.1.文件管理
在 Linux 中,常见的文件管理操作包括:
-
创建文件:可以使用
touch
命令创建空文件。 -
创建目录:使用
mkdir
命令。 -
目录切换:使用
cd
命令。 -
显示所在目录:使用
pwd
命令。 -
查看文件内容:如使用
cat
直接显示文件全部内容,more
和less
可以分页查看。 -
复制文件:用
cp
命令。 -
创建文件链接:用
ln
命令。 -
移动文件:通过
mv
命令。 -
删除文件:使用
rm
命令。 -
删除目录:
rmdir
(只能删除空目录)或rm -r
(可删除非空目录)。 -
查找文件:可以用
find
命令。 -
查看文件或目录的详细信息:使用
ls
命令,如使用ls -l
查看目录下文件的详细信息。
在这里我们主要介绍几种课程中会用到的常用命令,更多的Linux命令,感兴趣的同学可自行研究。
列出目录内容:ls
ls
是用于列出目录内容的命令。它可以帮助你查看当前或指定目录中的文件和子目录。
-
ls
:列出当前目录的内容。 -
ls -l
:以长格式列出文件的详细信息(包括权限、所有者、大小、修改时间等)。 -
ls -a
:列出所有文件,包括隐藏文件(以.
开头的文件)。 -
ls -la
或ls -al
:结合-l
和-a
,列出所有文件的详细信息,包括隐藏文件。 -
ls -h
:以人类可读的格式显示文件大小(如 KB、MB)。 -
ls -R
:递归列出目录及其子目录的内容。
改变当前目录:cd
cd
(Change Directory)用于切换当前工作目录。
-
cd /path/to/directory
:进入指定的目录。 -
cd ..
:返回上一级目录。 -
cd ~
或cd
:返回用户的主目录。 -
cd -
:返回上一次所在的目录。
显示当前工作目录:pwd
pwd
(Print Working Directory)用于显示当前所在目录的完整路径。
创建新目录:mkdir
mkdir
用于创建新的目录。
-
mkdir directory_name
:创建一个名为directory_name
的新目录。 -
mkdir -p path/to/directory
:递归创建多个层级的目录(如果父目录不存在,会自动创建)。
删除文件或目录:rm
rm
用于删除文件或目录。使用时要小心,删除的操作是不可逆的。
-
rm file_name
:删除单个文件。 -
rm -r directory_name
:递归删除目录及其所有内容。 -
rm -rf directory_name
:强制递归删除目录及其所有内容,不提示确认(危险操作,谨慎使用)。
复制文件或目录:cp
cp
用于复制文件或目录。
-
cp source destination
:将source
文件复制到destination
。 -
cp -r source_directory destination_directory
:递归复制整个目录及其内容。 -
cp -i source destination
:在覆盖文件时提示确认(避免误操作)
创建文件链接:ln(重要)
ln
命令用于创建文件或目录的链接(也称为符号链接或硬链接)。
硬链接是指向同一 inode(索引节点)的多个文件名。每个硬链接都是文件的实际副本,但它们共享相同的文件数据。删除一个硬链接不会影响其他硬链接,只有当所有硬链接都被删除时,文件数据才会被真正删除。
符号链接(软链接)是一个特殊的文件,它包含指向另一个文件或目录的路径。符号链接与硬链接不同,它并不直接指向文件的数据,而是通过路径来引用目标文件。如果目标文件被删除,符号链接将变成“悬空链接”(即无效链接)。
移动文件或目录:mv
mv
用于移动文件或目录,也可以用于重命名文件或目录。
-
mv old_name new_name
:重命名文件或目录。 -
mv file_or_directory destination
:将文件或目录移动到目标位置。
创建空文件:touch(重要)
touch
用于创建空文件,或者更新现有文件的时间戳。
-
touch file_name
:创建一个名为file_name
的空文件。 -
touch -t YYYYMMDDHHMM.SS file_name
:设置文件的时间戳为指定的时间。
查看文件内容:cat,less,head,tail
-
cat file_name
:显示文件的全部内容。 -
less file_name
:分页查看文件内容,适合查看大文件。 -
head -n N file_name
:显示文件的前 N 行。 -
tail -n N file_name
:显示文件的最后 N 行。
查找文件:find
, locate
-
find /path/to/search -name "filename"
:在指定路径下查找名为filename
的文件。 -
find . -type f -name "*.txt"
:查找当前目录下的所有.txt
文件。 -
locate filename
:快速查找文件(需要预先建立数据库,使用updatedb
更新)。
压缩与解压缩文件:tar
, gzip
, zip
, unzip
-
tar -cvf archive.tar /path/to/directory
:创建 tar 归档。 -
tar -xvf archive.tar
:解压 tar 归档。 -
tar -czvf archive.tar.gz /path/to/directory
:创建 gzip 压缩的 tar 归档。 -
tar -xzvf archive.tar.gz
:解压 gzip 压缩的 tar 归档。 -
gzip file_name
:压缩文件并删除原文件。 -
gunzip file_name.gz
:解压文件。 -
zip -r archive.zip /path/to/directory
:创建 zip 归档。 -
unzip archive.zip
:解压 zip 归档。
查看文件类型:file
file
用于查看文件的类型,而不仅仅是根据文件扩展名。
3.2.进程管理
进程管理命令是进行系统监控和进程管理时的重要工具,常用的进程管理命令有以下几种:
-
ps:查看正在运行的进程
-
top:动态显示正在运行的进程
-
pstree:树状查看正在运行的进程
-
pgrep:用于查找进程
-
nice:更改进程的优先级
-
jobs:显示进程的相关信息
-
bg 和 fg:将进程调入后台
-
kill:杀死进程
ps
- 显示当前进程状态
ps
命令用于显示当前系统中运行的进程信息。它可以显示不同用户、不同终端或整个系统的进程。
top
- 实时显示系统资源和进程状态
top
是一个交互式的命令行工具,实时显示系统的 CPU、内存使用情况以及当前运行的进程。它可以帮助你监控系统性能并识别占用资源较多的进程。
kill
- 终止进程(重要)
kill
命令用于向进程发送信号,默认情况下发送的是 SIGTERM
信号,请求进程正常终止。如果进程不响应 SIGTERM
,可以使用 -9
选项发送 SIGKILL
信号强制终止进程。
-
kill PID
:向指定的进程 ID 发送SIGTERM
信号。 -
kill -9 PID
:向指定的进程 ID 发送SIGKILL
信号,强制终止进程。 -
killall process_name
:终止所有名为process_name
的进程。
nvidia-smi(重要)
在开发机中还有一条特殊的命令nvidia-smi
,它是 NVIDIA 系统管理接口(NVIDIA System Management Interface)的命令行工具,用于监控和管理 NVIDIA GPU 设备。它提供了一种快速查看 GPU 状态、使用情况、温度、内存使用情况、电源使用情况以及运行在 GPU 上的进程等信息的方法。
4.Conda和Shell介绍(简要介绍)
4.1.conda
Conda 是一个开源的包管理和环境管理系统,可在 Windows、macOS 和 Linux 上运行。它快速安装、运行和更新软件包及其依赖项。使用 Conda,您可以轻松在本地计算机上创建、保存、加载和切换不同的环境。
常见conda命令:
创建一个新的 Conda 环境,并指定 Python 版本(可选):
conda create --name myenv python=3.9
激活一个 Conda 环境:
conda activate myenv
退出当前激活的环境:
conda deactivate
查看系统中所有的 Conda 环境:
conda env list # 或 conda info --envs
删除指定的 Conda 环境:
conda env remove --name myenv
在当前激活的环境中安装包:
conda install package_name
从特定渠道安装包:
conda install -c conda-forge package_name
更新指定的包到最新版本:
conda update package_name
卸载指定的包:
conda remove package_name
搜索可用的包:
conda search package_name
4.2.shell
Shell 是操作系统的命令行解释器,它提供了一个用户与操作系统交互的界面。通过 Shell,用户可以输入命令来执行各种任务,如文件管理、进程控制、脚本编写等。
Shell 的主要功能:
- 命令执行:用户可以通过 Shell 输入命令来执行各种操作,如启动程序、管理文件、查看系统信息等。
- 脚本编写:Shell 支持编写脚本(shell scripts),将多个命令组合成一个可执行的文件,实现自动化任务。
- 环境变量管理:Shell 允许用户设置和管理环境变量,这些变量可以影响程序的行为和配置。
- 管道和重定向:Shell 支持将一个命令的输出作为另一个命令的输入(管道),或者将输出重定向到文件中。
- 作业控制:Shell 提供了进程管理功能,用户可以启动、暂停、恢复和终止进程。
4.3.总结
-
Conda 是一个强大的包管理和环境管理工具,特别适合处理复杂的依赖关系和多语言项目。它可以帮助你轻松创建和管理独立的虚拟环境,确保项目的依赖项不会相互冲突。
-
Shell 是操作系统的命令行解释器,提供了与操作系统交互的界面。通过 Shell,你可以执行各种命令、编写脚本、管理文件和进程。常见的 Shell 有 Bash、Zsh、Fish 等,每种 Shell 都有其独特的特性和优势。
5.后记
本章任务就到这里结束了,看完感觉完全不够的小伙伴可以自行查找更多的学习内容,研究端口映射和Linux基础命令更高阶的知识,生命不息,学习不止。
那么,最后,动动你的小手,点赞收藏关注吧,在此拜谢!
相关文章:
【书生大模型实战营】Linux 基础知识-L0G1000
前言:书生大模型实战营是上海人工智能实验室开展的大模型系列实践活动,提供免费算力平台,学员通过闯关式任务,可获得免费算力和存储,助力项目实践。本期是第4期,时间从十一月份开始,持续到十二月…...
小程序IOS安全区域优化:safe-area-inset-bottom
ios下边有一个小黑线,位于底部的元素会被黑线阻挡 safe-area-inset-bottom 一 用法及作用: IOS全面屏底部有小黑线,位于底部的元素会被黑线阻挡,可以使用以下样式: .model{padding-bottom: constant(safe-area-ins…...
STM32-C语言基础知识
C语言基础知识 stdint.h简介 给寄存器某个位赋值 给位6赋值为1流程:先清0,再赋值 带参数的宏定义 建议使用do {…}while(0)来构造宏定义 条件编译 条件编译后面必须跟宏语句,如#if _LED_H 指针使用常见的2大问题 1、未初始化 2、越界使…...
深度和法线纹理
屏幕后期处理效果的基本原理就是当游戏画面渲染完毕后通过获取到该画面的信息进行额外的效果处理 之前的边缘检测、高斯模糊、Bloom、运动模糊等效果都是基于获取当前屏幕图像中的像素信息进行后期处理的 如果仅仅根据像素信息来进行一些效果处理,存在以下问题&…...
21天掌握javaweb-->第11天:前端性能优化与响应式设计
前端性能优化与响应式设计 1. 前端性能优化技巧 1.1 代码分割(Code Splitting) 代码分割是一种将代码拆分成多个较小的包,并在需要时按需加载的技术,这有助于减少初始加载时间,并提高应用程序的响应速度。 实现方法…...
java+ssm+mysql校园物品租赁网
项目介绍: 使用javassmmysql开发的校园物品租赁网,系统包含管理员、用户角色,功能如下: 管理员:用户管理;物品管理(物品种类、物品信息、评论信息);订单管理࿱…...
C#常见错误—空对象错误
System.NullReferenceException:未将对象引用设置到对象的实例 在C#编程中,System.NullReferenceException是一个常见的运行时异常,其错误信息“未将对象引用设置到对象的实例”意味着代码试图访问一个未被初始化或已被设置为null的对象的成…...
GPT系列模型简要概述
GPT-1:(0.117B参数量,0.8B words预训练数据) 动机: 在RNN和Transformer之间,选择了后者。 和《All your need is Attention》翻译模型的Encoder-Decoder架构相比,只保留Decoder,因此去掉了Cross…...
关于睡懒觉
我们经常听到一个词:睡懒觉。 我认为,睡懒觉这个词,是错误的。 人,是需要睡眠的,睡不够,就不会醒。睡够了,自然会醒,也不想继续睡。不信你试试,睡够了,你…...
Spring Data JPA 入门
文章目录 前言、Spring Data JPA 是什么?1、背景2、优势3、Spring Data JPA 和 MyBatis-Plus 对比4、Spring Data JPA 与 JPA 的关系是什么? 一、准备1、依赖引入Spring Boot 框架依赖引入:非 Spring Boot 框架依赖引入: 2、定义实…...
操作系统用户界面
实验目的: LINUX操作系统提供了图形用户界面和命令行界面,本实验主要熟悉命令行界面,为后续的实验编程做准备。 二、实验内容: 写出每个命令的功能及格式 1、有关目录和文件操作的命令 1.1cat 功能: 1.一次显示整…...
区块链dapp 开发详解(VUE3.0)
1、安装metamask 插件。 2、使用封装的工具包: wagmi . 3、 wagmi 操作手册地址:connect | Wagmi 4、注意事项: 因为最初是react 版本,所以在VUE版的官方文档有很多地方在 import 用的是 wagmi,需要改为 wagmi/vue 。 连接成功后打印的内容如下&…...
BTC密码学原理
文章目录 比特币的密码学基础哈希函数(Hash Function)非对称加密(Asymmetric Cryptography)数字签名(Digital Signature) 工作量证明(Proof of Work)区块链技术的密码学保障区块链的…...
【NLP 9、实践 ① 五维随机向量交叉熵多分类】
目录 五维向量交叉熵多分类 规律: 实现: 1.设计模型 2.生成数据集 3.模型测试 4.模型训练 5.对训练的模型进行验证 调用模型 你的平静,是你最强的力量 —— 24.12.6 五维向量交叉熵多分类 规律: x是一个五维(索引)向量ÿ…...
Linux -文件系统的备份
本文为Ubuntu Linux操作系统- 第九弹~~ 今天接着上文的内容,讲Linux磁盘存储管理最后一部分内容~ 上期回顾:Linux 图形界面工具管理磁盘分区和文件系统 😎黑犀铠甲合体,流星枪之狂瀑扎帖,碎魔伏暴,灭于狂瀑…...
【Linux基础五】Linux开发工具—上(apt和vim)
【Linux基础五】Linux开发工具—上(apt和vim) 1.apt包管理工具2.Linux中的编辑器vim2.1命令模式2.2插入模式2.3底行模式2.4替换模式2.5视图模式2.6多线程操作2.7配置vim 1.apt包管理工具 在 Linux 系统中,软件包管理工具是用户安装、更新和管…...
力扣--LCR 134.Pow(x,n)
题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示例 2: 输入:x 2.10000, n 3 输出:9.2610…...
java抽奖系统(一)2.0
1. 项⽬介绍 1.1 背景 随着数字营销的兴起,企业越来越重视通过在线活动来吸引和留住客⼾。抽奖活动作为⼀种有效的营 销⼿段,能够显著提升⽤⼾参与度和品牌曝光率。于是我们就开发了以抽奖活动作为背景的Spring Boot项⽬,通过这个项⽬提供⼀…...
读取电视剧MP4视频的每一帧,检测出现的每一个人脸并保存
检测效果还不错,就是追踪有点难做 import cv2 import mediapipe as mp import os from collections import defaultdict# pip install msvc-runtime# 初始化OpenCV的MultiTracker # multi_tracker = cv2.MultiTracker_create() # multi_tracker = cv2.legacy.MultiTracker_cre…...
【MySQL 进阶之路】事务并发情况分析
MySQL事务并发控制分析笔记 在数据库系统中,事务并发控制至关重要,能够确保多个事务并发执行时的数据一致性、隔离性和正确性。MySQL通过不同的锁机制控制并发操作,以确保事务的隔离性。以下是对事务A和事务B并发行为的详细分析,…...
基于SSM的线上考试系统的设计与实现(计算机毕业设计)+万字说明文档
系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境: Tomcat 7.x,8.x,9.x版本均可 操作系统…...
redis击穿,穿透,雪崩以及解决方案
目录 击穿 解决方案一 解决方案二 穿透 解决方案 雪崩 解决方案 击穿 指的是单个key在缓存中查不到,去数据库查询,这样如果并发不大或者数据库数据量不大的话是没有什么问题的。 如果数据库数据量大并且是高并发的情况下那么就可能会造成数据库压…...
Flask返回中文Unicode编码(乱码)解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
EasyExcel改名为FastExce做了那些改变呢
回到:github原作者地址:https://github.com/CodePhiliaX/fastexcel 中文 |English | 什么是 FastExcel FastExcel 是由原 EasyExcel 作者创建的新项目。2023 年我已从阿里离职,近期阿里宣布停止更新 EasyExcel,作者他本人决定继…...
数据结构之初始二叉树(1)
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 目录 树型结构 树的概念 与树的有关概念 树的表示形式 树的应用 二叉树 概念 两种特殊的…...
利用Python爬虫按图搜索淘宝商品(拍立淘)
在当今数字化时代,能够通过图片搜索商品的功能(如淘宝的“拍立淘”)为用户提供了极大的便利。本文将详细介绍如何利用Python爬虫技术实现按图搜索淘宝商品,并提供相应的代码示例。 1. 拍立淘功能简介 “拍立淘”是淘宝提供的一项…...
微信小程序中使用miniprogram-sm-crypto实现SM4加密攻略
在微信小程序开发过程中,数据安全至关重要。本文将为大家介绍如何在微信小程序中使用miniprogram-sm-crypto插件进行SM4加密,确保数据传输的安全性。 一、SM4加密简介 SM4是一种对称加密算法,由国家密码管理局发布,适用于商密领…...
基于注解的方式实现分布式锁的AOP功能
使用场景: 在分布式项目中,涉及到事务,且会操作多张表,那么涉及到并发场景,应当避免同一时间有多个用户并发操作同一份数据,例如:商品秒杀。 解决方案: 使用Around注解实现在方法…...
22. 五子棋小游戏
文章目录 概要整体架构流程技术名词解释技术细节小结 1. 概要 🔊 JackQiao 对 米粒 说:“今天咱们玩个五子棋小游戏,电脑与你轮流在一个 nn 的网格上放置棋子(X 或 O),网格由你输入的正整数n决定࿰…...
import是如何“占领满屏“
import是如何“占领满屏“的? 《拒绝使用模块重导(Re-export)》 模块重导是一种通用的技术。在腾讯、字节、阿里等各大厂的组件库中都有大量使用。 如:字节的arco-design组件库中的组件:github.com/arco-design… …...
传奇996_53——后端ui窗口局部刷新
描述:一个大窗口,点击某个键,弹出小窗口。 小窗口中将msg存进变量中 大窗口中判断一个参数是否为null,如果不为null,说明界面不是第一次打开,而是被刷新了。就加上小窗口的那个变量 有时小窗口中还有其他…...
云原生API网关:2024年的性能与智能化突破
API网关已经成为现代应用世界的流量控制器,并正在成为现代应用架构的重要组成部分。然而,自成立以来,他们的角色发生了巨大变化。它们正在减轻重量,变得更加可编程,并与云原生环境携手合作。 让我们来探索这一激动人心…...
专题二十五_动态规划_两个数组的 dp (含字符串数组)_算法专题详细总结
目录 动态规划_两个数组的 dp (含字符串数组) 1. 最⻓公共⼦序列(medium) 解析: 1. 状态表⽰: 2. 状态转移⽅程: 3. 初始化:编辑 4. 填表顺序:编辑 5. 返回值…...
day09 接口测试(5)——使用postman 完成项目实战
【没有所谓的运气🍬,只有绝对的努力✊】 目录 1、项目简介 2、技术栈 2.1 技术栈 2.2 技术架构图 3、初始化项目环境!!! 3.1 新建用例集 3.2 创建环境变量 3.3 登录模块 3.3.1 从测试用例文档提取数据 3.3.2…...
【Solidity】变量详解:类型、作用域与最佳实践
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 Solidity变量详解:类型、作用域与最佳实践引言1. 变量的类型与声明1…...
知识图谱9:知识图谱的展示
1、知识图谱的展示有很多工具 Neo4j Browser - - - - 浏览器版本 Neo4j Desktop - - - - 桌面版本 graphX - - - - 可以集成到Neo4j Desktop Neo4j 提供的 Neo4j Bloom 是用户友好的可视化工具,适合非技术用户直观地浏览图数据。Cypher 是其核心查询语言&#x…...
scss文件内引入其他scss文件报错
1、今天在编译一些老项目的时候,老是提示下面信息 2、而且有很多Sass import rules are deprecated and will be removed in Dart Sass 3.0.0.警告 3、用npm view sass versions看,其中sass的最新版本是1.82.0 4、经过测试"sass": "1.75…...
使用 ASP.NET Core HttpLoggingMiddleware 记录 http 请求/响应
我们发布了一个应用程序,该应用程序运行在一个相当隐蔽的 WAF 后面。他们向我们保证,他们的产品不会以任何方式干扰我们的应用程序。这是错误的。他们删除了我们几乎所有的“自定义”标头。为了“证明”这一点,我构建了一个中间件,…...
沃丰科技智能客服在跨境电商独立站中的核心角色
随着全球化进程的加速和互联网技术的不断发展,跨境电商行业蓬勃兴起,为消费者提供了更广阔、更便捷的购物选择。在这样一个竞争激烈的市场环境中,优质的客户服务成为了企业脱颖而出的关键。沃丰科技智能客服凭借其先进的技术和人性化的设计理…...
基于Springboot滑雪物品在线租赁网站设计与实现(作品+论文+开题报告)
博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程ÿ…...
android 富文本及展示更多组件
模拟微博 #热贴 和 用户 的这种 富文本形式组件,不说了, 直接上代码 package com.tongtong.feat_watch.viewimport android.content.Context import android.graphics.Color import android.util.AttributeSet import android.view.LayoutInflater impo…...
Java-JMX 组件架构即详解
JMX架构由三个主要组件构成: MBeans(Managed Beans):代表可管理的资源,是JMX的核心。MBean可以是Java类或接口,提供了管理操作的接口,如获取系统信息、设置参数等。MBeanServer&#x…...
开源轻量级文件分享服务Go File本地Docker部署与远程访问
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
Rust快速入门(五)
生命周期 生命周期的主要作用是避免悬垂引用。 这里我们详细说说借用检查: {let r; // ----------- a// |{ // |let x 5; // --- b |r &x; // | |} /…...
租赁系统|租赁小程序|租赁小程序成品
租赁系统是现代企业管理中不可缺少的数字化工具,它通过高效的信息整合与流程管理,为企业带来极大的便利和效益。一个完善的租赁系统开发应具备以下必备功能: 一、用户管理 用户管理模块负责系统的访问控制,包括用户注册、登录验证…...
后端-pageHelp分页查询
在pom.xml文件中先导入分页的坐标 PageResult里面有两个后端返回给前端的参数,我们最后把PageResult再封装到Result中, PageResult和Result都是工具类 EmployeeDTO中是前端页面中的模糊查询字段和分页的两个值 注意! 括号中的参数Employee…...
MySQL | 尚硅谷 | 第15章_存储过程与函数
MySQL笔记:第15章_存储过程与函数 文章目录 MySQL笔记:第15章_存储过程与函数第15章_存储过程与函数 1. 存储过程概述1.1 理解1.2 分类 2. 创建存储过程2.1 语法分析2.2 代码举例 3. 调用存储过程3.1 调用格式3.2 代码举例3.3 如何调试存储过程演示代码 …...
汽车零部件设计之——麦弗逊悬架KC特性分析仿真APP介绍
汽车零部件是汽车工业的基石,是构成车辆的基础元素。一辆汽车通常由上万件零部件组成,包括发动机系统、传动系统、制动系统、电子控制系统等,它们共同确保了汽车的安全、可靠性及高效运行。在汽车产业快速发展的今天,汽车零部件需…...
代码随想录-算法训练营day41(动态规划04:01背包,01背包滚动数组,分割等和子集)
第九章 动态规划part04● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集 正式开始背包问题,背包问题还是挺难的,虽然大家可能看了很多背包问题模板代码…...
Vue Loader的作用
Vue Loader是一个专门用于处理Vue单文件组件(SFCs,即Single File Components)的webpack加载器(loader)。以下是Vue Loader的具体作用: 1、解析和转换Vue单文件组件 Vue Loader能够解析和转换.vue文件&…...