当前位置: 首页 > news >正文

1.JAVA小项目(零钱通)

一、说明

博客内容:B站韩顺平老师的视频,以及代码的整理。此项目分为两个版本:

  1. 面向过程思路实现
  2. 面向对象思路实现
    韩老师视频地址:【【零基础 快速学Java】韩顺平 零基础30天学会Java】 https://www.bilibili.com/video/BV1fh411y7R8/?p=342&share_source=copy_web&vd_source=656bca56998f14127313f0283f22ac0a
    【注意】:仅限学习,如有侵权,请联系本人删除。

项目实现–面向过程思路

先贴代码,项目的完整代码如下:

package smallchange;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;/*** @author cdj* @Version1.0*/
public class SmallChangeSys {// 1. 先完成显示菜单,并可以选择菜单,给出对应提示// 2. 完成零钱通明细// 3. 完成收益入账// 4. 完成消费// 5. 退出// 6. 用户输入4退出时,给出提示”你要退出吗? y/n“,必须要正确的输入y/n,否则循环输入指令,直到输入y 或者 n// 7. 在收益入账和消费时,判断金额是否合理,并给出相应的提示public static void main(String[] args) {// 定义相关的变量boolean loop = true;Scanner sc = new Scanner(System.in);String key = "";// 2.完成零钱通明细// (1) 可以把收益入账和消费,保存到数组 (2)可以使用对象 (3)简单的会可以使用String拼接String detils = "------------------零钱通明细--------------------";// 3. 完成收益入账,完成功能驱动程序员增加新的变化和代码// 定义新的变量double money = 0;double balance = 0;Date date = null;   // data 是 java.util.Data类型,表示日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");    // 可以用于日期格式化的// 4. 消费// 定义新的变量,保存消费的原因String note = null;do{System.out.println("\n===================零钱通菜单================");System.out.println("\t\t\t\t\t1 零钱通明细");System.out.println("\t\t\t\t\t2 收益入账");System.out.println("\t\t\t\t\t3 消费");System.out.println("\t\t\t\t\t4 退             出");System.out.print("请选择(1-4): ");key = sc.nextLine();// 使用 switch 分支控制switch (key){case "1":System.out.println(detils);break;case "2":System.out.print("收益入账金额:");money = sc.nextDouble();// 清空输入缓冲区sc.nextLine();// money 的值应该校验// 找出不正确的金额条件,然后给出提示,就直接breakif(money <= 0){System.out.println("收益入账金额需要大于0");break;}balance += money;// 获取当前日期date = new Date();// 拼接收益入账信息到detailsdetils += "\n收益入账\t" + money + "\t" + sdf.format(date) + "\t" + balance;break;case "3":System.out.print("收益消费金额:");money = sc.nextDouble();sc.nextLine();  // 清空输入缓冲区// money 的值应该校验 TODO// 找出金额不正确的情况if(money <= 0 || money > balance){System.out.println("你的消费金额应该在 0-" + balance);break;}System.out.print("消费说明: ");note = sc.next();sc.nextLine();balance -= money;// 拼接消费信息到detailsdate = new Date(); // 获取到当前时间detils += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;break;case "4":// 用户输入4退出时,给出提示”你要退出吗? y/n“,必须要正确的输入y/n// (1) 定义一个变量 choice,接收用户的输入// (2) 使用 while + break,来处理接收的输入时 y 或者 n// (3) 退出while后,再判断choice是y还是n,就可以决定是否退出。// (4) 建议一段代码完成一个小功能,尽量不要混在一起String choice = "";while (true) {  // 要求用户必须输入 y/n,否则就一直循环System.out.println("你确定要退出吗? y/n");choice = sc.nextLine();if ("y".equals(choice) || "n".equals(choice)) {break;}}// 当用户退出后,再进行判断if (choice.equals("y")) {loop = false;}break;default:System.out.println("选择有误,请重新选择");}}while(loop);System.out.println("------------------退出了零钱通项目------------------");}
}

代码思路

