C#程序设计实验

news2025/1/9 5:04:42

C#实验

image-20230604110101321

实验1 C# 基本编程

题目

VS下新建一个控制台项目:诸如:hello world程序,运行程序输出结果。并解释C#程序的结构:

诸如:一个基本的C#程序包含几部分 ,每一部分的功能是什么。。。

完整代码

using System;//导入System命名空间
namespace HelloWorldApplication//命名空间
{
    /* 类名为 HelloWorld */
    class HelloWorld
    {
        /* main函数 */
        static void Main(string[] args)
        {
            /* 我的第一个 C# 程序 */
            Console.WriteLine("Hello World!");//在控制台输出Hello World!并换行
            Console.ReadKey();//等待键盘输入,防止一闪而过
        }
    }
}

运行结果

image-20230609143612310这段代码是一个经典的 “Hello World” 程序,用于展示 C# 语言的基本结构和输出功能。下面对代码进行解析:

导入 System 命名空间

其中包含了 Console 类,用于处理控制台输入输出。
csharpCopy code
using System;

定义命名空间 HelloWorldApplication

命名空间用于组织和管理代码。
csharpCopy codenamespace HelloWorldApplication
{
   
}

定义一个类 HelloWorld

包含了程序的主要逻辑。
csharpCopy codeclass HelloWorld
{
  
}

HelloWorld类中、定义了 staticMain 方法,是程序的入口点。

csharpCopy codestatic void Main(string[] args)
{
    
}

Main 方法中,使用 Console.WriteLine 方法打印文本 “Hello World!” 到控制台,并使用 Console.ReadKey 方法等待用户按下任意键。

csharpCopy codeConsole.WriteLine("Hello World!");
Console.ReadKey();

以上就是该代码的解析,它实现了一个简单的控制台应用程序,输出 “Hello World!” 到控制台,并等待用户按下任意键才退出。这是 C# 程序的基本结构,用于入门学习和展示语言特性。

实验2 C#面向对象编程

题目

建立一个控制台程序,设计一个cat 类,在该类中定义cat的颜色 年龄 等属性,并建立一个方法输出“叫声”。

在程序中建立类的对象读取 和 设置 cat 的属性值,并调用方法输出 猫的 “叫声”

完整代码

using System;
namespace HelloWorld
{
    class Cat
    {
        private string color;//猫的颜色
        private int age;  //年龄字段
        public int Age//年龄属性,用户对外操作age
        {
            get
            {
                return age;
            }
            set
            {
                age = value;
            }
        }
        
        public string Color//颜色属性,用户对外操作age
        {
            get
            {
                return color;
            }
            set
            {
                color = value;
            }
        }
        

        public void hall()
        {
            Console.WriteLine("一只"+this.age+"岁"+this.color+"的猫正在叫:喵喵喵!");
        }
    }
    class Program
    {
        public static void Main(string[] args)
        {
            Cat cat = new Cat();
            cat.Age = 10;
            cat.Color = "灰色";
            cat.hall();
            Console.ReadKey();
        }
    }
}

运行结果

image-20230604110640734

这段代码定义了一个名为 Cat 的类,并在 Main 方法中创建了一个 Cat 的实例并使用其属性和方法。

定义 Cat

csharpCopy codeclass Cat
{
    private string color;
    private int age;
    public int Age
    {
        get
        {
            return age;
        }
        set
        {
            age = value;
        }
    }
        
    public string Color
    {
        get
        {
            return color;
        }
        set
        {
            color = value;
        }
    }
        

    public void hall()
    {
        Console.WriteLine("一只"+this.age+"岁"+this.color+"的猫正在叫:喵喵喵!");
    }
}

在这个类中,我们定义了私有字段 colorage,分别表示猫的颜色和年龄。然后,使用属性 AgeColor 封装了这两个字段,以提供对它们的访问和设置。AgeColor 属性具有 getset 访问器,使得我们可以通过 cat.Agecat.Color 来获取和设置猫的年龄和颜色。最后,定义了一个名为 hall 的方法,用于输出猫的叫声。

Main 方法中使用 Cat

csharpCopy codepublic static void Main(string[] args)
{
    Cat cat = new Cat();
    cat.Age = 10;
    cat.Color = "灰色";
    cat.hall();
    Console.ReadKey();
}

