当前位置: 首页 > news >正文

Java二叉树深度解析:结构、算法与应用实践指南

一、二叉树核心概念体系

1. 二叉树基础定义

graph TBA((根节点)) --> B((左子节点))A --> C((右子节点))B --> D((叶子节点))B --> E((叶子节点))C --> F[null]C --> G((叶子节点))

2. 二叉树类型对比

类型结构特性典型应用场景
普通二叉树任意节点最多两个子节点基础数据结构
完全二叉树除最后一层外全满,最后一层左对齐堆结构实现
二叉搜索树(BST)左子树值 < 根 < 右子树值快速查找/插入/删除
平衡二叉树(AVL)任意节点左右子树高度差≤1保证O(log n)操作复杂度
红黑树自平衡,满足颜色约束规则Java TreeMap/TreeSet底层实现

二、二叉树的Java实现

1. 基础节点结构

public class TreeNode<T extends Comparable<T>> {T val;TreeNode<T> left;TreeNode<T> right;public TreeNode(T val) {this.val = val;this.left = null;this.right = null;}
}

2. 二叉搜索树实现框架

public class BinarySearchTree<T extends Comparable<T>> {private TreeNode<T> root;private int size;// 核心方法public void insert(T value) { /*...*/ }public boolean contains(T value) { /*...*/ }public void delete(T value) { /*...*/ }// 遍历方法...
}

三、核心算法实现

1. 插入操作(递归实现)

private TreeNode<T> insertRec(TreeNode<T> node, T value) {if (node == null) {size++;return new TreeNode<>(value);}int cmp = value.compareTo(node.val);if (cmp < 0) {node.left = insertRec(node.left, value);} else if (cmp > 0) {node.right = insertRec(node.right, value);}return node;
}

2. 删除操作(三种情况处理)

public TreeNode<T> deleteNode(TreeNode<T> root, T key) {if (root == null) return null;int cmp = key.compareTo(root.val);if (cmp < 0) {root.left = deleteNode(root.left, key);} else if (cmp > 0) {root.right = deleteNode(root.right, key);} else {// Case 1: 无子节点if (root.left == null && root.right == null) return null;// Case 2: 单子节点if (root.left == null) return root.right;if (root.right == null) return root.left;// Case 3: 双子节点(找后继节点)TreeNode<T> successor = findMin(root.right);root.val = successor.val;root.right = deleteNode(root.right, successor.val);}return root;
}private TreeNode<T> findMin(TreeNode<T> node) {while (node.left != null) node = node.left;return node;
}

四、遍历算法大全

1. 深度优先遍历(DFS)

遍历方式递归实现迭代实现
前序遍历根 → 左 → 右使用栈,先压右子树再压左子树
中序遍历左 → 根 → 右使用栈模拟递归调用
后序遍历左 → 右 → 根使用两个栈或反转前序结果

中序遍历迭代实现:

public List<T> inorderTraversal() {List<T> result = new ArrayList<>();Deque<TreeNode<T>> stack = new ArrayDeque<>();TreeNode<T> curr = root;while (curr != null || !stack.isEmpty()) {while (curr != null) {stack.push(curr);curr = curr.left;}curr = stack.pop();result.add(curr.val);curr = curr.right;}return result;
}

2. 广度优先遍历(BFS)

public List<List<T>> levelOrder() {List<List<T>> result = new ArrayList<>();if (root == null) return result;Queue<TreeNode<T>> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {int levelSize = queue.size();List<T> currentLevel = new ArrayList<>();for (int i = 0; i < levelSize; i++) {TreeNode<T> node = queue.poll();currentLevel.add(node.val);if (node.left != null) queue.offer(node.left);if (node.right != null) queue.offer(node.right);}result.add(currentLevel);}return result;
}

五、Java集合框架中的二叉树

1. TreeMap的红黑树实现

// 源码关键片段
static final class Entry<K,V> implements Map.Entry<K,V> {K key;V value;Entry<K,V> left;Entry<K,V> right;Entry<K,V> parent;boolean color = BLACK;
}// 插入后的平衡操作
private void fixAfterInsertion(Entry<K,V> x) {// 红黑树平衡逻辑...
}

2. PriorityQueue的堆实现

// 基于数组的完全二叉树结构
transient Object[] queue;// 上浮操作
private void siftUp(int k, E x) {if (comparator != null)siftUpUsingComparator(k, x);elsesiftUpComparable(k, x);
}

六、高级应用场景

1. 二叉树序列化与反序列化

// 前序序列化
public String serialize(TreeNode root) {if (root == null) return "null";return root.val + "," + serialize(root.left) + "," + serialize(root.right);
}// 反序列化
public TreeNode deserialize(String data) {Queue<String> queue = new LinkedList<>(Arrays.asList(data.split(",")));return buildTree(queue);
}private TreeNode buildTree(Queue<String> queue) {String val = queue.poll();if ("null".equals(val)) return null;TreeNode node = new TreeNode(Integer.parseInt(val));node.left = buildTree(queue);node.right = buildTree(queue);return node;
}

2. 最近公共祖先(LCA)

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if (root == null || root == p || root == q) return root;TreeNode left = lowestCommonAncestor(root.left, p, q);TreeNode right = lowestCommonAncestor(root.right, p, q);if (left != null && right != null) return root;return left != null ? left : right;
}

