C#桌面应用制作计算器

news2024/11/16 8:10:59

C#桌面应用制作简易计算器,可实现数字之间的加减乘除、AC按键清屏、Del按键清除末尾数字、+/-按键取数字相反数、%按键使数字缩小100倍、=按键显示运算结果等......

页面实现效果f5daa1720da24927b1bea8d986610baa.png

功能实现

布局

计算器主体使用Panel容器,然后将button控件排列放置Panel容器做为计算器按键,显示主体使用groudBox容器,然后在groudBox容器里放置一个Panel容器作为显示屏,再在Panel容器放置一个label控件用于显示输入和运算结果。

布局效果

1f401ee0f36d412c86a9d32d934a4ca7.png

数字按键功能

点击数字按键使其数字投射到计算器平面上,因为屏幕大小有限,所以使其数字长度大于16时,字体缩小一倍,数字长度大于30时,弹窗提示"字符长度超出范围"。

数字按键功能实现效果56531a5a10fa4de0aec077eb64c2f980.jpeg

数字按键功能实现代码

 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并投射到屏幕上。

运算符按键功能实现效果

67025697bb754c34b1573bcdfe8789df.jpeg

运算符按键功能实现代码

 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;
             }
         }
     }
 }

fc5eab724c064e31a69db83569d09e67.jpeg

AC按键功能

点击清除所有信息。

AC按键功能实现效果

b7366c9f8a6e494f82956f40d67ba227.jpeg

AC按键功能实现代码

 private void button1_Click(object sender, EventArgs e)
 {
     label1.Text = null;
     num1=null;
     num2=null;
     symbol = null;
 }

Del按键功能

点击清除末尾字符,如果屏幕上末尾字符显示的是输入的运算符,则点击后清除运算符并把num1的值投射到屏幕上。

Del按键功能实现效果

6c46b6b178da430182f8e7655f846ef0.jpeg

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"(按键‘.’同样效果)。

+/-按键功能实现效果

3617ec09196f41fd80797efa07ceacd0.jpeg

+/-按键功能实现代码

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"。

%按键功能实现效果

1118c7dc9bd04dafbc6199824006897f.jpeg

%按键功能实现代码

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"。

等号按键功能实现效果

0fe2986654cc4e0798863c2072115a6a.jpeg

等号按键功能实现代码

 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;
                }
            }
        }
    }
}

 

 

 

 

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

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

相关文章

谷歌推出设备内置人工智能,实时向手机用户发出诈骗电话警报

Google 宣布推出适用于 Android 的新安全功能&#xff0c;可实时防御诈骗和有害应用。 这些功能由先进的设备内置 AI 提供支持&#xff0c;可在不损害隐私的情况下增强用户安全性。 这些新的安全功能首先在 Pixel 上推出&#xff0c;并将很快在更多 Android 设备上推出。 诈…

HarmonyOS ArkTs 解决流式传输编码问题

工作日志 日期&#xff1a;2024-11-15 标题&#xff1a;HarmonyOS ArkTs 解决流式传输编码问题 问题描述 问题&#xff1a;在处理流式数据的 HTTP 请求时&#xff0c;服务器返回的数据存在编码问题&#xff0c;导致数据无法正确地解码为字符串。部分数据在解码后出现了乱码…

MySQL数据库最大连接数查询及修改

MySQL数据库最大连接数查询及修改 1. 客户端连接数超出异常案例 Navicat连接异常信息如下&#xff1a; 2. 查看MySQL最大客户端连接数 通过mysql client命令登录MySQL数据库&#xff08;登录用户不受限制&#xff0c;既可以是 root管理员用户&#xff0c;也可以是常规用户&a…

使用Wireshark获取USB HID(Human Interface Device)报告描述符

使用Wireshark选择需要获取的USB进行抓取数据&#xff0c;找到设备&#xff08;host&#xff09;接收信息的数据 第二栏出现hid报告&#xff0c;右击选择复制流 将复制的内容粘贴到USB标准请求及描述符在线分析工具 - USB中文网 进行解析 以图中获取手写板的数据为例&#xff…

TofuAI处理BT1120时序视频要求

时序要求 BT.1120视频用于1920x108030Hz数字视频输入。具体时序必须严格按照说明。BT.1120输入电平为1.8V。 BT1120数字视频采用YCbCr彩色格式输出&#xff0c;串行数据位宽为16bit&#xff0c;亮度在 高8bit&#xff0c;色度在低8bit&#xff0c;亮度和色度在同一个时钟周期输…

聊天服务器(8)用户登录业务

目录 登录状态业务层代码数据模型层代码记录用户的连接信息以及线程安全问题客户端异常退出业务 登录状态 登录且状态变为online 业务层代码 #include "chatservice.hpp" #include "public.hpp" #include <string> #include <muduo/base/Loggi…

通用定时器---输出比较功能

目录 一、概念 二、输出比较的8种模式 三、输出比较输出PWM波形的基本结构 配置步骤 四、示例代码 一、概念 OC&#xff08;OutPut Compare&#xff09;输出比较。输出比较可以通过比较CNT与CCR寄存器的关系&#xff0c;来对输出电平进行置1/置0/翻转的操作&#xff0c;可…

