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

matlab使用教程(17)—广度优先和深度优先搜索

1.可视化广度优先搜索和深度优先搜索

        此示例说明如何定义这样的函数:该函数通过突出显示图的节点和边来显示 bfsearch dfsearch 的可视化结果。
        创建并绘制一个有向图。
s = [1 2 3 3 3 3 4 5 6 7 8 9 9 9 10];
t = [7 6 1 5 6 8 2 4 4 3 7 1 6 8 2];
G = digraph(s,t);
plot(G)
        对该图执行深度优先搜索。指定 'allevents' 以便在算法中返回所有事件。此外,将 Restart 指定为 true 以确保搜索会访问图中的每个节点。
T = dfsearch(G, 1, 'allevents' , 'Restart' , true)
T =
38x4 table
Event Node Edge EdgeIndex
________________ ____ __________ _________
startnode 1 NaN NaN NaN
discovernode 1 NaN NaN NaN
edgetonew NaN 1 7 1
discovernode 7 NaN NaN NaN
edgetonew NaN 7 3 10
discovernode 3 NaN NaN NaN
edgetodiscovered NaN 3 1 3
edgetonew NaN 3 5 4
discovernode 5 NaN NaN NaN
edgetonew NaN 5 4 8
discovernode 4 NaN NaN NaN
edgetonew NaN 4 2 7
discovernode 2 NaN NaN NaN
edgetonew NaN 2 6 2
discovernode 6 NaN NaN NaN
edgetodiscovered NaN 6 4 9
finishnode 6 NaN NaN NaN
finishnode 2 NaN NaN NaN
finishnode 4 NaN NaN NaN
finishnode 5 NaN NaN NaN
edgetofinished NaN 3 6 5
edgetonew NaN 3 8 6
discovernode 8 NaN NaN NaN
edgetodiscovered NaN 8 7 11
finishnode 8 NaN NaN NaN
finishnode 3 NaN NaN NaN
finishnode 7 NaN NaN NaN
finishnode 1 NaN NaN NaN
startnode 9 NaN NaN NaN
discovernode 9 NaN NaN NaN
edgetofinished NaN 9 1 12
edgetofinished NaN 9 6 13
edgetofinished NaN 9 8 14
finishnode 9 NaN NaN NaN
startnode 10 NaN NaN NaN
discovernode 10 NaN NaN NaN
edgetofinished NaN 10 2 15
finishnode 10 NaN NaN NaN
        表 T 中的值对可视化搜索很有用。函数 visualize_search.m 展示了一种方法,使用通过 bfsearchdfsearch 执行的搜索的结果,根据事件表 T 突出显示图中的节点和边。该函数在算法中的每一步执行前都会暂停,这样您就可以通过按任意键缓慢地逐步执行搜索。

        将 visualize_search.m 保存在当前文件夹中。

