【韩顺平Java笔记】第8章:面向对象编程(中级部分)【338-342】

news2025/1/20 20:01:24

338. 零钱通消费

package com.masterspark.smallchange;


import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class SmallChangeSys {
    public static void main(String[] args) {
        //1. 先完成显示菜单,并可以选择菜单,给出对应的提示
        //定义变量
        boolean loop = true;//是否需要循环显示
        Scanner scanner = new Scanner(System.in);
        String key = "";//输入的选择
        //完成零钱通明细
        //思路:(1)收益入账和消费保存到数组
        //(2)使用对象完成
        //(3)简单的话使用String拼接
        //使用第三个
        String details = "-------零钱通明细-------";
        //3. 完成收益入账
        //思路:定义新的变量,完成功能驱动程序员增加新的变化和代码
        double money = 0.0;
        double balance = 0.0;//🈷
        Date date = null;//data是java.util.date类型
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//可以用于日期格式化的对象

        //4. 消费
        //定义新变量,保存消费的原因
        String note = "";


        do{
            System.out.println("=========零钱通菜单=========");
            System.out.println("\t\t\t1 零钱通明细");
            System.out.println("\t\t\t2 收益入账");
            System.out.println("\t\t\t3 消费情况");
            System.out.println("\t\t\t4 退出系统");
            System.out.print("请选择(1-4)");
            key = scanner.next();
            //使用siwtch分支结构
            switch(key){
                case "1":
                    System.out.println(details);
                    break;
                case "2":
                    System.out.print("收1益入账金额:");
                    money = scanner.nextDouble();
                    //money的值的范围应该校验一下
                    //一会再完善
                    balance += money;
                    //拼接收益入账信息到details
                    date  = new Date();//获取当前的日期
                    details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" +balance;
                    System.out.println(details);
                    break;
                case "3":
                    System.out.print("消费金额:");
                    money = scanner.nextDouble();
                    System.out.print("消费说明:");
                    note = scanner.next();
                    balance -= money;
                    //打印消费信息
                    date  = new Date();//获取当前的日期
                    details += "\n"+ note +"\t-" + money + "\t" + sdf.format(date) + "\t" +balance;
                    System.out.println(details);
                    //范围校验
                    break;
                case "4":
                    System.out.println("------退出了零钱通-------");
                    loop=false;//退出循环
                    break;
                default:
                    System.out.println("菜单选择有误,请重新选择");
            }
        }while(loop);
    }
}

运行结果:
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)2
收1益入账金额:114514
-------零钱通明细-------
收益入账 +114514.0 2025-01-19 08:40 114514.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)3
消费金额:1919
消费说明:嗯嘛啊
-------零钱通明细-------
收益入账 +114514.0 2025-01-19 08:40 114514.0
嗯嘛啊 -1919.0 2025-01-19 08:40 112595.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)1
-------零钱通明细-------
收益入账 +114514.0 2025-01-19 08:40 114514.0
嗯嘛啊 -1919.0 2025-01-19 08:40 112595.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)4
------退出了零钱通-------

进程已结束,退出代码为 0

339. 零钱通退出确认

  • 用户输入4退出时,给出提示是否退出y/n,否则继续输入,直到输入y或者n
package com.masterspark.smallchange;


