当前位置: 首页 > news >正文

【C#】WinForm自定义控件及窗体

前言

WinForm(Windows Forms)是Microsoft.NET框架中的技术,用于开发Windows桌面应用程序。它提供了一套丰富的控件和组件。通过拖放控件、编写事件处理程序等方式快速构建用户界面。

通过属性窗口定制这些控件的外观和行为。
通过数据绑定,将UI控件与数据源连接,实现数据的展示和更新。
通过上面的方法可以帮助开发者高效地创建桌面窗体应用程序,尤其适合初学者和需要快速开发的项目。

本文介绍了如何创建Winform窗体,并自定义窗体样式和窗体的基本功能。

1、窗体关闭、最大化、最小化、适应。
2、无边框窗体移动、调整窗体大小。
3、菜单展开折叠。

界面预览

在这里插入图片描述

代码

自定义按钮

用户自定义按钮:        

SelectedState:用户点击后状态取反。
Radius:按钮圆角半径。
HoverColor:鼠标悬停时的背景色。

public class UCButton : Button
{#region  公共字段、属性private bool _selectedState = false;[Category("UserProperty")][Description("选中状态")]public bool SelectedState{get => _selectedState;private set{_selectedState = value;this.Invalidate();}}private int radius = 15;[Category("UserProperty")][Description("圆角半径")]public int Radius{get { return radius; }set{radius = value;this.Invalidate();}}private Color _defaultColor;private Color _hoverColor = Color.LightBlue;[Category("UserProperty")][Description("鼠标悬停时的背景色")]public Color HoverColor { get => _hoverColor; set => _hoverColor = value; }#endregionpublic UCButton(){Initialize();}private void Initialize(){this.DoubleBuffered = true;this.FlatStyle = FlatStyle.Flat;this.FlatAppearance.BorderSize = 0;this.SetStyle(ControlStyles.UserPaint| ControlStyles.AllPaintingInWmPaint| ControlStyles.OptimizedDoubleBuffer| ControlStyles.ResizeRedraw| ControlStyles.SupportsTransparentBackColor, true);_defaultColor = BackColor;this.MouseEnter += UCButton_MouseEnter;this.MouseLeave += UCButton_MouseLeave;}private void UCButton_MouseEnter(object sender, EventArgs e){this.BackColor = HoverColor; // 鼠标进入时更改背景色}private void UCButton_MouseLeave(object sender, EventArgs e){this.BackColor = _defaultColor; // 鼠标离开时恢复默认背景色}protected override void OnClick(EventArgs e){base.OnClick(e);_selectedState = !_selectedState;}protected override void OnPaint(PaintEventArgs e){base.OnPaint(e);e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;                     // 设置抗锯齿e.Graphics.CompositingQuality = CompositingQuality.HighQuality;         // 高质量合成e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;    // 高质量插值// 绘制圆角矩形using (GraphicsPath path = new GraphicsPath()){path.AddArc(0, 0, radius, radius, 180, 90);                         // 左上角path.AddArc(this.Width - radius, 0, radius, radius, 270, 90);       // 右上角path.AddArc(this.Width - radius, this.Height - radius, radius, radius, 0, 90);  // 右下角path.AddArc(0, this.Height - radius, radius, radius, 90, 90);                   // 左下角path.CloseFigure();this.Region = new Region(path); // 设置按钮的区域为圆角矩形}// 绘制按钮文本using (Brush brush = new SolidBrush(this.ForeColor)){SizeF textSize = e.Graphics.MeasureString(this.Text, this.Font);PointF textLocation = new PointF((this.Width - textSize.Width) / 2, (this.Height - textSize.Height) / 2);e.Graphics.DrawString(this.Text, this.Font, brush, textLocation);}}
}

窗体代码

1、窗体关闭、最大化、最小化、适应。
2、无边框窗体移动、调整窗体大小。
3、菜单展开折叠。