function visualize_search(G,t)
% G is a graph or digraph object, and t is a table resulting from a call to
% BFSEARCH or DFSEARCH on that graph.
%
% Example inputs: G = digraph([1 2 3 3 3 3 4 5 6 7 8 9 9 9 10], ...
% [7 6 1 5 6 8 2 4 4 3 7 1 6 8 2]);
% t = dfsearch(G, 1, 'allevents', 'Restart', true);
% Copyright 1984-2019 The MathWorks, Inc.
isundirected = isa(G, 'graph');
if isundirected
% Replace graph with corresponding digraph, because we need separate
% edges for both directions
[src, tgt] = findedge(G);
G = digraph([src; tgt], [tgt; src], [1:numedges(G), 1:numedges(G)]);
end
h = plot(G,'NodeColor',[0.5 0.5 0.5],'EdgeColor',[0.5 0.5 0.5], ...
'EdgeLabelMode', 'auto');
for ii=1:size(t,1)
switch t.Event(ii)
case 'startnode'
highlight(h,t.Node(ii),'MarkerSize',min(h.MarkerSize)*2);
case 'discovernode'
highlight(h,t.Node(ii),'NodeColor','r');
case 'finishnode'
highlight(h,t.Node(ii),'NodeColor','k');
otherwise
if isundirected
a = G.Edges.Weight;
b = t.EdgeIndex(ii);
edgeind = intersect(find(a == b),...
findedge(G,t.Edge(ii,1),t.Edge(ii,2)));
else
edgeind = t.EdgeIndex(ii);
end
switch t.Event(ii)
case 'edgetonew'
highlight(h,'Edges',edgeind,'EdgeColor','b');
case 'edgetodiscovered'
highlight(h,'Edges',edgeind,'EdgeColor',[0.8 0 0.8]);
case 'edgetofinished'
highlight(h,'Edges',edgeind,'EdgeColor',[0 0.8 0]);
end
endnodeStr = t.Node;
if isnumeric(nodeStr)
nodeStr = num2cell(nodeStr);
nodeStr = cellfun(@num2str, nodeStr, 'UniformOutput', false);
endedgeStr = t.Edge;
if isnumeric(edgeStr)
edgeStr = num2cell(edgeStr);
edgeStr = cellfun(@num2str, edgeStr, 'UniformOutput', false);
endif ~isnan(t.Node(ii))
title([char(t{ii, 1}) ' on Node ' nodeStr{ii}]);
else
title([char(t{ii, 1}) ' on Edge (' edgeStr{ii, 1} ', '...
edgeStr{ii, 2},') with edge index ' sprintf('%d ', t{ii, 4})]);
enddisp('Strike any key to continue...')
pause
end
disp('Done.')
close all
        使用以下命令对图 G 和搜索结果 T 运行 visualize_search.m
visualize_search(G,T)
        该图一开始全为灰色,然后每次您按一个键,就会出现一条新的搜索结果。根据以下命令高亮显示搜索结果:
'startnode' - 起始节点的大小变大。
'discovernode' - 节点在被发现后变成红色。
'finishnode' - 节点在完成后变成黑色。
'edgetonew' - 通向未发现的节点的边变成蓝色。
'edgetodiscovered' - 通向已发现的节点的边变成品红色。
'edgetofinished' - 通向已完成的节点的边变成绿色。

2.使用拉普拉斯矩阵为图分区

        此示例说明如何使用图的拉普拉斯矩阵来计算 Fiedler 向量。Fiedler 向量可用于将图分区为两个子图。

2.1 加载数据

        加载数据集 barbellgraph.mat ,其中包含一个杠铃图的稀疏邻接矩阵和节点坐标。
load barbellgraph.mat

2.2 绘制图

        使用自定义节点坐标 xy 绘制图。
G = graph(A, 'omitselfloops' );
p = plot(G, 'XData' ,xy(:,1), 'YData' ,xy(:,2), 'Marker' , '.' );
axis equal

2.3 计算拉普拉斯矩阵和 Fiedler 向量

        计算图的拉普拉斯矩阵。然后,使用 eigs 计算两个模最小的特征值和相应的特征向量。
L = laplacian(G);
[V,D] = eigs(L,2, 'smallestabs' );
        Fiedler 向量是对应于该图的次最小特征值的特征向量。最小特征值为零,表示该图包含一个连通分量。这种情况下, V 中的第二列对应于次最小特征值 D(2,2)
D
D = 2×2
10 -3 ×
0.0000 0
0 0.2873
w = V(:,2);
        由于仅计算特征值和特征向量的子集,因此使用 eigs 求 Fiedler 向量的方法可扩展至更大的图,但对于较小的图而言,将拉普拉斯矩阵转换为满存储并使用 eig(full(L)) 同样切实可行。

2.4 为图分区

        使用 Fiedler 向量 w 将图分区为两个子图。如果一个节点在 w 中具有正值,则该节点将分配至子图 A。否则,该节点将分配至子图 B。这种做法称为符号切割或零阈值切割。符号切割最大限度减小了切割权重,该权重受限于图的任意非平凡切割的权重上界和下界。使用符号切割对图进行分区。将 w>=0 的节点的子图突出显示为红色,将 w<0 的节点的子图突出显示为黑色。
