菜谱APP源码和设计报告

news2024/11/15 8:36:34

《移动互联开发》

课程作业

学 院:

班 级:

学 号:

姓 名:

日 期:

设计要求(提交文档时需删除):

1.本课程设计作为《Android 程序设计》的期末考查内容。

2.任务安排:

(1)确定内容:11月3日前将确定内容,雷同内容进行微调(功能,实习,界面)。

(2)任务完成:12月2日,将计划完成的内容提交。

(3)程序演示:程序演示,录制演示视频。介绍程序的整体结构,实现方法,涉及到的技术,虚拟器演示。时长5-10分钟。

3.知识点要求包括但不限于以下内容:

(1)界面设计;

(2)事件处理;

(3)页面跳转;

(4)数据存储

4.课程设计的主体包括

(1)封面

(2)目录

(3)正文

1)应用平台介绍,开发版本,型号

2)需求分析

3)系统功能设计:

4)系统实现:原型设计,界面设计,系统结构,涉及到的关键技术,功能实现及关键代码

5)运行效果。

(4)结论

(5)参考文献

注意:

  1. 程序设计鼓励自主完成;设计功能完备,程序运行流畅无误。
  2. 代码部分需要进行必要的注释。
  3. 文档撰写应注意排版美观大方,语言通顺,无错别字。若有同学的设计基本雷同的都定位不及格。

重要事项:

  1. 提交内容:
    1. 文档的电子版
    2. 完整代码的电子版;
    3. 演示视频(本人需入镜)

  1. 电子版提交:学生个人将所有提交内容放在“学号+姓名”的文件夹中;
    例如对于学号为20110309,姓名为“王琦”的同学,压缩文件名为“20110309王琦”
  2. 提交时间与地点:
    电子版:压缩后,提交至课程中心文档
    程序演示:后续通知

目录

    1. 引言1
      1.1 项目介绍1
      1.2 开发环境1
    2. 系统需求分析1
      2.1 用户需求1
      2.2 功能需求1
      2.3 性能需求1
    3. 系统总体设计1
      3.1 功能设计1
      3.1.1 功能划分(系统总体框架)2
      3.1.2 功能说明3
      3.2 系统数据流程4
      3.2.1 系统数据流程图4
      3.2.2 数据流程说明5
      3.3 界面设计5
      3.3.1 界面布局设计5
      3.3.2 界面切换描述6
    4. 系统详细设计6
      4.1 结构设计(含文件结构、数据结构)6
      4.2 函数设计6
    5. 系统实现7
      5.1 运行结果7
      5.2 关键代码8
    6. 结论16
    7. 参考文献16


1概述(一级标题,黑体,小三号字,段前、段后间距为1行)

最近的疫情虽然已经出现了好转,但是外卖平台上提供服务的商家还是屈指可数,再加上点外卖仍旧存在一定病毒传播的风险,因此越来越多从未做饭的人都开始尝试在家做饭。这直接导致了许多食谱类APP的流量猛增,开始在互联网上掀起一股全民做饭的热潮。下面我们来分析一下食谱类APP的发展前景。

现如今是智能手机快速发展的新时代。几乎在社会中的每个人多多少少都会使用智能手机和电脑,因为它们可以使我们的生活舒适、快捷和更加方便。对比国内外的许多人类的日常生产生活中,人们都几乎都已经离不开智能手机了。随着个人的消费水平不断提高和享受生活,几乎很少人能掌握日常生活到底消费在哪些方面,食谱类APP已经无法满足人们日益增长的需求,生活中许许多多的收支和消费情况,造成人们无法清晰的了解日常生活中的各种消费。如果用户在智能手机中下载一个适合自己的食谱类APP,可以让用户日常的做饭都得到归类和管理,能够使得用户方便的记录下自己的食谱类APP的同时,也能体会不一样的快乐。

1.1选题背景(二级标题,黑体,四号字,段前、段后间距为1行)

