ASP.NETWeb开发(C#版)-day1-C#基础+实操

news2024/11/17 9:59:46

目录

  • .NET
  • 实操:创建项目
    • 执行
  • C#基础语法
    • 数据类型
    • 变量
    • 实操001_变量
    • 如何在一个解决方案 中创建另一个项目
    • 实操002
    • 结构
    • 实操003-if else
    • 实操004-多分支
    • 多行注释按钮
    • 实操:循环
  • 面向对象基础
    • 如何在同一个项目下创建新的.cs文件
    • 实操-类的定义与访问
    • 实操-练习
    • 实操-方法
    • 实操:计算器
  • 综合实例

.NET

.NET简介

dotnet5(.NET)合并了.NET Framework、.NET Core(可以跨平台)

实操:创建项目

开发环境

我用的Visual Studio2022 先创建新项目

创建新项目
注意第一步和第二步

再点击下一步后

注意框选的部分

注意打钩的地方
成功

说明(了解即可):
   在找到相应文件位置后,点击 “生成” 下方会出现 成功 之后 Debug 下会生成很多文件
   其中 xxx.exe 是生成的可执行文件,在.NET平台是一种通用文件

说明
生成
在VS下方输出的-成功

执行

执行
成功执行

C#基础语法

C#基础语法

数据类型

  • 简单数据类型(值类型)
  • 引用类型(值存储在堆里面,地址存储在栈里面)
    简单数据类型(值类型)

变量

变量
变量

实操001_变量

namespace Demo001_变量
{
    internal class Program
    {   //"///"是注释 解释说明的作用
        /// <summary>
        /// 主方法,程序的入口
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {

            //声明变量存储数据
            string message;

            //给变量赋值
            message = "欢迎来到C#的世界";

            //使用变量
            Console.WriteLine(message);
            
            //存储员工的信息:工号,姓名,性别,入职日期,基本工资,部门,岗位
			string emplyeeNo, name;
			bool gender;
			DateTime jobInDateTime;
			double salary;
			string departmentName;
			string job;
			
			Console.Write("请输入工号:");
			emplyeeNo = Console.ReadLine();
			Console.Write("请输入姓名:");
			name = Console.ReadLine();
			Console.Write("请输入性别:");
			gender = Convert.ToBoolean(Console.ReadLine());
			Console.Write("请输入入职日期(yyyy-mm-dd):");
			jobInDateTime = Convert.ToDateTime(Console.ReadLine());
			Console.Write("请输入基本工资:");
			salary = Convert.ToDouble(Console.ReadLine());
			Console.Write("请输入部门:");
			departmentName = Console.ReadLine();
			Console.Write("请输入岗位:");
			job = Console.ReadLine();
			
			//输出个人信息
			Console.WriteLine($"工号:{emplyeeNo}\n" +
			    $"姓名:{name}\n" +
			    $"性别:{gender}\n" +
			    $"入职日期:{jobInDateTime}\n" +
			    $"基本工资:{salary}\n" +
			    $"部门:{departmentName}\n" +
			    $"岗位:{job}");
        }
    }
}

实例1

如何在一个解决方案 中创建另一个项目

如图
后面的步骤前面有讲过。

完成图

注意:
	点击 配置启动项 , 勾选 当前项目

启动项设置
![启动项设置]](https://img-blog.csdnimg.cn/fd028c9cac10418a891dfc2ab073013b.png)

在这里插入图片描述
三元运算符
比较运算符

运算符
运算符优先级

实操002

namespace Demo002_算术运算符
{
    internal class Program
    {
        static void Main(string[] args)
        {
            DateTime dateOfBirth= Convert.ToDateTime("1995-10-2");
            int age = DateTime.Now.Year - dateOfBirth.Year;
            Console.WriteLine("年龄:"+age);
            //age++ 和 ++age 区别
            //先用再加  先加再用

            bool gender = true;
            gender = false;
            //string sex = gender == true ? "男" : "女";
            string sex = !gender ? "男" : "女";
            Console.WriteLine($"性别:{sex}");

            Console.WriteLine();
            Console.Write("请输入账号:");
            string loginId = Console.ReadLine();
            Console.Write("请输入密码:");
            string loginPassword = Console.ReadLine();
            string loginMsg = loginId == "admin" && loginPassword =="123456" ? "登录成功" : "用户名或密码错误,登录失败";
            Console.WriteLine(loginMsg);


            
        }
    }
}

成功
失败

结构

选择结构
选择结构
选择结构

实操003-if else

namespace Demo003_选择结构
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请问是否进行C#学习:(y/n):");
            string input = Console.ReadLine().ToLower();//输入转换为小写     .ToUpper()转化为大写
            if (input != "y" && input != "n") {
                Console.WriteLine("输入有误");
            }
            else
            {
                if (input == "y")
                {
                    Console.WriteLine("继续阅读");
                }
                else
                {
                    Console.WriteLine("停止阅读");
                }
            }
            
        }
    }
}

