【打卡-Coggle竞赛学习2023年2月】图节点嵌入

news2024/12/24 8:38:35

文章目录

    • ## Part4 图节点嵌入
      • ### 背景介绍
      • ### 环境配置
      • ### 学习打卡
        • - 任务1:图属性与图构造
        • - 任务2:图查询与遍历
        • - 任务3:节点中心性与应用
        • - 任务4:图节点嵌入算法:
        • - 任务5:图节点嵌入算法:
        • - 任务6:图节点嵌入算法:
      • ### 推荐资料

## Part4 图节点嵌入

### 背景介绍

图(Graphs)是一种对物体(objects)和他们之间的关系(relationships)建模的数据结构,物体以结点(nodes)表示,关系以边(edges)表示。图是复杂系统中常用的信息载体,可以表示现实中许多复杂关系,如社交网络、犯罪网络、交通网络等。

### 环境配置

实践环境建议以Python3.7+,且需要安装如下库:

  • numpy
  • pandas
  • networkx
  • igraph
  • gensim

### 学习打卡

任务名称难度
任务1:图属性与图构造低、1
任务2:图查询与遍历低、2
任务3:节点中心性与应用中、2
任务4:图节点嵌入算法(DeepWalk/node2vec)高、3
任务5:图节点嵌入算法:LINE/SDNE高、3
任务6:图节点嵌入算法:GraphGAN高、3

- 任务1:图属性与图构造

  • 步骤1:导入networkx
  • 步骤2:加载Wiki数据集,包含来自 19 个类别的 2405 个文档和它们之间的 17981个边。
  • 步骤3:使用networkx构造上述有向图
import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

# 两列,分别为节点id,节点类别
group = pd.read_csv('http://mirror.coggle.club/dataset/graph-wiki/group.txt.zip', sep='\t', header=None)

# 两列,分别为出发节点id,目的节点id
graph = pd.read_csv('http://mirror.coggle.club/dataset/graph-wiki/graph.txt.zip', sep='\t', header=None)

g = nx.DiGraph()

# 只添加前100条边
g.add_edges_from(graph.values[:100])
nx.draw_spring(g)

# 添加所有数据
g = nx.DiGraph()
g.add_edges_from(graph.values[:])

在这里插入图片描述

- 任务2:图查询与遍历

  • 步骤1:使用networkx对Wiki数据集进行如下统计
    • 节点个数、边个数
    • 节点度平均
    • 存在指向自身节点的个数
  • 步骤2:对节点1397进行深度和广度遍历,设置搜索最大深度为5
  • 步骤3:判断节点1573与节点1397之间是否存在联通性
# 边个数 节点个数
g.number_of_edges(), g.number_of_nodes()

# 度均值
np.mean([x[1] for x in list(g.degree())])

# 对节点1397的深度5内进行深度和广度遍历
nx.dfs_tree(g, 1397, 5).nodes()
nx.bfs_tree(g, 1397, 5).nodes()

# 节点1573与节点1397之间的路径
list(nx.connectivity.node_disjoint_paths(g, 1573, 1397))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

- 任务3:节点中心性与应用

  • 步骤1:筛选度最大的Top10个节点,并对节点深度1以内的节点进行可视化;
    在这里插入图片描述

  • 步骤2:使用PageRank筛选Top10个节点,并对节点深度1以内的节点进行可视化;
    在这里插入图片描述

  • 步骤3:文本关键词提取算法RAKE

    • 使用jieba对文本进行分词
      在这里插入图片描述

    • 单词作为节点,距离2以内的单词之间存在边

    • 计算单词打分 wordDegree (w)/ wordFrequency (w) wordDegree (�)/ wordFrequency (�)

    • 按照打分统计每个文章Top10关键词
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

  • 步骤4:文本关键词提取算法TextRank

    • 使用jieba对文本进行分词
    • 单词作为节点,距离2以内的单词之间存在边
    • 使用PageRank对单词进行打分
    • 按照打分统计每个文章Top10关键词
      在这里插入图片描述
      在这里插入图片描述