七、性能优化与最佳实践

1. 平衡因子维护

// AVL树节点结构
class AVLNode<T> {T val;int height;AVLNode<T> left;AVLNode<T> right;// 更新高度方法void updateHeight() {this.height = 1 + Math.max((left != null ? left.height : 0),(right != null ? right.height : 0));}// 平衡因子计算int getBalanceFactor() {return (left != null ? left.height : 0) - (right != null ? right.height : 0);}
}

2. 线程安全方案

// 使用读写锁实现并发BST
public class ConcurrentBinarySearchTree<T extends Comparable<T>> {private final ReadWriteLock lock = new ReentrantReadWriteLock();private TreeNode<T> root;public boolean contains(T value) {lock.readLock().lock();try {return search(root, value);} finally {lock.readLock().unlock();}}public void insert(T value) {lock.writeLock().lock();try {root = insertRec(root, value);} finally {lock.writeLock().unlock();}}
}

八、常见问题解决方案

1. 验证二叉搜索树

public boolean isValidBST(TreeNode root) {return validate(root, Long.MIN_VALUE, Long.MAX_VALUE);
}private boolean validate(TreeNode node, long min, long max) {if (node == null) return true;if (node.val <= min || node.val >= max) return false;return validate(node.left, min, node.val) && validate(node.right, node.val, max);
}

2. 二叉树最大路径和

private int maxSum = Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {calculateMax(root);return maxSum;
}private int calculateMax(TreeNode node) {if (node == null) return 0;int left = Math.max(0, calculateMax(node.left));int right = Math.max(0, calculateMax(node.right));maxSum = Math.max(maxSum, left + right + node.val);return Math.max(left, right) + node.val;
}

九、开发实践建议

  1. 选择合适结构

    • 查询频繁 → 二叉搜索树

    • 需要自动平衡 → TreeMap/TreeSet

    • 层次关系处理 → 普通二叉树

  2. 内存优化技巧

    • 使用数组存储完全二叉树

    • 对于稀疏树使用子节点指针

    • 对象复用(享元模式)

  3. 调试工具

    // 可视化打印二叉树
    public void printTree(TreeNode root) {printHelper(root, "", true);
    }private void printHelper(TreeNode node, String indent, boolean last) {if (node != null) {System.out.print(indent);if (last) {System.out.print("R----");indent += "     ";} else {System.out.print("L----");indent += "|    ";}System.out.println(node.val);printHelper(node.left, indent, false);printHelper(node.right, indent, true);}
    }


总结与进阶方向

核心要点

  • 理解二叉树不同变体的特性差异

  • 掌握递归与迭代遍历的实现方式

  • 熟悉Java集合框架中的树形结构实现

  • 注意树结构的线程安全问题

