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

【人工智能深度学习应用】妙笔API最佳实践

AI妙笔是一款以文本创作为主、多模态为辅的生成式创作大模型产品,专门为传媒、政务等特定的行业和组织提供行业化的内容创作辅助。它具备深度的行业知识,能够生成高质量的专业内容,能覆盖各行业常见的文体类型,写作文体丰富多样,包括时政稿件、时事评论、视频脚本、报告、请示、通知、方案、复函等。AI妙笔通过人工智能技术提升创作效率,帮助用户节省时间和精力,并提供准确、专业的内容,满足不同行业组织的需求。

本文提供妙笔写作链路 API的几个最佳实践,帮助您快速入门并开发您自己的业务应用。

前提条件

  • 已开通服务

  • 获取WorkSpaceId 获取Workspace ID

  • 引入妙笔SDK 注意获取最新SDK版本

<dependency><groupId>com.aliyun</groupId><artifactId>alibabacloud-aimiaobi20230801</artifactId><version>1.0.11</version>
</dependency>

1、实现直接生成文章

基于妙笔提供的API,本节通过直接生成文章场景来帮助您熟悉API的使用。

生成调用demo如下:

package com.aliyun.sdk.service.aimiaobi20230801;import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.gateway.pop.Configuration;
import com.aliyun.sdk.gateway.pop.auth.SignatureVersion;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunWritingRequest;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunWritingResponseBody;import com.google.gson.Gson;
import darabonba.core.ResponseIterable;
import darabonba.core.ResponseIterator;
import darabonba.core.client.ClientOverrideConfiguration;import java.util.ArrayList;import java.util.List;/*** packageName com.dayouz.lightapp** @author dayouz* @version JDK 8* @className runStyleWriting* @date 2024/8/13* @description 直接写作demo*/
public class RunWritingTest {public static void main(String[] args) {StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder().accessKeyId(Constant.accessKeyId).accessKeySecret(Constant.accessKeySecret).build());AsyncClient client = AsyncClient.builder().region("cn-beijing").credentialsProvider(provider).serviceConfiguration(Configuration.create().setSignatureVersion(SignatureVersion.V3)).overrideConfiguration(ClientOverrideConfiguration.create().setProtocol("HTTPS").setEndpointOverride("aimiaobi.cn-beijing.aliyuncs.com")).build();//写作时的文体、篇幅、输出语言等控制参数List<RunWritingRequest.Tags> tags = new ArrayList<>();//构建语言为中文tags.add(RunWritingRequest.Tags.builder().tag("language").keyword("zh-CN").build());//构建文章篇幅字数300字左右tags.add(RunWritingRequest.Tags.builder().tag("gcNumberSizeTag").keyword("300字").build());//构建生成文章数量为1篇tags.add(RunWritingRequest.Tags.builder().tag("gcNumber").keyword("1").build());//构建写作文体为新闻评论tags.add(RunWritingRequest.Tags.builder().tag("writingStyle").keyword("新闻评论").build());RunWritingRequest request = RunWritingRequest.builder().workspaceId(Constant.workspaceId).prompt("写一篇关于国足对战日本0:7 失败的报道").writingConfig(RunWritingRequest.WritingConfig.builder()//设置传媒领域的写作.domain("media")//设置为自动补充素材,通过互联网检索.useSearch(true)//设置写作时的文体、篇幅、输出语言等控制参数.tags(tags).build()).build();ResponseIterable<RunWritingResponseBody> x = client.runWritingWithResponseIterable(request);ResponseIterator<RunWritingResponseBody> iterator = x.iterator();while (iterator.hasNext()) {System.out.println("----event----");RunWritingResponseBody event = iterator.next();System.out.println(new Gson().toJson(event));}System.out.println("ALL***********************");System.out.println("请求成功的请求头值:");System.out.println(x.getStatusCode());System.out.println(x.getHeaders());}
}

2、分步骤创作文章

