【CS224W】(task2)传统图机器学习和特征工程

news2024/11/14 3:06:37

note

  • 和CS224W课程对应,将图的基本表示写在task1笔记中了;传统图特征工程:将节点、边、图转为d维emb,将emb送入ML模型训练
  • Traditional ML Pipeline
    • Hand-crafted feature + ML model
  • Hand-crafted features for graph data
    • Node-level的特征工程:
      • Node degree, centrality, clustering coefficient, graphlets
    • Link-level的特征工程:
      • Distance-based feature
      • local/global neighborhood overlap
    • Graph-level的特征工程:
      • Graphlet kernel, WL kernel
    • 为了研究图神经网络的表达力问题,产生一个重要模型——图同构模型,Weisfeiler-Lehman测试就是检测两个图是否在拓扑结构上图同构的近似方法;该测试最大的特点是:对每个节点的子树的聚合函数采用的是单射(Injective)的散列函数
      ——由该特点我们可以通过设计一个单射聚合聚合函数来设计与WL一样强大的图卷积网络(同时,图同构网络有强大的图区分能力,适合图分类任务)。

文章目录

  • note
  • 一、前言
  • 二、Traditional Feature-based Methods: Node
    • 2.1 节点的特征
    • 2.2 node centrality 节点重要度
    • 2.3 clustering coefficient 聚集系数
    • 2.4 graphlets 有根连通异构子图
    • 2.5 思考题
      • (1)扩展阅读
      • (2)思考题
      • (3)小结
  • 三、Traditional Feature-based Methods: Link
    • 3.1 链接预测任务
    • 3.2 捕获节点的共同邻居数
    • 3.3 Global neighborhood overlap
      • (1)扩展阅读
      • (2)思考题
      • (3)小结
  • 四、Traditional Feature-based Methods: Graph
    • 4.1 图级别分类
    • 4.2 Kernel Methods
      • 方法一:Graphlet Kernel
      • 方法二:Weisfeiler-Lehman Kernel
        • (1)图同构性测试算法WL Test
          • 背景介绍
          • WL举例说明(以一维为栗子)
      • 第一步:聚合
      • 第二步:标签散列(哈希)
        • 注:怎样的聚合函数是一个单射函数?
      • 第三步:给节点重新打上标签。
      • 第四步:数标签
      • 第五步:判断同构性
        • (2)WL Subtree Kernel图相似性评估(定量化)
    • 4.3 小结
      • (1)扩展阅读
      • (2)思考题
      • (3)小结
  • 五、其他
  • 附:时间安排
  • Reference

一、前言

除了想获得训练数据中节点or边or图特征数据,还有反应节点在网络中位置、局部网络local network structure等特征。
在这里插入图片描述
本讲不讲属性特征,只讲连接特征。

二、Traditional Feature-based Methods: Node

2.1 节点的特征

在这里插入图片描述

  • 半监督学习:如上图的节点分类,预测灰色点时属于红色点还是绿色点。
  • 特征抽取目标:找到能够描述节点在网络中结构与位置的特征
  • 节点的度数:缺点是节点的所有邻居节点的重要程度都相同

2.2 node centrality 节点重要度

  • node centrality:考虑了节点的重要性
    在这里插入图片描述
    (1)eigenvector centrality:如果当前节点周围有很多重要的邻居节点,则可以认为当前节点也是重要的,即节点v的centrality是邻居centrality的加和: c v = 1 λ ∑ u ∈ N ( v ) c u c_{\mathrm{v}}=\frac{1}{\lambda} \sum_{\mathrm{u} \in \mathrm{N}(\mathrm{v})} \mathrm{c}_{\mathrm{u}} cv=λ1uN(v)cu,其中 λ \lambda λ是某个正常数。
    • 该递归式的解法是转为矩阵形式: λ c = A c \lambda \mathbf{c}=\mathbf{A} \mathbf{c} λc=Ac,其中 A A A是邻接矩阵,c是centralty向量,即特征向量。根据Perron-Frobenius Theorem知最大的特征值总为正且唯一,对应的c为centrality向量

在这里插入图片描述
(2)betweenness centrality:若该节点在很多节点对的最短路径上,则认为该节点重要
(3)closeness centrality:若该节点和其他节点的距离最短,则认为该节点重要 ,如下图所示

在这里插入图片描述

2.3 clustering coefficient 聚集系数