highlight(p,find(w>=0), 'NodeColor' , 'r' ) % subgraph A
highlight(p,find(w<0), 'NodeColor' , 'k' ) % subgraph B

        对于该杠铃图而言,此分区恰好将图平分为两个相等的节点集。但符号切割不总是生成平衡切割。任何时候均可通过计算 w 的中位数并将其用作阈值来平分图。这种分区方法被称为中位数切割,它能保证每个子图具有相等的节点数量。使用中位切割时,首先按中位数平移 w 中的值:

w_med = w - median(w);
        然后,按 w_med 中的符号对图进行分区。对杠铃图而言, w 的中位数接近于零,因此两次切割会生成相似的平分。

3.将节点属性添加到图论图数据提示

        此示例说明如何自定义 GraphPlot 数据提示以显示图的额外节点属性。

3.1 绘制具有数据提示的 GraphPlot 对象

        创建随机有向图的 GraphPlot 图对象。将额外的节点属性 wifi 添加到该图。
rng default
G = digraph(sprandn(20, 20, 0.05));
G.Nodes.wifi = randi([0 1], 20, 1) == 1;
h = plot(G);

        向图中添加数据提示。利用数据提示,您能够选择图论图中的节点并查看节点的属性。
dt = datatip(h,4,3);

 

        默认情况下,无向图的数据提示会显示节点编号和度。对于有向图,显示内容包括节点编号、入度和出度。

3.2 自定义数据提示中的现有数据

        通过在适当的对象属性中添加、编辑或删除数据行,可以自定义图形对象的数据提示显示。对于此GraphPlot 对象:
        • GraphPlot 对象句柄是 h
        • h.DataTipTemplate 属性包含控制数据提示显示的对象。
        • h.DataTipTemplate.DataTipRows 属性将数据提示的数据保留为 DataTipTextRow 对象。
        • 每个 DataTipTextRow 对象都有 Label Value 属性。您可以通过修改这些属性来调整在数据提示中显示的标签或数据。
        更改数据提示中节点行的标签,使其显示为“City”。
h.DataTipTemplate.DataTipRows(1).Label = "City" ;

        数据提示现在显示城市编号。

3.3 将数据添加到数据提示

        dataTipTextRow 函数创建一个可插入 DataTipRows 属性中的新数据行对象。使用 dataTipTextRow 为具有“WiFi”标签的数据提示创建一个新数据行,该数据提示引用图的 G.Nodes.wifi 属性中的值。将此数据提示行作为最后一行添加到 DataTipRows 属性中。
row = dataTipTextRow( 'WiFi' ,G.Nodes.wifi);
h.DataTipTemplate.DataTipRows(end+1) = row;

        数据提示显示现在包含每个节点的 Wi-Fi® 值。

3.4 从数据提示中删除数据

        要从数据提示中删除数据行,可以对 DataTipRows 属性进行索引,并对这些行分配空矩阵 []。这与从矩阵中删除行或列所用的方法可能相同。从数据提示中删除入度和出度行。由于这些行在数据提示显示中显示为第二行和第三行,因此它们对应于DataTipRows 属性的第二行和第三行。
h.DataTipTemplate.DataTipRows(2:3) = [];

        数据提示显示现在只显示城市编号和 Wi-Fi 状态。  

4.为图节点和边添加标签

        此示例说明如何在图节点和图边上添加和自定义标签。

4.1 创建并绘制图

        创建表示某个城市中网格化街道和交叉点的图。为边添加权重,使主干道和横穿街道在图中以不同的方式显示。使用与边权重成比例的边线宽绘图。
s = [1 1 2 2 3 4 4 5 5 6 7 7 8 8 9 10 11];
t = [2 4 3 5 6 5 7 6 8 9 8 10 9 11 12 11 12];
weights = [1 5 1 5 5 1 5 1 5 5 1 5 1 5 5 1 1];
G = graph(s,t,weights);
P = plot(G, 'LineWidth' ,G.Edges.Weight);