Main 方法中,我们创建了一个名为 catCat 类型的实例。然后,使用属性访问器 cat.Agecat.Color 分别设置猫的年龄为 10 和颜色为 “灰色”。接着,调用 cat.hall() 方法,输出猫的叫声。最后,使用 Console.ReadKey() 等待用户按下任意键退出程序。

实验3 C#面向对象高级编程

题目

建立一个控制台程序,(1)定义一个Person类,具有姓名(Name)、年龄(Age)、性别(Sex)等属性;
(2)从Person类派生一个Student类,具有三个课程成绩的数据成员,并具有SetScores方法(输入学生的3门成绩)、GetAverage方法(求平均成绩);
(3)Student类要求其构造函数具有三种重载形式:1、无参;2、具有姓名、年龄、性别三个参数的构造函数;3、具有姓名、年龄、性别、成绩六个参数的构造函数;
(4)在Program类的Main方法中,使用Student的三个重载形式创建对象,并调用其GetAverage方法显示平均成绩;

完整代码

using System;
namespace HelloWorld
{
    class Person
    {
        protected string Name;
        protected string Sex;
        protected int Age;
        
    }

    // 派生类
    class Student : Person
    {
        private int math;
        private int english;
        private int chinese;
        public Student()
        {

        }
        public string name
        {
            set
            {
                Name = value;
            }
            get
            {
                return Name;
            }
        }

        public string sex
        {
            set
            {
                Sex = value;
            }
            get
            {
                return Sex;
            }
        }

        public int age
        {
            set
            {
                Age = value;
            }
            get
            {
                return Age;
            }
        }
        public Student(string Name,string Sex,int Age)
        {
            this.Name = Name;
            this.Sex = Sex;
            this.Age = Age;
        }

        public Student(string Name, string Sex, int Age,int math,int english,int chinese)
        {
            this.Name = Name;
            this.Sex = Sex;
            this.Age = Age;
            this.math = math;
            this.chinese = chinese;
            this.english = english;
        }
        public void SetScores(int math,int chinese,int english)
        {

            this.math = math;
            
            this.english = english;
            this.chinese = chinese;
        }

        public void GetAverage()
        {
            Console.WriteLine(this.name+"的平均分为:"+((this.chinese)+(this.english)+(this.math))/3.0);
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            Student stu1 = new Student();
            stu1.name = "蒲贺良";
            stu1.sex = "男";
            stu1.age = 21;
            stu1.SetScores(100,100,100);
            stu1.GetAverage();
            Student stu2 = new Student("小黑","男",22);
            stu2.SetScores(99,98,97);
            stu2.GetAverage();
            Student stu3 = new Student("小白", "男", 22,96,96,96);
            stu3.GetAverage();
            Console.ReadKey();
        }
    }
}

运行结果

image-20230604110723029

这段代码定义了一个 Person 类和一个派生类 Student,并在 Main 方法中创建了几个 Student 的实例。

定义 Person 类和 Student

csharpCopy codeclass Person
{
    protected string Name;
    protected string Sex;
    protected int Age;
}

Person 类定义了三个保护字段 NameSexAge,用于表示人的姓名、性别和年龄。

csharpCopy codeclass Student : Person
{
    private int math;
    private int english;
    private int chinese;

    // 构造函数
    public Student()
    {

    }

    // 属性
    public string name
    {
        set
        {
            Name = value;
        }
        get
        {
            return Name;
        }
    }

    public string sex
    {
        set
        {
            Sex = value;
        }
        get
        {
            return Sex;
        }
    }

    public int age
    {
        set
        {
            Age = value;
        }
        get
        {
            return Age;
        }
    }

    // 构造函数重载
    public Student(string Name, string Sex, int Age)
    {
        this.Name = Name;
        this.Sex = Sex;
        this.Age = Age;
    }

    public Student(string Name, string Sex, int Age, int math, int english, int chinese)
    {
        this.Name = Name;
        this.Sex = Sex;
        this.Age = Age;
        this.math = math;
        this.chinese = chinese;
        this.english = english;
    }

    // 方法
    public void SetScores(int math, int chinese, int english)
    {
        this.math = math;
        this.english = english;
        this.chinese = chinese;
    }

    public void GetAverage()
    {
        Console.WriteLine(this.name + "的平均分为:" + ((this.chinese) + (this.english) + (this.math)) / 3.0);
    }
}

