某4G区域终端有时驻留弱信号小区分析
出现问题时都是band1 100频点下发了针对弱信号的1650频点的连接态A4测量事件配置(其阈值为-106)。而这个条件很容易满足,一旦下发就会切到band3 1650频点。
而1650频点虽然下发band1 100的测量参数,但是又一直不理终端发给网络的band1 100的测量报告。只有终端从band3 1650切到band3 1850后,在band3 1850上才可以切回到信号好的band1 100.
1850频点在电梯旁的大厅信号强,很多其他位置1650 1850频点都比较弱,所以这些地点一旦连接态切到1650频点上比较难上报1850频点的测量报告。导致某段时间一直在弱信号band3 1650频点上。
小区情况
PCI 212小区在band1 100频点上。PCi 12,13,14在band3 1650频点上。PCI 361 是1850频点
先简单总结日志现象:
12:12:38.307003 网络下发针对1650的A4测量配置(-106db即可满足),终端从band1 100(-93db),上报band3 1650的A4测量报告,切到弱信号band3 1650(-104db)。
切到1650后,基站下发的功率检测参数包含了band1的100频点。所以终端可以检测100频点的信号的。
终端一直在上报100频点pci 212的测量报告(-98到-95db),但是网络一直不下发重配置消息。所以终端只能待在band3 1650.
直到终端12:14:13.844002上报band 3 1850 pci 361小区的功率检测上报,终端才进入band3 1850频点(-102db)。当然这个频点在当前位置也比较弱。
最终 12:14:15.598006 在1850频点上上报band1 100 ,pci212 小区(-102db),才成功切回band1.
所以针对这份日志,band1某些时候对band3 1650 弱信号频点下发很容易满足的A4测量,切到1650弱信号频点。而1650小区基站不处理band1的测量报告。只有切到同样弱的1850小区。1850基站对band1的测量报告正常进行处理,才可以切回band1。
连接态测量上报事件定义
EventA1-服务小区质量高于一个绝对门限(serving>threshold)。用于关闭正在进行的频间测量,在RRC控制下去掉激活测量间隙(gap).
EventA2-服务小区质量低于一个绝对门限(serving<threshold)。用于打开频间测量,在RRC控制下激活测量间隙(gap).
EventA3-邻小区比服务小区质量高于一个门限(Neighbour>serving+Offset)。用于频内/频间的基于覆盖的切换。
EventA4-邻小区质量高于一个绝对门限。用于基于负荷的切换。可用于负载平衡,与移动到高优先级的小区重选相似。
EventA5-服务小区质量低于一个绝对门限门限1(serving<threshold1)并且邻小区质量高于一个绝对门限2(serving>threshold2)。用于频内/频间的基于覆盖的切换。可用于负载平衡,与移动到低优先级的小区重选相似。
连接态切换的流程
- 首先网络在RRCConfiguration/RRCReConfiguration消息中下发measIdToAddModList,告诉终端A1-A5的测量配置,需要测量哪些band 和频点,触发的阈值是什么。
- 终端根据网络下发的配置,发现满足阈值后,就上报对应事件的MeasurementReport消息。
- 然后网络收到终端的测量报告后,通过下发包含targetPhysCellId以及详细切换参数的RRCReConfiguration消息指示终端切换
终端不能主动切换,只能发送测量报告,等待网络通知切换。因为网络侧需要通知目标小区,目标小区获取终端在网络侧的各种上下文信息,准备好后资源,终端才可以切换成功。
12:12:38.307003 网络下发针对1650的A4测量配置,终端从band1 100,上报band3 1650的A4测量报告,切到band3 1650
之前比较稳定在band1上,是因为网络没有下发针对band3 1650的A4事件测量。12:12:37.529003 终端下发了针对band3 1650和1506的A4测量配置。而且这个配置比较容易满足。rsrp为-106db即满足条件。
所以终端在12:12.38.244250上报了band3 1650 pci 14的A4事件,当时band3 1650上的PCI 14的小区rsrp为-104db, band1 100的当前小区为-93db。虽然当前小区信号好,但是band3 1650的信号满足了比-106db大。所以上报了测量报告。
RSRP= -140+RsrpResult(dBm)
- 12:12:37.529003 [0xB0C0] ELS_DL_DCCH / ELS RRCConnectionReconfiguration
- Radio Bearer ID = 1, Physical Cell ID = 212
- Freq = 100
- PDU Number = ELS_DL_DCCH Message, Msg Length = 33
- Interpreted PDU:
- value ELS-DL-DCCH-Message ::=
- {
- message c1 : els-RRCConnectionReconfiguration :
- {
- CONTAINING
- {
- rrc-TransactionIdentifier 2,
- criticalExtensions c1 : rrcConnectionReconfiguration-r8 :
- {
- measConfig
- {
- measObjectToAddModList
- {
- {
- measObjectId 2,
- measObject measObjectEUTRA :
- {
- carrierFreq 1650,
- allowedMeasBandwidth mbw100,
- presenceAntennaPort1 FALSE,
- neighCellConfig '01'B
- }
- },//添加了测量对象为1650频点
- {
- measObjectId 3,
- measObject measObjectEUTRA :
- {
- carrierFreq 1506,
- allowedMeasBandwidth mbw50,
- presenceAntennaPort1 FALSE,
- neighCellConfig '01'B
- }
- }
- },
- reportConfigToAddModList
- {
- {
- reportConfigId 3,
- reportConfig reportConfigEUTRA :
- {
- triggerType event :
- {
- eventId eventA4 :
- {
- a4-Threshold threshold-RSRP : 34//rsrp为-106db即满足条件。这个配置要求的信号比较低,非常容易满足。
- },
- hysteresis 0,
- timeToTrigger ms320 //满足上述阈值320ms即可以触发测量报告
- },
- triggerQuantity rsrp,
- reportQuantity sameAsTriggerQuantity,
- maxReportCells 3,
- reportInterval ms1024,
- reportAmount r1,
- includeLocationInfo-r10 true
- }
- }
- },
- measIdToAddModList
- {
- {
- measId 3,//后面终端就上报了measid3 的测量报告。
- measObjectId 2,//参见上面的measObjectId 2,指定了1650频点
- reportConfigId 3//参见上面的reportConfigId 3,指定了A4事件。所以measID3 指定了针对1650频点的A4测量配置。
- },
- {
- measId 4,
- measObjectId 3,
- reportConfigId 3
- }
- },
- measGapConfig setup :
- {
- gapOffset gp1 : 2
- },
- s-Measure 90
- }
- }
- },
终端上报band3 1650,pci14的小区测量报告。
- 12:12:38.244250 [0xB0C0] UL_DCCH / MeasurementReport
- Pkt Version = 22
- RRC Release Number.Major.minor = 12.7.6
- Radio Bearer ID = 1, Physical Cell ID = 212
- Freq = 100
- criticalExtensions c1 : measurementReport-r8 :
- {
- measResults
- {
- measId 3,//参见上面measID3的配置
- measResultPCell
- {
- rsrpResult 47,//PCell即primarycell为当前小区,rsrp为47-140= -93dbm
- rsrqResult 14
- },
- measResultNeighCells measResultListEUTRA :
- {
- {
- physCellId 14,
- measResult
- {
- rsrpResult 36//pci为14的小区,rsrp为36-140=-104. 比当前小区低
- }
- }
网络收到A4测量报告,回复了RRC重配,通知终端切到band3 1650。
切到1650后,基站下发的功率检测参数包含了band1的100频点。所以终端可以检测100频点的信号的。
针对band3 1850和band1 100都下发了A5事件检测,当前小区低于-105,邻小区高于-103即可以触发测量报告。由于1650频点比较弱,这个测量报告其实很容易触发。
- 12:12:38.766112 [0xB0C0] ELS_DL_DCCH / ELS RRCConnectionReconfiguration
- Pkt Version = 22
- RRC Release Number.Major.minor = 12.7.6
- Radio Bearer ID = 1, Physical Cell ID = 14
- Freq = 1650
- SysFrameNum = 718, SubFrameNum = 1
- PDU Number = ELS_DL_DCCH Message, Msg Length = 83
- SIB Mask in SI = 0x00
- Interpreted PDU:
- value ELS-DL-DCCH-Message ::=
- {
- message c1 : els-RRCConnectionReconfiguration :
- {
- rrc-TransactionIdentifier 1,
- rRCConnectionReconfiguration
- CONTAINING
- {
- rrc-TransactionIdentifier 1,
- criticalExtensions c1 : rrcConnectionReconfiguration-r8 :
- {
- measConfig
- {
- measObjectToAddModList
- {
- {
- measObjectId 2,
- measObject measObjectEUTRA :
- {
- carrierFreq 1850,
- allowedMeasBandwidth mbw100,
- presenceAntennaPort1 FALSE,
- neighCellConfig '01'B
- }
- },
- {
- measObjectId 3,
- measObject measObjectEUTRA :
- {
- carrierFreq 450,
- allowedMeasBandwidth mbw6,
- presenceAntennaPort1 FALSE,
- neighCellConfig '01'B
- }
- },
- {
- measObjectId 4,
- measObject measObjectEUTRA :
- {
- carrierFreq 1506,
- allowedMeasBandwidth mbw50,
- presenceAntennaPort1 FALSE,
- neighCellConfig '01'B
- }
- },
- {
- measObjectId 5,
- measObject measObjectEUTRA :
- {
- carrierFreq 3740,
- allowedMeasBandwidth mbw6,
- presenceAntennaPort1 FALSE,
- neighCellConfig '01'B,
- offsetFreq dB-8
- }
- },
- {
- measObjectId 6,
- measObject measObjectEUTRA :
- {
- carrierFreq 100,
- allowedMeasBandwidth mbw100,
- presenceAntennaPort1 FALSE,
- neighCellConfig '01'B
- }
- },
- {
- measObjectId 7,
- measObject measObjectEUTRA :
- {
- carrierFreq 300,
- allowedMeasBandwidth mbw6,
- presenceAntennaPort1 FALSE,
- neighCellConfig '01'B
- }
- }
- },
- reportConfigToRemoveList
- {
- 2
- },
- reportConfigToAddModList
- {
- {
- reportConfigId 2,
- reportConfig reportConfigEUTRA :
- {
- triggerType event :
- {
- eventId eventA5 :
- {
- a5-Threshold1 threshold-RSRP : 35,//当前小区低于-105db
- a5-Threshold2 threshold-RSRP : 37//邻小区高于-103db。
- },
- hysteresis 0,
- timeToTrigger ms320
- },
- triggerQuantity rsrp,
- reportQuantity both,
- maxReportCells 3,
- reportInterval ms1024,
- reportAmount r1,
- includeLocationInfo-r10 true
- }
- },
- {
- reportConfigId 4,
- reportConfig reportConfigEUTRA :
- {
- triggerType event :
- {
- eventId eventA5 :
- {
- a5-Threshold1 threshold-RSRP : 35,
- a5-Threshold2 threshold-RSRP : 37
- },
- hysteresis 0,
- timeToTrigger ms320
- },
- triggerQuantity rsrp,
- reportQuantity both,
- maxReportCells 3,
- reportInterval ms1024,
- reportAmount r1,
- includeLocationInfo-r10 true
- }
- },
- {
- reportConfigId 5,
- reportConfig reportConfigEUTRA :
- {
- triggerType event :
- {
- eventId eventA1 :
- {
- a1-Threshold threshold-RSRP : 45
- },
- hysteresis 0,
- timeToTrigger ms320
- },
- triggerQuantity rsrp,
- reportQuantity both,
- maxReportCells 1,
- reportInterval ms1024,
- reportAmount r1,
- includeLocationInfo-r10 true
- }
- }
- },
- measIdToAddModList
- {
- {
- measId 2,
- measObjectId 2,//参见上面measObjectId 2,指定了1850频点测量对象
- reportConfigId 2// reportConfigId 2,指定了A5测量参数
- },
- {
- measId 4,
- measObjectId 3,
- reportConfigId 4
- },
- {
- measId 5,
- measObjectId 4,
- reportConfigId 4
- },
- {
- measId 6,
- measObjectId 5,
- reportConfigId 4
- },
- {
- measId 7,
- measObjectId 6,//参见上面measObjectId 6,指定了100频点测量对象
- reportConfigId 2// reportConfigId 2,指定了A5测量参数
- },
- {
- measId 8,
- measObjectId 7,
- reportConfigId 4
- },
- {
- measId 9,
- measObjectId 1,
- reportConfigId 5
- }
- },
- measGapConfig setup :
- {
- gapOffset gp1 : 1
- },
- s-Measure 90
- }
- }
- },
- criticalExtensions c1 : els-rrcConnectionReconfiguration-r1 :
- {
- }
- }
- }
终端一直在上报100频点pci 212的测量报告,但是网络一直不下发重配置消息。所以终端只能待在band3 1650
终端上报的band100的信号为-95,当前小区为-107db。但是网络就是不通知终端切换。
- 12:12:41.204261 [0xB0C0] UL_DCCH / MeasurementReport
- Pkt Version = 22
- RRC Release Number.Major.minor = 12.7.6
- Radio Bearer ID = 1, Physical Cell ID = 14
- Freq = 1650
- SysFrameNum = N/A, SubFrameNum = 0
- PDU Number = UL_DCCH Message, Msg Length = 26
- SIB Mask in SI = 0x00
- Interpreted PDU:
- value UL-DCCH-Message ::=
- {
- message c1 : measurementReport :
- {
- criticalExtensions c1 : measurementReport-r8 :
- {
- measResults
- {
- measId 7,
- measResultPCell
- {
- rsrpResult 33,//当前信号-107db
- rsrqResult 10
- },
- measResultNeighCells measResultListEUTRA :
- {
- {
- physCellId 212,
- measResult
- {
- rsrpResult 45,//band1 pci 212 小区的信号是-95db
- rsrqResult 9
- }
- }
- },
- locationInfo-r10
- {
- locationCoordinates-r10 ellipsoidPointWithAltitude-r10 : '201498D105C90035'H,
- gnss-TOD-msec-r10 '2F7784'H
- }
- }
- }
- }
- }
直到终端12:14:13.844002上报band 3 1850 pci 361小区的功率检测上报,终端才进入band3 1850频点
- 12:14:13.844002 [0xB0C0] UL_DCCH / MeasurementReport
- Pkt Version = 22
- RRC Release Number.Major.minor = 12.7.6
- Radio Bearer ID = 1, Physical Cell ID = 14
- Freq = 1650
- SysFrameNum = N/A, SubFrameNum = 0
- PDU Number = UL_DCCH Message, Msg Length = 26
- SIB Mask in SI = 0x00
- Interpreted PDU:
- value UL-DCCH-Message ::=
- {
- message c1 : measurementReport :
- {
- criticalExtensions c1 : measurementReport-r8 :
- {
- measResults
- {
- measId 2,
- measResultPCell
- {
- rsrpResult 31,
- rsrqResult 12
- },
- measResultNeighCells measResultListEUTRA :
- {
- {
- physCellId 361,
- measResult
- {
- rsrpResult 38,//-102db
- rsrqResult 26
- }
- }
- },
- locationInfo-r10
- {
- locationCoordinates-r10 ellipsoidPointWithAltitude-r10 : '201499D105C90036'H,
- gnss-TOD-msec-r10 '353D20'H
- }
- }
- }
- }
- }
最终 12:14:15.598006 在1850频点上上报band1 100 ,pci212 小区,才成功切回band1
相关文章:

某4G区域终端有时驻留弱信号小区分析
这些区域其实是长时间处于连接态的电信卡4G终端更容易出现。 出现问题时都是band1 100频点下发了针对弱信号的1650频点的连接态A4测量事件配置(其阈值为-106)。而这个条件很容易满足,一旦下发就会切到band3 1650频点。 而1650频点虽然下发ban…...

【体外诊断】ARM/X86+FPGA嵌入式计算机在免疫分析设备中的应用
体外诊断 信迈提供基于Intel平台、AMD平台、NXP平台的核心板、2.5寸主板、Mini-ITX主板、4寸主板、PICO-ITX主板,以及嵌入式准系统等计算机硬件。产品支持GAHDMI等独立双显,提供丰富串口、USB、GPIO、PCIe扩展接口等I/O接口,扩展性强…...
Linux上启动和停止jar
linux 后台运行jar 在Linux系统中,要想让jar包在后台运行,可以使用nohup命令和&符号。nohup命令可以使进程在后台不受挂起信号影响的执行,而&符号则是将任务放入后台执行。 以下是一个简单的命令示例,它将启动一个jar包…...

浏览器缓存:强缓存与协商缓存实现原理有哪些?
1、强缓存:设置缓存时间的,那么在这个时间内浏览器向服务器发送请求更新数据,但是服务器会让其从缓存中获取数据。 可参考:彻底弄懂强缓存与协商缓存 - 简书 2、协商缓存每次都会向浏览器询问,那么是怎么询问的呢&…...

持续集成04--Jenkins结合Gitee创建项目
前言 在持续集成/持续部署(CI/CD)的旅途中,Jenkins与版本控制系统的紧密集成是不可或缺的一环。本篇“持续集成03--Jenkins结合Gitee创建项目”将引导如何将Jenkins与Gitee(一个流行的Git代码托管平台)相结合ÿ…...

【Node.js基础02】fs、path模块
目录 一:fs模块-读写文件 1 加载fs模块对象 2 读制定文件内容文件 3 向文件中写入内容 二:path模块-路径处理 1 问题引入 2 __dirname内置变量 使用方法 一:fs模块-读写文件 fs模块封装了与本机文件系统交互方法和属性 1 加载fs模块…...

牛客TOP101:单链表的排序
文章目录 1. 题目描述2. 解题思路3. 代码实现 1. 题目描述 2. 解题思路 按我们以往的排序算法来看,针对链表来说都是太不合适,因为很多都会出现指针前移后移,后移还好说,前移对于链表来说就太难了,而且大部分都是某一个…...

数据可视化配色新工具,颜色盘多达2500+类
好看的配色,不仅能让图表突出主要信息,更能吸引读者,之前分享过很多配色工具,例如, 👉可视化配色工具:颜色盘多达3000+类,数万种颜色! 本次再分享一个配色工具pypalettes,颜色盘多达2500+类。 安装pypalettes pip install pypalettes pypalettes使用 第1步,挑选…...

SpringAI简单使用(本地模型+自定义知识库)
Ollama 简介 Ollama是一个开源的大型语言模型服务工具,它允许用户在本地机器上构建和运行语言模型,提供了一个简单易用的API来创建、运行和管理模型,同时还提供了丰富的预构建模型库,这些模型可以轻松地应用在多种应用场景中。O…...

为什么要从C语言开始编程
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!很多小伙伴在入门编程时。都…...

[数据集][目标检测]导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4635 标注数量(xml文件个数):4635 标注数量(txt文件个数):4635 标注…...

数据结构(稀疏数组)
简介 稀疏数组是一种数据结构,用于有效地存储和处理那些大多数元素都是零或者重复值的数组。在稀疏数组中,只有非零或非重复的元素会被存储,从而节省内存空间。 案例引入 假如想把下面这张表存入文件,我们会怎么做?…...
python 爬虫技术 第02节 基础复习
Python基础复习 Python 是一种高级、通用、解释型的编程语言,以其简洁的语法和强大的功能在数据科学、Web 开发、自动化脚本编写、机器学习等领域广泛使用。下面是一些 Python 基础概念的复习: 1. 数据类型 Python 支持多种内置数据类型,包…...

数据结构-C语言-排序(3)
代码位置:test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 1.1-排序定义: 排序就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。(注:我们这里的排序采用的都为升序) 1.2-排序分…...

【分布式事务】怎么解决分布式场景下数据一致性问题
分布式事务的由来 拿充值订单举个栗子吧,假设:原本订单模块和账户模块是放在一起的,现在需要做服务拆分,拆分成订单服务,账户余额服务。原本收到充值回调后,可以将修改订单状态和扣减余额放在一个mysql事务…...
C# 中的委托
委托的概念 在C#中,委托是一种引用类型,它表示对方法的引用,即委托就是一种用来指向一个方法的引用类型变量。委托的声明类似于方法签名,但是关键字是delegate。下面是一个委托的声明和使用的例子: // 声明一个委托 p…...

通过docker构建基于LNMP的WordPress项目
目录 1.准备nginx 2.准备mysql 3.准备php 4.构建各镜像 5.运行wordpress 1、项目环境: 1.1 (1)公司在实际的生产环境中,需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务进行相关的性能…...

2024新版IntelliJ IDEA修改包名 全网最简单最粗暴的方法
问题再现 我们在网上淘一些后端框架 又或者是开源的项目 如果要变成自己的 难免会去改包名 即把com.后面的内容改成自己自定义的 第一次我们直接用网络上的方法 shift F6 快捷键 可以修改包名 出现以下情况 进行修改 我们发现失败了 并没有像预计的一样直接把包名修…...
C#中处理Socket粘包
在C#中使用Socket进行网络通信时,粘包问题是常见的。粘包问题通常发生在TCP协议中,因为TCP是流式协议,数据可能会被分割成多个包发送,也可能多个小包会被合并成一个大包接收。 处理粘包问题的常见方法是使用消息分隔符或消息长度…...

7.19IO
思维导图 第一题:测试错误检查锁和递归锁是否会造成死锁状态 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #i…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...