4.2 添加节点标签

        对于节点数不超过 100 个的图,MATLAB® 会使用数字节点索引或节点名称自动标记节点(更大的图默认情况下将省略这些标签)。但是,您可以通过调整 GraphPlot 对象 P NodeLabel 属性或使用labelnode 函数来更改节点标签。因此,即使节点具有名称,也可以使用与这些名称不同的标签。删除默认的数字节点标签。将一个交叉点标记为 Home ,将另一个标记为 Work
labelnode(P,1:12, '' )
labelnode(P,5, 'Home' )
labelnode(P,12, 'Work' )

4.3 添加边标签

        在绘制的图中,边不是自动标记的。您可以通过更改 GraphPlot 对象 P EdgeLabel 属性值或使用labeledge 函数来添加边标签。
        为纽约市的街道添加边标签。边的顺序在图的 G.Edges 表中定义,因此您指定的标签顺序必须遵循该顺序。将边标签直接存储在 G.Edges 表中很方便,这样边名称就位于其他边信息的旁边。
G.Edges
ans=17×2 table
EndNodes Weight
________ ______
1 2 1
1 4 5
2 3 1
2 5 5
3 6 5
4 5 1
4 7 5
5 6 1
5 8 5
6 9 5
7 8 1
7 10 5
8 9 1
8 11 5
9 12 5
10 11 1
        下面的示例有 17 条边,但只有 7 个唯一的街道名称。因此,可以在元胞数组中定义街道名称,然后对元胞数组进行索引,以检索每条边需要的街道名称。将变量添加到包含街道名称的 G.Edges 表中。
streets = { '8th Ave' '7th Ave' '6th Ave' '5th Ave' ...
'W 20th St' 'W 21st St' 'W 22nd St' }';
inds = [1 5 1 6 7 2 5 2 6 7 3 5 3 6 7 4 4];
G.Edges.StreetName = streets(inds);
G.Edges
ans=17×3 table
EndNodes Weight StreetName
________ ______ _____________
1 2 1 {'8th Ave' }
1 4 5 {'W 20th St'}
2 3 1 {'8th Ave' }
2 5 5 {'W 21st St'}
3 6 5 {'W 22nd St'}
4 5 1 {'7th Ave' }
4 7 5 {'W 20th St'}
5 6 1 {'7th Ave' }
5 8 5 {'W 21st St'}
6 9 5 {'W 22nd St'}
7 8 1 {'6th Ave' }
7 10 5 {'W 20th St'}
8 9 1 {'6th Ave' }
8 11 5 {'W 21st St'}
9 12 5 {'W 22nd St'}
10 11 1 {'5th Ave' }
        更新 EdgeLabel 属性,以引用这些街道名称。
P.EdgeLabel = G.Edges.StreetName;

4.4 调整字体属性

        图论图中的节点标签和边标签具有各自的属性,它们控制着标签的外观和样式。由于属性是分离的,因此可以对节点标签和边标签使用不同的样式。对于 节点 标签,可以调整:
NodeLabel
NodeLabelColor
NodeFontName
NodeFontSize
NodeFontWeight
NodeFontAngle
        对于 标签,可以调整:
EdgeLabel
EdgeLabelColor
EdgeFontName
EdgeFontSize
EdgeFontWeight
EdgeFontAngle
        使用这些属性,可以调整此示例中纽约市街道使用的字体:
        • 更改 NodeFontSize NodeLabelColor ,使交叉点标签的字体为 12 磅,颜色为红色。
        • 更改 EdgeFontWeight EdgeFontAngle EdgeFontSize,为一个方向的街道使用较大的粗体字体,为另一个方向的街道使用较小的斜体字体。
        • 更改 EdgeFontName ,使用 Times New Roman 作为边标签。
        可以使用 highlight 函数更改图边子集的图属性。创建逻辑索引 isAvenue ,对于包含单词 'Ave' 的边标签,逻辑索引的值为 true 。使用此逻辑向量作为 highlight 的输入,以一种方式标记所有主干道,以另一种方式标记所有非主干道。