Student 类是 Person 类的派生类,它添加了私有字段 mathenglishchinese,用于表示学生的数学、英语和语文成绩。类中包含了构造函数重载,用于根据不同参数创建 Student 类的实例。另外,类中还定义了属性 namesexage,用于访问和设置 Person 类中的保护字段。此外,类中还定义了 SetScores 方法,用于设置学生的成绩,以及 GetAverage 方法,用于计算并输出学生的平均分。

Main 方法中使用 Student

static void Main(string[] args)
        {
            Student stu1 = new Student();
            stu1.name = "蒲贺良";
            stu1.sex = "男";
            stu1.age = 21;
            stu1.SetScores(100,100,100);
            stu1.GetAverage();
            Student stu2 = new Student("小黑","男",22);
            stu2.SetScores(99,98,97);
            stu2.GetAverage();
            Student stu3 = new Student("小白", "男", 22,96,96,96);
            stu3.GetAverage();
            Console.ReadKey();
        }

Main 方法中使用 Student

实验四 C#中的文件处理

题目

建立一个控制台程序,利用所学读写文件类 封装一个读文件接口 一个 写文件接口,并完成对文件的读写。

完整代码

using System;
using System.IO;

namespace FileApplication
{
    class File_Test
    {
        private string path;
        public File_Test(string path)
        {
            this.path = path;
        }

        public void Read()
        {
            try
            {
                // 创建一个 StreamReader 的实例来读取文件 
                
                StreamReader sr = new StreamReader(path, false);

                string line;

                // 从文件读取并显示行,直到文件的末尾 
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }

            }
            catch (Exception e)
            {
                // 向用户显示出错消息
                Console.WriteLine("The file could not be read:");
                Console.WriteLine(e.Message);
            }
            Console.ReadKey();
        }

        public void Write(string[] content)
        {
            using (StreamWriter sw = new StreamWriter(path))
            {
                foreach (string s in content)
                {
                    sw.WriteLine(s);

                }
            }

        }
    }

    class Program
    {

        static void Main(string[] args)
        {
            string Path = @"C:\Users\puheliang\Desktop\Project\CS_Project\实验4\test.txt";
            File_Test f = new File_Test(Path);
            string[] test = { "任浩真帅", "任浩帅呆了", "任浩帅","好帅的任浩" };
            f.Write(test);
            f.Read();
        }


    }


}

运行结果

image-20230604110934411

image-20230604111140083

这段代码演示了使用 StreamReaderStreamWriter 类来读取和写入文件。

定义 File_Test