输入y
输入n
随便输入

实操004-多分支

namespace Demo004_多分支
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("*******年终奖判定程序**********");
            Console.WriteLine("请输入基本工资:");
            double salary = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("请输入考核等级(ABCD):");
            char level = Convert.ToChar(Console.ReadLine().ToUpper());
            double reward;//奖金
            if (level < 'A' || level > 'D')
                Console.WriteLine("等级输入有误");
            //多分支
            else
            {
                //if (level == 'A')
                //reward = salary * 6;
                //else if (level == 'B')
                //reward = salary * 3;
                //else if (level == 'C')
                //reward = salary * 2;
                //else
                //reward = salary;


                //只能写等值判断
                switch (level)
                {
                    case 'A':
                        reward = salary * 6;
                        break;
                    case 'B':
                        reward = salary * 3;
                        break;
                    case 'C':
                        reward = salary * 2;
                        break;
                    default:
                        reward = salary;
                        break;
                }
                Console.WriteLine($"年终奖是{reward}");
            }
        }
    }
}

A等级
B等级
C等级
D等级
输入有误

多行注释按钮

多行注释

循环结构
while循环
do while循环

在这里插入图片描述
在这里插入图片描述

实操:循环

namespace Demo005_循环结构
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //for
            int i;//定义在外面比较好
            for(i = 0; i < 3; i++) {
                Console.WriteLine("重要的事情说三遍");
            }
            
            //登录系统,输入用户名和密码,三次有效
            string userName, password;

            for(i = 0;i < 3; i++)
            {
                Console.WriteLine($"第{i + 1}次登录开始......");
                Console.Write("请输入用户名:");
                userName= Console.ReadLine();
                Console.Write("请输入密码:");
                password = Console.ReadLine();

                if(userName == "admin" && password == "admin") {
                    Console.WriteLine("登录成功");
                    break;//强制退出循环
                }
                else if (i < 2) {
                    Console.WriteLine("用户名或密码错误,登录失败");
                }
                else
                {
                    Console.WriteLine("三次机会已用完,账号已锁定");
                }

            }
        }
    }
}

成功
三次全错
有错

面向对象基础

面向对象基础
类

如何在同一个项目下创建新的.cs文件

类

实操-类的定义与访问

Employee.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo006_类的定义和访问
{
    /**
     * 类名:Employee
     * 功能:模拟所有的职员对象
     * 
     */
    public class Employee
    {//internal 去掉也不会报错 internal只能在这里访问到 public是都可以访问到

        //成员变量(字段):特征
        //string employeeNo;//这是私有的private
        public string employeeNo;
        public string name;
        public bool gender;
        public double salary;

        //构造方法:在实例化对象时调用
        //构造方法名称必须与类名一致
        public Employee()
        {//默认存在,但是调用了带参构造,在没有定义无参构造的时候,调用无参会报错,建议带上无参构造
            //Console.WriteLine("正在实例化员工对象...");
        }

        /// <summary>
        /// 带参数构造方法
        /// </summary>
        /// <param name="employeeNo">员工号</param>
        /// <param name="name">姓名</param>
        /// <param name="gender">性别</param>
        /// <param name="salary">工资</param>
        public Employee(string employeeNo, string name, bool gender, double salary)
        {
            //this关键字:正在实例化的对象
            this.employeeNo = employeeNo;
            this.name = name;
            this.gender = gender;
            this.salary = salary;
        }

        //方法:对象的行为能力
        public void ShowEmployeeMsg()
        {
            Console.WriteLine($"{this.employeeNo}\t{this.name}\t{(this.gender == true ? "男" : "女")}\t{this.salary}");
        }
    }
}

