基于CDMA的多用户水下无线光通信(1)——背景介绍
研究生期间做多用户水下无线光通信(Underwater Optical Wireless Communication,UOWC),写几篇博客分享一下学的内容。导师给了大方向,让我用直接序列码分多址(Direct Sequence Code Division Multiple Access,DS-CDMA)做多用户接入协议。我主要研究延时估计和多用户检测,并搭建实验平台。本文介绍研究背景和研究现状。
1、研究背景
光通信已经成为全球互联网发展的关键推动技术。光纤通信网络不仅连接各大洲,而且还构成现代通信网络的骨干,为大都市、城镇以及越来越多的家庭提供高速数据访问服务。依赖于光纤的有线光通信技术已经非常成熟,无线光通信(Optical Wireless Communication, OWC)也已逐步投入应用,近年来学术界和工业界对OWC技术的兴趣显著增加。目前,主要的OWC技术有(1)自由空间光学(Free Space Optical, FSO)通信,(2)可见光通信(Visible Light Communication, VLC),(3)图像传感器通信(Image Sensor Communication, ISC),以及(4)光无线网络,这也被称为光保真(Light Fidelity, LiFi)。其实,除了这些听起来高大上的技术,OWC早已进入了千家万户——红外遥控器。
随着人们对探索水下环境和资源的兴趣日益浓厚,OWC技术也引起了水下通信领域的广泛关注。水下通信技术主要分为有线通信和无线通信。水下无线通信又可以分成水声通信、射频通信和水下无线光通信(Underwater Optical Wireless Communication, UOWC)。有线通信适用于大型和固定的水下设备,无线通信更适用于移动平台。各种通信方式各有优缺点:
通信方式 | 优缺点 |
---|---|
有线通信 | 优点:通信速率高、信道条件稳定 缺点:移动性受限、铺设和维护成本高 |
水声通信 | 优点:传输距离远 缺点:延时高、速率低、功耗大 |
水下射频通信 | 优点:速率高 缺点:传输距离短、功耗大 |
水下无线光通信 | 优点:低延迟、低功耗 vs. 水声通信,低功耗、长距离 vs. 水下射频通信 缺点:方向性强、易受遮挡 |
相比于低信息速率的水声通信和高衰减的水下射频通信,UOWC具有低延迟、低功耗、高信息速率和较长传输距离等优点。在水中衰减较小的蓝绿波段(波长为 450 450 450 nm ∼ \sim ∼ 550 550 550 nm)的光在水下的无线通信距离能达到百米量级。此外,UOWC还具有强保密性、高抗干扰能力、低成本等优点。
虽然采用光通信实现水下通信具有很多优势,但同时也会面临许多挑战。首先,光在水中受到吸收和散射的影响,经过长距离传输后的光信号会因衰减而变得十分微弱。其次,海水中的温度和盐度分布不均匀会引发湍流,这导致光信号强度剧烈变化,不利于信号检测。此外,生物活动、海浪等还会产生气泡,气泡会对光信号造成巨大衰减或改变光束传播方向。目前,科研人员已经对点对点的UOWC进行了大量研究,对上述问题开展了深入的探讨并且给出了一些有效的应对方案。然而,除了上述UOWC常见的问题以外,在水下网络应用的多用户上行通信中还存在另外几个关键问题,它们分别是信号异步传输、多址干扰(Multiple Access Interference, MAI)和远近效应。由于各个用户的通信距离和发送信号时间不同,在实际应用中必然面临多用户信号异步传输问题。信号异步传输会破坏不同用户的信号之间的正交性,产生MAI。另外,水体的动态性导致的收发端光束失准和信号传输距离变化,以及湍流和气泡造成的光束抖动和光强闪烁,都会使得接收机收到的不同用户的光功率不同,从而产生远近效应。
可选的多址协议方面有时分多址(Time Division Multiple Access, TDMA)、频分多址(Frequency Division Multiple Access, FDMA)、码分多址(Code Division Multiple Access, CDMA)、非正交多址(Non-Orthogonal Multiple Access, NOMA)和波分多址(Wavelength Division Multiple Access, WDMA)等。TDMA是一种同步信道接入方案,它将不重叠的时隙分配给不同的用户,因此不适用于信号异步传输的场景。由于发光二极管(Light Emitting Diode, LED)的带宽有限且异步传输会破坏子载波间的正交性,FDMA或正交频分多址在UOWC中的可行性不大。对于UOWC,只有蓝绿波长表现出低衰减,限制了WDMA的可用波长的划分区间,并且使用滤光片增加了系统实现的硬件复杂度。NOMA是功率域多址技术,它根据信道条件为每个用户分配不同的功率。然而,水体的动态性导致的远近效应给NOMA的功率分配带来严峻挑战。DS-CDMA为每个用户分配独一无二的扩频码以区分通信信道,所有用户的信号可以同时同频传输。CDMA的抗干扰特性和异步特性使其成为异步UOWC场景的理想选择。
2、研究现状
目前,UOWC的研究主要集中在水下信道建模、提高点对点通信链路的通信距离、信息速率和鲁棒性方面。此外,还有一些关于多用户UOWC的研究。
在水下信道建模方面,研究人员主要研究吸收、散射、湍流等因素对UOWC的影响。科学家们先后提出了用于描述光线在水体中散射的Henyey-Greenstein相函数,描述信道脉冲响应的双伽马函数,湍流和气泡信道模型等。科学家们还提出了采用MIMO、偏振调制等方法对抗湍流引起的信道衰落。
在高速通信和长距离通信方面,科研人员的工作重心在于研究如何克服器件带宽限制和非线性,以及高阶调制和复用技术。已发表论文中主要的技术有:轨道角动量、扩频、非线性均衡、新型micro-LED等。我目前调研到的最高通信速率是 20.04 20.04 20.04 Gbps( 5 5 5 m水下通信距离),最长通信距离是 200 200 200 m( 500 500 500 Mbps)。
多用户UOWC的已有研究成果见下表:
作者 | 题目 | 时间 | 协议 | 期刊 |
---|---|---|---|---|
Simpson et al. | Smart transmitters and receivers for underwater free-space optical communication | 2012 | SDMA+CDMA | IEEE Journal on Selected Areas in Communications |
Akhoundi et al. | Cellular underwater wireless optical CDMA network: Performance analysis and implementation concepts | 2015 | CDMA | IEEE Transactions on Communications |
Jamali et al. | Performance characterization of relay-assisted wireless optical CDMA networks in turbulent underwater channel | 2016 | CDMA | IEEE Transactions on Wireless Communications |
Lian et al. | Underwater optical wireless sensor networks using resource allocation | 2019 | CDMA | Telecommunication Systems |
Jain et al. | Performance analysis of NOMA assisted underwater visible light communication system | 2020 | NOMA | IEEE Wireless Communications Letters |
Chen et al. | An experimental study of NOMA in underwater visible light communication system | 2020 | NOMA | Optics Communications |
Zhang et al. | Towards a 20 Gbps multi-user bubble turbulent NOMA UOWC system with green and blue polarization multiplexing | 2020 | NOMA | Optics Express |
Nguyen et al. | Underwater optical wireless communication-based IoUT networks: MAC performance analysis and improvement | 2020 | 时隙ALOHA | Optical Switching and Networking |
Li et al. | Routing protocol design for underwater optical wireless sensor networks: A multiagent reinforcement learning approach | 2020 | 多智能体强化学习路由协议 | IEEE Internet of Things Journal |
Bariah et al. | Non-orthogonal multiple access-based underwater VLC systems in the presence of turbulence | 2021 | NOMA | IEEE Photonics Journal |
Li et al. | Underwater quasi-omnidirectional wireless optical communication based on perovskite quantum dots | 2022 | CDMA | Optics Express |
Li et al. | Experimental demonstration of a real-time multi-user uplink UWOC system based on SIC-free NOMA | 2023 | NOMA | Optics Express |
Liang et al. | BER analysis for PAM-based UWOC-NOMA system in oceanic turbulence environment | 2023 | NOMA | Optics Communications |
Huang et al. | A novel distributed multi-slot TDMA-based MAC protocol for LED-based UOWC networks | 2023 | TDMA | Journal of Network and Computer Applications |
Liu et al. | Experimental verification of a multiuser detection technique for asynchronous UOWC systems | 2024 | CDMA | IEEE Photonics Journal |
关于多用户UOWC的研究大部分关注点在CDMA和NOMA,还有少量关于其他网络协议的研究。2012年,Simpson等人针对水下无人航行器之间的UOWC,提出了一种紧凑的智能收发机原型,其中发射机采用可独立寻址的LED实现发射光束的高度方向性,而接收机能够估计光信号的到达角度,此收发机设计实现了空分多址(Spatial Division Multiple Access, SDMA),并用CDMA弥补了SDMA无法处理来自同方向的多用户叠加信号的问题。2015年,Akhoundi等人提出并研究了一种基于光正交码(Optical Orthogonal Code, OOC)的水下无线光码分多址(Optical CDMA, OCDMA)蜂窝网络,介绍了不同类型水质条件下无线OCDMA网络的结构、原理和性能,实验验证了水下无线OCDMA系统的实时系统原型,在 2 2 2 m × \times × 2 2 2 m水缸中实现了 115.2 115.2 115.2 kbps的可靠语音和视频传输。2016年,Jamali等人研究了湍流信道下中继辅助的水下无线OCDMA网络的性能,指出采用中继可以扩大UOWC系统的通信范围并提高系统无码性能。2019年,Lian等人采用CDMA和功率分配算法设计了一种支持多用户的MIMO水下无线光传感器网络,功率分配算法考虑了湍流以及由信道估计误差或LED指向误差引起的水下信道不确定性的影响。2020年,Jain等人对NOMA辅助的UOWC系统进行了分析研究,推导了水下NOMA用户的平均BER和遍历容量的精确闭式表达式,该系统可以满足传感器节点低延迟、高可靠性和高信息速率的水下多播需求。2020年,Chen等人设计了一种采用两个不同颜色的LED的NOMA-UOWC系统,通过在不同的子载波上承载不同的信息提高传输效率,实现了 1 1 1 m/ 117.4 117.4 117.4 Mbps的UOWC。2020年,Zhang等人实验演示了一种基于绿色和蓝色LD的高速多用户UOWC系统,该系统使用偏振复用和NOMA,在超过 2 2 2 m水下和 0.5 0.5 0.5 m自由空间信道中,为 8 8 8个用户提供了 18.75 18.75 18.75 Gbps的总速率。2020年,Nguyen等人研究了物理层和媒体访问控制层的跨层分析,从理论上研究了UOWC物理层传输错误对时隙ALOHA的媒体访问控制性能的影响,提出了在时隙ALOHA运行时启用帧重传,并研究了最佳重传次数。2020年,Li等人提出了一种基于多智能体强化学习的高效水下无线光传感器网络路由协议,提高了网络对动态环境的适应能力并延长了网络寿命。2021年,Bariah等人提出了一个数学框架来评估UOWC系统在湍流存在下使用NOMA的性能,推导了路径损失和湍流的共同影响下NOMA中断概率的闭式表达式。2022年,Li等人利用钙钛矿量子点的特性设计并实现了一种用于UOWC的准全向发射机,并演示了一个基于CDMA的拥有四个用户的UOWC系统,在 10 10 10 m和 20 20 20 m水下信道中单用户的最大信息速率分别为 10 10 10 Mbps和 7.5 7.5 7.5 Mbps。2023年,Li等人提出了一种免串行干扰消除(Successive Interference Cancellation, SIC)的NOMA译码方法,实现了两用户上行UOWC实时系统,单用户速率达到 30 30 30 Mbps。该方案限制了用户之间的功率关系和用户数量,不适用于动态水下环境。2023年,Liang等人提出了一种基于星座点多边界判决的框架,用来推导基于脉冲幅度调制的NOMA系统在湍流信道中的BER的闭式表达式。2023年,Huang等人研究了UOWC网络中的分布式TDMA协议,考虑了节点的移动性,提出了一种基于TDMA的分布式媒体访问控制协议,该协议可以根据节点的时隙占用信息为其分配多个时隙和消除冲突。
上述的关于多用户UOWC的研究主要存在两点不足:
(1)一些工作将多用户信号叠加到一个光源上发送,考虑的是同步通信场景,没有考虑信号异步传输和多址干扰问题;
(2)大部分实验研究都是在静水条件下进行的,未考虑实际的水下动态信道会造成远近效应。
针对这些不足,我将射频通信中的CDMA技术移植到多用户UOWC系统中,研究抗远近效应的延时估计和多用户检测技术。上表最后一篇是我们发表的研究成果,不是啥好期刊,我们在气泡信道下进行多用户异步UOWC实验,验证了基于子空间的延时估计和解相关多用户检测算法抗远近效应的能力,实现了三用户异步上行通信,单用户最大信息速率 2 2 2 Mbps。
CDMA作为2G和3G移动通信的核心技术,已经相当成熟,这为在UOWC系统中实现多用户通信提供了坚实的理论指导。对我们有帮助的相关研究见下表:
作者 | 题目 | 时间 | 期刊 | 内容 |
---|---|---|---|---|
Strom et al. | Propagation delay estimation in asyn- chronous direct-sequence code-division multiple access systems | 1996 | IEEE Transactions on Communications | 提出了基于子空间的信道估计算法,证明了该方法在存在远近效应环境中的鲁棒性 |
Bensley et al. | Subspace-based channel estimation for code division multiple access communication systems | 1996 | IEEE Transactions on Communications | 和上面一篇类似 |
Verdu | Minimum probability of error for asynchronous Gaussian multiple-access channels | 1986 | IEEE Transactions on Information Theory | 最优多用户检测器 |
Lupas et al. | Near-far resistance of multiuser detectors in asynchronous channels | 1990 | IEEE Transactions on Communications | 解相关检测器 |
Xie et al. | A family of suboptimum detectors for coherent multiuser communications | 1990 | IEEE Journal on Selected Areas in Communications | 最小均方误差(MMSE)检测器 |
Varanasi et al. | Multistage detection in asynchronous code-division multiple-access communications | 1990 | IEEE Transactions on Communications | 并行干扰消除(PIC)检测器 |
Patel et al. | Analysis of a simple successive interference cancellation scheme in a DS/CDMA system | 1994 | IEEE Journal on Selected Areas in Communications | 串行干扰消除(SIC)检测器 |
Moshavi et al. | Multistage linear receivers for DS-CDMA systems | 1996 | International Journal of Wireless Information Networks | 多项式检测器 |
3、个人看法
写小论文和毕业论文时,写的都是支持我的研究方向的说辞,博客里说说我个人的经历和看法。
我做多用户UOWC,主要的研究方法是把射频通信中的CDMA算法移植到光通信上来。光通信传输的是基带实信号,不用考虑高频载波,其实是省了一些事的。公式上的主要区别是,射频通信的论文好用连续信号进行分析,而我把它们的复指数都去掉并改成离散信号的形式。我个人对这个研究方向的评价是:在5G时代学习了3G技术,还要想办法说成是为6G做准备😂。导师老是让我们结合水下特点,说水下通信的特点是“强衰减、大动态”,可是我没有特意针对这两点做理论研究。但我还是在已有算法的基础上做了一点优化的,比如用子空间跟踪算法代替延时估计中的特征值分解,用解线性方程组的迭代法替代解相关检测算法中的矩阵求逆,目的是降低计算复杂度并方便我用C语言实现这些算法。后面还有两篇博客,介绍基本的基于子空间的延时估计和解相关多用户检测算法:
基于CDMA的多用户水下无线光通信(2)——系统模型和基于子空间的延时估计
基于CDMA的多用户水下无线光通信(3)——解相关多用户检测
我们实验室做的还是以点对点通信为主,有的光通信技术(比如光子计数信号检测、偏振调制等)在射频通信中用不到,还有就是把射频通信的技术迁移过来(比如我干的事),总的来说技术不算先进。在实验室做UOWC,培养我们文献调研、英文阅读写作、推公式、写代码的能力还好,但是要把创新挂到嘴边,我感觉有些牵强。想找通信算法方面的工作不容易(还是有厉害的同学能找到算法类工作的),想找到好工作还是需要付出一些额外的时间和精力学习准备的。这个实验室也已经润了好几个老师了,最初招我进组的老师也在我来之前润英国了😭,大老板还在为了实验室的运行尽职尽责。
现在的水下通信还是以电缆和水声通信为主,UOWC还没看到有商用的例子。2023年10月份,导师给了我一个去三亚的机会,带着我们实验室做的UOWC实时系统去参加展览。我们的那套系统用LED发信号,雪崩光电二极管做接收机,信号处理在Zynq芯片上进行,能够录像,传视频,再在另一台电脑上播放。展览上,我们旁边就是一家做海底电缆的公司,来参观的人都要去他们那里看一看,聊一聊,来看我们的系统的人比较少。有一个做水下机器人的展商来看我们的东西,我说我们这个能无线遥控机器人,他却说用有线控制的话,机器人丢了还能顺着线缆找回来。我们一直在演示视频传输,倒是吸引不少小朋友来玩。说不定UOWC以后会大显神威,论文中的说辞将不再空洞,无线电从发明到普及不也经历了很长时间吗?
相关文章:

