图数据库 之 Neo4j - 应用场景1(6)

Neo4j是一种图数据库,它专注于处理关系数据密集型的问题。由于其图结构的特性,Neo4j能够高效地存储、查询和分析连接数据。

以下是一些常见的Neo4j应用场景:

  • 社交网络分析:通过建模和分析人际关系,可以揭示社交网络中的影响力、社区结构、信息传播等重要信息。
  • 金融领域:可以用于风险评估、欺诈检测、客户关系管理等任务,通过分析关系网络来发现潜在的风险和机会。
  • 生物医学研究:可以用于分析生物学数据、蛋白质相互作用网络、基因关联分析等,帮助科学家理解生物体系的复杂关系。
  • 供应链管理:可以用于供应商关系管理、物流管理、库存管理等任务,通过建模和分析供应链网络来提高效率和可靠性。
  • 关系型数据管理:可以作为关系数据库管理、数据仓库管理、关系数据挖掘等任务的替代方案,通过图结构的优势来加速查询和分析。

总而言之,Neo4j是一种强大的图数据库,适用于各种行业和领域的关系数据密集型问题。它提供了高效的数据存储和查询机制,能够帮助用户发现隐藏在关系中的有价值的信息。

下面我们讲解一下图数据库在欺诈检测中的应用。

背景

欺诈检测是在金融、电子商务和保险等领域中非常重要的应用之一。随着技术的发展和数据的增长,传统的欺诈检测方法面临着越来越复杂的挑战。图数据库作为一种强大的工具,被广泛应用于欺诈检测领域,以帮助发现和预防欺诈行为。

原理

没有一个欺诈预防措施是完美的,使用图技术进行欺诈检测能够更好地处理复杂关系、提供高效的关系查询、实现实时欺诈检测和预测分析,从而提高欺诈检测的准确性和效率。通过图技术,可以更好地理解数据之间的联系,并从中获得有意义的结论,从而改进欺诈检测的效果。

使用图技术进行欺诈检测有以下几个优势:

  1. 处理复杂关系:欺诈行为通常涉及多个实体之间的复杂关系,如用户、交易、设备、IP地址等。传统的关系型数据库往往难以处理这种复杂的关系。而图数据库以图结构存储数据,可以轻松地表示和处理实体之间的关系,从而更好地发现欺诈行为。

  2. 高效的关系查询:图数据库提供了强大的查询语言和算法,可以进行复杂的关系分析和模式识别。通过使用图数据库的查询语言,可以轻松地查询和分析实体之间的关系,发现潜在的欺诈模式和规律。这种高效的关系查询能够提高欺诈检测的准确性和效率。

  3. 实时欺诈检测:图数据库可以与实时数据流结合,进行实时的欺诈检测和预警。通过将图数据库与实时数据流进行集成,可以及时地检测到潜在的欺诈行为,并采取相应的措施。这种实时欺诈检测能够帮助机构及时发现和应对欺诈行为,减少损失。

  4. 模式识别和预测分析:通过对图数据库中的节点和边进行模式识别,可以发现潜在的欺诈模式和规律。图数据库提供了丰富的算法和工具,可以进行复杂的模式识别和预测分析。这种模式识别和预测分析能够帮助机构更好地预测和预防欺诈行为。

图数据库在欺诈检测中的原理是基于图结构数据的分析和查询。通过将用户、交易、设备、IP地址等实体表示为图中的节点,将它们之间的关系表示为边,可以构建一个包含大量实体和关系的图数据库。然后,通过使用图数据库提供的查询语言和算法,可以进行复杂的关系分析和模式识别,以发现潜在的欺诈行为。

操作步骤

图数据库在欺诈检测中的使用可以包括以下几个步骤:

  1. 数据导入:将用户、交易、设备等数据导入图数据库中,构建图结构数据模型。
  2. 关系分析:使用图数据库的查询语言和算法,进行关系分析,找出异常的关系模式和行为。
  3. 模式识别:通过对图数据库中的节点和边进行模式识别,发现潜在的欺诈模式和规律。
  4. 实时检测:将图数据库与实时数据流结合,进行实时的欺诈检测和预警。
  5. 反欺诈措施:根据欺诈检测的结果,采取相应的反欺诈措施,如阻止交易、冻结账户等。