Program.cs

namespace Demo006_类的定义和访问
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //实例化对象
            Employee emp01 = new Employee();

            //访问变量:对象名.变量名
            emp01.employeeNo = "1234";
            emp01.name = "张三";
            emp01.gender = true;
            emp01.salary = 6589;

            Employee emp02 = new Employee();
            emp01.employeeNo = "1235";
            emp01.name = "王小二";
            emp01.gender = false;
            emp01.salary = 7800;

            Employee emp03 = new Employee("1236", "rose", false, 6500);

            //Console.WriteLine($"{emp01.employeeNo}\t{emp01.name}\t{(emp01.gender == true? "男":"女")}\t{emp01.salary}");
            //Console.WriteLine($"{emp02.employeeNo}\t{emp02.name}\t{(emp02.gender == true ? "男" : "女")}\t{emp02.salary}");
            //Console.WriteLine($"{emp03.employeeNo}\t{emp03.name}\t{(emp03.gender == true ? "男" : "女")}\t{emp03.salary}");

            //调用方法:对象名.方法名
            emp01.ShowEmployeeMsg();
            emp02.ShowEmployeeMsg();
            emp03.ShowEmployeeMsg();
        }
    }
}

实操-练习

使用OOP的思想模拟个人手机的信息,包含手机品牌,型号,价格和颜色
开机和关机的功能

Phone.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo007_练习
{
    /**
     * 类名:Phone
     * 功能:模拟手机对象
     * 
     */
    public class Phone
    {
        public string brand;//品牌
        public string type;//型号
        public double price;//价格
        public string color;//颜色

        public Phone()
        {
            Console.WriteLine("正在实例化手机对象...");
        }

        public Phone(string brand, string type, double price, string color)
        {
            this.brand = brand;
            this.type = type;
            this.price = price;
            this.color = color;
        }

        public void OpenPhone()
        {
            Console.WriteLine($"{this.brand}品牌{this.type}型号{this.price}{this.color}的手机正在开机......");
        }

        public void ClosePhone()
        {
            Console.WriteLine($"{this.brand},{this.type},{this.price},{this.color}" + "关机了");
        }
    }
    
    
}

实现结果

实操-方法

Employee.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;

namespace Demo006_类的定义和访问
{
    /**
     * 类名:Employee
     * 功能:模拟所有的职员对象
     * 
     */
    public class Employee //internal 去掉也不会报错 internal只能在这里访问到 public是都可以访问到
    {
        //成员变量(字段):特征
        //string employeeNo;//这是私有的private
        public string employeeNo;
        public string name;
        public bool gender;
        public double salary;

        //构造方法:在实例化对象时调用
        //构造方法名称必须与类名一致
        public Employee() {//默认存在,但是调用了带参构造,在没有定义无参构造的时候,调用无参会报错,建议带上无参构造
            Console.WriteLine("正在实例化员工对象...");
        }

        public Employee(string employeeNo, string name, bool gender, double salary)
        {
            //this关键字:正在实例化的对象
            this.employeeNo = employeeNo;
            this.name = name;
            this.gender = gender;
            this.salary = salary;
        }

        //方法:对象的行为能力
        public void ShowEmployeeMsg()
        {
            Console.WriteLine($"{this.employeeNo}\t{this.name}\t{(this.gender == true ? "男" : "女")}\t{this.salary}");
        }