衡量节点邻居的连接程度,描述节点的局部结构信息。
在这里插入图片描述
( k v 2 ) \left(\begin{array}{c}\mathrm{k}_{\mathrm{v}} \\ 2\end{array}\right) (kv2)是组合数的写法,表示v邻居所构成的节点对,即潜在的连接数,衡量节点邻居的连接有多紧密,如上图中ev=6/6。

2.4 graphlets 有根连通异构子图

在这里插入图片描述

  • Graphlet Degree Vector (GDV): Graphlet-base features for nodes
  • GDV与其他两种描述节点结构的特征的区别:
  • Degree counts #(edges) that a node touches
  • Clustering coefficient counts #(triangles) that a node touches.
  • GDV counts #(graphlets) that a node touches
  • Graphlet Degree Vector (GDV): A count vector of graphslets rooted at a given node.

2.5 思考题

(1)扩展阅读

https://www.geeksforgeeks.org/eigenvector-centrality-centrality-measure

https://www.jsums.edu/nmeghanathan/files/2015/08/CSC641-Fall2015-Module-2-Centrality-Measures.pdf?x61976

https://aksakalli.github.io/2017/07/17/network-centrality-measures-and-their-visualization.html

上海地铁线路图:http://www.shmetro.com

上海地铁时刻表:http://service.shmetro.com/hcskb/index.htm

北京地铁线路图:https://map.bjsubway.com

北京地铁时刻表:https://www.bjsubway.com/station/smcsj

https://hal.archives-ouvertes.fr/hal-01764253v2/document

NetworkX-常用图数据挖掘算法:https://networkx.org/documentation/stable/reference/algorithms/index.html

NetworkX-节点重要度算法:https://networkx.org/documentation/stable/reference/algorithms/centrality.html

NetworkX-Clustering算法:https://networkx.org/documentation/stable/reference/algorithms/clustering.html

NetworkX-最短路径算法:https://networkx.org/documentation/stable/reference/algorithms/shortest_paths.html

(2)思考题

节点层面,存在哪些数据挖掘任务,有何应用场景?

“传统图机器学习方法”传统在何处?

特征工程在数据挖掘中有什么作用?

在传统图机器学习中,为什么要对节点、连接、全图做特征工程?

传统图机器学习方法相比图神经网络(深度学习),有什么优点和缺点?

节点层面可以构造哪些特征?这些特征可以归为哪两类?

简述不同的Node Centrality计算方法

只用Node Degree作为节点重要度,会有什么缺点?

Eigenvector centrality和PageRank有什么异同?

Betweenness Centrality和Closeness Centrality有什么区别?分别揭示了节点是什么特征?

你认为所有海峡中,哪个海峡的Betweenness Centrality最高?

你认为中国所有城市中,哪个城市的Closeness Centrality最高?

湖北到中国任何一个省级行政区,最多跨两个省,说明哪个特征高?

你认为你所在城市的地铁站中,哪个地铁站的Closeness Centrality最高?哪个地铁站的Clutering Coefficient最高?

地铁线路连接关系,应该如何表示?(邻接矩阵、连接列表、邻接列表)

你认为你的人脉圈中,谁的Clutering Coefficient最高?为什么?

什么是Ego-Network(自我中心网络)?

Graphlet和Wavelet(小波分析)有什么异同?

由四个节点组成的图,存在多少种Graphlet?

五个节点构造的所有Graphlet中,存在多少种不同角色的节点?

节点的哪些特征,可以衡量该节点是否为中心枢纽节点?桥接节点?边缘孤立节点?

除了课程中讲的Centrality之外,还有哪些Centrality指标?(PageRank、Katz Centrality、HITS Hubs and Authorities)

(3)小结

节点级别的特征:

  • importance-based features:捕获节点在图中的重要性
    • 节点度数
    • 不同的节点centrality衡量方法

在这里插入图片描述

  • struture-based features:捕获节点附近的拓扑属性
    在这里插入图片描述

三、Traditional Feature-based Methods: Link

3.1 链接预测任务

在这里插入图片描述

任务:基于已知边,预测新边的类别。测试模型时:将每一对没有连接的节点对进行排序,取存在连接概率最高的topK个节点对,作为预测的结果。

  • 两种类型:随机缺失边、随时间演化边
    • 第一种:比如研究发现蛋白质之间的交互作用
    • 第二种:社交网络,随时间迁移,认识更多人