案例分析

假设有一批银行的用户交易数据,包括用户、电话、电子邮件和交易等实体,需要发现具有异常行为模式的用户、异常交易模式以及欺诈团伙等潜在的欺诈行为。

用户、电话、电子邮件和交易实体的属性如下:

  1. User(用户):

    • id:用户唯一标识符
    • name:用户姓名
    • age:用户年龄
    • address:用户地址
  2. Phone(电话):

    • id:电话唯一标识符
    • number:电话号码
    • type:电话类型(如家庭电话、工作电话)
  3. Email(电子邮件):

    • id:电子邮件唯一标识符
    • address:电子邮件地址
    • type:电子邮件类型(如个人邮箱、工作邮箱)
  4. Transaction(交易):

    • id:交易唯一标识符
    • amount:交易金额
    • timestamp:交易时间戳
    • type:交易类型(如转账、提现)

创建用户节点

CREATE (:User {id: 1, name: '张三', age: 30, address: '1 Main St'});
CREATE (:User {id: 2, name: '李四', age: 35, address: '2 Main St'});
CREATE (:User {id: 3, name: '王五', age: 40, address: '3 Main St'});
CREATE (:User {id: 4, name: '赵六', age: 50, address: '4 Main St'});
CREATE (:User {id: 5, name: '孙七', age: 20, address: '5 Main St'});
CREATE (:User {id: 6, name: '周八', age: 80, address: '6 Main St'});
CREATE (:User {id: 7, name: '吴九', age: 70, address: '7 Main St'});
CREATE (:User {id: 8, name: '郑十', age: 35, address: '8 Main St'});
CREATE (:User {id: 9, name: '熊大', age: 50, address: 'Forest St'});
CREATE (:User {id: 10, name: '熊二', age: 40, address: 'Forest St'});

创建电话节点

CREATE (:Phone {id: 1, number: '111', type: 'Home'});
CREATE (:Phone {id: 2, number: '222', type: 'Home'});
CREATE (:Phone {id: 3, number: '333', type: 'Home'});
CREATE (:Phone {id: 4, number: '444', type: 'Home'});
CREATE (:Phone {id: 5, number: '555', type: 'Work'});
CREATE (:Phone {id: 6, number: '444', type: 'Work'});
CREATE (:Phone {id: 7, number: '444', type: 'Work'});
CREATE (:Phone {id: 8, number: '333', type: 'Home'});
CREATE (:Phone {id: 9, number: '666', type: 'Home'});
CREATE (:Phone {id: 10, number: '666', type: 'Home'});
CREATE (:Phone {id: 11, number: '444', type: 'Work'});
CREATE (:Phone {id: 12, number: '333', type: 'Home'});
CREATE (:Phone {id: 13, number: '666', type: 'Home'});
CREATE (:Phone {id: 14, number: '777', type: 'Home'});
CREATE (:Phone {id: 15, number: '888', type: 'Home'});
CREATE (:Phone {id: 16, number: '999', type: 'Home'});
CREATE (:Phone {id: 17, number: '123', type: 'Home'});
CREATE (:Phone {id: 18, number: '234', type: 'Home'});
CREATE (:Phone {id: 19, number: '345', type: 'Home'});
CREATE (:Phone {id: 20, number: '567', type: 'Home'});

创建电子邮件节点