public partial class MainForm : Form
{private int ButtonWidth = 62;#region 窗体初始化、加载、关闭public MainForm(){InitializeComponent();this.CenterToParent();this.CenterToScreen();}private void MainForm_Load(object sender, System.EventArgs e){WinMoveBinding(panel_TopBorderItem);WinMoveBinding(pic_WinIcon);this.WindowState = FormWindowState.Normal;this.MinimumSize = new System.Drawing.Size(150, 150);panel_MenuItemText.Hide();ButtonWidth = btn_Expand.Width;}private void MainForm_FormClosing(object sender, FormClosingEventArgs e){}#endregion/// <summary>/// 窗体移动功能事件绑定/// </summary>private void WinMoveBinding(Control control){control.MouseDown += topBorderPanel_MouseDown;control.MouseMove += topBorderPanel_MouseMove;control.MouseUp += topBorderPanel_MouseUp;}#region 窗体拖动private Point mouseOffset;private void topBorderPanel_MouseDown(object sender, MouseEventArgs e){if (e.Button == MouseButtons.Left){mouseOffset = new Point(-e.X, -e.Y);}}private void topBorderPanel_MouseMove(object sender, MouseEventArgs e){if (e.Button == MouseButtons.Left){Point mousePos = Control.MousePosition;mousePos.Offset(mouseOffset.X, mouseOffset.Y);this.Location = mousePos;}}private void topBorderPanel_MouseUp(object sender, MouseEventArgs e){mouseOffset = Point.Empty;}#endregion#region 无边框窗体随意拖动和改变尺寸const int WM_NCHITTEST = 0x0084;const int HTLEFT = 10;const int HTRIGHT = 11;const int HTTOP = 12;const int HTTOPLEFT = 13;const int HTTOPRIGHT = 14;const int HTBOTTOM = 15;const int HTBOTTOMLEFT = 0x10;const int HTBOTTOMRIGHT = 17;protected override void WndProc(ref Message m){base.WndProc(ref m);switch (m.Msg){case WM_NCHITTEST:Point vPoint = new Point((int)m.LParam & 0xFFFF,(int)m.LParam >> 16 & 0xFFFF);vPoint = PointToClient(vPoint);if (vPoint.X <= 5)if (vPoint.Y <= 5)m.Result = (IntPtr)HTTOPLEFT;else if (vPoint.Y >= ClientSize.Height - 5)m.Result = (IntPtr)HTBOTTOMLEFT;else m.Result = (IntPtr)HTLEFT;else if (vPoint.X >= ClientSize.Width - 5)if (vPoint.Y <= 5)m.Result = (IntPtr)HTTOPRIGHT;else if (vPoint.Y >= ClientSize.Height - 5)m.Result = (IntPtr)HTBOTTOMRIGHT;else m.Result = (IntPtr)HTRIGHT;else if (vPoint.Y <= 5)m.Result = (IntPtr)HTTOP;else if (vPoint.Y >= ClientSize.Height - 5)m.Result = (IntPtr)HTBOTTOM;break;}}#endregion#region 窗体关闭、最大化、最小化private void btn_ClosingWindow_Click(object sender, System.EventArgs e){if (MessageBox.Show("是否关闭窗体!", "关闭", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK){this.Close();}}private void btn_Maximize_Click(object sender, System.EventArgs e){Button button = sender as Button;if (this.WindowState == FormWindowState.Maximized){this.WindowState = FormWindowState.Normal;button.Image = global::ModbusDemo.Properties.Resources.maximize_blue_32;}else{this.WindowState = FormWindowState.Maximized;button.Image = global::ModbusDemo.Properties.Resources.restore_blue_32;}}private void btn_Minimize_Click(object sender, System.EventArgs e){this.WindowState = FormWindowState.Minimized;}#endregion/// <summary>/// 折叠按钮/// </summary>private void btn_Expand_Click(object sender, System.EventArgs e){//展开if (!btn_Expand.SelectedState){btn_Expand.Image = global::ModbusDemo.Properties.Resources.collapse_left_blue_32;panel_MenuItemIcon.Width = ButtonWidth;panel_MenuItemText.ScrollControlIntoView(btn_Expand);panel_MenuItemText.Show();panel_LeftMenuItem.Width = 256;}//折叠else{btn_Expand.Image = global::ModbusDemo.Properties.Resources.collapse_right_blue_32;panel_MenuItemIcon.Width = ButtonWidth;panel_LeftMenuItem.Width = ButtonWidth;panel_MenuItemText.Hide();}}/// <summary>/// 首页按钮/// </summary>private void btn_Home_Click(object sender, EventArgs e){}
}