在这里插入图片描述

3.2 捕获节点的共同邻居数

Local neighborhood overlap:

  • common neighbors(共同好友个数)的问题在于度数高的点对就会有更高的结果;
  • Jaccard’s coefficient(交并比)是其归一化后的结果。

在这里插入图片描述

3.3 Global neighborhood overlap

local neighborhood overlap的局限:如果两个节点都没有公共的邻居节点,则对应的local neighborhood overlap始终为0。
在这里插入图片描述

(1)扩展阅读

NetworkX相关文档

https://networkx.org/documentation/stable/reference/generated/networkx.classes.function.common_neighbors.html

https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.link_prediction.jaccard_coefficient.html

https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.link_prediction.adamic_adar_index.html

https://stackoverflow.com/questions/62069781/how-to-find-the-similarity-between-pair-of-vertices-using-katz-index-in-python

(2)思考题

连接层面,存在哪些数据挖掘任务,有何应用场景?

连接层面可以构造哪些特征?这些特征可以归为哪三类?

简述Link Prediction的基本流程

A和B都知道梅西,C和D都知道同济子豪兄,请问哪对人物更容易产生社交连接。可以用哪个特征解释?

两个节点没有共同好友时,可以用什么特征,将连接编码为D维向量?

简述Katz Index的算法原理

如何计算节点U和节点V之间,长度为K的路径个数

为什么不直接把link两端节点的向量特征concat到一起,作为link的向量特征

(3)小结

在这里插入图片描述

四、Traditional Feature-based Methods: Graph

4.1 图级别分类

  • 构建目标:找到能描述全图结构的特征

4.2 Kernel Methods

在这里插入图片描述

方法一:Graphlet Kernel

【代码例子】找出所有的子图Graphlet。

import networkx as nx
import matplotlib.pyplot as plt
import scipy
import pandas as pd
import matplotlib.colors as mcolors
import itertools

# 10. 子图Graphlet
G = nx.karate_club_graph()
# plt.figure(figsize=(10,8))
pos = nx.spring_layout(G, seed=123)
# nx.draw(G, pos, with_labels=True)

# 指定Graphlet
target = nx.complete_graph(3)
# nx.draw(target)

# 匹配Graphlet, 统计个数
num = 0
for sub_nodes in itertools.combinations(G.nodes(), len(target.nodes())):  # 遍历全图中,符合graphlet节点个数的所有节点组合
    # 从全图中抽取出子图
    subg = G.subgraph(sub_nodes)
    # 如果子图是完整连通域,并且符合graphlet特征,输出原图节点编号
    if nx.is_connected(subg) and nx.is_isomorphic(subg, target):
        num += 1
        print(subg.edges())
print("=====test=======")

方法二:Weisfeiler-Lehman Kernel

(1)图同构性测试算法WL Test

背景介绍

两个图是同构的,意思是两个图拥有一样的拓扑结构,也就是说,我们可以通过重新标记节点从一个图转换到另外一个图。Weisfeiler-Lehman 图的同构性测试算法,简称WL Test,是一种用于测试两个图是否同构的算法。

WL Test 的一维形式,类似于图神经网络中的邻接节点聚合。WL Test
1)迭代地聚合节点及其邻接节点的标签,然后 2)将聚合的标签散列(hash)成新标签,该过程形式化为下方的公式,
L u h ← hash ⁡ ( L u h − 1 + ∑ v ∈ N ( U ) L v h − 1 ) L^{h}_{u} \leftarrow \operatorname{hash}\left(L^{h-1}_{u} + \sum_{v \in \mathcal{N}(U)} L^{h-1}_{v}\right) Luhhash Luh1+vN(U)Lvh1
符号: L u h L^{h}_{u} Luh表示节点 u u u的第 h h h次迭代的标签,第 0 0 0次迭代的标签为节点原始标签。

在迭代过程中,发现两个图之间的节点的标签不同时,就可以确定这两个图是非同构的。需要注意的是节点标签可能的取值只能是有限个数。
在这里插入图片描述

WL举例说明(以一维为栗子)

给定两个图 G G G G ′ G^{\prime} G,每个节点拥有标签(实际中,一些图没有节点标签,我们可以以节点的度作为标签)。

在这里插入图片描述

Weisfeiler-Leman Test 算法通过重复执行以下给节点打标签的过程来实现图是否同构的判断

