【CS224W】(task3)NetworkX工具包实践
note
- 节点可以为任意可哈希的对象,比如字符串、图像、XML对象,甚至另一个Graph、自定义的节点对象。通过这种方式可以自由灵活地构建:图为节点、文件为节点、函数为节点,等灵活的图形式。
- 暂时省略:【B5】计算机网络图自定义节点图标 ;【B6】自我中心图(Ego图)
文章目录
- note
- 一、Network创建图
- 1.1 创建内置图
- (1)基础用图
- (2)networkX自带数据集
- (3)树
- 1.2 创建连接表和邻接表
- 1.3 添加节点
- 1.4 添加连接
- 二、美国城市交通关系无向图
- 2.1 构图
- 2.2 筛选出距离小于阈值的城市对
- 2.3 城市关系可视化
- 三、有向图可视化模板
- 四、国际象棋对局MultiDiGraph多路图可视化
- 4.1 创建图和连通域分析
- 4.2 设置边长和节点属性
- 4.3 可视化
- 五、北京上海地铁站图数据挖掘
- 5.1 读取数据
- 5.2 最短路径
- 5.3 地铁导航系统
- 5.4 Centrality
- (1)Node Degree
- (2)Degree Centrality
- (3)Eigenvector Centrality(可能不收敛)
- (4)Betweenness Centrality
- (5)Closeness Centrality
- (6)Katz Centrality
- 六、其他
- 附:时间安排
- Reference
一、Network创建图
1.1 创建内置图
(1)基础用图
import networkx as nx
# 全连接无向图
G = nx.complete_graph(7) # 7个节点
nx.draw(G)
G.size() # 计算全图的连接数# 全连接有向图
G = nx.complete_graph(7, nx.DiGraph())
nx.draw(G)
G.is_directed() # 这时候会显示True# 环状图(无向)
G = nx.cycle_graph(5)
nx.draw(G)# 梯状图
G = nx.ladder_graph(5)
nx.draw(G)# 星状图
G = nx.star_graph(7)
nx.draw(G)# 轮辐图
G = nx.wheel_graph(8)
nx.draw(G)
其中星状图如图所示:
# 二项树
G = nx.binomial_tree(5)# 二维矩形网格网
G = nx.grid_2d_graph(3,5)# 多维矩阵网格网
G = nx.grid_graph(dim=(2, 3, 4))# 二维六边形蜂窝图
G = nx.hexagonal_lattice_graph(2,3)# n维超立方体图
G = nx.hypercube_graph(4)# 无标度有向图
G = nx.scale_free_graph(100)
nx.draw(G)
n维超立方体图如下图所示:
无标度有向图:
(2)networkX自带数据集
# 空手道俱乐部数据集
G = nx.karate_club_graph()
nx.draw(G, with_labels=True)
G.nodes[5]["club"] # 'Mr. Hi'# 雨果《悲惨世界》人物关系
G = nx.les_miserables_graph()
plt.figure(figsize=(12,10))
pos = nx.spring_layout(G, seed=10)
nx.draw(G, pos, with_labels=True)# Florentine families graph
G = nx.florentine_families_graph()
nx.draw(G, with_labels=True)# 社群聚类图
G = nx.caveman_graph(4, 3)
nx.draw(G, with_labels=True)
下图是雨果《悲惨世界》人物关系的图:
(3)树
tree = nx.random_tree(n=10, seed=0)
print(nx.forest_str(tree, sources=[0]))
1.2 创建连接表和邻接表
(1)得到所有的首位节点对,组成的列表;并且通过G.add_edges_from
存入图中。
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt# 导入 csv 文件定义的三元组连接表,构建有向图
df = pd.read_csv('/home/andy/torch_rechub_0830/CS224W_GNN/networkx_exe/【A3】创建图-连接表和邻接表创建图/triples.csv')
df
我们读取的是《三国演义》任务的三元组数据,内容如下,根据[edge for edge in zip(df['head'], df['tail'])]
可以得到首尾节点对的列表。
G = nx.DiGraph()
edges = [edge for edge in zip(df['head'], df['tail'])]
# 增加边
G.add_edges_from(edges)
# 获取起点为关羽的节点对
G.edges('关羽') # OutEdgeDataView([('关羽', '刘备'), ('关羽', '张飞')])# 节点排版布局-默认弹簧布局
pos = nx.spring_layout(G, seed=123)plt.figure(figsize=(15,15))
nx.draw(G, pos=pos, with_labels=True)# 查看全图参数
print(G) # DiGraph with 123 nodes and 144 edges# 123个节点
len(G)# 边数: 144
G.size()
(2)将所有节点对信息存入
# 显示所有的节点内容
G.nodes# 保存并载入邻接表
for line in nx.generate_adjlist(G):print(line)# 将邻接表导出为本地文件 grid.edgelist
path = "/home/andy/【A3】创建图-连接表和邻接表创建图"
nx.write_edgelist(G, path= path + "/grid.edgelist", delimiter=":")
# 从本地文件 grid.edgelist 读取邻接表
H = nx.read_edgelist(path= path + "/grid.edgelist", delimiter=":")
# 可视化
plt.figure(figsize=(15,14))
pos = nx.spring_layout(H, iterations=3, seed=5)
nx.draw(H, pos, with_labels=True)
plt.show()
同时可以看到保存得到的邻接表文件grid.edgelist
内容如下:
1.3 添加节点
# 创建空图
G = nx.Graph()
G.nodes
nx.draw(G) # 可视化,啥都木有
# 添加单个节点
G.add_node('刘备')
G.add_node('Tommy')
# 添加多个节点
G.add_nodes_from(['诸葛亮', '曹操'])
G.add_nodes_from(range(100, 105))
G.nodes# 添加带属性特征的节点
G.add_nodes_from([('关羽',{'武器': '青龙偃月刀','武力值':90,'智力值':80}),('张飞',{'武器': '丈八蛇矛','武力值':85,'智力值':75}),('吕布',{'武器':'方天画戟','武力值':100,'智力值':70})
])
nx.draw(G, with_labels=True)
# nx.draw(G, pos, with_labels=True)
结果如下,其实通过G.add_node
也可以将子图H添加进G。
1.4 添加连接
# 创建多个节点
G.add_nodes_from([(1, {'feature': 1, 'label': 1, 'zihao':3}),(2, {'feature': 2, 'label': 2, 'zihao':4})
])
# 全图节点信息
G.number_of_nodes()
G.nodes(data=True)# 遍历所有节点,data=True 表示输出节点特征属性信息
for node in G.nodes(data=True):print(node)
'''
(0, {'feature': 5, 'label': 0, 'zihao': 2})
(1, {'feature': 1, 'label': 1, 'zihao': 3})
(2, {'feature': 2, 'label': 2, 'zihao': 4})
'''# 创建连接
G.add_edge(0, 1, weight=0.5, like=3)
# 创建多个连接
G.add_edges_from([(1, 2, {'weight': 0.3, 'like':5}),(2, 0, {'weight': 0.1, 'like':8})
])# 寻找指定节点所连接的所有节点
node_id = 1
G.degree[node_id]
# 指定节点的所有相邻节点
for neighbor in G.neighbors(node_id):print("Node {} has neighbor {}".format(node_id, neighbor))
结果如下:
(0, {'feature': 5, 'label': 0, 'zihao': 2})
(1, {'feature': 1, 'label': 1, 'zihao': 3})
(2, {'feature': 2, 'label': 2, 'zihao': 4})
Node 1 has neighbor 0
Node 1 has neighbor 2
二、美国城市交通关系无向图
2.1 构图
读取的knuth_miles.txt
文件(部分内容如下图),也可通过官网找到该数据集:https://www.osgeo.cn/networkx/auto_examples/drawing/plot_knuth_miles.html
import gzip
import re
import matplotlib.pyplot as plt
import networkx as nx
import warnings
warnings.simplefilter("ignore")# 1. 构图
fh = gzip.open("/home/andy/CS224W_GNN/networkx_exe/【B2】美国128城市交通关系无向图可视化/knuth_miles.txt.gz", "r")
G = nx.Graph()
G.position = {}
G.population = {}cities = []
for line in fh.readlines(): # 遍历文件中的每一行line = line.decode()if line.startswith("*"): # 其它行,跳过continuenumfind = re.compile(r"^\d+")if numfind.match(line): # 记录城市间距离的行dist = line.split()for d in dist:G.add_edge(city, cities[i], weight=int(d))i = i + 1else: # 记录城市经纬度、人口的行i = 1(city, coordpop) = line.split("[")cities.insert(0, city)(coord, pop) = coordpop.split("]")(y, x) = coord.split(",")G.add_node(city)# assign position - Convert string to lat/longx = -float(x) / 100y = float(y) / 100G.position[city] = (x, y)pop = float(pop) / 1000G.population[city] = pop
构建图G
后也可以像一中一样通过edges
、nodes
等查看图中边和节点信息(如G.edges
即128个城市的互通关系),这里也可通过G.position
查看不同城市的经纬度、G.population
查看不同城市的人口数:
2.2 筛选出距离小于阈值的城市对
# 查看纽约到里士满的交通距离
G.edges[('Rochester, NY', 'Richmond, VA')]
# 筛选出距离小于阈值的城市对
H = nx.Graph()
for v in G:H.add_node(v)
for (u, v, d) in G.edges(data=True):if d["weight"] < 800:H.add_edge(u, v)
2.3 城市关系可视化
这里可视化,根据城市人口确定节点的大小,根据节点的度数确定城市节点的颜色,比如在一个交通枢纽发达的城市,其节点颜色就越明显。
# 节点颜色-节点度
node_color = [float(H.degree(v)) for v in H]# 节点尺寸-节点人口
node_size = [G.population[v] for v in H]fig = plt.figure(figsize=(12, 10))
nx.draw(H,G.position,node_size=node_size,node_color=node_color,with_labels=False,
)
plt.show()
三、有向图可视化模板
(1)创建有向图, 初步可视化
# 0. 导入相关包
import networkx as nx
import matplotlib as mpl
import matplotlib.pyplot as plt# 1. 创建有向图, 初步可视化
seed = 13648
G = nx.random_k_out_graph(10, 3, 0.5, seed=seed)
pos = nx.spring_layout(G, seed=seed)
nx.draw(G, pos, with_labels=True)
# 节点大小
node_sizes = [12 + 10 * i for i in range(len(G))]
# 节点颜色
M = G.number_of_edges()
edge_colors = range(2, M + 2)
# 节点透明度
edge_alphas = [(5 + i) / (M + 4) for i in range(M)]
# 配色方案
cmap = plt.cm.plasmaplt.figure(figsize=(10,8))# 绘制节点
nodes = nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color="indigo")# 绘制连接
edges = nx.draw_networkx_edges(G,pos,node_size=node_sizes, # 节点尺寸arrowstyle="->", # 箭头样式arrowsize=20, # 箭头尺寸edge_color=edge_colors, # 连接颜色edge_cmap=cmap, # 连接配色方案width=4 # 连接线宽
)# 设置每个连接的透明度
for i in range(M):edges[i].set_alpha(edge_alphas[i])# 调色图例
pc = mpl.collections.PatchCollection(edges, cmap=cmap)
pc.set_array(edge_colors)
plt.colorbar(pc)ax = plt.gca()
ax.set_axis_off()
plt.show()
四、国际象棋对局MultiDiGraph多路图可视化
任务:分析1886-1985年的国际象棋对局数据,绘制多路有向图,节点尺寸为胜利个数,连接宽度为对局个数。参考。
4.1 创建图和连通域分析
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
df = pd.read_csv('/home/andy/networkx_exe/【B4】国际象棋对局MultiDiGraph多路图可视化/WCC.csv')
df.columns
'''
Index(['Date', 'EventDate', 'Event', 'Site', 'ECO', 'White', 'Black', 'Round','Result'],dtype='object')
'''# 1. 从连接表创建MultiDiGraph多路有向图
G = nx.from_pandas_edgelist(df, 'White', 'Black', edge_attr=True, create_using=nx.MultiDiGraph())
print('棋手(节点)个数', G.number_of_nodes()) # 25
print('棋局(连接)个数', G.number_of_edges()) # 685
pos = nx.spring_layout(G, seed=10)
nx.draw(G, pos) # 初步可视化# 2. 连通域分析: 将G转为无向图,分析连通域
H = G.to_undirected()
for each in nx.connected_components(H):print('连通域')print(H.subgraph(each))print('包含节点')print(each)print('\n')
4.2 设置边长和节点属性
和之前2.3一样规定边和节点可视化属性规则,如任意两个棋手之间的边长,和棋局数成正比;棋手节点大小和赢棋次数成正比;
# 将G转为无向-单连接图
H = nx.Graph(G)# 两个棋手节点之间的 连接宽度 与 棋局个数 成正比
edgewidth = [len(G.get_edge_data(u, v)) for u, v in H.edges()]# 棋手节点的大小 与 赢棋次数 成正比
wins = dict.fromkeys(G.nodes(), 0) # 生成每个棋手作为key的dict
for (u, v, d) in G.edges(data=True):r = d["Result"].split("-")if r[0] == "1":wins[u] += 1.0elif r[0] == "1/2":wins[u] += 0.5wins[v] += 0.5else:wins[v] += 1.0
nodesize = [wins[v] * 50 for v in H]
4.3 可视化
# 布局
pos = nx.kamada_kawai_layout(H)# 手动微调节点的横坐标(越大越靠右)、纵坐标(越大越靠下)
pos["Reshevsky, Samuel H"] += (0.05, -0.10)
pos["Botvinnik, Mikhail M"] += (0.03, -0.06)
pos["Smyslov, Vassily V"] += (0.05, -0.03)fig, ax = plt.subplots(figsize=(12, 12))# 可视化连接
nx.draw_networkx_edges(H, pos, alpha=0.3, width=edgewidth, edge_color="m")# 可视化节点
nx.draw_networkx_nodes(H, pos, node_size=nodesize, node_color="#210070", alpha=0.9)# 节点名称文字说明
label_options = {"ec": "k", "fc": "white", "alpha": 0.7}
nx.draw_networkx_labels(H, pos, font_size=14, bbox=label_options)# 标题和图例
font = {"fontname": "Helvetica", "color": "k", "fontweight": "bold", "fontsize": 16}
ax.set_title("World Chess Championship Games: 1886 - 1985", font)
# 图例字体颜色
font["color"] = "r"# 文字说明
ax.text(0.80,0.10,"edge width = # games played",horizontalalignment="center",transform=ax.transAxes,fontdict=font,
)
ax.text(0.80,0.06,"node size = # games won",horizontalalignment="center",transform=ax.transAxes,fontdict=font,
)# 调整图的大小,提高可读性
ax.margins(0.1, 0.05)
fig.tight_layout()
plt.axis("off")
plt.show()
五、北京上海地铁站图数据挖掘
5.1 读取数据
上海地铁线路图:http://www.shmetro.com
上海地铁时刻表:http://service.shmetro.com/hcskb/index.htm
北京地铁线路图:https://map.bjsubway.com
北京地铁时刻表:https://www.bjsubway.com/station/smcsj
# 一、读取数据: 上海地铁站点连接表
df = pd.read_csv('/home/andy/torch_rechub_0830/CS224W_GNN/networkx_exe/【C5】北京上海地铁站图数据挖掘/shanghai_subway.csv')
# 创建无向图
G = nx.Graph()
# 从连接表创建图
for idx, row in df.iterrows(): # 遍历表格的每一行G.add_edges_from([(row['前一站'], row['后一站'])], line=row['地铁线'], time=row['时间(分钟)'])
len(G) # 节点数402
len(G.nodes) # 节点数402
len(G.edges) # 边数480# 查看连接属性特征
G.edges[('同济大学', '四平路')] # {'line': 10, 'time': 2}# 二、可视化设置参数
# 节点排版布局-默认弹簧布局
pos = nx.spring_layout(G, seed=123)
plt.figure(figsize=(15,15))
nx.draw(G, pos=pos)
5.2 最短路径
# 任意两节点之间是否存在路径
nx.has_path(G, source='昌吉东路', target='同济大学')# 任意两节点之间的最短路径
nx.shortest_path(G, source='昌吉东路', target='同济大学', weight='time')# 任意两节点之间的最短路径长度
nx.shortest_path_length(G, source='昌吉东路', target='同济大学', weight='time') # 59# 全图平均最短路径
nx.average_shortest_path_length(G, weight='time')
5.3 地铁导航系统
# 指定起始站和终点站
A_station = '昌吉东路'
B_station = '同济大学'# 获取最短路径
shortest_path_list = nx.shortest_path(G, source=A_station, target=B_station, weight='time')for i in range(len(shortest_path_list)-1):previous_station = shortest_path_list[i]next_station = shortest_path_list[i+1]line_id = G.edges[(previous_station, next_station)]['line'] # 地铁线编号time = G.edges[(previous_station, next_station)]['time'] # 时间print('{}--->{} {}号线 {}分钟'.format(previous_station, next_station, line_id, time)) # 输出结果# 最短路径长度
print('共计 {} 分钟'.format(nx.shortest_path_length(G, source=A_station, target=B_station, weight='time')))
'''
昌吉东路--->上海赛车场 11号线 4分钟
上海赛车场--->嘉定新城 11号线 4分钟
嘉定新城--->马陆 11号线 3分钟
马陆--->陈翔公路 11号线 4分钟
陈翔公路--->南翔 11号线 3分钟
南翔--->桃浦新村 11号线 3分钟
桃浦新村--->武威路 11号线 3分钟
'''
5.4 Centrality
(1)Node Degree
draw(G, pos, dict(G.degree()), 'Node Degree')
(2)Degree Centrality
draw(G, pos, nx.degree_centrality(G), 'Degree Centrality')
(3)Eigenvector Centrality(可能不收敛)
dict_sort_by_value(nx.eigenvector_centrality(G))
draw(G, pos, nx.eigenvector_centrality(G), 'Eigenvector Centrality')
(4)Betweenness Centrality
draw(G, pos, nx.betweenness_centrality(G), 'Betweenness Centrality')
(5)Closeness Centrality
draw(G, pos, nx.closeness_centrality(G), 'Closeness Centrality')
(6)Katz Centrality
draw(G, pos, nx.katz_centrality(G, alpha=0.1, beta=1.0), 'Katz Centrality')
六、其他
【C1】PageRank节点重要度
PageRank节点重要度
任务:计算有向图节点的PageRank节点重要度
注意:coo_array appears only in scipy version 1.8.0
,如果报错module 'scipy.sparse' has no attribute 'coo_array'
,则应该是版本问题,重新下载conda install scipy==1.8.0
即可。
【C2】节点连接数Node Degree度分析
【C3】棒棒糖图特征分析
【C4】计算节点特征
【C6】计算全图Graphlet个数
【C7】拉普拉斯矩阵特征值分解
附:时间安排
任务 | 任务内容 | 截止时间 | 注意事项 |
---|---|---|---|
2月11日开始 | |||
第一周 | |||
task1 | 图机器学习导论 | 2月14日周二 | 完成 |
task2 | 图的表示和特征工程 | 2月15、16日周四 | 完成 |
task3 | NetworkX工具包实践 | 2月17、18日周六 | 完成 |
第二周 | |||
task4 | 图嵌入表示 | 2月19、20日周一 | |
task5 | deepwalk、Node2vec论文精读 | 2月21、22日周三 | |
task6 | PageRank | 2月23、24日周五 | |
task7 | 标签传播与节点分类 | 2月25、26日周日 | |
第二周 | |||
task8 | 图神经网络基础 | 2月27、28日周二 | |
task9 | 图神经网络的表示能力 | 3月1日周三 | |
task10 | 图卷积神经网络GCN | 3月2日周四 | |
task11 | 图神经网络GraphSAGE | 3月3日周五 | |
task12 | 图神经网络GAT | 3月4日周六 |
Reference
[1] 传统图机器学习的特征工程-节点【斯坦福CS224W】
[2] cs224w(图机器学习)2021冬季课程学习笔记2: Traditional Methods for ML on Graphs
[3] NetworkX入门教程
[4] https://github.com/TommyZihao/zihao_course/tree/main/CS224W
[5] 斯坦福官方课程:https://web.stanford.edu/class/cs224w/
[6] 子豪兄github:https://github.com/TommyZihao/zihao_course
[7] NetworkX-常用图数据挖掘算法:https://networkx.org/documentation/stable/reference/algorithms/index.html
[8] NetworkX-节点重要度算法:https://networkx.org/documentation/stable/reference/algorithms/centrality.html
[9] NetworkX-Clustering算法:https://networkx.org/documentation/stable/reference/algorithms/clustering.html
[10] NetworkX-最短路径算法:https://networkx.org/documentation/stable/reference/algorithms/shortest_paths.html
https://aksakalli.github.io/2017/07/17/network-centrality-measures-and-their-visualization.html#degree-centrality
[11] AttributeError:模块‘scipy.sparse‘没有属性‘coo_array‘ (module ‘scipy.sparse‘ has no attribute ‘coo_array‘)
[12] networkX官方文档
[13] nx.draw画图时报错:AttributeError: module ‘scipy.sparse’ has no attribute ‘coo_array’
[14] 【Graph】NetworkX官方基础教程:图的生成与相关操作
相关文章:
【CS224W】(task3)NetworkX工具包实践
note 节点可以为任意可哈希的对象,比如字符串、图像、XML对象,甚至另一个Graph、自定义的节点对象。通过这种方式可以自由灵活地构建:图为节点、文件为节点、函数为节点,等灵活的图形式。暂时省略:【B5】计算机网络图…...
ansible的模块详解
ansible 的概述 什么是ansible Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。 它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端。 它使用SSH来和节点进行通信。Ansible基于 Python…...
《Terraform 101 从入门到实践》 Functions函数
《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。 Terraform的函数 Terraform为了让大家在表达式上可以更加灵活方便地进行计算,提供了大量的内置函数…...
使用kubeadm快速部署一个K8s集群
wkubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署: # 创建一个 Master 节点 $ kubeadm init# 将一个 Node 节点加入到当前集群中 $ kubeadm join <Master节点的IP和端口 >1. 安装要求 …...
初探富文本之CRDT协同算法
初探富文本之CRDT协同算法 CRDT的英文全称是Conflict-free Replicated Data Type,最初是由协同文本编辑和移动计算而发展的,现在还被用作在线聊天系统、音频分发平台等等。当前CRDT算法在富文本编辑器领域的协同依旧是典型的场景,常用于作为…...
Dubbo和Zookeeper集成分布式系统快速入门
文件结构 代码部分 1、新建provider-server导入pom依赖 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><dependency>&l…...
大数据工具Maxwell的使用
1.Maxwell简介 Maxwell 是由美国Zendesk公司开源,用Java编写的MySQL变更数据抓取软件。它会实时监控Mysql数据库的数据变更操作(包括insert、update、delete),并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台。 官…...
freesurfer如何将组模板投影到个体空间——如投影 Schaefer2018 到个体空间
freesurfer如何将组模板投影到个体空间——如投影 Schaefer2018 到个体空间 freesurfer如何将组模板投影到个体空间? freesurfer如何将组模板投影到个体空间——如投影 Schaefer2018 到个体空间freesurfer的整理流程freesurfer的安装freesurfer对结构像分割流程及批处理代码fr…...
Matlab傅里叶谱方法求解二维波动方程
傅里叶谱方法求解基本偏微分方程—二维波动方程 二维波动方程 将一维波动方程中的一维无界弦自由振动方程推广到二维空间上, 就得到了描述无界 (−∞<x,y<∞)(-\infty<x, y<\infty)(−∞<x,y<∞) 弹性薄膜的波动方程: ∂2u∂t2a2(∂2∂x2∂2∂y2)u(1)\frac…...
【深度学习】卷积神经网络
1 卷积神经网络(CNN)可以做什么? 检测任务分类与检索超分辨率重构:将图像训练的更清晰医学任务等无人驾驶人脸识别 2 用GPU:图像处理单元 比CPU块一百倍以上 3 卷积神经网络与传统神经网络的区别 传统神经网络&…...
【C++】六个默认成员函数——取地址重载,const成员函数
🍅 初始化和清理 拷贝复制 目录 ☃️1.取地址重载 ☃️2.const取地址操作符重载 这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需要重载,比如想让别人获取到指定的内容…...
Win11浏览器无法上网,秒杀网上99.9%教程—亲测完胜
前言 例如:网上的教程 列如: 关闭代理服务器、QQ微信可以登录,但浏览器无法上网、Win11、Win10无法上网、重启网络、重启电脑、去掉代理服务器等等。 一系列教程,要多鸡肋就多鸡肋。 我是用我2020年在CSDN上发布的第一篇文章&…...
Vulkan Graphics pipeline Dynamic State(图形管线之动态状态)
Vulkan官方英文原文:请见 Vulkan 1.3.236 - A Specification 10.9 章节。对应的Vulkan技术规格说明书版本: Vulkan 1.3.2A dynamic pipeline state is a state that can be changed by a command buffer command during the execution of a command buff…...
CSP-《I‘m stuck!》-感悟
题目 做题过程 注:黄色高亮表示需要注意的地方,蓝色粗体表示代码思路 好久没有写过代码了,今天做这道编程题,简直是灾难现场。 上午编程完后发现样例没有通过,检查发现算法思路出现了问题:我计数了S不能到…...
[实践篇]13.19 Qnx进程管理slm学习笔记(二)
【QNX Hypervisor 2.2用户手册】目录(完结) 四,配置文件结构 4.1 根元素 一个配置文件的XML根元素是system,如下: <SLM:system>-- component and module descriptions -- </SLM:system> 4.2 组件 一个进程对于SLM来说就是一个组件。在配置文件中,你必须为一…...
(免费分享)基于 SpringBoot 的高校宿舍管理系统带论文
项目描述 系统代码质量高,功能强大,带论文。 系统的功能主要有: (1)基本信息管理 基本信息分为学生信息和宿舍信息两部分,其功能是负责维护这些信息,对 它们进行增删查改等操作。 &#x…...
运筹系列78:cbc使用介绍
1. 上手 1.1 快速使用 首先是简单的调用测试,在mac上首先安装clp的库:brew install coin-or-tools/coinor/cbc,然后新建项目进行调用,各项配置如下,注意要添加的library和directory比较多: 1.2 命令行方…...
RocketMQ底层源码解析——事务消息的实现
1. 简介 RocketMQ自身实现了事务消息,可以通过这个机制来实现一些对数据一致性有强需求的场景,保证上下游数据的一致性。 以电商交易场景为例,用户支付订单这一核心操作的同时会涉及到下游物流发货、积分变更、购物车状态清空等多个子系统…...
学习802.11之MAC帧格式(一篇就够!)
802.11规范的关键在于MAC(媒介访问控制层),MAC位于各式物理层之上,控制数据传输。负责核心成帧操作以及与有线骨干网络之间的交互。 802.11 MAC采用载波监听多路访问(CSMA)机制来控制对传输媒介的访问&…...
使用阿里云IoT Studio建立物模型可视化界面
使用阿里云IoT Studio建立物模型可视化界面 上一篇文章介绍了如何使用ESP-01S上报数据到物模型:https://blog.csdn.net/weixin_46251230/article/details/128996719 这次使用阿里云IoT Studio建立物模型的Web页面 阿里云IoT Studio: https://studio.i…...
HBase 复习 ---- chapter07
HBase 复习 ---- chapter07部署 HBase(运维) 1:部署 HBase 实际是部署了三个技术(hadoop zookeeper hbase) hadoop hdfs mapreduce common hdfs namenode datanode secondaryNamenode yarn ResourceManager&a…...
跟我一起写Makefile--个人总结
此篇笔记是根据陈皓大佬《跟我一起写Makefile》学习所得 文章目录换行符clean变量make的自动推导另类风格的Makefile清空目标文件的规则cleanMakefile总述显示规则隐晦规则变量的定义注释引用其它的Makefile环境变量MAKEFILESmake的工作方式书写规则规则举例规则的语法在规则中…...
设计模式之为什么要学好设计模式
目录1 回顾软件设计原则2 设计模式总览3 经典框架都在用设计模式解决问题1 回顾软件设计原则 不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己却无感知。我们把设…...
大数据时代的小数据神器 - asqlcell
自从Google发布了经典的MapReduce论文,以及Yahoo开源了Hadoop的实现,大数据这个词就成为了一个行业的热门。在不断提高的机器性能和各种层出不穷的工具框架加持下,数据分析开始从过去的采样抽查变成全量整体,原先被抽样丢弃的隐藏…...
【呕心沥血】整理全栈自动化测试技术(三):如何编写技术方案
前面两篇笔记我介绍了自动化测试前期调研注意事项和前置准备阶段切入点,有同学在后台提问: “做完前期的调研和准备工作,领导要求写一个落地方案并评审,自动化测试的落地方案该怎么写”? 首先这个要求我觉得挺正常&a…...
67. 二进制求和
文章目录题目描述竖式模拟转换为十进制计算题目描述 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1: 输入:a “11”, b “1” 输出:“100” 示例 2: 输入:a “1010”, b “1011” …...
1555数列极差(队列 优先队列 )
目录 题目描述 解题思路 代码部分 题目描述 在黑板上写了N个正整数作成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a*b1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得…...
代码随想录算法训练营第二十七天 | 93.复原IP地址,78.子集,90.子集II
一、参考资料复原IP地址题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/子集题目链接/文章讲解:https://programmercarl.com/0078.…...
jvm类加载器
概念 Bootstarp ClassLoader (引导类加载器) 加载String等核心的类Ext ClassLoader (拓展类加载器)System ClassLoader (系统类加载器) 加载用户自定义的类 关系 BootstrapClassLoader 包含 ExtClassLoaderExtClassLoader 包含 SystemClassLoader彼此是包含关系,不…...
Rust学习入门--【7】Rust 数据类型
类型系统 对于任何一门语言都是重中之重,因为它体现了语言所支持的不同类型的值。 类型系统 也是 IT 初学者最难啃的三座大山之一,而类型系统之所以难以理解,主要是没有合适的现成的参考体系。 我们说类型系统 存在的目的,就是 …...
做微信的微网站费用/什么平台可以免费打广告
代理缓存服务介绍Squid是Linux系统中最为流行的一款高性能代理服务软件,通常用作Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存。 Squid服务程序具有配置简单、效率高、功能丰富等特点,它能支持HTTP、FTP、SSL等多种…...
网站 app开发 财务做帐/seo一个关键词多少钱
len 获取容器类型的元素个数, 或者说获取容器的长度 str1 123 list1 [1, 2, 3] tuple1 (1, 2, 3) set1 {1, 2, 3} dict1 {name: 123, age: 18} 使用len可以获取list str tuple set中的元素个数 print(len(str1)) print(len(list1)) print(len(tuple1)) print(len(set1)…...
网站 技术/100个成功营销策划案例
Logstash配置文件 Logstash有两种配置文件:管道配置文件,它定义Logstash处理管道,以及设置文件,它指定控制Logstash启动和执行的选项。 管道配置文件 在定义Logstash处理管道的各个阶段时,你将创建管道配置文件&#x…...
做门户网站用什么服务器/湛江百度seo公司
HttpClient 1、get 有参 // 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的) CloseableHttpClient httpClient HttpClientBuilder.create().build();// 1、有参数-拼接 2、无参直接过StringBuffer params new StringBuffer();try …...
wordpress邮件订阅功能/国内最新新闻事件今天
水果文案大全,帮助线上朋友圈营销,让写文案不再痛苦,文案发圈更简单。已更新至百类水果,千条文案,基本涵盖市面上常卖水果的文案。 1、去哪里使用这些文案 打开手机上的朋友圈,下方有个搜一搜功能…...
做门户网站cms/二级域名免费分发
1. 一点感言 突然就开始了这个角色的扮演:来跟大家介绍作为一个测试人员的角色定位,以及刚入门需要了解的相关知识和心态方面的问题。说实话,感觉到很为难,有时候有些事情做起来感觉并不是很难,但是要把它转化为文字的…...