Wireshark中的length栏位

注&#xff1a;Ethernet II的最小data length为46&#xff0c;如果小于&#xff0c;会补全到46. 1.指定网卡抓取的&#xff0c;链路为ethernet。 IPv4 Ethernet II 长度为 14 bytes - L1ipv4 header中的length包括header和payload的总长度 - L2wireshark中length表示抓取的pac…

spring boot整合https协议

整体目录 1. 生成SSL证书 首先&#xff0c;使用keytool生成一个自签名证书。打开命令行工具并运行以下命令&#xff1a; keytool -genkeypair -alias myserver -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365 这将创建一个名为keystore.jks的文件&#xf…

ceph的集群管理

0 环境说明 ip地址主机名额外硬盘是否加入ceph集群10.0.0.141ceph141sdb 300G&#xff0c;sdc 500G是10.0.0.142ceph142sdb 300G&#xff0c;sdc 500G, sdd 1000G否10.0.0.143ceph143sdb 300G&#xff0c;sdc 500G否 在上一篇文章中&#xff0c;已经成功地初始化了一个ceph管…

C++(Qt)软件调试---内存泄漏分析工具MTuner (25)

C(Qt)软件调试—内存泄漏分析工具MTuner &#xff08;25&#xff09; 文章目录 C(Qt)软件调试---内存泄漏分析工具MTuner &#xff08;25&#xff09;[toc]1、概述&#x1f41c;2、下载MTuner&#x1fab2;3、使用MTuner分析qt程序内存泄漏&#x1f9a7;4、相关地址&#x1f41…

CCI3.0-HQ:用于预训练大型语言模型的高质量大规模中文数据集

摘要 我们介绍了 CCI3.0-HQ&#xff0c;它是中文语料库互联网 3.0&#xff08;CCI3.0&#xff09;的一个高质量500GB子集&#xff0c;采用新颖的两阶段混合过滤管道开发&#xff0c;显著提高了数据质量。为了评估其有效性&#xff0c;我们在不同数据集的100B tokens上从头开始…

LC12:双指针

文章目录 125. 验证回文串 本专栏记录以后刷题碰到的有关双指针的题目。 125. 验证回文串 题目链接&#xff1a;125. 验证回文串 这是一个简单题目&#xff0c;但条件判断自己写的时候写的过于繁杂。后面参考别人写的代码&#xff0c;首先先将字符串s利用s.toLowerCase()将其…

AI 写作(九)实战项目二:智能新闻报道(9/10)

一、项目概述 在当今信息爆炸的时代&#xff0c;新闻传播行业正面临着前所未有的挑战与机遇。随着科技的飞速发展&#xff0c;人们获取信息的渠道日益多样化&#xff0c;对新闻的时效性、准确性和个性化需求也不断提高。在这样的背景下&#xff0c;AI 写作在智能新闻报道中的重…

星际流浪的大模型

种子世界还在太空漫游&#xff0c;航线上捡到一个铁盒子&#xff0c;那是一块硬盘&#xff0c;古老的东西。 长老就安排歌者&#xff0c;你去研究&#xff0c;查查硬盘的来源坐标。 费好大劲&#xff0c;歌者把硬盘中的程序和数据激活&#xff0c;运行了起来。 很有意思&#x…

HarmonyOs DevEco Studio小技巧31--画布组件Canvas

那天我们用画布实现了文字颜色的渐变&#xff0c;实际上画布还有很多好玩的功能&#xff0c;接下来让我们一起试一下画布怎么玩 Canvas 提供画布组件&#xff0c;用于自定义绘制图形。 接口 Canvas Canvas(context?: CanvasRenderingContext2D | DrawingRenderingContext…

C语言.冒泡排序的练习

题目&#xff1a; 1.用C语言编程&#xff0c;用冒泡排序将一个元素个数为20&#xff0c;的一维数组&#xff0c;由大到小的降序。 分析&#xff1a;1.首先创建一个数组&#xff0c;元素个数为20. 2.其次是按降序排列。 3.最后用冒泡排序。 运行代码&#xff1a; #include&l…

RT-DETR融合GhostModel V3及相关改进思路

RT-DETR使用教程&#xff1a; RT-DETR使用教程 RT-DETR改进汇总贴&#xff1a;RT-DETR更新汇总贴 《GhostNetV3: Exploring the Training Strategies for Compact Models》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/pdf/2404.11202v1 代码链接&#xff1a;https:…

基于yolov8、yolov5的鸟类分类系统(含UI界面、训练好的模型、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8、yolov8 SE注意力机制 或 yolov5、yolov5 SE注意力机制 &#xff0c; 直接提供最少两个训练好的模型。模型十分重要&#xff0c;因为有些同学的电脑没有 GPU&#xff0…

如何保证MySQL与Redis缓存的数据一致性?

文章目录 一、引言二、场景来源三、高并发解决方案1. 先更新缓存&#xff0c;再更新数据库2. 先更新数据库&#xff0c;再更新缓存3. 先删除缓存&#xff0c;再更新数据库4. 先更新数据库&#xff0c;再删除缓存小结 四、拓展方案1. 分布式锁与分布式事务2. 消息队列3. 监听bin…