CREATE (:Email {id: 1, address: 'zhangsan@example.com', type: 'Personal'});
CREATE (:Email {id: 2, address: 'lisi@example.com', type: 'Personal'});
CREATE (:Email {id: 3, address: 'wangwu@example.com', type: 'Personal'});
CREATE (:Email {id: 4, address: 'zhaoliu@example.com', type: 'Personal'});
CREATE (:Email {id: 5, address: 'sunqi@example.com', type: 'Personal'});
CREATE (:Email {id: 6, address: 'zhouba@example.com', type: 'Personal'});
CREATE (:Email {id: 7, address: 'wujiu@example.com', type: 'Work'});
CREATE (:Email {id: 8, address: 'zhengshi@example.com', type: 'Work'});
CREATE (:Email {id: 9, address: 'xiongda@example.com', type: 'Personal'});
CREATE (:Email {id: 10, address: 'xionger@example.com', type: 'Personal'});
CREATE (:Email {id: 11, address: 'zhangsan2@example.com', type: 'Personal'});
CREATE (:Email {id: 12, address: 'zhangsan3@example.com', type: 'Work'});
CREATE (:Email {id: 13, address: 'zhangsan4@example.com', type: 'Work'});
CREATE (:Email {id: 14, address: 'wangwu2@example.com', type: 'Personal'});
CREATE (:Email {id: 15, address: 'sunqi2@example.com', type: 'Personal'});

创建交易节点

CREATE (:Transaction {id: 1, amount: 1000, timestamp: timestamp(), type: 'Transfer'});
CREATE (:Transaction {id: 2, amount: 5000, timestamp: timestamp(), type: 'Transfer'});
CREATE (:Transaction {id: 3, amount: 3000, timestamp: timestamp(), type: 'Transfer'});
CREATE (:Transaction {id: 4, amount: 5000, timestamp: timestamp(), type: 'Withdrawal'});
CREATE (:Transaction {id: 5, amount: 6000, timestamp: timestamp(), type: 'Withdrawal'});
CREATE (:Transaction {id: 6, amount: 5000, timestamp: timestamp(), type: 'Withdrawal'});
CREATE (:Transaction {id: 7, amount: 5000, timestamp: timestamp(), type: 'Transfer'});
CREATE (:Transaction {id: 8, amount: 5000, timestamp: timestamp(), type: 'Transfer'});
CREATE (:Transaction {id: 9, amount: 5000, timestamp: timestamp(), type: 'Transfer'});
CREATE (:Transaction {id: 10, amount: 5000, timestamp: timestamp(), type: 'Withdrawal'});
CREATE (:Transaction {id: 11, amount: 5000, timestamp: timestamp(), type: 'Withdrawal'});
CREATE (:Transaction {id: 12, amount: 5000, timestamp: timestamp(), type: 'Withdrawal'});
CREATE (:Transaction {id: 13, amount: 1000, timestamp: timestamp(), type: 'Withdrawal'});
CREATE (:Transaction {id: 14, amount: 5000, timestamp: timestamp(), type: 'Withdrawal'});
CREATE (:Transaction {id: 15, amount: 2000, timestamp: timestamp(), type: 'Transfer'});
CREATE (:Transaction {id: 16, amount: 2000, timestamp: timestamp(), type: 'Transfer'});
CREATE (:Transaction {id: 17, amount: 3000, timestamp: timestamp(), type: 'Transfer'});
CREATE (:Transaction {id: 18, amount: 100, timestamp: timestamp(), type: 'Withdrawal'});
CREATE (:Transaction {id: 19, amount: 500, timestamp: timestamp(), type: 'Withdrawal'});
CREATE (:Transaction {id: 20, amount: 200, timestamp: timestamp(), type: 'Transfer'});

创建用户和绑定电话、绑定电子邮箱的关系

