快速开发:用AI构造AI —— 打造属于个人的Copilot(M-聪明AI)
作品简介:
当今快速发展的AI时代,学会使用AI的同时,也可以融入AI,来打造自己的产品,我给我这个取名M-聪明, 是基于VUE 3 + Spring Boot -Redis +ChatGML + RxJava + SSE 的AI 服务平台。然后这款工具旨在为用户提供便捷、高效的AI服务体验,无论是进行日常对话、创作设计作品,还是处理大量文档资料,都能轻松应对。在开发过程中,通过腾讯云AI代码助手的强大支持,不仅仅提高了开发效率,还帮助自己解决了许多问题!!!
技术架构
开发工具:
- 前端: Visual Studio Code
- 后端IDE:IntelliJ IDEA 2023.1.3
- 腾讯云AI代码助手
前端:
- Vue 3
- Vue-CLl 脚手架
- Axios 请求库
- EleMent-UI 组件库
- OpenAPI 前端代码生成
后端:
- 存储层:MySQL 数据库 +Redis 缓存+ 腾讯云 COS 对象存储
- MyBatis-Plus及MyBatisX自动生成
- Redission 分布式锁
- Caffeine 本地缓存
- 基于 ChatGLM 大模型实现 AI 能力
- RxJava 响应式框架+多线程/线程池实战
- Shardingsphere 分库分表+分布式 ID 雪花算法
- SSE 服务端推送
- 多种设计模式
- 多角度项目优化:性能、稳定性、幂等性优化等
架构设计:
实现过程
开发环境,开发流程
开发环境:
后端:JDK17安装 ,Myslq版本8.x版本,Redis 5.X版本
前端:node.js 18.x版本 npm 9.X版本
工具:腾讯云AI代码助手
下载方式: 打开VS Code,左侧导航上点击扩展,然后搜索腾讯云AI代码助手 -> 点击安装
开发流程:
首先进行需求分析,明确功能点和性能指标;技术选型 -> 然后进行系统设计,包括模块划分、接口定义等;然后写Demo -> 写代码(实现业务逻辑),按照敏捷开发的方式,迭代开发并测试;最后进行系统集成和部署,确保整体功能的正常运行。其中通过腾讯云AI代码助手来便捷开发,大大提升开发效率!
关键技术解析
这里简单解析某一个环节,一个通用的场景,实现流式回答,后端实时获取数据返回给前端,而不是让前端用户一直等待全部在一起返回,体验感更好! 核心技术:这里后端java 通过RxJava 响应式编程和SSe技术实时数据传输完成:
RXJava:RxJava 定个基于事件驱动的利用可观察序列来实现异步编程的一个类库,是响应式编程在 Java 语言上的实现。
1、事件驱动
事件可以是任何事情,如用户的点击操作、网络请求的结果、文件的读写等。事件驱动的编程模型是通过事件触发行动。
比如前端开发中,用户点击按钮后会进行弹窗,这就是“点击事件“触发了“弹窗行动”
// 前端按钮点击
btn.onClick(()->{// 弹窗showModal();
})
在 RxJava 中,事件可以被看作是数据流中的数据项,称为“事件流”或“数据流”。每当一个事件发生,这个事件就会被推送给那些对它感兴趣的观察者(Observers)。
2、可观测序列
可观测序列是指一系列按照时间顺序发出的数据项,可以被观察和处理。可观测序列提供了一种将数据流和异步事件建模为一系列可以订阅和操作的事件的方式。
可以理解为在数据流的基础上封装了一层,多加了一点方法。
RxJava 的核心知识点
RxJava 是基于 观察者模式 实现的,分别有观察者和被观察者两个角色,被观察者会实时传输数据流,观察者可以观测到这些数据流。
在 RxJava 中,观察者就是 Observer,被观察者是 Observable 和 Flowable。
Observable和Flowable 区别:
Observable 适合处理相对较小的、可控的、不会迅速产生大量数据的
场景。它不具备背压处理能力,也就是说,当数据生产速度超过数据
消费速度时,可能会导致内存溢出或其他性能问题
Flowable 是针对背压(反向压力)问题而设计的可观测类型。背压问
题出现于数据生产速度超过数据消费速度的场景。Flowable 提供了多
种背压策略来处理这种情况,确保系统在处理大量数据时仍然能够保
持稳定。
当然springAI 中是Spring WebFlux其实原理都差不多! 然后这里我用RxJava:
Flowable 是针对背压(反向压力)问题而设计的可观测类型。背压问题出现于数据生产速度超过数据消费速度的场景。Flowable 提供了多种背压策略来处理这种情况,确保系统在处理大量数据时仍然能够保持稳定。
事件:
RxJava 也是一个基于事件驱动的框架,我们来看看一共有哪些事件,分别在什么时候触发:
1)onNext,被观察者每发送一次数据,就会触发此事件。
2)onError,如果发送数据过程中产生意料之外的错误,那么被观察者可以发送此事件。
3)onComplete,如果没有发生错误,那么被观察者在最后一次调用 onNext 之后发送此事件表示完成数据传输。
flowable.observeOn(Schedulers.io()).doOnNext(item -> {System.out.println("来数据啦" + item.toString());}).doOnError(e -> {System.out.println("出错啦" + e.getMessage());}).doOnComplete(() -> {System.out.println("数据处理完啦");}).subscribe();
更多可以查看官网 https://reactivex.io/,支持多种不同的编程语言。
后续这些会单独一篇文章来详细描述他们!!!
Demo 演示:
1.引入依赖:
<dependency><groupId>org.reactivestreams</groupId><artifactId>reactive-streams</artifactId><version>1.0.4</version>
</dependency>
2.编写单元测试:
@Test
void rxJavaDemo() throws InterruptedException {// 创建一个流,每秒发射一个递增的整数(数据流变化)Flowable<Long> flowable = Flowable.interval(1, TimeUnit.SECONDS).map(i -> i + 1).subscribeOn(Schedulers.io()); // 指定创建流的线程池// 订阅 Flowable 流,并打印每个接受到的数字flowable.observeOn(Schedulers.io()).doOnNext(item -> System.out.println(item.toString())).subscribe();// 让主线程睡眠,以便观察输出Thread.sleep(10000L);
}
前后端实时通讯:
有多种方案:可以轮询 :前端间隔一定时间就
data: First message\n
\n
data: Second message\n
\n
data: Third message\n
id: 3\n
\n
retry: 10000\n
data: Fourth message\n
\n
调用后端提供的结果接口,比如 200ms 一次,后端处理一些结果就累加放置在缓存中。
WebSocket:全双工协议,前端能实时推送数据给后端(或者从后端缓存拿数据),后端也可以实时推送数据给前端。 当然在这里有点重了。我们只需要服务端给用户端推送即可所有:
SSE(后端推送给前端) 前端发送请求并和后端建立连接后,后端可以实时推送数据给前端,无需前端自主轮询。
SSE:
基本概念:
服务器发送事件(Server-Sent Events)是一种用于从服务器到客户端的 单向、实时 数据传输技术,基于 HTTP协议实现。
特点:
- 单向通信:SSE 只支持服务器向客户端的单向通信,客户端不能向服务器发送数据。
- 文本格式:SSE 使用 纯文本格式 传输数据,使用 HTTP 响应的
text/event-stream
MIME 类型。 - 保持连接:SSE 通过保持一个持久的 HTTP 连接,实现服务器向客户端推送更新,而不需要客户端频繁轮询。
- 自动重连:如果连接中断,浏览器会自动尝试重新连接,确保数据流的连续性。
SSE 数据格式
SSE 数据流的格式非常简单,每个事件使用 data
字段,事件以两个换行符结束。还可以使用 id
字段来标识事件,并且 retry
字段可以设置重新连接的时间间隔。
自主实现 SSE
实现 SSE 非常简单,无论是 Java 服务端还是前端 HTML5 都支持了 SSE
因为后端是Spring项目,接给请求返回 SseEmitter 对象即可。(Get请求!!)
示列:
@GetMapping("/sse")
public SseEmitter testSSE() {// 建立 SSE 连接对象,0 表示不超时SseEmitter emitter = new SseEmitter(0L); ... 业务逻辑处理return emitter;
}
前端:
可以使用 JavaScript 的 EventSource
对象来连接和处理服务器发送的事件。示例代码:
// 创建 SSE 请求
const eventSource = new EventSource("http://localhost:8080/sse"
);
// 接收消息
eventSource.onmessage = function (event) {console.log(event.data);
};
// 生成结束,关闭连接
eventSource.onerror = function (event) {if (event.eventPhase === EventSource.CLOSED) {eventSource.close();}
};
整体部分Demo样列:
@GetMapping("/glm")public SseEmitter getAnswer(String fileType, String Message) throws IOException {log.info("开始生成回答,{}", Message);// 创建一个SseEmitter对象,用于发送服务器发送事件(SSE)SseEmitter sseEmitter = new SseEmitter(0L);// 获取文件URL,拼接本地地址和文件名String FileUrl = fileProperties.getUrl() + fileType;// 调用AI服务,根据文件类型和消息生成流式结果Flowable<ModelData> streamResult = aiResult.doSendMessageByDocument(FileUrl, Message);// 观察流式结果,并在IO线程上处理streamResult.subscribeOn(Schedulers.io()) // 指定流式数据的时候用的线程池.observeOn(Schedulers.io()) // 指定观察者使用的线程池 去执行方法.doOnNext(data -> {// 打印AI返回的数据内容System.out.println(data.getChoices().get(0).getDelta().getContent());// 将数据转换为JSON字符串并通过SSE发送给客户端sseEmitter.send(JSONUtil.toJsonStr(data.toString()));}).doOnError(e -> {// 如果发生错误,记录错误信息log.info("SSEE 错误 ", e);}).doOnComplete(sseEmitter::complete) // 当流完成时,通知SSE发射器完成.subscribe(); // 订阅流return sseEmitter;}sendQuestion() {this.eventSource = new EventSource(`http://xxxx:xxxx/ai/charGlmSee?message=${encodeURIComponent(this.newIput)}`);this.messages.push({ type: "bot", content: "ai", theData: ["Loading..."] });const lastBotMessageIndex = this.messages.length - 1;this.eventSource.onmessage = (event) => {const data = JSON.parse(event.data);const newMessage = data.choices[0].delta.content;this.aiMessage.push(newMessage);this.messages[lastBotMessageIndex].theData = this.aiMessage;this.$nextTick(() => {this.$refs.chatHistory.scrollTop = this.$refs.chatHistory.scrollHeight;});};this.eventSource.onerror = (error) => {if (error.eventPhase === EventSource.CLOSED) {this.eventSource.close();}};
},
腾讯云AI代码助手便捷开发:
代码助手,其优秀的代码补全功能:
- 腾讯云AI代码助手能够根据开发者输入的代码片段,预测并补全剩余的代码,你只需要TAB键选择,这大大减少了代码时间和语法错误,提生开发效率。
- 它支持多种编程语言的补全,如Python、JavaScript/TypeScript、Java、C/C++、Go等。
- 补全的代码不仅准确,而且符合开发者的编码风格和习惯。
代码诊断与优化:
AI代码助手能够实时检查代码中的语法错误和逻辑错误,帮助即使发现问题并进行修正。
它还能提供代码优化的建议,如简化复杂的逻辑结构、替换低效的算法等,使代码更加高效和优雅。非常方便!!!
并且也可以实现代码评审:
帮助你修改代码
技术对话与知识支持:
腾讯云AI代码助手将聊天功能与IDE进行了集成,开发者可以随时随地与AI进行技术对话咨询。
通过对话,开发者可以获取代码编写的建议、解决技术难题,甚至获取示例代码。
这个经常使用,比如你不想写代码,直接问助手,我写通过什么框架,写什么,有哪些组件,描述清除,AI助手帮你写,不够完善,可以继续问,也可以自己简单修改,描述越清除,效果越好!!!
而且对你写好的代码如果有疑问,问题修改,可以直接复制代码,提出问题,助手直接给出相关修改后代码非常详细!!!
这种交互方式使得开发者能够更快速地掌握新技术和框架。
过程中问答的一些:
代码注释与解释:
AI代码助手能够根据代码生成相应的注释,这个就太棒了,不用手写文档了。舒服。一键上传,而且排版还好看,详细!!!帮助开发者更好地理解代码的功能和逻辑。
当开发者需要处理别人的代码或在既有代码中进行延展开发时,AI代码助手可以快速解释初始代码,降低理解成本。
单元测试生成:
AI代码助手能够根据函数、方法、内容逻辑生成相关的测试代码。
它还能根据我们的的代码习惯,自动推荐单元测试的编写,提高单元测试的覆盖率。
使用说明
根据界面的操作提问,访问M-聪明网址,选择你需要的功能板块,提出问提,等待AI回答!!
效果展示
部分功能展示:
M-聪明-M_AI(后续慢慢扩张和优化)
总结:其主要是核心是学会利用AI代码辅助工具,来快速帮助我们开发。辅助工具有很多,我这里主要是使用的腾讯云AI代码助手,在其过程中,我们可以快速方便问助手,来帮助我们实时解决问题,其中也会有详细的解决方案同时,还有解析,帮助我们过程化学习。以及其代码设计优化,提升,规范开发,代码提示,一键引用等操作,非常方便。还有文档生成,这不大大减少了这些人力时间,可以着重开发核心项目块了嘛,对不想敲字的是非常方便。开发少不了测试,也可以帮助我们测试等这些操作都是简化一些繁琐开发,其我们重心只需要放在业务逻辑上即可!!!大大提示开发效率了。
相关文章:
快速开发:用AI构造AI —— 打造属于个人的Copilot(M-聪明AI)
作品简介: 当今快速发展的AI时代,学会使用AI的同时,也可以融入AI,来打造自己的产品,我给我这个取名M-聪明, 是基于VUE 3 Spring Boot -Redis ChatGML RxJava SSE 的AI 服务平台。然后这款工具旨在为用户…...
Elasticsearch容器启动报错:AccessDeniedException[/usr/share/elasticsearch/data/nodes];
AccessDeniedException 表明 Elasticsearch 容器无法访问或写入数据目录 /usr/share/elasticsearch/data/nodes。这是一个权限问题。 问题原因: 1、宿主机目录权限不足:映射到容器的数据目录 /data/es/data 在宿主机上可能没有足够的权限供容器访问。 …...
用公网服务器实现内网穿透
首先需要一个公网服务器 下载frp 搜索github下载到frp,服务端frps/客户端frpc。。下载的时候要注意自己本地内网机的cpu版本和服务端cpu架构 我的电脑是mac M1PRO版本 下载的是:darwinarm64 比如 服务端一般是Linux(Intel 64位CPU…...
Jmeter如何进行多服务器远程测试
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 JMeter是Apache软件基金会的开源项目,主要来做功能和性能测试,用Java编写。 我们一般都会用JMeter在本地进行测试,但是受到单…...
前端实习第二个月小结
时间飞快,第一次实习已经过去两个多月,作一些简单的总结和分享。 注:文章整体会比较轻松,提及的经历、经验仅作参考。 一、关于实习/工作内容 1、工作内容 近期做的是管理后台方面的业务,技术栈:前端re…...
C# 并发和并行的区别--16
目录 并发和并行 一.并发 定义 特点 代码示例 代码解释 二.并行 定义 特点 在C#中的体现 代码示例 代码解释 三.并发和并行的区别 四 .如何在C#中选择并发还是并行 1.考虑任务类型 2.代码示例 3.注意事项 五.总结 并发和并行 在编程领域,并发和并行是两个密切…...
Python编程与在线医疗平台数据挖掘与数据应用交互性研究
一、引言 1.1 研究背景与意义 在互联网技术飞速发展的当下,在线医疗平台如雨后春笋般涌现,为人们的就医方式带来了重大变革。这些平台打破了传统医疗服务在时间和空间上的限制,使患者能够更加便捷地获取医疗资源。据相关报告显示,中国基于互联网的医疗保健行业已进入新的…...
HBase实训:纸币冠字号查询任务
一、实验目的 1. 理解分布式数据存储系统HBase的架构和工作原理。 2. 掌握HBase表的设计原则,能够根据实际业务需求设计合理的表结构。 3. 学习使用HBase Java API进行数据的插入、查询和管理。 4. 实践分布式数据存储系统在大数据环境下的应用,…...
Java 读取 Windows 设备的唯一性标识及定位
在 Windows 系统中,获取设备唯一性标识及定位信息对设备管理、安全监控等场景意义重大。本文介绍 Java 中几种实现方法,如 JNA 库、WMI4Java 库及通过 JNI 结合 Windows API。 1. 使用 JNA 库读取 DEVPKEY_Device_ContainerId 在 Windows 系统中&…...
UE控件学习
ListView: item设置:使能在list设置为Entry类 Grid Panel: 常用作背包,每个格子大小可不相同 WidgetSwitcher: 用于切换页签 Wrap_Box: 自动横向排版子节点,超过一定范围则自动换行…...
1.Spring AI 从入门到实践
Spring AI 从入门到实践 1.什么是Spring AI 2.使用Spring Boot&Spring AI快速构建AI应用程序 3.ChatClient&Chat Model简化与AI模型的交互 4.Spring AI Prompt:与大模型进行有效沟通 5.结构化输出大模型响应 6.实战:AI聊天机器人 Ben技术站关注Java技术&#x…...
2025年01月蓝桥杯Scratch1月stema选拔赛真题—美丽的图形
美丽的图形 编程实现美丽的图形具体要求: 1)点击绿旗,角色在舞台中心,如图所示; 2)1秒后,绘制一个边长为 140的红色大正方形,线条粗细为 3,正方形的中心为舞台中心,如图所示; 完整题目可点击下…...
FLASK创建下载
html用a标签 <!-- Button to download the image --> <a href"{{ url_for(download_file, filenameimage.png) }}"><button>Download Image</button> </a> 后端:url_for双大括号即是用来插入变量到模板中的语法。也就是绑…...
LDD3学习7--硬件接口I/O端口(以short为例)
1 理论 1.1 基本概念 目前对外设的操作,都是通过寄存器。寄存器的概念,其实就是接口,访问硬件接口,有I/O端口通信和内存映射I/O (Memory-Mapped I/O),I/O端口通信是比较老的那种,都是老的串口并口设备&am…...
MySQL(高级特性篇) 06 章——索引的数据结构
一、为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本教科书的目录部分,通过目录找到对应文章的页码,便可快速定位到需要的文章。MySQL中也是一样的道理,进行数据查找时,首先查看查询条件…...
【FlutterDart】MVVM(Model-View-ViewModel)架构模式例子-http版本(30 /100)
动图更精彩 MVVM(Model-View-ViewModel) 特点 Model:负责数据管理和业务逻辑。 View:负责显示数据,通常是一个UI组件。 ViewModel:负责处理用户交互,更新Model,并将数据转换为View可…...
光谱相机的光谱分辨率可以达到多少?
多光谱相机 多光谱相机的光谱分辨率相对较低,波段数一般在 10 到 20 个左右,光谱分辨率通常在几十纳米到几百纳米之间,如常见的多光谱相机光谱分辨率为 100nm 左右。 高光谱相机 一般的高光谱相机光谱分辨率可达 2.5nm 到 10nm 左右&#x…...
.Net8 Avalonia跨平台UI框架——<vlc:VideoView>控件播放海康监控、摄像机视频(Windows / Linux)
一、UI效果 二、新建用户控件:VideoViewControl.axaml 需引用:VideoLAN.LibVLC.Windows包 Linux平台需安装:VLC 和 LibVLC (sudo apt-get update、sudo apt-get install vlc libvlccore-dev libvlc-dev) .axaml 代码 注…...
【论文阅读】基于空间相关性与Stacking集成学习的风电功率预测方法
文章目录 摘要0. 引言1. 空间相关性分析2. 风电功率预测模型2.1 Stacking 集成策略2.2 基学习器2.2.1 基于机器学习算法的基学习器2.2.2 基于神经网络的基学习器2.2.3 基于粒子群优化算法的超参数优化 2.3 元学习器2.4 基于空间相关性与Stacking集成学习的风电功率预测方法 3 算…...
什么是Spring Boot 应用开发?
一、引言 在当今的软件开发领域,Java 依然占据着重要的地位,而 Spring Boot 作为 Java 生态系统中极具影响力的框架,极大地简化了企业级应用的开发流程,提升了开发效率和应用的可维护性。它基于 Spring 框架构建,通过…...
选择saas 还是源码主要考虑
公司业务规模:小型企业可能会发现SaaS提供的即用型解决方案更符合其需求,而大型企业可能需要源码以实现更高的定制性和控制权。 公司技术专长:缺乏技术团队的企业可能会倾向于使用SaaS,而那些拥有强大IT部门的企业可能更适合管理…...
【JAVA 基础 第(19)课】Hashtable 类用法和注意细节,是Map接口的实现类
Map接口:存放的是具有映射关系的键值对,键映射到值,键必须是唯一的 Hashtable 类,Map接口的实现类,键和值都不能为nullHashtable 是同步的,是线程安全的 public class MapTest {public static void main(String[] arg…...
AI时代下 | 通义灵码冲刺备战求职季
AI时代下 | 通义灵码冲刺备战求职季 什么是通义灵码使用智能编程助手备战求职靠谱吗体验心得 AI时代下,备战求职季有了不一样的方法,使用通义灵码冲刺备战求职季,会有什么样的体验? 什么是通义灵码 在开始话题之前,首…...
如何将 session 共享存储到 redis 中
文章目录 一. 分布式 session 登录1.1 什么是分布式?1.2 Session 共享1.3 为什么服务器 A 登录后,请求发到服务器 B,不认识该用户?1.4 共享存储 二. Session 共享实现Redis三. 测试session共享四. cookie设置4.1 前端4.2 后端 一.…...
智能科技与共情能力加持,哈曼重新定义驾乘体验
2025年1月6日,拉斯维加斯,2025年国际消费电子展——想象一下,当您步入一辆汽车,它不仅能响应您的指令,更能理解您的需求、适应您的偏好,并为您创造一个独特且专属的交互环境。作为汽车科技领域的知名企业和…...
第4章 Kafka核心API——Kafka客户端操作
Kafka客户端操作 一. 客户端操作1. AdminClient API 一. 客户端操作 1. AdminClient API...
Debian 设定 tomcat 定时重启
目录 背景 过程记录 1、编辑sh文件,完成重启功能 2、设置sh的可执行权限 编辑 3、设置定时任务 背景 在Debian 12系统中,原本部署了两个tomcat,结果总是遇到CPU飙升到影响应用正常使用的程度,找了很久原因还是没有找到。 …...
mysql8.0 重要指标参数介绍
MySQL 8.0 引入了许多新的功能和优化,针对性能、可扩展性、可靠性以及安全性方面做出了显著改进。为了确保 MySQL 的高效运行,了解和配置 MySQL 的一些关键指标参数非常重要。以下是 MySQL 8.0 中的一些重要参数和指标,帮助你优化数据库性能。…...
SpringMVC (2)
目录 1. RequestMapping 注解介绍 2. RequestMapping 使用 3. RequestMapping与请求方式 3.1 RequestMapping 支持Get和Post类型的请求 3.2 RequestMapping 指定接收某种请求 3.3 GetMapping和PostMapping 4. 传参 4.1 通过查询字符串传参 4.2 在 Body 中传参 4.2.1 …...
【全面解析】深入解析 TCP/IP 协议:网络通信的基石
深入解析 TCP/IP 协议:网络通信的基石 导语 你是否曾好奇,现代互联网是如何实现全球设备之间的高速、稳定和可靠通信的?无论是浏览网页、发送电子邮件,还是进行视频通话,背后都离不开 TCP/IP 协议 的支撑。作为互联网…...
图数据库 | 19、高可用分布式设计(下)
相信大家对分布式系统设计与实现的复杂性已经有了一定的了解,本篇文章对分布式图数据库系统中最复杂的一类系统架构设计进行探索,即水平分布式图数据库系统(这个挑战也可以泛化为水平分布式图数据仓库、图湖泊、图中台或任何其他依赖图存储、…...
【2024年华为OD机试】 (C卷,200分)- 反射计数(Java JS PythonC/C++)
一、问题描述 题目解析 题目描述 给定一个包含 0 和 1 的二维矩阵,一个物体从给定的初始位置出发,在给定的速度下进行移动。遇到矩阵的边缘时会发生镜面反射。无论物体经过 0 还是 1,都不影响其速度。请计算并给出经过 t 时间单位后&#…...
【微服务】SpringCloud 1-9章
1从Boot和Cloud版本选型开始说起 1.1Springboot版本选择 1.1.1git源码地址 https://github.com/spring-projects/spring-boot/releases/ 1.1.2官网看Boot版本 1.1.3SpringBoot3.0崛起 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes …...
Jmeter进行http接口并发测试
目录: 1、Jmeter设置(1)设置请求并发数(2)设置请求地址以及参数(3)添加结果数 2、启动看结果 1、Jmeter设置 (1)设置请求并发数 (2)设置请求地址…...
JavaScript语言的数据结构
JavaScript中的数据结构 引言 在编程的世界里,数据结构是处理和组织数据的重要方式。数据结构的选择往往直接影响到程序的性能和可维护性。JavaScript作为一门广泛使用的编程语言,在数据结构的设计和使用上也有其独特的特点。本文将深入探讨JavaScript…...
【数据分享】1929-2024年全球站点的逐日平均气温数据(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据!本次我们为大家带来的就是具体到气象监…...
DETRs with Collaborative Hybrid Assignments Training论文阅读与代码
关键词:协作混合分配训练 【目标检测】Co-DETR:ATSS+Faster RCNN+DETR协作的先进检测器(ICCV 2023)-CSDN博客 摘要: 在这篇论文中,作者观察到在DETR中将过少的 Query 分配为正样本,采用一对一的集合匹配,会导致对编码器输出的监督稀疏,严重损害编码器的区分特征学习…...
某国际大型超市电商销售数据分析和可视化
完整源码项目包获取→点击文章末尾名片! 本作品将从人、货、场三个维度,即客户维度、产品维度、区域维度(补充时间维度与其他维度)对某国际大型超市的销售情况进行数据分析和可视化报告展示,从而为该超市在弄清用户消费…...
码云gitee 新建仓库 添加公钥
码云gitee 新建仓库 添加公钥 文章目录 码云gitee 新建仓库 添加公钥新建仓库生成公钥管理个人公钥安全验证 码云这个网站是一个代码托管平台,在国内可以无限制的使用,在这个网站上,也可以搜索到一些github上面的内容。进入这个网站ÿ…...
SQL 基础教程 - SQL SELECT INTO 语句
通过 SQL,您可以从一个表复制信息到另一个表。 SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。 SQL SELECT INTO 语句 SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。 注意: MySQL 数据…...
《leetcode-runner》如何手搓一个debug调试器——指令系统
前文: 《leetcode-runner》如何手搓一个debug调试器——引言 《leetcode-runner》如何手搓一个debug调试器——架构 文章目录 什么是指令系统指令的组成部分leetcode-runner支持哪些指令如何解析用户输入的命令行指令识别流程 仓库地址:leetcode-runner …...
基于预共享密钥的IPsec实验
一、实验目的 (1)了解IPsec的原理和协议运行机制; (2)掌握IPsec身份认证的预共享密钥的配置; (3)掌握用Wireshark工具抓包分析IPsec数据包格式和协议流程。 二、实验设备与环境 &…...
Golang Gin系列-2:搭建Gin 框架环境
开始网络开发之旅通常是从选择合适的工具开始的。在这个全面的指南中,我们将引导你完成安装Go编程语言和Gin框架的过程,Gin框架是Go的轻量级和灵活的web框架。从设置Go工作空间到将Gin整合到项目中,本指南是高效而强大的web开发路线图。 安装…...
R语言绘图
多组火山图 数据准备: 将CSV文件同一在一个路径下,用代码合并 确保文件列名正确 library(fs) library(dplyr) library(tidyr) library(stringr) library(ggplot2) library(ggfun) library(ggrepel)# 获取文件列表 file_paths <- dir_ls(path &quo…...
Linux《Linux简介与环境的搭建》
在学习了C或者是C语言的基础知识之后就可以开始Linux的学习了,现在Linux无论是在服务器领域还是在桌面领域都被广泛的使用,所以Linxu也是我们学习编程的重要环节,在此接下来我们将会花大量的时间在Linxu的学习上。在学习Linux初期你可以会像初…...
.Net Core webapi 实现JWT认证
文章目录 需求准备创建JWT配置创建JWTService注册JWT创建中间件读取jwt的token在需要的接口上添加属性启动认证启动swagger的授权认证使用 需求 实现一个记录某个用户所有操作的功能 准备 创建你的webapi项目从nuget下载安装JWT资源包根据你的项目使用.net版本下载对应的jwt…...
SDL2:Android APP编译使用 -- SDL2多媒体库使用音频实例
SDL2:Android APP编译使用 3. SDL2:Android APP编译使用3.1 Android Studio环境准备:3.2 构建Android APP(1)方式一:快速构建APK工程(2)方式二:自定义APK工程(…...
gitignore忽略已经提交过的
已经在.gitignore文件中添加了过滤规则来忽略bin和obj等文件夹,但这些文件夹仍然出现在提交中,可能是因为这些文件夹在添加.gitignore规则之前已经被提交到Git仓库中了。要解决这个问题,您需要从Git的索引中移除这些文件夹,并确保…...
Visual Studio2019调试DLL
1、编写好DLL代码之后,对DLL项目的属性进行设置,选择待注入的DLL,如下图所示 2、生成DLL文件 3、将DLL设置为启动项目之后,按F5启动调试。弹出选择注入的exe的界面之后,使用代码注入器注入步骤2中生成的dllÿ…...
电力场景红外测温图像绝缘套管分割数据集labelme格式2436张1类别
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):2436 标注数量(json文件个数):2436 标注类别数:1 标注类别名称:["arrester"] 每个类别标注的框数&am…...