结语

既是分享,也是备份。

相关文章:

【C#】WinForm自定义控件及窗体

前言 WinForm&#xff08;Windows Forms&#xff09;是Microsoft.NET框架中的技术&#xff0c;用于开发Windows桌面应用程序。它提供了一套丰富的控件和组件。通过拖放控件、编写事件处理程序等方式快速构建用户界面。 通过属性窗口定制这些控件的外观和行为。 通过数据绑定&am…...

VideoHelper 油猴脚本,重塑你的视频观看体验

VideoHelper 油猴脚本&#xff0c;重塑你的视频观看体验 在日常上网看视频时&#xff0c;你是否也被这些问题困扰&#xff1a;视频网站开头的广告又臭又长&#xff0c;找个合适的播放倍速要在一堆选项里翻半天&#xff0c;每次手动调音量、点全屏按钮繁琐又影响沉浸感&#xf…...

从收藏夹到知识图谱:书签管理器如何重塑你的信息获取方式?

在信息爆炸的今天&#xff0c;浏览器收藏夹早已沦为 “数字垃圾堆”—— 杂乱无章的网址、重复的标签、过期的链接&#xff0c;不仅降低效率&#xff0c;更成为信息焦虑的源头。智能书签管理器通过AI分类、跨平台同步、隐私保护等黑科技&#xff0c;重塑您的数字生活方式。书签…...

SOFABoot-07-版本查看

前言 大家好&#xff0c;我是老马。 sofastack 其实出来很久了&#xff0c;第一次应该是在 2022 年左右开始关注&#xff0c;但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金服开源的 s…...

[极客大挑战 2019]Http_3.19BUUCTF练习day3(1)

BUUCTF练习day3(1)_[极客大挑战 2019]Http 打开靶场&#xff0c;查看源码(如果在做题时没有什么发现就查看源码) 打开Secret.php提示没有来自https://Sycsecret.buuoj.cn 添加Referer头为https://Sycsecret.buuoj.cn&#xff08;提示说我们没有来自那个网址&#xff0c;那我们…...

golang Error的一些坑

golang Error的一些坑 golang error的设计可能是被人吐槽最多的golang设计了。 最经典的err!nil只影响代码风格设计&#xff0c;而有一些坑会导致我们的程序发生一些与我们预期不符的问题&#xff0c;开发过程中需要注意。 ​​ errors.Is​判断error是否Wrap不符合预期 ​…...

弱网测试:全链路实战、高阶策略与自动化落地

在移动互联网时代,网络环境的不确定性成为用户体验的“隐形杀手”。弱网测试不仅是质量保障的必备环节,更是提升用户留存率和业务转化率的战略手段。 本文将从 工具链深度配置、复杂场景模拟、性能优化底层逻辑 和 自动化流水线集成 四个维度,彻底解析弱网测试的完整方法论…...

Ubuntu检查并启用 Nginx 的stream模块或重新安装支持stream模块的Nginx

stream 模块允许 Nginx 处理 TCP 和 UDP 流量&#xff0c;常用于负载均衡和端口转发等场景。本文将详细介绍如何检查 Nginx 是否支持 stream 模块&#xff0c;以及在需要时如何启用该模块。 1. 检查 Nginx 是否支持 stream 模块 首先&#xff0c;需要确认当前安装的 Nginx 是…...

mac brew 安装的php@7.4 打开redis扩展

1. 找到php7.4的pecl目录 一般在这个位置 cd /usr/local/Cellar/php7.4/7.4.33_8/pecl/20190902 ls 一下 有个 redis.so 于是 直接去php.ini编辑了 php.ini的路径 vim /usr/local/etc/php/7.4/php.ini 把938行添加进去 然后重启一下 php7.4 brew services restart ph…...

Redis 内存管理