package org.example.miaobi;import com.alibaba.fastjson2.JSONObject;
import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.gateway.pop.Configuration;
import com.aliyun.sdk.gateway.pop.auth.SignatureVersion;
import com.aliyun.sdk.service.aimiaobi20230801.AsyncClient;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunStepByStepWritingRequest;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunStepByStepWritingResponseBody;
import darabonba.core.ResponseIterable;
import darabonba.core.client.ClientOverrideConfiguration;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;@Slf4j
public class RunStepByStepWritingTest {public static AsyncClient asyncClient() {//accessKeyIdString accessKeyId = System.getenv("accessKeyId");//accessKeySecretString accessKeySecret = System.getenv("accessKeySecret");//域名:aimiaobi.cn-hangzhou.aliyuncs.comString domain = System.getenv("domain");return AsyncClient.builder().credentialsProvider(StaticCredentialProvider.create(Credential.builder().accessKeyId(accessKeyId).accessKeySecret(accessKeySecret).build())).serviceConfiguration(Configuration.create().setSignatureVersion(SignatureVersion.V3)).overrideConfiguration(ClientOverrideConfiguration.create().setProtocol("HTTPS").setEndpointOverride(domain)).build();}@Testpublic void runStepByStepWriting() {AsyncClient asyncClient = asyncClient();String workspaceId = System.getenv("WorkspaceId");String prompt = "中美关系如何破局";//大纲生成OutlineGenerateResult result = runOutlineGenerateResult(asyncClient, workspaceId, prompt);//判断是否成功失败if (result.latestResponse == null || result.latestResponse.getHeader().getErrorCode() != null || result.latestResponse.getHeader().getErrorMessage() != null) {log.error("runStepByStepWriting|runOutlineGenerateResult error:{}", JSONObject.toJSONString(result.latestResponse));return;}log.info("latestResponse:{}", JSONObject.toJSONString(result.latestResponse));log.info("searchQuery:{}", result.searchQuery);log.info("articles:{}", result.articles != null ? result.articles.stream().map(x -> {return String.format("%s:%s", x.getTitle(), x.getUrl());}).collect(Collectors.joining(",")) : null);log.info("miniDoc:{}", JSONObject.toJSONString(result.miniDoc));log.info("outlines:{}", JSONObject.toJSONString(result.outlines));List<String> miniDoc = result.miniDoc;List<String> outlines = result.outlines;//生成摘编SummarizationResult summarizationResult = runSummarizationGenerate(outlines, asyncClient, workspaceId, miniDoc, prompt);//判断是否成功失败if (summarizationResult.latestResponse == null || summarizationResult.latestResponse.getHeader().getErrorCode() != null || summarizationResult.latestResponse.getHeader().getErrorMessage() != null) {log.error("runStepByStepWriting|runSummarizationGenerate|error:{}", JSONObject.toJSONString(summarizationResult.latestResponse));return;}List<RunStepByStepWritingRequest.Outlines> outlineList = outlines.stream().map(x -> {return RunStepByStepWritingRequest.Outlines.builder().outline(x).build();}).collect(Collectors.toList());//生成文章RunWritingResult runWritingResult = runWriting(asyncClient, workspaceId, prompt, miniDoc, outlineList, summarizationResult.cachedSummarization);//判断是否成功失败if (runWritingResult.latestResponse == null || runWritingResult.latestResponse.getHeader().getErrorCode() != null || runWritingResult.latestResponse.getHeader().getErrorMessage() != null) {log.error("runStepByStepWriting|runSummarizationGenerate|error:{}", JSONObject.toJSONString(runWritingResult.latestResponse));return;}RunStepByStepWritingResponseBody.Output output = runWritingResult.latestResponse.getPayload().getOutput();//最终输出的正文String text = output.getText();log.info("最终输出的正文:{}", text);}public static class RunWritingResult {public final RunStepByStepWritingResponseBody latestResponse;public RunWritingResult(RunStepByStepWritingResponseBody latestResponse) {this.latestResponse = latestResponse;}}private static RunWritingResult runWriting(AsyncClient asyncClient, String workspaceId, String prompt, List<String> miniDoc, List<RunStepByStepWritingRequest.Outlines> outlineList, List<String> cachedSummarization) {ResponseIterable<RunStepByStepWritingResponseBody> iterable = asyncClient.runStepByStepWritingWithResponseIterable(RunStepByStepWritingRequest.builder().workspaceId(workspaceId).prompt(prompt).referenceData(RunStepByStepWritingRequest.ReferenceData.builder().miniDoc(miniDoc).outlines(outlineList).summarization(cachedSummarization).build()).writingConfig(RunStepByStepWritingRequest.WritingConfig.builder().step("Writing").build()).build());RunStepByStepWritingResponseBody latestResponse = null;//写作输出for (RunStepByStepWritingResponseBody item : iterable) {log.info("item:{}", JSONObject.toJSONString(item));latestResponse = item;}return new RunWritingResult(latestResponse);}public static class SummarizationResult {public final List<String> cachedSummarization;public final RunStepByStepWritingResponseBody latestResponse;public SummarizationResult(List<String> cachedSummarization, RunStepByStepWritingResponseBody latestResponse) {this.cachedSummarization = cachedSummarization;this.latestResponse = latestResponse;}}private static SummarizationResult runSummarizationGenerate(List<String> outlines,AsyncClient asyncClient,String workspaceId,List<String> miniDoc,String prompt) {List<RunStepByStepWritingRequest.Outlines> outlineList = outlines.stream().map(x -> {return RunStepByStepWritingRequest.Outlines.builder().outline(x).build();}).collect(Collectors.toList());ResponseIterable<RunStepByStepWritingResponseBody> iterable = asyncClient.runStepByStepWritingWithResponseIterable(RunStepByStepWritingRequest.builder().workspaceId(workspaceId).prompt(prompt).referenceData(RunStepByStepWritingRequest.ReferenceData.builder().miniDoc(miniDoc).outlines(outlineList).build()).writingConfig(RunStepByStepWritingRequest.WritingConfig.builder().step("MiniDocSummary").build()).build());List<String> cachedSummarization = null;RunStepByStepWritingResponseBody latestResponse = null;for (RunStepByStepWritingResponseBody responseBody : iterable) {latestResponse = responseBody;RunStepByStepWritingResponseBody.Output output = responseBody.getPayload().getOutput();if (output != null && output.getExtraOutput() != null && output.getExtraOutput().getSummarization() != null) {cachedSummarization = output.getExtraOutput().getSummarization();}}return new SummarizationResult(cachedSummarization, latestResponse);}private static OutlineGenerateResult runOutlineGenerateResult(AsyncClient asyncClient, String workspaceId, String prompt) {//生成大纲ResponseIterable<RunStepByStepWritingResponseBody> iterable = asyncClient.runStepByStepWritingWithResponseIterable(RunStepByStepWritingRequest.builder().workspaceId(workspaceId).prompt(prompt).writingConfig(RunStepByStepWritingRequest.WritingConfig.builder().step("OutlineGenerate").build()).build());//检索的QueryString searchQuery = null;//检索的文章List<RunStepByStepWritingResponseBody.Articles> articles = null;//排序好的文章切片List<String> miniDoc = null;//生成的大纲List<String> outlines = null;RunStepByStepWritingResponseBody latestResponse = null;for (RunStepByStepWritingResponseBody response : iterable) {latestResponse = response;if (articles == null) {articles = response.getPayload().getOutput().getArticles();}if (miniDoc == null) {miniDoc = response.getPayload().getOutput().getMiniDoc();}//检索后的queryif (searchQuery == null) {searchQuery = response.getPayload().getOutput().getSearchQuery();}//大纲生成结束if ("task-outline-end".equals(response.getHeader().getEvent())) {outlines = Arrays.asList(response.getPayload().getOutput().getText().split("\n"));}}return new OutlineGenerateResult(searchQuery, articles, miniDoc, outlines, latestResponse);}private static class OutlineGenerateResult {public final String searchQuery;public final List<RunStepByStepWritingResponseBody.Articles> articles;public final List<String> miniDoc;public final List<String> outlines;public final RunStepByStepWritingResponseBody latestResponse;public OutlineGenerateResult(String searchQuery, List<RunStepByStepWritingResponseBody.Articles> articles, List<String> miniDoc, List<String> outlines, RunStepByStepWritingResponseBody latestResponse) {this.searchQuery = searchQuery;this.articles = articles;this.miniDoc = miniDoc;this.outlines = outlines;this.latestResponse = latestResponse;}}
}

3、AI工具箱

AI工具箱包括内容续写、摘要生成、标题生成、内容缩写、内容扩写、关键词抽取等功能,最新实时能力可参考妙笔写作页面的AI工具箱。本节通过实现摘要生成场景来帮助您熟悉API的使用。

生成调用demo如下:

package com.aliyun.sdk.service.aimiaobi20230801;import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.gateway.pop.Configuration;
import com.aliyun.sdk.gateway.pop.auth.SignatureVersion;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunSummaryGenerateRequest;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunSummaryGenerateResponseBody;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunWritingRequest;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunWritingResponseBody;
import com.google.gson.Gson;
import darabonba.core.ResponseIterable;
import darabonba.core.ResponseIterator;
import darabonba.core.client.ClientOverrideConfiguration;import java.util.ArrayList;
import java.util.List;/*** packageName com.dayouz.lightapp** @author dayouz* @version JDK 8* @className runStyleWriting* @date 2024/8/13* @description 摘要生成Demo*/
public class RunSummaryGenerateTest {public static void main(String[] args) {StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder().accessKeyId(Constant.accessKeyId).accessKeySecret(Constant.accessKeySecret).build());AsyncClient client = AsyncClient.builder().region("cn-beijing").credentialsProvider(provider).serviceConfiguration(Configuration.create().setSignatureVersion(SignatureVersion.V3)).overrideConfiguration(ClientOverrideConfiguration.create().setProtocol("HTTPS").setEndpointOverride("aimiaobi.cn-beijing.aliyuncs.com")).build();//写作时的文体、篇幅、输出语言等控制参数List<RunWritingRequest.Tags> tags = new ArrayList<>();//构建语言tags.add(RunWritingRequest.Tags.builder().tag("language").keyword("zh-CN").build());//构建文章篇幅tags.add(RunWritingRequest.Tags.builder().tag("gcNumberSizeTag").keyword("300字").build());//构建生成文章数量tags.add(RunWritingRequest.Tags.builder().tag("gcNumber").keyword("2").build());//构建写作文体tags.add(RunWritingRequest.Tags.builder().tag("writingStyle").keyword("新闻评论").build());RunSummaryGenerateRequest request = RunSummaryGenerateRequest.builder().workspaceId(Constant.workspaceId).prompt("请为上述内容生成一段摘要,字数在100~200字以内。").content("云服务器ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。").build();ResponseIterable<RunSummaryGenerateResponseBody> x = client.runSummaryGenerateWithResponseIterable(request);ResponseIterator<RunSummaryGenerateResponseBody> iterator = x.iterator();while (iterator.hasNext()) {System.out.println("----event----");RunSummaryGenerateResponseBody event = iterator.next();System.out.println(new Gson().toJson(event));}System.out.println("ALL***********************");System.out.println("请求成功的请求头值:");System.out.println(x.getStatusCode());System.out.println(x.getHeaders());}
}

相关文章:

【人工智能深度学习应用】妙笔API最佳实践

AI妙笔是一款以文本创作为主、多模态为辅的生成式创作大模型产品&#xff0c;专门为传媒、政务等特定的行业和组织提供行业化的内容创作辅助。它具备深度的行业知识&#xff0c;能够生成高质量的专业内容&#xff0c;能覆盖各行业常见的文体类型&#xff0c;写作文体丰富多样&a…...

SOMEIP_ETS_150: SD_Send_triggerEventUINT8Multicast_Eventgroup_6

测试目的&#xff1a; 验证DUT在Tester订阅事件组后&#xff0c;能够响应Tester触发的triggerEventUINT8Multicast方法&#xff0c;并将TestEventUINT8Multicast事件发送到订阅请求中端点选项指定的IP地址和端口。 描述 本测试用例旨在确保DUT能够正确处理事件组的订阅请求&…...

【EXCEL数据处理】000009 案列 EXCEL单元格数字格式。文本型数字格式和常规型数字格式的区别

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【EXCEL数据处理】000009 案列 EXCEL单元格数字格式。文本型数字格式和…...

Vxe UI vue vxe-table vxe-text-ellipsis 如何实现单元格多行文本超出、多行文本溢出省略

Vxe UI vue vxe-table 如何实现单元格多行文本超出、多行文本溢出省略 代码 配合 vxe-text-ellipsis 组件实现多行文本溢出省略 <template><div><vxe-grid v-bind"gridOptions"><template #defaultAddress"{ row }"><vxe-te…...

FFmpeg源码:avio_feof函数分析

AVIOContext结构体和其相关的函数分析&#xff1a; FFmpeg源码&#xff1a;avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析 FFmpeg源码&#xff1a;read_packet_wrapper、fill_buffer函数分析 FFmpeg源码&#xff1a;avio_read函数分析 FFmpeg源码&#xff…...

各省-城镇化率(2001-2022年)

数据收集各省-城镇化率&#xff08;2001-2022年&#xff09;.zip资源-CSDN文库https://download.csdn.net/download/2401_84585615/89465885 相关指标&#xff1a; 包括省份、年份、年末总人口数(万人)、年末城镇人口数(万人)、城镇化率等。 数据集构建&#xff1a; 数据集通…...

飞创龙门双驱XYZ直线模组高精度应用实例

飞创龙门双驱XYZ直线模组集超精密定位、高动态响应和灵活配置于一体&#xff0c;适用于电子制造行业&#xff08;点胶、组装、检测&#xff09;、半导体圆晶加工、芯片封装、激光切割、激光焊接、数控机床、精密检测及科研实验等&#xff0c;满足高精度、高动态的三维定位需求&…...

Prompt 初级版:构建高效对话的基础指南

Prompt 初级版&#xff1a;构建高效对话的基础指南 文章目录 Prompt 初级版&#xff1a;构建高效对话的基础指南一 “标准”提示二 角色提示三 多范例提示四 组合提示五 规范化提示 本文介绍了提示词的基础概念与不同类型&#xff0c;帮助用户更好地理解如何在对话中构建有效的…...

餐饮重点企业在AI领域的布局,看方大的AI实践

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 AI已经被应用在餐饮餐厨行业的哪些方面&am…...

Axure PR 9 开关切换 设计交互

大家好&#xff0c;我是大明同学。 这期内容&#xff0c;我们来探讨Axure开关按钮设计与交互技巧​。 创建切换开关所需的元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.将“圆形”元件拖到画布上&#xff0c;在样式窗格中将高度和宽度设置为35&#xff0c;线段宽度…...

ruoyi-python 若依python版本部署及新增模块

ruoyi spring版本支持一键导出前后端代码&#xff0c;且b站上有很多教程&#xff0c;但是发现python版本的教程并不多&#xff0c;于是自己尝试创建一个简易的CRUD模块 1.各版本bug 主要尝试了1.1.2版本和vue2的版本&#xff0c;链接如下&#xff1a; v1.1.2 vue2 两个版本…...

【理论】负载均衡

目录 1. 定义2. 主要作用3. 实现方法4. 实现原理 1. 定义 负载均衡&#xff08;Load Balancing&#xff09;将网络流量、请求等输入分发到后端服务器&#xff0c;为后端服务器提供负载均衡&#xff0c;实现高可用和容错。 2. 主要作用 1. 高并发 通过将请求均匀分配到多个服务…...

流行前端框架Vue.js详细学习要点

Vue.js是一款流行的JavaScript前端框架&#xff0c;用于构建用户界面&#xff0c;特别是在构建交互式Web应用程序时表现出色。以下是Vue.js详细学习的一些要点&#xff1a; 1. Vue.js基础 定义与特点&#xff1a;Vue.js是一款渐进式JavaScript框架&#xff0c;提供响应式数据…...

Java.数据结构.TreeMap

一、什么是TreeMap TreeMap是Java集合框架中的一部分&#xff0c;并且基于红黑树数据结构。这说明TreeMap能够高效地执行键值对的存储、检索、排序等操作。 二、TreeMap的特点 有序性&#xff1a;TreeMap会根据键的自然顺序进行排序&#xff0c;当然&#xff0c;你也可以通过…...

什么是托管安全信息和事件管理 SIEM?

什么是 SIEM&#xff1f; 安全信息和事件管理 ( SIEM ) 解决方案最初是一种集中式日志聚合解决方案。SIEM 解决方案会从整个组织网络中的系统收集日志数据&#xff0c;使组织能够从单一集中位置监控其网络。 随着时间的推移&#xff0c;SIEM解决方案已发展成为一个完整的威胁…...

vscode安装及c++配置编译

1、VScode下载 VS Code官网下载地址&#xff1a;Visual Studio Code - Code Editing. Redefined。 2、安装中文插件 搜索chinese&#xff0c;点击install下载安装中文插件。 3、VS Code配置C/C开发环境 3.1、MinGW-w64下载 VS Code是一个高级的编辑器&#xff0c;只能用来写代…...

JavaScript使用渐变来美化对象!

我们的目标是渐变&#xff01;渐变&#xff01; 首先了解&#xff0c;渐变分为线性渐变和径向渐变&#xff0c;线性渐变可以是从左上角到右下角的渐变&#xff0c;径向渐变是从中心向外的渐变。 JavaScript中实现渐变可以使用addColorStop的方法&#xff0c;例如创建一个线性渐…...

Linux之实战命令24:od应用实例(五十八)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…...

【CKA】一、基于角色的访问控制-RBAC

1、基于角色的访问控制-RBAC 1. 考题内容&#xff1a; 2. 答题思路&#xff1a; 这道题就三条命令&#xff0c;建议直接背熟就行。 也可以查看帮助 kubectl create clusterrole -h kubectl create serviceaccount -h kubectl create rolebinding -h 注意&#xff1a; 1、资…...

【华为HCIP实战课程三】动态路由OSPF的NBMA环境建立邻居及排错,网络工程师

一、NBMA环境下的OSPF邻居建立问题 上节我们介绍了NBMA环境下OSPF邻居建立需要手动指定邻居,因为NBMA环境是不支持广播/组播的 上一节AR1的配置: ospf 1 peer 10.1.1.4 //手动指定邻居的接口地址,而不是RID peer 10.1.1.5 area 0.0.0.0 手动指定OSPF邻居后抓包查看OSP…...

初始Kafka

1、Kafka是什么&#xff1f; Kafka是由Scala语言开发的一个多分区、多副本&#xff0c;基于Zookeeper集群协调的系统。 那这个所谓的系统又是什么系统呢&#xff1f; 回答这个问题要从发展的角度来看&#xff1a;起初Kafka的定位是分布式消息系统。但是目前它的定位是一个分布…...

学会使用maven工具看这一篇文章就够了

文章目录 概述一、定义与功能二、核心组件三、主要作用四、仓库管理 settings.xml说明一、文件位置与优先级二、主要配置元素三、配置示例 pom.xml文件说明一、pom.xml的基本结构二、pom.xml的主要元素及其说明三、依赖管理四、常用插件五、其他配置 maven安装配置一、下载Mave…...

如何创建虚拟环境并实现目标检测及验证能否GPU加速

创建虚拟环境&#xff1a; 先创建一个虚拟python环境&#xff0c;敲如下代码 然后再到该虚拟环境里面安装自己想要的包 激活虚拟环境 然后再聚类训练这些 验证GPU加速 阿里源 pip install torch torchvision -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mir…...

<STC32G12K128入门第十三步>驱动W5500进行TCP_Client通信

前言 最近本人接触到了一个消费类产品需要用到以太网,并且需要连接服务器,同时需要发送https协议。本文就是讲解如何运行TCP客户端, 一、W5500讲解? W5500是一款10/100M的以太网转换芯片,内部集成了TCP/IP协议栈。并且支持SPI/I2C协议。我在STC32上面使用的是软件SPI。…...

【Go语言】Ergo:构建分布式系统的现代化 Erlang 框架

Ergo 是一个基于 Go 语言的开源框架&#xff0c;专门用于构建分布式系统。它为开发人员提供了与 Erlang/OTP 类似的编程模型和功能。Ergo 通过将 Erlang 的强大分布式并发编程模型带入 Go 语言的生态中&#xff0c;使得开发者能够轻松创建高度可靠、可扩展的分布式应用程序。 …...

教资备考--高中数学(仅为高中数学梳理)

按照高中学习数学梳理的方案进行整理...

Qt 学习第十一天:QTableWidget 的使用

一、创建QTableWidget对象&#xff0c;设置大小&#xff0c;在窗口的位置 //创建tablewidgetQTableWidget *table new QTableWidget(this);table->resize(550, 300);table->move(100, 100); //移动 二、设置表头 //设置表头QStringList headerList; //定义headerList…...

【Linux】基础指令 1

Linux中各个指令是相互联系的&#xff0c;所以一开始学习Linux时&#xff0c;对指令很陌生是正常的&#xff0c;不用花费大量的时间去刻意的记忆&#xff0c;在我们一次次的使用当中&#xff0c;这些指令自然会烂熟于心。 简单看看各个指令的功能 ls指令 显示当前目录下的文…...

Linux_kernel字符设备驱动12

一、字符设备的编程框架 在Linux_kernel驱动开发11中&#xff0c;我们介绍的系统调用。只是为了做一个实验&#xff0c;在真正开发时&#xff0c;我们并不会直接在内核中添加一个新的系统调用&#xff0c;这样做会导致内核体积变大。 1、字符设备结构体 我们实现一个硬件字符设…...

服务保护sentinel

线程隔离 - 线程池隔离&#xff1a;给每个服务调用业务分配一个线程池&#xff0c;利用线程池本身实现隔离效果。 - 信号量隔离&#xff1a;不创建线程池&#xff0c;而是计数器模式&#xff0c;记录业务使用的线程数量&#xff0c;达到信号量上限时&#xff0c;禁止新的请求。…...

四川做网站公司/百度推广怎么弄

转自&#xff1a;http://blog.csdn.net/fenglibing/article/details/32916445 六、Hadoop1.x与Hadoop2的区别 1、变更介绍 Hadoop2相比较于Hadoop1.x来说&#xff0c;HDFS的架构与MapReduce的都有较大的变化&#xff0c;且速度上和可用性上都有了很大的提高&#xff0c;Hadoop2…...

怎样建置换平台网站/南宁关键词优化服务

前言 加油站是指为汽车和其它机动车辆服务的、零售汽油和机油的补充站&#xff0c;一般为添加燃料油、润滑油等。由于加油站所销售的石油商品具有易燃爆、易挥发、易渗漏、易集聚静电荷的特性&#xff0c;故加油站以“安全”为第一准则。 国家经济的高速发展&#xff0c;使得国…...

自己公司网站如何添加qq/关键词分布中对seo有危害的

9.3 好友关注-Feed流实现方案 当我们关注了用户后&#xff0c;这个用户发了动态&#xff0c;那么我们应该把这些数据推送给用户&#xff0c;这个需求&#xff0c;其实我们又把他叫做Feed流&#xff0c;关注推送也叫做Feed流&#xff0c;直译为投喂。为用户持续的提供“沉浸式”…...

国内h5网站欣赏/广州seo网站

父组件编译:processSlotContent这里截取了部分内容父组件中的标签中添加了slot-scope属性后&#xff0c;给该节点添加slotScope属性&#xff0c;当然&#xff0c;也要添加slot属性&#xff0c;如果没有的话就默认为default。子组件编译genData -> genScopedSlots在编译的时候…...

做彩票网站抓到判几年/安卓优化大师手机版下载

thanks for your time.我写了一个爬虫&#xff0c;执行到某一步时&#xff0c;获取一个地址的set&#xff0c;传入到这个文件中&#xff0c;开始下载图片from urllib import requestimport sslssl._create_default_https_context ssl._create_unverified_context;class Downlo…...

网站菜单导航制作/网络营销策略分析

Struts2配置文件涉及到主要有两个Struts.xml和web.xml,web.xml实现过滤器的配置&#xff0c;Struts配置访问的包&#xff0c;Action&#xff0c;方法和结果处理。 1. web.xml的配置&#xff1a; <filter><filter-name>struts2</filter-name><filter-class…...