在这里插入图片描述

# 文章1
'''
一纸四季报,令芯片巨头英特尔一夜间股价重挫近6.5%,市值蒸发80亿美元,再度被AMD反超。

这份严重缩水的财报显示,英特尔在去年四季度营收大降32%至140亿美元,是2016年以来最低单季收入;净利润由三季度的10.2亿美元转为近7亿美元净亏损;毛利率更从2021年四季度的53.6%大幅下降至39.2%。

此番业绩“跳水”并非英特尔一家的一时失利,在全球PC出货量整体下滑的背景下,包括英特尔、AMD、英伟达、高通在内的芯片企业,均在过去一年里出现不同程度的收入与利润下滑,但英特尔的确是其中的重灾区。
'''

# 文章2
'''
2021年,成都地区生产总值已经超过1.99万亿元,距离2万亿门槛仅咫尺之间。在去年遭受多轮疫情冲击及高温限电冲击的不利影响下,2022年,成都市实现地区生产总值20817.5亿元,按可比价格计算,比上年增长2.8%。

成都因此成为第7个跨过GDP2万亿门槛的城市。目前,GDP万亿城市俱乐部中形成了4万亿、3万亿、2万亿和万亿这四个梯队。上海和北京在2021年跨过了4万亿,深圳2021年跨过了3万亿,重庆、广州、苏州和成都则是2万亿梯队。

在排名前十的城市中,预计武汉将超过杭州。武汉市政府工作报告称,预计2022年武汉地区生产总值达到1.9万亿元左右。而杭州市统计局公布的数据显示,杭州2022年地区生产总值为18753亿元。受疫情影响,武汉在2020年GDP排名退居杭州之后。
'''


# 文章3
'''
据报道,美国证券交易委员会(SEC)与特斯拉首席执行官埃隆·马斯克之间又起波澜。SEC正对马斯克展开调查,主要审查内容是,马斯克是否参与了关于特斯拉自动驾驶软件的不恰当宣传。

据知情人士透露,该机构正在调查马斯克是否就驾驶辅助技术发表了不恰当的前瞻声明。

特斯拉在2014年首次发布了其自动驾驶辅助功能,公司声称该功能可以让汽车在车道内自动转向、加速和刹车。目前所有特斯拉车辆都内置了该软件。
'''
# 筛选度最大的Top10个节点,并对节点深度1以内的节点进行可视化;
g_degree = pd.DataFrame(g.degree()).sort_values(by=1)
g_degree = g_degree.iloc[-10:]

selected_nodes = []
for node in g_degree[0].values:
    selected_nodes += list(nx.dfs_tree(g, node, 1).nodes())

nx.draw_spring(g.subgraph(selected_nodes), node_size=3)
# 使用PageRank筛选Top10个节点,并对节点深度1以内的节点进行可视化
g_pagerank = pd.DataFrame.from_dict(nx.pagerank(g), orient='index')
g_pagerank = g_pagerank.sort_values(by=0)

g_pagerank = g_pagerank.iloc[-10:]
selected_nodes = []
for node in g_pagerank[0].index:
    selected_nodes += list(nx.dfs_tree(g, node, 1).nodes())

nx.draw_spring(g.subgraph(selected_nodes), node_size=3)

文本关键词提取算法RAKE

import jieba
from collections import Counter

g2 = nx.Graph()
words = jieba.lcut(content)
words = [x for x in words if len(x) > 1]
for i in range(len(words)-2):
    for j in range(i-2, i+2):
        if i == j:
            continue
        g2.add_edge(words[i], words[j])

g2_node_gree = dict(g2.degree())
word_counter = dict(Counter(words))

g2_node_gree = pd.DataFrame.from_dict(g2_node_gree, orient='index')
g2_node_gree.columns = ['degree']