import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class SmallChangeSys {
    public static void main(String[] args) {
        //1. 先完成显示菜单,并可以选择菜单,给出对应的提示
        //定义变量
        boolean loop = true;//是否需要循环显示
        Scanner scanner = new Scanner(System.in);
        String key = "";//输入的选择
        //完成零钱通明细
        //思路:(1)收益入账和消费保存到数组
        //(2)使用对象完成
        //(3)简单的话使用String拼接
        //使用第三个
        String details = "-------零钱通明细-------";
        //3. 完成收益入账
        //思路:定义新的变量,完成功能驱动程序员增加新的变化和代码
        double money = 0.0;
        double balance = 0.0;//🈷
        Date date = null;//data是java.util.date类型
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//可以用于日期格式化的对象

        //4. 消费
        //定义新变量,保存消费的原因
        String note = "";


        do{
            System.out.println("=========零钱通菜单=========");
            System.out.println("\t\t\t1 零钱通明细");
            System.out.println("\t\t\t2 收益入账");
            System.out.println("\t\t\t3 消费情况");
            System.out.println("\t\t\t4 退出系统");
            System.out.print("请选择(1-4)");
            key = scanner.next();
            //使用siwtch分支结构
            switch(key){
                case "1":
                    System.out.println(details);
                    break;
                case "2":
                    System.out.print("收1益入账金额:");
                    money = scanner.nextDouble();
                    //money的值的范围应该校验一下
                    //一会再完善
                    balance += money;
                    //拼接收益入账信息到details
                    date  = new Date();//获取当前的日期
                    details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" +balance;
                    System.out.println(details);
                    break;
                case "3":
                    System.out.print("消费金额:");
                    money = scanner.nextDouble();
                    System.out.print("消费说明:");
                    note = scanner.next();
                    balance -= money;
                    //打印消费信息
                    date  = new Date();//获取当前的日期
                    details += "\n"+ note +"\t-" + money + "\t" + sdf.format(date) + "\t" +balance;
                    System.out.println(details);
                    //范围校验
                    break;
                case "4":
                    //用户输入4退出时,给出提示是否退出y/n,否则继续输入,直到输入y或者n
                    //思路:
                    //(1)定义一个变量(choice)
                    //(2)循环逻辑(while + break)来处理接收到的输入是y或者n
                    String choice = "";
                    //一段代码完成一个功能(不在while循环中写退出逻辑)
                    //尽量不要混在一起
                    while(true){
                        System.out.println("你确定要退出吗?y/n");
                        choice = scanner.next();
                        if("y".equals(choice) || "n".equals(choice)){
                            break;
                        }
                    }
                    //(3)用户退出while后再判断输入的是y还是n,就可以决定是否退出
                    if("y".equals(choice)){
                        System.out.println("------退出了零钱通-------");
                        loop=false;//退出循环
                    }
                    break;
                default:
                    System.out.println("菜单选择有误,请重新选择");
            }
        }while(loop);
    }
}

运行结果:
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)4
你确定要退出吗?y/n
n
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)4
你确定要退出吗?y/n
y
------退出了零钱通-------

进程已结束,退出代码为 0

=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)4
你确定要退出吗?y/n
p
你确定要退出吗?y/n
s
你确定要退出吗?y/n
y
------退出了零钱通-------

340. 零钱通金额校验

  • 在收益入账和消费时,判断金额是否合理,并给出相应的提示
package com.masterspark.smallchange;


import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class SmallChangeSys {
    public static void main(String[] args) {
        //1. 先完成显示菜单,并可以选择菜单,给出对应的提示
        //定义变量
        boolean loop = true;//是否需要循环显示
        Scanner scanner = new Scanner(System.in);
        String key = "";//输入的选择
        //完成零钱通明细
        //思路:(1)收益入账和消费保存到数组
        //(2)使用对象完成
        //(3)简单的话使用String拼接
        //使用第三个
        String details = "-------零钱通明细-------";
        //3. 完成收益入账
        //思路:定义新的变量,完成功能驱动程序员增加新的变化和代码
        double money = 0.0;
        double balance = 0.0;//🈷
        Date date = null;//data是java.util.date类型
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//可以用于日期格式化的对象

        //4. 消费
        //定义新变量,保存消费的原因
        String note = "";


        do{
            System.out.println("=========零钱通菜单=========");
            System.out.println("\t\t\t1 零钱通明细");
            System.out.println("\t\t\t2 收益入账");
            System.out.println("\t\t\t3 消费情况");
            System.out.println("\t\t\t4 退出系统");
            System.out.print("请选择(1-4)");
            key = scanner.next();
            //使用siwtch分支结构
            switch(key){
                case "1":
                    System.out.println(details);
                    break;
                case "2":
                    System.out.print("收益入账金额:");
                    money = scanner.nextDouble();
                    //money的值的范围校验
                    //思路:把不正确的情况判断出来退出即可
                    if(money <= 0){
                        System.out.println("收益入账金额应大于0");
                        break;
                    }
                    //如果反过来找出正确的条件,要写if else,两个分支阅读起来不轻松
                    //如果还需要写正确条件,里面就要嵌套if else
                    balance += money;
                    //拼接收益入账信息到details
                    date  = new Date();//获取当前的日期
                    details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" +balance;
                    System.out.println(details);
                    break;
                case "3":
                    System.out.print("消费金额:");
                    money = scanner.nextDouble();
                    if(money <= 0 || money > balance){
                        System.out.println("消费金额应该在0-" + balance);
                        break;
                    }
                    System.out.print("消费说明:");
                    note = scanner.next();
                    balance -= money;
                    //打印消费信息
                    date  = new Date();//获取当前的日期
                    details += "\n"+ note +"\t-" + money + "\t" + sdf.format(date) + "\t" +balance;
                    System.out.println(details);
                    //范围校验
                    break;
                case "4":
                    //用户输入4退出时,给出提示是否退出y/n,否则继续输入,直到输入y或者n
                    //思路:
                    //(1)定义一个变量(choice)
                    //(2)循环逻辑(while + break)来处理接收到的输入是y或者n
                    String choice = "";
                    //一段代码完成一个功能(不在while循环中写退出逻辑)
                    //尽量不要混在一起
                    while(true){
                        System.out.println("你确定要退出吗?y/n");
                        choice = scanner.next();
                        if("y".equals(choice) || "n".equals(choice)){
                            break;
                        }
                    }
                    //(3)用户退出while后再判断输入的是y还是n,就可以决定是否退出
                    if("y".equals(choice)){
                        System.out.println("------退出了零钱通-------");
                        loop=false;//退出循环
                    }
                    break;
                default:
                    System.out.println("菜单选择有误,请重新选择");
            }
        }while(loop);
    }
}