MATCH (u:User {id: 1}), (p:Phone {id: 1}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 2}), (p:Phone {id: 2}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 3}), (p:Phone {id: 3}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 4}), (p:Phone {id: 4}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 5}), (p:Phone {id: 5}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 6}), (p:Phone {id: 6}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 7}), (p:Phone {id: 7}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 8}), (p:Phone {id: 8}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 9}), (p:Phone {id: 9}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 10}), (p:Phone {id: 10}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 1}), (p:Phone {id: 11}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 1}), (p:Phone {id: 12}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 2}), (p:Phone {id: 13}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 2}), (p:Phone {id: 14}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 2}), (p:Phone {id: 15}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 2}), (p:Phone {id: 16}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 3}), (p:Phone {id: 17}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 3}), (p:Phone {id: 18}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 5}), (p:Phone {id: 19}) CREATE (u)-[:HAS_PHONE]->(p);
MATCH (u:User {id: 6}), (p:Phone {id: 20}) CREATE (u)-[:HAS_PHONE]->(p);MATCH (u:User {id: 1}), (e:Email {id: 1}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 2}), (e:Email {id: 2}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 3}), (e:Email {id: 3}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 4}), (e:Email {id: 4}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 5}), (e:Email {id: 5}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 6}), (e:Email {id: 6}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 7}), (e:Email {id: 7}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 8}), (e:Email {id: 8}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 9}), (e:Email {id: 9}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 10}), (e:Email {id: 10}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 1}), (e:Email {id: 11}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 1}), (e:Email {id: 12}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 1}), (e:Email {id: 13}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 3}), (e:Email {id: 14}) CREATE (u)-[:HAS_EMAIL]->(e);
MATCH (u:User {id: 5}), (e:Email {id: 15}) CREATE (u)-[:HAS_EMAIL]->(e);

创建用户和交易的关系

MATCH (u:User {id: 1}), (t:Transaction {id: 1}), (r:User {id: 2}) CREATE (u)-[:TRANSFER {recipient: r.id}]->(t);
MATCH (u:User {id: 1}), (t:Transaction {id: 2}), (r:User {id: 2}) CREATE (u)-[:TRANSFER {recipient: r.id}]->(t);
MATCH (u:User {id: 2}), (t:Transaction {id: 3}), (r:User {id: 3}) CREATE (u)-[:TRANSFER {recipient: r.id}]->(t);
MATCH (u:User {id: 3}), (t:Transaction {id: 4}) CREATE (u)-[:Withdrawal]->(t);
MATCH (u:User {id: 5}), (t:Transaction {id: 5}) CREATE (u)-[:Withdrawal]->(t);
MATCH (u:User {id: 6}), (t:Transaction {id: 6}) CREATE (u)-[:Withdrawal]->(t);
MATCH (u:User {id: 4}), (t:Transaction {id: 7}), (r:User {id: 7}) CREATE (u)-[:TRANSFER {recipient: r.id}]->(t);
MATCH (u:User {id: 5}), (t:Transaction {id: 8}), (r:User {id: 7}) CREATE (u)-[:TRANSFER {recipient: r.id}]->(t);
MATCH (u:User {id: 6}), (t:Transaction {id: 9}), (r:User {id: 7}) CREATE (u)-[:TRANSFER {recipient: r.id}]->(t);
MATCH (u:User {id: 3}), (t:Transaction {id: 10}) CREATE (u)-[:Withdrawal]->(t);
MATCH (u:User {id: 5}), (t:Transaction {id: 11}) CREATE (u)-[:Withdrawal]->(t);
MATCH (u:User {id: 6}), (t:Transaction {id: 12}) CREATE (u)-[:Withdrawal]->(t);
MATCH (u:User {id: 5}), (t:Transaction {id: 13}) CREATE (u)-[:Withdrawal]->(t);
MATCH (u:User {id: 6}), (t:Transaction {id: 14}) CREATE (u)-[:Withdrawal]->(t);
MATCH (u:User {id: 7}), (t:Transaction {id: 15}), (r:User {id: 7}) CREATE (u)-[:TRANSFER {recipient: r.id}]->(t);
MATCH (u:User {id: 8}), (t:Transaction {id: 16}), (r:User {id: 7}) CREATE (u)-[:TRANSFER {recipient: r.id}]->(t);
MATCH (u:User {id: 8}), (t:Transaction {id: 17}), (r:User {id: 7}) CREATE (u)-[:TRANSFER {recipient: r.id}]->(t);
MATCH (u:User {id: 7}), (t:Transaction {id: 18}) CREATE (u)-[:Withdrawal]->(t);
MATCH (u:User {id: 7}), (t:Transaction {id: 19}) CREATE (u)-[:Withdrawal]->(t);
MATCH (u:User {id: 9}), (t:Transaction {id: 20}), (r:User {id: 10}) CREATE (u)-[:TRANSFER {recipient: r.id}]->(t);
用户关系分析