先看一下项目需求(资料来源:【【零基础 快速学Java】韩顺平 零基础30天学会Java】 https://www.bilibili.com/video/BV1fh411y7R8/?p=335&share_source=copy_web&vd_source=656bca56998f14127313f0283f22ac0a)
在这里插入图片描述
首先先理一下需要完成的几个功能:

  1. 界面显示
  2. 零钱通明细
  3. 收益入账
  4. 消费
  5. 退出

将这几个功能分别完成(一个代码块只实现一个功能)

1.界面显示

在界面显示的时候,我们需要完成的任务有以下两个:

  • (1) 完成显示菜单
  • (2) 可以选择菜单,并给出对应提示
    关于任务(1),我们可以考虑直接使用Println语句将菜单打印出来:
 System.out.println("\n===================零钱通菜单================");System.out.println("\t\t\t\t\t1 零钱通明细");System.out.println("\t\t\t\t\t2 收益入账");System.out.println("\t\t\t\t\t3 消费");System.out.println("\t\t\t\t\t4 退             出");

实现了任务(1)之后,我们需要考虑的就是如何使得我们可以根据提示进行选择。那我们就需要去思考,哪个语句可以提供选择功能,很自然的想到了switch语句。先看一下switch语句的语法:

switch (expression) {case value1:// 当 expression 的值等于 value1 时执行这里的代码// 可以有多行代码break;case value2:// 当 expression 的值等于 value2 时执行这里的代码// 可以有多行代码break;// 可以有更多的 case 语句default:// 当 expression 的值与所有 case 不匹配时执行这里的代码
}

switch语法可以得出:我们需要定义一个expression让我们去选择哪条case语句。根据菜单给的提示,我们选择定义一个String类型的变量,去存储我们的选择。由于我们需要去输入我们的选择,那我们就需要一个输入的功能Scanner
由以上分析,我们就可以搭建一个程序框架:

public class SmallChangeSys {// 1. 先完成显示菜单,并可以选择菜单,给出对应提示public static void main(String[] args) {// 定义相关的变量Scanner sc = new Scanner(System.in);String key = "";System.out.println("\n===================零钱通菜单================");System.out.println("\t\t\t\t\t1 零钱通明细");System.out.println("\t\t\t\t\t2 收益入账");System.out.println("\t\t\t\t\t3 消费");System.out.println("\t\t\t\t\t4 退             出");System.out.print("请选择(1-4): ");key = sc.nextLine();// 使用 switch 分支控制switch (key){case "1":// TODObreak;case "2":// TODObreak;case "3":// TODObreak;case "4":// TODObreak;default:// TODObreak;}
}

上述代码能让我们完成任务(1)和任务(2),但是它只能执行一次,选择一个功能。我们需要多次执行,而且考虑到不管什么情况,都会执行一次。那就想到do while。先看一下do while的语法:

do {// 循环体代码块
} while (condition);

while 关键字后面跟着一个循环条件。只要循环条件为 true,循环将继续执行;否则循环终止。为了使我们退出循环的时候方便,这里我们选择定义一个bool类型的变量loop。当我们需要退出时,只需要将它置为false即可。将上述代码修改:

public class SmallChangeSys {// 1. 先完成显示菜单,并可以选择菜单,给出对应提示public static void main(String[] args) {// 定义相关的变量Scanner sc = new Scanner(System.in);String key = "";boolean loop = true;do {System.out.println("\n===============零钱通菜单==============");System.out.println("\t\t\t\t\t1 零钱通明细");System.out.println("\t\t\t\t\t2 收益入账");System.out.println("\t\t\t\t\t3 消费");System.out.println("\t\t\t\t\t4 退出");System.out.print("请选择(1-4): ");key = sc.nextLine();// 使用 switch 分支控制switch (key){case "1":// 零钱通明细// TODObreak;case "2":// 收益入账// TODObreak;case "3":// 消费// TODObreak;case "4":// 退出// TODObreak;default:// TODObreak;}while (loop)   }
}

这样,整个程序的框架就已经搭建好了。下面使用代码块分别实现各个功能。

2. 零钱通明细

我们需要实现下图功能,那我们就需要一个变量进行显示。实现的方式有三种

  1. 把收入入账和消费,保存到数组(数组扩容比较麻烦)
  2. 使用对象
  3. 使用String拼接
    此处考虑使用String进行拼接,所以需要定义一个String类型的变量:
String detils = "------------------零钱通明细--------------------";

在定义完变量后,我们需要把它放入菜单的选择中(case1),当我们需要查看明细时,只需要将这个字符串打印出来即可(在后续操作过程中有可能会修改字符串)。

case "1":System.out.println(detils);break;

在这里插入图片描述

3.收益入账

首先需要一个变量用来存储收益,所以先定义一个存储收益的变量money:

double money = 0;

我们的代码中已经有一个sc用于交互,所以money的值可以直接由我们输入。但是在编写代码过程中我发现如果没有清除缓存的话,代码会直接跳转到switch中的defalut语句,所以在输入money加入了一个清理缓存的语句:

money = sc.nextDouble();
sc.nextLine();  // 清空输入缓冲区

当我们有收益时,我们的余额也会发生改变,所以此处我们添加一个存储余额的变量balacnce:

double balance = 0;

有了balance用来存储余额,在实现收益功能的代码块中,自然balance += money。再看一下打印的信息里面还有一个data信息,所以需要添加时间相关的信息:

Date date = null;   // data 是 java.util.Data类型,表示日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");    // 可以用于日期格式化的
date = new Date();

因为我们用的时String进行的拼接,那么现在要将新增的记录拼接到我们的details中:

// 拼接收益入账信息到details
detils += "\n收益入账\t" + money + "\t" + sdf.format(date) + "\t" + balance;

注意看拼接的过程中是先拼接了一个\n,所以无论最终我们的details有多长,它都只是一个变量。
最终收益入账功能实现的代码如下:

case "2":System.out.print("收益入账金额:");money = sc.nextDouble();// 清空输入缓冲区sc.nextLine();// money 的值应该校验// 找出不正确的金额条件,然后给出提示,就直接breakif(money <= 0){System.out.println("收益入账金额需要大于0");break;}balance += money;// 获取当前日期date = new Date();// 拼接收益入账信息到detailsdetils += "\n收益入账\t" + money + "\t" + sdf.format(date) + "\t" + balance;break;

除去上述将的内容,在其中还添加了检验money值得功能。
其它功能实现方式和上述方式大同小异,此处就不再进行书写。

总结

在项目实现过程中,首先是分析项目的需求,然后根据项目的需求将整个代码的框架搭建出来。在搭建过程中,遵循每个代码块实现一个功能,并且在需要什么变量的时候就定义什么变量(根据实际需求去定义变量)。在听课过程中,韩老师给的两个建议是十分重要的:

  1. 一段代码完成一个小功能,不要混在一起。
  2. 找出不正确的条件用来判断,而不是找正确的条件。

项目实现–面向对象思路

先贴代码,分为两个文件

  1. SmallChangeSysOOP:实现各种功能
  2. SmallChangeSysAPP:调用
    SmallChangeSysOPP代码如下:
package smallchange.oop;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;/*** @author cdj* @Version1.0* 完成零钱通的各个功能* 将各个功能对应一个方法*/
public class SmallChangeSysOOP {// 属性boolean loop = true;Scanner sc = new Scanner(System.in);String key = "";String detils = "------------------零钱通明细---------------";double money = 0;double balance = 0;Date date = null;   // data 是 java.util.Data类型,表示日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");    // 可以用于日期格式化的String note = null;// 显示菜单,并可以选择public void mainMenu() {do{System.out.println("\n===================零钱通菜单================");System.out.println("\t\t\t\t\t1 零钱通明细");System.out.println("\t\t\t\t\t2 收益入账");System.out.println("\t\t\t\t\t3 消费");System.out.println("\t\t\t\t\t4 退             出");System.out.print("请选择(1-4): ");key = sc.nextLine();// 使用 switch 分支控制switch (key){case "1":this.detail();break;case "2":this.income();break;case "3":this.pay();break;case "4":this.exit();break;default:System.out.println("选择有误,请重新选择");}}while(loop);}// 零钱通明细public void detail() {System.out.println(detils);}// 完成收益入账public void income() {System.out.print("收益入账金额:");money = sc.nextDouble();// 清空输入缓冲区sc.nextLine();// money 的值应该校验// 找出不正确的金额条件,然后给出提示,就直接breakif(money <= 0){System.out.println("收益入账金额需要大于0");return; // 退出方法,不再执行后面的方法}balance += money;// 获取当前日期date = new Date();// 拼接收益入账信息到detailsdetils += "\n收益入账\t" + money + "\t" + sdf.format(date) + "\t" + balance;}// 消费public void pay() {System.out.print("收益消费金额:");money = sc.nextDouble();sc.nextLine();  // 清空输入缓冲区// money 的值应该校验 TODO// 找出金额不正确的情况if(money <= 0 || money > balance){System.out.println("你的消费金额应该在 0-" + balance);return;}System.out.print("消费说明: ");note = sc.next();sc.nextLine();balance -= money;// 拼接消费信息到detailsdate = new Date(); // 获取到当前时间detils += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;}// 退出public void exit() {String choice = "";while (true) {  // 要求用户必须输入 y/n,否则就一直循环System.out.println("你确定要退出吗? y/n");choice = sc.nextLine();if ("y".equals(choice) || "n".equals(choice)) {break;}}// 当用户退出后,再进行判断if (choice.equals("y")) {loop = false;System.out.println("------------------退出了零钱通项目------------------");}}
}

SmallChangeSysAPP代码如下:

package smallchange.oop;/*** @author cdj* @Version1.0* 调用SmallChangeSysOOP 对象*/
public class SmallChangeSysAPP {public static void main(String[] args) {new SmallChangeSysOOP().mainMenu();}
}

在Structure(使用alt+7打开)界面下可以查看OOP类下面的属性和方法:
在这里插入图片描述
将其中的各个功能封装进OOP类下面的方法中,后续我们只用调用它的方法就可以了。对于其它人想用我们的代码,或者说后续添加方法,都是比面向过程更加方便的。

相关文章:

1.JAVA小项目(零钱通)

一、说明 博客内容&#xff1a;B站韩顺平老师的视频&#xff0c;以及代码的整理。此项目分为两个版本&#xff1a; 面向过程思路实现面向对象思路实现 韩老师视频地址&#xff1a;【【零基础 快速学Java】韩顺平 零基础30天学会Java】 https://www.bilibili.com/video/BV1fh4…...

Redis这一篇就够了

一.概述 Redis是什么&#xff1f; Redis是远程服务字典服务&#xff0c;是一个开源的使用ANSI C语言编写&#xff0c;支持网络&#xff0c;可基于内存亦可持久化的日志型&#xff0c;Key-Value数据库&#xff0c;并提供多种语言的API。 redis会周期性把更新的数据写入磁盘或把…...

Java web应用性能分析之【jvisualvm远程连接云服务器】

Java web应用性能分析之【java进程问题分析概叙】-CSDN博客 Java web应用性能分析之【java进程问题分析工具】-CSDN博客 前面整理了java进程问题分析和分析工具&#xff0c;现在可以详细看看jvisualvm的使用&#xff0c;一般java进程都是部署云服务器&#xff0c;或者托管IDC机…...

springboot发送短信验证码,结合redis 实现限制,验证码有效期2分钟,有效期内禁止再次发送,一天内发送超3次限制

springboot结合redis发送短信验证码,实现限制发送操作 前言(可忽略)实现思路正题效果图示例手机号不符合规则校验图成功发送验证码示例图redis中缓存随机数字验证码&#xff0c;2分钟后失效删除redis缓存图验证码有效期内 返回禁止重复发送图验证码24小时内发送达到3次&#xf…...

【Python】使用 Pandas 统计每行数据中的空值

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 &#x1f3b5; 邓紫棋《光年之外》 在数据分析…...

1pannel部署onenav导航容器编排模板

onenav导航 1pannel部署onenav导航容器编排模板 networks:1panel-network:external: true services:onenav:container_name: onenavimage: helloz/onenav:latestlabels:createdBy: Appsnetworks:- 1panel-networkports:- 127.0.0.1:{port}:80environment:- TZAsia/Shanghaivol…...

linux--实时性优化

linux--实时性优化 1 介绍2 实时性需求3 代表性实时系统4 嵌入式系统嵌入式软件系统结构处理器时钟节拍多任务机制任务调度方式任务调度算法时间片调度算法优先级调度算法基于优先级的时间片调度算法 5 cyclictest 测试工具命令说明命令分析参数含义 6 linux 实时性改进某版本上…...

React-基础样式控制

组件基础样式方案 React组件基础的样式控制有两种方式 1、行内样式&#xff08;不推荐&#xff09; 属性名是多个单词的需要使用驼峰写法 也可以把样式都提取到一个变量里&#xff0c;再赋值到style里 2、class类名控制 classnames优化类名控制 classnames是一个简单的JS库&…...

制作ChatPDF之前端Vue搭建(二)

前端界面 接上篇: 制作ChatPDF之Elasticsearch8.13.4搭建&#xff08;一&#xff09; 为了实现一个基于 Vue.js 的前端应用&#xff0c;用户可以上传 PDF 文件&#xff0c;输入查询&#xff0c;并在输出框中显示查询结果&#xff0c;你需要以下步骤&#xff1a; 初始化 Vue …...

汽车IVI中控开发入门及进阶(二十一):DAB和FM 收音机

前言: 在过去的十年里,数字收音机对车载娱乐产生了重大影响。现在,几乎每辆新车都标配了这项技术,这也是我们60%以上的人收听收音机的方式。甚至有传言称,在不久的将来,将永久关闭调频发射机,使许多车载收音机过时。但一些相对年轻的汽车在工厂里仍然没有安装DAB,而且…...

智能sql LLM

DB-GPT&#xff1a;彻底改变数据库与私有LLM技术的交互 智能SQL生成&#xff1a;后端技术与LLM的完美结合 智能SQL生成&#xff1a;后端技术与LLM的完美结合_llm sql-CSDN博客 GitHub - eosphoros-ai/DB-GPT: AI Native Data App Development framework with AWEL(Agentic Wor…...

大聪明教你学Java | 深入浅出聊 Stream.parallel()

前言 &#x1f34a;作者简介&#xff1a; 不肯过江东丶&#xff0c;一个来自二线城市的程序员&#xff0c;致力于用“猥琐”办法解决繁琐问题&#xff0c;让复杂的问题变得通俗易懂。 &#x1f34a;支持作者&#xff1a; 点赞&#x1f44d;、关注&#x1f496;、留言&#x1f4…...

图解大模型分布式并行各种通信原语

背景 在分布式集群上执行大模型任务时候&#xff0c;往往使用到数据并行&#xff0c;流水线并行&#xff0c;张量并行等技术&#xff0c;这些技术本质上也就是对数据进行各种方案的切分&#xff0c;然后放到不同的节点上运算。不同节点在计算的过程中需要对数据分发或者同步等…...

张大哥笔记:下一个风口是什么?

我们经常会问&#xff0c;下一个风口是什么&#xff1f;我们可以大胆预测一下&#xff0c;2024年的风口是什么呢&#xff1f; 40年前&#xff0c;如果你会开车&#xff0c;那就是响当当的铁饭碗&#xff1b; 30年前&#xff0c;如果你会英语和电脑&#xff0c;那也绝对是个人才…...

AI去衣技术中的几何着色:揭秘数字时尚的魔法

在数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变我们的生活&#xff0c;从智能家居到自动驾驶汽车&#xff0c;再到个性化医疗。然而&#xff0c;AI的影响远不止于此。它正在重塑我们对艺术、设计和时尚的理解。特别是在数字时尚领域&#…...

Leecode---技巧---只出现一次的数字 / 多数元素

题解&#xff1a; 利用异或运算 a⊕a 0 的性质&#xff0c;可用来消除所有出现了两次的元素&#xff0c;最后剩余的即为所得。 class Solution { public:int singleNumber(vector<int>& nums){// 初始化为0int ans 0;for(int x: nums){// 异或操作ans ^ x;}retur…...

为图片设置经纬度信息

一、java实现 小编看了很多技术博客&#xff0c;但是测试要么下载的jar包中的api和博客对不上&#xff0c;要么就是不对&#xff0c;总之没实现 Java 读取图片信息 java 写入 exif 信息 使用Java读取和修改图片的Exif信息 java获取图片的GPS信息 https://drewnoakes.com/code/e…...

密码和密钥的联系与区别

密码和密钥是两个非常重要的概念&#xff0c;但容易混淆这两者&#xff0c;以下内容介绍了它们的联系和区别&#xff1a; 一、定义 密码&#xff08;Password&#xff09;&#xff0c;在日常语境中&#xff0c;通常指的是个人为了验证自己的身份而设置的一段秘密的字符序列&am…...

C++编程法则365天一天一条(323)main函数执行之前和之后的动作

在C和C程序中&#xff0c;main 函数之前和之后执行的函数是由编译器、链接器和运行时环境共同决定的。以下是一些通常会在这些阶段执行的关键函数&#xff1a; 在 main 函数之前执行的函数 启动代码&#xff08;Start-up Code&#xff09;: 这是由编译器提供的一段代码&#…...

阿里云短信服务使用(Java)

文章目录 一、流程1.打开短信服务2.提交材料申请资质3.资质通过后&#xff0c;申请短信签名并设置短信模板4.右上角设置AccessKey5.充值 二、参考官方文档调用API1.引入maven依赖2.调用API补充 一、流程 1.打开短信服务 登陆注册阿里云 搜索“短信服务”&#xff0c;点击“免…...

利用Taotoken审计日志功能追踪与分析团队内部的模型使用情况

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken审计日志功能追踪与分析团队内部的模型使用情况 对于项目管理者或安全运维人员而言&#xff0c;清晰掌握团队内部大模…...

软考高项案例分析9:项目采购管理

软考高项案例分析9:项目采购管理 一、项目采购管理过程 1、规划采购管理; 2、实施采购管理; 3、控制采购; 二、案例分析知识点 1. 采购管理的过程及定义作用 规划采购管理:是记录项目采购决策、明确采购方法,及识别潜在卖方的过程。作用:确定是否从项目外部获取货物…...

MT7628串口透传实战:手把手教你用ser2net把串口数据转发到TCP(含OpenWrt固件编译)

MT7628串口透传实战&#xff1a;从零构建网络化串口通信系统 在物联网和嵌入式开发领域&#xff0c;串口通信是最基础也是最常用的数据传输方式之一。MT7628作为一款广泛应用于路由器、智能家居设备的SoC芯片&#xff0c;其串口功能常被用于设备调试、传感器数据采集等场景。但…...

【Spring】 AOP 核心原理,与声明式事务传播机制

一、什么是 AOPAOP&#xff08;Aspect Oriented Programming&#xff0c;面向切面编程&#xff09;核心思想在不修改原有业务代码的情况下&#xff0c;对方法进行统一增强。例如&#xff1a;日志记录&#xff1b;权限校验&#xff1b;事务管理&#xff1b;性能统计&#xff1b;…...

Vue.js 版本全解析与 nvm 环境管理完全指南

前言&#xff1a;为什么需要了解这些&#xff1f;在前端开发的世界里&#xff0c;Vue.js 已经成为最受欢迎的框架之一。但在实际工作中&#xff0c;我们常常会面临两个问题&#xff1a;项目 A 需要用 Vue 2&#xff08;为了兼容 IE11&#xff09;&#xff0c;项目 B 想用 Vue 3…...

5分钟打造你的桌面股票看板:TrafficMonitor股票插件完整指南

5分钟打造你的桌面股票看板&#xff1a;TrafficMonitor股票插件完整指南 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 还在为错过重要股票行情而烦恼吗&#xff1f;想在工作时…...

论完善代码版本信息构建AI在精工产业与智能设备短板—东方仙盟

出众的现代 AI时至今日&#xff0c;人工智能发展日新月异。在 UI 设计、网页开发、纯软件系统搭建等不依托实体硬件的领域&#xff0c;AI 表现已然成熟。常规信息化工作&#xff0c;AI 皆可独立完成&#xff0c;效率出众&#xff0c;为日常开发与设计减负良多。精工硬件领域 AI…...

新基建淘汰战:UWB高功耗基站 vs 镜像视界边缘AI无感定位

新基建淘汰战&#xff1a;UWB高功耗基站 vs 镜像视界边缘AI无感定位新基建浪潮下&#xff0c;低能耗、强兼容、可扩展成为空间感知技术的核心准入门槛。UWB厘米级定位深陷高功耗基站强硬件绑定的沉重模式&#xff0c;而镜像视界浙江科技有限公司以边缘AI无感定位为核心&#xf…...

为什么你的ElevenLabs甘肃话输出像“普通话带口音”?5个声学特征参数调试错误导致92%失真率

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;甘肃话语音合成失真的现象学观察 甘肃话作为中原官话陇中片的代表性方言&#xff0c;其声调曲折性强、入声残留明显、连读变调规则复杂&#xff0c;为语音合成系统带来显著挑战。在部署基于Tacotron2WaveGlow的…...

凡亿AD22--PCB设计课程项目总结及后续学习规划

一、本次PCB设计课程核心总结本次系列课程的核心定位是「PCB设计入门基础」&#xff0c;核心目标是帮助新手快速上手&#xff0c;搭建PCB设计的基础认知&#xff0c;整体围绕“工具操作基础知识点”两大核心展开&#xff0c;具体总结如下&#xff1a;1. 课程核心目标本次课程不…...