运行结果:
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)2
收益入账金额:-100
收益入账金额应大于0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)2
收益入账金额:114514
-------零钱通明细-------
收益入账 +114514.0 2025-01-19 09:28 114514.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)3
消费金额:-100
消费金额应该在0-114514.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)3
消费金额:19191919
消费金额应该在0-114514.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)3
消费金额:10
消费说明:11
-------零钱通明细-------
收益入账 +114514.0 2025-01-19 09:28 114514.0
11 -10.0 2025-01-19 09:28 114504.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)4
你确定要退出吗?y/n
Y
你确定要退出吗?y/n
y
------退出了零钱通-------

341. 零钱通OOP版

  • 将面向过程的代码修改成面向对象的,编写SmallChangeSysOOP.java类,并使用SmallChangeSysAPP.java完成测试。

    SmallChangeSysOOP.java:
package com.masterspark.smallchange.oop;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/*
 * 该类是完成零钱通的各个功能
 * 使用OOP(面向对象编程)
 * 将各个功能对应一个方法
 */
public class SmallChangeSysOOP {
    //属性
    boolean loop = true;//是否需要循环显示
    Scanner scanner = new Scanner(System.in);
    String key = "";//输入的选择
    //完成零钱通明细
    //思路:(1)收益入账和消费保存到数组
    //(2)使用对象完成
    //(3)简单的话使用String拼接
    //使用第三个
    String details = "-------零钱通明细-------";
    //3. 完成收益入账
    //思路:定义新的变量,完成功能驱动程序员增加新的变化和代码
    double money = 0.0;
    double balance = 0.0;//🈷
    Date date = null;//data是java.util.date类型
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//可以用于日期格式化的对象
    //4. 消费
    //定义新变量,保存消费的原因
    String note = "";
    //显示主菜单
    public void mainMenu(){
        do{
            System.out.println("=========零钱通菜单=========");
            System.out.println("\t\t\t1 零钱通明细");
            System.out.println("\t\t\t2 收益入账");
            System.out.println("\t\t\t3 消费情况");
            System.out.println("\t\t\t4 退出系统");
            System.out.print("请选择(1-4)");
            key = scanner.next();
            //使用siwtch分支结构
            switch(key){
                case "1":
                    this.detail();
                    break;
                case "2":
                    this.income();
                    break;
                case "3":
                    this.pay();
                    break;
                case "4":
                    //用户输入4退出时,给出提示是否退出y/n,否则继续输入,直到输入y或者n
                    //思路:
                    //(1)定义一个变量(choice)
                    //(2)循环逻辑(while + break)来处理接收到的输入是y或者n
                    String choice = "";
                    //一段代码完成一个功能(不在while循环中写退出逻辑)
                    //尽量不要混在一起
                    while(true){
                        System.out.println("你确定要退出吗?y/n");
                        choice = scanner.next();
                        if("y".equals(choice) || "n".equals(choice)){
                            break;
                        }
                    }
                    //(3)用户退出while后再判断输入的是y还是n,就可以决定是否退出
                    if("y".equals(choice)){
                        System.out.println("------退出了零钱通-------");
                        loop=false;//退出循环
                    }
                    break;
                default:
                    System.out.println("菜单选择有误,请重新选择");
            }
        }while(loop);
    }
    //完成零钱通明细
    public void detail(){
        System.out.println(details);
    }
    //完成收益入账
    public void income(){
        System.out.print("收益入账金额:");
        money = scanner.nextDouble();
        //money的值的范围校验
        //思路:把不正确的情况判断出来退出即可
        if(money <= 0){
            System.out.println("收益入账金额应大于0");
            return;
        }
        //如果反过来找出正确的条件,要写if else,两个分支阅读起来不轻松
        //如果还需要写正确条件,里面就要嵌套if else
        balance += money;
        //拼接收益入账信息到details
        date  = new Date();//获取当前的日期
        details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" +balance;
        System.out.println(details);
    }
    //消费
    public void pay(){
        System.out.print("消费金额:");
        money = scanner.nextDouble();
        if(money <= 0 || money > balance){
            System.out.println("消费金额应该在0-" + balance);
            return;
        }
        System.out.print("消费说明:");
        note = scanner.next();
        balance -= money;
        //打印消费信息
        date  = new Date();//获取当前的日期
        details += "\n"+ note +"\t-" + money + "\t" + sdf.format(date) + "\t" +balance;
        System.out.println(details);
    }
    //退出
    public void exit(){
        //用户输入4退出时,给出提示是否退出y/n,否则继续输入,直到输入y或者n
        //思路:
        //(1)定义一个变量(choice)
        //(2)循环逻辑(while + break)来处理接收到的输入是y或者n
        String choice = "";
        //一段代码完成一个功能(不在while循环中写退出逻辑)
        //尽量不要混在一起
        while(true){
            System.out.println("你确定要退出吗?y/n");
            choice = scanner.next();
            if("y".equals(choice) || "n".equals(choice)){
                break;
            }
        }
        //(3)用户退出while后再判断输入的是y还是n,就可以决定是否退出
        if("y".equals(choice)){
            System.out.println("------退出了零钱通-------");
            loop=false;//退出循环
        }
    }


}