P.NodeFontSize = 12;
P.NodeLabelColor = 'r' ;
isAvenue = contains(P.EdgeLabel, 'Ave' );
highlight(P, 'Edges' , isAvenue, 'EdgeFontAngle' , 'italic' , 'EdgeFontSize' , 7);
highlight(P, 'Edges' , ~isAvenue, 'EdgeFontWeight' , 'bold' , 'EdgeFontSize' , 10);
P.EdgeFontName = 'Times New Roman' ;

4.5 突出显示边

        找到 Home 和 Work 节点之间的最短路线,并检查哪些街道在该路线上。以红色突出显示该路线上的节点和边,并删除不在该路线上的所有边的边标签。
[path,d,pathEdges] = shortestpath(G,5,12)
path = 1×4
5 6 9 12
d = 11
pathEdges = 1×3
8 10 15
G.Edges.StreetName(pathEdges,:)
ans = 3x1 cell
{'7th Ave' }
{'W 22nd St'}
{'W 22nd St'}
highlight(P, 'Edges' ,pathEdges, 'EdgeColor' , 'r' )
highlight(P,path, 'NodeColor' , 'r' )
labeledge(P, setdiff(1:numedges(G), pathEdges), '' )

 

相关文章:

matlab使用教程(17)—广度优先和深度优先搜索

1.可视化广度优先搜索和深度优先搜索 此示例说明如何定义这样的函数&#xff1a;该函数通过突出显示图的节点和边来显示 bfsearch 和 dfsearch 的可视化结果。 创建并绘制一个有向图。 s [1 2 3 3 3 3 4 5 6 7 8 9 9 9 10]; t [7 6 1 5 6 8 2 4 4 3 7 1 6 8 2]; G dig…...

CSerialPort教程4.3.x (2) - CSerialPort源码简介

CSerialPort教程4.3.x (2) - CSerialPort源码简介 前言 CSerialPort项目是一个基于C/C的轻量级开源跨平台串口类库&#xff0c;可以轻松实现跨平台多操作系统的串口读写&#xff0c;同时还支持C#, Java, Python, Node.js等。 CSerialPort项目的开源协议自 V3.0.0.171216 版本…...

【数据结构OJ题】有效的括号

原题链接&#xff1a;https://leetcode.cn/problems/valid-parentheses/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 这道题目主要考查了栈的特性&#xff1a; 题目的意思主要是要做到3点匹配&#xff1a;类型、顺序、数量。 题目给的例子是比较…...

Java性能分析中常用命令和工具

当涉及到 Java 性能分析时&#xff0c;有一系列强大的命令和工具可以帮助开发人员分析应用程序的性能瓶颈、内存使用情况和线程问题。以下是一些常用的 Java 性能分析命令和工具&#xff0c;以及它们的详细说明和示例。 以下是一些常用的性能分析命令和工具汇总&#xff1a; …...

JVM性能分析-jstat工具观察gc频率

jstat jstat是java自带的工具&#xff0c;在bin目录下 用法 语法&#xff1a;jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] [kqkyyj-2 bin]$ jstat -help Usage: jstat -help|-optionsjstat -<option> [-t] [-h&l…...

mysql 查询报错 1267 - Illegal mix of collations

mysql 查询报错 1267 - Illegal mix of collations 详细报错: 1267 - Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for 主要的原因其实就是两张表的字符集不一样改一下就行了。 注: 改了表还是报错的话,那就是表内的字段没有…...

【ARM】Day6

cotex-A7核UART总线实验 1. 键盘输入一个字符‘a’&#xff0c;串口工具显示‘b’ 2. 键盘输入一个字符串"nihao"&#xff0c;串口工具显示“nihao” uart.h #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_rcc.h" #include "stm3…...