疫情期间,许多临时抱佛脚查食谱开始学做饭的人不在少数。下面我们来看看各个平台的数据统计,比如燃财经查询七麦数据2020年1月移动应用增长榜发现,美食佳饮子分类前20名中,食谱类APP占4席。食谱分享平台“网上厨房”后台的数据显示,春节期间,三四线城市的新增用户有明显增长。网上厨房CEO杨洋称,受疫情影响,与大量一线市的务工人员滞留三四线城市有直接关系。

年轻一代不做饭的原因,除了工作忙,时间有限,更多的是从小在家都是爸爸妈妈做饭,自己不会做,这次疫情期间空余时间变多,很多人发现跟着食谱学做饭不是太难的事情,并逐渐在做饭中发现了许多趣味,而不仅仅只是想填饱肚子。现在晒厨艺还满足了一部分年轻人的社交展示需求,朋友圈已经成为不少人厨艺大比拼的地方。因为每天刷时间最长的还是疫情相关的新闻,需要转移注意力来调节心情,下厨既是一个真治愈的过程,还能满足自己填饱肚子的需求。

1.2选题意义

总的来讲,食谱类APP的发展前景还是不错的。虽然疫情即将过去。但是这次食谱类APP得到了一次免费的引流拉新机会,还提高了相关APP的知名度。因此这次疫情更像是一场大考,只有真正为用户提供了有价值内容的产品,才能一直得到用户的青睐。

1.3开发工具及技术

1.3.1 Android stduio4.1;JDK1.8;

  1. 系统需求分析
    2.1用户需求
    该系统使用Android studio开发平台进行软件系统的开发,Android studio的界面简单和具有强大的兼容性的各方面的优点。开发者可以更好的进行软件的开发和日后的相关维护。
    该系统同时具有操作简单、操作方便、互换性好、较为直观等特点,这就是为什么我们可以选择Android studio来开发一个系统。
    2.2功能需求
    为了使用户体验感更好,开发人员会事先指定一些约束规则来进行行为的约束。开发者一般做出要求如下:用户管理家菜谱类APP软件,当用户输入已经注册过的用户名和密码,用户就会进入到SQlite数据库当中。但是如果用户输入的数据没有与数据库中的数据比对发现并没有找到,用户不得进行相关信息的注册和登录。这样它的安全显然非常可靠和安全。
    2.3性能需求
    软件系统分析主要包括技术、经济、运营和开发方面的研究,从而以确保信息资源和投入资金的合理利用,避免方案设计中存在的各种各样问题,帮助我们更好地完成软件实施方案。换句话说,技术支持和资金支持分析决定了项目完成的可能性,可行性分析是实现项目阶段——从开始到中间到结束——的必须所要面临途径。我主要根据实际需要情况进行了较为全面的软件系统分析,具体如下。
    本文从一个易于理解的分析方案开始,它将帮助用户处理自己日常生活中所遇到的问题,查看硬件和软件是否能满足开发者的任务需求。
    作为一名计算机专业的学生,我在学校学到了很多编程知识,比如Android studio和Java等相关技术。经过反复验证方案和规划方案,从系统结构到编程语言的选择,再到最终选定的技术,都在寻找最优可以实现这门技术的可行性的研究。
  2. 系统总体设计

3.1功能设计

3.1.1功能规划(系统总体框架)

本系统按用户访问菜谱APP软件。

当用户进入软件系统的时候,系统只为系统存在用户提供登录操作,如果是第一次进入需要注册账号信息。当用户注册完毕后,就可以访问菜谱APP软件。

当用户进入用户界面访问时,用户可以根据模糊查询,进行对自己喜欢的菜谱进行查询,查询过后点击进入,就可以看到具体的做法了。然后根据菜谱的做法,进行美味食品的制作。

3.1.2功能说明

用户进入菜谱APP软件系统的时候,系统只为系统存在用户提供登录和注册的相关操作,初始的用户需要进行账号的注册,否则登录不了。注册完毕后,用户就可以打开菜谱APP,菜谱APP可以进行相关菜品的查询,并且也有该软件开发的一些基本信息。