SmallChangeSysAPP.java:

package com.masterspark.smallchange.oop;

public class SmallChangeSysAPP {
    public static void main(String[] args) {
        new SmallChangeSysOOP().mainMenu();
    }
}

运行结果:
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)2
收益入账金额:100
-------零钱通明细-------
收益入账 +100.0 2025-01-19 10:01 100.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)1
-------零钱通明细-------
收益入账 +100.0 2025-01-19 10:01 100.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)3
消费金额:10
消费说明:吃饭
-------零钱通明细-------
收益入账 +100.0 2025-01-19 10:01 100.0
吃饭 -10.0 2025-01-19 10:01 90.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)1
-------零钱通明细-------
收益入账 +100.0 2025-01-19 10:01 100.0
吃饭 -10.0 2025-01-19 10:01 90.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)2
收益入账金额:-10
收益入账金额应大于0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)3
消费金额:-100
消费金额应该在0-90.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)3
消费金额:1000
消费金额应该在0-90.0
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)4
你确定要退出吗?y/n
s
你确定要退出吗?y/n
n
=========零钱通菜单=========
1 零钱通明细
2 收益入账
3 消费情况
4 退出系统
请选择(1-4)4
你确定要退出吗?y/n
y
------退出了零钱通-------

342. 本章作业01

定义一个Person类(name, age, job),初始化Person对象数组,有3个person对象,并按照age从大到小进行排序,使用冒泡排序


import java.util.Arrays;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
    public static void main(String[] args) {
        //debug动态绑定机制
        Person[] people = new Person[3];
        people[0] = new Person("田所浩二", 24, "学生");
        people[1] = new Person("德川", 26, "美食家");
        people[2] = new Person("我修院", 25, "美食家");
        //输出当前对象数组
        for(int i = 0; i < people.length; i++){
            System.out.println(people[i]);
        }
        //使用冒泡排序
        Person tmp = null;//交换用的临时变量
        for(int i = 0; i < people.length; i++){
            for(int j = 0;  j < people.length - i -1 ; j++){//从大到小排
                //j每次从头遍历到i的前一个位置
                //如果前面的人年龄小于后面的就交换
                if(people[i].getAge() < people[j].getAge()){
                    tmp = people[i];
                    people[i] = people[i+1];
                    people[i+1] = tmp;
                }
            }
        }
        //输出当前对象数组
        for(int i = 0; i < people.length; i++){
            System.out.println(people[i]);
        }
    }
}
class Person{
    private String name;
    private int age;
    private String job;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public Person(String name, int age, String job) {
        this.name = name;
        this.age = age;
        this.job = job;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", job='" + job + '\'' +
                '}';
    }
}