g2_node_gree['freq'] = g2_node_gree.index.map(word_counter)
g2_node_gree['score'] = g2_node_gree['degree'] / g2_node_gree['freq']

g2_node_gree.sort_values(by='score').index[-10:]

# ['32%', '140', '2016', '以来', '最低', '单季', '收入', '利润', '缩水', '净利润']
# ['增长', '2.8%', '成都', '2020', '成为', '超过', 'GDP2', '目前', '可比价格', '因此']
# ['主要', '审查', '内容', '参与', '关于', '软件', '所有', '宣传', '人士', '恰当']

文本关键词提取算法TextRank

g2 = nx.Graph()

words = jieba.lcut(content)
words = [x for x in words if len(x) > 1]
for i in range(len(words)-2):
    for j in range(i-2, i+2):
        if i == j:
            continue
        g2.add_edge(words[i], words[j])

g2_node_gree = pd.DataFrame.from_dict(nx.pagerank(g2), orient='index')
g2_node_gree.columns = ['degree']
g2_node_gree = g2_node_gree.sort_values(by='degree')

# ['39.2%', '四季', '一纸', 'AMD', '下滑', '四季度', '收入', '芯片', '亿美元', '英特尔']
# ['万亿元', '成都', '地区', '2021', '城市', '杭州', '武汉', '2022', '生产总值', '万亿']
# ['功能', '是否', '辅助', '调查', '恰当', 'SEC', '驾驶', '自动', '马斯克', '特斯拉']

img

- 任务4:图节点嵌入算法:

DeepWalk

/

node2vec
  • 步骤1:使用DeepWalk对Wiki数据集节点嵌入,维度为50维
    在这里插入图片描述

  • 步骤2:每个group中20%的节点作为验证集,剩余的作为训练集
    在这里插入图片描述

  • 步骤3:使用节点嵌入向量 + 逻辑回归进行训练,并记录验证集准确率
    在这里插入图片描述

  • 步骤4:使用node2vec重复上述操作
    在这里插入图片描述

  • 步骤5:使用t-SNE将节点的DeepWalk/node2vec特征降维,绘制散点图,节点颜色使用group进行区分
    deepwalk
    在这里插入图片描述
    node2vec
    在这里插入图片描述

2014 DeepWalk: Online Learning of Social Representations, PDF

DeepWalk的思想类似word2vec,使用图中节点与节点的共现关系来学习节点的向量表示。那么关键的问题就是如何来描述节点与节点的共现关系,DeepWalk给出的方法是使用随机游走(RandomWalk)的方式在图中进行节点采样。

RandomWalk是一种可重复访问已访问节点的深度优先遍历算法。给定当前访问起始节点,从其邻居中随机采样节点作为下一个访问节点,重复此过程,直到访问序列长度满足预设条件。

import random
def deepwalk(G, walk_length):
    nodes = G.nodes()
    history_walks = []

    # 对于每个节点
    for node in nodes:

        # 从当前节点开始
        random_walk_length = [node]

        # 开始游走
        for i in range(walk_length-1):

            # 找到节点邻居
            neighbors = list(G.neighbors(node))

            # 排除已经游走的邻居
            neighbors = list(set(neighbors) - set(random_walk_length))    
            if len(neighbors) == 0:
                break

            # 随机挑选邻居
            random_neighbor = random.choice(neighbors)            
            random_walk_length.append(random_neighbor)

            # 从下一个邻居继续游走
            node = random_neighbor

        # 此节点的游走路径
        history_walks.append(random_walk_length)

    return history_walks
g = nx.DiGraph()
# 构件图
g.add_edges_from(graph.values[:])
# 游走
history_walks = deepwalk(g, 100)

from gensim.models import Word2Vec
# 训练word2vec
w2v = Word2Vec(history_walks, vector_size=50, window=5)
# 节点类别,因为word2vec有单独节点次序
node_group = group.iloc[list(w2v.wv.key_to_index.keys())][1].values
from sklearn.manifold import TSNE