当用户进入用户界面访问时,用户可以根据模糊查询,进行对自己喜欢的菜谱进行查询,查询过后点击进入,就可以看到具体的做法了。然后根据菜谱的做法,进行美味食品的制作。

3.3界面设计

3.3.1界面布局设计

登录界面 注册界面

主界面

搜索界面 软件详情 菜品详情

3.3.2界面切换描述

1.登录到注册页面的切换

Intent intent5 = new Intent(MainActivity.this, Register.class);
startActivity(intent5);
finish();

  1. 判断是否数据之前有没有注册过
    boolean userdata = false;
    for (int i = 0; i < data.size(); i++) {
    User user= data.get(i); //可存储账号数量
    if (name.equals(user.getName()) && password.equals(user.getPassword())) {
    userdata = true;
    break;
    } else {
    userdata = false;
    }
    }
    把注册的数据都放到userdata当中,ArrayList<User> data = mSQlite.getAllDATA();
    判断date的长度,用.size()进行长度的判断。
    3.


首先点击我们需要的菜谱,进行到菜品的详情页面,我们要先制作一个模板,通过在集合的数据,依次循环,将数据放入进去,同时还需要一个简单的适配器,listView展示给用户看的时候,需要设置适配器BaseAdapter。
// 决定了ListView列表展示的行数
@Override
public int getCount() {
return mDatas.size();
}
//返回指定位置对应的数据
@Override
public Object getItem(int position) {
return mDatas.get(position);
}
// 返回指定位置所对应的id
@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_list,null); //将布局转换成view对象的方法
holder=new ViewHolder(convertView);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}

  1. 系统详细设计

4.1结构设计(文件结构、数据结构)

软件系统操作流程的设计目的是简化设计流程,更加方便日后开发程序人员进行更好的设计相关的软件开发。当然这样的设计为以后程序开发人员的开发设计和用户的使用感都有很大的关系。因此,系统操作图、注册流程图、登录流程图显得尤为重要。如图所示。

系统的安全性非常重要,所以您需要登录才能登录,不进行注册您就不能使用主账户页面,如图所示。

4.2函数设计

private SQLiteDatabase db;
public SQlite(Context context) {
super(context, "db_test", null, 1);
db = getReadableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS user(" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"name TEXT," +
"password TEXT)");
}

这边是数据库的登录和注册的设计,后面的信息采用的是

  1. 系统实现

5.1运行结果

5.2关键代码

  1. 数据库
    private SQLiteDatabase db;

    public SQlite(Context context) {
    super(context, "db_test", null, 1);
    db = getReadableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE IF NOT EXISTS user(" +
    "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
    "name TEXT," +
    "password TEXT)");
    }
  2. 适配器
    // 决定了ListView列表展示的行数
    @Override
    public int getCount() {
    return mDatas.size();
    }
    //返回指定位置对应的数据
    @Override
    public Object getItem(int position) {
    return mDatas.get(position);
    }
    // 返回指定位置所对应的id
    @Override
    public long getItemId(int position) {
    return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    if (convertView == null) {
    convertView = LayoutInflater.from(context).inflate(R.layout.item_list,null); //将布局转换成view对象的方法
    holder=new ViewHolder(convertView);
    convertView.setTag(holder);
    }else {
    holder = (ViewHolder) convertView.getTag();
    }
    // 加载控件显示的内容
    // 获取集合指定位置的数据
    FoodBean foodBean = mDatas.get(position);
    holder.titleTv.setText(foodBean.getTitle());
    holder.notTv.setText("材料:"+foodBean.getDesc());
    holder.iv.setImageResource(foodBean.getPicId());
    return convertView;
    }

    class ViewHolder{
    ImageView iv;
    TextView titleTv,notTv;
    public ViewHolder(View view){
    iv = view.findViewById(R.id.item_info_iv);
    titleTv = view.findViewById(R.id.item_info_title);
    notTv = view.findViewById(R.id.item_info_tv_notitle);
    }
    }
    }

  1. 登录、注册