深入理解Flink Mailbox线程模型

文章目录 整体设计processMail1.Checkpoint Tigger2.ProcessingTime Timer Trigger processInput兼容SourceStreamTask 整体设计 Mailbox线程模型通过引入阻塞队列配合一个Mailbox线程的方式&#xff0c;可以轻松修改StreamTask内部状态的修改。Checkpoint、ProcessingTime Ti…...

Docker搭建LNMP运行Wordpress平台

一、项目1.1 项目环境1.2 服务器环境1.3 任务需求 二、Linux 系统基础镜像三、Nginx1、建立工作目录2、编写 Dockerfile 脚本3、准备 nginx.conf 配置文件4、生成镜像5、创建自定义网络6、启动镜像容器7、验证 nginx 四、Mysql1、建立工作目录2、编写 Dockerfile3、准备 my.cnf…...

10个常见渐变交互效果

1、透明度渐变背景交互 <div class"fade-background"></div> Copy .fade-background {width: 200px;height: 200px;background: linear-gradient(to bottom, rgba(255, 0, 0, 0), rgba(255, 0, 0, 1));transition: background 0.5s ease; }.fade-backgro…...

[线程/C]基础

文章目录 1. 线程介绍2. 创建线程2.1 线程函数2.2 创建线程 3. 线程退出4. 线程回收4.1 线程函数4.2 回收子线程数据4.2.1 使用子线程栈4.2.2 使用全局变量4.2.3 使用主线程栈 5. 线程分离6. 其他线程函数6.1 线程取消6.2 线程ID的比较 1. 线程介绍 线程是轻量级的进程&#x…...

Spring Clould 负载均衡 - Ribbon

视频地址&#xff1a;微服务&#xff08;SpringCloudRabbitMQDockerRedis搜索分布式&#xff09; Ribbon-负载均衡原理&#xff08;P14&#xff09; 具体实现时通过LoaBalanced注解实现&#xff0c;表示RestTemplate要被Ribbon拦截处理 orderservice调用user时候&#xff0c…...

活用DNS技术实现相同IP的不同端口映射不同域名

WindowsDNS基本配置 在内网的 Windows 服务器环境中&#xff0c;你可以通过配置 DNS 服务和 Web 服务器来实现所需的域名解析和端口转发。如下是一些基本的步骤来实现配置&#xff1a; 1&#xff0c;配置 Windows DNS 服务 在你的 Windows 服务器上配置 DNS 服务&#xff0c…...

AutoHotkey:定时删除目录下指定分钟以前的文件,带UI界面

删除指定目录下&#xff0c;所有在某个指定分钟以前的文件&#xff0c;可以用来清理经常生成很多文件的目录&#xff0c;但又需要保留最新的一部分文件 支持拖放目录到界面 能够记忆设置&#xff0c;下次启动后不用重新设置&#xff0c;可以直接开始 应用场景比如&#xff1a…...

一文学会sklearn中的交叉验证的方法

前言 在机器学习中&#xff0c;我们经常需要评估模型的性能。而为了准确评估模型的性能&#xff0c;我们需要使用一种有效的评估方法。五折交叉验证&#xff08;5-fold cross-validation&#xff09;就是其中一种常用的模型评估方法&#xff0c;用于评估机器学习模型的性能和泛…...

【MySQL面试题(66道)】

文章目录 MySQL面试题(66道)基础1.什么是内连接、外连接、交叉连接、笛卡尔积呢&#xff1f;2.那 MySQL 的内连接、左连接、右连接有有什么区别&#xff1f;3.说一下数据库的三大范式&#xff1f;4.varchar 与 char 的区别&#xff1f;5.blob 和 text 有什么区别&#xff1f;6.…...

CSSCI、北核期刊投稿指南(2023年更新)