进阶学习

  • B树/B+树原理(数据库索引)

  • Trie树(字典树)的应用

  • 线段树与区间查询

  • 树形结构的持久化实现

通过深入理解二叉树的理论基础和实践应用,开发者可以更好地应对算法面试和复杂系统设计。记住:树形结构的核心在于递归思维和空间效率的平衡。

相关文章:

Java二叉树深度解析:结构、算法与应用实践指南

一、二叉树核心概念体系 1. 二叉树基础定义 graph TBA((根节点)) --> B((左子节点))A --> C((右子节点))B --> D((叶子节点))B --> E((叶子节点))C --> F[null]C --> G((叶子节点)) 2. 二叉树类型对比 类型结构特性典型应用场景普通二叉树任意节点最多两…...

阿里FPGA XCKU3P开箱- 25G 光纤

阿里FPGA XCKU3P开箱 - Hello-FPGA - 博客园 25G 光纤 板子有2个SFP的光纤接口&#xff0c;最大支持25G速率&#xff0c;使用ibert 进行验证&#xff0c;SFP在BANK227的GTY 接口。 ibert 配置如下&#xff1a; 测试 测试符合预期&#xff0c;确认了SFP的具体位置 和 支持的速…...

深度学习之微积分

2.4.1 导数和微分 2.4.2 偏导数 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/17227e00adb14472902baba4da675aed.png 2.4.3 梯度 具体证明&#xff0c;矩阵-向量积...

Android系统通知机制深度解析:Framework至SystemUI全链路剖析

1. 前言 在Android 13的ROM定制化开发中&#xff0c;系统通知机制作为用户交互的核心组件&#xff0c;其实现涉及Framework层到SystemUI的复杂协作。本文将深入剖析从Notification发送到呈现的全链路流程&#xff0c;重点解析关键类的作用机制及系统服务间的交互逻辑&#xff…...

spatk-sql核心

在大数据处理领域&#xff0c;Apache Spark已成为不可或缺的工具&#xff0c;而Spark SQL作为其重要组件&#xff0c;以独特的设计与强大功能&#xff0c;在结构化数据处理中扮演着核心角色。 一、Spark SQL的架构基石 Spark SQL构建于Spark核心之上&#xff0c;充分利用了Sp…...

高级语言调用C接口(二)回调函数(3)C#

原接口定义请参照高级语言调用C接口(二)回调函数(2) 我们直接来看C#的接口定义 [DllImport("XXX.dll")]public static extern IntPtr Init(string pcPayDeviceIP, int usTlsPort, OnPayResult onPayResult); 委托定义 [UnmanagedFunctionPointer(CallingConvention…...

ns-3中UDP饱和流发包时间间隔设置最合理值

ns3的官方手册很全&#xff0c;相关书籍也是有的&#xff0c;官网先贴在这里&#xff1a; ns-3 | a discrete-event network simulator for internet systemsa discrete-event network simulator for internet systemshttps://www.nsnam.org/相关的脚本介绍也都有一些&#xf…...

深度学习(第1章——神经网络原理和Pytorch入门)

前言&#xff1a; 本章将讲解神经网络原理&#xff0c;神经元如何处理输入并输出&#xff0c;什么是梯度&#xff0c;多层感知机中梯度的计算&#xff0c;Pytoch自动梯度效果&#xff0c;如何使用原生Python实现一个简单的神经网络&#xff0c;以及对应Pytorch实现。 神经网络原…...

使用DeepSeek AI高效降低论文重复率

一、论文查重原理与DeepSeek降重机制 1.1 主流查重系统工作原理 文本比对算法:连续字符匹配(通常13-15字符)语义识别技术:检测同义替换和结构调整参考文献识别:区分合理引用与不当抄袭跨语言检测:中英文互译内容识别1.2 DeepSeek降重核心技术 深度语义理解:分析句子核心…...