Redis 内存管理 1. Redis 给缓存数据设置过期时间的作用 给缓存数据设置过期时间&#xff08;TTL, Time-To-Live&#xff09;有以下几个重要作用&#xff1a; (1) 自动释放内存 避免缓存数据无限增长&#xff0c;导致 Redis 内存溢出。例如&#xff0c;在 会话管理、短连接…...

学习CSS滤镜属性 `filter: invert()`

一、核心机制 数学原理 invert(1) 对每个像素的RGB通道执行 颜色反相计算&#xff1a; 新通道值 255 - 原通道值 例如 rgb(255,0,0)&#xff08;纯红&#xff09;会转换为 rgb(0,255,255)&#xff08;青色&#xff09;。 透明度处理 该滤镜会保留元素的Alpha通道&#xff08;…...

网络空间安全专业发展历程及开设院校

一、专业发展历程 1. 早期探索阶段&#xff08;1990年代末—2000年代初&#xff09; &#xff08;1&#xff09;背景&#xff1a; 1990年代互联网进入中国&#xff0c;计算机病毒、黑客攻击等问题逐渐显现&#xff0c;社会对信息安全人才的需求开始萌芽。 &#xff08;2&…...

Linux中mutex机制

在Linux中&#xff0c;mutex是一种用于多线程编程的同步机制&#xff0c;用于保护共享资源&#xff0c;防止多个线程同时访问或修改这些资源&#xff0c;从而避免竞态条件的发生。mutex 是“mutual exclusion”的缩写&#xff0c;意为“互斥”。 1. Mutex 的基本概念 互斥锁&…...

Web网页

1.结构与表现分离 HTML用于结构 css用于表现&#xff0c;增加了丰富的样式效果&#xff0c;极大满足了开发者的需求 选择器&#xff1b;用于指定css样式作用的html对象{}选择某个属性 p标签 color;本颜色 font-size:子属性 字大小 font-family&#xff1b;字体 font-…...

Redis 在windows下的下载安装与配置

参考链接:https://developer.aliyun.com/article/1395346 下载 Redis 访问 Redis 下载地址&#xff1a;https://github.com/tporadowski/redis/releases 下载 Redis 时&#xff0c;你可以选择 ZIP 包或 MSI 安装&#xff1a; ZIP包&#xff1a;需要手动解压、初始化、配置和…...

基于随机森林回归预测葡萄酒质量

基于随机森林回归预测葡萄酒质量 1.作者介绍2.随机森林算法与数据集介绍2.1定义2.2核心思想2.3主要步骤2.4数据集介绍 3.算法实现3.1数据加载与探索3.2数据可视化3.3数据预处理&#xff08;标准化、划分训练/测试集&#xff09;3.4模型训练与优化&#xff08;随机森林回归 超参…...

在大数据开发中ETL是指什么?

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在数字经济时代&#xff0c;数据已成为企业最核心的资产。然而&#xff0c;分散在业务系统、日志文件…...

Centos操作系统安装及优化

Centos操作系统安装及优化 零、环境概述 主机名 centos版本 cpu 内存 Vmware版本 ip地址 test CentOS Linux release 7.6.1810 (Core) 2C 2G 15.5.1 10.0.0.10 一、介质下载 1、7.6版本下载 CentOS7.6标准版下载链接: https://archive.kernel.org/centos-vault/7.6.1810/i…...

2025年03月10日人慧前端面试(外包滴滴)

目录 普通函数和箭头函数的区别loader 和 plugin 的区别webpack 怎么实现分包&#xff0c;为什么要分包webpack 的构建流程变量提升react 开发中遇到过什么问题什么是闭包vue 开发中遇到过什么问题vue中的 dep 和 watcher 的依赖收集是什么阶段什么是原型链react setState 是同…...

NLP高频面试题(十)——目前常见的几种大模型架构是啥样的

深入浅出&#xff1a;目前常见的几种大模型架构解析 随着Transformer模型的提出与发展&#xff0c;语言大模型迅速崛起&#xff0c;已经成为人工智能领域最为关注的热点之一。本文将为大家详细解析几种目前常见的大模型架构&#xff0c;帮助读者理解其核心差异及适用场景。 1…...

