12. Function Call实践
本文主要讲解大模型的function call能力,包括使用国内外在线模型和本地模型,以及如何微调以增强大模型的function call能力。
回顾下大模型学习思路:
1. 环境准备
1.1 平台上【模型调试】中创建
2. 调用国内外大模型测试
2.1 调用GPT-4
代码位于/code/gpt-4_weather_query.ipynb
Star平台暂时没有代理,调用GPT-4需要自行解决下网络问题。
2.2 调用GLM4-plus
代码位于/code/glm-4_weather_query.ipynb
参考:智谱AI开放平台
2.3 注意⚠️
【在平台上进行练习时】,打开新的终端准备运行代码调用线上模型之前设置代理以连接到互联网,设置命令如下
# 终端输入命令
export http_proxy=http://10.10.9.50:3000
export https_proxy=http://10.10.9.50:3000
export no_proxy=localhost,127.0.0.1
此外还需要设置对应的api-key,使用自己的api-key替换
3. 本地开源模型部署部署使用
如果是在自己的环境,需要安装以下python包;
平台上相关环境已经准备好
3.1 安装fastchat
# 这里是在设置【平台专属网络代理】,只有在平台上使用时才有效,
# 其他环境使用会出错
export http_proxy=http://10.10.9.50:3000
export https_proxy=http://10.10.9.50:3000
export no_proxy=localhost,127.0.0.1# 这一步是在安装fschat,环境需要连接互联网
pip3 install fschat[model_worker] -i https://mirrors.ustc.edu.cn/pypi/web/simple
3.2 启动模型服务
打开三个终端,分别依次在各终端执行如下命令:
# 按顺序依次执行
# 新建终端,输入如下命令
python -m fastchat.serve.controller --host 0.0.0.0
# 新建终端,输入如下命令
python -m fastchat.serve.model_worker --model-path /dataset/Llama-3-8B-Instruct/ --host 0.0.0.0 --num-gpus 4 --max-gpu-memory 15GiB
# 新建终端,输入如下命令
python -m fastchat.serve.openai_api_server --host 0.0.0.0
此时模型已经可以通过openai api格式调用。
3.3 安装openai
# 这一步是在安装openai python SDK 以及 pyautogen
# 环境需要连接互联网才可用如下命令进行安装
pip install openai -i https://mirrors.ustc.edu.cn/pypi/web/simple
pip install pyautogen -i https://mirrors.ustc.edu.cn/pypi/web/simple
3.4 调用测试
# 这一步是在执行python程序
python /code/openai_request.py
3.5 函数调用测试
# 平台配置联网
# 非平台环境【不要】执行如下命令
export http_proxy=http://10.10.9.50:3000
export https_proxy=http://10.10.9.50:3000
export no_proxy=localhost,127.0.0.1# 计算器函数调用
python /code/autogen_calculations_function_call.py
# 汇率换算函数调用
python /code/autogen_exchanges.py
# 论文查询
python /code/autogen_search.py
# 股票查询
python /code/autogen_stocks.py
使用GLM-4时需要将GLM-4的注释部分去除,如下所示,脚本包含多个模型,除了GLM4以外都是本地部署的模型:
config_list=[{"model": "Llama-3-8B-Instruct","base_url": "http://localhost:8000/v1","api_type": "openai","api_key": "NULL", # just a placeholder},# {# "model": "glm-4",# "base_url": "https://open.bigmodel.cn/api/paas/v4/",# "api_type": "openai",# "api_key": "b607e54d369484e954db2f13c1daa469.9YOqpOZ2147MqxOq", # },{"model": "merged","base_url": "http://localhost:8000/v1","api_type": "openai","api_key": "NULL", # just a placeholder},{"model": "chatglm3-6b","base_url": "http://localhost:8000/v1","api_type": "openai","api_key": "NULL", # just a placeholder},
]
4. 微调Llama3-8B-Instruct模型
使用 XTuner 在 Agent-Flan 数据集上微调 Llama3-8B-Instruct,以让 Llama3-8B-Instruct 模型获得智能体能力,调用function tools能力提升。
下面从4.1到4.5,我们启动1台机器进行调试,这个过程我们称为「debug模式」,debug模式就是使用少量的资源进行代码调试,便于之后大规模训练。在4.6节【训练管理】模式里,我们将进行规模化分布式训练,就是基于debug之后,避免机时的浪费、提高效率。
4.1 创建notebook
使用的算法为:function-call-04
使用的镜像为:function-call:v0.0.1
使用的数据为:huggingface-cache
4.2 设置环境变量
⚠️【在平台上】每次打开新的终端都需要执行如下操作
# 为了连接网络
export http_proxy=http://10.10.9.50:3000
export https_proxy=http://10.10.9.50:3000
export no_proxy=localhost,127.0.0.1
# 配置本地下载huggingface文件的cache目录
export HF_HOME=/code/huggingface-cache/
# 配置huggingface连接的镜像
export HF_ENDPOINT=https://hf-mirror.com
4.3 下载模型
由于huggingface上直接下载Meta的Llama-3-8B-Instruct需要填写申请,我们换个源下载模型
apt-get install git-lfs # git下载大文件需要安装
git clone https://code.openxlab.org.cn/MrCat/Llama-3-8B-Instruct.git Meta-Llama-3-8B-Instruct
Star平台上已经下载好了模型,在/dataset/Llama-3-8B-Instruct/路径下。需要在创建任务或者notebook时挂载huggingface-cache数据集,如下图所示:
4.4 准备数据
下载数据命令如下:
huggingface-cli download internlm/Agent-FLAN --repo-type dataset --revision main --local-dir-use-symlinks False --local-dir /code/internlm_Agent-FLAN_data
数据来源:internlm/Agent-FLAN · Datasets at Hugging Face数据集介绍:Agent-FLAN:一种大模型Agent高效微调的数据与方法设计 - 文章 - 开发者社区 - 火山引擎
由于 HuggingFace 上的 Agent-Flan 数据集暂时无法被 XTuner 直接加载,因此我们首先要下载到本地,然后转换成 XTuner 直接可用的格式。数据转换命令如下:
python /code/convert_agentflan.py /dataset/datasets/internlm_Agent-FLAN/data/ /code/data_converted
平台上转换后的数据位于:/code/data_converted
4.5 微调训练
这里使用4块DCU进行分布式训练,上下文长度调整为1664,训练命令如下(单机训练时长约14~15天):
NPROC_PER_NODE=4 xtuner train /code/llama3_8b_instruct_qlora_agentflan_3e.py --work-dir /userhome/llama3-8b-ft/agent-flan --deepspeed deepspeed_zero3_offload
训练过程如下所示:
4.6 使用平台【训练管理】
如下图所示,创建一个训练任务,该任务使用6个节点(6台带IB资源的机器),预计需要训练1天19小时。
运行中的日志可以在平台上查看:
平台上已经训练好模型,放在huggingface-cache数据下,挂载该数据后目录位于:/dataset/llama3-8b-functioncall-ft/agent-flan
训练过程中可以看到,模型在相同的提示词下,function call的能力有所提升。
4.7 模型转换
这里训练到4296步取中间结果查看:
# 模型转成hf格式
xtuner convert pth_to_hf /code/llama3_8b_instruct_qlora_agentflan_3e.py /dataset/llama3-8b-functioncall-ft/agent-flan/iter_4296.pth /code/llama3-8b-ft/agent-flan/iter_4296_hf# lora hf格式模型合并
xtuner convert merge /dataset/Llama-3-8B-Instruct/ /code/llama3-8b-ft/agent-flan/iter_4296_hf/ /code/llama3-8b-ft/agent-flan/merged --device cpu
调用模型测试模型微调前后的区别:
# 文件位于平台/code/final_test.py
from transformers import AutoTokenizer, AutoModelForCausalLM
import torchbase_model_path = "/dataset/Llama-3-8B-Instruct/"tokenizer = AutoTokenizer.from_pretrained(base_model_path)eval_prompt = """
<|start_header_id|>system<|end_header_id|>You are a assistant who can utilize external tools.
[{'name': 'ArxivSearch.get_arxiv_article_information','description': 'Run Arxiv search and get the article meta information.','parameters': [{'name': 'query', 'type': 'STRING', 'description':'the content of search query'}],'required': ['query'],'return_data':[{'name': 'content', 'description': 'a list of 3 arxiv search papers', 'type': 'STRING'}],'parameter_description': 'If you call this tool, you must pass arguments in the JSON format{key: value}, where the key is the parameter name.'}]
To use a tool, please use the following format:
```
Thought:Think what you need to solve, do you need to use tools?
Action:the tool name, should be one of [['ArxivSearch']]
Action Input:the input to the action
```
The response after utilizing tools should using the following format:
```
Response:the results after call the tool.
```
If you already know the answer, or you do not need to use tools,
please using the following format to reply:
```
Thought:the thought process to get the final answer
Final Answer:final answer
```
Begin!<|eot_id|><|start_header_id|>user<|end_header_id|>Please help me search the InternLM2 Technical Report.<|eot_id|><|start_header_id|>assistant<|end_header_id|>
"""model_input = tokenizer(eval_prompt, return_tensors="pt").to("cuda")base_model = AutoModelForCausalLM.from_pretrained(base_model_path, torch_dtype=torch.float16, device_map="cuda", use_cache=False) # don't quantize herebase_model.eval()
with torch.no_grad():print(tokenizer.decode(base_model.generate(**model_input, max_new_tokens=256)[0], skip_special_tokens=True))print("=========下面是微调后的模型=========")model_input = tokenizer(eval_prompt, return_tensors="pt").to("cuda:1")
merged_model_path = "/code/llama3-8b-ft/agent-flan/merged"merged_model = AutoModelForCausalLM.from_pretrained(merged_model_path, torch_dtype=torch.float16, device_map="cuda:1", use_cache=False) # don't quantize heremerged_model.eval()
with torch.no_grad():print(tokenizer.decode(merged_model.generate(**model_input, max_new_tokens=256)[0], skip_special_tokens=True))
微调前,没有准确给出function需要的json格式参数:
微调后,可以正确给出json格式function参数:
作业
1. 【基础】申请国内其他大模型apikey,对照官方API文档使用functioncall,并测试课程中的例子
2. 【进阶】使用function call数据测试微调大模型,提升大模型functioncall能力比如使用这个数据集https://huggingface.co/datasets/Deepexi/function-calling-small
🔔需要考虑xtuner如何适配这个数据集
相关文章:
12. Function Call实践
本文主要讲解大模型的function call能力,包括使用国内外在线模型和本地模型,以及如何微调以增强大模型的function call能力。 回顾下大模型学习思路: 1. 环境准备 1.1 平台上【模型调试】中创建 2. 调用国内外大模型测试 2.1 调用GPT-4 代…...
随机生成多孔介质matlab程序
matlab生成随机分布纤维代码,用于后续模拟处理 资源文件列表 随机生成多孔介质matlab程序.pdf , 5821...
华为云kubernetes基于keda自动伸缩deployment副本(监听redis队列长度)
1 概述 KEDA(Kubernetes-based Event-Driven Autoscaler,网址是https://keda.sh)是在 Kubernetes 中事件驱动的弹性伸缩器,功能非常强大。不仅支持根据基础的CPU和内存指标进行伸缩,还支持根据各种消息队列中的长度、…...
是时候说再见了
说再见 2018 to 2025 2018:学习 2018年开始读研。师兄师姐们说可以写写CSDN博客,对找工作也有帮助。于是在12月4日,发布了自己的第一篇文章[翻译] 神经网络与深度学习 首页 - Index。当时还在学习各种基础知识,看到了这个英文文…...
数据结构与算法-栈与队列的应用递归表达式求值
参考学习:B站-逊哥带你学编程 栈与队列的应用 题1: 答案:B 题2: 答案:C 题3: 答案:D 题4: 答案:C 题5: 答案:B 题6: 答案&…...
vue3.x 的shallowReactive 与 shallowRef 详细解读
在 Vue 3.x 中,shallowReactive 和 shallowRef 是两个用于创建浅层响应式数据的 API。它们与 reactive 和 ref 类似,但在处理嵌套对象时的行为有所不同。以下是它们的详细解读和示例。 1. shallowReactive 作用 shallowReactive 创建一个浅层响应式对…...
前缀和(Prefix Sum)算法笔记C++
前缀和(Prefix Sum)算法介绍 前缀和是一种预处理技术, 用于快速计算数组中任意子区间的元素之和. 它通过一次遍历创建一个辅助数组来存储从数组起始位置到当前索引位置所有元素的累加和, 从而使得后续查询操作的时间复杂度降低至 O ( 1 ) O(1) O(1). 定义 对于给定的数组 n…...
负载测试工具有哪些?
Apache JMeter Apache JMeter 是一款开源的性能测试工具,主要用于对 Web 应用程序进行功能、负载和压力测试。JMeter 支持多种协议和技术,包括 HTTP, HTTPS, FTP 和 WebSocket 等。通过模拟大量并发用户访问来评估应用程序的表现1。 jmeter -n -t testp…...
ROS进阶:使用URDF和Xacro构建差速轮式机器人模型
前言 本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。 差速轮式机器人:两轮差速底盘由两个动力轮位于底盘左…...
windows编译使用gtest
下载: Release v1.12.1 google/googletest GitHub 编译: 编译源码中的CMakeLists.txt: 编译后生成的目录是BUILD: *(编译之前需要安装cmake: ) 关注下面这两个目录: 在vs中打开: 配置属性: 点击编译&a…...
C++编程,#include <iostream>详解,以及using namespace std;作用
在C编程中,#include <iostream> 是用来包含输入/输出流头文件的预处理指令。它允许程序使用标准的输入/输出对象如 std::cout 和 std::cin,以便与标准输入和输出流进行交互。这一头文件是编写输入输出操作时必不可少的部分。 讲到这里,…...
【愚公系列】《Python网络爬虫从入门到精通》008-正则表达式基础
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...
Golang并发编程最佳实践:协程与通道
Golang并发编程最佳实践:协程与通道 本文旨在介绍Golang并发编程的最佳实践,重点讨论协程和通道的使用方法,以及相关的实际案例和代码示例。 一、Golang并发编程简介 又称Go语言)是一种由Google开发的编程语言,旨在提供…...
neural_gcm模型进行气象预测教程
简介 NeuralGCM (General circulation models)是Google开发的一种新型的天气和气候模型,它结合了传统的物理建模与机器学习技术,相关论文于2024年发表在nature上。它既可以做短期的天气预报,也可以做长期的气候预测。…...
怎么让DeepSeek自动化写作文案
在数字化时代,内容创作已成为企业争夺用户注意力的核心竞争力。面对海量信息需求,企业往往面临内容创作效率低下、质量参差不齐、周期长等问题。如何用技术手段解决这些痛点,成为企业迫切需要破解的难题。今天,我们将以DeepSeek为…...
淘宝/天猫获得淘宝商品评论 API 返回值说明||API评论接口
item_review-获得淘宝商品评论 taobao.item_review 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,ite…...
全面理解-c++11的引用折叠
在 C 中,引用折叠(Reference Collapsing) 是一组用于处理多重引用(如 T& & 或 T&& &&)的规则,主要出现在模板参数推导、auto 类型推导和 decltype 的上下文中。它是实现**通用引用…...
考研高数复习规范
前言 这里记录我的高数复习规范与规划,希望能给需要考研的同学一点启发 规范原因 高数的内容很多,关键的是:会做题、拿高分首先最重要的就是抓住概念。比如有界无界的概念,间断点的概念、极限的概念其次是做题过程中得到的方法…...
2025 docker可视化管理面板DPanel的安装
1.什么是 DPanel ? DPanel 是一款 Docker 可视化管理面板,旨在简化 Docker 容器、镜像和文件的管理。它提供了一系列功能,使用户能够更轻松地管理和部署 Docker 环境。 软件特点: 可视化管理:提供直观的用户界面&#…...
「vue3-element-admin」Vue3 + TypeScript 项目整合 Animate.css 动画效果实战指南
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …...
Python函数进阶250215
函数返回值进阶 函数返回的内容也是地址 def func01():data [1, 2, 3]# 执行到此步后,[1, 2, 3]这块内存会有一个引用计数器,且值为2,因为内部的data与外部的v1都指向这块空间return data v1 func01()# v1 point the address of data, if…...
VMware Workstation Pro 下载(无需注册账号)
VMware Workstation Pro 目前对个人用户完全免费。有两种下载方式,分别为 1、Broadcom 官网下载 需要注册账号,我懒得注册 2、VMware 更新服务器下载 如果不想注册账号,可以通过 VMware 更新服务器直接下载。访问以下链接: ht…...
USB2.03.0摄像头区分UVC相机在linux中的常用命令
这里是引用 一. USB2.0 & 3.0接口支持区分 1.1. 颜色判断 USB接口的颜色并不是判断版本的可靠标准,但根据行业常见规范分析如下: USB接口颜色与版本对照表: 接口颜色常见版本内部触点数量传输速度黑色USB2.04触点480 Mbps (60 MB/s)白…...
Linux入侵检查流程
1. 初步信息收集 1.1 系统信息 • 目的:了解当前系统的基本情况,包括操作系统版本、内核版本等。 • 命令: # 查看操作系统发行版信息 cat /etc/os-release # 查看内核版本 uname -r 1.2 网络信息 • 目的:查看网络连接状态、…...
(尚硅谷 Java 学习 B 站大学版)Day17 多态练习
Instanceof 关键字 一:引言 不能调用子类特有的方法、属性; 如何才能调用子类特有的属性和方法 向下转型:使用强制类型转换符 Man m1(Man) p2 注:其中p2 为 Person 类型 使用强转时,可能出现 ClassCastException …...
vscode配置django环境并创建django项目(全图文操作)
文章目录 创建项目工作路径下载python插件:创建虚拟环境 1. 命令方式创建2. 图文方式创建 在虚拟环境中安装Django创建Django项目安装Django插件选择虚拟环境 创建项目工作路径 输入 code . 下载python插件: 创建虚拟环境 1. 命令方式创建 切换在工作…...
NLP 八股 DAY1:BERT
BERT全称:Pre-training of deep bidirectional transformers for language understanding,即深度双向Transformer。 模型训练时的两个任务是预测句⼦中被掩盖的词以及判断输⼊的两个句⼦是不是上下句。在预训练 好的BERT模型后⾯根据特定任务加上相应的⽹…...
53倍性能提升!TiDB 全局索引如何优化分区表查询?
作者: Defined2014 原文来源: https://tidb.net/blog/7077577f 什么是 TiDB 全局索引 在 TiDB 中,全局索引是一种定义在分区表上的索引类型,它允许索引分区与表分区之间建立一对多的映射关系,即一个索引分区可以对…...
基于单片机的常规肺活量SVC简单计算
常规肺活量 SVC(Slow Vital Capacity)是指尽力吸气后缓慢而又完全呼出的最大气量。 成年男性的肺活量通常在 3500-4000ml 之间,成年女性的肺活量通常在 2500-3000ml 之间。 单片机一般通过外接流量传感器,使用ADC高速采集的方式…...
html 点击弹出视频弹窗
一、效果: 点击视频按钮后,弹出弹窗 播放视频 二、代码 <div class="index_change_video" data-video-src="</...
机器学习:二分类和多分类
1. 二分类(Binary Classification) 定义 二分类是指将输入样本分成两个互斥的类别。例如: 邮件 spam 或不是 spam。病人是有病或健康。物品是正品或假货。实现方法 二分类任务可以通过多种算法实现,包括: 逻辑回归(Logistic Regression):通过sigmoid函数将输出值映射…...
Win11配置wsl、ubuntu、docker
系统要求 安装WSL。 开通虚拟化: 准备工作 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartwsl --set-default-versi…...
机试题——稀疏存储
题目描述 在虚拟化技术、芯片仿真器等领域,存在一种场景,即实际读写的数据量比较小,但要求可访问的地址空间却很大(要求 4GB、甚至 128GB 地址空间)。 实现一个地址范围为 32G的,可在该地址范围内任意位置…...
双指针专题1:有效三角形的个数
描述 给定一个正整数n,输入一行包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 输入描述 第一行输入一个正整数n 第二行输入n个nums[i] 输出描述 输出其中可以组成三角形三条边的三元组个数。 解释一个样例: 4…...
Ansible内置模块之file
ansible.builtin.file 模块用于管理文件和目录的属性。可以创建、删除文件或目录,修改文件权限、所有者等属性。 1. 选 项 说 明 选项必须类型默认值说明path是str无要管理的文件或目录的路径state否str无状态或类型。可为 file,directory,absent,link 等mode否str…...
DeepSeek 助力 Vue 开发:打造丝滑的侧边栏(Sidebar)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
手写一个Java Android Binder服务及源码分析
手写一个Java Android Binder服务及源码分析 前言一、Java语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.aidl3.2 IHelloService.java(自动生成)3.3 HelloService.java…...
考研操作系统----操作系统的概念定义功能和目标(仅仅作为王道哔站课程讲义作用)
目录 操作系统的概念定义功能和目标 操作系统的四个特征 操作系统的分类 编辑 操作系统的运行机制 系统调用 操作系统体系结构 操作系统引导 虚拟机 操作系统的概念定义功能和目标 什么是操作系统: 操作系统是指控制和管理整个计算机系统的软硬件资源&…...
java.lang.IllegalArgumentException: 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
Tomcat 屏蔽错误信息。java.lang.IllegalArgumentException: 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义 <h1>HTTP状态 400 - 错误的请求</h1><hr class"line" /><p><b>类型</b> 异常报告</p><p&…...
ros:ur机械臂初识
这是用来可视化的launch文件 比如,我运行 roslaunch ur_description view_ur3.launch ur3模型 ur3e模型 ur5模型 ur5e模型 ur10模型 ur20模型 ur30模型 后来我搜了一下 UR5 和 UR10 都是由 Universal Robots(简称 UR)生产的协作机器人&…...
计算机视觉-局部特征
一、局部特征 1.1全景拼接 先用RANSAC估计出变换,就可以拼接两张图片 ①提取特征 ②匹配特征 ③拼接图像 1.2 点的特征 怎么找到对应点?(才能做点对应关系RANSAC) :特征检测 我们希望找到的点具有的特征有什么特…...
LabVIEW袜品压力测试系统
开发了一种基于LabVIEW开发的袜品压力测试系统。该系统利用LabVIEW并结合灵敏的传感器和高精度的处理模块,实现了对袜品压力的精确测量和分析。系统不同于传统的服装压力测试方法,为研究和评价袜子的舒适性提供了新的测试手段。 项目背景 该系统的…...
Node.js 工具模块
Node.js 工具模块 引言 Node.js 是一个开源的、基于 Chrome V8 引擎的 JavaScript 运行时环境。它允许开发者使用 JavaScript 编写服务器端代码,从而构建快速、可扩展的网络应用。在 Node.js 开发过程中,工具模块扮演着至关重要的角色。本文将详细介绍 Node.js 中常用的工具…...
【Redis】下载安装Redis和Redis图形化界面工具教程(2024最新版本,史上最详细)
目录 一、Redis简介 二、Redis下载和安装 2.1、下载 2.2、安装 2.3、环境变量配置(可省略) 三、Redis启动验证 3.1、点击键盘上的WinR键,在跳出的运行界面中输入cmd并确定 3.2、输入redis-cli -v 查看redis的版本号 3.3、接着我们再…...
企业SSL 证书管理指南
文章从以下几个部分展开 SSL证书的用途和使用场景SSL证书的申请类型和实现方式SSL证书的管理SSL证书的续签 一、SSL 证书的用途和使用场景 1.1 为什么要使用 SSL 证书? 1. 数据安全 🛡️- 在 HTTP 传输中,TCP 包可以被截获,攻…...
JDK1.8新特性面试题
lambda表达式 Lambda表达式极大地简化了匿名内部类的创建,促进了函数式编程风格。开发者可以更简洁地定义只有一行代码的函数对象,并将其作为参数传递给方法或者赋值给变量。 三要素: 形式参数、箭头、代码块 (形式参数…...
floodfill算法系列一>太平洋大西洋水流问题
目录 题目方法解析:代码设计:代码呈现: 题目方法解析: 代码设计: 代码呈现: class Solution {int m,n;int[] dx {0,0,-1,1};int[] dy {-1,1,0,0};public List<List<Integer>> pacificAtlant…...
【信息学奥赛一本通 C++题解】1258:【例9.2】数字金字塔
信息学奥赛一本通(C版)在线评测系统 基础算法 第一节 动态规划的基本模型 1258:【例9.2】数字金字塔 小学生的课堂讲解 一、解题思路 同学们,今天我们要解决的是数字金字塔找最大路径和的问题。想象一下,数字金字塔就…...
初始c语言(指针和结构体)
前言: 内容: 昨天学的指针,今天复习指针,然后学习结构体 复习: 什么是指针,指针就是地址, int* p &a; p就是指针变量,但是口语一般成为指针 int 说明p指向的对象是in…...
C#(Winform)通过添加AForge添加并使用系统摄像机
先展示效果 AForge介绍 AForge是一个专门为开发者和研究者基于C#框架设计的, 也是NET平台下的开源计算机视觉和人工智能库 它提供了许多常用的图像处理和视频处理算法、机器学习和神经网络模型,并且具有高效、易用、稳定等特点。 AForge主要包括: 计算机视觉与人…...