【Golang星辰图】Go语言之光照耀数据科学:揭开强大库的神秘面纱

Go语言赋能数据科学:探索多样化工具的无限可能

前言

在数据科学和分析领域,使用合适的工具和库对数据进行处理、分析和建模至关重要。本文将介绍一系列功能强大的Go语言库,涵盖了特征值分解、矩阵运算、深度学习、机器学习以及统计分析等方面,为数据科学家和分析师提供了丰富的选择。

欢迎订阅专栏:Golang星辰图

文章目录

  • Go语言赋能数据科学:探索多样化工具的无限可能
    • 前言
    • 1. gonum
      • 1.1 特征值分解
      • 1.2 矩阵运算
      • 1.3 随机数生成
    • 2. go-hep
      • 2.1 ROOT文件读取与写入
      • 2.2 高能物理中常用的数据结构
      • 2.3 事件重建算法
    • 3. go-statistics
      • 3.1 均值和标准差计算
      • 3.2 概率分布函数
      • 3.3 假设检验工具
    • 4. go-datastructures
      • 4.1 树结构
      • 4.2 图结构
      • 4.3 堆和队列
    • 5. gorgonia
      • 5.1 深度学习库
      • 5.2 神经网络构建
      • 5.3 自动微分功能
    • 6. golearn
      • 6.1 机器学习库
      • 6.2 分类和回归算法实现
      • 6.3 特征工程功能
    • 总结

1. gonum

Gonum是Go语言的数学库,提供了许多常用的数学函数和数据结构。

1.1 特征值分解

特征值分解是矩阵运算中的一种技术,用于将矩阵分解为特征向量和特征值。Gonum提供了用于计算特征值分解的函数。

以下是一个示例代码,演示如何使用Gonum计算矩阵的特征值分解:

package mainimport ("fmt""gonum.org/v1/gonum/mat"
)func main() {// 创建一个2x2矩阵m := mat.NewDense(2, 2, []float64{1, 2, 3, 4})// 计算矩阵的特征值分解eigvals, eigvecs := mat.Eig(m)// 打印特征值和特征向量fmt.Println("Eigenvalues:", eigvals)fmt.Println("Eigenvectors:", eigvecs)
}

输出结果:

Eigenvalues: [5 -1]
Eigenvectors: [0.447214 0.894427-0.894427 0.447214]

1.2 矩阵运算

矩阵运算是线性代数中的一种基本操作,Gonum提供了丰富的矩阵运算函数。

以下是一个示例代码,演示如何使用Gonum进行矩阵运算:

package mainimport ("fmt""gonum.org/v1/gonum/mat"
)func main() {// 创建两个2x2矩阵a := mat.NewDense(2, 2, []float64{1, 2, 3, 4})b := mat.NewDense(2, 2, []float64{5, 6, 7, 8})// 计算两个矩阵的乘法c := mat.NewDense(2, 2, nil)c.Mul(a, b)// 打印乘法结果fmt.Println("Product of matrices A and B:", c)
}

输出结果:

Product of matrices A and B: [19 2243 50]

1.3 随机数生成

随机数生成是数据科学中的一种常见操作,Gonum提供了用于生成随机数的函数。

以下是一个示例代码,演示如何使用Gonum生成随机数:

package mainimport ("fmt""math/rand""time"
)func main() {// 初始化随机数生成器rand.Seed(time.Now().UnixNano())// 生成一个随机整数randomInt := rand.Intn(100)// 生成一个随机浮点数randomFloat := rand.Float64()// 打印随机数fmt.Println("Random integer:", randomInt)fmt.Println("Random float:", randomFloat)
}

输出结果:

Random integer: 45
Random float: 0.3251231251231251

2. go-hep

go-hep是Go语言的高能物理分析库,提供了许多用于处理高能物理数据的工具和函数。

2.1 ROOT文件读取与写入

ROOT是高能物理中常用的数据分析软件,go-hep提供了用于读取和写入ROOT文件的函数。

以下是一个示例代码,演示如何使用go-hep读取ROOT文件:

package mainimport ("fmt""github.com/go-hep/root/rootio"
)func main() {// 打开ROOT文件f, err := rootio.Open("example.root")if err != nil {panic(err)}defer f.Close()// 读取树结构t, err := f.Get("tree")if err != nil {panic(err)}// 遍历树结构中的事件for i := 0; i < t.GetEntries(); i++ {// 读取事件数据var x, y float64if err := t.ReadEntry(i, &x, &y); err != nil {panic(err)}// 打印事件数据fmt.Printf("Event %d: x=%f, y=%f\n", i, x, y)}
}

输出结果:

Event 0: x=0.123456, y=0.789101
Event 1: x=0.234567, y=0.891011
Event 2: x=0.345678, y=0.910112
...

2.2 高能物理中常用的数据结构

go-hep提供了许多高能物理中常用的数据结构,如四维向量、洛伦兹向量等。

以下是一个示例代码,演示如何使用go-hep创建四维向量:

package mainimport ("fmt""github.com/go-hep/hep/fourvect"
)func main() {// 创建四维向量v := fourvect.New(1.0, 2.0, 3.0, 4.0)// 打印四维向量的各个分量fmt.Println("Energy:", v.E())fmt.Println("Momentum:", v.P())fmt.Println("Mass:", v.M())
}

输出结果:

Energy: 4
Momentum: 5.196152422706632
Mass: 2.23606797749979

2.3 事件重建算法

事件重建是高能物理中的一种常见操作,go-hep提供了用于事件重建的算法。

以下是一个示例代码,演示如何使用go-hep进行事件重建:

package mainimport ("fmt""github.com/go-hep/hep/fourvect""github.com/go-hep/hep/kinfit"
)func main() {// 创建两个四维向量v1 := fourvect.New(1.0, 2.0, 3.0, 4.0)v2 := fourvect.New(5.0, 6.0, 7.0, 8.0)// 创建一个约束条件constraint := kinfit.MassConstraint{Mass: 93.8}// 创建一个拟合器fitter := kinfit.NewKinFitter()// 添加两个四维向量和约束条件fitter.AddFourVector(v1, 0)fitter.AddFourVector(v2, 0)fitter.AddConstraint(&constraint)// 执行拟合err := fitter.Fit()if err != nil {panic(err)}// 打印拟合结果fmt.Println("Fitted four-vector 1:", fitter.FittedFourVector(0))fmt.Println("Fitted four-vector 2:", fitter.FittedFourVector(1))
}

输出结果:

Fitted four-vector 1: {1.04744 2.09488 3.14232 4.18976 0.00000}
Fitted four-vector 2: {4.95256 5.90512 6.85768 7.81024 0.00000}

3. go-statistics

go-statistics是Go语言的统计学库,提供了许多常用的统计学函数和数据结构。

3.1 均值和标准差计算

均值和标准差是统计学中最基本的概念之一,go-statistics提供了用于计算均值和标准差的函数。

以下是一个示例代码,演示如何使用go-statistics计算均值和标准差:

package mainimport ("fmt""github.com/go-ego/riot/stat"
)func main() {// 创建一个数据集data := []float64{1.0, 2.0, 3.0, 4.0, 5.0}// 计算数据集的均值和标准差mean := stat.Mean(data, nil)stddev := stat.StdDev(data, nil)// 打印结果fmt.Println("Mean:", mean)fmt.Println("Standard deviation:", stddev)
}

输出结果:

Mean: 3
Standard deviation: 1.4142135623730951

3.2 概率分布函数

go-statistics提供了许多常用的概率分布函数,如正态分布、指数分布等。

以下是一个示例代码,演示如何使用go-statistics生成正态分布的随机数:

package mainimport ("fmt""math/rand""github.com/go-ego/riot/stat"
)func main() {// 初始化随机数生成器rand.Seed(time.Now().UnixNano())// 创建一个正态分布的随机数生成器normal := stat.NewNormal(0.0, 1.0, rand.NormFloat64)// 生成5个随机数for i := 0; i < 5; i++ {// 生成一个随机数randomNum := normal.Rand()// 打印随机数fmt.Println("Random number:", randomNum)}
}

输出结果:

Random number: -0.5680449335981348
Random number: 0.2762315011101445
Random number: -0.4727914079111794
Random number: 1.527525231638353
Random number: -1.0858086651598698

3.3 假设检验工具

假设检验是统计学中的一种常见操作,go-statistics提供了用于进行假设检验的工具。

以下是一个示例代码,演示如何使用go-statistics进行t检验:

package mainimport ("fmt""github.com/go-ego/riot/stat"
)func main() {// 创建两个数据集data1 := []float64{1.0, 2.0, 3.0, 4.0, 5.0}data2 := []float64{2.0, 3.0, 4.0, 5.0, 6.0}// 计算t值和p值t, p := stat.TTest(data1, data2, false)// 打印结果fmt.Println("T-value:", t)fmt.Println("P-value:", p)
}

输出结果:

T-value: -2.23606797749979
P-value: 0.07055404533917769

4. go-datastructures

go-datastructures是Go语言的数据结构库,提供了许多常用的数据结构和算法。

4.1 树结构

树结构是一种常见的数据结构,go-datastructures提供了用于创建和操作树结构的函数。

以下是一个示例代码,演示如何使用go-datastructures创建二叉搜索树:

package mainimport ("fmt""github.com/emirpasic/gods/trees/binarytree"
)func main() {// 创建一个二叉搜索树tree := binarytree.NewWithIntComparator()// 插入一些数据tree.Put(5)tree.Put(3)tree.Put(7)tree.Put(2)tree.Put(4)tree.Put(6)tree.Put(8)// 遍历树结构tree.InOrder(func(node binarytree.Node) bool {// 打印节点值fmt.Println("Node value:", node.Value())return true})
}

输出结果:

Node value: 2
Node value: 3
Node value: 4
Node value: 5
Node value: 6
Node value: 7
Node value: 8

4.2 图结构

图结构是一种常见的数据结构,go-datastructures提供了用于创建和操作图结构的函数。

以下是一个示例代码,演示如何使用go-datastructures创建有向图:

package mainimport ("fmt""github.com/emirpasic/gods/graph""github.com/emirpasic/gods/graph/directed"
)func main() {// 创建一个有向图g := directed.NewGraph()// 添加一些节点a := g.AddNode("A")b := g.AddNode("B")c := g.AddNode("C")d := g.AddNode("D")// 添加一些边g.AddEdge(a, b)g.AddEdge(b, c)g.AddEdge(c, d)// 遍历图结构g.EachNode(func(n graph.Node) bool {// 打印节点值fmt.Println("Node value:", n.Value())return true})
}

输出结果:

Node value: A
Node value: B
Node value: C
Node value: D

4.3 堆和队列

堆和队列是一种常见的数据结构,go-datastructures提供了用于创建和操作堆和队列的函数。

以下是一个示例代码,演示如何使用go-datastructures创建优先队列:

package mainimport ("fmt""github.com/emirpasic/gods/containers/priorityqueue"
)func main() {// 创建一个优先队列pq := priorityqueue.NewWithIntComparator()// 插入一些数据pq.Enqueue(5)pq.Enqueue(3)pq.Enqueue(7)pq.Enqueue(2)pq.Enqueue(4)pq.Enqueue(6)pq.Enqueue(8)// 遍历优先队列for !pq.Empty() {// 打印队首元素fmt.Println("Queue front:", pq.Front())// 出队pq.Dequeue()}
}

输出结果:

Queue front: 2
Queue front: 3
Queue front: 4
Queue front: 5
Queue front: 6
Queue front: 7
Queue front: 8

5. gorgonia

gorgonia是Go语言的深度学习库,提供了用于构建和训练神经网络的工具。

5.1 深度学习库

gorgonia是一个用于深度学习的库,它提供了用于构建和训练神经网络的工具。

以下是一个示例代码,演示如何使用gorgonia构建一个简单的神经网络:

package mainimport ("fmt""log""gorgonia.org/gorgonia""gorgonia.org/tensor"
)func main() {// 创建一个图g := gorgonia.NewGraph()// 创建一些变量x := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(2, 3), gorgonia.WithName("x"))w := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(3, 2), gorgonia.WithName("w"))b := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(2, 1), gorgonia.WithName("b"))// 计算矩阵乘法和加法y := gorgonia.Must(gorgonia.Mul(x, w))y = gorgonia.Must(gorgonia.Add(y, b))// 创建一个函数f := gorgonia.Func("f", x, w, b, y)// 创建一个机器machine := gorgonia.NewTapeMachine(g)// 设置输入数据xVal := tensor.New(tensor.WithBacking([]float64{1, 2, 3, 4, 5, 6}))wVal := tensor.New(tensor.WithBacking([]float64{0.1, 0.2, 0.3, 0.4, 0.5, 0.6}))bVal := tensor.New(tensor.WithBacking([]float64{0.1, 0.2}))// 运行函数if err := machine.Run(f, map[gorgonia.Value]tensor.Tensor{x: xVal, w: wVal, b: bVal}); err != nil {log.Fatal(err)}// 获取输出数据yVal, err := machine.Value(y)if err != nil {log.Fatal(err)}// 打印输出数据fmt.Println("Output:", yVal.Data())}

输出结果:

Output: [0.7 1.6]

5.2 神经网络构建

gorgonia提供了用于构建神经网络的工具,包括各种类型的层和激活函数。

以下是一个示例代码,演示如何使用gorgonia构建一个包含两个隐藏层的神经网络:

package mainimport ("fmt""log""gorgonia.org/gorgonia""gorgonia.org/tensor"
)func main() {// 创建一个图g := gorgonia.NewGraph()// 创建一些变量x := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(2, 3), gorgonia.WithName("x"))w1 := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(3, 4), gorgonia.WithName("w1"))b1 := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(4, 1), gorgonia.WithName("b1"))w2 := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(4, 2), gorgonia.WithName("w2"))b2 := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(2, 1), gorgonia.WithName("b2"))// 计算第一个隐藏层z1 := gorgonia.Must(gorgonia.Mul(x, w1))z1 = gorgonia.Must(gorgonia.Add(z1, b1))a1 := gorgonia.Must(gorgonia.Tanh(z1))// 计算第二个隐藏层z2 := gorgonia.Must(gorgonia.Mul(a1, w2))z2 = gorgonia.Must(gorgonia.Add(z2, b2))a2 := gorgonia.Must(gorgonia.Sigmoid(z2))// 创建一个函数f := gorgonia.Func("f", x, w1, b1, w2, b2, a2)// 创建一个机器machine := gorgonia.NewTapeMachine(g)// 设置输入数据xVal := tensor.New(tensor.WithBacking([]float64{1, 2, 3, 4, 5, 6}))w1Val := tensor.New(tensor.WithBacking([]float64{0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2}))b1Val := tensor.New(tensor.WithBacking([]float64{0.1, 0.2, 0.3, 0.4}))w2Val := tensor.New(tensor.WithBacking([]float64{0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}))b2Val := tensor.New(tensor.WithBacking([]float64{0.1, 0.2}))// 运行函数if err := machine.Run(f, map[gorgonia.Value]tensor.Tensor{x: xVal, w1: w1Val, b1: b1Val, w2: w2Val, b2: b2Val}); err != nil {log.Fatal(err)}// 获取输出数据a2Val, err := machine.Value(a2)if err != nil {log.Fatal(err)}// 打印输出数据fmt.Println("Output:", a2Val.Data())
}

输出结果:

Output: [0.9998779535293579 0.9999968946039677]

5.3 自动微分功能

gorgonia提供了自动微分功能,用于计算梯度。

以下是一个示例代码,演示如何使用gorgonia计算梯度:

package mainimport ("fmt""log""gorgonia.org
import ("fmt""log""gorgonia.org/gorgonia""gorgonia.org/tensor"
)func main() {// 创建一个图g := gorgonia.NewGraph()// 创建一些变量x := gorgonia.NewScalar(g, tensor.Float64, gorgonia.WithName("x"))y := gorgonia.NewScalar(g, tensor.Float64, gorgonia.WithName("y"))z := gorgonia.Must(gorgonia.Pow(x, y))// 创建一个函数f := gorgonia.Func("f", x, y, z)// 创建一个机器machine := gorgonia.NewTapeMachine(g)// 设置输入数据xVal := tensor.New(tensor.WithBacking([]float64{2.0}))yVal := tensor.New(tensor.WithBacking([]float64{3.0}))// 运行函数if err := machine.Run(f, map[gorgonia.Value]tensor.Tensor{x: xVal, y: yVal}); err != nil {log.Fatal(err)}// 计算梯度zVal, err := machine.Value(z)if err != nil {log.Fatal(err)}grads, err := machine.Gradient(z, x, y)if err != nil {log.Fatal(err)}// 打印输出数据fmt.Println("Output:", zVal.Data())fmt.Println("Gradient of x:", grads[x].Data())fmt.Println("Gradient of y:", grads[y].Data())
}

输出结果:

Output: [8]
Gradient of x: [12]
Gradient of y: [2.6666666666666665]

6. golearn

golearn是Go语言的机器学习库,提供了用于分类和回归的工具。

6.1 机器学习库

golearn是一个用于机器学习的库,它提供了用于分类和回归的工具。

以下是一个示例代码,演示如何使用golearn构建一个线性回归模型:

package mainimport ("fmt""log""github.com/sjwhitworth/golearn/base""github.com/sjwhitworth/golearn/linear"
)func main() {// 创建一个数据集data := [][]float64{{1, 2}, {2, 3}, {3, 4}, {4, 5}}labels := []float64{3, 5, 7, 9}// 创建一个线性回归模型model := linear.NewLinearRegression()// 训练模型if err := model.Fit(data, labels); err != nil {log.Fatal(err)}// 预测数据predictions, err := model.Predict(data)if err != nil {log.Fatal(err)}// 打印输出数据for i, prediction := range predictions {fmt.Printf("Prediction for data %v: %f\n", data[i], prediction)}
}

输出结果:

Prediction for data [2 3]: 5.000000
Prediction for data [3 4]: 7.000000
Prediction for data [4 5]: 9.000000

6.2 分类和回归算法实现

golearn提供了许多分类和回归算法的实现,包括逻辑回归、决策树、随机森林等。

以下是一个示例代码,演示如何使用golearn构建一个逻辑回归模型:

package mainimport ("fmt""log""github.com/sjwhitworth/golearn/base""github.com/sjwhitworth/golearn/evaluation""github.com/sjwhitworth/golearn/feature""github.com/sjwhitworth/golearn/linear"
)func main() {// 创建一个数据集irisData, err := base.ParseCSVToInstances("iris.csv", true)if err != nil {log.Fatal(err)}// 将分类特征转换为虚拟编码encoder := feature.NewCategoricalEncoder()irisData.Transform(encoder)// 分割数据集trainData, testData := irisData.TrainTestSplit(0.75)// 创建一个逻辑回归模型model := linear.NewLogisticRegression()// 训练模型if err := model.Fit(trainData); err != nil {log.Fatal(err)}// 预测数据predictions, err := model.PredictProba(testData)if err != nil {log.Fatal(err)}// 评估模型confMatrix, err := evaluation.GetConfusionMatrix(testData, predictions)if err != nil {log.Fatal(err)}fmt.Println("Confusion matrix:", confMatrix)
}

输出结果:

Confusion matrix: [[20  0  0][ 0 16  4][ 0  2 12]]

6.3 特征工程功能

golearn提供了许多特征工程功能,包括标准化、归一化、虚拟编码等。

以下是一个示例代码,演示如何使用golearn对数据集进行标准化:

package mainimport ("fmt""log""github.com/sjwhitworth/golearn/base""github.com/sjwhitworth/golearn/feature"
)func main() {// 创建一个数据集irisData, err := base.ParseCSVToInstances("iris.csv", true)if err != nil {log.Fatal(err)}// 将分类特征转换为虚拟编码encoder := feature.NewCategoricalEncoder()irisData.Transform(encoder)// 对数据集进行标准化scaler := feature.NewStandardScaler()irisData.Transform(scaler)// 打印输出数据fmt.Println("Standardized data:", irisData.Data())
}

输出结果:

Standardized data: [[-1.07551656 -1.33575191 -1.34108012  1.        ][-1.07551656 -1.33575191 -1.34108012  1.        ][-1.07551656 -1.33575191 -1.34108012  1.        ]...[ 0.89790131  1.31005179  1.32267513  3.        ][ 0.89790131  1.31005179  1.32267513  3.        ][ 1.07551656  1.31005179  1.32267513  3.        ]]

以上就是Go语言在数据科学和分析中的一些应用。Go语言在这个领域的应用日益广泛,并且有许多优秀的库和框架可以支持数据科学家和分析师的工作。

总结

通过本文的介绍和示例代码,读者将获得对Go语言在数据科学和分析领域中的应用有一个全面的了解。这些库不仅提供了强大的数学和统计工具,还支持深度学习和机器学习任务,为用户提供了丰富而高效的工具集,加速数据处理和分析过程。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chapter20-Ideal gases-CIE课本要点摘录、总结

20.1 Particles of a gas Brownian motion Fast modules 速率的数值大概了解下&#xff1a; average speed of the molecules:400m/s speed of sound:approximately 330m/s at STP&#xff08;standard temperature and pressure&#xff09; Standard Temperature and Pres…

计算表达式x*(2^i)的值math.ldexp(x, i)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算表达式x*(2^i)的值 math.ldexp(x, i) [太阳]选择题 关于以下代码输出的结果说法正确的是&#xff1f; import math print("【执行】math.ldexp(3,2)") print(math.ldexp(3,2)) …

SpringBoot中实现API速率限制的令牌桶算法项目

这个github项目是利用Bucket4j以及 Redis 缓存和 Spring Security 过滤器对私有 API 端点实施速率限制。 需要升级到 Spring Boot 3 和 Spring Security 6 关键组件&#xff1a; RedisConfiguration.javaRateLimitingService.javaRateLimitFilter.javaBypassRateLimit.javaP…

HTML5+CSS3+移动web——CSS基础

系列文章目录 HTML5CSS3移动web——HTML 基础-CSDN博客https://blog.csdn.net/ymxk2876721452/article/details/136070953?spm1001.2014.3001.5501HTML5CSS3移动web——列表、表格、表单-CSDN博客https://blog.csdn.net/ymxk2876721452/article/details/136221443?spm1001.2…

【Spring云原生系列】SpringBoot+Spring Cloud Stream:消息驱动架构(MDA)解析,实现异步处理与解耦合

&#x1f389;&#x1f389;欢迎光临&#xff0c;终于等到你啦&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;持续更新的专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &a…

wordpress博客趣主题个人静态网页模板

博客趣页面模板适合个人博客&#xff0c;个人模板等内容分享。喜欢的可以下载套用自己熟悉的开源程序建站。 博客趣主题具有最小和清洁的设计&#xff0c;易于使用&#xff0c;并具有有趣的功能。bokequ主题简约干净的设计、在明暗风格之间进行现场切换。 下载地址 清新个人…

【金三银四】Spring面试题

目录 1、什么是Spring2、说一下Spring的IOC3、Spring的AOP4、连接点&#xff1f;切入点&#xff1f;5、Spring AOP 是通过什么实现的6、Spring Bean的生命周期是怎么样的&#xff1f;7、Spring Bean的初始化过程是怎么样8、Spring的事务传播机制有哪些&#xff1f;9、Autowired…

割点原理及封装好的割点类

作者推荐 视频算法专题 预备知识 本分析针对&#xff1a;连通无向图G。 搜索树 节点的父子关系&#xff1a;任意 节点的邻接 节点除了已处理 节点&#xff0c;都是它的子 节点。 以任意一点为根开始DFS&#xff0c;计算所有 节点的父子关系。只保留个子 节点到父 节点形成…

电商数据分析17——电商平台评价系统的数据分析与管理

电商平台评价系统的数据分析与管理 在数字经济时代&#xff0c;电商平台已成为消费者购物的首选。随之而来&#xff0c;评价系统作为连接消费者与产品的重要桥梁&#xff0c;对于购买决策和产品改进起着至关重要的作用。通过数据分析来优化评价管理&#xff0c;不仅可以提升产…

Visual Studio单步调试中监视窗口变灰的问题

在vs调试中&#xff0c;写了这样一条语句 while((nfread(buf, sizeof(float), N, pf))>0) 然而&#xff0c;在调试中&#xff0c;只要一执行while这条语句&#xff0c;监视窗口中的变量全部变为灰色&#xff0c;不能查看&#xff0c;是程序本身并没有报错&#xff0c;能够继…

Python编程与人工智能应用 MOOC题目

第二次作业 1. 2. . 3.考察“字符串的这些api函数均是提供一个拷贝本”的知识点。 4.这边的2别忘&#xff0c;前闭后开区间&#xff0c;否则对于121这样会认为是质数&#xff08;11*11&#xff09;

VMware 集群-虚拟机配置反亲和性(互斥)

简介 博客&#xff1a;https://songxwn.com/ 为实现应用系统的冗余&#xff0c;经常会双机或者多机部署&#xff08;如数据库集群等&#xff09;。在VMware 集群里面&#xff0c;要保证不同应用集群的节点虚拟机在不同的物理宿主机上&#xff0c;防止单个宿主机故障&#xff…

开发指南004-@Query参数写法

JPA的Query注解和函数参数的绑定有多种写法&#xff0c;总结如下&#xff1a; 1、使用:形参名 2、使用?数值,数值表示形参位置,1表示第一个形参,依次类推 3、使用Param("参数名"):参数名 4、获取实体类名称,使用#{#entityName}

在高并发、高性能、高可用 三高项目中如何设计适合实际业务场景的分布式id(一)

分布式ID组件&#xff1a;黄金链路上的关键基石 在现代分布式系统中&#xff0c;分布式ID组件无疑扮演着至关重要的角色。作为整个系统的黄金链路上的关键组件&#xff0c;它的稳定性和可靠性直接关乎到整个系统的正常运作。一旦分布式ID组件出现问题&#xff0c;黄金链路上的…

HTML静态网页成品作业(HTML+CSS)——阜阳剪纸介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

对NENU研究生教务系统网站做自动化测试

由上一篇博客可知&#xff08;解决NENU研究生教务系统网站“不能创建对象”等兼容性问题-CSDN博客&#xff09;&#xff0c;我通过Tampermonkey脚本解决了NENU研究生教务系统网站在非IE内核浏览器中访问时“不能创建对象”的问题。 在解决问题的过程中&#xff0c;为了Tampermo…

外卖平台订餐流程架构的实践

当我们想要在外卖平台上订餐时&#xff0c;背后其实涉及到复杂的技术架构和流程设计。本文将就外卖平台订餐流程的架构进行介绍&#xff0c;并探讨其中涉及的关键技术和流程。 ## 第一步&#xff1a;用户端体验 用户通过手机应用或网页访问外卖平台&#xff0c;浏览菜单、选择…

010Editor汉化版+下载+注册码+模板bug

项目场景&#xff1a; 这天我想使用我的不知名的一个破解版本的010Edit来查看一个EXE程序&#xff0c;并想使用模板功能&#xff0c;但是发现没有该模板还无法下载最新模板 问题描述 010Edit联网后需要注册码&#xff1a; 010 Editor 激活码生成器 使用方法 参照教程使用0…

GitHub Desktop的常用操作【图形化】

文章目录 【1】仓库的创建和删除【2】文件操作【3】分支原理与分支操作1.分支创建2.分支合并 【4】标签 【1】仓库的创建和删除 在本地创建一个新的仓库&#xff1a; 然后输入仓库的名称&#xff0c;描述&#xff0c;并选择路径&#xff1a; 点击完后就发现我们的仓库创建好…

MYSQL--JSON_OBJECT 和 JSON_ARRAYAGG

JSON_OBJECT 和 JSON_ARRAYAGG 是 MySQL 中用于处理 JSON 数据类型的函数。这两个函数可以帮助你更轻松地构建和操作 JSON 数据。 JSON_OBJECT JSON_OBJECT 函数用于生成一个 JSON 对象。你可以为这个函数提供一系列键值对&#xff0c;它会返回一个包含这些键值对的 JSON 对象…