【数据结构】栈(Stack)、队列(Queue)、双端队列(Deque) —— 有码有图有真相

目录 栈和队列 1. 栈&#xff08;Stack&#xff09; 1.1 概念 1.2 栈的使用&#xff08;原始方法&#xff09; 1.3 栈的模拟实现 【小结】 2. 栈的应用场景 1、改变元素的序列 2、将递归转化为循环 3、逆波兰表达式求值 4、括号匹配 5、出栈入栈次序匹配 6、最小栈…...

windows清除电脑开机密码,可保留原本的系统和资料,不重装系统

前言 很久的一台电脑没有使用了&#xff0c;开机密码忘了&#xff0c;进不去系统 方法 1.将一个闲置u盘设置成pe盘&#xff08;注意&#xff0c;这个操作会清空原来u盘的数据&#xff0c;需要在配置前将重要数据转移走&#xff0c;数据无价&#xff0c;别因为配置这个丢了重…...

NLP高频面试题(九)——大模型常见的几种解码方案

大模型常见的几种解码方案 在自然语言生成任务中&#xff0c;如何从模型生成的概率分布中选择合适的词汇&#xff0c;是影响文本质量的关键问题。常见的解码方法包括贪心搜索&#xff08;Greedy Search&#xff09;、束搜索&#xff08;Beam Search&#xff09;、随机采样&…...

「低延迟+快速集成:Amazon IVS如何重塑实时互动视频体验?」

引言&#xff1a;实时视频的爆发与开发痛点 随着直播电商、在线教育、云游戏的兴起&#xff0c;实时视频互动成为用户体验的核心。但自建视频服务面临高成本、高延迟、运维复杂等挑战。Amazon IVS&#xff08;Interactive Video Service&#xff09;作为亚马逊云科技推出的全托…...

JVM垃圾回收笔记02-垃圾回收器

文章目录 前言1.串行(Serial 收集器/Serial Old 收集器)Serial 收集器Serial Old 收集器相关参数-XX:UseSerialGC 2.吞吐量优先(Parallel Scavenge 收集器/Parallel Old 收集器)Parallel Scavenge 收集器Parallel Old 收集器相关参数-XX:UseParallelGC ~ -XX:UseParallelOldGC-…...

Agent Team 多智能体系统解析

引言 在人工智能技术高速发展的今天&#xff0c;"多智能体协作系统"&#xff08;Agent Team&#xff09;正成为突破效率瓶颈的关键技术。与传统的单体AI不同&#xff0c;这种由多个专业化智能体组成的协同网络&#xff0c;通过分工协作和动态调整&#xff0c;展现出…...

LintCode第1712题 - 和相同的二元子数组

描述 在由若干 0 和 1 组成的数组 A 中&#xff0c;有多少个和为 S 的非空子数组 样例 1: 输入&#xff1a;A [1,0,1,0,1], S 2 输出&#xff1a;4 解释&#xff1a; 如下面黑体所示&#xff0c;有 4 个满足题目要求的子数组&#xff1a; [1,0,1] [1,0,1] [1,0,1,0] [0,1,…...

网络HTTPS协议

Https HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是 HTTP 协议的加密版本&#xff0c;它使用 SSL/TLS 协议来加密客户端和服务器之间的通信。具体来说&#xff1a; • 加密通信&#xff1a;在用户请求访问一个 HTTPS 网站时&#xff0c;客户端&#x…...

0322-数据库、前后端

前端 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Insert title here</title> <script srcjs/jquery-3.7.1.min.js></script> <script> //jquaryajax发起请求 //传参形式不同 post用data{}…...

六十天前端强化训练之第二十六天之Vue Router 动态路由参数大师级详解

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、知识讲解 1. Vue Router 核心概念 2. 动态路由参数原理 3. 参数传递方案对比 二、核心代码示例 1. 完整路由配置 2. 参数接收组件 3. 导航操作示例 三、实现效果示…...

L2TP实验