第一步:聚合

聚合自身与邻接节点的标签得到一串字符串,自身标签与邻接节点的标签中间用,分隔,邻接节点的标签按升序排序。排序的原因在于要保证单射性,即保证输出的结果不因邻接节点的顺序改变而改变。

如下图就是,每个节点有个一个label(此处表示节点的度)。
在这里插入图片描述
如下图,做标签的扩展:做一阶BFS,即只遍历自己的邻居,比如在下图中G中原5号节点变成(5,234),这是因为原(5)节点的一阶邻居有2、3、4。
在这里插入图片描述

第二步:标签散列(哈希)

即标签压缩,将较长的字符串映射到一个简短的标签。
如下图,仅仅是把扩展标签映射成一个新标签,如5,234映射为13
在这里插入图片描述

注:怎样的聚合函数是一个单射函数?

什么是单射函数?

单射指不同的输入值一定会对应到不同的函数值。如果对于每一个y存在最多一个定义域内的x,有f(x)=y,则函数f被称为单射函数。

看一个栗子:

两个节点v1和v2,其中v1的邻接点是1个黄球和1个蓝球,v2的邻接点是2个邻接点是2个黄球和2个蓝球。最常用的聚合函数包含图卷积网络中所使用的均值聚合,以及GraphSAGE中常用的均值聚合或最大值聚合。

(1)如果使用均值聚合或者最大值聚合,聚合后v1的状态是(黄,蓝),而v2的状态也是(黄,蓝),显然它们把本应不同的2个节点映射到了同一个状态,这不满足单射的定义。
(2)如果使用求和函数,v1的状态是(黄,蓝),而v2的状态是(2×黄,2×蓝),也就分开了。
在这里插入图片描述
可以看出WL测试最大的特点是:对每个节点的子树的聚合函数采用的是单射(Injective)的散列函数。

第三步:给节点重新打上标签。

继续一开始的栗子,
在这里插入图片描述

第四步:数标签

如下图,在G网络中,含有1号标签2个,那么第一个数字就是1。这些标签的个数作为整个网络的新特征。
在这里插入图片描述
每重复一次以上的过程,就完成一次节点自身标签与邻接节点标签的聚合。

第五步:判断同构性

当出现两个图相同节点标签的出现次数不一致时,即可判断两个图不相似。如果上述的步骤重复一定的次数后,没有发现有相同节点标签的出现次数不一致的情况,那么我们无法判断两个图是否同构。

当两个节点的 h h h层的标签一样时,表示分别以这两个节点为根节点的WL子树是一致的。WL子树与普通子树不同WL子树包含重复的节点。下图展示了一棵以1节点为根节点高为2的WL子树。

在这里插入图片描述

(2)WL Subtree Kernel图相似性评估(定量化)

此方法来自于Weisfeiler-Lehman Graph Kernels。

  • WL测试不能保证对所有图都有效,特别是对于具有高度对称性的图,如链式图、完全图、环图和星图,它会判断错误
  • WL测试只能判断两个图的相似性,无法衡量图之间的相似性。要衡量两个图的相似性,我们用WL Subtree Kernel方法

Weisfeiler-Lehman Graph Kernels 方法提出用WL子树核衡量图之间相似性。该方法使用WL Test不同迭代中的节点标签计数作为图的表征向量,它具有与WL Test相同的判别能力。在WL Test的第 k k k次迭代中,一个节点的标签代表了以该节点为根的高度为 k k k的子树结构

该方法的思想是用WL Test算法得到节点的多层的标签,然后我们可以分别统计图中各类标签出现的次数,存于一个向量,这个向量可以作为图的表征。两个图的表征向量的内积,即可作为这两个图的相似性估计,内积越大表示相似性越高
在这里插入图片描述

4.3 小结

(1)扩展阅读

https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.graph_hashing.weisfeiler_lehman_graph_hash.html

(2)思考题

全图层面,存在哪些数据挖掘任务,有何应用场景?

全图层面可以构造哪些特征?

全图层面的Graphlet,和节点层面的Graphlet,有什么区别?

子图匹配,算法复杂度如何计算?

简述Weisfeiler-Lehman Kernel的算法原理

Weisfeiler-Lehman Kernel的词汇表(颜色表)是如何构建的?

Weisfeiler-Lehman Kernel,算法复杂度是多少?

