【人工智能深度学习应用】妙笔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妙笔是一款以文本创作为主、多模态为辅的生成式创作大模型产品,专门为传媒、政务等特定的行业和组织提供行业化的内容创作辅助。它具备深度的行业知识,能够生成高质量的专业内容,能覆盖各行业常见的文体类型,写作文体丰富多样&a…...
SOMEIP_ETS_150: SD_Send_triggerEventUINT8Multicast_Eventgroup_6
测试目的: 验证DUT在Tester订阅事件组后,能够响应Tester触发的triggerEventUINT8Multicast方法,并将TestEventUINT8Multicast事件发送到订阅请求中端点选项指定的IP地址和端口。 描述 本测试用例旨在确保DUT能够正确处理事件组的订阅请求&…...
【EXCEL数据处理】000009 案列 EXCEL单元格数字格式。文本型数字格式和常规型数字格式的区别
前言:哈喽,大家好,今天给大家分享一篇文章!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【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结构体和其相关的函数分析: FFmpeg源码:avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析 FFmpeg源码:read_packet_wrapper、fill_buffer函数分析 FFmpeg源码:avio_read函数分析 FFmpeg源码ÿ…...
各省-城镇化率(2001-2022年)
数据收集各省-城镇化率(2001-2022年).zip资源-CSDN文库https://download.csdn.net/download/2401_84585615/89465885 相关指标: 包括省份、年份、年末总人口数(万人)、年末城镇人口数(万人)、城镇化率等。 数据集构建: 数据集通…...
飞创龙门双驱XYZ直线模组高精度应用实例
飞创龙门双驱XYZ直线模组集超精密定位、高动态响应和灵活配置于一体,适用于电子制造行业(点胶、组装、检测)、半导体圆晶加工、芯片封装、激光切割、激光焊接、数控机床、精密检测及科研实验等,满足高精度、高动态的三维定位需求&…...
Prompt 初级版:构建高效对话的基础指南
Prompt 初级版:构建高效对话的基础指南 文章目录 Prompt 初级版:构建高效对话的基础指南一 “标准”提示二 角色提示三 多范例提示四 组合提示五 规范化提示 本文介绍了提示词的基础概念与不同类型,帮助用户更好地理解如何在对话中构建有效的…...
餐饮重点企业在AI领域的布局,看方大的AI实践
大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 AI已经被应用在餐饮餐厨行业的哪些方面&am…...
Axure PR 9 开关切换 设计交互
大家好,我是大明同学。 这期内容,我们来探讨Axure开关按钮设计与交互技巧。 创建切换开关所需的元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.将“圆形”元件拖到画布上,在样式窗格中将高度和宽度设置为35,线段宽度…...
ruoyi-python 若依python版本部署及新增模块
ruoyi spring版本支持一键导出前后端代码,且b站上有很多教程,但是发现python版本的教程并不多,于是自己尝试创建一个简易的CRUD模块 1.各版本bug 主要尝试了1.1.2版本和vue2的版本,链接如下: v1.1.2 vue2 两个版本…...
【理论】负载均衡
目录 1. 定义2. 主要作用3. 实现方法4. 实现原理 1. 定义 负载均衡(Load Balancing)将网络流量、请求等输入分发到后端服务器,为后端服务器提供负载均衡,实现高可用和容错。 2. 主要作用 1. 高并发 通过将请求均匀分配到多个服务…...
流行前端框架Vue.js详细学习要点
Vue.js是一款流行的JavaScript前端框架,用于构建用户界面,特别是在构建交互式Web应用程序时表现出色。以下是Vue.js详细学习的一些要点: 1. Vue.js基础 定义与特点:Vue.js是一款渐进式JavaScript框架,提供响应式数据…...
Java.数据结构.TreeMap
一、什么是TreeMap TreeMap是Java集合框架中的一部分,并且基于红黑树数据结构。这说明TreeMap能够高效地执行键值对的存储、检索、排序等操作。 二、TreeMap的特点 有序性:TreeMap会根据键的自然顺序进行排序,当然,你也可以通过…...
什么是托管安全信息和事件管理 SIEM?
什么是 SIEM? 安全信息和事件管理 ( SIEM ) 解决方案最初是一种集中式日志聚合解决方案。SIEM 解决方案会从整个组织网络中的系统收集日志数据,使组织能够从单一集中位置监控其网络。 随着时间的推移,SIEM解决方案已发展成为一个完整的威胁…...
vscode安装及c++配置编译
1、VScode下载 VS Code官网下载地址:Visual Studio Code - Code Editing. Redefined。 2、安装中文插件 搜索chinese,点击install下载安装中文插件。 3、VS Code配置C/C开发环境 3.1、MinGW-w64下载 VS Code是一个高级的编辑器,只能用来写代…...
JavaScript使用渐变来美化对象!
我们的目标是渐变!渐变! 首先了解,渐变分为线性渐变和径向渐变,线性渐变可以是从左上角到右下角的渐变,径向渐变是从中心向外的渐变。 JavaScript中实现渐变可以使用addColorStop的方法,例如创建一个线性渐…...
Linux之实战命令24:od应用实例(五十八)
简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…...
【CKA】一、基于角色的访问控制-RBAC
1、基于角色的访问控制-RBAC 1. 考题内容: 2. 答题思路: 这道题就三条命令,建议直接背熟就行。 也可以查看帮助 kubectl create clusterrole -h kubectl create serviceaccount -h kubectl create rolebinding -h 注意: 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是什么? Kafka是由Scala语言开发的一个多分区、多副本,基于Zookeeper集群协调的系统。 那这个所谓的系统又是什么系统呢? 回答这个问题要从发展的角度来看:起初Kafka的定位是分布式消息系统。但是目前它的定位是一个分布…...
学会使用maven工具看这一篇文章就够了
文章目录 概述一、定义与功能二、核心组件三、主要作用四、仓库管理 settings.xml说明一、文件位置与优先级二、主要配置元素三、配置示例 pom.xml文件说明一、pom.xml的基本结构二、pom.xml的主要元素及其说明三、依赖管理四、常用插件五、其他配置 maven安装配置一、下载Mave…...
如何创建虚拟环境并实现目标检测及验证能否GPU加速
创建虚拟环境: 先创建一个虚拟python环境,敲如下代码 然后再到该虚拟环境里面安装自己想要的包 激活虚拟环境 然后再聚类训练这些 验证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 语言的开源框架,专门用于构建分布式系统。它为开发人员提供了与 Erlang/OTP 类似的编程模型和功能。Ergo 通过将 Erlang 的强大分布式并发编程模型带入 Go 语言的生态中,使得开发者能够轻松创建高度可靠、可扩展的分布式应用程序。 …...
教资备考--高中数学(仅为高中数学梳理)
按照高中学习数学梳理的方案进行整理...
Qt 学习第十一天:QTableWidget 的使用
一、创建QTableWidget对象,设置大小,在窗口的位置 //创建tablewidgetQTableWidget *table new QTableWidget(this);table->resize(550, 300);table->move(100, 100); //移动 二、设置表头 //设置表头QStringList headerList; //定义headerList…...
【Linux】基础指令 1
Linux中各个指令是相互联系的,所以一开始学习Linux时,对指令很陌生是正常的,不用花费大量的时间去刻意的记忆,在我们一次次的使用当中,这些指令自然会烂熟于心。 简单看看各个指令的功能 ls指令 显示当前目录下的文…...
Linux_kernel字符设备驱动12
一、字符设备的编程框架 在Linux_kernel驱动开发11中,我们介绍的系统调用。只是为了做一个实验,在真正开发时,我们并不会直接在内核中添加一个新的系统调用,这样做会导致内核体积变大。 1、字符设备结构体 我们实现一个硬件字符设…...
服务保护sentinel
线程隔离 - 线程池隔离:给每个服务调用业务分配一个线程池,利用线程池本身实现隔离效果。 - 信号量隔离:不创建线程池,而是计数器模式,记录业务使用的线程数量,达到信号量上限时,禁止新的请求。…...
四川做网站公司/百度推广怎么弄
转自:http://blog.csdn.net/fenglibing/article/details/32916445 六、Hadoop1.x与Hadoop2的区别 1、变更介绍 Hadoop2相比较于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2…...
怎样建置换平台网站/南宁关键词优化服务
前言 加油站是指为汽车和其它机动车辆服务的、零售汽油和机油的补充站,一般为添加燃料油、润滑油等。由于加油站所销售的石油商品具有易燃爆、易挥发、易渗漏、易集聚静电荷的特性,故加油站以“安全”为第一准则。 国家经济的高速发展,使得国…...
自己公司网站如何添加qq/关键词分布中对seo有危害的
9.3 好友关注-Feed流实现方案 当我们关注了用户后,这个用户发了动态,那么我们应该把这些数据推送给用户,这个需求,其实我们又把他叫做Feed流,关注推送也叫做Feed流,直译为投喂。为用户持续的提供“沉浸式”…...
国内h5网站欣赏/广州seo网站
父组件编译:processSlotContent这里截取了部分内容父组件中的标签中添加了slot-scope属性后,给该节点添加slotScope属性,当然,也要添加slot属性,如果没有的话就默认为default。子组件编译genData -> genScopedSlots在编译的时候…...
做彩票网站抓到判几年/安卓优化大师手机版下载
thanks for your time.我写了一个爬虫,执行到某一步时,获取一个地址的set,传入到这个文件中,开始下载图片from urllib import requestimport sslssl._create_default_https_context ssl._create_unverified_context;class Downlo…...
网站菜单导航制作/网络营销策略分析
Struts2配置文件涉及到主要有两个Struts.xml和web.xml,web.xml实现过滤器的配置,Struts配置访问的包,Action,方法和结果处理。 1. web.xml的配置: <filter><filter-name>struts2</filter-name><filter-class…...