tsne = TSNE(n_components=2)
tsne_data = tsne.fit_transform(w2v.wv.vectors)

import matplotlib.cm as cm
x = np.arange(20)
ys = [i+x+(i*x)**2 for i in range(20)]
colors = cm.rainbow(np.linspace(0, 1, len(ys)))

plt.scatter(
    tsne_data[:, 0], 
    tsne_data[:, 1],
    color=colors[node_group]
)

img

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# 划分数据集
x_tr, x_val, y_tr, y_val = train_test_split(
    w2v.wv.vectors, node_group, test_size=0.2, stratify=node_group
)

# 模型训练与验证,准确率0.535
model = LogisticRegression()
model.fit(x_tr, y_tr)
model.score(x_val, y_val)

2016 node2vec: Scalable Feature Learning for Networks, PDF

node2vec是一种综合考虑DFS邻域和BFS邻域的graph embedding方法。简单来说,可以看作是deepwalk的一种扩展,是结合了DFS和BFS随机游走的deepwalk。node2vec依然采用随机游走的方式获取顶点的近邻序列,不同的是node2vec采用的是一种有偏的随机游走。

node2vec的游走策略(已经由节点t�游走到节点v�,下一步如何抉择),根据下面公式,计算出每个每个邻近节点的“值”,然后折算成概率,最后别名采样算法最终游走到的目标节点(p�越小,embedding越倾向于表达同质性;q�越小,embedding越倾向于表达结构性)。

假设上一步在顶点t�,当前在顶点v�,接下来需要计算走到顶点x�的“权重”。dtx=0,1,2���=0,1,2分别表示下一步走回t�,走到x1�1,走到x2�2或x3�3的权重。(对应距离上一步位置t与下一步位置x的距离分别是0,1,2)

img

def next_step(graph, previous, current, p, q):
    neighbors = list(graph.neighbors(current))

    weights = []
    # Adjust the weights of the edges to the neighbors with respect to p and q.
    for neighbor in neighbors:
        if neighbor == previous:
            # Control the probability to return to the previous node.
            weights.append(1 / p)
        elif graph.has_edge(neighbor, previous):
            # The probability of visiting a local node.
            weights.append(1)
        else:
            # Control the probability to move forward.
            weights.append(1 / q)

    # Compute the probabilities of visiting each neighbor.
    weight_sum = sum(weights)
    probabilities = [weight / weight_sum for weight in weights]

    if len(neighbors) == 0:
        return None

    # Probabilistically select a neighbor to visit.    
    next = np.random.choice(neighbors, size=1, p=probabilities)[0]
    return next


def random_walk(graph, num_walks, num_steps, p, q):
    walks = []
    nodes = list(graph.nodes())
    # Perform multiple iterations of the random walk.
    for walk_iteration in range(num_walks):
        random.shuffle(nodes)

        for node in tqdm(nodes):
            # Start the walk with a random node from the graph.
            walk = [node]
            # Randomly walk for num_steps.
            while len(walk) < num_steps:
                current = walk[-1]
                previous = walk[-2] if len(walk) > 1 else None
                # Compute the next node to visit.
                next = next_step(graph, previous, current, p, q)
                if next:
                    walk.append(next)
                else:
                    break
            # Add the walk to the generated sequence.
            walks.append(walk)

    return walks

# Random walk return parameter.
p = 1

# Random walk in-out parameter.
q = 4

# Number of iterations of random walks.
num_walks = 5

# Number of steps of each random walk.
num_steps = 100

# 游走结果
walks = random_walk(g, num_walks, num_steps, p, q)

# 可视化、模型训练与验证,准确率0.555

img

- 任务5:图节点嵌入算法:

LINE

/