Weisfeiler-Lehman Kernel和图神经网络(GNN)有什么关系?

简述Kernel Methods基本原理

为什么在Graph-level任务中,使用Kernel Methods

除了Graphlet Kernel和Weisfeiler-Lehman Kernel之外,还有哪些Kernel

传统图机器学习和特征工程中,哪些特征用到了邻接矩阵Adjacency Matrix?

如何把无向图节点、连接、全图的特征,推广到有向图?

如何用代码实现Weisfeiler-Lehman Kernel?

(3)小结

在这里插入图片描述

五、其他

同济子豪兄中文精讲视频:

节点特征工程:https://www.bilibili.com/video/BV1HK411175s

连接特征工程:https://www.bilibili.com/video/BV1r3411m7sD

全图特征工程:https://www.bilibili.com/video/BV14W4y1V7gg

斯坦福原版视频:

https://www.youtube.com/watch?v=3IS7UhNMQ3U&list=PLoROMvodv4rPLKxIpqhjhPgdQy7imNkDn&index=4

https://www.youtube.com/watch?v=4dVwlE9jYxY&list=PLoROMvodv4rPLKxIpqhjhPgdQy7imNkDn&index=5

https://www.youtube.com/watch?v=buzsHTa4Hgs&list=PLoROMvodv4rPLKxIpqhjhPgdQy7imNkDn&index=6

附:时间安排

任务任务内容截止时间注意事项
2月11日开始
第一周
task1图机器学习导论2月14日周二完成
task2图的表示和特征工程2月15、16日周四
task3NetworkX工具包实践2月17、18日周六代码实战
第二周
task4图嵌入表示2月19、20日周一
task5deepwalk、Node2vec论文精读2月21、22日周三
task6PageRank2月23、24日周五
task7标签传播与节点分类2月25、26日周日
第二周
task8图神经网络基础2月27、28日周二
task9图神经网络的表示能力3月1日周三
task10图卷积神经网络GCN3月2日周四
task11图神经网络GraphSAGE3月3日周五
task12图神经网络GAT3月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] 图表示学习系列2——传统机器学习方法

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

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

相关文章

被滥用的Slack服务:APT29针对意大利的攻击活动分析

背景 APT29,又名CozyBear, Nobelium, TheDukes,奇安信内部编号APT-Q-77,被认为是与东欧某国政府有关的APT组织。该组织攻击活动可追溯至2008年,主要攻击目标包括西方政府组织机构、智囊团。APT29曾多次实施大规模鱼叉攻击&#x…

linux高级命令之进程的注意点

进程的注意点学习目标能够说出进程的注意点1. 进程的注意点介绍进程之间不共享全局变量主进程会等待所有的子进程执行结束再结束2. 进程之间不共享全局变量import multiprocessing import time# 定义全局变量 g_list list()# 添加数据的任务defadd_data():for i in range(5):g…

snakeyaml自定义pojo写入yml文件时属性字段排序问题

snakeyaml采用LinkedHashMap保存对象,最后写入yml文件的时候,可以按照存入的顺序写入yml,如果采用自定义pojo,虽然可以写入yml,但是属性默认是按照字母顺序进行写入的。 如下所示,定义一个User实体&#xf…

kafka生产者事务踩坑记录

1. 背景 公司需要迁移一个老 spark 项目,之前是消费阿里 LogStore 中的实时数据,处理之后将结果落库。使用的是 spark streaming,batch 时间为 2 分钟。迁移后,需要将 LogStore 切换为 kafka,涉及到了对代码的改动。公…

常见的数据结构