public void onClick(View v) {
String name = username.getText().toString().trim();
String password = userpassword.getText().toString().trim();
if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)) {
ArrayList<User> data = mSQlite.getAllDATA();
boolean userdata = false;
for (int i = 0; i < data.size(); i++) {
User user= data.get(i); //可存储账号数量
if (name.equals(user.getName()) && password.equals(user.getPassword())) {
userdata = true;
break;
} else {
userdata = false;
}
}
if (userdata) {
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, Home.class);
intent.putExtra("username",name);
intent.putExtra("password",password); //展示账号密码功能
startActivity(intent);
finish();
} else {
Toast.makeText(MainActivity.this, "用户名或密码不正确", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(MainActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
}

}
});
mSQlite = new SQlite(MainActivity.this);
}

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
reday = findViewById(R.id.reday);
back = findViewById(R.id.back);
username = findViewById(R.id.userName);
userpassword =findViewById( R.id.userpassword);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Register.this,MainActivity.class);
startActivity(intent);
finish();
}
});
reday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = username.getText().toString().trim();
String password = userpassword.getText().toString().trim();
if(!TextUtils.isEmpty(name)&&!TextUtils.isEmpty(password)){
mSQlite.add(name,password);
Intent intent1 = new Intent(Register.this,MainActivity.class);
startActivity(intent1);
finish();
Toast.makeText(Register.this,"注册成功",Toast.LENGTH_SHORT).show();
}else {Toast.makeText(Register.this,"信息不完备,注册失败",Toast.LENGTH_SHORT).show();}
}
});
mSQlite = new SQlite(Register.this);
}
}

  1. 结论
    在这个过程中,我学到了很多,我知道我还有很多经验要学,我的专业技能还不够。当涉及到基本的计算机知识时,许多事情可以改进,以进一步优化设计。作为一名合格的项目协调员,我将继续解决这些缺点。尤其是计算机系统的底层得到了优化;简单的关系数据库可能不满足以下要求。
  2. 参考文献

[1] 刘奇付,李紫艳.基于Android平台的大学生生活费手机管理系统设计与实现[J].软件导刊,2015,14(9):141-143.

[2]周李达,邓璐凡,王中霖,等.基于Android的大学生出行系统设计与实现[J].信息与电脑:理论版,2015(19):99-101.

[3]王亚维,徐霞.基于Android的大学生兼职系统设计与实现[J].地理空间信息,2013,11(2):98-100.

[4] 韦俊星,曾祥宝,黄美素,等.基于安卓系统的大学生党课培训系统客户端的设计与实现[J].中国新通信,2015,17(11):116-117.

[5] 卢昕,杨晞.基于VFP6.0收款记账管理系统的实现[J].电脑编程技巧与维护,2014(6):48-49.

[6] 赵世祥,杨昆,朱彦辉,等.基于Android平台的大学生课程计划管理系统[J].通讯世界,2016(1):113-114.

[7] 冯璐.一个"网络记账本"的设计与实现——基于PHP+MySQL的收支管理系统[J].电脑知识与技术:学术交流,2007,4(19):20-22.

[8] O'Hanlon J,Peasnell K. Wall Street's contribution to management accounting: the Stern StewartEVA financial management system[J]. Management Accounting Research, 1998,9(4):421-444.

[9] 许荣丰.财务综合管理系统运行中存在的问题[J].吉林金融研究,2008(3):74-74.

[10]李斌.会计信息化管理——记账凭证的几点新认识[J]. 中国乡镇企业会计, 2009(2):122-124.

[11]卢照,王琦,王华.基于Android平台的大学生实用软件设计开发[J].微型机与应用,2015(24):19-20.

[12]陈梦娜,蓝建平.基于Android的大学生文明寝室测评系统设计与实现[J].网络安全技术与应用,2014(3):64-65.

