链表专题-03
链表专题(三)
两数相加
问题
[力扣2] 2. 两数相加 - 力扣(LeetCode)
问题描述
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 1:
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
解决方案
定义两个链表的临时索引: curr1,curr2。
定义第三个链表的虚拟头结点: dummy,及其临时索引curr3。
从第一个、二个节点中拆一个节点计算值并存入第三个链表
tips: 需要记录两数相加的进位up(0/1)
int t = 0;
if (curr1 == null) { //第一个链表运算结束t = curr2.val + up;curr2 = curr2.next;
} else if (curr2 == null) { //第二个链表运算结束t = curr1.val + up;curr1 = curr1.next;
} else { //两个链表运算都没有结束t = curr1.val + curr2.val + up;curr1 = curr1.next;curr2 = curr2.next;
}
up = t / 10; //计算进位值(0,1)
curr3.next = new ListNode(t % 10); //计算新节点的值大于10则取余
curr3 = curr3.next;
如果计算完成后超出链表的长度(即计算的结果超出了链表的长度),需要额外的添加节点存储进位up(up=1)
if(up ==1){
curr3.next = new ListNode(up);
}
[参考实现]
/*** 遍历两个链表将两个链表相加添加到第三个链表节点上*/
public ListNode addTwoNumbers(ListNode head1, ListNode head2) {int up = 0;ListNode dummy = new ListNode(-1); //虚拟头结点记录第三个链表(head未知)ListNode curr1 = head1;ListNode curr2 = head2;ListNode curr3 = dummy;/*** 两个链表有空则计算另一个链表,直到最后一个链表完成计算*/while (curr1 != null || curr2 != null) { int t = 0;if (curr1 == null) { //第一个链表运算结束t = curr2.val + up;curr2 = curr2.next;} else if (curr2 == null) { //第二个链表运算结束t = curr1.val + up;curr1 = curr1.next;} else { //两个链表运算都没有结束t = curr1.val + curr2.val + up;curr1 = curr1.next;curr2 = curr2.next;}up = t / 10; //计算进位值(0,1)curr3.next = new ListNode(t % 10); //计算新节点的值大于10则取余curr3 = curr3.next;}//如果计算有进位值=1,则需要添加一个节点if (up == 1) {curr3.next = new ListNode(up);}return dummy.next;
}
两两交换链表中的节点
问题
[力扣24] 24. 两两交换链表中的节点 - 力扣(LeetCode)
问题描述
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:
输入:head = []
输出:[]
示例 3:
输入:head = [1]
输出:[1]
解决方案
定义虚拟头结点dummy: dummy = new ListNode(-1,head);
定义临时节点tmp: tmp = dummy.next;
ListNode dummy = new ListNode(-1, head);
ListNode temp = dummy;while (temp.next != null && temp.next.next != null) {ListNode curr = temp.next; //当前节点ListNode next = temp.next.next; //当前节点的下一个节点//节点交换temp.next = next;curr.next = next.next;next.next = curr;temp = curr;
}
return dummy.next;
[参考实现]
public ListNode swapPairs(ListNode head) {ListNode dummy = new ListNode(-1, head);ListNode temp = dummy;while (temp.next != null && temp.next.next != null) {ListNode curr = temp.next; //当前节点ListNode next = temp.next.next; //当前节点的下一个节点//节点交换temp.next = next;curr.next = next.next;next.next = curr;temp = curr;}return dummy.next;
}
对链表进行插入排序
问题
[力扣147] 147. 对链表进行插入排序 - 力扣(LeetCode)
问题描述
给定单个链表的头
head
,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。插入排序 算法的步骤:
- 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。
- 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。
- 重复直到所有输入数据插入完为止。
下面是插入排序算法的一个图形示例。部分排序的列表(黑色)最初只包含列表中的第一个元素。每次迭代时,从输入数据中删除一个元素(红色),并就地插入已排序的列表中。
对链表进行插入排序。
示例 1:
输入: head = [4,2,1,3]
输出: [1,2,3,4]
示例 2:
输入: head = [-1,5,3,4,0]
输出: [-1,0,3,4,5]
解决方案
[初始化]
- 虚拟头结点dummy = new ListNode(-1,head);
- 记录排序后的后一个节点 sortedLast = dummy.next(先指向head位置): sortedLast记录插入点
- 待操作的节点curr = dummy.next.next。
如果sortedLast.val < curr.val, 准备进入循环移动小的节点
如果sortedLast.val > curr
从dummy开始查找比curr小的前一个节点位置
找到比curr小的位置,如图目前pre = dummy, 因为节点4的值大于节点2的值。
sortedLast.next = curr.next; // curr小于sortedLast,那么curr即为sortedLast的新记录
curr.next = pre.next;
pre.next = curr;
移动curr索引
curr = sortedLast.next;
[参考代码]
public ListNode insertionSortList(ListNode head) {if(head == null) return null;ListNode dummy = new ListNode(-1, head);ListNode sortedLast = dummy.next; // 排好序后的最后一个节点,类似于插入排序已排好序的最后一个位置值ListNode curr = dummy.next.next; // 待插入的节点while (curr != null) {// 当前待插入节点大于于排序序节点的最后一个节点,最后一个节点后移(tip: 已经不是最后一个了)if (sortedLast.val <= curr.val) {sortedLast = sortedLast.next;} else {// curr节点值小于排序好序的最后一个节点,需要向前查找合适位置(curr.val大于的位置)ListNode pre = dummy;while (pre.next.val <= curr.val) { // 移动pre找到比curr.val大的位置前一个位置pre = pre.next;}sortedLast.next = curr.next; // curr小于sortedLast,那么curr即为sortedLast的新记录curr.next = pre.next;pre.next = curr;}curr = sortedLast.next;}return dummy.next;
}
删除链表的倒数第N个节点
问题
[力扣19] 19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)
问题描述
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
示例 1:
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1
输出:[]
示例 3:
输入:head = [1,2], n = 1
输出:[1]
解决方案
虚拟头结点及快慢指针法
【初始化】
- 虚拟头结点 : dummy = new ListNode(-1,head);
- 快慢索引(指针): ListNode fast = dummy; ListNode slow= dummy;
让快指针(fast)先走n步。
for (int i = n; i > 0; i--)
fast = fast.next;
两个指针(fast)和slow同时走到链表结尾。
如图所示,slow的末尾即与末尾的n个位置
while (fast!=null &&fast.next != null) {fast = fast.next;slow = slow.next;
}
slow.next = slow.next.next;
return pre.next;
[参考代码]
public ListNode removeNthFromEnd(ListNode node, int n) {
ListNode pre = new ListNode(-1, node); // 定义要删除节点的前一个节点
// 定义快慢指针让其距离差n,让fast先走n个节点,fast与slow之间就差n
ListNode fast = pre;
ListNode slow = pre;
// slow ----------n------------- fast
for (int i = n; i > 0; i--)fast = fast.next;// 两个节点同时移动,走到末尾,那么节点slow即为从末尾到n的节点
while (fast!=null &&fast.next != null) {fast = fast.next;slow = slow.next;
}slow.next = slow.next.next;
return pre.next;
}
合并两个有序链表
题目
[力扣21] 21. 合并两个有序链表 - 力扣(LeetCode)
题目描述
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]
示例 2:
输入:l1 = [], l2 = [] 输出:[]
示例 3:
输入:l1 = [], l2 = [0] 输出:[0]
解决方案
拆除重组法
参考实现
public ListNode mergeTwoLists(ListNode head1, ListNode head2) {ListNode dummy = new ListNode(-1);ListNode curr1 = head1;ListNode curr2 = head2;ListNode curr = dummy;while (curr1 != null || curr2 != null) {if (curr1 == null) {curr.next = curr2;curr2 = curr2.next;} else if (curr2 == null) {curr.next = curr1;curr1 = curr1.next;} else if (curr1.val < curr2.val) {curr.next = curr1;curr1 = curr1.next;} else {curr.next = curr2;curr2 = curr2.next;}curr = curr.next;}return dummy.next;}
public ListNode mergeTwoLists(ListNode head1, ListNode head2) {if (head1 == null) return head2;if (head2 == null) return head1;ListNode newNode = head1.val < head2.val ? head1 : head2;newNode.next = mergeTwoLists(newNode.next, head1.val >= head2.val ? head1 : head2);return newNode;}
合并K个升序链表
题目
[力扣23] 23. 合并 K 个升序链表 - 力扣(LeetCode)
题目描述
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
示例 1:
输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [1->4->5,1->3->4,2->6 ] 将它们合并到一个有序链表中得到。 1->1->2->3->4->4->5->6
示例 2:
输入:lists = [] 输出:[]
示例 3:
输入:lists = [[]] 输出:[]
解决方案
将每个节点的头结点放入优先队列,重新组装链表。
[初始化]
- 优先链表定义
- 虚拟头结点