        //请假
        public void SendMsg(string type,DateTime beginDate,int days,string reason)
        {
            Console.WriteLine($"{this.employeeNo}的员工申请{type}");
            Console.WriteLine($"开始日期:{beginDate}\n" +
                $"请假天数:{days}\n" +
                $"结束日期:{beginDate.AddDays(days)}\n" +
                $"请假事由:{reason}\n");

        }

        //年终奖
        public double GetReward(string level)
        {
            double reward;
            switch (level)
            {
                case "A":
                    reward = this.salary * 6;
                    break;
                case "B":
                    reward = this.salary * 3;
                    break;
                case "C":
                    reward = this.salary * 2;
                    break;
                default:
                    reward = this.salary;
                    break;
            }
            return reward;//返回语句
        }
    }
}

Program.cs

using Demo006_类的定义和访问;

namespace Demo008_方法
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Employee employee1 = new Employee("1234","张三",true,5000);
            employee1.SendMsg("事假", Convert.ToDateTime("2023-11-10 09:00:00"), 2, "家里有事");

            Employee employee2 = new Employee("1235", "李四", true, 6000);
            employee2.SendMsg("婚假", DateTime.Now, 10, "回家结婚");

            Console.Write("请输入考核等级:");
            string inputLevel = Console.ReadLine();
            double money = employee1.GetReward(inputLevel);
            Console.WriteLine($"年终奖金是:{money}");

        }
    }
}

结果

实操:计算器

Calculator.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo009_Calculator
{
    public class Calculator
    {
       

        public int GetResult(int a, int b, string type)
        {
            int c = 0;
            if (type == "+")
            {
                c = a + b;
            }
            else if (type == "-")
            {
                c = a - b;
            }
            else if (type == "*")
            {
                c = a * b;
            }
            else if (type == "/")
            {
                if (b == 0)
                {
                    Console.WriteLine("除数为0无法计算");
                }
                else
                {
                    c = a / b;
                }
            }
            return c;

        }
    }

    
}

Program.cs

namespace Demo009_Calculator
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //使用OOP思想实现两个数的加减乘除运算。
            Calculator calculator = new Calculator();
            Console.Write("请输入第一个数:");
            int a = Convert.ToInt32(Console.ReadLine());
            Console.Write("请输入第二个数:");
            int b = Convert.ToInt32(Console.ReadLine());
            Console.Write("请输入运算符(+/ - / * / /):");
            string type = Console.ReadLine();

            //计算
            int c = calculator.GetResult(a, b, type);
            Console.WriteLine($"{a}{type}{b}={c}");
        }
    }
}

结果

综合实例

*以OOP的思想实现猜拳游戏:
*计算机和用户实现猜拳,可以出剪刀、石头和布。
*剪刀用0表示,石头用1表示,布用2表示。
*程序启动,系统默认可以玩10局,用户玩完一局之后可以按任意键继续,按q退出,退出后需显示实际玩了几局,用户赢了几局,电脑赢了几局,平了几局,如果用户赢的局数大于电脑赢的局数,显示用户大获全胜;如果电脑赢的局数大于用户赢的局数,显示用户败给了电脑;如果赢的局数相同,显示打成了平手。

*每一局游戏的游戏规则:
*先用户出拳,输入0 - 2为后显示用户出的拳是什么,如果用户出的不是0 - 2,提示用户输入错误,重新输入,直到用户输入正确为止,
*再由电脑随机出拳,电脑产生0 - 2之间的随机数,也要显示电脑出的拳是什么,然后判断电脑和用户的输赢关系,并给出适当的提示,比如本局是用户赢了,还是电脑赢了,还是平局

Player.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Channels;
using System.Threading.Tasks;

namespace Demo010_综合案例
{ 
    /// <summary>
    /// 玩家类
    /// </summary>
    public class Player
    {
        public string name;//玩家的昵称