csharpCopy codeclass File_Test
{
    private string path;

    public File_Test(string path)
    {
        this.path = path;
    }

    public void Read()
    {
        try
        {
            // 创建一个 StreamReader 的实例来读取文件 
            
            StreamReader sr = new StreamReader(path, false);

            string line;

            // 从文件读取并显示行,直到文件的末尾 
            while ((line = sr.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }

        }
        catch (Exception e)
        {
            // 向用户显示出错消息
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
        }
        Console.ReadKey();
    }

    public void Write(string[] content)
    {
        using (StreamWriter sw = new StreamWriter(path))
        {
            foreach (string s in content)
            {
                sw.WriteLine(s);
            }
        }
    }
}

File_Test 类包含了两个方法:Read()Write(string[] content)Read() 方法使用 StreamReader 类来读取文件内容并逐行输出到控制台。Write(string[] content) 方法使用 StreamWriter 类来将字符串数组 content 的内容写入到文件中。

使用 File_Test

csharpCopy codestatic void Main(string[] args)
{
    string Path = @"C:\Users\puheliang\Desktop\Project\CS_Project\实验4\test.txt";
    File_Test f = new File_Test(Path);
    string[] test = { "任浩真帅", "任浩帅呆了", "任浩帅", "好帅的任浩" };
    f.Write(test);
    f.Read();
}

Main 方法中,我们首先定义了一个文件路径 Path。然后,创建了一个 File_Test 的实例 f,并传入文件路径。接着,定义了一个字符串数组 test,包含了要写入文件的内容。调用 f.Write(test) 方法将内容写入文件,然后调用 f.Read() 方法读取文件并将内容输出到控制台。最后,使用 Console.ReadKey() 等待用户按下任意键退出程序。

实验五:线程技术使用

题目

建立一个控制台程序,建立四个线程,每个线程的功能为:输出0-9 共计10个数字,要求线程的输出为连续输出,借助信号量或者互斥锁进行实现。

完整代码

using System;
using System.Threading;

namespace MultithreadingApplication
{
    class ThreadCreationProgram
    {
        static Mutex mutex = new Mutex();
        static Semaphore sem = new Semaphore(1, 1);
        
        public static void CallToChildThread01()
        {
            sem.WaitOne();
            {
                for (int i = 0; i < 10; i++)
                {

                    Console.WriteLine("thread1:" + i);
                    Thread.Sleep(5);
                }
            }
            sem.Release();


        }
        public static void CallToChildThread02()
        {
            sem.WaitOne();
            {
                for (int i = 0; i < 10; i++)
                {

                    Console.WriteLine("thread2:" + i);
                    Thread.Sleep(5);
                }
            }
            sem.Release();

        }

        public static void CallToChildThread03()
        {
            sem.WaitOne();
            {
                for (int i = 0; i < 10; i++)
                {

                    Console.WriteLine("thread3:" + i);
                    Thread.Sleep(5);
                }
            }
            sem.Release();


        }
        public static void CallToChildThread04()
        {
            sem.WaitOne();
            {
                for (int i = 0; i < 10; i++)
                {

                    Console.WriteLine("thread4:" + i);
                    Thread.Sleep(5);
                }
            }
            sem.Release();


        }
        static void Main(string[] args)
        {
            ThreadStart childref01 = new ThreadStart(CallToChildThread01);
            Thread childThread01 = new Thread(childref01);
            childThread01.Name = "Thread1";
            childThread01.Start();

            ThreadStart childref02 = new ThreadStart(CallToChildThread02);
            Thread childThread02 = new Thread(childref02);
            childThread02.Name = "Thread2";
            childThread02.Start();

            ThreadStart childref03 = new ThreadStart(CallToChildThread03);
            Thread childThread03 = new Thread(childref03);
            childThread03.Name = "Thread3";
            childThread03.Start();

            ThreadStart childref04 = new ThreadStart(CallToChildThread04);
            Thread childThread04 = new Thread(childref04);
            childThread04.Name = "Thread4";
            childThread04.Start();
            ;
            Console.ReadKey();
        }
    }
}

运行结果

image-20230604111033565

这段代码演示了使用多线程进行并发操作,并使用 MutexSemaphore 实现线程同步。

定义线程函数

csharpCopy codepublic static void CallToChildThread01()
{
    sem.WaitOne();
    {
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine("thread1:" + i);
            Thread.Sleep(5);
        }
    }
    sem.Release();
}

public static void CallToChildThread02()
{
    sem.WaitOne();
    {
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine("thread2:" + i);
            Thread.Sleep(5);
        }
    }
    sem.Release();
}

public static void CallToChildThread03()
{
    sem.WaitOne();
    {
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine("thread3:" + i);
            Thread.Sleep(5);
        }
    }
    sem.Release();
}

public static void CallToChildThread04()
{
    sem.WaitOne();
    {
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine("thread4:" + i);
            Thread.Sleep(5);
        }
    }
    sem.Release();
}

在这里定义了四个线程函数,分别是 CallToChildThread01CallToChildThread02CallToChildThread03CallToChildThread04。每个函数都会使用 sem.WaitOne() 获取信号量,然后执行一个简单的循环输出,并使用 Thread.Sleep(5) 使线程休眠 5 毫秒,模拟一些处理时间。最后,通过 sem.Release() 释放信号量。

创建并启动线程

csharpCopy codeThreadStart childref01 = new ThreadStart(CallToChildThread01);
Thread childThread01 = new Thread(childref01);
childThread01.Name = "Thread1";
childThread01.Start();

ThreadStart childref02 = new ThreadStart(CallToChildThread02);
Thread childThread02 = new Thread(childref02);
childThread02.Name = "Thread2";
childThread02.Start();

ThreadStart childref03 = new ThreadStart(CallToChildThread03);
Thread childThread03 = new Thread(childref03);
childThread03.Name = "Thread3";
childThread03.Start();

ThreadStart childref04 = new ThreadStart(CallToChildThread04);
Thread childThread04 = new Thread(childref04);
childThread04.Name = "Thread4";
childThread04.Start();

Main 方法中,我们使用 ThreadStart 创建了四个线程的启动函数,并使用 Thread 类创建了四个线程实例 childThread01childThread02childThread03childThread04。我们为每个线程指定了名称,然后通过调用 Start() 方法启动线程。