SDNE
  • 步骤1:使用LINE对Wiki数据集节点嵌入,维度为50维
  • 参考https://zhuanlan.zhihu.com/p/56478167和https://github.com/shenweichen/GraphEmbedding
  • 注意使用这个库,需要把数据集中的/t改为空格
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 步骤2:每个group中20%的节点作为验证集,剩余的作为训练集

  • 在这里插入图片描述

  • 步骤3:使用节点嵌入向量 + 逻辑回归进行训练,并记录验证集准确率

  • 在这里插入图片描述

  • 步骤4:使用SDNE重复上述操作
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 步骤5:使用t-SNE将节点的LINE/SDNE特征降维,绘制散点图,节点颜色使用group进行区分

  • Line:
    在这里插入图片描述

  • SDNE
    在这里插入图片描述

2015 LINE: Large-scale Information Network Embedding, PDF

LINE保留了对一阶相似性和二阶相似性的敏感度。LINE考虑了二阶关系,即两个点也许不直接相连,但是如果它们的一阶公共好友比较多那么它们也被认为是比较相似的。

The first-order proximity in a network is the local pairwise proximity between two vertices. If no edge is observed between u and v, their first-order proximity is 0.

The second order proximity between a pair of vertices (u, v) in a network is the similarity between their neighborhood network structures. If no vertex is linked from/to both u and v, the second-order proximity between u and v is 0.

LINE需要定义了节点嵌入矩阵,然后去通过节点嵌入向量的内积得到相似度,并将相似度与一阶相似性和二阶相似性之间计算的KL散度,本质是让嵌入矩阵去模拟原始节点的相似性。

LINE参考资料:

  • https://aistudio.baidu.com/aistudio/projectdetail/655814
  • https://github.com/thunlp/OpenNE/blob/pytorch/src/openne/models/line.py

first-order similariy between vertex vi�� and vj�� as follows:

p1(vi,vj)=11+exp(−u→Ti⋅u→j)�1(��,��)=11+exp⁡(−�→��⋅�→�)

2016 SDNE: Structural Deep Network Embedding, PDF

SDNE使用一个自动编码器结构来同时优化1阶和2阶相似度(LINE是分别优化的),学习得到的向量表示能够保留局部和全局结构,并且对稀疏网络具有鲁棒性。

- 任务6:图节点嵌入算法:

GraphGAN
  • 步骤1:使用GraphGAN对Wiki数据集节点嵌入,维度为50维

  • 参考:git clone https://github.com/hwwang55/GraphGAN.git
    在这里插入图片描述
    在这里插入图片描述
    先生成embedding,然后写入字典txt
    在这里插入图片描述
    使用GraphGAN训练相对来说时间就会比较久了,但是我们只是要个embedding训练结果。
    最后会生成对应的文件:
    在这里插入图片描述
    在这里插入图片描述
    经过较长的训练,5个epoch后我们得到了对应的emb文件。

  • 步骤2:每个group中20%的节点作为验证集,剩余的作为训练集
    在这里插入图片描述

  • 步骤3:使用节点嵌入向量 + 逻辑回归进行训练,并记录验证集准确率
    在这里插入图片描述

  • 步骤4:使用t-SNE将节点的GraphGAN特征降维,绘制散点图,节点颜色使用group进行区分

  • gen
    在这里插入图片描述

  • dis

在这里插入图片描述

2017 GraphGAN: Graph Representation Learning with Generative Adversarial Nets, PDF

GraphGAN是一种结合了生成模型和判别模型的框架。其中生成器拟合Ptrue,判别器尝试去判别两个点之间是否有边。

### 推荐资料

  • https://github.com/shenweichen/GraphEmbedding
  • https://github.com/daicoolb/Awesome-Graph-Embedding
  • https://github.com/thunlp/TADW/
  • https://blog.csdn.net/Dark_Scope/article/details/74279582
  • https://stellargraph.readthedocs.io/en/stable/demos/node-classification/index.html

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

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

相关文章

PowerAutomation获取邮件附件并删除这个邮件方法