【3D文件】3D打印迪迦奥特曼,3D打印的迪迦圣像,M78遗迹管理局,5款不同的3D打印迪迦免费下载,总有一款适合你

【3D文件】3D打印迪迦奥特曼&#xff0c;3D打印的迪迦圣像&#xff0c;M78遗迹管理局&#xff0c;5款不同的3D打印迪迦免费下载&#xff0c;总有一款适合你 资源下载&#xff1a; 3D文件AI生成器&#xff0c;机器学习生成&#xff0c;AI生成3D文件&#xff0c;3D打印迪迦奥特…...

【未解决】Spring AI 1.0.0-M6 使用 Tool Calling 报错,请求破解之法

1.报错 2.Java 代码 2.1 pom.xml <dependencyManagement><dependencies><!-- Spring AI --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>1.0.0-M6</ver…...

第 2 篇:快速上手 Framer Motion(实操入门)

1. 环境准备 在开始使用 Framer Motion 之前&#xff0c;你需要先确保你的开发环境中已经设置好了 React 项目。我们将使用 Next.js 作为示例&#xff0c;如果你是使用其他 React 框架&#xff0c;步骤也基本相同。 1.1 创建一个 Next.js 项目 如果你还没有创建 Next.js 项目…...

如何写好合同管理系统需求分析

引言 在当今企业数字化转型的浪潮中&#xff0c;合同管理系统作为企业法律合规和商业运营的重要支撑工具&#xff0c;其需求分析的准确性和完整性直接关系到系统建设的成败。本文基于Volere需求过程方法论&#xff0c;结合江铃汽车集团合同管理系统需求规格说明书实践案例&…...

C语言自定义类型详解一:结构体(内存对齐)

结构体的声明&#xff1a; 结构体是一些值的集合&#xff0c;这些值是成员变量&#xff0c;结构体的每个成员可以是不同类型的变量&#xff08;包括其他结构体变量&#xff09; 类如&#xff1a;描述一个学生 struct Stu {char name[200];int age;char sex[5];//性别char id…...

GitHub配置密钥

1.生成SSH密钥 1&#xff09;检查 SSH 密钥是否存在 首先&#xff0c;确认是否已经在本地系统中生成了 SSH 密钥对。可以通过以下命令检查&#xff1a; ls -al ~/.ssh 在命令输出中&#xff0c;应该能看到类似 id_rsa 和 id_rsa.pub 这样一对文件。如果这些文件不存在&#…...

PyTorch逻辑回归总结

目录 PyTorch逻辑回归总结神经网络基础基本结构学习路径 线性回归简单线性回归多元线性回归 逻辑回归核心原理损失函数 梯度下降法基本思想关键公式学习率影响 PyTorch实现数据准备模型构建代码优化 核心概念对比 PyTorch逻辑回归总结 神经网络基础 基本结构 输入节点隐藏节…...

Browser-use 是连接你的AI代理与浏览器的最简单方式

AI MCP 系列 AgentGPT-01-入门介绍 Browser-use 是连接你的AI代理与浏览器的最简单方式 AI MCP(大模型上下文)-01-入门介绍 AI MCP(大模型上下文)-02-awesome-mcp-servers 精选的 MCP 服务器 AI MCP(大模型上下文)-03-open webui 介绍 是一个可扩展、功能丰富且用户友好的…...

nginx自编译重现gzip和chunked的现象

前言 最近做项目&#xff0c;发现一个比较好玩的事&#xff0c;nginx的module gzip模式默认支持1KB压缩&#xff0c;和chunked返回&#xff0c;本来现在的很多框架都很完善了&#xff0c;但是&#xff0c;一些新语言框架或者一些老旧框架会不能完整支持chunked&#xff0c;导致…...

RNN - 循环神经网络(概念介绍)

RNN 潜变量自回归模型 使用潜变量 h t h_t ht​ 总结过去信息 p ( h t ∣ h t − 1 , x t − 1 ) p(h_t | h_{t-1}, x_{t-1}) p(ht​∣ht−1​,xt−1​) p ( x t ∣ h t , x t − 1 ) p(x_t | h_t, x_{t-1}) p(xt​∣ht​,xt−1​) 循环神经网络 更新隐藏状态&#xff1…...