基于CDMA的多用户水下无线光通信(1)——背景介绍
研究生期间做多用户水下无线光通信(Underwater Optical Wireless Communication,UOWC),写几篇博客分享一下学的内容。导师给了大方向,让我用直接序列码分多址(Direct Sequence Code Division Multiple Acce…...

基于springboot websocket和okhttp实现消息中转
1、业务介绍 消息源服务的消息不能直接推给用户侧,用户与中间服务建立websocket连接,中间服务再与源服务建立websocket连接,源服务的消息推给中间服务,中间服务再将消息推送给用户。流程如下图: 此例中我们定义中间服…...

@PostConstruct 注解的方法用于资源的初始化
PostConstruct 是 Java EE 5 引入的一个注解,主要用于依赖注入完成之后,需要执行的方法上。这个注解的方法会在依赖注入完成后自动被容器(如 EJB 容器或 Spring 容器)调用,并且只会被调用一次。 PostConstruct 注解的…...

(一)SvelteKit教程:hello world
(一)SvelteKit教程:hello world sveltekit 的官方教程,在这里:Creating a project • Docs • SvelteKitCreating a project • Docs • SvelteKit 我们可以按照如下的步骤来创建一个项目: npm create s…...

华为Atlas NPU ffmpeg 编译安装
处理器:鲲鹏920 NPU:昇腾 310P3 操作系统:Kylin Linux Advanced Server V10 CANN:Ascend-cann-toolkit_8.0.RC1_linux-aarch64.run FFmpeg:AscendFFmpegPlugin(不要用AscendFFmpeg) AscendFFmpegPlugin下载地址&…...

Python 虚拟环境 requirements.txt 文件生成 ;pipenv导出pip安装文件
搜索关键词: Python 虚拟环境Pipenv requirements.txt 文件生成;Pipenv 导出 pip requirements.txt安装文件 本文基于python版本 >3.9 文章内容有效日期2023年01月开始(因为此方法从这个时间开始是完全ok的) 上述为pipenv的演示版本 使用以下命令可精准生成requirement…...

Less与Sass的区别
1. 功能和工具: Sass:提供了更多的功能和内置方法,如条件语句、循环、数学函数等。Sass 也支持更复杂的操作和逻辑构建。 Less:功能也很强大,但相比之下,Sass 在功能上更为丰富和成熟。 2、编译环境&…...

力扣-2663
题目 如果一个字符串满足以下条件,则称其为 美丽字符串 : 它由英语小写字母表的前 k 个字母组成。它不包含任何长度为 2 或更长的回文子字符串。 给你一个长度为 n 的美丽字符串 s 和一个正整数 k 。 请你找出并返回一个长度为 n 的美丽字符串&#…...

CausalMMM:基于因果结构学习的营销组合建模
1. 摘要 在线广告中,营销组合建模(Marketing Mix Modeling,MMM) 被用于预测广告商家的总商品交易量(GMV),并帮助决策者调整各种广告渠道的预算分配。传统的基于回归技术的MMM方法在复杂营销场景…...

编译 CUDA 程序的基本知识和步骤
基本工具 NVCC(NVIDIA CUDA Compiler): nvcc 是 NVIDIA 提供的 CUDA 编译器,用于将 CUDA 源代码(.cu 文件)编译成可执行文件或库。它可以处理 CUDA 和主机代码(例如 C)的混合编译。nvcc 调用底层…...

[SAP ABAP] 排序内表数据
语法格式 整表排序 SORT <itab> [ASCENDING|DESCENDING]. 按指定字段排序 SORT <itab> BY f1 [ASCENDING|DESCENDING] f2 [ASCENDING|DESCENDING] ... fn [ASCENDING|DESCENDING].<itab>:代表内表 不指定排序方式则默认升序排序 示例1 结果显…...

【UML用户指南】-21-对基本行为建模-活动图
目录 1、概念 2、组成结构 2.1、动作 2.2、活动节点 2.3、控制流 2.4、分支 2.5、分岔和汇合 2.6、泳道 2.7、对象流 2.8、扩展区域 3、一般用法 3.1、对工作流建模 3.2、对操作建模 一个活动图从本质上说是一个流程图,展现从活动到活动的控制流 活动图…...

【web2】jquary,bootstrap,vue
文章目录 1.jquary:选择器1.1 jquery框架引入:$("mydiv") 当成id选择器1.2 jquery版本/对象:$(js对象) -> jquery对象1.3 jquery的页面加载事件:$ 想象成 window.onload 1.4 jquery的基本选择器:$()里内容…...

独角兽品牌獭崎酱酒:高性价比的酱香之选
在酱香型白酒领域中,獭崎酱酒以其独特的品牌定位和高性价比迅速崛起,成为市场上备受关注的独角兽品牌。作为贵州茅台镇的一款新秀酱香酒,獭崎酱酒不仅传承了百年酿造工艺,还以创新的商业模式和亲民的价格赢得了广大消费者的青睐。…...

java打印菱形和空心菱形
java打印菱形 菱形分上下两个部分。其中上部分同打印金字塔;下部分循环部分i是递减 (ps:菱形层数只能为奇数) import java.util.Scanner;public class Lingxing{public static void main(String[] args) {Scanner myScanner new Scanner(S…...

Day10 —— 大数据技术之Scala
Scala编程入门 Scala的概述什么是Scala?Scala的重要特点Scala的使用场景 Scala的安装Scala基础Scala总结 Scala的概述 什么是Scala? Scala是一种将面向对象和函数式编程结合在一起的高级语言,旨在以简洁、优雅和类型安全的方式表达通用编程…...

Linux应用系统快速部署:docker快速部署linux应用程序
目录 一、背景 (一)引入docker的起因 (二)docker介绍 (三)Docker部署的优势 1、轻量级和可移植性 2、快速部署和扩展 3、一致性 4、版本控制 5、安全性 6、资源隔离 7、简化团队协作 8、多容器…...

三目运算符中间的表达式可以省略吗(a?:c)?
熟悉C语言的童靴对三目运算符都非常熟悉,a? b : c; 如果a为true,则整个运算符的值为b,否则为c;那么问题来了,三目运算符中间的表达式可以省略吗?即a? : c; 1、linux内核中出现的省略情况 本人在阅读内核代码是发现了下面的代码: preferr…...

android 彩虹进度条自定义view实现
实现一个彩虹色进度条功能,不说明具体用途大家应该能猜到。想找别人造的轮子,但是没有合适的,所以决定自己实现一个。 相关知识 android 自定义view LinearGradient 线性渐变 实现步骤 自定义view 自定义一个TmcView类继承View 重写两…...

免费一年SSL证书申请——建议收藏
免费一年SSL证书申请——建议收藏 获取免费一年期SSL证书其实挺简单的 准备你的网站: 确保你的网站已经有了域名,而且这个域名已经指向你的服务器。还要检查你的服务器支持HTTPS,也就是443端口要打开,这是HTTPS默认用的。 验证域…...

【docker1】指令,docker-compose,Dockerfile
文章目录 1.pull/image,run/ps(进程),exec/commit2.save/load:docker save 镜像id,不是容器id3.docker-compose:多容器:宿主机(eth0网卡)安装docker会生成一…...

Flutter中的异步和多进程
Flutter 是一个用于创建高性能、高保真度移动应用的框架,它使用 Dart 编程语言。 在 Flutter 中,异步和多进程是两种不同的概念,用于解决不同的问题。 异步 (Asynchronous) 异步编程是一种编程范式,允许代码在等待操作完成(如网络请求、文件 I/O)时继续执行其他任务,而不…...

学习C++第二天
1.缺省参数 缺省参数的概念: 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。 void show(int a 10) {cout << a << endl; }int main() {sho…...

解析Java中1000个常用类:AbstractSet类,你学会了吗?
推荐一个我自己写的小报童专栏导航网站: http://xbt100.top 收录了生财有术项目精选、AI海外赚钱、纯银的产品分析等专栏,陆续会收录更多的专栏,欢迎体验~复制URL可直达。 以下是正文。 在 Java 集合框架中,AbstractSet 是一个重要的抽象类,为实现自定义的集合(Set)提…...

Nginx基础概念和常用操作
文章目录 1. 安装、启动、连接2. 快速尝试部署网站3. 配置文件1. nginx.conf全局配置事件模块HTTP 模块性能优化建议 2. default.confserver 块基本设置日志设置根路径设置 4. 反向代理1. 模拟3个Web2. 链接 5. 负载均衡1. 加权轮询,Weighted Round Robin2. 最少连接…...

圈复杂度是什么?go语言调整圈复杂度举例
圈复杂度(也称为循环复杂度或McCabe复杂度)是衡量程序复杂性的一个指标,它通常与代码中的控制流结构(如条件语句、循环和函数调用)的数量相关。在Go语言中,你可以通过重构代码来降低圈复杂度,从…...

设计模式4-模版方法
设计模式 重构获得模式重构的关键技法1. 静态转动态2. 早绑定转晚绑定3. 继承转组合4. 编译时依赖转运行时依赖5. 紧耦合转松耦合 组件协助动机模式定义结构 要点总结。 例子示例解释: 重构获得模式 设计模式的目的是应对变化,提高复用 设计模式的要点…...

yii2 ActiveForm使用技巧
持续更新: 1、搜索输入框:form-inline <?php $form ActiveForm::begin([action > [index],method > get,options > [class > form-inline] (增加此行代码) ]); ?>...

【面试】基本数据类型的包装类缓存
目录 1. 说明2. Integer类分析2.1 代码块2.2 字节码2.3 分析2.4 valueOf方法 1. 说明 1.在java中,基本数据类型的包装类(Integer、Byte、Character、Short、Long、Boolean)的某些值会被缓存。2.以提高性能并减少内存使用。3.这种缓存机制是自…...