该数据为经管类的期刊投稿指南&#xff0c;包含发表难度&#xff0c;文章数量&#xff0c;影响因子&#xff0c;用户评价等指标。共5份文件&#xff0c;分别为国内所有期刊信息库、投稿指南&#xff08;CSSCI版本、CSSCI扩展版本、北大核刊版本、建议期刊版本&#xff09; 一、…...

构建 NodeJS 影院微服务并使用 docker 部署它(02/4)

一、说明 构建一个微服务的电影网站&#xff0c;需要Docker、NodeJS、MongoDB&#xff0c;这样的案例您见过吗&#xff1f;如果对此有兴趣&#xff0c;您就继续往下看吧。 图片取自网络 — 封面由我制作 这是✌️“构建 NodeJS 影院微服务”系列的第二篇文章。 二、对第一部分的…...

HTML <style> 标签

实例 <html> <head> <style type="text/css"> h1 {color:red} p {color:blue} </style> </head><body> <h1>Header 1</h1> <p>A paragraph.</p> </body> </html>定义和用法 <style>…...

设计模式——迪米特法则

文章目录 基本介绍应用实例应用实例改进迪米特法则注意事项和细节 基本介绍 一个对象应该对其他对象保持最少的了解类与类关系越密切&#xff0c;耦合度越大迪米特法则(Demeter Principle)又叫最少知道原则&#xff0c;即一个类对自己依赖的类知道的越少越好。也就是说&#x…...

区块链基本概念与当前生态简介

区块链是一种去中心化的分布式账本技术&#xff0c;它通过将数据按照时间顺序链接成区块&#xff0c;并使用密码学算法确保数据的安全性和完整性。每个区块包含一定数量的交易记录&#xff0c;而且每个区块都包含了前一个区块的哈希值&#xff0c;这样形成了一个不可篡改的链式…...

mac安装lrzsz出错Command failed with exit 128: git

终端检查电脑是否安装了rz和sz which sz若报错&#xff0c;则需要下载。由于网络和代理的原因&#xff0c;以下命令会报错&#xff1a; brew install lrzsz是因为brew和git配置的代理存在冲突&#xff0c;对于无外网链接功能&#xff0c;无特殊配置的git而言&#xff0c;需要…...

“深入探索JVM内部机制:揭秘Java虚拟机“

标题&#xff1a;深入探索JVM内部机制&#xff1a;揭秘Java虚拟机 摘要&#xff1a;本文将深入探索Java虚拟机&#xff08;JVM&#xff09;的内部机制&#xff0c;从内存管理、垃圾回收、即时编译等方面进行详细剖析。通过了解JVM的工作原理&#xff0c;我们可以更好地理解Jav…...

lvs-DR

lvs-DR数据包流向分析 client向目标VIP发出请求。 DIR根据负载均衡算法一台active的RS&#xff08;RIR1&#xff09;&#xff0c;将RIP1所在的网卡的mac地址作为目标的mac地址&#xff0c;发送到局域网里。 RIRI在局域网中的收到这个帧&#xff0c;拆开后发现目标&#xff08…...

Vue 项目运行 npm install 时,卡在 sill idealTree buildDeps 没有反应

解决方法&#xff1a;切换到淘宝镜像。 以下是之前安装的 xmzs 包&#xff0c;用于控制切换淘宝镜像。 该截图是之前其他项目切换淘宝镜像的截图。 切换镜像后&#xff0c;顺利执行 npm install 。...

ShardingSphere介绍

ShardingSphere从4.X到5.X的内容发生了很多的改变&#xff0c;感兴趣的伙伴可以到ShardingSphere的博客查看各个版本的新特性。https://blog.csdn.net/ShardingSphere?typeblog 此次使用最新版本 shardingShpere5.4.0&#xff0c;实现数据库读写分离、数据分片、分布式事务等…...

【SA8295P 源码分析】44 - 如何替换 NON-HLOS.bin 中的 Wifi Firmware 固件