PriorityQueue<ListNode> priorityQueue = new PriorityQueue<>(Comparator.comparingInt(o -> o.val));ListNode dummy = new ListNode(-1);
ListNode curr = dummy;
将链表头节点放入优先队列(优先小队列)

for (ListNode head : lists) {if(head !=null) priorityQueue.offer(head);
}
从优先队列中取出最小值,将头结点的下一个节点放入队列。
while (!priorityQueue.isEmpty()) {ListNode node = priorityQueue.poll();curr.next = node;if (node.next != null) {priorityQueue.offer(node.next);}curr = curr.next;
}
[参考解答]
public ListNode mergeKLists(ListNode[] lists) {if(lists == null) return null;PriorityQueue<ListNode> priorityQueue = new PriorityQueue<>(Comparator.comparingInt(o -> o.val));ListNode dummy = new ListNode(-1);
ListNode curr = dummy;for (ListNode head : lists) {if(head !=null) priorityQueue.offer(head);
}while (!priorityQueue.isEmpty()) {ListNode node = priorityQueue.poll();curr.next = node;if (node.next != null) {priorityQueue.offer(node.next);}curr = curr.next;
}
return dummy.next;
}
分割链表
题目
[力扣86] 86. 分隔链表 - 力扣(LeetCode)
题目描述
给你一个链表的头节点
head
和一个特定值x
,请你对链表进行分隔,使得所有 小于x
的节点都出现在 大于或等于x
的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。示例 1:
输入:head = [1,4,3,2,5,2], x = 3 输出:[1,2,2,4,3,5]
示例 2:
输入:head = [2,1], x = 2 输出:[1,2]
解决方案
ListNode<Integer> dummyLess = new ListNode<>(-1);
ListNode<Integer> dummyLarge = new ListNode<>(-2);ListNode<Integer> curr = head;
ListNode<Integer> currLess = dummyLess;
ListNode<Integer> currLarge = dummyLarge;while (curr != null) {if (curr.val < x) {currLess.next = curr;currLess = currLess.next;} else {currLarge.next = curr;currLarge = currLarge.next;}curr = curr.next;
}currLess.next = dummyLarge.next;
currLarge.next =null;
return dummyLess.next;
相关文章:
链表专题-03
链表专题(三) 两数相加 问题 [力扣2] 2. 两数相加 - 力扣(LeetCode) 问题描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加ÿ…...
Ollama下载安装教程
一、去官网下载Ollama 点击前往Ollama官网 进去后点击下载 根据不同的系统去选择 由于服务器在国外可能下载界面进不去或者下载非常慢,可以去网盘获取 点击下方蓝色字体直达 点击前往夸克网盘下载 点击前往百度网盘下载 下载好后双击应用程序安装即可 点击ins…...
SQL Server查询计划操作符(7.3)——查询计划相关操作符(6)
7.3. 查询计划相关操作符 48)Key Lookup:该操作符对一个有簇索引的表进行书签查找。参数列包含簇索引的名字和用于查找簇索引中数据行的簇键。该操作符总是伴随一个Nested Loops操作符。如果其参数列中出现WITH PREFETCH子句,则查询处理器已决定使用异步预取(预读,read-ah…...
IDEA查看项目依赖包及其版本
一.IDEA将现有项目转换为Maven项目 在IntelliJ IDEA中,将现有项目转换为Maven项目是一个常见的需求,可以通过几种不同的方法来实现。Maven是一个强大的构建工具,它可以帮助自动化项目的构建过程,管理依赖关系,以及其他许多方面。 添加Maven支持 如果你的项目还没有pom.xm…...
网络分析工具—WireShark的安装及使用
Wireshark 是一个广泛使用的网络协议分析工具,常被网络管理员、开发人员和安全专家用来捕获和分析网络数据包。它支持多种网络协议,能够帮助用户深入理解网络流量、诊断网络问题以及进行安全分析。 Wireshark 的主要功能 数据包捕获与分析: …...
【LeetCode 刷题】贪心算法(2)-进阶
此博客为《代码随想录》贪心算法章节的学习笔记,主要内容为贪心算法进阶的相关题目解析。 文章目录 135. 分发糖果406. 根据身高重建队列134. 加油站968. 监控二叉树 135. 分发糖果 题目链接 class Solution:def candy(self, ratings: List[int]) -> int:n l…...
网络工程师 (25)OSI模型—服务访问点
前言 OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO)提出的一个旨在使各种计算机在世界范围内互连为网络的标准框架。 一、定义 服务访问点&a…...
如何在RTACAR中配置IP多播(IP Multicast)
一、什么是IP多播 IP多播(IP Multicast)是一种允许数据包从单一源地址发送到多个目标地址的技术,是一种高效的数据传输方式。 多播地址是专门用于多播通信的IP地址,范围从 224.0.0.0到239.255.255.255 与单播IP地址不同&#x…...
使用docker搭建FastDFS文件服务
1.拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/fastdfs:latest2.使用docker镜像构建tracker容器(跟踪服务器,起到调度的作用) docker run -dti --networkhost --name tracker -v /data/fdfs/tracker:/var/fdfs -…...
VC播放mp3的方法
1、使用msi库 #include <mmsystem.h> #pragma comment(lib,"winmm.lib") .......//打开文件MCI_OPEN_PARMS mciOpen; mciOpen.lpstrDeviceType _T("mpegvideo"); mciOpen.lpstrElementName _T("c://1.mp3"); MCIERROR mciError mci…...
【读书笔记·VLSI电路设计方法解密】问题46:什么是bug覆盖率
在IC设计项目的验证过程中,功能测试(通过使用测试平台)有助于定位设计错误或漏洞。这个验证过程有三个阶段:构建和启动测试平台、验证基本测试用例以及验证边界情况。 在前两个阶段,漏洞很容易被检测到,因…...
sqli-lab靶场学习(五)——Less15-17(post方法盲注、修改密码)
前言 第11-14关开始用post方法,15-17关会用到盲注,post方法盲注和get方法类似。 Less15 这关是单引号闭合,有报错但没有具体情况的回显,因此适合使用错误盲注。 在用户名密码框分别输入 账号:admin and 11 -- asd…...
1、http介绍
一、HTTP 和 HTTPS 简介 HTTP(HyperText Transfer Protocol) 用途:用于网页数据传输(不加密)。协议特性:以明文形式传输数据,默认端口 80,无身份验证和完整性保护。典型场景…...
Vim跳转文件及文件行结束符EOL
跳转文件 gf 从当前窗口打开那个文件的内容,操作方式:让光标停在文件名上,输入gf。 Ctrlo 从打开的文件返回之前的窗口 Ctrlwf 可以在分割的窗口打开跳转的文件,不过在我的实验不是次次都成功。 统一行尾格式 文本文件里存放的…...
LLM:DeepSeek 系列(二)
原文链接 3、DeepSeek-V2 DeepSeek-V2 发布于 2024 年 5 月,为多领域专家(MoE)语言模型,包含总共 2360 亿个参数,其中每个词元激活 210 亿个参数,并支持 12.8 万个词元的上下文长度。DeepSeek-V2 采用包括…...
订单超时设计(1)--- 如何使用redis实现订单超时实时关闭功能
如何使用redis实现订单超时实时关闭功能 准备工作实现步骤解释注意事项(重点) 使用Redis实现订单超时实时关闭功能,可以利用Redis的延时队列(使用Sorted Set实现)和过期键(使用TTL和Keyspace Notifications…...
【0401】Postgres内核 CREATE DATABASE database-name 源码实现 ①
文章目录 1. CREATE DATABASE 语句1.1 CREATE DATABASE 语法1.2 CREATE DATABASE 调用栈2. CREATE DATABASE 内核实现2.1 从 CreatedbStmt 节点树 提取 options2.2 获取 datdba(proposed owner) OID2.3 当前用户具有 create DB 权限?2.4 获取 database template1. CREATE DA…...
Termux安装ssh实现电脑ssh
Termux下载 点击下载 在 Termux 中安装并使用 SSH,按照以下步骤操作: 1. 更新软件包列表 pkg update && pkg upgrade2. 安装 OpenSSH pkg install openssh3. 设置 SSH 密码(必须,否则无法使用 SSH 服务器)…...
nexus部署及配置https访问
1. 使用docker-compose部署nexus docker-compose-nexus.yml version: "3" services:nexus:container_name: my-nexusimage: sonatype/nexus3:3.67.1hostname: my-nexusnetwork_mode: hostports:- 8081:8081deploy:resources:limits:cpus: 4memory: 8192Mreservations…...
【MySQL】表操作
表操作 一、创建表 1、语句2、语句介绍3、注意事项4、介绍5、示例 二、查看表结构 1、语句2、介绍3、返回的信息4、示例 三、添加字段 1、语句2、语句介绍3、示例 四、修改 1、语句2、语句介绍3、示例 五、删除 1、语句2、示例 六、修改表名 1、语句2、语句介绍3、示例 七、删…...
浅析Ruby类污染及其在Sinatra框架下的利用
和JavaScript中的原型链污染类似,Ruby中也存在类似的概念——类污染,两者都是对象进行不安全的递归合并导致的。 网上也没有相关的分析文章,只有下面这篇文章应该是第一次谈到这个问题 Class Pollution in Ruby: A Deep Dive into Exploiti…...
iPhone 在华销量大幅下挫
iPhone在乔布斯时代缔造的神话在中国正逐渐走向没落,挤牙膏式的升级方式类似于诺基亚的N70系列,毫无新意的创新能力,求稳着陆的经营理念,工艺和美学不再独领风骚,甚至拍照领域和AI增强计算,折叠屏等技术领域…...
Fedora 的 2025 年展望:AI 集成与 HDR 支持打造强大 Linux 桌面体验
Fedora 项目已经从节庆活动中恢复,准备在未来几个月推出一系列关键计划。Red Hat 软件工程总监 Christian Schaller 在他的博客文章中分享了 2025 年 Fedora 发行版的重点发展方向和优先事项,涵盖了人工智能集成、Wayland、HDR 协议、PipeWire 等多个领域…...
mysql 学习11 事务,事务简介,事务操作,事务四大特性,并发事务问题,事务隔离级别
一 事务简介, 数据库准备: create table account(id int auto_increment primary key comment 主键ID,name varchar(128) not null comment 姓名,backaccountnumber char(18) unique comment 银行账号,money float comment 余额 )comment 银行账号表;…...
C# Winform怎么设计串口,客户端和相机控件界面显示
首先我们必须把这个类创建好 INIAPI using System; using System.Text; using System.Runtime.InteropServices;namespace Ini {public class IniAPI{#region INI文件操作/** 针对INI文件的API操作方法,其中的节点(Section)、键(KEY&#x…...
【场景题】架构优化 - 解耦Redis缓存与业务逻辑
1. 需求分析 某公司需要将原有的Redis缓存抽离出来,并且还要要实现: 可配置热拔插高可用高通用 请问你会如何实现? 2. 思路 话不多说直接上思路: 自定义缓存注解,当容器扫描到该注解自动调用AOP想应的增强方法为…...
WGCLOUD监控系统部署教程
官网地址:下载WGCLOUD安装包 - WGCLOUD官网 第一步、环境配置 #安装jdk 1、安装 EPEL 仓库: sudo yum install -y epel-release 2、安装 OpenJDK 11: sudo yum install java-11-openjdk-devel 3、如果成功,你可以通过运行 java …...
linux——网络计算机{序列化及反序列化(JSON)(ifdef的用法)}
linux——网络(服务器的永久不挂——守护进程)-CSDN博客 目录 一、序列化与反序列化 1. 推荐 JSON 库 2. 使用 nlohmann/json 示例 安装方法 基础用法 输出结果 3. 常见操作 4. 其他库对比 5. 选择建议 二、ifdef宏的用法 基本语法 核心用途…...
Android 开发APP中参数配置与读取总结
以使用MQTT配置的参数 MQTT_BROKER_UR 、MQTT_USER_NAME、 MQTT_PASSWORD为例,说明配置设置和读取应用 项目中使用系统参数(如环境变量和gradle.properties文件中的属性)在Gradle构建脚本中,以下是一个详细的操作文档资料&…...
Web应用国际化(i18n)实现详解 python
Web应用国际化(i18n)实现详解 1. 设计理念 本项目的国际化(Internationalization)解决方案基于Python的gettext模块,提供了一个灵活、可扩展的多语言支持系统。 2. 语言支持 2.1 支持的语言列表 项目支持超过35种…...
mysql mvcc 锁 关系
多版本并发控制(MVCC)是一种用于数据库并发控制的机制,它可以在保证数据一致性的同时,提高数据库的并发性能。下面结合 MVCC 机制,详细阐述常见的四种事务隔离级别(读未提交、读已提交、可重复读、串行化&a…...
【银河麒麟高级服务器操作系统】系统日志Call trace现象分析及处理全流程
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://document.kylinos.cn 服务器环境以及配置 系统环境 物理机/虚拟机/云…...
新能源产业的质量革命:六西格玛培训如何重塑制造竞争力
在新能源行业狂飙突进的今天,企业若想在全球供应链中占据高地,仅靠技术突破已远远不够。制造效率的毫厘之差,可能成为市场话语权的千里之距。某光伏巨头曾因电池片良率低于行业均值1.5%,导致年损失超2.3亿元——这恰恰印证了六西格…...
【ArcGIS】R语言空间分析、模拟预测与可视化技术
R语言在空间数据挖掘中具有广泛的应用,以下是一些关键内容和常用包的介绍: R语言空间数据挖掘的关键技术 空间数据类型 矢量数据:包括点(Point)、线(Line)、面(Polygon)等…...
单例模式几种实现
静态内部类holder实现(推荐) public class UniqueIdGenerator {public static final UniqueIdGenerator INSTANCE Holder.INSTANCE;// Private holder class for lazy initializationprivate static class Holder {static final UniqueIdGenerator INS…...
什么是Prompt工程?
什么是提示工程? Prompt一词,在英语中主要用作动词、形容词、名词和副词,主要意思包括“促使,导致;鼓励,提示;迅速的,立刻的;准时地”等。 在人工智能的语境下…...
C++,设计模式,【单例模式】
文章目录 一、模式定义与核心价值二、模式结构解析三、关键实现技术演进1. 基础版(非线程安全)2. 线程安全版(双重检查锁)3. 现代C++实现(C++11起)四、实战案例:全局日志管理器五、模式优缺点深度分析✅ 核心优势⚠️ 潜在缺陷六、典型应用场景七、高级实现技巧1. 模板化…...
详解SQLAlchemy的函数relationship
在 SQLAlchemy 中,relationship 是一个非常重要的函数,用于定义模型之间的关系。它用于在 ORM 层面上表示数据库表之间的关联关系(如 1 对 1、1 对多和多对多)。relationship 的主要作用是提供一个高级接口,用于在模型…...
vue 的 watch 和 computed 有什么区别?
在 Vue.js 中,watch 和 computed 都是用于响应式数据处理的功能,但它们有不同的用途和实现方式。以下是二者的主要区别: 1. 用途 computed 计算属性:用于基于已有数据计算出新的值。它们是基于依赖的数据变化而自动重新计算的,通常用于模板中显示的派生状态。缓存:计算…...
WPS如何接入DeepSeek(通过第三方工具)
WPS如何接入DeepSeek 一、下载并安装OfficeAI插件二、配置OfficeAI插件三、使用DeepSeek功能 本文介绍如何通过 WPS 的第三方工具调用 DeepSeek 大模型,实现自动化文本扩写、校对和翻译等功能。 一、下载并安装OfficeAI插件 1、访问OfficeAI插件下载地址ÿ…...
学习 PostgreSQL 流复制
PostgreSQL 流复制 PostgreSQL数据库异常中止后,数据库刚重启时,会重放停机前最后一个checkpoint点之后的 WAL日志,在把数据库恢复到停机的状态后,自动进入正常的状态,可以接收其他用户的查询和修改。 想象另一个场景…...
零基础学习书生.浦语大模型--基础岛
第二关:玩转书生[多模态对话]和[AI搜索]产品 任务一:使用MindSearch 任务二:尝试使用书生.浦语 尝试让其写一段Self-Attention网络模块代码 import torch import torch.nn as nn import torch.nn.functional as Fclass SelfAttention(nn.Module):def _…...
MySQL中DDL操作是否支持事务
MySQL中DDL不支持事务。 传统MySQL(5.7及以前版本): DDL操作不支持事务执行DDL操作时会隐式提交当前会话的事务无法回滚DDL操作 MySQL 8.0版本: 引入了原子DDL特性(Atomic DDL)DDL操作变为原子性的&…...
QQ自动发送消息
QQ自动发送消息 python包导入 import time import pandas as pd import pyautogui import pyperclip图像识别函数封装 本程序使用pyautogui模块控制鼠标和键盘来实现QQ自动发送消息,因此必须得到需要点击位置的坐标(当然也可以在程序中将位置写死&…...
css:怎么设置图片不变形
问: main元素中有一个img元素,这个img src‘/assets/images/tupian.png’css设置了img元素width:50% height:50%但是图片变形了,我应该怎么设置保持图片样式不变形 回答: 为了确保图片在调整大小时不变形࿰…...
【异常解决】在idea中提示 hutool 提示 HttpResponse used withoud try-with-resources statement
博主介绍:✌全网粉丝22W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
250207-MacOS修改Ollama模型下载及运行的路径
在 macOS 上,Ollama 默认将模型存储在 ~/.ollama/models 目录。如果您希望更改模型的存储路径,可以通过设置环境变量 OLLAMA_MODELS 来实现。具体步骤如下: 选择新的模型存储目录:首先,确定您希望存储模型的目标目录路…...
认识O(NlogN)的排序
归并排序 归并排序(任何一个递归)如果不懂可以画一个树状结构去帮助自己去理解。 核心排序方法为Merger public class 归并排序 {public static void main(String[] args) {int[] arr1 {3, 1, 2, 2, 5, 6};int[] arr2 Arrays.copyOf(arr1, arr1.len…...
Redisson全面解析:从使用方法到工作原理的深度探索
文章目录 写在文章开头详解Redisson基本数据类型基础配置字符串操作列表操作映射集阻塞队列延迟队列更多关于Redisson详解Redisson 中的原子类详解redisson中的发布订阅模型小结参考写在文章开头 Redisson是基于原生redis操作指令上进一步的封装,屏蔽了redis数据结构的实现细…...
基于 .NET 8.0 gRPC通讯架构设计讲解,客户端+服务端
目录 1.简要说明 2.服务端设计 2.1 服务端创建 2.2 服务端设计 2.3 服务端业务模块 3.客户端设计-控制台 4.客户端设计-Avalonia桌面程序 5.客户端设计-MAUI安卓端程序 1.简要说明 gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用…...