主线程等待

csharpCopy code
Console.ReadKey();


childThread01.Name = "Thread1";
childThread01.Start();

ThreadStart childref02 = new ThreadStart(CallToChildThread02);
Thread childThread02 = new Thread(childref02);
childThread02.Name = "Thread2";
childThread02.Start();

ThreadStart childref03 = new ThreadStart(CallToChildThread03);
Thread childThread03 = new Thread(childref03);
childThread03.Name = "Thread3";
childThread03.Start();

ThreadStart childref04 = new ThreadStart(CallToChildThread04);
Thread childThread04 = new Thread(childref04);
childThread04.Name = "Thread4";
childThread04.Start();

Main 方法中,我们使用 ThreadStart 创建了四个线程的启动函数,并使用 Thread 类创建了四个线程实例 childThread01childThread02childThread03childThread04。我们为每个线程指定了名称,然后通过调用 Start() 方法启动线程。

主线程等待

csharpCopy code
Console.ReadKey();

最后,使用 Console.ReadKey() 让主线程等待用户按下任意键,以保持程序运行。

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

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

相关文章

YAPI接口自动化测试该如何正确地操作

目录 前言&#xff1a; 1、它首先是一个很好的接口维护的工具&#xff1b; 2、单个接口测试时&#xff0c;更方便灵活&#xff0c;更易用&#xff1b; 3、接口自动化测试&#xff0c;可以0代码基础进行接口集合的测试&#xff1b; 前言&#xff1a; YAPI是一款易于使用、可…

Lecture 15 Probabilistic Context-Free Grammar

目录 Ambiguity in Parsing Basics of PCFGsBasics of PCFGsStochastic Generation with PCFGs PCFG ParsingCYK for PCFGs Limitations of CFGPoor Independence AssumptionsLack of Lexical Conditioning Ambiguity in Parsing Context-Free grammars assign hierarchical st…

OpenELB 在 CVTE 的最佳实践

作者&#xff1a;大飞哥&#xff0c;视源电子股份运维工程师&#xff0c; KubeSphere 社区用户委员会广州站站长&#xff0c;KubeSphere Ambassador。 公司介绍 广州视源电子科技股份有限公司&#xff08;以下简称视源股份&#xff09;成立于 2005 年 12 月&#xff0c;旗下拥…