运行结果:
Person{name=‘田所浩二’, age=24, job=‘学生’}
Person{name=‘德川’, age=26, job=‘美食家’}
Person{name=‘我修院’, age=25, job=‘美食家’}
Person{name=‘德川’, age=26, job=‘美食家’}
Person{name=‘我修院’, age=25, job=‘美食家’}
Person{name=‘田所浩二’, age=24, job=‘学生’}

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

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

相关文章

Mac M1处理器uiautomatorviewer 使用

问题 Android自带工具uiautomatorviewer在mac电脑上运行报错 解决 有位大神解决了这个问题 项目网址&#xff1a;https://github.com/TarCV/uiautomatorviewer-gradle ./gradlew installDist JAVA_OPTS-XstartOnFirstThread ./build/install/uiautomatorviewer-gradle/bin…

【漫话机器学习系列】054.极值(Extrema)

极值&#xff08;Extrema&#xff09; 定义 极值是数学分析和优化问题中的一个核心概念&#xff0c;指函数在某个定义域内取得的最大值或最小值。根据极值的性质&#xff0c;可以将其分为两类&#xff1a; 局部极值&#xff08;Local Extrema&#xff09;&#xff1a;函数在…

QT开发技术 【基于TinyXml2的对类进行序列化和反序列化】一

一、对TinyXml2 进行封装 使用宏 实现序列化和反序列化 思路&#xff1a; 利用宏增加一个类函数&#xff0c;使用序列化器调用函数进行序列化 封装宏示例 #define XML_SERIALIZER_BEGIN(ClassName) \ public: \virtual void ToXml(XMLElement* parentElem, bool bSerialize …

代码随想录训练营第五十一天| 99.岛屿数量 深搜 岛屿数量 广搜 100.岛屿的最大面积

99.岛屿数量 深搜 题目链接&#xff1a;99. 岛屿数量 讲解链接&#xff1a;代码随想录 就是dfs模版题目 在dfs里可以先定义方向数组移动 再遍历分别向四个方向移动 同时记得更新当前nextx nexty 再判断是否越界 再执行判断条件 当前位置未走过 visited[i][j] false 一开始jav…

【HarmonyOS之旅】基于ArkTS开发(二) -> UI开发之常见布局

目录 1 -> 自适应布局 1.1 -> 线性布局 1.1.1 -> 线性布局的排列 1.1.2 -> 自适应拉伸 1.1.3 -> 自适应缩放 1.1.4 -> 定位能力 1.1.5 -> 自适应延伸 1.2 -> 层叠布局 1.2.1 -> 对齐方式 1.2.2 -> Z序控制 1.3 -> 弹性布局 1.3.1…

docker 部署 MantisBT

1. docker 安装MantisBT docker pull vimagick/mantisbt:latest 2.先运行实例&#xff0c;复制配置文件 docker run -p 8084:80 --name mantisbt -d vimagick/mantisbt:latest 3. 复制所需要配置文件到本地路径 docker cp mantisbt:/var/www/html/config/config_inc.php.…

【Linux系统编程】—— 深度解析进程等待与终止:系统高效运行的关键

文章目录 进程创建再次认识fork()函数fork()函数返回值 写时拷贝fork常规⽤法以及调用失败的原因 进程终⽌进程终止对应的三种情况进程常⻅退出⽅法_exit函数exit函数return退出 进程等待进程等待的必要性进程等待的⽅法 进程创建 再次认识fork()函数 fork函数初识&#xff1…

学习MyBatis的调优方案

MyBatis是一款优秀的Java持久层框架&#xff0c;它简化了数据库操作&#xff0c;并提供了灵活的SQL查询机制。然而&#xff0c;在实际应用中&#xff0c;我们可能会遇到一些性能问题&#xff0c;这时需要对MyBatis进行合理的调优。本文将详细探讨MyBatis的调优方案&#xff0c;…

python_在钉钉群@人员发送消息