OpenCV的详细介绍与安装(一)

1.OpenCV概述 OpenCV是一个开源的计算机视觉和机器学习软件库&#xff0c; 它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;它支持多种编程语言&#xff08;如C、Python、Java&#xff09;&#xff0c;并可在Windows、Linux、macOS、Android和iOS等平台上运行…...

50、Spring Boot 详细讲义(七) Spring Boot 与 NoSQL

七 Spring Boot 与 NoSQL 目录 MongoDB 集成Redis 集成Elasticsearch 集成1、 MongoDB 集成 1.1 MongoDB 概述 1.1.1 MongoDB 的基本概念 文档型数据库: 数据存储为类似 JSON 的文档结构(BSON 格式)。每个文档由字段和值对组成,类似于键值对。支持嵌入式文档和数组,灵活…...

微信小程序组件传参

微信小程序组件传参感觉和vue还是挺像的 父组件向子组件传参 在小程序中父组件子组件传参&#xff0c;主要使用properties属性。演示下&#xff1a; 创建组件文件夹component&#xff0c;创建组件demoComponent&#xff0c;记得创建的时候选择组件&#xff0c;不是page页面 …...

C++实用函数:bind

本篇来介绍了C++中bind功能。 1 std::bind 在 C++ 里,std::bind 是一个函数模板,其作用是创建一个可调用对象,该对象可绑定到一组参数上。std::bind 的函数原型如下: template< class F, class... Args > /*unspecified*/ bind( F&& f, Args&&...…...

C# 程序结构||C# 基本语法

原文&#xff1a;C# 程序结构_w3cschool &#xff08;注&#xff1a;本文为教程文章&#xff0c;请勿标记为付费文章&#xff01;特此声明&#xff09; 本节我们将学习 C# 编程语言的结构&#xff0c;为了让大家能够对 C# 程序结构有个更好的理解&#xff0c;我们会先演示一个…...

分库分表-除了hash分片还有别的吗?

在分库分表的设计中,除了常见的 Hash 分片,还有多种策略根据业务场景灵活选择。以下是几种主流的分库分表策略及其应用场景、技术实现和优缺点分析,结合项目经验(如标易行投标服务平台的高并发场景)进行说明: 一、常见分库分表策略 1. 范围分片(Range Sharding) 原理:…...

单片机非耦合业务逻辑框架

在小型单片机项目开发初期&#xff0c;由于业务逻辑相对简单&#xff0c;我们往往较少关注程序架构层面的设计。 然而随着项目经验的积累&#xff0c;开发者会逐渐意识到模块间的耦合问题&#xff1a;当功能迭代时&#xff0c;一处修改可能引发连锁反应。 此时&#xff0c;构…...

WordPress - 此站点出现严重错误

本篇讲 当WordPress出现 此站点出现严重错误 时&#xff0c;该如何解决。 目录 1&#xff0c;现象 2&#xff0c; FAQ 3&#xff0c;管理Menu无法打开 下面是详细内容。 1&#xff0c;现象 此站点出现严重错误&#xff08;このサイトで重大なエラーが発生しました&#x…...

Java EE(8)——线程安全总结(翻新版)——定时器(Timer)线程池(ThreadPoolExecutor)

1.Timer 1.1Timer基本介绍 1.Timer的主要作用 任务调度&#xff1a;Timer允许你安排一个任务在未来的某个时间点执行&#xff0c;或者以固定的间隔重复执行 后台执行&#xff1a;Timer可以使用一个后台线程来执行任务&#xff0c;这意味着调度和执行任务不会阻塞主线程(主线程…...

#[特殊字符]Rhino建模教程 · 第一章:正方体建模入门

&#x1f98f;Rhino建模教程 第一章&#xff1a;正方体建模入门 本章将从最基础的操作入手&#xff0c;带你一步步掌握Rhino建模的核心流程&#xff0c;适合新手或需要复习基础的用户。 &#x1f3af; 目标&#xff1a;制作一个带凹槽、圆角、封盖的正方体模型&#xff0c;并…...

How to run ERSEM

Build ERSEM Make a “build” folder, and go into the build folder. Create “build_archer2.edit.sh” #!/usr/bin/env bash# Script for compiling FVCOM-FABM-ERSEM for ARCHER2 # # The build is split into three phases: # # 1) Build the FABM-ERSEM library. Her…...

关于QT5项目只生成一个CmakeLists.txt文件

编译器自动检测明明可以检测,Kit也没有报红 但是最后生成项目只有一个文件 一&#xff1a;检查cmake版本&#xff0c;我4.1版本cmake一直报错 cmake3.10可以用 解决之后还是有问题 把环境变量加上去&#xff1a;...

C++ string类

1.标准库中的string类 在 C 里&#xff0c;string类属于标准库的一部分&#xff0c;它在<string>头文件中定义&#xff0c;用于处理和操作字符串。 1.1string类的常用接口说明 1.1.1. string类对象的常见构造 string() &#xff08;重点&#xff09; 构造空的string类…...

如何使用ChatGPT撰写短视频爆款文案

短视频已经成为了互联网内容消费的重要形式&#xff0c;吸引观众的眼球成为内容创作者的首要任务。在短视频平台的内容过载中&#xff0c;如何写出一篇能够迅速吸引观众点击、分享并获得高互动的爆款文案&#xff0c;是每个短视频创作者都在追求的目标。今天&#xff0c;我们将…...

基于Tesseract与Opencv的电子发票识别[1]

本文我们将尝试使用tesseract识别电子发票上的信息并不断提高识别准确率&#xff0c;是一个逐渐调整的过程&#xff0c;仅用于记录研究过程。 图像识别&#xff1a;使用tesseract识别。图像预处理&#xff1a;使用OpenCV等图像处理库对发票图像进行预处理&#xff0c;如灰度化…...

数据库—函数笔记

一&#xff0c;数据库函数的分类 内置函数&#xff08;Built-in Functions&#xff09; 数据库系统自带的函数&#xff0c;无需额外定义即可直接调用。 聚合函数&#xff1a;对数据集进行计算&#xff08;如 SUM, AVG, COUNT&#xff09;。 字符串函数&#xff1a;处理文本数据…...

产品研发流程说明记录

1. 前言 在小型公司&#xff0c;产品研发流程通常较为简单&#xff0c;需求提出后经过简单评审便直接开发上线。而在中大型互联网公司&#xff0c;研发流程更加规范和系统&#xff0c;涉及多部门协作和多环节把控。本文将详细介绍一个标准的产品需求研发流程&#xff0c;帮助相…...

智慧城市:如同为城市装上智能大脑,开启智慧生活

智慧城市的概念随着信息技术的飞速发展而逐渐兴起&#xff0c;它通过集成物联网、大数据、人工智能和数字孪生等先进技术&#xff0c;为城市管理和居民生活带来了前所未有的智能化变革。本文将深入探讨这些核心技术及其在智慧城市的典型应用场景&#xff0c;展示智慧城市如何提…...

游戏测试入门知识

高内聚指的是一个模块或组件内部的功能应该紧密相关。这意味着模块内的所有元素都应该致力于实现同一个目标或功能&#xff0c;并且该模块应当尽可能独立完成这一任务。 低耦合则是指不同模块之间的依赖程度较低&#xff0c;即一个模块的变化对其它模块造成的影响尽可能小。理…...

Sentinel源码—2.Context和处理链的初始化二

大纲 1.Sentinel底层的核心概念 2.Sentinel中Context的设计思想与源码实现 3.Java SPI机制的引入 4.Java SPI机制在Sentinel处理链中的应用 5.Sentinel默认处理链ProcessorSlot的构建 4.Java SPI机制在Sentinel处理链中的应用 (1)初始化Entry会初始化处理链 (2)初始化处…...

Java基础第20天-JDBC

JDBC为访问不同的数据库提供了统一的接口&#xff0c;为使用者屏蔽了细节问题&#xff0c;程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统&#xff0c;从而完成对数据库的各种操作 ResultSet 表示数据库结果集的数据表&#xff0c;通常通过执行查询数据库的语句生…...

VMware下Ubuntu空间扩容

目的&#xff1a; Ubuntu空间剩余不足&#xff0c;需要对Ubuntu进行扩容。 使用工具&#xff1a; 使用Ubuntu系统中的gparted工具进行系统扩容。 前提&#xff1a; 1、电脑有多余的未分配磁盘空间&#xff0c;比如我的Ubuntu磁盘G盘是200G&#xff0c;现在快满了&#xff0c…...

第十一章 网络编程

在TCP/IP协议中&#xff0c;“IP地址TCP或UDP端口号”唯一标识网络通讯中的一个进程。 因此可以用Socket来描述网络连接的一对一关系。 常用的Socket类型有两种&#xff1a;流式Socket&#xff08;SOCK_STREAM&#xff09;和数据报式Socket&#xff08;SOCK_DGRAM&#xff09…...

Bad Request 400

之前一直以为400就是前端代码有问题 这下遇到了&#xff0c;发现是因为前后端不一致 后端代码注意&#xff1a;现在我写的int 前端请求 原因 &#xff1a;前后端不一致 &#x1f4a1; 问题核心&#xff1a;后端 amount 类型是 int&#xff0c;但前端传了小数 237.31...

行业深度:金融数据治理中的 SQL2API 应用创新

金融行业作为数据密集型领域&#xff0c;面临着监管合规要求严苛、数据交互频次高、安全风险防控难度大等多重挑战。SQL2API 技术通过 “数据服务化 合规化” 的双重赋能&#xff0c;成为金融机构破解数据治理难题的核心工具&#xff0c;在多个关键场景实现突破性创新。 &…...

记录学习的第二十六天

还是每日一题。 今天这道题有点难度&#xff0c;我看着题解抄的。 之后做了两道双指针问题。 这道题本来是想用纯暴力做的&#xff0c;结果出错了。&#x1f613;...

MySQLQ_数据库约束

目录 什么是数据库约束约束类型NOT NULL 非空约束UNIQUE 唯一约束PRIMARY KEY主键约束FOREIGN KEY外键约束CHECK约束DEFAULT 默认值(缺省)约束 什么是数据库约束 数据库约束就是对数据库添加一些规则&#xff0c;使数据更准确&#xff0c;关联性更强 比如加了唯一值约束&#…...

数据库ocp证书是什么水平

专业知识与技能&#xff1a;OCP 证书是对持证人在 Oracle 数据库管理、安装、配置、性能调优、备份恢复等方面专业知识和技能的权威认证。它要求考生通过一系列严格的考试&#xff0c;包括理论知识和实际操作能力的考核&#xff0c;以证明其具备扎实的 Oracle 数据库专业知识和…...

1022 Digital Library

1022 Digital Library 分数 30 全屏浏览 切换布局 作者 CHEN, Yue 单位 浙江大学 A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Each book is assigned an u…...

基于Python的PC控制Robot 小程序开发历程

1、Background&#xff1a;用万能语言Python进行Robot 的控制一直以来是我想做的事&#xff0c;刚好有机会付诸实践。Just Do It~ 2、Python 代码编写&#xff1a; import socket import time HOST "192.168.0.1" #IP PORT 2008 #Por…...

Coze平台技术解析:零代码AI开发与智能体应用实践

【资源软件】 伏脂撺掇蒌葶苘洞座 /835a36NvQn&#x1f615; 链接&#xff1a;https://pan.quark.cn/s/5180c62aacf7 「微信被删好友检测工具」筷莱坌教狴犴狾夺郝 链接&#xff1a;https://pan.quark.cn/s/fe4976448ca1 HitPaw Watermark Remover 链接&#xff1a;https://pan…...