最详细整理,HttpRunner接口自动化框架Hook机制详解(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 httprunner 4.x可…

软体机器人,刚柔软机器人仿真建模,干货满满,直接上图!

一、 背景&#xff1a; 软体机器人技术是近年来机器人领域最为热门的研究领域之一。软体机器人具有天然的柔 性、自适应性、低成本和被动安全性&#xff0c;在人机交互、医疗服务等领域具有广泛的应用前景。同时&#xff0c; 软体机器人的研究涉及软材料、机构设计、仿生学、微…

全链路压测

一般区分为两种&#xff1a;测试环境和生产环境压测。因生产环境的压测和真实用户的使用环境完全一致&#xff0c;测试结果更具有参考性。 全链路的压测的实施一般需要给压测请求带一个压测标识&#xff0c;用于压测数据的数据落库&#xff0c;查询&#xff0c;缓存&#xff0c…

设备维修管理系统

设备维修管理系统能够有效提高设备管理水平和设备运行效率。它不仅能够帮助企业实现设备信息化管理&#xff0c;还可以快速定位设备故障&#xff0c;提高设备修复效率&#xff0c;从而更好地保障生产安全和生产效率。 凡尔码搭建设备维护保养管理系统主要由以下几个模块组成&am…

【TA100】图形 2.2 模型与材质基础

一、 渲染管线与模型基础 1.可编程渲染管线 ● 蓝色背景的&#xff1a;可编程管线 ● 顶点着色器&#xff1a;模型的顶点进行计算 ● 片元着色器&#xff1a;将光栅化阶段插值的信息进行计算 2.uv ● 纹理映射&#xff1a;任何3D物体的表面都是2D的→纹理就是一张图→纹理…

6个免费商用图片素材库,再也不用担心版权问题了

本期给大家分享6个免费可商用的视频素材网站&#xff0c;设计师、自媒体、视频剪辑有福啦&#xff0c;再也不用担心版权问题了&#xff0c;记得收藏起来哦~ 菜鸟图库 https://www.sucai999.com/pic.html#?vNTYxMjky 网站主要是为新手设计师提供免费素材的&#xff0c;素材的…

[CKA]考试之基于角色的访问控制-RBAC

由于最新的CKA考试改版&#xff0c;不允许存储书签&#xff0c;本博客致力怎么一步步从官网把答案找到&#xff0c;如何修改把题做对&#xff0c;下面开始我们的 CKA之旅 题目为&#xff1a; Context&#xff1a; 为部署流水线创建一个新的ClusterRole并将其绑定到范围为特定…

Pandas的to_sql()插入数据到mysql中所遇到的问题

使用pymysql驱动API&#xff0c;出现如下错误&#xff1a; DatabaseError: Execution failed on sql ‘SELECT name FROM sqlite_master WHERE type‘table’ AND name?;’: not all arguments converted during string formatting 1. pandas的数据表插入数据到mysql中所遇到…

王道考研数据结构代码总结(后四章)

目录 树基本概念与属性树的基本性质 图拓扑排序 本文包含王道考研讲课中所涉及的数据结构中的所有代码&#xff0c;当PPT代码和书上代码有所区别时以咸鱼的PPT为主&#xff0c;个人认为PPT上的代码比王道书上的代码要便于理解&#xff0c;此外&#xff0c;本博客也许会补充一些…

css01:顶部导航栏,左右分离布局

css01&#xff1a;顶部导航栏&#xff0c;左右分离布局 效果 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>顶部导航栏</title><style>body {margin: 0;padding: 0;}.top-nav {background-color: #ff…

Python采集二手车数据信息,看看啥车最得心意

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 环境使用: python 3.8 运行代码 pycharm 2022.3.2 辅助敲代码 专业版是付费的 <码可以免费用> 社区版是免费的 模块使用: 内置模块 无需安装 csv 第三方模块 需要安装的 requests >>> pip install req…

大数据可视化开源平台,一招让数据资源活泛起来!

在现代化办公环境中&#xff0c;数据资源也是非常重要的一种发展要素。有不少朋友会私信我们询问道&#xff1a;如何将企业内部的数据资源利用起来&#xff0c;真正发挥其价值为我所有&#xff1f;在这里&#xff0c;推荐大家了解大数据可视化开源平台&#xff0c;这是可以为企…

深度学习的各种卷积的总结

如果你听说过深度学习中不同种类的卷积&#xff08;比如 2D / 3D / 1x1 /转置/扩张&#xff08;Atrous&#xff09;/空间可分/深度可分/平展/分组/混洗分组卷积&#xff09;&#xff0c;并且搞不清楚它们究竟是什么意思&#xff0c;那么这篇文章就是为你写的&#xff0c;能帮你…

既然jmeter也能做接口自动化,为什么还需要pytest自己搭框架?

今天这篇文章呢&#xff0c;我会从以下几个方面来介绍&#xff1a; 1、首先介绍一下pytest框架 2、带大家安装Pytest框架 3、使用pytest框架时需要注意的点 4、pytest的运行方式 5、pytest框架中常用的插件 一、pytest框架介绍 pytest 是 python 的第三方单元测试框架&a…

微信如何群发消息?如何群发突破200上限?

相信每到各种节日的时候&#xff0c;很多人都会发布或收到微信好友的节日祝福或活动通知。群发已经是一件很普遍的事了。逢年过节&#xff0c;发个微信祝福&#xff0c;是维系关系的必须&#xff1b;发个活动通知&#xff0c;是为了告知客户&#xff0c;促进销售。 01 微信自带…

2023年最新网络安全面试题合集(附答案解析)

前言 为了拿到心仪的 Offer 之外&#xff0c;除了学好网络安全知识以外&#xff0c;还要应对好企业的面试。 作为一个安全老鸟&#xff0c;工作这么多年&#xff0c;面试过很多人也出过很多面试题目&#xff0c;也在网上收集了各类关于渗透面试题目&#xff0c;里面有我对一些…

佩戴舒适音质悦耳,试试这款耳夹式耳机,塞那Z51S Pro Max上手

蓝牙耳机很多人每天都用&#xff0c;工作学习的时候戴上&#xff0c;可以随便听听舒缓心情&#xff0c;随便哪个平台都有丰富的音乐、播客等类型的资源&#xff0c;听着听着就下班了。市面上蓝牙耳机的种类这两年多了不少&#xff0c;我目前用的是一款sanag塞那Z51S Pro Max&am…