文心一言 VS 讯飞星火 VS chatgpt (159)-- 算法导论12.3 6题

六、用go语言,当 TREE-DELETE 中的结点 z 有两个孩子时,应该选择结点 y 作为它的前驱,而不是作为它的后继。如果这样做,对 TREE-DELETE 应该做些什么必要的修改?一些人提出了一个公平策略,为前驱和后继赋予相等的优先级,这样得到了较好的实验性能。如何对 TREE-DELETE 进行修改来实现这样一种公平策略?

文心一言:

在二叉树中,当一个节点有两个孩子时,通常选择左孩子作为前驱,右孩子作为后继。然而,你提到了一种公平策略,即给前驱和后继赋予相等的优先级。这意味着我们不能仅仅依赖节点是左孩子还是右孩子来选择前驱或后继。

为了实现这种公平策略,我们可以引入一个额外的参数来决定哪个孩子被选择为前驱或后继。这个参数可以是节点的某个属性,比如节点的值或者节点的地址。

下面是一个简单的示例,说明如何修改 TREE-DELETE 以实现这种公平策略:

type TreeNode struct {  
    Val   int  
    Left  *TreeNode  
    Right *TreeNode  
}  
  
func treeDelete(root *TreeNode, target int) *TreeNode {  
    if root == nil {  
        return nil  
    }  
  
    if root.Val == target {  
        if root.Left == nil && root.Right == nil {  
            return nil  
        }  
        if root.Left != nil && root.Right != nil {  
            // 公平策略:随机选择一个孩子作为前驱,另一个孩子作为后继  
            if rand.Intn(2) == 0 {  
                root.Left = treeDelete(root.Left, target)  
            } else {  
                root.Right = treeDelete(root.Right, target)  
            }  
        } else {  
            // 只有一个孩子的情况,直接替换或删除节点  
            if root.Left != nil {  
                root = root.Left  
            } else {  
                root = root.Right  
            }  
        }  
    } else if root.Val < target {  
        root.Right = treeDelete(root.Right, target)  
    } else {  
        root.Left = treeDelete(root.Left, target)  
    }  
    return root  
}

在上面的示例中,当遇到有两个孩子的节点时,我们引入了一个随机数生成器来决定是选择左孩子还是右孩子。这使得前驱和后继的选择变得“公平”,从而提高了算法的实验性能。

在这里插入图片描述

在这里插入图片描述

讯飞星火:

要实现公平策略,我们需要对 TREE-DELETE 进行以下修改:

  1. 在找到结点 y 时,将其优先级设置为与结点 z 相同。
  2. 在将结点 y 的左子树连接到结点 z 的右子树之前,需要先断开结点 y 与其父节点之间的连接。
  3. 在将结点 y 的右子树连接到结点 z 的右子树之后,需要先断开结点 y 与其父节点之间的连接。

以下是修改后的 TREE-DELETE 代码:

func TreeDelete(T *Tree, z *Node) {
    if z.Left == nil || z.Right == nil {
        y := z
        z = z.Parent
        if z == nil {
            *T = nil
        } else if y == z.Left {
            z.Left = y.Right
        } else {
            z.Right = y.Right
        }
        if y != z {
            y.Parent = z.Parent
            if z.Parent == nil {
                *T = y
            } else if z == z.Parent.Left {
                z.Parent.Left = y
            } else {
                z.Parent.Right = y
            }
            y.Left = y.Left.SetParent(y)
            y.Right = y.Right.SetParent(y)
        }
    } else {
        y := TreeMin(z.Right)
        z.Key = y.Key
        TreeDelete(T, y)
    }
}

func TreeMin(x *Node) *Node {
    for x.Left != nil {
        x = x.Left
    }
    return x
}

这样,我们就实现了公平策略,使得前驱和后继具有相等的优先级。

在这里插入图片描述

在这里插入图片描述

360智脑:

在 Go 语言中,当 TREE-DELETE 中的结点 z 有两个孩子时,可以选择结点 y 作为它的前驱,而不是作为它的后继。要实现这一点,您需要对 TREE-DELETE 算法进行以下修改:

  1. 在删除结点 z 之前,首先找到它的前驱结点 y。可以通过遍历树的左子树并找到最右侧的节点来实现。同样地,也可以找到后继结点。

  2. 在删除结点 z 时,用前驱结点 y 的值替换 z 的值,然后删除 y。这样,树的结构不会发生改变,只是将 z 的值替换为 y 的值。随后,删除 y 而不是 z。请注意,在这种情况下,y 可能只有一个孩子或者没有孩子,所以删除 y 的操作相对简单。

  3. 为了实现公平策略,可以随机选择前驱和后继结点之一进行替换。在 Go 语言中,可以使用 math/rand 包生成一个随机数,然后根据这个随机数决定选择前驱还是后继结点。示例代码如下:

package main

import (
	"fmt"
	"math/rand"
	"time"
)

type TreeNode struct {
	key   int
	left  *TreeNode
	right *TreeNode
}

func findPredecessor(node *TreeNode) *TreeNode {
	if node == nil {
		return nil
	}

	for node.left != nil {
		node = node.left
	}

	return node
}

func findSuccessor(node *TreeNode) *TreeNode {
	if node == nil {
		return nil
	}

	for node.right != nil {
		node = node.right
	}

	return node
}

func treeDelete(root **TreeNode, key int) {
	// 省略其他代码

	// 找到前驱结点
	y := findPredecessor(z)

	// 随机选择前驱或后继结点
	rand.Seed(time.Now().UnixNano())
	if rand.Intn(2) == 0 {
		// 选择前驱结点
		y.key = z.key
		deleteNode(root, y)
	} else {
		// 选择后继结点
		y = findSuccessor(z)
		y.key = z.key
		deleteNode(root, y)
	}

	// 省略其他代码
}

func deleteNode(root **TreeNode, node *TreeNode) {
	// 省略其他代码
}

请注意,这是一个简化的示例,您需要将 treeDelete 函数中的其他逻辑和平衡操作补充完整。此外,这个示例中没有考虑如何实现公平策略。您可以根据实际需求调整随机数生成和选择前驱或后继结点的方式。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

智谱清言:

在Go语言中实现红黑树(如TREE-DELETE算法中涉及的)时,如果需要修改选择前驱或后继的策略,我们需要考虑树的平衡以及节点删除后的调整。公平策略可以为前驱和后继赋予相等的优先级,这通常涉及到在选择后继时不仅要考虑其左子树的大小,还要考虑右子树的大小。

为了实现这种公平策略,我们可以调整TREE-DELETE算法中删除节点后的调整步骤。以下是修改的步骤概要:

1.找到要删除的节点:这一步与原算法相同,从根节点开始,根据节点的颜色和子节点的颜色向下搜索,直到找到需要删除的节点。

2.删除节点:如果节点有两个子节点,则选择一个作为后继(这里我们采用公平策略,可能会选择左子树更小的那个,或者根据左右子树大小进行动态选择)。

3.调整平衡:在删除节点后,可能会打破红黑树的平衡,需要通过旋转来恢复平衡。调整时需要考虑后继节点的颜色以及其子节点的颜色。

4.修改父节点的指针:将后继节点的父节点指针指向后继节点的父节点。

5.颜色调整:根据后继节点的颜色,可能需要对其兄弟节点和父节点的颜色进行调整,以保持红黑树的性质。

下面是一个简化的Go语言实现示例,说明如何修改TREE-DELETE以实现公平策略:

package main
import (
	"fmt"
)
// 定义红黑树节点
type Node struct {
	color  string
	value  int
	left   *Node
	right  *Node
	parent *Node
}
// 红黑树删除操作
func treeDelete(root, z *Node) *Node {
	// ...(其他代码,如找到z节点等)
	// 如果z有两个孩子,选择后继
	if z.left != nil && z.right != nil {
		// 这里使用公平策略选择后继
		if z.left.size < z.right.size {
			y = z.right
		} else {
			y = z.left
		}
	}
	// ...(其他代码,如删除节点、调整平衡等)
	return root
}
// 根据红黑树性质进行颜色和指针调整
func fixUp(root *Node) {
	// ...(调整代码)
}
// 主函数
func main() {
	// 构建红黑树
	// ...
	// 删除节点
	// ...
	// 输出结果
	// ...
}

请注意,这只是一个框架示例,具体实现细节取决于红黑树的详细实现和TREE-DELETE算法的具体步骤。实现公平策略可能需要更复杂的调整逻辑,以保持树的平衡。在调整时,需要遵循红黑树的五项基本性质:

1.每个节点要么是红色,要么是黑色。

2.根节点是黑色的。

3.每个叶子节点(NIL节点,空节点)是黑色的。

4.如果一个节点是红色的,则它的子节点必须是黑色的(不能有两个连续的红色节点)。

5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

在实践中,实现公平策略可能需要多次调整和颜色翻转,以确保树的平衡性和红黑树性质不被破坏。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通义千问:

在 TREE-DELETE 中,当结点 z 有两个孩子时,我们通常会选择结点 y 作为它的后继,然后将 y 的值复制到 z,然后删除 y。如果我们要选择前驱作为 z 的替代,我们需要做出以下修改:

1.找到结点 z 的前驱 y,而不是后继。前驱是 z 的左子树中的最大结点,我们可以从 z 的左孩子开始,沿着右链接找到最大的结点。

2.将 y 的值复制到 z。

3.删除结点 y。由于 y 是 z 的左子树中的最大结点,所以 y 可能没有右孩子,或者有右孩子但其右孩子没有左孩子。我们需要处理这两种情况:

a. 如果 y 没有右孩子,那么我们可以直接将 y 的父结点的左孩子设置为 y 的左孩子。

b. 如果 y 有右孩子,但是其右孩子的左孩子为空,那么我们可以将 y 的父结点的左孩子设置为 y 的右孩子。

c. 如果 y 有右孩子,并且其右孩子的左孩子不为空,那么我们需要找到 y 的右子树中的最小结点,这个结点就是 y 的后继。我们将这个后继结点的值复制到 y,然后删除这个后继结点。这个过程类似于原来找后继的过程,只是方向相反。

对于公平策略,我们可以这样做:

1.在找到结点 z 的前驱 y 和后继 y’ 后,我们随机选择其中一个作为 z 的替代。

2.将选中的 y 或 y’ 的值复制到 z。

3.删除选中的 y 或 y’。根据选中的结点是前驱还是后继,我们按照上述修改后的 TREE-DELETE 算法进行处理。

这样,我们给前驱和后继赋予了相等的优先级,实现了公平策略。

在这里插入图片描述

天工:

在TREE-DELETE操作中,当结点z有两个孩子时,如果选择结点y作为它的前驱,那么在TREE-DELETE之后需要进行的操作就比较复杂,因为需要同时删除结点z和它的前驱结点y,这会导致数据结构的不稳定性。因此,为了避免这种情况,我们应该选择结点z的后继作为前驱。

如果我们想要实现一个公平策略,使得前驱和后继具有相等的优先级,那么我们可以在TREE-DELETE操作中,首先选择前驱结点,然后将其删除,接着再选择后继结点作为新的前驱。这样,我们可以保证每次删除操作都是在结点的前驱和后继之间进行选择,并且不会出现数据结构不稳定的情况。

具体的实现方法可以参考下面的代码:

// TREE-DELETE操作
func TREE-DELETE(node) {
    if node == nil {
        return
    }
    if node.left == nil && node.right == nil {
        return
    }
    if node.left == node.right {
        node.left = nil
        node.right = nil
        return
    }
    // 找到前驱结点
    pred := Find(node.left, node.left.left)
    if pred.left != node {
        // 如果前驱结点的左孩子是当前节点,则选择前驱结点的右孩子作为前驱
        if pred.left.left == node {
            pred.left = node.right
        } else {
            pred.right = node.right
        }
        node.left = pred.left
        node.right = pred.right
        return TREE-DELETE(pred.left)
    }
    // 如果前驱结点的左孩子不是当前节点,则选择前驱结点的左孩子作为前驱
    pred.left = node.left
    pred.right = node.right
    TREE-DELETE(pred.left)
    TREE-DELETE(pred.right)
}

// Find函数查找指定节点的前驱结点
func Find(node, pred Node) Node {
    if node == pred.right {
        return Find(pred.left, node)
    }
    if node == pred.left {
        return Find(pred.right, node)
    }
    return pred
}

在这个实现中,我们使用Find函数来查找指定节点的前驱结点,如果节点的左孩子是当前节点,则选择节点的右孩子作为前驱;否则,选择节点的左孩子作为前驱。如果前驱结点只有一个孩子,那么我们直接将前驱结点删除即可。如果前驱结点有两个孩子,我们首先选择前驱结点的左孩子作为前驱,然后删除前驱结点,最后选择前驱结点的后继结点作为新的前驱。

在这里插入图片描述

在这里插入图片描述

灵小智:

在 Go 语言中,如果要选择结点 z 的前驱作为替代结点,而不是选择后继作为替代结点,在 TREE-DELETE 方法中需要进行以下必要的修改:
  1. 在找到 z 结点的前驱 y 后,需要将 y 的值复制给 z,而不是将 z 直接删除。

  2. 修改 TREE-DELETE 中的代码,使其按照相等的优先级处理前驱和后继。

下面是修改过的 TREE-DELETE 方法的伪代码,以实现这样一种公平策略:

TREE-DELETE(root, z)
    if z.left == NIL or z.right == NIL
        y = z
    else
        y = TREE-SUCCESSOR(z)

    if y.left != NIL
        x = y.left
    else
        x = y.right

    x.parent = y.parent

    if y.parent == NIL
        root = x
    else if y == y.parent.left
        y.parent.left = x
    else
        y.parent.right = x

    if y != z
        z.value = y.value

    if y.priority == "前驱"
        // 处理前驱的情况
    else if y.priority == "后继"
        // 处理后继的情况

在上述代码中,我们添加了一个名为 y.priority 的属性来表示前驱和后继的优先级。根据公平策略,当 y.priority 为 “前驱” 时,可以执行特定于前驱的操作,当 y.priority 为 “后继” 时,可以执行特定于后继的操作。具体的操作实现会根据具体的需求和实验性能来确定。

请注意,以上只是伪代码示例,具体的实现可能需要根据你的数据结构和算法设计做适当的调整。希望这能帮助到你!

在这里插入图片描述

在这里插入图片描述

chatgpt:

在Go语言中,当TREE-DELETE操作中的节点z有两个孩子时,选择节点y作为它的前驱而不是后继是一个常见的做法。如果要实现公平策略,即给予前驱和后继相等的优先级,需要对TREE-DELETE进行一些修改。

1.首先,在找到待删除节点z的前驱y时,需要将其设置为z的右子树中的最小节点(而不是左子树中的最大节点)。

2.其次,在执行删除操作时,可以将y替换为z,并将y原本所在位置标记为空。这样可以保证公平性。

下面是对TREE-DELETE进行修改后可能的代码示例:

func TreeDeleteFair(root *Node, z *Node) {
    var y, x *Node

    if z.left == nil || z.right == nil {
        y = z
    } else {
        y = FindMinimum(z.right) // 找到右子树中的最小值作为前驱
    }

    if y.left != nil {
        x = y.left
    } else {
        x = y.right
    }

    if x != nil {
        x.parent = y.parent
    }

    if y.parent == nil {
        root = x
    } else if y == y.parent.left { // 如果y是父节点的左孩子,则更新父节点左孩子指针
        y.parent.left = x
    } else { // 否则更新父节点右孩子指针
        y.parent.right = x
    }

    if y != z { // 如果y不是待删除节点z本身,则替换z的值
        z.key = y.key
        // 这里还可以根据需要,将y的其他属性复制到z中
    }
}