通过分析用户之间的关系,可以发现潜在的欺诈行为。例如,可以通过分析用户更换手机号或邮箱的频率来发现异常行为模式。

查询频繁更换手机号(达到3次)的用户

// 查询频繁更换手机号的用户
MATCH (u:User)-[r:HAS_PHONE]->(p:Phone)
WITH u, COUNT(DISTINCT p) AS phoneCount
WHERE phoneCount >= 3
RETURN u,phoneCount
查询频繁更换邮箱(达到3次)的用户
// 查询频繁更换邮箱的用户
MATCH (u:User)-[:HAS_EMAIL]->(e:Email)
WITH u, COUNT(DISTINCT e) AS emailCount
WHERE emailCount >= 3
RETURN u,emailCount
交易模式分析

通过分析短时间内的大额转账或使用不同银行卡进行大额提现来发现异常交易模式。

查询累计转账超过 4000 的用户

MATCH (u:User)-[r:TRANSFER]->(t:Transaction)
WITH u, sum(t.amount) AS totalAmount
WHERE totalAmount > 4000
RETURN u,totalAmount

查询累计提现超过 10000 的用户

MATCH (u:User)-[:Withdrawal]->(t:Transaction)
WITH u, sum(t.amount) AS totalWithdrawalAmount
WHERE totalWithdrawalAmount > 10000
RETURN u,totalWithdrawalAmount

查询转账账号超过3个的用户

MATCH (u:User)-[r:TRANSFER]->(t:Transaction)
WITH u, count(distinct r.recipient) AS uniqueRecipients
where uniqueRecipients >= 3
RETURN u,uniqueRecipients

未完待续 ...

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

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

相关文章

PTA | Wifi密码

下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答…

【详解】图的概念和存储结构(邻接矩阵,邻接表)

目录 图的基本概念: 图的存储结构 邻接矩阵(GraphByMatrix): 基本参数: 初始化: 获取顶点元素在其数组中的下标 : 添加边和权重: 获取顶点的度: 打印图&#xf…

Unity所有关于旋转的方法详解

前言:欧拉角和四元数的简单描述 我们在Inspector面板上看到的rotation其实是欧拉角, 我们将Inspector面板设置成Debug模式,此时看到的local Rotation才是四元数。 Unity中的欧拉旋转是按照Z-X-Y顺规执行的旋转,一组欧拉旋转过程中…

【HarmonyOS】鸿蒙Arkts开发从入门到实战【持续更新】

鸿蒙Arkts开发从入门到实战目录 1. 工具安装 ArkTs 2.1 基础语法 2.2 状态管理 2.3 渲染控制 2.4 页面路由 ArkUI的基础类组件使用 3.1 Image组件 3.2 Text组件 3.3 TextInput组件 3.4 Button组件 3.5 Slider组件 3.6 Video组件 3.7 自定义组件 3.8 气泡提示 3.9 菜单 Stage模…

RibbonBar RibbonPage切换事件