这个文章是怎么来的呢&#xff1f;现在不是低代码开发平台启蒙阶段嘛&#xff1f;笔者也有幸在工作中进行了尝试&#xff0c;目前也已经在实际工作中结合Python进行了使用&#xff0c;当然&#xff0c;是可以提高IT的工作效率的。需求是这样的&#xff0c;想从公司的EBS平台报表…

3.5 实战:Spring Boot 实现系统多环境配置

第3章 Spring Boot 的系统配置 3.1 Spring Boot 系统配置文件 3.2 Spring Boot 自定义配置项 3.3 Spring Boot 其他配置 3.4 Spring Boot 日志配置 3.5 实战&#xff1a;Spring Boot 实现系统多环境配置 3.5 实战&#xff1a;Spring Boot 实现系统多环境配置 在实际项目开发的…

python的所有知识点(含讲解),不看就亏死了

目录 简介 特点 搭建开发环境 版本 hello world 注释 文件类型 变量 常量 数据类型 运算符和表达式 控制语句 数组相关 函数相关 字符串相关 文件处理 对象和类&#xff0c;注&#xff1a;不是那个对象&#xff01;&#xff01;&#xff01;&#xff01;&…

2023年安徽省职业院校技能大赛“网络空间安全” 比赛任务书

2023年安徽省职业院校技能大赛“网络空间安全” 比赛任务书 一、竞赛时间 总计:360分钟 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 Nginx安全策略 A-3 日志监控 A-4 中间件服务加固 A-5 本地安全策略 A-6 防火墙策…

基本程序设计技术

一.统计&#xff08;计数&#xff09;问题&#xff1a;方法&#xff1a;计数变量c的初值为0&#xff0c;每输入一个数据&#xff0c;进行必要判断后&#xff0c;若输入的数据满足统计条件&#xff0c;则计数变量c自加1&#xff0c;这样当对所有输入进行判断后&#xff0c;计数变…

多线程案例(一)【单例模式+阻塞队列】

一、单例模式 单例模式属于最容易被问到的一种设计模式。 啥是设计模式&#xff1f; 类似于棋谱&#xff0c;按摩模式写代码&#xff0c;可以更加规范。 单例模式的含义&#xff1a; 单例&#xff1a;单个实例对象 某个类有且只有一个对象。 这一点在很多场景上都需要. 比如…

如何轻松录制 CS 游戏玩法?4 种免费录制 CS 游戏视频的方法

CS:GO&#xff0c;又名反恐精英&#xff1a;全球攻势&#xff0c;是一款多人第一人称射击游戏&#xff0c;由 Valve 和 Hidden Path Entertainment 于 2012 年设计推出。作为反恐精英系列的第四代&#xff0c;它广受欢迎与全球游戏玩家。随着近年来电子竞技的兴起&#xff0c;用…

冒泡排序(朴素+优化)

思想 先来看一张动图 上面这张图就是冒泡排序的代码可视化 很显然我们可以发现&#xff0c;冒泡排序的基本思想就是从前往后比对&#xff0c;一直将找到的最大值交换到序列的末尾感觉冒泡排序这个名字还是很形象的 朴素做法 不难看出&#xff0c;将最大值交换到末尾的操作一…

数据结构与算法之打家劫舍(二)动态规划思想

前言&#xff1a;上一个题目所求的数组是线性的&#xff0c;首尾并不影响结果。这道题目的数组的首尾相连接&#xff0c;构成一个环。再来求这一道题目&#xff0c;难度进一步上身。我们直接进入题目&#xff1a;一.题目二.在上一道题目的基础上进行剖析对于一个数组&#xff0…

​科伦博泰冲刺港交所上市:持续大额亏损,科伦药业为其控股股东​

近日&#xff0c;四川科伦博泰生物医药股份有限公司&#xff08;下称“科伦博泰”&#xff09;在港交所递交招股书&#xff0c;准备在港交所主板上市&#xff0c;高盛和中信证券为其联合保荐机构。据贝多财经了解&#xff0c;科伦博泰为A股上市公司科伦药业&#xff08;SZ:0024…