栈(stack) 栈( stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶(top)。它是后进先出(LIFO)的。对栈的基本操作只有 push&#x…

linux高级命令之线程

线程学习目标能够知道线程的作用1. 线程的介绍在Python中,想要实现多任务除了使用进程,还可以使用线程来完成,线程是实现多任务的另外一种方式。2. 线程的概念线程是进程中执行代码的一个分支,每个执行分支(线程&#…

macos 下载 macOS 系统安装程序及安装U盘制作方法

01 下载 macOS 系统安装程序的方法 本文来自: https://discussionschinese.apple.com/docs/DOC-250004259 简介 Mac 用户时不时会需要下载 macOS 的安装程序,目的不同,或者升级或者降级,或者研究或者收藏。为了方便不同用户,除…

设计模式之委派模式与模板模式详解和应用

目录1 委派模式1.1 目标1.2 内容定位1.3 定义1.4 委派模式的应用场景1.5 委派模式在业务场景中的应用1.6 委派模式在源码中的体现1.6.1 双亲委派模型1.6.2 常用代理执行方法 invoke1.6.3 Spring loC中 在调用 doRegisterBeanDefinitions()1.6.4 SpringMVC 的DispatcherServlet1…

python基于vue微信小程序的校园闲置二手跳蚤商城的设计与实现

在当今社会的高速发展过程中,产生的劳动力越来越大,提高人们的生活水平和质量,尤其计算机科技的进步,数据和信息以人兴化为本的目的,给人们提供优质的服务,其中网上购买二手商品尤其突出,使我们的购物方式发生巨大的改变。而线上购物,不仅需要在硬件上为人们提供服务网上购物,而…

尚医通 (十七)手机登录

目录一、登录需求分析二、搭建service-user模块三、登录接口实现1、添加service接口与实现2、添加Mapper接口3、添加Controller方法四、手机验证码登录(生成token)1、使用JWT进行跨域身份验证1.1 传统用户身份验证1.2 解决方案2、JWT介绍3、整合JWT4、单…

Minecraft服务端配置

✨✨前言 ✨✨ 我的世界大家肯定都不陌生,在网易拿下中国区的代理后,很多小伙伴也是都转向了网易版我的世界,网易版我的世界可以说已经做是的十分全面了,使用起来也十分方便,一部分小伙伴也是看重了网易庞大的玩家数量…

使用uniapp创建小程序和H5界面

uniapp的介绍可以看官网,接下来我们使用uniapp创建小程序和H5界面,其他小程序也是可以的,只演示创建这2个,其实都是一套代码,只是生成的方式不一样而已。 uni-app官网 1.打开HBuilder X 选择如图所示,下…

1. Unity的下载与安装

1. 下载 Unity Hub: unity hub是unity编辑器的一个管理工具,负责平时的unity项目创建和管理,以及unity编辑器的安装等 首先在unity官网网址链接,点击左下角的DownLoad Unity图标,如下图: 进入下一个页面,…

LinkedHashMap实现LRU算法

目录LRU 简介LinkedHashMap的使用手写LRU缓存淘汰算法LRU 简介 LRU 是 Least Recently Used 的缩写,这种算法认为最近使用的数据是热门数据,下一次很大概率将会再次被使用。而最近很少被使用的数据,很大概率下一次不再用到。当缓存容量的满时…

show profile和trance分析SQL

目录 一.show profile分析SQL 二.trance分析优化器执行计划 一.show profile分析SQL Mysql从5.0.37版本开始增加了对show profiles和show profile语句的支持。show profiles能够在做SQL优化时帮助我们了解时间都耗费到哪里去了。。 通过have_profiling参数,能够…

J东滑块分析

内容仅供参考学习 欢迎朋友们V一起交流: zcxl7_7 目标 网址:案例地址 J东登录页面会有滑块,直接用来研究 分析 模拟一次触发滑块验证请求(如图) 有2个重要请求,一个是g.html,一个是s.html。其中很明确的就是g是获…

【100个 Unity实用技能】 | Unity 通过自定义菜单将资源导出

Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…

C++——二叉树的前序遍历||中序遍历||后序遍历 非递归算法

目录二叉树的前序遍历,非递归迭代实现二叉树的中序遍历 ,非递归迭代实现二叉树的后序遍历 ,非递归迭代实现二叉树的前序遍历,非递归迭代实现 题目链接 思路: 将任何一颗树分成两个部分,一部分是左路节点&a…

用Three.js搭建的一个艺术场景

本文翻译自于Medium,原作者用 Three.js 创建了一个“Synthwave 场景”,效果还不错,在此加上自己的理解,记录一下。在线Demo. 地形构建 作者想要搭建一个中间平坦、两侧有凹凸山脉效果并且能够一直绵延不断的地形,接下…

Quartz组件任务调度管理

Quartz什么是Quartzquartz:石英钟的意思是一个当今市面上流行的高效的任务调度管理工具所谓"调度"就是制定好的什么时间做什么事情的计划由OpenSymphony开源组织开发Symphony:交响乐是java编写的,我们使用时需要导入依赖即可为什么需要Quartz所谓"调度"就是…