这样修改后的TREE-DELETE操作会公平地选择前驱作为待删除节点的替代,并进行相应的指针更新。请注意,上述示例代码仅演示了大致思路,并非完整实现,具体实现可能因数据结构和具体情况而有所差异。

在这里插入图片描述

在这里插入图片描述

kimi:

在 TREE-DELETE 操作中,当节点 z 有两个孩子时,我们可以选择前驱(左子树的最大值节点)或后继(右子树的最小值节点)作为替换节点。为了实现这种修改,我们需要对 TREE-DELETE 算法进行一些调整。以下是修改后的 TREE-DELETE 操作的伪代码:

func deleteT(root *Node, node *Node) *Node {
    if root == nil {
        return nil
    }

    // 寻找前驱(左子树的最大值节点)或后继(右子树的最小值节点)
    pred, succ := findPredecessorSuccessor(node)

    // 如果要删除的节点有两个子节点
    if pred != nil && succ != nil {
        // 使用前驱或后继的值替换要删除的节点的值
        if shouldUsePredecessor(node, pred, succ) {
            node.Value = pred.Value
            node = pred
        } else {
            node.Value = succ.Value
            node = succ
        }

        // 删除前驱或后继
        if node == root {
            root = deleteT(root, node)
        } else {
            if node.p.Left == node {
                node.p.Left = deleteT(node.p.Left, node)
            } else {
                node.p.Right = deleteT(node.p.Right, node)
            }
        }
    } else {
        // 当要删除的节点没有子节点或只有一个子节点时,直接删除
        if node == root {
            root = deleteSingleNode(root, node)
        } else {
            if node.p.Left == node {
                node.p.Left = deleteSingleNode(node.p.Left, node)
            } else {
                node.p.Right = deleteSingleNode(node.p.Right, node)
            }
        }
    }

    return root
}

// 辅助函数:根据公平策略选择前驱或后继
func shouldUsePredecessor(node, pred, succ *Node) bool {
    // 在这里实现公平策略,例如随机选择或根据实验性能选择
    // 为了简化示例,这里总是选择前驱
    return true
}

// 辅助函数:查找前驱和后继
func findPredecessorSuccessor(node *Node) (pred, succ *Node) {
    if node.Left != nil {
        pred = findMax(node.Left)
    } else {
        pred = findPredecessor(node)
    }

    if node.Right != nil {
        succ = findMin(node.Right)
    } else {
        succ = findSuccessor(node)
    }

    return pred, succ
}

// 辅助函数:查找给定节点的前驱节点
func findPredecessor(node *Node) *Node {
    if node.p == nil {
        return nil
    }

    if node.p.Left == node {
        return node.p
    }

    return findMax(node.p.Left)
}

// 辅助函数:查找给定节点的后继节点
func findSuccessor(node *Node) *Node {
    if node.p == nil {
        return nil
    }

    if node.p.Right == node {
        return node.p
    }

    return findMin(node.p.Right)
}

// 辅助函数:查找以给定节点为根的子树的最大值节点
func findMax(node *Node) *Node {
    for node.Right != nil {
        node = node.Right
    }
    return node
}

// 辅助函数:查找以给定节点为根的子树的最小值节点
func findMin(node *Node) *Node {
    for node.Left != nil {
        node = node.Left
    }
    return node
}

// 辅助函数:删除没有子节点或只有一个子节点的节点
func deleteSingleNode(node *Node) *Node {
    if node.Left != nil {
        return node.Left
    }
    return node.Right
}