[13]黄天上,姚世强,裴冬梅,等.基于Android平台的大学生校园服务信息实时发布系统的研究[J].教育,2015(10):218-218.

[14]吴冬芹,陈子健.基于GTD的大学生时间管理系统设计与实现[J].电脑编程技巧与维护,2015(16):44-45.

[15]王秋丽.我国财务软件的现状及发展趋势[J].山西经济管理干部学院学报,2012,10(1): 43-45.

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

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

相关文章

WAVE SUMMIT+2022飞桨平台新升级 全面支撑大模型研发与产业化

11月30日&#xff0c;由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT 2022深度学习开发者峰会如期举行。峰会上&#xff0c;百度AI技术生态总经理马艳军发布了飞桨深度学习平台的最新技术和生态进展&#xff0c;全新发布飞桨开源框架2.4版本&#xff0c;带来业界首个端…

在Linux中部署运维监控系统WGCLOUD

在公网IP为x.x.x.x&#xff0c;安装CentOS8或Alibaba Cloud Linux 3.2104 LTS 64位系统的服务器&#xff08;服务端&#xff09;上&#xff0c;先安装jdk8&#xff0c;然后安装数据库mariadb-10.5&#xff0c;最后进行server安装。 在需要监控的安装CentOS8或Alibaba Cloud L…

基于多时间尺度滚动优化的多能源微网双层调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Redis】redis的理解与使用、springboot中redis的五种数据类型的相关存取、StringRedisTemplate

文章目录Redis简介&#xff1a;redis的安装与使用&#xff1a;1.启动方式&#xff1a;2.修改密码3. Redis可视化软件4.redis的使用5.有关redis的存储问题springBoot项目使用redis▶jar包&#xff1a;▶示例&#xff1a;1.使用opsForValue操作字符串2.使用opsForList操作List3.使…

智能使得宇宙趋向稳定吗?

——评《智能简史》 最近读完了加拿大工程院院士于非的新著《智能简史》&#xff0c;书中的主要观点是“智能的作用是推动宇宙趋向稳定”。从这个观点出发&#xff0c;万物都有智能&#xff0c;因为它们遵循的规律都具有这个作用。即使是人们认为“无智能”的物理对象&#xff…

vue纯手写思维导图,拒绝插件(cv即用)

vue纯手写思维导图&#xff0c;拒绝插件(cv即用) 已完成功能点&#xff1a;折叠、放大、缩小、移动 后续增加功能点&#xff1a;添加、删除 先看结果&#xff1a; 有这么个需求&#xff0c;按照层级关系&#xff0c;把表格放在思维导图上&#xff0c;我第一时间想到用插件&am…

Android开发JetPack-Databinding组件

DataBinding介绍Android开发JetPack-Databinding组件1. 什么是databinding&#xff08;1&#xff09;简介&#xff08;2&#xff09;意义2. databinding基本使用&#xff08;1&#xff09;启用databinding&#xff08;2&#xff09;定义一个布局&#xff08;3&#xff09;创建一…

Redis02:企业架构介绍以及redis介绍

企业架构介绍以及redis介绍NoSql概述单机Mysql的演进当今企业架构分析NoSql概述 单机Mysql的演进 1、单机Mysql的年代 90年代一个基本的网站访问量一般不会太大&#xff0c;单个数据库完全足够&#xff01;那个时候更多的去使用静态html&#xff0c;服务器没有太大的压力。这…

HCIP实验3-1:IBGP与EBGP

实验 3-1 IBGP与EBGP 学习目的 掌握区域内部BGP的配置方法掌握多区域BGP的配置方法观察BGP的邻居表和数据库掌握BGP更新源的配置方法掌握EBGP多跳的配置方法观察IBGP和EBGP中路由的下一跳的变化掌握IBGP中下一跳的配置掌握BGP的Network命令的配置方法 拓扑图 场景 你是公司…

