C#桌面应用制作计算器
C#桌面应用制作简易计算器,可实现数字之间的加减乘除、AC按键清屏、Del按键清除末尾数字、+/-按键取数字相反数、%按键使数字缩小100倍、=按键显示运算结果等......
页面实现效果
功能实现
布局
计算器主体使用Panel容器,然后将button控件排列放置Panel容器做为计算器按键,显示主体使用groudBox容器,然后在groudBox容器里放置一个Panel容器作为显示屏,再在Panel容器放置一个label控件用于显示输入和运算结果。
布局效果

数字按键功能
点击数字按键使其数字投射到计算器平面上,因为屏幕大小有限,所以使其数字长度大于16时,字体缩小一倍,数字长度大于30时,弹窗提示"字符长度超出范围"。
数字按键功能实现效果
数字按键功能实现代码
private void button8_Click(object sender, EventArgs e){string seven = "7";if (label1.Text.Length < 30){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = null;//如果前面有运算符,则先消除运算符再把数字投射到屏幕上}label1.Text = label1.Text + seven;//将数字投射到屏幕上if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}
运算符按键功能
如果在输入运算符前未输入数字,则弹窗提示"无运算数字";如果输入运算符前已经输入数字且symbol(运算符)为null,则清除已经输入的并且投射到屏幕上的数字并将其赋值至num1,然后将运算符赋值给symbol并投射到屏幕上;如果输入运算符前屏幕上已经显示了输入的运算符,则弹窗提示"您已输入运算符";如果输入运算符前已经输入数字且symbol(运算符)已被赋值,则清除已经输入的并且投射到屏幕上的数字并将其赋值至num2并计算num1 运算符 num2结果并将其赋值至num1,然后将运算符赋值给symbol并投射到屏幕上。
运算符按键功能实现效果

运算符按键功能实现代码
private void button4_Click(object sender, EventArgs e){string divide = "÷";if (symbol == null && label1.Text.Length<1&&num1==null){MessageBox.Show("无运算数字");}else{if (symbol == null){if(num1 == null){num1 = label1.Text;}symbol = divide;label1.Text = symbol;}else{if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷") {MessageBox.Show("您已输入运算符");}else{num2 = label1.Text;rt = double.Parse(num1) / double.Parse(num2);num1 = rt.ToString();symbol = divide;label1.Text = symbol;num2 = null;}}}}

AC按键功能
点击清除所有信息。
AC按键功能实现效果

AC按键功能实现代码
private void button1_Click(object sender, EventArgs e){label1.Text = null;num1=null;num2=null;symbol = null;}
Del按键功能
点击清除末尾字符,如果屏幕上末尾字符显示的是输入的运算符,则点击后清除运算符并把num1的值投射到屏幕上。
Del按键功能实现效果

Del按键功能实现代码
private void button2_Click(object sender, EventArgs e)
{if (label1.Text.Length == 0){label1.Text = null;}else{if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = num1;symbol = null;}else{string del = label1.Text;label1.Text = del.Substring(0, del.Length - 1);if (label1.Text.Length < 30){if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}}}
}
+/-按键功能
点击取屏幕上数字的相反数并投射到屏幕上;但是如果点击+/-按键时屏幕上没有数字或屏幕上为运算符,则按键提示"error"(按键‘.’同样效果)。
+/-按键功能实现效果

+/-按键功能实现代码
private void button3_Click(object sender, EventArgs e)
{if (label1.Text.Length == 0){MessageBox.Show("error");}else if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){MessageBox.Show("error");}else{double reserve = double.Parse(label1.Text);reserve = -reserve;label1.Text = reserve.ToString();}
}
%按键功能
点击实现屏幕上数字缩小一百倍效果并将结果投射到屏幕上,但是如果点击%按键时屏幕上没有数字或屏幕上为运算符,则按键提示"error"。
%按键功能实现效果

%按键功能实现代码
private void button20_Click(object sender, EventArgs e)
{if (label1.Text.Length == 0){MessageBox.Show("error");}else if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){MessageBox.Show("error");}else{double reserve = double.Parse(label1.Text);reserve = reserve / 100;label1.Text = reserve.ToString();}
}
等号按键功能
点击实现运算效果并将最终结果输出到屏幕上;如果在输入等号前输入数字但是未输入运算符,屏幕显示字符保持原来不变,不进行运算;如果在输入等号前未输入数字也未输入运算符,则弹窗提示"无运算数字";如果只输入一个数字和一个运算符,则弹窗提示"error"。
等号按键功能实现效果

等号按键功能实现代码
private void button17_Click(object sender, EventArgs e){if (symbol == null && label1.Text.Length < 1){MessageBox.Show("无运算数字");}else{if (symbol == null){num1 = label1.Text;}else{if (label1.Text != null){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){MessageBox.Show("error");}else{num2 = label1.Text;}}}}if (num2 != null){if (symbol == "+"){rt = double.Parse(num1) + double.Parse(num2);label1.Text = rt.ToString();num1 = rt.ToString();symbol = null;num2 = null;}else if (symbol == "-"){rt = double.Parse(num1) - double.Parse(num2);label1.Text = rt.ToString();num1 = rt.ToString();symbol = null;num2 = null;}else if (symbol == "×"){rt = double.Parse(num1) * double.Parse(num2);label1.Text = rt.ToString();num1 = rt.ToString();symbol = null;num2 = null;}else if (symbol == "÷"){rt = double.Parse(num1) / double.Parse(num2);label1.Text = rt.ToString();num1 = rt.ToString();symbol = null;num2 = null;}}}
完整代码实现
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp计算器
{public partial class Form1 : Form{string symbol, num1, num2,Num1,Num2;double rt;public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){label1.Text = null;num1=null;num2=null;symbol = null;}private void button2_Click(object sender, EventArgs e){if (label1.Text.Length == 0){label1.Text = null;}else{if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = num1;symbol = null;}else{string del = label1.Text;label1.Text = del.Substring(0, del.Length - 1);if (label1.Text.Length < 30){if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}}}}private void button3_Click(object sender, EventArgs e){if (label1.Text.Length == 0){MessageBox.Show("error");}else if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){MessageBox.Show("error");}else{double reserve = double.Parse(label1.Text);reserve = -reserve;label1.Text = reserve.ToString();}}private void button4_Click(object sender, EventArgs e){string divide = "÷";if (symbol == null && label1.Text.Length<1&&num1==null){MessageBox.Show("无运算数字");}else{if (symbol == null){if(num1 == null){num1 = label1.Text;}symbol = divide;label1.Text = symbol;}else{if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷") {MessageBox.Show("您已输入运算符");}else{num2 = label1.Text;rt = double.Parse(num1) / double.Parse(num2);num1 = rt.ToString();symbol = divide;label1.Text = symbol;num2 = null;}}}}private void button8_Click(object sender, EventArgs e){string seven = "7";if (label1.Text.Length < 30){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = null;//如果前面有运算符,则先消除运算符再把数字投射到屏幕上}label1.Text = label1.Text + seven;//将数字投射到屏幕上if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}private void button7_Click(object sender, EventArgs e){string eight = "8";if (label1.Text.Length < 30){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = null;}label1.Text = label1.Text + eight;if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}private void button6_Click(object sender, EventArgs e){string nine = "9";if (label1.Text.Length < 30){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = null;}label1.Text = label1.Text + nine;if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}private void button5_Click(object sender, EventArgs e){string multiply = "×";if (symbol == null && label1.Text.Length < 1 && num1 == null){MessageBox.Show("无运算数字");}else{if (symbol == null){if (num1 == null){num1 = label1.Text;}symbol = multiply;label1.Text = symbol;}else{if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){MessageBox.Show("您已输入运算符");}else{num2 = label1.Text;rt = double.Parse(num1) * double.Parse(num2);num1 = rt.ToString();symbol = multiply;label1.Text = symbol;num2 = null;}}}}private void button12_Click(object sender, EventArgs e){string four = "4";if (label1.Text.Length < 30){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = null;}label1.Text = label1.Text + four;if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}private void button11_Click(object sender, EventArgs e){string five = "5";if (label1.Text.Length < 30){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = null;}label1.Text = label1.Text + five;if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}private void button10_Click(object sender, EventArgs e){string six = "6";if (label1.Text.Length < 30){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = null;}label1.Text = label1.Text + six;if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}private void button9_Click(object sender, EventArgs e){string subtract = "-";if (symbol == null && label1.Text.Length < 1 && num1 == null){MessageBox.Show("无运算数字");}else{if (symbol == null){if (num1 == null){num1 = label1.Text;}symbol = subtract;label1.Text = symbol;}else{if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){MessageBox.Show("您已输入运算符");}else{num2 = label1.Text;rt = double.Parse(num1) - double.Parse(num2);num1 = rt.ToString();symbol = subtract;label1.Text = symbol;num2 = null;}}}}private void button16_Click(object sender, EventArgs e){string one = "1";if (label1.Text.Length < 30){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = null;}label1.Text = label1.Text + one;if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}private void button15_Click(object sender, EventArgs e){string two = "2";if (label1.Text.Length < 30){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = null;}label1.Text = label1.Text + two;if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}private void button14_Click(object sender, EventArgs e){string three = "3";if (label1.Text.Length < 30){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){label1.Text = null;}label1.Text = label1.Text + three;if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}private void button13_Click(object sender, EventArgs e){string add = "+";if (symbol == null && label1.Text.Length < 1 && num1 == null){MessageBox.Show("无运算数字");}else{if (symbol == null){if (num1 == null){num1 = label1.Text;}symbol = add;label1.Text = symbol;}else{if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){MessageBox.Show("您已输入运算符");}else{num2 = label1.Text;rt = double.Parse(num1)+ double.Parse(num2);num1 = rt.ToString();symbol = add;label1.Text = symbol;num2 = null;}}}}private void button20_Click(object sender, EventArgs e){if (label1.Text.Length == 0){MessageBox.Show("error");}else if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){MessageBox.Show("error");}else{double reserve = double.Parse(label1.Text);reserve = reserve / 100;label1.Text = reserve.ToString();}}private void button19_Click(object sender, EventArgs e){string zero = "0";if(label1.Text.Length < 30){label1.Text = label1.Text + zero;if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}private void button18_Click(object sender, EventArgs e){string dot = ".";int f=label1.Text.IndexOf(".");if(f == -1){if(label1.Text.Length == 0){MessageBox.Show("error");}else if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){MessageBox.Show("error");}else{if (label1.Text.Length < 30){label1.Text = label1.Text + dot;if (label1.Text.Length > 16){label1.Font = new Font(label1.Font.FontFamily, 13f, label1.Font.Style);}else{label1.Font = new Font(label1.Font.FontFamily, 26f, label1.Font.Style);}}else{MessageBox.Show("字符长度超出范围");}}}else{MessageBox.Show("error");}}private void button17_Click(object sender, EventArgs e){if (symbol == null && label1.Text.Length < 1){MessageBox.Show("无运算数字");}else{if (symbol == null){num1 = label1.Text;}else{if (label1.Text != null){if (label1.Text == "+" || label1.Text == "-" || label1.Text == "×" || label1.Text == "÷"){MessageBox.Show("error");}else{num2 = label1.Text;}}}}if (num2 != null){if (symbol == "+"){rt = double.Parse(num1) + double.Parse(num2);label1.Text = rt.ToString();num1 = rt.ToString();symbol = null;num2 = null;}else if (symbol == "-"){rt = double.Parse(num1) - double.Parse(num2);label1.Text = rt.ToString();num1 = rt.ToString();symbol = null;num2 = null;}else if (symbol == "×"){rt = double.Parse(num1) * double.Parse(num2);label1.Text = rt.ToString();num1 = rt.ToString();symbol = null;num2 = null;}else if (symbol == "÷"){rt = double.Parse(num1) / double.Parse(num2);label1.Text = rt.ToString();num1 = rt.ToString();symbol = null;num2 = null;}}}}
}
相关文章:
C#桌面应用制作计算器
C#桌面应用制作简易计算器,可实现数字之间的加减乘除、AC按键清屏、Del按键清除末尾数字、/-按键取数字相反数、%按键使数字缩小100倍、按键显示运算结果等...... 页面实现效果 功能实现 布局 计算器主体使用Panel容器,然后将button控件排列放置Pane…...
细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的方法
目录 一、DMA基础知识 1、DMA简介 (1)DMA控制器 (2)DMA流 (3)DMA请求 (4)仲裁器 (5)DMA传输属性 2、源地址和目标地址 3、DMA传输模式 4、传输数据量的大小 5、数据宽度 6、地址指针递增 7、DMA工作模式 8、DMA流的优先级别 9、FIFO或直接模式 10、单次传输或突…...
【Unity/Animator动画系统】多层动画状态机实现角色的基本移动
文章目录 前言实现顶层地面状态四方向混合树计算动画所需参数 空中状态分层动画 前言 最近打算做个Rougelike RPG 塔科夫 混搭风格的冒险游戏。暂且就当是一个有随机元素,有基地,死亡会掉落物品的近战塔科夫罢。 花了三天时间,整合了Mixa…...
每日算法一练:剑指offer——栈与队列篇(1)
1.图书整理II 读者来到图书馆排队借还书,图书管理员使用两个书车来完成整理借还书的任务。书车中的书从下往上叠加存放,图书管理员每次只能拿取书车顶部的书。排队的读者会有两种操作: push(bookID):把借阅的书籍还到图书馆。pop…...
【Java】ArrayList与LinkedList详解!!!
目录 一🌞、List 1🍅.什么是List? 2🍅.List中的常用方法 二🌞、ArrayList 1🍍.什么是ArrayList? 2🍍.ArrayList的实例化 3🍍.ArrayList的使用 4🍍.ArrayList的遍…...
怎么用VIM查看UVM源码
利用ctags工具可以建立源码的索引表,在使用VIM或其他文本编辑器时,就可以跳转查看所调用的UVM或VIP的funtcion/task/class等源码了。 首先需要确认ctags安装,一般安装VIM后都有,如果没有可以手动安装。在VIM中可以输入:help ctag…...
数据结构C语言描述3(图文结合)--双链表、循环链表、约瑟夫环问题
前言 这个专栏将会用纯C实现常用的数据结构和简单的算法;有C基础即可跟着学习,代码均可运行;准备考研的也可跟着写,个人感觉,如果时间充裕,手写一遍比看书、刷题管用很多,这也是本人采用纯C语言…...
第二十五章 TCP 客户端 服务器通信 - TCP 设备的 READ 命令
文章目录 第二十五章 TCP 客户端 服务器通信 - TCP 设备的 READ 命令TCP 设备的 READ 命令READ 修改 $ZA 和 $ZB$ZA 和 READ 命令 第二十五章 TCP 客户端 服务器通信 - TCP 设备的 READ 命令 TCP 设备的 READ 命令 从服务器或客户端发出 READ 命令以读取客户端或服务器设置的…...
【C++】哈希表的实现详解
哈希表的实现详解 一、哈希常识1.1、哈希概念1.2、哈希冲突1.3、哈希函数(直接定执 除留余数)1.4、哈希冲突解决闭散列(线性探测 二次探测)开散列 二、闭散列哈希表的模拟实现2.1、框架2.2、哈希节点状态的类2.3、哈希表的扩容2…...
高阶C语言之五:(数据)文件
目录 文件名 文件类型 文件指针 文件的打开和关闭 文件打开模式 文件操作函数(顺序) 0、“流” 1、字符输出函数fputc 2、字符输入函数fgetc 3、字符串输出函数fputs 4、 字符串输入函数fgets 5、格式化输入函数fscanf 6、格式化输出函数fpr…...
服务器上部署并启动 Go 语言框架 **GoZero** 的项目
要在服务器上部署并启动 Go 语言框架 **GoZero** 的项目,下面是一步步的操作指南: ### 1. 安装 Go 语言环境 首先,确保你的服务器上已安装 Go 语言。如果还没有安装,可以通过以下步骤进行安装: #### 1.1 安装 Go 语…...
【Java SE 】继承 与 多态 详解
🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 目录 1. 继承 1.1 继承的原因 1.2 继承的概念 1.3 继承的语法 2. 子类访问父类 2.1 子类访问父类成员变量 2.1.1 子类与父类不存在同名成员变量 2.1.2 子类…...
【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法
【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法 目录 文章目录 【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法目录摘要:研究背景:问题与挑战:如何解…...
秋招大概到此结束了
1、背景 学院本,软工,秋招只有同程,快手和网易面试,后两家kpi(因为面试就很水),秋招情况:哈啰(实习转正ing),同程测开offer。 2、走测开的原因 很…...
华为OD机试真题---字符串化繁为简
华为OD机试真题中的“字符串化繁为简”题目是一个涉及字符串处理和等效关系传递的问题。以下是对该题目的详细解析: 一、题目描述 给定一个输入字符串,字符串只可能由英文字母(a~z、A~Z)和左右小括号((、)࿰…...
概念解读|K8s/容器云/裸金属/云原生...这些都有什么区别?
随着容器技术的日渐成熟,不少企业用户都对应用系统开展了容器化改造。而在容器基础架构层面,很多运维人员都更熟悉虚拟化环境,对“容器圈”的各种概念容易混淆:容器就是 Kubernetes 吗?容器云又是什么?容器…...
初识Arkts
创建对象: 类: 类声明引入一个新类型,并定义其字段、方法和构造函数。 定义类后,可以使用关键字new创建实例 可以使用对象字面量创建实例 在以下示例中,定义了Person类,该类具有字段name和surname、构造函…...
基本的SELECT语句
1.SQL概述 SQL(Structured Query Language)是一种用于管理和操作关系数据库的编程语言。它是一种标准化的语言,用于执行各种数据库操作,包括创建、查询、插入、更新和删除数据等。 SQL语言具有简单、易学、高效的特点,…...
51c自动驾驶~合集30
我自己的原文哦~ https://blog.51cto.com/whaosoft/12086789 #跨越微小陷阱,行动更加稳健 目前四足机器人的全球市场上,市场份额最大的是哪个国家的企业?A.美国 B.中国 C.其他 波士顿动力四足机器人 云深处 绝影X30 四足机器人 …...
Python Tutor网站调试利器
概述 本文主要是推荐一个网站:Python Tutor. 网站首页写道: Online Compiler, Visual Debugger, and AI Tutor for Python, Java, C, C++, and JavaScript Python Tutor helps you do programming homework assignments in Python, Java, C, C++, and JavaScript. It contai…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
Xcode 16 集成 cocoapods 报错
基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...
【51单片机】4. 模块化编程与LCD1602Debug
1. 什么是模块化编程 传统编程会将所有函数放在main.c中,如果使用的模块多,一个文件内会有很多代码,不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数声明,其他.c文…...