        /// <summary>
        /// 玩家出拳
        /// </summary>
        /// <returns></returns>
        public int Throw()
        {
            while (true)
            {
                try
                {
                    Console.WriteLine($"请{this.name}出拳");
                    int point = Convert.ToInt32(Console.ReadLine());

                    if (point >= 0 && point < 3)
                    {
                        return point;
                    }
                    else
                        Console.WriteLine("输入有误,请输入0-2");
                }catch (Exception ex)
                {
                    Console.WriteLine ("输入有误,请输入数字");
                }
            }
        }
    }
}

Computer.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo010_综合案例
{
    public class Computer
    {

       public int CreateRandomNum()
        {
            Random r = new Random();
            return r.Next(3);
        }

    }
}

GuessGame.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace Demo010_综合案例
{
    /// <summary>
    /// 猜拳游戏类
    /// </summary>
    public class GuessGame
    {
        Player player = new Player();
        Computer computer = new Computer();

        /// <summary>
        /// 输入玩家的昵称
        /// </summary>
        public void InputePlayName()
        {
            Console.Write("请输入昵称:");
            player.name = Console.ReadLine();
        }

        /// <summary>
        /// 欢迎界面/打印界面
        /// </summary>
        public void ShowMsg() {
            Console.WriteLine("*****************************");
            Console.WriteLine("******欢迎来到猜拳游戏*******");
            Console.WriteLine("*****************************");
        }

        /// <summary>
        /// 程序启动
        /// </summary>
        public void Start()
        {
            this.ShowMsg();
            InputePlayName();

            int p1 = player.Throw();
            int p2 = computer.CreateRandomNum();

            string quan1 = ConvertInToString(p1);
            string quan2 = ConvertInToString(p2);
            Console.WriteLine($"{player.name}出的拳是{quan1}");
            Console.WriteLine($"电脑出的拳是{quan2}");
            Judge(p1, p2);

            Console.WriteLine("是否继续下一局,按任意键继续,按q退出");
            string input = Console.ReadLine().ToLower();
            if(input == "q")
            {
                Console.WriteLine("游戏正在退出...");
                Console.ReadKey();//需要按一个键

            }
            Console.ReadKey();
            Console.Clear();

        }

        /// <summary>
        /// 数字的点数转换为字符串的拳
        /// </summary>
        /// <param name="point">点数</param>
        /// <returns>拳</returns>
        public string ConvertInToString(int point)
        {
            if(point == 0) {
                return "剪刀";
            }
            if (point == 1)
            {
                return "石头";
            }
            return "布";
            
        }
        /// <summary>
        /// 判断输赢
        /// </summary>
        /// <param name="playerPoint">玩家的点数</param>
        /// <param name="computerPoint">电脑的点数</param>
        public void Judge(int playerPoint, int computerPoint)
        {
            //0(剪刀) 1(石头) 2(布)

            //用户赢:0(2)=-2,1(0)=1,2(1)=1
            int diff = playerPoint - computerPoint;
            if (diff == 0) {

                Console.WriteLine("平局");
            }else if (diff ==-2 || diff ==1) {
                Console.WriteLine($"用户{player.name}赢了一局");
            }
            else
            {
                Console.WriteLine("电脑赢了一局");
            }
        }
    }
}

Program.cs

namespace Demo010_综合案例
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //以OOP的思想实现猜拳游戏:
            //计算机和用户实现猜拳,可以出剪刀、石头和布。
            //剪刀用0表示,石头用1表示,布用2表示。
            //程序启动,系统默认可以玩10局,用户玩完一局之后可以按任意键继续,按q退出,退出后需显示实际玩了几局,用户赢了几局,电脑赢了几局,平了几局,如果用户赢的局数大于电脑赢的局数,显示用户大获全胜;如果电脑赢的局数大于用户赢的局数,显示用户败给了电脑;如果赢的局数相同,显示打成了平手。

            //每一局游戏的游戏规则:
            //先用户出拳,输入0 - 2为后显示用户出的拳是什么,如果用户出的不是0 - 2,提示用户输入错误,重新输入,直到用户输入正确为止,
            //再由电脑随机出拳,电脑产生0 - 2之间的随机数,也要显示电脑出的拳是什么,然后判断电脑和用户的输赢关系,并给出适当的提示,比如本局是用户赢了,还是电脑赢了,还是平局
            
            GuessGame guessGame = new GuessGame();
            guessGame.Start();
            Player p = new Player(); 
            p.name = "张三";
            
        }
    }
}