在这个示例中,我们实现了一个简单的公平策略,总是选择前驱。你可以根据需要实现更复杂的策略,例如随机选择前驱或后继,或者根据实验性能选择。这个修改后的 TREE-DELETE 操作应该在 O(h) 时间内执行,其中 h 是树 T 的高度。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/254843.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 React 实现自定义数据展示日历组件

目录 背景实现日历组件父组件数据 效果最后 背景 项目中需要实现一个日历组件&#xff0c;并且需要展示月&#xff0c;日所对应的数据&#xff08;因为项目需求问题&#xff0c;就不统计年数据总量&#xff09;。网上找了一堆&#xff0c;基本都不大符合项目需求&#xff0c;且…

完全二叉数的全值

分析&#xff1a;我们主要是对数组分割&#xff0c;将每一类累加起来&#xff0c;按顺序存储在另一个数组里面&#xff0c;在对那一个数组进行是筛选&#xff0c;选出最大的那一个下标&#xff0c;在的打印那一个下标。 #include <stdio.h> int main(){int m,n,j,i,t1,s…

IO接口 IPC两个文件对话

实现AB进程对话。 1. A进程发送一-句话后&#xff0c; B进程接收到打印。然后B进程发送一句话&#xff0c;A进程接收后打印 2.重复上述步骤。直到AB接收或者发送完quit后&#xff0c; 结束AB进程 A文件 #include <func.h> #include <stdio.h> #include <errno…

面试必考精华版Leetcode1137. 第 N 个泰波那契数

题目&#xff1a; 代码&#xff08;首刷看解析&#xff09;&#xff1a; class Solution { public:int tribonacci(int n) {// 1.初始化if(n0) return 0;else if(n1) return 1;else if(n2) return 1;int p0,q1,r1;int s0;// 2.遍历方向 左 → 右for(int i 3; i < n ; i)…

openwrt docker nginx 站点搭建

应为家里一直是 openwrt 软路由&#xff0c;这样以来也不用 重新买服务器了&#xff0c;就直接在 openwrt 上面跑个 nginx就行了。把自己的一些东西就可以放上面了。资源再利用哈哈&#xff1b; 先 ssh 连接上 openwrt &#xff1a;我这里的 openwrt 最近刚更新的固件&#xff…

金蝶云星空修改业务对象标识

文章目录 金蝶云星空修改业务对象标识说明解决方案具体操作实操 金蝶云星空修改业务对象标识 说明 一个业务对象的产生&#xff0c;涉及10个表起。 解决方案 还是手工删除重新创建保险。 具体操作 先备份需要删除的元数据&#xff0c;或者扩展&#xff0c;然后重新创建或…

Python给exe添加以管理员运行的属性

需求 有些应用每次启动都需要用管理员权限运行&#xff0c;比如Python注入dll时&#xff0c;编辑器或cmd就需要以管理员权限运行&#xff0c;不然注入就会失败。 这篇文章用编程怎么修改配置实现打开某个软件都是使用管理员运行&#xff0c;就不用每次都右键点击以管理员身份…

Unity SRP 管线【第四讲:URP 阴影】

URP 全文源码解析参照 引入 在UniversalRenderer.cs/ line 505行处 此处已经准备好了所有渲染数据&#xff08;所有数据全部存储在了renderingData中&#xff09; 我们只用renderingData中的数据初设置mainLightShadows bool mainLightShadows m_MainLightShadowCasterPass…

德人合科技 | 防止公司电脑文件数据资料外泄,自动智能透明加密保护系统

【透明加密软件】——防止公司电脑文件数据资料防止外泄&#xff0c;自动智能透明加密保护内部核心文件、文档、图纸、源代码、音视频等资料&#xff01; PC端访问地址&#xff1a; www.drhchina.com &#x1f31f; 核心功能&#xff1a; 透明加密&#xff1a;采用高级加密算…

VR虚拟动漫角色智能化导览丰富体验乐趣

