如何在IDEA中借助深度思考模型 QwQ 提高编码效率?
通义灵码上新模型选择功能,不仅引入了 DeepSeek 满血版 V3 和 R1 这两大 “新星”,Qwen2.5-Max 和 QWQ 也强势登场,正式加入通义灵码的 “豪华阵容”。开发者只需在通义灵码智能问答窗口的输入框中,单击模型选择的下拉菜单,便能轻松开启不同模型,畅享个性化服务。
阿里云发布并开源全新的推理模型通义千问QwQ-32B。通过大规模强化学习,千问QwQ-32B在数学、代码及通用能力上实现质的飞跃,整体性能比肩DeepSeek-R1。在保持强劲性能的同时,千问QwQ-32B还大幅降低了部署使用成本,在消费级显卡上也能实现本地部署。
通义灵码目前已经支持 QwQ-plus 模型,欢迎大家在【智能问答】里,选择切换模型,即可体验更小尺寸、更强性能的新模型!
目录
性能比肩全球最强开源推理模型
AI程序员
插件安装or升级
业务功能开发
跨语言编程
单元测试
通义灵码2.0 VS 1.0
最后总结
性能比肩全球最强开源推理模型
千问QwQ-32B模型向全球开源,所有人都可免费下载及商用。
千问QwQ-32B是阿里探索推理模型的最新成果。在冷启动基础上,通义团队针对数学和编程任务、通用能力分别进行了两轮大规模强化学习,在32B的模型尺寸上获得了令人惊喜的推理能力提升,应证了大规模强化学习可显著提高模型性能。
在一系列权威基准测试中,千问QwQ-32B 模型表现异常出色,几乎完全超越了OpenAI-o1-mini,比肩最强开源推理模型DeepSeek-R1:在测试数学能力的AIME24评测集上,以及评估代码能力的LiveCodeBench中,千问QwQ-32B表现与DeepSeek-R1相当,远胜于o1-mini及相同尺寸的R1蒸馏模型;在由Meta首席科学家杨立昆领衔的“最难LLMs评测榜”LiveBench、谷歌等提出的指令遵循能力IFEval评测集、由加州大学伯克利分校等提出的评估准确调用函数或工具方面的BFCL测试中,千问QwQ-32B的得分均超越了DeepSeek-R1。
今年 1 月,通义灵码 AI 程序员全面上线,同时支持 VS Code、JetBrains IDEs,是国内首个真正落地的 AI 程序员。通过前后端开发全覆盖,全程对话协作实现从 0 到 1 完成复杂编码任务,并引入多文件代码修改能力。AI 程序员体验怎么样?我们结合最新的模型,来测试一下~
AI程序员
比如这我想要 AI 程序员帮我把启动成功时打印的图案换成一个比较有意思的图案,输入我的需求:【帮我把启动成功的打印内容更换为 心的形状】。
点击【接受】之后,AI程序员会自动将更新后的内容替换到指定位置,替换之后我们再来启动项目看一下效果。
是不是很方便?AI 程序员可以直接帮助你生成你想要的,并且你根据变更内容的对比后的结果来决定是不是要接受变更。接受变更,则 AI 程序员会将需要替换的代码自动替换到指定位置,省去了我们过去需要点击通义灵码对话框右上角【复制】按钮来复制并自己手动替换代码的操作,更加方便快捷。
这里只是简单在对 AI 程序员介绍时引入一个小例子,方便大家直观观测到AI程序员的效果。下面我们来开始我们今天的操作,来让AI程序员帮我们开发一个新需求。
插件安装or升级
在进行业务功能开发之前,考虑到一些小伙伴的开发工具IDEA 可能还没有安装通义灵码插件,或者是安装的通义灵码插件还没有升级到 2.0版本,那么这里简单介绍一下IDEA 开发工具如何安装通义灵码插件。
打开 IntelliJ IDEA 开发工具,点击【File】-【Settings】,在打开的设置窗口,点击【Plugins】,在插件市场中搜索 TONGYI Lingma,找到通义灵码后单击安装。这里我已经安装过了,当然,如果你安装的是通义灵码 1.0 版本的话,那么这里会有对应的 【Update】按钮,点击升级即可。
如果在IDEA 开发工具插件市场搜不到通义灵码插件,可以采用其他的安装办法,具体的安装操作可以参考官方文档:通义灵码下载安装[1]。这里需要注意的是,安装成功之后需要重启 IDEA 开发工具,重启成功之后,会有对应的提示登录页面,按照提示登录阿里云账号即可。
业务功能开发
到这里的话,基本的准备工作也就完成了,下面我们就开始今天的业务需求开发。
业务需求
有这样一款 CMS 管理系统,那么我们想要给这个 CMS 管理系统增加一个公告管理的功能,需要这个公告管理功能可以新增,修改,删除,发布,取消发布公告,在公告管理列表页可以点击公告标题跳转到公告详情页等。整体的需求就是这么多,具体的细节在开发过程中再优化。
关于业务需求的实现,通常会按照如下的流程进行:
设计表结构--功能开发--本地测试(单元测试)--测试环境部署测试--功能上线
本文主要是讲解基于AI程序员的功能代码实现,因此这里主要进行到本地测试(单元测试)阶段,后面的测试环境及功能上线暂不涉及。
设计表结构
通常情况下,表结构是我们根据具体的业务功能,设计具体的字段及字段属性,那么这里我们来使用AI程序员设计一下表结构看下体验如何。
输入我们的具体需求:【帮我设计一张表 公告相关,主要包含字段:公告标题、公告内容、发布状态、发布时间、是否有效、创建时间、创建人、更新时间、更新人】,以下是具体的生成效果,为了表名统一,我继续提出需求更改了表名:【更改表名为 sys_cms_notice】。
将生成的表结构复制到 mysql 命令执行工具 navicat 里面新建查询执行建表语句,执行成功,这说明 AI 程序员生成的 mysql 表结构没有任何问题,不用人工修改就可以直接使用。
功能开发
下面我们再继续来生成具体的业务逻辑,包括 controller控制层、service接口层、service实现类、mapper层、domain实体类、mybatis的xml语句,那么我们将需要的内容整合后给出我们的需求:
【帮我生成 sys_cms_notice 表的controller控制类、service接口类、service实现类、domain实体类、mapper接口类、mybatis的xml查询文件,需要包含 新增、修改、删除、发布功能】
在AI程序员生成具体的代码之后,我们可以在工作区通过点击切换具体的文件名来查看文件变更内容,这里可以看到我们需要的新增、修改、删除、发布功能,以及默认的列表查询功能都有了,那么我们点击【接受】接受所有文件。
点击右侧顶部的【接受】可以一键接受所有生成的文件,但是接受的文件并不是放在我们项目现有结构对应的位置,因为这里也暂时无法指定接受后选择的文件夹目录,这一点不太方便,但是还好,只是需要人工再调整一下位置就可以。因此可以接受后再手工调整一下位置就可以了,自动接受后的结构如图:
按照上图的目录结构将具体的代码移动到对应的位置后,我们再次生成这次功能需要用到的前端页面,其实对于Java 开发者来说,画页面往往是最费劲的,毕竟不是专业的前端,如果AI程序员可以直接生成前端的新增页面、修改页面、列表页面就会方便很多了,开发效率也会大大提升。最终使用【基于 sys_cms_notice 生成 新增、修改、列表 的 html 页面】,完成了页面的生成。
这里需要注意,在生成页面的时候,AI 程序员会同时生成一些不是我们想要的内容,比如工作区的 mapper.xml 、java 文件这些,不是本次生成的内容不要【接受】否则会让原来已经接受的文件乱了。
逐个接受我们需要的三个页面之后,同样的将页面调整到规定的目录文件夹下。但是这里生成的页面,跟实际项目中用到的统一风格的页面有一定的差异,考虑到为了页面风格的统一,那么我可以采取先选择参考文件,然后基于参考文件的方式来生成页面。
比如这里我首先生成公告管理的 add.html,那么我选择项目中原有 post 岗位 的add.html ,这里交给大家一个小窍门,可以点击选择文件的【+】,在弹出的搜索框中输入需要搜索的文件名,然后选择文件,同样的方法我在选择我们生成的公告管理的 domain 实体类,然后输入需求:【参考这个 add 页面生成一个 syscmsnotice 对象的 add 页面】。
这个时候再看,有了参考页面之后生成的新的 add.html 页面内容就和项目原来 add 页面的结构和风格比较一致了,这样也省去了再次重新调整页面风格的耗时。
同样的办法,我们重新更换参考页面,这次参考页面改为 edit.html ,同样的选择公告管理的 domain 实体类对象 SysCmsNotice.java 作为参考来生成 公告管理的 edit 页面,输入我们的需求:【参考这个 edit 页面生成一个 syscmsnotice 实体类的 edit 页面】。
等待edit 页面生成成功之后,我们再次接受当前 edit.html 页面,并将页面调整到 正确的目录下。
同样的方法,我们选择需要参考的列表页面 post.html,选择我们的公告管理 domain 下的实体类,输入需求:【参考 post 页面生成一个 syscmsnotice 实体类的 list 页面】,在生成的过程中也可能会遇到异常的情况,比如【生成过程超时】。
那么遇到这种情况的解决方案就是重新尝试一次,再次尝试一次果然可以正常返回了,同样的操作,接受当前页面并转移到正确的目录下,然后就可以进行后面的步骤了 。
其实到这里,整个公告管理的功能基本上都已经开发完了,剩下的就是配置菜单,然后进行一些功能或者页面的优化调整,后面将继续进行功能优化。
功能优化
配置菜单的步骤这里不再细说,不同的项目配置菜单的方式也不太一样,另外这也不属于AI 程序员关注的内容,AI程序员主要是关注功能开发。
这里我们来逐个验证我们的AI程序员帮我们生成的类的代码是否符合业务需求,那么我们先来看一下controller 控制层的代码。
这里可以看到AI程序员确实帮我们生成了我们需要的新增、修改、删除、发布功能,但是没有生成页面跳转方法,也就是说如果想要新增数据,首先需要一个新增页面的跳转方法,然后才会是新增数据的提交,这里我参照上面页面的方式,同样选择一个项目中现有的 controller 方法作为参考来补充跳转页面的方法,提示词:【参考 SysPostController 帮我给 SysCmsNoticeController 补充 新增 、修改 、列表页面的跳转方法】。
这里需要说明的是,AI 程序员虽然参考现有的 controller 生成了页面跳转代码,但是AI程序员不会从整体把控,这里的页面路径前缀是不对的,需要人工修改。
另外就是最初生成的方法的返回与当前已有工程的风格也不一致,也是需要修改完善的地方。
并且还触发了一个代码规范的问题【不建议将代码注释写在代码后面,而应该是换行写】,人工处理掉小问题后,对于缺失的根据 id 查询数据的方法,可以通过快捷键的方式快速补全。随后我们启动项目查看具体的页面跳转效果。
页面效果
这里启动项目的时候发生了错误,那么选中具体的错误原因,右键【通义灵码一键解释】可以看到通义灵码对于当前启动异常的问题分析,我们根据分析来进行调整后就可以重新启动。
AI 程序员生成代码并且调试的过程会需要一些耐心,如果是新项目新功能,可能采纳率会高一些。
启动之后大概也就是这样的效果页面:
体验建议
对于通义灵码2.0,相对于过去的通义灵码1.0版本来说,对于代码智能生成,以及对于自然语言的理解准确度都有了很大的提升。并且可以根据你的需求描述来生成对应的sql 表结构,以及基础的 controller 层、service层 、dao层、domain 实体类层生成代码,生成的代码准确度也有95%。
在这个过程中,AI程序员帮我生成的代码是没有问题,但是如果是做版本迭代开发的,AI程序员生成代码的能力是OK 的,生成的代码符合逻辑,不会报错。但是还需要看具体的业务场景。就像我生成的代码,没有页面跳转方法一样。同样在生成html 页面时,第一次生成的也确实是符合语法的页面,但是与现有的系统代码风格,页面风格完全不一样,不能直接用。而是要采用第二次基于当前项目中其他页面来生成当前的页面,这样才能有一个大致的可以用的页面。
我的感受是,AI程序员对于新功能生成的代码,如果放到现有的项目架构中,和现有的项目风格可能会不太一致,并且有的时候还不能直接用,就像生成的 controller 方法中没有页面跳转方法一样。如果当前项目的基础代码有直接的代码生成工具,建议还是使用代码生成工具来生成,更能符合当前工程项目的风格和功能。因此我在这里的感悟时,基于已有工程进行功能迭代的话,不建议进行大块的代码生成,而是可以基于部分代码的生成,这样代码生成的准确度会更高一些,也能更符合你的业务场景需求。
跨语言编程
个人作为一个 Java 开发者,前端页面的编写虽然也会用到,但是毕竟不是专业的。这里说的跨语言编程其实就是给当前的新增和修改页面增加一个可以调用百炼服务平台 DeepSeek 大模型服务生成公告内容,并将生成的公告内容放在编辑器中的操作,最后可以正常的保存到数据库。那么这里我首先在页面新增 add 一个字段,作为关键词的输入框,并且增加一个按钮,点击则调用百炼服务平台 DeepSeek 大模型来获取返回的内容放入公告中。
这里我对AI 程序员输入我的需求:【参考选中部分 帮我重新生成一个字段输入框 用 多行文本的 文本框下面增加一个按钮 按钮名称为生成 选中部分不要变更】。
这里是AI 程序员基于我的需求生成的内容,先不说具体的内容,我直接来选择接受,看下以页面效果怎么样。选择接受后可以看到页面报错了,这个是因为在在生成多行文本的输入框时,多生成了一个基于上面参考部分代码的一个输入框,这里去掉之后再部署页面尝试。
最后实际是在现有的add 页面代码上增加如下代码:
<div class="form-group"> <label class="col-sm-2 control-label">关键词prompt:</label><div class="col-sm-10"><textarea id="multiLineText" name="multiLineText" class="form-control" rows="4"></textarea><button type="button" class="btn btn-primary" style="margin-top: 10px;" onclick="genera();">生成</button></div>
</div>
下面我们再继续生成按钮的js 方法,同样的原理,选中可以参考的 ajax 代码然后利用通义灵码 2.0 的AI 程序员生成一个调用接口生成公告内容的方法,同时将生成的内容放在公告内容字段。
这里提出需求:【参考这段代码新生成一个js 方法,方法名是 gerena ,通过调用后端接口并将返回的内容放在 公告内容字段中】。
下面我们回到后端,补充对应的生成公告内容的方法,这里我们需要基于阿里云百炼服务平台的 DeepSeek-R1 调用来生成公告内容,登录百炼服务平台[2]。
首先获取API-KEY
然后选择【模型广场】,这里选择 【DeepSeek】-【DeepSeek-R1】
点击【API调用示例】在跳转页面找到 HTTP 调用,复制HTTP 调用的示例代码,放在AI 程序员帮我们生成一个调用的方法。
在通义灵码2.0 的AI程序员输入我们的需求,生成之后选择接受后,会在指定的位置生成我们具体的内容,输入需求内容:
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions -H "Authorization: Bearer $DASHSCOPE_API_KEY" -H "Content-Type: application/json" -d '{ "model": "deepseek-r1", "messages": [ { "role": "user", "content": "9.9和9.11谁大" } ] }' 生成java 示例代码
这里直接选择接受代码,接受代码之后我们在前端页面发起调用,但是这里对于这种富文本输入框,本身不太了解,也不会用,在 js 代码赋值的时候一直有问题,无法赋值,这里可以看到 console 控制台已经打印了 DeepSeek-R1 的返回内容,但是公告内容富文本框里面没有任何内容。
在尝试了多种赋值方式,包括 val() attr() = 等多种赋值方式没有成功,于是想到可以来问一下 AI 程序员,于是将js 代码中的赋值语句赋值到AI 程序员,选中赋值语句,提出问题:【$('.summernote').summernote('code') 如何赋值】 这时可以看到AI 程序员的具体分析以及提供的赋值语句,我直接选择接受后再尝试。
给富文本框赋值的操作终于成功了。
下面我提供一下新增页面【生成】 按钮的 js方法源码,以及生成按钮点击时调用的后端请求 阿里云百炼大模型服务平台 DeepSeek-R1 模型放回文本内容的代码都放在这里,有需要的可以复制使用。
【生成】按钮前端js 方法
// 新增 genera 方法function genera() {var multiLineText = $("#multiLineText").val();if (!multiLineText) {$.modal.alertWarning("请输入关键词prompt。");return;}$.ajax({type: "POST",url: ctx + "system/notice/generateContent",data: { multiLineText: multiLineText },dataType: 'json',success: function(result) {if (result.code == web_status.SUCCESS) {console.log(result.data);$('.summernote').summernote('code', result.data);} else {$.modal.alertError(result.msg);}},error: function(error) {$.modal.alertWarning("生成内容失败。");}});}
调用阿里云百炼大模型服务平台 的 DeepSeek-R1 的后端调用方法 system/notice/generateContent 的详细内容。
@PostMapping("/generateContent")@ResponseBodypublic AjaxResult generateContent(String multiLineText) {String apiKey = "sk-f58bf46111222233355667777e18295d"; // 替换为实际的 Dashscope API KeyString url = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions";// 构建请求体JSONObject requestBody = new JSONObject();requestBody.put("model", "deepseek-r1");JSONArray messages = new JSONArray();JSONObject message = new JSONObject();message.put("role", "user");message.put("content", multiLineText);messages.add(message);requestBody.put("messages", messages);// 发送 POST 请求并处理响应try {HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();connection.setRequestMethod("POST");connection.setRequestProperty("Authorization",apiKey);connection.setRequestProperty("Content-Type", "application/json");connection.setDoOutput(true);try (OutputStream os = connection.getOutputStream()) {byte[] inputBytes = requestBody.toString().getBytes(StandardCharsets.UTF_8);os.write(inputBytes, 0, inputBytes.length);}// 获取响应int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {try (BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {StringBuilder response = new StringBuilder();String responseLine;while ((responseLine = br.readLine()) != null) {response.append(responseLine.trim());}JSONObject parse = (JSONObject) JSON.parse(response.toString());JSONArray choices = parse.getJSONArray("choices");StringBuilder sb = new StringBuilder();for (Object choice : choices) {JSONObject jsonObject = (JSONObject) choice;JSONObject message1 = jsonObject.getJSONObject("message");String content = message1.getString("reasoning_content");sb.append(content);}System.out.println(sb.toString());return AjaxResult.success("success",sb.toString());}} else {return AjaxResult.error("Error: " + responseCode);}} catch (Exception e) {e.printStackTrace();return AjaxResult.error("Exception: " + e.getMessage());}}
}
体验感受
对于通义灵码2.0 的跨语言编程能力,真的是太意外了,出乎意料的好用。首先是生成的html 新的属性输入框,生成之后就可以直接用,符合我们的业务需求。在说对于输入框下面的生成按钮的方法,也是生成之后可以直接使用,只是在具体给富文本框赋值的细节没有考虑到,刚开始我一直无法赋值,后来多次尝试,就要放弃的时候试着问了一下 AI 程序员,没想到一次解决,出乎意料的惊喜。
再说后端基于百炼服务平台的模型广场 DeepSeek-R1的API示例中的 HTTP 调用示例生成 java 调用示例,也是一次生成可用,几乎没有什么改动,这些都特别好,真的是可以大大提高开发效率的。
单元测试
作为开发者来说,单元测试是保证代码功能性,保证代码健壮性的必要手段,对于新增的代码文件或者新增的 方法,我们都可以通过单元测试的方法来验证具体的功能是否满足我们的需求。比如这里我选择 今天有改动的文件 SysNoticeController 类,然后输入我们的需求:【生成单元测试】,AI 程序员会根据我们的需求。
在生成单元测试进行中的时候可能会遇到这样的情况,比如环境检查失败,那么我们可以点击具体失败项目后的【如何修复】,AI程序员会为我们提供具体的修复方案,按照修复方案完善后就可以再次进行 生成单元测试的操作了。选择需要生成单元测试的文件,输入生成单元测试。
错误排查
在日常开发过程中,肯定会遇到各种报错,或者是没有报错但是也没有获取正常数据,就像上面我们看到的一样,一直无法给富文本框正确赋值。我们可以直接询问AI程序员如何给对应的属性赋值。
或者是当我们在后台控制台看到错误信息时,我们同样可以将错误信息复制来询问 AI程序员如何解决。就像我们在上面增加了方法之后启动报错,可以根据具体的错误信息来询问 AI 程序员如何处理,最后也可以很快得到自己想要的答案。
AI程序员对于错误排查及修复方面,可以说,只要你的错误信息详细,或者是你的描述详细,那么你都可以得到想要的结果。但是也有一种情况AI程序员没办法,那就是这个错误本身不会有什么错误信息,但是又不是正确的情况,这种情况不好描述自己想要怎么做,或者说自己不知道怎样询问AI 程序员才能得到自己想要的结果,这种情况下可能不太好处理。
通义灵码2.0 VS 1.0
对于通义灵码1.0版本,个人是从公测期开始申请使用的,整体上使用的感觉是功能比较简单,代码智能生成以及单元测试、自然语言问答等的功能都比较初级,在代码智能补全功能上,有一些块级的代码采纳率或者说生成的准确率并不是那么理想。
那么通义灵码2.0相对于 1.0 ,开放支持多款模型,编程性能和效率均实现大幅提升,代码生成速度相较于过去明显感觉快很多。
并且丰富了支持的上下文类型,包括 #file、#codeChanges、#gitCommit、#teamDocs 和 #image 等,开发者可以灵活选择单个或多个文件进行提问,或针对工程的当前代码变更、Commit 进行提问和代码审查,显著提升问题解决的效率和准确性。
另外还新增 AI 程序员,具备多文件代码修改和使用工具的能力,可以帮助开发者端到端地完成一个编码任务,如需求实现、问题解决、单元测试用例生成、批量代码变更等,本文主要就是基于 AI程序员来进行的操作,包括基于已有工程的功能开发、跨语言编程、批量单元测试、错误排查修复等。
最后总结
到这里,整个关于通义灵码2.0 的 AI 程序员的测评告一段落,整体上来说,AI 程序员基于已有工程的功能开发,或者说新功能迭代,整体上代码的生成准确度是不错的。只是生成的代码和现有工程的结构,风格,使用的各种jar 包的引入或者页面js 的导入往往不太一致,想要准确生成的话,还需要选择参考文件,然后告诉AI程序员 新生成一个这样的页面或者说方法,这样的话就能生成符合当前工程结构和风格的文件了。
对于跨语言编程来说,本文用的虽然不多,也就是在页面生成了一个同样风格的输入框,以及按钮的点击事件方法,以及后端的接口调用方法,但是体验感拉满。对于页面不显示的问题,也是通过 AI 程序员一次解决,特别好。后端基于百炼服务平台中 API 示例的HTTP 版本生成的 Java 示例版本也是生成就可以用,准确度,代码采纳率 99%。这点特别满意。
对于错误排查,这个在功能开发的过程中也用到过,总的来说错误排查及修复,也是很不错的功能,只要你能给出具体的错误信息,AI程序员就能帮你解决你的问题。但是有一点,对于自己无法描述的问题,模糊的咨询AI程序员,往往也不是太能得到准确回答。不过好在通义灵码2.0支持上下文了,也是可以通过一点点的提出问题逐渐靠近正确的描述的,总体还是很好的。
相关链接:
[1]通义灵码下载安装:
https://lingma.aliyun.com/lingma/download
[2]测评原文:https://developer.aliyun.com/article/1654771
相关文章:
如何在IDEA中借助深度思考模型 QwQ 提高编码效率?
通义灵码上新模型选择功能,不仅引入了 DeepSeek 满血版 V3 和 R1 这两大 “新星”,Qwen2.5-Max 和 QWQ 也强势登场,正式加入通义灵码的 “豪华阵容”。开发者只需在通义灵码智能问答窗口的输入框中,单击模型选择的下拉菜单&#x…...
探索 Ollama:开源大语言模型平台的无限可能
在人工智能的快速发展进程中,大语言模型扮演着至关重要的角色。Ollama 作为一个开源的大语言模型平台,正逐渐崭露头角,为广大开发者和爱好者带来了全新的体验。它允许用户在本地环境中轻松地运行、创建和共享大型语言模型,极大地降…...
clickhouse多条件查询
安装包 infi.clickhouse-orm 2.1.3建表 create table test.test (name String,age UInt32,birthday Date32,sex UInt8 ) engineMergeTree() order by (name,sex)insert into test.testvalues (aa,34,1991-01-19,1), (cc,30,1994-01-19,0), (haha,31,1994-02-19,0);多条件查询…...
信息的度量
系列文章目录 文章目录 系列文章目录一、离散消息的信息量1.自信息的引入2.自信息定义 二、离散信源的平均信息量---信息熵1.信息熵定义 一、离散消息的信息量 1.自信息的引入 通信的本质是传递信息,为了定量表征信息的度量,引入自信息量的概念。事件包…...
ffmpeg+QOpenGLWidget显示视频
一个基于 FFmpeg 4.x 和 QOpenGLWidget的简单视频播放器代码示例,实现视频解码和渲染到 Qt 窗口的功能。 1)ffmpeg库界面,视频解码支持软解和硬解方式。 硬解后,硬件解码完成需要将数据从GPU复制到CPU。优先采用av_hwf…...
从零开始实现 C++ TinyWebServer 项目总览
文章目录 引言Web Server 概念如何实现高性能 WebServer?基础网络通信I/O 多路复用技术并发处理事件处理模式其他优化策略(未实现) 主要功能模块BufferLogSqlConnectPoolHttpRequestHttpResponseHttpConnectHeapTimerWebServer 引言 TinyWeb…...
opencv无法读取的图像,利用pil和numpy进行修复
代码总结 这段代码的功能是遍历指定文件夹下的所有图像文件,并修复可能存在的格式问题,然后覆盖原图像。 代码解析 设置输入文件夹路径(input_folder)。遍历文件夹中的所有文件,筛选出 .jpg、.jpeg、.png、.webp 格式…...
Redis分布式寻址算法
分布式寻址算法是分布式系统中用于确定数据应该存储在哪个节点的算法。这些算法对于实现高效的数据存取、负载均衡和系统扩展性至关重要。以下是几种常见的分布式寻址算法的解释: 1. Hash 算法 原理:通过哈希函数将数据的键(Key)…...
CUDA 学习(1)——GPU 架构
典型 CPU 架构与 GPU 架构对比: 上图中绿色部分是计算单元,GPU 有更多的计算核心,计算能力更强。黄色部分是控制单元,CPU 中有大量的控制单元,现代 CPU 的晶体管越来越复杂,除了计算,还要实现乱…...
5个视角、5等级及10档次:《数字化转型领域 参考架构》国家标准正式出台
近日,国家标准GB/T 45341-2025《数字化转型管理 参考架构》正式出台。这是我国研制的首个数字化转型领域基础架构类国家标准,对数字化转型领域标准化建设具有重大意义。 关注WeChat Subscription Account【智慧城市指北】,回复关键字“20250…...
2.4 隐函数及由参数方程确定的函数求导
1.隐函数求导 1.1 例题 2. 参数方程确定的函数求导...
PROE 与 STL 格式转换:开启 3D 打印及多元应用的大门
在 3D 设计与制造的复杂生态中,将 PROE 格式转换为 STL 格式绝非无端之举,而是有着深厚且多元的现实需求作为支撑。 一、文件格式介绍 (一)PROE 格式 PROE 作为一款参数化设计软件,采用基于特征的参数化建模技术…...
【Bug记录】node-sass安装失败解决方案
【Bug记录】node-sass 安装失败解决办法 前言 很多小伙伴在安装 node-sass 的时候都失败了,主要的原因是 node 版本和项目依赖的 node-sass 版本不匹配。 解决方案 解决方案:把项目中的 node-sass 替换为 sass,其实 node-sass 已被官方弃…...
三、Python高级特性
Python中的高级数据结构:队列、栈、双端队列、堆与优先队列 在Python编程中,高级数据结构为我们提供了强大而灵活的工具来处理各种复杂的数据存储和操作需求。本文将详细介绍队列、栈、双端队列、堆与优先队列这几种常见的高级数据结构及其在Python中的…...
使用 OpenCV 拼接进行图像处理对比:以形态学操作为例
图像处理在计算机视觉中起着至关重要的作用,而 OpenCV 作为一个强大的图像处理库,提供了丰富的函数来实现各类图像处理任务。形态学操作(Morphological Operations)是其中常用的技术,尤其适用于二值图像的处理。常见的…...
OPENCV数字识别(非手写数字/采用模板匹配)
这篇文章的重点在于 模板匹配 的使用。模板匹配是计算机视觉中的一项基本技术,它通过比对输入图像与模板图像的相似度,来进行目标识别。对于数字识别,特别是标准数字的识别,模板匹配非常有效。 请看效果: 文章结构 …...
【STM32】知识点介绍一:硬件知识
文章目录 一、电源引脚简介二、电平信号三、电路分析 一、电源引脚简介 VCC、GND、VDD和VSS是电子电路中常见的术语,代表着不同的电源引脚或电压。 VCC(Voltage at the Common Collector):VCC是指集电极(Collector&am…...
基于SpringBoot的电影售票系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
记录我的ICME2025论文之旅:困顿与收获
人生第一次中B会,还是在课业繁重的大三上(有点说法~) “在最黑暗的时刻,总有一束光为你指引前行。” ——记录这段难忘的历程 今年的ICME投稿量创下新高,录取率却跌至20多%,并且首次加入了rebuttal…...
FreeRTOS学习(九):中断管理
FreeRTOS学习(九):中断管理 文章目录 FreeRTOS学习(九):中断管理前言一、中断优先级分组设置特点中断优先级分组设置 二、FreeRTOS中断优先级配置PendSV和SysTick中断优先级配置 三、中断相关寄存器PRIMASK…...
07-项目中应提前准备下一阶段计划
在项目当前版本的功能开发任务都完成之后,人就空出来了,通常这个时候,项目负责人还有很多繁琐的工作要做,比如项目内部验收、提交测试申请和版本发布等等。为了给项目成员找事情做,就匆匆忙忙安排下个版本的任务&#…...
【C语言】多进程/多线程
【C语言】多进程/多线程 参考链接多进程/多线程服务器1. 多进程服务器2. 多线程服务器 结语参考链接 参考链接 c 中文网 菜鸟 c 多进程/多线程服务器 多进程和多线程是常用的并发编程技术。它们都允许程序同时执行多个任务,提高了系统的资源利用率和程序的运行效率…...
GaussDB数据库表设计与性能优化实践
GaussDB分布式数据库表设计与性能优化实践 引言 在金融、电信、物联网等大数据场景下,GaussDB作为华为推出的高性能分布式数据库,凭借其创新的架构设计和智能优化能力,已成为企业核心业务系统的重要选择。本文深入探讨GaussDB分布式架构下的…...
全星FMEA软件系统——助力汽车部件行业高效管控质量风险
全星FMEA软件系统——助力汽车部件行业高效管控质量风险 在汽车部件行业,产品质量与可靠性直接影响整车安全性与市场竞争力。如何高效管理失效风险、优化控制计划并确保流程合规性,成为企业核心挑战。 全星FMEA软件系统应运而生,专为汽车部…...
文件I/O--C++的文件操作
一、打开文件,从文件中读取、写入文件 从文件中读取数据: #include<fstream> //fstream File stream:文件流 #include<iostream> //fstream包含了 iostream,所以这句可以省略,现在不能了 using namespace std;i…...
Docker-Compose部署 EasySearch 异常问题排查
近期将原本运行在 macOS 上的 EasySearch、Console 和 Coco-server 等服务迁移至群晖 NAS 平台。在迁移过程中遇到了EasySearch容器无法正常启动或运行中意外终止的问题。本文记录了这些问题的具体表现及解决方案,旨在为后续类似部署提供参考。 基础部署配置 以下…...
秒杀业务优化之从分布式锁到基于消息队列的异步秒杀
一、业务场景介绍 优惠券、门票等限时抢购常常出现在各类应用中,这样的业务一般为了引流宣传而降低利润,所以一旦出现问题将造成较大损失,那么在业务中就要求我们对这类型商品严格限时、限量、每位用户限一次、准确无误的创建订单,…...
【CGE】社会核算矩阵构建(一):SAM基本结构
【CGE】社会核算矩阵构建(一):SAM基本结构 社会核算矩阵构建(一):SAM基本结构一、SAM的概念和基本特点二、SAM的基本结构1.开放经济体的SAM表结构2.SAM表各账户的主要核算内容(1)社会…...
蓝桥杯算法实战分享:算法进阶之路与实战技巧
引言 蓝桥杯作为国内极具影响力的程序设计竞赛,为众多编程爱好者和专业人才提供了展示自我的舞台。参与蓝桥杯不仅能检验自身编程水平,还能拓宽技术视野,为未来职业发展积累宝贵经验。本文将结合历年真题与参赛经验,全面分享蓝桥…...
自定义minshell
我们在前面已经了解了进程的概念,以及如何进行进程控制。接下来我们就使用这些知识,来自己实现一个shell即命令行解释器!!! 一.打印命令行提示符 我们在使用Linux操作系统时,一登陆就会启动bash进程——命…...
坦克大战(c++)
今天我给大家分享一个c游戏。 废话不多说,作品展示: #include <stdio.h> #include <windows.h> #include <time.h> //里规格:长39*278 (真坐标)(假坐标宽为39) 高39 //外规格:长…...
《可爱风格 2048 游戏项目:HTML 实现全解析》
一、引言 在如今的数字化时代,小游戏以其简单易上手、趣味性强的特点深受大家喜爱。2048 游戏作为一款经典的数字合并游戏,拥有庞大的玩家群体。本文将详细介绍一个用单文件 HTML 实现的可爱风格 2048 游戏项目,它不仅具备传统 2048 游戏的基…...
C++ 利用类模板实现一个数组类封装
案例描述: 实现一个通用的数组类,要求如下: 可以对内置数据类型以及自定义数据类型的数据进行存储 将数组中的数据存储到堆区 构造函数中可以传入数组的容量 提供对应的拷贝构造函数以及operator防止浅拷贝问题 提供尾插法和尾删法对数组…...
【AndroidRTC-11】如何理解webrtc的Source、TrackSink
Android-RTC系列软重启,改变以往细读源代码的方式 改为 带上实际问题分析代码。增加实用性,方便形成肌肉记忆。同时不分种类、不分难易程度,在线征集问题切入点。 问题1:如何理解VideoSource、VideoTrack&VideoSink三者的关系…...
数据类设计_图片类设计之9_图标类设计_C++实战_(前端架构)
前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 前面写了矩阵图形类对象和像素图形类对象,本贴通过一个快捷方式图标类的设计,来继续数据类型设计的一些讨论. 快捷方式图标是这个样子: 属性分析 首先,快捷方式…...
fuse性能关键参数entry_timeout
entry_timeout 是 FUSE(Filesystem in Userspace)中的一个选项,用于控制目录项缓存的有效期。具体来说,它决定了文件系统在多长时间内缓存目录项(如文件名到 inode 的映射),从而影响文件系统的性…...
3. 轴指令(omron 机器自动化控制器)——>MC_ResetFollowingError
机器自动化控制器——第三章 轴指令 13 MC_ResetFollowingError变量▶输入变量▶输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启动运动指令▶多重启运动指令▶异常 MC_ResetFollowingError 对指令当前位置和反馈当前位置的偏差进行复位。 指令名称FB/FUN图形表现S…...
Spring Boot项目快速创建-开发流程(笔记)
主要流程: 前端发送网络请求->controller->调用service->操纵mapper->操作数据库->对entity数据对象赋值->返回前端 前期准备: maven、mysql下载好 跟学视频,感谢老师: https://www.bilibili.com/video/BV1gm4…...
[操作系统] 进程间通信:进程池的实现
引言 在学习操作系统时,进程间通信(IPC)和多进程管理是核心内容之一。进程池是一种常见的模式,通过预先创建一组工作进程来处理任务,避免频繁创建和销毁进程带来的开销。本文将详细剖析一个用 C 实现的进程池代码&…...
信号相关的程序
1、不断打印*换行之后响应信号,然后循环 #include <stdio.h> #include <string.h> #include <signal.h> #include <stdlib.h> #include <unistd.h> static void alrm_handler(int signo) {write(1,"!",1); }int main( in…...
【计算机网络】-计算机网络期末复习题复习资料
一、计算机网络体系结构(800字) 1. OSI参考模型 七层结构:物理层→数据链路层→网络层→传输层→会话层→表示层→应用层 各层核心功能: 物理层:比特流传输(如RJ45、光纤接口) 数据链路层&…...
Linux 基础入门操作 第十二章 TINY Web 服务器
1 服务器基础架构 1.1 背景知识 Web 服务器使用 HTTP 协议与客户端(即浏览器)通信,而 HTTP 协议又基于 TCP/IP 协议。因此我们要做的工作就是利用 Linux 系统提供的 TCP 通信接口来实现 HTTP 协议。 而 Linux 为我们提供了哪些网络编程接口…...
L2-052 吉利矩阵
L2-052 吉利矩阵 - 团体程序设计天梯赛-练习集 这道题打表 打表部分被注释了 n4 [0,0,282, 2008, 10147, 40176, 132724, 381424, 981541, 2309384] n3 [0,0,21, 55, 120, 231, 406, 666, 1035, 1540] n2 [0,0,3, 4, 5, 6, 7, 8, 9, 10] l,n map(int,input().split()) if…...
BKA-CNN-LSTM、CNN-LSTM、LSTM、CNN四模型多变量时序光伏功率预测,附模型研究报告
BKA-CNN-LSTM、CNN-LSTM、LSTM、CNN四模型多变量时序光伏功率预测,附模型研究报告 目录 BKA-CNN-LSTM、CNN-LSTM、LSTM、CNN四模型多变量时序光伏功率预测,附模型研究报告预测效果基本介绍程序设计参考资料 预测效果 基本介绍 BKA-CNN-LSTM、CNN-LSTM、…...
【读书笔记】华为《从偶然到必然》
note 华为的成功并非偶然,而是通过IPD体系、投资组合管理、平台战略等系统性工具,将研发投资转化为可持续的商业竞争力。书中强调的“管理即内部因素”理念,揭示了企业规模扩张与管理能力匹配的深层规律,为高科技企业提供了可借鉴…...
flink广播算子Broadcast
文章目录 一、Broadcast二、代码示例三.或者第二种(只读取一个csv文件到广播内存中)提示:以下是本篇文章正文内容,下面案例可供参考 一、Broadcast 为了关联一个非广播流(keyed 或者 non-keyed)与一个广播流(BroadcastStream),我们可以调用非广播流的方法 connect(),…...
实时图像处理:让你的应用更智能
I. 引言 实时图像处理在现代应用中扮演着重要的角色,它能够使应用更加智能、响应更加迅速。本文将深入探讨实时图像处理的原理、部署过程以及未来的发展趋势,旨在帮助开发者更好地理解如何将实时图像处理应用于他们的项目中。 II. 实时图像处理的基础概…...
深入理解 Linux 基础 IO:从文件操作到缓冲区机制
亲爱的读者朋友们😃,此文开启知识盛宴与思想碰撞🎉。 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 在 Linux 系统中,文件输入输出(IO)…...
汇编语言高级编程技巧:从基础到进阶
前言 汇编语言作为底层编程语言,直接操作硬件,执行效率高,但编写复杂逻辑时往往显得繁琐。通过使用汇编伪指令和宏,我们可以实现类似于高级语言的结构,如条件判断、循环、结构体和函数等,从而提升代码的可读…...
Android Studio常见问题解决
一、环境配置问题 1. 安装失败 问题描述:在安装过程中,可能会遇到硬件要求不符合、网络问题、安装包损坏、权限不足或安装路径问题等,导致安装失败。 解决方法: 硬件要求:确保设备满足最低硬件要求。 网络问题&…...