结果

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

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

相关文章

基于springboot实现驾校管理系统项目【项目源码】

基于springboot实现驾校管理系统演示 JAVA简介 JavaScript是一种网络脚本语言&#xff0c;广泛运用于web应用开发&#xff0c;可以用来添加网页的格式动态效果&#xff0c;该语言不用进行预编译就直接运行&#xff0c;可以直接嵌入HTML语言中&#xff0c;写成js语言&#xff0…

加班把数据库重构完毕

加班把数据库重构完毕 本文的数据库重构是基于 clickhouse 时序非关系型的数据库。该数据库适合存储股票数据&#xff0c;速度快&#xff0c;一般查询都是 ms 级别&#xff0c;不需要异步查询更新界面 ui。 达到目标效果&#xff1a;数据表随便删除&#xff0c;重新拉数据以及指…

基于C#+WPF编写的调用讯飞星火大模型工具

工具源码&#xff1a;https://github.com/lishuangquan1987/XFYun.SparkChat 工具效果截图&#xff1a; 支持流式输出: 其中ApiKey/ApiSecret/AppId需要自己到讯飞星火大模型官网去注册账号申请&#xff0c;免费的。 申请地址&#xff1a;https://xinghuo.xfyun.cn/ 注册之…

NetSuite 固定资产报表自定义原理及应用

NetSuite固定资产模块一直处于功能迭代更新中&#xff0c;目前23.2的版本能够支持报表的局部自定义&#xff0c;比如增加原值或已折旧期间&#xff0c;甚至固定资产自定义字段等。但是当我们在实际项目中&#xff0c;会遇到一些挑战&#xff0c;例如&#xff1a; 固定资产原值…

Java Web——前端HTML入门

目录 HTML&CSS3&JavaScript简述 1. HTML概念 2. 超文本 3. 标记语言 4. HTML基础结构 5. HTML基础词汇 6. HTML语法规则 7. VS Code 推荐使用的插件 8. 在线帮助文档 HTML&CSS3&JavaScript简述 HTML 主要用于网页主体结构的搭建&#xff0c;像一个毛坯…

【FAQ】Gradle开发问题汇总

1. buildSrc依赖Spring Denpendency时报错 来自预编译脚本的插件请求不能包含版本号。请从有问题的请求中删除该版本&#xff0c;并确保包含所请求插件io.spring.dependency-management的模块是一个实现依赖项 解决方案 https://www.5axxw.com/questions/content/uqw0grhttps:/…

怎么做到高性能网络IO?

为什么要做高性能网络IO。主要是解决c10&#xff0c;c10M问题 最开始的时候我们走的内核协议栈&#xff0c;走内核协议栈其实性能比较低&#xff0c;因为我们之前介绍的时候需要拷贝两次 但是我们采用用户态协议栈可以少拷贝一次&#xff0c;可以大大提高效率&#xff0c; 步骤…

阿里系APP崩了?回应来了!

最近&#xff0c;阿里云遭遇了一场可怕的疑似故障&#xff0c;引起了广泛的关注和热议。各种消息纷传&#xff0c;阿里云盘崩了&#xff0c;淘宝又崩了&#xff0c;闲鱼也崩了&#xff0c;连钉钉也不幸中招。这一系列故障让人不禁发问&#xff1a;阿里系的APP都崩了&#xff0c…

计算机中丢失msvcr120.dll文件怎么修复?找不到msvcr120.dll五种完美修复方案

今天我想和大家分享的是关于“msvcr120.dll丢失的问题的5个解决方法”。在我们日常的工作生活中&#xff0c;或许大家都曾遇到过这样的问题&#xff0c;那么&#xff0c;了解它的解决方法是非常必要的。 首先&#xff0c;让我们来了解一下msvcr120.dll是什么文件。简单来说&am…

零基础算法还原01以及使用python和JS还原C++部分细节