AI数字人助理可以为我们带来哪些帮助? 随着人工智能技术的不断发展&#xff0c;AI数字人助理已经成为了我们日常生活和工作中的得力助手。它们具备智能感知、语音识别、自然语言处理等多种技能&#xff0c;可以为我们带来很多帮助和便利。 一、提高工作效率 AI数字人助理可以帮…

SCC-Tarjan,缩点问题

文章目录 前言引例什么是缩点&#xff1f;缩点的应用一、合并强连通子图为强连通图题目描述输入/输出格式原题链接题目详解 二、集合间偏序关系题目描述输入/输出格式原题链接题目详解 三、最大点权和路径题目描述输入/输出格式原题链接题目详解 其他OJ练习 前言 图论中的缩点问…

【MySQL·8.0·源码】MySQL 语法树基础知识

基础 我们都知道 SQL 语句经过词法分析器时&#xff0c;识别扫描输入的 SQL 语句&#xff0c;将关键词、标识符、常量等分解转换成独立的 tokens&#xff0c;进一步在语法分析阶段根据语法规则检查 tokens 序列的结构并不断 shift 、reduce 构建成 SQL 语法解析树。 在 MySQL…

ubuntu18.04 64 位安装笔记——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

进入VirtuakBox官网&#xff0c;网址链接&#xff1a;Oracle VM VirtualBoxhttps://www.virtualbox.org/ 网页连接&#xff1a;Ubuntu Virtual Machine Images for VirtualBox and VMwarehttps://www.osboxes.org/ubuntu/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写S…

19 高速列车场景下3Gpp 5G NR的DMRS设计与评估

文章目录 解决问题设计DMRS仿真参数仿真结果 解决问题 多普勒/扩展影响十分显著&#xff0c;设计用于信道估计时&#xff0c;需要考虑解调参考信号&#xff0c;5G用DMRS结构而不是CRS结构&#xff0c;因此需要为高速UE设计DMRS结构&#xff0c;DMRS设计是为了提高信道估计并减…

jdk多版本切换环境变量管理(jdk1.8和jdk17)

jdk多版本切换环境变量管理&#xff08;jdk1.8和jdk17&#xff09; 看了很多网上的博客&#xff0c;根本都不行&#xff0c;我总结出来规律如下&#xff1a; 首先环境变量要配置成这个样子&#xff1a;这些博客都会教你们配 接着配什么classpath&#xff0c;看其他博客就行 还…

百度地图添加坐标点,并返回坐标信息

1、创建地图容器 在mounted中初始化地图、鼠标绘制工具和添加鼠标监听事件 vue data中添加地图和绘制工具对象 2、添加初始化化地图方法 initMap(longitude, latitude) {let that thisthat.map new BMapGL.Map("container");// 创建地图实例if (longitude null ||…

亿某通电子文档安全管理系统任意文件上传漏洞 CNVD-2023-59471

1.漏洞概述 亿某通电子文档安全管理系统是一款电子文档安全防护软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产。亿赛通电子文档安全管理系统UploadFileFromClientServiceForClient接口处存在任意文件…

大创项目推荐 深度学习 opencv python 公式识别(图像识别 机器视觉)

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的数学公式识别算法实现 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学…

2024年【建筑电工(建筑特殊工种)】报名考试及建筑电工(建筑特殊工种)新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年建筑电工(建筑特殊工种)报名考试为正在备考建筑电工(建筑特殊工种)操作证的学员准备的理论考试专题&#xff0c;每个月更新的建筑电工(建筑特殊工种)新版试题祝您顺利通过建筑电工(建筑特殊工种)考试。 1、【单…

内网离线搭建之----nginx高可用

1.系统版本 虚拟机192.168.9.184 虚拟机192.168.9.185 2.nginx以及依赖下载地址 nginx&#xff1a;nginx: download pcre&#xff1a;PCRE - Browse /pcre/8.45 at SourceForge.net zlib&#xff1a;zlib Home Site 基本都在置顶的资源里 3.检查环境安装依赖的依赖&#xf…