论文阅读 - Outlier detection in social networks leveraging community structure
目录
摘要
1. Introduction
2. Related works
3. Preliminaries
3.1. 模块化度量
3.2. Classes of outliers
3.2.1. 点异常
3.2.2. Contextual anomalies
3.2.3. Collective anomalies
3.3. Problem definition
3.4. Outliers score
4. Methodology
4.1. Proposed approach
4.2. Complexity analysis
4.3. Implementation
摘要
社交网络已成为现代社会的一个重要方面,并逐渐成为世界范围内不可或缺的交流手段。每天都有大量数据通过社交网络传输。因此,确保安全成为一种必要。可疑用户或垃圾邮件发送者可能会对用户在网络上共享的信息和数据构成威胁。有鉴于此,异常值检测是网络通信的一个重要方面。本文提出了一种新技术,利用网络社区结构从全局角度识别网络中的异常情况。一般来说,最先进的异常值检测算法主要关注单个节点及其直接邻域。但我们的技术只考虑那些倾向于属于多个社区的节点,或其邻居属于同一社区或不属于任何社区的节点。
在合成网络和真实世界网络上的实验结果表明,与最先进的算法相比,我们的 F-Score 和 Jaccard 相似度分别提高了 7-10% 和 29%。此外,与最先进的算法相比,我们的计算速度提高了近 1.83 倍。
1. Introduction
在过去的几十年里,社交网络(SN)已成为全球用户之间交流的重要媒介,用户之间共享着大量的数据和信息。如今,Facebook、Twitter 等社交网络拥有数十亿用户。对这些用户进行验证变得极为重要,因为他们可能对网络上共享的信息构成威胁,并可能导致盗窃、欺诈、有组织犯罪甚至恐怖活动[1]。因此,识别社交网络中的可疑用户最近引起了广泛关注。
一般来说,社交网络包含社区[2],在这些社区中,用户形成了联系紧密的子群,因此子群之间的联系与同一子群内部的联系相比是稀疏的[3,4]。社交网络中的离群值被定义为往往属于一个以上社群的用户,或其邻居只属于一个社群或不属于任何社群的用户[5]。迄今为止,已有多项研究识别出了社交网络中的离群值 [6-10],但其中大多数研究的速度较慢,且计算量较大。
本文展示了一种利用网络社区结构快速查找社交网络中异常值的方法。通过只关注最有可能成为离群值的挂点节点和社区边界节点(CBN)1,搜索空间被大大缩小。然后,我们使用一种称为 "永久性"(permanence)的基于节点的指标来评估 CBN 在其社区内的关联性 [11]。
本文的主要贡献如下:
利用 SN 的社群结构来识别离群值,其中社群边界节点使用基于节点的度量标准 "永久性"(permanence)[11]来处理,这是我们所知的首个研究。
在合成网络和真实世界网络上进行的实验评估结果表明,与现有作品相比,F- Score 和 Jaccard 相似度分别提高了 10%和 29%。此外,与最先进的算法相比,所提出的技术实现了 1.83 倍的提速。
我们将本文的其余部分安排如下。第 2 节介绍了相关工作。第 3 节正式定义了问题陈述和衡量标准。第 4 节的目的是说明如何利用群落结构来识别异常值。第 5 节介绍了实验结果。在第 6 节中,我们对结果进行了分析。最后,我们将在第 7 节中结束本文。
2. Related works
在过去几年中,研究人员对社交网络中的异常值检测问题进行了广泛的研究。
Keyvanpour 等人在 [2] 中提出了一种基于网络社区结构的方法来识别社交网络中的异常点。该方法没有通过应用额外的特征或特征组合方法来提高异常评分。这种方法只适用于静态图,而社交网络是随时间变化的。
Win 等人在文献[9]中提出了一种基于边缘结构的社交网络社区检测方法,利用节点的相似性进行邻域重叠,从而识别异常值。
Gupta 等人在文献[7]中提出了一种基于异构信息网络中社区分布的异常值检测技术,如果节点的异常值偏离了常见的社区分布模式,就会被识别出来。实验评估表明,该算法能够检测出不同程度的离群值、数据维度和多种类型的离群值。该算法没有考虑流场景中涉及多个时间网络快照的情况。
Helling 等人在 [10] 中提出从全局角度找出异常节点。如果一个节点属于一个社区,但却连接到多个不同的社区,那么这个节点就是异常节点。该算法与某些边呈线性扩展,比以前的工作有所改进。本文重点介绍了用于社区检测的 CADA 算法,但还需要进行比较研究,以确定哪种社区检测方法对节点异常检测最稳健。
Pandhre 等人在 [12] 中提出了一种基于图的节点和边数据的新型离群节点检测方法。
Berenhaut 等人在 [13] 中提供了一种从诱导局部比较中获得图结构信息的方法。该方法的不足之处在于,天真算法的实现需要花费立方时间。目前,该方法适用于最大规模为 20,000 的数据集。
Anand 等人在他们的研究成果[14]中概述了现有的社交网络异常检测技术,分为基于结构的方法和基于行为的方法。
在 [15] 中,作者使用了一种基于距离度量的离群点检测方法来检测在线社交网络(OSN)中的潜在谣言。
Khamparia 等人在 [16] 中提出了一种结构化多层次系统,用于对不同在线社交网络(OSN)中的异常情况进行分类。该算法还有待在许多数据集上进行测试,并应通过大型实时数据集进行验证。
Aggarwal 等人在 [17] 中研究了许多小型图中的离群点检测问题,调查了从全局角度检测离群点的各种可用模型,并对图中局部和全局结构的显著变化(通常是突变)进行了研究。尽管迄今为止已有许多文献报道了离群值检测方法,但其中大多数都需要大量的计算且速度较慢。
在本文中,我们利用 SN 的群落结构来识别离群值,通过只处理垂点和群落边界节点,显著减少了搜索空间。与其他最先进的算法相比,本文提出的技术总能更好地识别离群值。
3. Preliminaries
让我们考虑一个社交网络G(V ,E ),网络中的每个用户都表示为节点 ,用户之间的关系表示为边。在社交网络中,社群结构意味着节点被自然划分为子群 ,因此同一子群内的用户之间存在密集的联系。相反,子群之间的联系相对稀疏 [18] 。
定义 1. 设 是网络G(V , E)的一个社区结构。如果对于任意两个社区且在 , ,其中 i≠j [19],则称其为无连接社区。
例 1. 对于一个给定为G (V , E) 的网络,图 1 显示了将 G 分解成不同社区的可能方案。
定义 2. 给定网络G ( V,E ) 的互不相交群落结构,具有群落间边的节点称为群落边界节点 (CBN) [18] 。
例 2. 分解成不相交群落结构的情况如图 1 所示,集合为 CBN = {3, 4, 6}
3.1. 模块化度量
为了量化脱节群落结构的质量,我们使用了广受认可的模块化度量 Q [20],其数学表达式为
其中 表示特定社区c内所有边的总计数,表示社区c内所有节点的度数总和,即 ,其中 是节点的度数。
根据定义,0 ≤ Q ≤ 1,该值越接近统一值,表示群落结构质量越好,即群落内部的联系比群落之间的联系密集。
3.2. Classes of outliers
所需的异常类别是异常值检测技术的关键要素。异常值分为以下三类:
3.2.1. 点异常
如果一个数据实例与其他数据相比可以证明是异常的,那么它就被称为点异常[21]。大多数异常检测研究都以这种异常为中心,因为从概念上讲,它是最简单的异常。例如,在图 2 中,数据点 o1、o2 和图 1 中区域 O3 中的数据点都位于被认为具有正常数据点(N1 和 N2)的区域边界之外,因此属于点异常。现实生活中的一个例子是入侵检测。让数据集代表来自单个系统的广播。为简单起见,假设数据只包含一个属性:广播频率。假设与给定时间内广播频率的典型范围相比,任何软件包的播出时间都很短。在这种情况下,这可能会被视为全局异常值,我们可以推断相关系统可能已被入侵。
3.2.2. Contextual anomalies
上下文异常或条件异常是指数据实例在特定上下文中并不常见(但在其他地方并不常见)。数据集的结构意味着上下文的概念,而上下文必须作为问题表述的一部分加以说明。每个数据实例都使用两组上下文属性和行为属性来定义。上下文属性决定了实例的上下文或邻域(如空间数据集的经度和纬度)。行为属性决定了每个数据实例的非上下文特征(例如,对于描述全球平均降雨量的空间数据集,任何地区的降雨量)[21]。以信用卡欺诈检测为例。在信用卡领域,购买时间是一个上下文属性。假设一个人每周的购物支出平均为 1000 卢比,只有圣诞节那一周会飙升至 10,000 卢比。在八月的一个星期内新购买 10,000 卢比将被视为背景异常,因为它偏离了该人在当时背景下的惯常行为(尽管在圣诞节周内的相同消费金额将被视为正常)。
3.2.3. Collective anomalies
如果相关数据实例的集合对整个数据集而言是偏心的,则称为集体异常。图 3 展示了人体心电图输出的一个示例 [22]。由于同一低值持续时间过长,图中突出显示的区域表示异常(对应于心房早搏),尽管低值一般不被视为异常。
3.3. Problem definition
对于已知社区结构的给定社交网络G(V , E),目标是识别离群节点集∈ V。确定的离群节点集属于一个以上的社群,或其邻居只属于一个社群,或不属于任何社群。
3.4. Outliers score
在这项工作中,使用的离群值评分是基于一个节点的指标,称为永久性 [11],它提供了一个节点在多大程度上属于其社区的定量指标,数学定义为
其中 v表示一个节点,每个 ,1 ≤i ≤ k,表示属于第 i 个外部组的邻居数,如果节点没有外部邻居,我们假设e = 1,表示节点的度,表示节点的外部邻居,表示节点的内部邻居。
一般情况下,0 ≤ ≤ 1,值越小,表示节点倾向于属于多个社区,即在其社区内联系松散。而 = 1 则表示节点与其社区的联系紧密。
让我们考虑一个简单的社交网络,该网络由 14 个节点和 26 个连接组成,已知离群结构C = {c1, c2, c3},如图 4 所示。在图 4 中,节点 5 的离群值计算公式为
其中,D5 = 7、IN5 = 3、EN5 = 4 和 ENG 5 = {2,2},即 C2 和 C3 中的两个外部邻居。同样,我们计算其他边界节点的值如下。
4. Methodology
4.1. Proposed approach
迄今为止,已有多种基于社区的技术被提出来检测社交网络中的异常值,但这些技术的计算密集度高、速度慢。在 [10] 中,作者提出了从全局角度发现异常节点的方法,即把与许多其他社区有社区成员链接的节点视为异常节点。利用网络的底层拓扑结构,为网络中的每个节点计算异常得分,异常得分越高,表明节点偏离预期位置或分布的程度越高。
现在,根据我们的工作中对节点离群值的猜想,如果一个节点与其社区成员的联系很弱,并且在其他社区有邻居,那么它很有可能是一个离群值。由于节点有可能在不同的社区中有邻居,因此只需查看位于社区边界的节点就能发现离群值,从而降低了计算成本。
在提议的算法中,我们考虑了两类节点来检测异常值。属于单一社区的节点在其社区内的关联性很弱(如挂节点)。节点与自己的社区联系松散,但与许多其他社区有联系。在此基础上,为每个 CBN 计算基于节点的度量--永久性[11]。永久度从数量上说明了这些边界节点在社区中的成员程度,也就是说,它确定了边界节点对其社区的归属程度[23]。然后,我们使用公式 (2) 计算每个节点的永久性值,如果任何节点S≤ ,则该节点为离群值,其中阈值为。对于吊坠节点,很明显它们在其社区内的关联性很弱。因此,我们不对它们进行计算。我们可以通过节点的度数轻松识别它们。算法 1 简要介绍了这一过程。为了更好地利用内存,我们使用了压缩解析行(Compressed-Sparse-Row,CSR)[24] 表示法。
4.2. Complexity analysis
由于网络是天然稀疏的,因此建议的技术需要 O(|V| + |E|) 的空间复杂度,一般来说,|E| ∼ (O|V|)。在计算方面,建议的技术在O (| V|) 时间内识别出挂接节点,计算也需要 (||. ),其中表示节点可能具有的最高度数。
在建议的算法中,|CBNs| ≪ |V | |,而对于大多数真实世界的网络,|E| ∼ O(| V |),建议的算法具有线性时间复杂度。
4.3. Implementation
我们的算法是用 C 语言在配备 8 GB 内存和 Linux 操作系统的 64 位机器上实现的。我们使用了 Louvain [25] 和 GN [26] 算法进行社区检测。此外,我们还通过实验将阈值设为 0.25。在程序中,我们使用 CSR(压缩稀疏行)表示法[27]来表示一个社交网络(见图 5)。
其中一个数组,即 eptr,用于保存网络中的每一条边,而另一个数组 vptr 则用于获取节点的第一个邻居。以节点 n 为例,如果 n 不是最后一个节点,则 n 的邻居数计算公式为 vptr[n+1]-vptr[n]。否则,我们的计算公式为(2*图中的边数-vptr[n]),耗时为 O(1)。对于相关的社交网络,我们考虑使用 1 到 n 的 flag 数组,其中每个索引代表一个节点及其相应的 flag 值。flag 值分别为 0、1 和 2。flag 值为 1 代表节点度为 1 或只有一个邻居的节点。现在,我们使用公式 (2) 计算 flag 值为 2 的节点的永久性值,该公式定量描述了节点在多个社区中的成员资格程度。如果 flag 值小于或等于阈值,则该节点将与那些 flag 值为 1 的节点一起被归类为离群节点。
相关文章:
论文阅读 - Outlier detection in social networks leveraging community structure
目录 摘要 1. Introduction 2. Related works 3. Preliminaries 3.1. 模块化度量 3.2. Classes of outliers 3.2.1. 点异常 3.2.2. Contextual anomalies 3.2.3. Collective anomalies 3.3. Problem definition 3.4. Outliers score 4. Methodology 4.1. Proposed appr…...
【操作系统】进程控制
进程控制:创建新进程,撤销已有进程,实现进程状态转换等。 原语:进程控制用的程序段。执行期间不允许中断,用"关中断"和"开中断"指令(特权指令)实…...
Linux命令200例:expr一个用于进行数值表达式求值的工具
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师࿰…...
当你的公司突然开始大量的裁员,被留下的你,真的准备好面对以后了吗?
留下来的,也是迷茫的 最近公司突然开始大量裁员,裁了一多半,作为唯一留下的APP 端开发人员,也开始陷入了焦虑,开始了思考,未来究竟何去何从,是否再去转到原生,从事原生的开发工作&a…...
预约陪诊就诊小程序源码多城市开发版
陪诊小程序多城市版开发 小程序支持多城市开通,支持创建陪诊团队以及提成奖励设置,可以定义多种服务类型,订单流程简单明了,支持陪诊师手机端订单处理,家政类目可以轻松过审。 小程序市场前景: 人口老龄化…...
upload-labs文件上传靶场实操
文章目录 1.Pass-012.Pass-023.Pass-034.Pass-045.Pass-056.Pass-067.Pass-078.Pass-089.Pass-0910.Pass-1011.Pass-1112.Pass-1213.Pass-1314.Pass-1415.Pass-1516.Pass-16 1.Pass-01 改后缀名绕过 只能上传图片,先上传一个jpg格式的图片,然后抓包改格…...
leetcode分类刷题:队列(Queue)(二、优先队列解决TopK简单问题)
1、优先队列好像一般都叫堆,以大顶堆为例,顶部第一个元素最大,底部最后一个元素最小,自顶向底是递减的(更准确的说是非递增的),对外只能访问顶部第一个元素(对应索引为0)…...
【排障记录】扩展坞USB 3.0能用而2.0不能用
一、症状表现 日常使用小米的一个扩展坞连接笔记本,平时用来插U盘,没有什么问题,但是今天插了鼠标键盘,发现根本不识别 二、排查过程 目前的连接结构 笔记本C口→type-C延长线→扩展坞A→设备 1.排查笔记本故障 将键盘鼠标插…...
01-从JDK源码级别剖析JVM类加载机制
上一篇:JVM虚拟机调优大全 1. 类加载运行全过程 当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM。 public class Math {public static final int initData 666;public static User user new User();public i…...
AI时代:探索机器学习与深度学习的融合之旅
文章目录 1. 机器学习和深度学习简介1.1 机器学习1.2 深度学习 2. 为什么融合是必要的?2.1 数据增强2.2 模型融合 3. 深入分析:案例研究3.1 传统机器学习方法3.2 深度学习方法3.3 融合方法 4. 未来展望结论 🎉欢迎来到AIGC人工智能专栏~AI时代…...
模块化开发_groupby查询think PHP5.1
要求按照分类的区别打印出不同类别的数据计数 如张三,做了6件事情 这里使用原生查询先测试 SELECT cate_id, COUNT(*) AS order_count FROM tp_article GROUP BY cate_id;成功 然后项目中实现 public function ss(){$sql "SELECT cate_id, COUNT(*) AS orde…...
elementUI时间选择器
<template>//月选择器//:clearable"false" 去掉<div class"monthCard"><el-date-picker:clearable"false"v-model"monthValue"type"month"placeholder"选择月"change"handleChangeMonth($eve…...
第1章_瑞萨MCU零基础入门系列教程之单片机程序的设计模式
本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…...
【UE】刀光粒子效果——part2 材质函数部分
效果 步骤 1. 新建一个材质函数,这里命名为“MF_TextureCommon” 2. 新建一个材质,这里命名为“Mat_GuangBan1”,添加如下节点 3. 接下来将该材质的逻辑添加到材质函数上,复制材质“Mat_GuangBan1”中的如下节点,粘贴…...
为什么项目经理的时间观念这么重?
项目经理的时间观念强是因为项目管理涉及到时间、成本和质量的平衡。 项目经理需要按时按质地交付项目,这不仅关乎项目本身的质量和进度,还关乎团队的士气和客户的满意度。 在项目管理过程中,存在大量的时间浪费现象,也可以把它…...
编码转换流
同理,创建f1和f2方法,分别测试OutputStreamWriter和InputStreamReader 也是主要分三步,即1创建流 2使用流 3关流 OutputStreamWriter f1方法 因为要操作流,所以先创建一个try-catch-finally结构,创建流对象Out…...
Pycharm创建项目时如何自动添加头部信息
1.打开PyCharm,选择File--Settings 2.依次选择Editor---Code Style-- File and Code Templates---Python Script 3..添加头部内容 可以根据需要添加相应的信息 #!/usr/bin/python3可用的预定义文件模板变量为:$ {PROJECT_NAME} - 当前项目的名称。$ {NAM…...
DAY48
#ifndef QUEUE_H #define QUEUE_H#include<iostream>using namespace std;#define MAX 10typedef int datatype;template <typename T> class queue {T data[MAX];T front;T tail;public:queue();~queue();queue(const T &other);//创建循环队列T *queue_crea…...
光栅和矢量图像处理:Graphics Mill 11.4.1 Crack
Graphics Mill 是适用于 .NET 和 ASP.NET 开发人员的最强大的成像工具集。它允许用户轻松向 .NET 应用程序添加复杂的光栅和矢量图像处理功能。 光栅图形 加载和保存 JPEG、PNG 和另外 8 种图像格式 调整大小、裁剪、自动修复、色度键和 30 多种其他图像操作 可处理任何尺寸&am…...
vue3中组件没有被调用,没进去也没报错
在父页面引用了一个组件,然后父级调用子组件方法,但是根本没进去,也不报错 父级页面挂载组件 <!-- 视频插件组件 --> <div><VideoPluginView ref"video_perview_ref"></VideoPluginView> </div> …...
Postgresql中ParamListInfoData的作用
ParamListInfoData是参数的统一抽象,例如 在pl中执行raise notice %, n;n的值会拼成select n到SQL层取值,但值在哪呢,还是在pl层。对sql层来说,n的一种可能性是参数,在这种可能性中,n的数据放在ParamListI…...
《计算机视觉中的多视图几何》笔记(1)
1 Introduction – a Tour of Multiple View Geometry 本章介绍了本书的主要思想。 1.1 Introduction – the ubiquitous projective geometry 为了了解为什么我们需要射影几何,我们从熟悉的欧几里得几何开始。 欧几里得几何在二维中认为平行线是不会相交的&…...
YOLO目标检测——火焰检测数据集+已标注xml和txt格式标签下载分享
实际项目应用:火灾预警系统、智能监控系统、工业安全管理、森林火灾监测以及城市规划和消防设计等应用场景中具有广泛的应用潜力,可以提高火灾检测的准确性和效率,保障人员和财产的安全。数据集说明:YOLO火焰目标检测数据集&#…...
tkinter四大按钮:Button,Checkbutton, Radiobutton, Menubutton
文章目录 四大按钮Button连击MenubuttonCheckbuttonRadiobutton tkinter系列: GUI初步💎布局💎绑定变量💎绑定事件💎消息框💎文件对话框控件样式扫雷小游戏💎强行表白神器 四大按钮 tkinter中…...
Sudowrite:基于人工智能的AI写作文章生成工具
【 产品介绍】 名称 Sudowrite 成立/上线时间 2023年 具体描述 Sudowrite是一个基于GPT-3的人工智能写作工具,可以帮助你快速生成高质量的文本内容, 无论是小说、博客、营销文案还是学术论文。 Sudowrite可以根据你的输入和指…...
加密狗软件有什么作用?
加密狗软件是一种用于加密和保护计算机软件和数据的安全设备。它通常是一个硬件设备,可以通过USB接口连接到计算机上。加密狗软件的作用主要体现在以下几个方面: 软件保护:加密狗软件可以对软件进行加密和授权,防止未经授权的用户…...
嵌入式Linux驱动开发(I2C专题)(二)
I2C系统的重要结构体 参考资料: Linux驱动程序: drivers/i2c/i2c-dev.cI2CTools: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ 1. I2C硬件框架 2. I2C传输协议 3. Linux软件框架 4. 重要结构体 使用一句话概括I2C传输:APP通过I2…...
SMT贴片制造:发挥的作用和价值]
SMT贴片制造作为一项重要的电子制造技术,发挥着举足轻重的作用,并提供了巨大的价值。 首先,SMT贴片制造为电子产品的制造商提供了高效、准确和可靠的生产方式。相比于传统的手工焊接,SMT贴片制造具有更高的自动化和智能化程度&am…...
蓝桥杯官网练习题(幸运数字)
问题描述 小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如 2314 是一个幸运数字, 因为它有 4 个数位, 并且 2314 。现在请你帮他计算从 1 至 100000000 之间共有多少个不同的幸运数字。 …...
pandas笔记:显示中间的省略号
比如我们有这样一个数据(Geolife中的数据) 如何把中间的省略号完整地输出呢? pd.set_option(display.max_rows, None) data...
怎么做网站和艺龙对接/58同城黄页推广
本文作者:CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每…...
在线手机网站制作/沧州网站推广优化
一个bug解决: 有时在Vue工程中写es6语法代码会报regeneratorRuntime is not defined的错误,此时可通过下面方式解决: 下载npm install --save-dev babel-polyfill在webpack.config.js中写var babelpolyfill require("babel-polyfill&qu…...
邯郸做网站推广费用/怎么联系百度人工服务
Android(3)点击事件的处理和应用 1.在学习点击事件之前呢.我们学习安卓控件中的Textview,Button,redioButton,checkBox,等相关控件是使用,在安卓中呢,TextView是许多的App开发的必备控件,无论是大的项目还是小的项目都会有TextView的出现.接下来我们就从它开始讲起,来简单介绍这…...
wordpress企业站教程/外链seo服务
网格照明题目描述思路模拟Python实现Java实现题目描述 网格照明 思路 模拟 维护四个计数和点的集合。四个计数分别为行计数、列计数、左对角线计数、右对角线计数,这样只需要知道查询点在任何计数上是否大于0,就知道它是不是被照亮了。再根据点的集合…...
wordpress 产品模块/怎么建设自己的网站
1)jsp是简servlet编写的一种技术,它将Java代码(一定是在服务器端执行,不是在客户端的浏览器那儿执行)和html语句混在同一个文件中编写,只对网页中要动态产生的内容用Java代码来编写,而对固定不变的静态内容…...
wordpress 4.0 静态化/微信营销管理软件
使用邮箱测试时,必须得开启邮箱的pop3/smtp服务,并找到邮箱正确的SMTP服务器地址以及端口。这里以QQ邮箱为例 打开QQ邮箱后,选择“设置-账户”这里写图片描述 拉动滚动条到下方这里写图片描述 开启pop3/smtp服务,并保存该授权码作…...