在开发的过程中,我们会用到点击切换page,来响应对应的事件,例如以下事件: 头文件中: void ribboncurrentPageIndexChanged(int index); 实现文件中: connect(ribbonBar(), SIGNAL(currentPageIndexChang…

[力扣 Hot100]Day29 删除链表的倒数第 N 个结点

题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 出处 思路 两个指针间隔n,一趟遍历解决。 代码 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* phead;ListNode* …

【数据库】Mysql索引

1、什么是索引?为什么要用索引? 1.1、索引的含义 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库中表的数据。索引的实现通常使用B树和变种的B树(MySQL常用的索引就是B树&am…

跟着pink老师前端入门教程(JavaScript)-day03

四、常量 概念:使用 const 声明的变量称为“常量”。 使用场景:当某个变量永远不会改变的时候,就可以使用 const 来声明,而不是let。 命名规范:和变量一致 常量使用: 注意:常量不允许重新…

stable diffusion webui学习总结(3):参数设置

一、2.5D偏卡通风格参数设置: 步骤1、文生图 模型:darkSushiMixMix VAE:vae-ft-mse-840000-ema-pruned 正面提示词:(masterpiece, high quality, highres,illustration),blurry background,[(white background:1.2)::5],(see-…

数据库索引面试的相关问题

查看索引的执行计划 索引失效的情况 1、索引列上做了计算,函数,类型转换等操作。索引失效是因为查询过程需要扫描整个索引并回表。代价高于直接全表扫描。 Like匹配使用了前缀匹配符“%abc” 字符串不加引号导致类型转换。 原因: 常见索…

阿里云香港轻量应用服务器网络线路cn2?

阿里云香港轻量应用服务器是什么线路?不是cn2。 阿里云香港轻量服务器是cn2吗?香港轻量服务器不是cn2。阿腾云atengyun.com正好有一台阿里云轻量应用服务器,通过mtr traceroute测试了一下,最后一跳是202.97开头的ip,1…

酒店内部服务App开发常用的代码分享!

随着移动互联网的迅猛发展,智能手机已经成为人们生活中不可或缺的一部分,酒店作为服务行业的重要代表,为了提升客户体验、提高服务效率,纷纷开始开发内部服务App。 这些App不仅可以帮助酒店实现内部管理的便捷化,还能…

二叉树(4)——链式二叉树

1 二叉树的概念 二叉树是: 空树非空:根节点,根节点的左子树、根节点的右子树组成的。 二叉树定义是递归式的,因此后序基本操作中基本都是按照该概念实现的。 2 二叉树的遍历 2.1 前序、中序以及后序遍历 学习二叉树结构&#xf…

【C++笔记】第一阶段:C++基础入门

C基础入门 1 C初识1.1 创建一个C程序1.1.1 创建项目1.1.2 创建文件1.1.3 编写代码1.1.4 运行程序 1.2 注释1.3 变量1.4 常量1.5 关键字1.6 标识符命名规则 2 数据类型2.1 整型2.2 sizeof关键字2.3 实型(浮点型)2.4 字符型2.5 转义字符2.6 字符串型2.7 布…

ts总结大全

ts类型 TS类型除了原始js类型之外&#xff0c;还增加类型&#xff0c;例如&#xff1a;枚举、接口、泛型、字面量、自定义、类型断言、any、类型声明文件 数组类型两种写法&#xff1a;类型 [] 或 Array <类型> let arr:number[][1,2,3,4] let arr:string[][a] let arr…

全网最全软件测试面试八股文

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一般软件测试的面试分为三轮&#xff1a;笔试&#xff0c;HR面试&#xff0c;技术面试。 前两轮…

【Go】四、rpc跨语言编程基础与rpc的调用基础原理

Go管理工具 早期 Go 语言不使用 go module 进行包管理&#xff0c;而是使用 go path 进行包管理&#xff0c;这种管理方式十分老旧&#xff0c;两者最显著的区别就是&#xff1a;Go Path 创建之后没有 go.mod 文件被创建出来&#xff0c;而 go module 模式会创建出一个 go.mod…

Github 2024-02-17 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-02-17统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4TypeScript项目3Rust项目2Jupyter Notebook项目1PowerShell项目1JavaScript项目1 Black&#xff…

标准IO 2月4日学习笔记

IO输入输出&#xff0c;操作对象是文件 Linux文件类型: b block 块设备文件 按块扫描设备信息的文件 存储设备 c character 字符设备文件 按字符扫描设备信息的文件 d direct…

单片机学习笔记---AD模数转换DA数模转换

目录 AD模数转换 XPT2046.c XPT2046.h main.c DA数模转换 main.c 上一篇博客讲了AD/DA转换的工作原理&#xff0c;也介绍了运算放大器的工作原理&#xff0c;这节开始代码演示&#xff01; AD模数转换 新创建一个工程&#xff1a;AD模数转换 第一个工程将用到LCD1602和…