6.Kafka发布和显示系统通知

1.阻塞队列生产者线程线程需要实现 Runnable 接口重写接口的run方法声明变量private BlockingQueue<Integer> queue接受传入的阻塞队列创建有参构造器实现示例逻辑&#xff0c;生产100个数据&#xff0c;put进阻塞队列&#xff0c;每生产一个数据停顿20毫秒&#xff0c;输…

Ubuntu22.04 安装 mysql8,redis7,MongoDB6

服务器的准备 我的服务器是在腾讯云租的&#xff0c;所以服务器的apt源都是默认配好的&#xff0c;没配好的自行网上查找apt源配置。本文同样适用于Ubuntu 22&#xff0c;20。Ubuntu18亦可参考。云服务器一般防火墙未开放端口访问&#xff0c;请自行配置&#xff0c;否则后续远…

【unity游戏制作-mango的冒险】-4.场景二的镜头和法球特效跟随

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏&#xff1a;unity游戏制作 ⭐mango的冒险场景二——镜头和法球特效跟随⭐ 文章目录⭐mango的冒险场景二——镜…

【2023蓝桥杯】枚举专项题笔记

【枚举】卡片小蓝有很多数字卡片&#xff0c;每张卡片上都是数字 0 到 9。小蓝准备用这些卡片来拼一些数&#xff0c;他想从 1开始拼出正整数&#xff0c;每拼一个&#xff0c;就保存起来&#xff0c;卡片就不能用来拼其它数了。小蓝想知道自己能从 1拼到多少。例如&#xff0c…

JVM垃圾回收器概述

Serial串行回收 Serial收集器是最基本、历史最悠久的垃圾收集器了。JDK1.3之前回收新生代唯一的选择。 Serial收集器作为HotSpot中client模式下的默认新生代垃圾收集器。 Serial收集器采用复制算法、串行回收和"stop-the-World"机制的方式执行内存回收。 除了年轻…

【Redis】概述环境搭建(一)

&#x1f697;Redis学习起始站~ &#x1f6a9;本文已收录至专栏&#xff1a;数据库学习之旅 &#x1f44d;希望您能有所收获 一.初识Redis (1) 概述 Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器&#xff0c;是一个基于内存的键值型NoSQL数据库。这里有两…

数字IC笔试题---千题解,量大管饱,图文并茂

前言&#xff1a;出笔试题汇总&#xff0c;是为了总结秋招可能遇到的问题&#xff0c;做题不是目的&#xff0c;在做题的过程中发现自己的漏洞&#xff0c;巩固基础才是目的。所有题目结果和解释由笔者给出&#xff0c;答案主观性较强&#xff0c;若有错误欢迎评论区指出&#…

es8集群模式部署

准备3台机器 192.168.1.41 192.168.1.42 192.168.1.43因为es集群有几个节点&#xff0c;所以我对应node1&#xff0c;node2&#xff0c;node3.这几个名称并不是主机名&#xff0c;而是es节点名称 2. 开始部署&#xff0c;基础配置 (三台都做) systemctl stop firewalld syste…

【数据库】SQL语句

第三章 SQL SQL(structured Query Language) SQL概述 SQL特点 综合统一。高度非过程化。面向集合的操作方式。以同一种语法结构提供多种使用方式。语言简洁易学易用。 主要版本 SQL-89SQL-92 ,SQL2SQL-99 ,SQL3 数据库结构 SQL语言是集DDL、DML和DCL于一体的数据库语言…

网安入门,这篇文章足够了(内含海量资料)

随着新一轮科技和产业变革加速演进&#xff0c;人工智能、物联网、大数据、5G等新兴技术在成为经济社会发展的助推器的同时&#xff0c;也让网络空间变得更加复杂。全球范围内网络安全事件日益增加&#xff0c;网络安全的重要性日渐凸显。 “我国网络空间安全人才年培养规模在…