一、拓朴图 二、实验配置 1.基础配置 1.1接口IP及服务配置 [PPPoE Client]interface GigabitEthernet 0/0/0 [PPPoE Client-GigabitEthernet0/0/0]service-manage all permit [NAS]interface GigabitEthernet 0/0/0 [NAS-GigabitEthernet0/0/0]ip add 192.168.0.2 24 [NAS-Gi…...

uni-app——数据缓存API

数据缓存API 在 uni-app 开发中&#xff0c;数据缓存 API 起着重要作用&#xff0c;它能够将需要的数据保存到本地&#xff0c;同时也提供了获取本地缓存数据、移除缓存数据以及清理缓存数据的功能。在实际项目里&#xff0c;数据缓存 API 常被用于存储会员登录状态信息、购物…...

不做颠覆者,甘为连接器,在技术叠层中培育智能新物种

--- 一、技术融合的必然&#xff1a;从“非此即彼”到“兼容共生” 当大模型的热浪撞上传统IT的礁石&#xff0c;企业智能化的真相浮出水面&#xff1a; 新旧技术的“量子纠缠”&#xff1a;MySQL与向量数据库共享数据总线&#xff0c;规则引擎与大模型共处决策链路 需求进…...

尝试在软考65天前开始成为软件设计师-计算机网络

OSI/RM 七层模型 层次名功能主要协议7应用层实现具体应用功能 FTP(文件传输)、HTTP、Telnet、 POP3(邮件)SMTP(邮件) ------- DHCP、TFTP(小文件)、 SNMP、 DNS(域名) 6表示层数据格式,加密,压缩.....5会话层建立,管理&终止对话4传输层端到端连接TCP,UDP3网络层分组传输&a…...

JDBC 连接字连接 KingbaseES支持主从负载均衡参数说明。

JDBC 连接字符串是用于连接 KingbaseES&#xff08;人大金仓数据库&#xff09;的&#xff0c;支持主从负载均衡。让我们逐一解析各个参数的作用&#xff0c;并探讨如何调整到最优。 参数解析 jdbc:kingbase8://10.10.14.19:54321/xxx_onlinejdbc:kingbase8://&#xff1a;指定…...

OpenCV旋转估计(4)生成一个字符串表示的匹配图函数 matchesGraphAsString()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 matchesGraphAsString 函数是OpenCV库中的一部分&#xff0c;位于 cv::detail 命名空间下。这个函数的主要作用是生成一个字符串表示的匹配图&am…...

扣子平台知识库不能上传成功

扣子平台知识库不能上传成功 目录 扣子平台知识库不能上传成功查看模板复制头部到自己的excel中json数据转为excel或者csv&#xff08;一定使用excel&#xff0c;csv总是报错&#xff09; 查看模板复制头部到自己的excel中 json数据转为excel或者csv&#xff08;一定使用excel&…...

CIFAR10 数据集自定义处理方法

CIFAR10 数据集自定义处理方法 可以自定义训练集和测试集中不同类别的样本的数量。可用于模拟类别不平衡问题&#xff0c;存在混淆数据问题。 import torch import torchvision.datasets as dsets import torchvision.transforms as transforms from torch.utils.data import…...

当发现提示少文件,少目录时时,external.css的内容

[ERROR ]17:30:44| Loger: 处理群消息时发生错误&#xff1a;[Errno 2] No such file or directory: \\venv\\lib\\site-packages\\ncatbot\\utils\\template/external.css venv\\lib\\site-packages\\ncatbot\\utils\\template/external.css ["https://stackpath.boots…...

OpenHarmony 开源鸿蒙北向开发——linux使用make交叉编译第三方库

这几天搞鸿蒙&#xff0c;需要编译一些第三方库到鸿蒙系统使用。 头疼死了&#xff0c;搞了一个多星期总算搞定了。 开贴记坑。 一、SDK下载 1.下载 在linux下使用命令 wget https://cidownload.openharmony.cn/version/Master_Version/OpenHarmony_5.1.0.54/20250313_02…...

【计算机网络】网络简介

文章目录 1. 局域网与广域网1.1 局域网1.2 广域网 2. 路由器和交换机3. 五元组3.1 IP和端口3.2 协议3.3 协议分层 4. OSI七层网络协议5. TCP/IP五层模型5.1 TCP/IP模型介绍5.2 网络设备所在分层 6. 封装与分用6.1 数据包的称谓6.2 封装6.3 分用 1. 局域网与广域网 1.1 局域网 …...

k8s--集群内的pod调用集群外的服务

关于如何让同一个局域网内的Kubernetes服务的Pod访问同一局域网中的电脑上的服务。 可能的解决方案包括使用ClusterIP、NodePort、Headless Service、HostNetwork、ExternalIPs&#xff0c;或者直接使用Pod网络。每种方法都有不同的适用场景&#xff0c;需要逐一分析。 例如&…...

高性能边缘计算网关-高算力web组态PLC网关

高性能EG8200Pro边缘计算算力网关-超强处理能力 样机申请测试&#xff1a;免费测试超30天&#xff08;https://www.iotrouter.com/prototype/&#xff09; 产品主要特点和特色功能 设备概览与连接能力 设备型号&#xff1a;EG8200P。主要特点&#xff1a; 支持多种工业协议&am…...

计算机视觉总结

以下是针对上述问题的详细解答,并结合代码示例进行说明: 1. 改进YOLOv5人脸检测模块,复杂光照场景准确率从98.2%提升至99.5% 优化具体过程: 光照补偿:在数据预处理阶段,采用自适应光照补偿算法,对图像进行实时增强,以减少光照变化对人脸检测的影响。数据增强:在训练…...

【Golang】defer与recover的组合使用

在Go语言中&#xff0c;defer和recover是两个关键特性&#xff0c;通常结合使用以处理资源管理和异常恢复。以下是它们的核心应用场景及使用示例&#xff1a; 1. defer 的应用场景 defer用于延迟执行函数调用&#xff0c;确保在函数退出前执行特定操作。主要用途包括&#xff…...

Beyond Compare 4注册激活方法

Beyond Compare 4 注册码 --- BEGIN LICENSE KEY --- H1bJTd2SauPv5Garuaq0Ig43uqq5NJOEw94wxdZTpU-pFB9GmyPk677gJ vC1Ro6sbAvKR4pVwtxdCfuoZDb6hJ5bVQKqlfihJfSYZt-xVrVU270Ja hFbqTmYskatMTgPyjvv99CF2Te8ecYs2SPxyZAF0YwOCNOWmsyqN5y9t q2Kw2pjoiDs5gIH-uw5U49JzOB6otS7kT…...

[C++游戏开发基础]:构造函数浅析,8000+字长文

构造函数 构造函数是一种特殊的成员函数,在创建非聚合类类型对象后会自动被调用。当定义一个非聚合类类型对象时,编译器会检查是否能找到一个可以访问的构造函数,该构造函数与调用者提供的初始化值(如果有的情况下)相匹配。 如果找到一个可访问的匹配构造函数&#xff0c;将为…...

【Go】切片

知识点关键概念切片声明var slice []int初始化切片slice : []int{1,2,3}make() 创建切片make([]int, len, cap)获取长度和容量len(slice), cap(slice)追加元素slice append(slice, value)切片截取slice[start:end]&#xff08;返回子切片&#xff09;拷贝切片copy(dest, src)&…...

MySQL 设置允许远程连接完整指南:安全与效率并重

一、为什么需要远程连接MySQL&#xff1f; 在分布式系统架构中&#xff0c;应用程序与数据库往往部署在不同服务器。例如&#xff1a; Web服务器&#xff08;如NginxPHP&#xff09;需要连接独立的MySQL数据库数据分析师通过BI工具直连生产库多服务器集群间的数据同步 但直接…...

Cursor IDE 入门指南

什么是 Cursor? Cursor 是一款集成了 AI 功能的现代代码编辑器&#xff0c;基于 VSCode 开发&#xff0c;专为提高开发效率而设计。它内置强大的 AI 助手功能&#xff0c;能够理解代码、生成代码、解决问题&#xff0c;帮助开发者更快、更智能地完成编程任务。 基础功能 1.…...