【SA8295P 源码分析】44 - 如何替换 NON-HLOS.bin 中的 Wifi Firmware 固件 1、提取 NON-HLOS.bin 中的 Wifi Firmware 出来2、把提取出来的 wifi 固件放到代码中3、重新打包生成 NON-HLOS.bin4、将生成的 NON-HLOS.bin 与 老的 NON-HLOS.bin 对比5、使用fastboot 下载测试wifi…...

市面上那里有稳定L2股票行情数据接口?

随着市场的发展和技术的进步&#xff0c;level2股票行情数据接口已经成为股票交易软件的标准配置之一。虽然这些券商软件的功能在很大程度上相似&#xff0c;但它们仍然有自己的特点和优势。 例如&#xff1a;通过股票交易所以其专业的研究报告和丰富的信息服务而受到广泛关注&…...

个人信息保护影响评估(PIA)怎么做?解发条件、实施步骤、操作指南

个人信息保护一直是人们关注的热点话题&#xff0c;互联网、人工智能、大数据等新兴技术的快速发展极大地增强了入侵个人信息的能力&#xff0c;对个人信息的随意收集、违法获取、过度使用、非法买卖、泄露等问题引起了全球各国的普遍关注。同时随着用户的个人信息保护意识的逐…...

HTML <sub> 标签

例子 这段文本包含 <sub>下标</sub> 定义和用法 <sub> 标签可定义下标文本。 包含在 <sub> 标签和其结束标签 </sub> 中的内容将会以当前文本流中字符高度的一半来显示&#xff0c;但是与当前文本流中文字的字体和字号都是一样的。 提示&am…...

windows2012系统怎么建设网站/新闻式软文

http://www.930cn.cn/credit-repair/14373.html 详细内容&#xff1a;如何维护硬盘&#xff1f; 答案&#xff1a;  如何正确使用维护硬盘   硬盘是如今微机中必不可少的部件&#xff0c;也是最昂贵、淘汰最慢的主设备&#xff0c;硬盘的正确使用与操作&#xff0c;维护&am…...

网站栏目规划注意事项/sem是什么工作

let t[[1,3,5],[1,2,4],[2,6,5],[1,3,5]]; let x []; let q []; let k0,w0;//转换为一维数组 for(let i0;i<t.length;i){for(let j 0;j<t[i].length;j){x[k] t[i][j];} } console.log(x); //删除重复元素&#xff0c;将出现的重复元素加入数组 for(let i0;i<x.leng…...

南宁企业免费建站/seo是什么部位

前文回顾&#xff1a;如何掌握openGauss数据库核心技术&#xff1f;秘诀一&#xff1a;拿捏SQL引擎&#xff08;1&#xff09;如何掌握openGauss数据库核心技术&#xff1f;秘诀一&#xff1a;拿捏SQL引擎&#xff08;2&#xff09;如何掌握openGauss数据库核心技术&#xff1f…...

网站建设需求原型/hao123影视

文章来源&#xff1a;Python小例子告别枯燥&#xff0c;通过学习有趣的小例子&#xff0c;扎实而系统的入门Python&#xff0c;从菜鸟到大师&#xff0c;个人觉得这是很靠谱的一种方法。通过一个又一个的小例子&#xff0c;真正领悟Python之强大&#xff0c;之简洁&#xff0c;…...

做动态网站/文章代写

批处理命令当中的START&#xff0c;可以用来打开窗口。打开窗口的时候&#xff0c;你还可以通过START参数来设置所打开窗口的各种属性&#xff0c;下面&#xff0c;逐一为你介绍START及参数是如何使用的。START命令功能&#xff1a;启动单独的“命令提示符”窗口来运行指定程序…...

网站首页做的好看/天津百度快速排名优化

原创不易&#xff0c;转载请注明出处 前言 到目前为止&#xff0c;RocketMQ源码解析博文已经发表了20篇&#xff0c;初步打算是从两个维度来解析RocketMQ的源码&#xff0c;分别是整体运行流程的源码解析&#xff0c;某些核心组件源码深度剖析。现在已经初步完成了RocketMQ核心…...