题目一 使用jadx 打开algorithmbase_10.apk JAVA层 使用Frida获取先生成的随机字符串 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 // 定义一个名为hook_js的JavaScript函数 function hook_js(){ // 使用Java.perform()函数来…

Git Commit 之道:规范化 Commit Message 写作指南

1 commit message 规范 commit message格式都包括三部分&#xff1a;Header&#xff0c;Body和Footer <type>(<scope>): <subject><body><footer>Header是必需的&#xff0c;Body和Footer则可以省略 1.1 Header Type&#xff08;必需&#xf…

【Qt之Model/View】编程

Model/View编程介绍 Qt包含一组使用模型/视图架构来管理数据和用户呈现的关系的视图类。此架构引入的功能分离使开发人员可以更灵活地自定义项的呈现方式&#xff0c;并提供标准的模型接口&#xff0c;以允许各种数据源与现有项视图一起使用。在本文档中&#xff0c;我们简要介…

qemu 之 uboot、linux 启动

目录 编译uboot、kernel 编译启动从 uboot 中引导启动 linux注参考 本文主要说明 arm64 在 qemu 上的相关启动。 编译 使用的是 qemu-8.1.1 版本&#xff0c;编译命令如下: ../configure --cc/usr/local/bin/gcc --prefix/home/XXX/qemu_out --enable-virtfs --enable-slir…

网络原理-UDP/TCP详解

一. UDP协议 UDP协议端格式 由上图可以看出&#xff0c;一个UDP报文最大长度就是65535. • 16位长度&#xff0c;表示整个数据报&#xff08;UDP首部UDP数据&#xff09;的最大长度&#xff08;注意&#xff0c;这里的16位UDP长度只是一个标识这个数据报长度的字段&#xff0…

[Android]修改应用包名、名称、版本号、Icon以及环境判断和打包

1.修改包名 在Android Studio中更改项目的包名涉及几个步骤&#xff1a; 打开项目结构: 在Android Studio中&#xff0c;确保您处于Android视图模式&#xff08;在左侧面板顶部有一个下拉菜单可以选择&#xff09;。 重命名包名: 在项目视图中&#xff0c;找到您的包名&…

Linux如何修改主机名(hostname)(亲测可用)

文章目录 背景Linux如何修改主机名&#xff08;hostname&#xff09;方法方法1. 使用 hostnamectl 命令示例 2. 编辑 /etc/hostname 文件注意事项 背景 我创建虚拟机的时候没设置主机名&#xff0c;现在显示localhost&#xff0c;有点尴尬&#x1f605;&#xff1a; 需要重新设…

深入了解JVM和垃圾回收算法

1.什么是JVM&#xff1f; JVM是Java虚拟机&#xff08;Java Virtual Machine&#xff09;的缩写&#xff0c;是Java程序运行的核心组件。JVM是一个虚拟的计算机&#xff0c;它提供了一个独立的运行环境&#xff0c;可以在不同的操作系统上运行Java程序。 2.如何判断可回收垃圾…

单链表按位序与指定结点 删除

按位序删除(带头结点) #define NULL 0 #include<stdlib.h>typedef struct LNode {int data;struct LNode* next; }LNode, * LinkList;//按位序删除&#xff08;带头结点&#xff09; bool ListInsert(LinkList& L, int i, int& e) {if (i < 1)return false;L…

【Java 进阶篇】JQuery DOM操作:轻松驾驭网页内容的魔法

在前端开发的舞台上&#xff0c;DOM&#xff08;文档对象模型&#xff09;是我们与网页内容互动的关键。而JQuery作为一个轻量级的JavaScript库&#xff0c;为我们提供了便捷而强大的DOM操作工具。在本篇博客中&#xff0c;我们将深入探讨JQuery的DOM内容操作&#xff0c;揭开这…

基于Matlab+ AlexNet神经网络的动物识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Matlab和AlexNet神经网络的动物识别系统可以用于自然图像识别等场景&#xff0c;以下是一个基本的介绍设计步骤…