python_在钉钉群人员发送消息 1、第一种 企业内部机器人群聊实现人接入指南&#xff0c;适用于群机器人接收消息&#xff0c;处理完一系列的动作之后&#xff0c;将消息返回给发消息的人员&#xff0c;同时该人员。 需要在企微后台新建一个自建应用&#xff0c;在自建应用里…

【Linux】进程优先级与进程切换

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;Linux &#x1f339;往期回顾&#x1f339;&#xff1a;【Linux】进程状态 &#x1f516;流水不争&#xff0c;争的是滔滔不 一、进程优先级是什么二、查看系统进程三…

imbinarize函数用法详解与示例

一、函数概述 众所周知&#xff0c;im2bw函数可以将灰度图像转换为二值图像。但MATLAB中还有一个imbinarize函数可以将灰度图像转换为二值图像。imbinarize函数是MATLAB图像处理工具箱中用于将灰度图像或体数据二值化的工具。它可以通过全局或自适应阈值方法将灰度图像转换为二…

电商项目高级篇08-springCache

电商项目高级篇08-springCache 1、整合springCache2、Cacheable细节设置 1、整合springCache 1、引入依赖 <!--引入springCache--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifa…

macOS 安装JDK17

文章目录 前言介绍新特性下载安装1.下载完成后打开downloads 双击进行安装2.配置环境变量3.测试快速切换JDK 小结 前言 近期找开源软件&#xff0c;发现很多都已经使用JDK17springboot3 了&#xff0c;之前的JDK8已经被替换下场&#xff0c;所以今天就在本机安装了JDK17&#…

ASP.NET Core - 配置系统之配置提供程序

ASP.NET Core - 配置系统之配置提供程序 3. 配置提供程序3.1 文件配置提供程序3.1.1 JSON配置提供程序3.1.2 XML配置提供程序3.1.3 INI配置提供程序 3.2 环境变量配置提供程序3.3 命令行配置提供程序3.4 内存配置提供程序3.5 配置加载顺序 3.6 默认配置来源 3. 配置提供程序 前…

[手机Linux] ubuntu 错误解决

Ubuntu: 1,ttyname failed: Inappropriate ioctl for device 将 /root/.profile 文件中的 mesg n || true 改为如下内容。 vim /root/.profile tty -s && mesg n || true 2,Errors were encountered while processing: XXX XXXX sudo apt-get --purge remove xxx…

【2024年华为OD机试】 (B卷,100分)- 敏感字段加密(Java JS PythonC/C++)

一、问题描述 题目描述 给定一个由多个命令字组成的命令字符串&#xff1a; 字符串长度小于等于 127 字节&#xff0c;只包含大小写字母、数字、下划线和偶数个双引号&#xff1b;命令字之间以一个或多个下划线 _ 进行分割&#xff1b;可以通过两个双引号 "" 来标…

使用 ChatGPT 生成和改进你的论文

文章目录 零、前言一、操作引导二、 生成段落或文章片段三、重写段落四、扩展内容五、生成大纲内容六、提高清晰度和精准度七、解决特定的写作挑战八、感受 零、前言 我是虚竹哥&#xff0c;目标是带十万人玩转ChatGPT。 ChatGPT 是一个非常有用的工具&#xff0c;可以帮助你…

【C语言系列】深入理解指针(1)

前言 总所周知&#xff0c;C语言中指针部分是非常重要的&#xff0c;这一件我们会介绍指针相关的内容&#xff0c;当然后续我还会出大概4篇与指针相关的文章&#xff0c;来深入的讲解C语言指针部分&#xff0c;希望能够帮助到指针部分薄弱或者根本不会的程序员们&#xff0c;后…

深度学习 Pytorch 基本优化思想与最小二乘法

在正式开始进行神经网络建模之前&#xff0c;我们还需要掌握pytorch中最核心的基础数学工具——autograd(自动微分)模块。虽然对于任何一个通用的深度学习框架都会提供许多自动优化的算法和现成的loss function&#xff0c;但如果想更深入理解神经网络&#xff0c;对深度学习的…

如何在vue中渲染markdown内容?

文章目录 引言什么是 markdown-it&#xff1f;安装 markdown-it基本用法样式失效&#xff1f;解决方法 高级配置语法高亮 效果展示 引言 在现代 Web 开发中&#xff0c;Markdown 作为一种轻量级的标记语言&#xff0c;广泛用于文档编写、内容管理以及富文本编辑器中。markdown…