如何在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…...
C++11QT复习 (四)
Day6-1 输入输出流运算符重载(2025.03.25) 1. 拷贝构造函数的调用时机 2. 友元2.1 友元函数 3. 输入输出流运算符重载3.1 关键知识点3.2 代码3.3 关键问题3.4 完整代码 4. 下标访问运算符 operator[]4.1 关键知识点4.2 代码 5. 函数调用运算符 operator…...
LVS的 NAT 模式实验
文章目录 目录 文章目录 概要 IP规划与题目分析 实验步骤 一、nginx配置(rs1、rs2、rs3) 二、LVS配置 三、客户端配置 四、防火墙和selinux配置 实验结果 痛点解答 概要 LVS/NAT lvs/nat网络地址转换模式,进站/出站的数据流量经过分发器(IP负…...
【MacOS】2025年硬核方法清理MacOS中的可清除空间(Purgeable space)
背景 MacOS使用一段时间之后,硬盘空间会越来越少,但自己的文件没有存储那么多,在储存空间中可以发现可用空间明明还剩很多,但磁盘工具却显示已满,见下图。 尝试解决 df -h 命令却发现磁盘已经被快被占满。使用du命…...
ue材质学习感想总结笔记
2025 - 3 - 27 1.1 加法 对TexCoord上的每一个像素加上一个值,如果加上0.1,0.1, 那么左上角原来0,0的位置变成了0.1,0.1 右上角就变成了1.1,1.1,那么原来0,0的位置就去到了左上角左上边,所以图像往左上偏移。 总而言…...
Go 语言 sync 包使用教程
Go 语言 sync 包使用教程 Go 语言的 sync 包提供了基本的同步原语,用于在并发编程中协调 goroutine 之间的操作。 1. 互斥锁 (Mutex) 互斥锁用于保护共享资源,确保同一时间只有一个 goroutine 可以访问。 特点: 最基本的同步原语&#x…...
约束文件SDC常用命令
约束文件SDC常用命令 定义时钟create_clock -name CLK-period 2 [get_ports_clk]告诉工具主时钟周期是2ns(频率500MHz),从clk端口输入 输入信号延迟set_input_delay 0.5 -clock CLK [get_ports data_in]数据进芯片前,外部电路已消耗0.5ns,综合要预留这段“堵车时间”。 输出…...
信而泰PFC/ECN流量测试方案:打造智能无损网络的关键利器
导语: AI算力爆发的背后,如何保障网络“零丢包”? 在当今数据中心网络中,随着AI、高性能计算(HPC)和分布式存储等应用的飞速发展,网络的无损传输能力变得至关重要。PFC(基于优先级的…...
golang不使用锁的情况下,对slice执行并发写操作,是否会有并发问题呢?
背景 并发问题最简单的解决方案加个锁,但是,加锁就会有资源争用,提高并发能力其中的一个优化方向就是减少锁的使用。 我在之前的这篇文章《开启多个协程,并行对struct中的每个元素操作,是否会引起并发问题?》中讨论过多协程场景下struct的并发问题。 Go语言中的slice在…...
Android 底部EditView输入时悬浮到软键盘上方
1. 修改 Activity 的 Manifest 配置 确保你的 Activity 在 AndroidManifest.xml 中有以下配置: <activityandroid:name".YourActivity"android:windowSoftInputMode"adjustResize|stateHidden" /> 关键点: adjustResize 是…...
CNN和LSTM的计算复杂度分析
前言:今天做边缘计算的时候,在评估模型性能的时候发现NPU计算的大部分时间都花在了LSTM上,使用的是Bi-LSTM(耗时占比98%),CNN耗时很短,不禁会思考为什么LSTM会花费这么久时间。 首先声明一下实…...
UniApp 表单校验两种方式对比:命令式与声明式
目录 前言1. 实战2. Demo 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 以下主要针对Demo讲解,从实战中的体会 何为命令式 何为声明式 命令式的体验,随时都会有提交的按钮ÿ…...
【树莓派Pico FreeRTOS】-Mutex(互斥体)
Mutex(互斥体) 文章目录 Mutex(互斥体)1、硬件准备2、软件准备3、FreeRTOS的Mutex介绍4、完整示例RP2040 由 Raspberry Pi 设计,具有双核 Arm Cortex-M0+ 处理器和 264KB 内部 RAM,并支持高达 16MB 的片外闪存。 广泛的灵活 I/O 选项包括 I2C、SPI 和独特的可编程 I/O (P…...
LCR 187. 破冰游戏(python3解法)
难度:简单 社团共有 num 位成员参与破冰游戏,编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target,从 0 号成员起开始计数,排在第 target 位的成员离开圆桌,且成员离开后从下一个成员开始计数…...
【漏洞修复】为了修复ARM64 Android10系统的第三方库漏洞,将ARM64 Android16的系统库直接拷贝到Android10系统如何?
直接替换系统库的风险分析 将高版本Android(如Android 16)的系统库直接拷贝到低版本系统(如Android 10)可能会导致以下问题: 符号与依赖不兼容 高版本库可能依赖更高版本的NDK或Bionic libc(Android的C库&…...
Flutter环境配置
配置环境变量 PUB_HOSTED_URLhttps://pub.flutter-io.cnFLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cn 这个命令是用来配置 Flutter 的镜像源地址,主要是为了解决在中国大陆地区访问 Flutter 官方资源较慢的问题。 具体的操作如下: 右键点…...
centOS 7.9 65bit 修复Openssh漏洞
一、背景: 在使用centos 7.9 64bit版本操作系统时有扫描出如下的漏洞: 二、修复openssh漏洞操作 升级注意事项 (一下所有的操作默认都是root或者管理员权限,如果遇到权限问题每个指令以及指令组合都要在前面加sudo) 1、查看CentOS操作系统信…...
金融级密码管理器——生物特征密钥绑定方案
目录 金融级密码管理器 —— 生物特征密钥绑定方案一、模块概述与设计目标1.1 模块背景与意义1.2 设计目标二、系统架构设计2.1 系统模块划分2.2 系统架构图(Mermaid示意图)三、核心算法与安全原理3.1 生物特征数据预处理3.2 密钥生成算法3.3 安全认证与密钥绑定验证3.4 密钥…...
JDBC-添加数据
文章目录 准备数据库添加数据引入数据库依赖包 准备数据库 自行安装软件,利用小皮内嵌的数据 添加数据 引入数据库依赖包 结构 drivercom.mysql.cj.jdbc.Driver urljdbc:mysql://127.0.0.1:3308/yanyuuserroot passwordrootpackage com.yanyu;import java.sql.*;…...
衡石科技HENGSHI SENSE异构数据关联技术深度解析:揭秘5-8倍性能提升背后的“异构过滤“架构
引言:多源数据关联的行业痛点 在大数据时代,企业数据通常分散在多个异构系统中——关系型数据库、NoSQL、数据仓库、湖仓一体平台等。根据Forrester调研,超过78%的企业需要同时访问5种以上不同类型的数据源进行分析,但传统ETL和跨…...
基于Netlify + Localtunnel 实现本地项目“无服务器”部署上线
基于Netlify Localtunnel 实现本地项目“无服务器”部署上线 1. 先看效果图2. 实现步骤2.1 分两步走2.2 netlify 部署前端资源2.3 Localtunnel 映射 localhost 服务 3. 其它工具内网穿透工具对比4. 总结5. 参考资料 1. 先看效果图 地址:zqchat 2. 实现步骤 2.1 …...
C#从入门到精通(3)
目录 第九章 窗体 (1)From窗体 (2)MDI窗体 (3)继承窗体 第十章 控件 (1)控件常用操作 (2)Label控件 (3)Button控件 &…...
设计模式之创建型5种
设计模式 为什么设计模式是23种创建型 对象创建为什么设计模式是23种 设计模式之所以被归纳为23种,而非其他数量,源于GoF(Gang of Four)在1994年的系统性总结和分类。这一数量的确定并非偶然,而是基于以下核心原因: 他们遵循“大三律”(Rule of Three),即只有经过三个…...
Java + LangChain 实战入门,开发大语言模型应用!
在 Baeldung 上看到了一篇介绍基于 Java LangChain 开发大语言模型应用的基础入门文章,写的非常不错,非常适合初学者。于是,我抽空翻译了一下。 原文地址:https://www.baeldung.com/java-langchain-basics翻译: Java…...
el-date-picker时间范围 编辑回显后不能修改问题
el-date-picker daterange时间范围 编辑回显后不能修改 <el-form-item:label"LABELS.gplanRecordDateLabel"prop"gplanRecordDate"><el-date-pickerstyle"width: 300px"v-model"formData.gplanRecordDate"type"daterang…...
Java多线程与高并发专题—— CyclicBarrier 和 CountDownLatch 有什么异同?
引入 上一篇我们了解CountDownLatch的原理和常见用法,在CountDownLatch的源码注释中,有提到: 另一种典型用法是将一个问题分解为 N 个部分,用一个Runnable描述每个部分,该Runnable执行相应部分的任务并对闭锁进行倒计…...
leetcode543.二叉树的直径
当前顶点作为拐点时,求左子树加上右子树的高度可以求出该通过该顶点的直径大小,再对该顶点和左右子节点作为拐点时直径大小进行比对,返回最大值 缺点是递归了多次 /*** Definition for a binary tree node.* public class TreeNode {* …...
Java EE 进阶:MyBatis案例练习
表白墙 首先我们先准备一下数据库的数据 创建一个信息表 DROP TABLE IF EXISTS message_info;CREATE TABLE message_info (id INT ( 11 ) NOT NULL AUTO_INCREMENT,from VARCHAR ( 127 ) NOT NULL,to VARCHAR ( 127 ) NOT NULL,message VARCHAR ( 256 ) NOT NULL,delete_fla…...
Dubbo 全面解析:从 RPC 核心到服务治理实践
一、分布式系统与 RPC 框架概述 在当今互联网时代,随着业务规模的不断扩大,单体架构已经无法满足高并发、高可用的需求,分布式系统架构成为主流选择。而在分布式系统中,远程服务调用(Remote Procedure Call࿰…...
路由选型终极对决:直连/静态/动态三大类型+华为华三思科配置差异,一张表彻底讲透!
路由选型终极对决:直连/静态/动态三大类型华为华三思科配置差异,一张表彻底讲透! 一、路由:互联网世界的导航系统二、路由类型深度解析三者的本质区别 三、 解密路由表——网络设备的GPS华为(Huawei)华三&a…...