open label file.(This can be normal only if you use MScoco)

E:\yolov4-rubish\darknet\our_data\ImagesAug 把标签的txt文件和Jpg文件放在同一个文件夹

Kafka 入门知识,看这一篇就够了(上)

目录01 初识 Kafka02 topic & partition03 Kafka 分布式最近在学习 Kafka&#xff08;别问&#xff0c;问就是公司在用 &#xff09;&#xff0c;将学习过程中的笔记整理出来分享给大家&#xff0c;就当是入入门 01 初识 Kafka Kafka 最早是由 LinkedIn 公司开发的&#x…

python中numpy数组形状和计算

1. numpy数组形状 数组可以理解为是矩阵&#xff0c;所以会涉及几行几列 import numpy as np import randomt1 np.array([[1,2,3],[4,5,6]]) print(t1) print(t1.shape)在这段逻辑里&#xff0c;t1是个数组&#xff0c;输出结果后 (2, 3)表示的就是这个数组是一个2行3列的矩…

计算机系统基础实验——数据的机器级表示(计算浮点数 f 的绝对值[f])

题目要求&#xff1a; 这个函数计算浮点数f的绝对值[f]。如果f是NaN&#xff0c;函数应该简单的返回f。 Unsigned float_abs (unsiged f) { /**************/ return/*******/; } 先分析题目&#xff0c;题目有两个要求&#xff1a; 1.判断f是否是NAN类型&#xff0c;如果是返…

文件管理,给文件名称插入纯数字详细步骤

在日常办公过程中&#xff0c;我们经常会需要对文件名称进行重命名&#xff0c;如何给文件插入纯数字呢&#xff1f;一两个文件还好可以自定义重命名&#xff0c;面对大量文件的时候&#xff0c;怎么在文件名称中插入纯数字呢&#xff1f;一起来看看吧&#xff01; 第一步&…

这 5 本数据分析书籍,都是经典中的经典

下面要推荐的 5 本数据分析书籍对于数据分析领域而言&#xff0c;经典、经典、还是经典。 强烈建议先收藏&#xff0c;再观看。 《深入浅出数据分析》 数据分析入门第一本。 本书构思跌宕起伏&#xff0c;行文妙趣横生&#xff0c;无论是职场老手&#xff0c;还是业界新人&…

S2SH小区物业管理理系统计算机毕业论文Java项目源码下载

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 计算机毕业设计java毕设之S2SH小区物业系统_哔哩哔哩_bilibili计算机毕业设计java毕设之S2SH小区物业系统共计2条视频&#xff0c;包括&#xff1…

香农-范诺编码(Shannon–Fano Coding)

香农-范诺编码香农-范诺编码简介算法示例香农-范诺编码 简介 香农-范诺编码&#xff08;Shannon–Fano Coding&#xff09;是一种基于一组符号集及其出现的或然率&#xff08;估量或测量所得&#xff09;&#xff0c;从而构建前缀码的技术。 一般过程&#xff1a;符号从最大可…

太强了!GitHub上白嫖的SpringCloud微服务进阶宝典,啃完感觉能吊锤面试官!

自 2014 年起&#xff0c;微服务技术一直火热至今。随着越来越完善的微服务技术栈的发布&#xff0c;以及越来越多的微服务项目实际的落地和上线&#xff0c;使用 Java 技术栈的企业应该都在尝试或者已经落地了各自的微服务项目。同时&#xff0c;通过招聘网站的信息和每次面试…

正确理解线程WAITING状态

正确理解线程WAITING状态 今天来学习下&#xff0c;Java的线程状态&#xff0c;重点讨论下thread.state.WAITING。讨论下线程如何进入此状态&#xff0c;以及它们之间的区别。最后&#xff0c;我们进一步了解java.util.concurrent.locks.LockSupport&#xff0c;它提供了几种用…

【分布式能源的选址与定容】基于非支配排序多目标遗传优化算法求解分布式能源的选址与定容(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…