安卓(android)订餐菜单【Android移动开发基础案例教程(第2版)黑马程序员】
一、实验目的(如果代码有错漏,可查看源码)
1.掌握Activity生命周的每个方法。
2.掌握Activity的创建、配置、启动和关闭。
3.掌握Intent和IntentFilter的使用。
4.掌握Activity之间的跳转方式、任务栈和四种启动模式。
5.掌握在Activity中添加和使用Fragment。
二、实验条件
1.熟悉Java编程语言;了解Android应用程序的基本结构;掌握XML布局文件的编写;了解Activity和Fragment的基本概念。
2.其他准备:准备好菜单项的图片资源;设计好菜单的数据结构和内容。
三、实验内容
1.搭建菜单界面布局:搭建左侧菜单栏界面布局;搭建右侧菜单列表界面布局;搭建菜单列表界面的条目布局。
2.实现菜单界面功能:封装菜品信息的实体类;加载左侧菜单栏界面布局;编写菜单列表的适配器;加载右侧菜单栏界面布局;实现显示菜单的效果。
3.运行程序:运行程序,显示推荐选项的界面效果;点击“进店必买选项”,显示其对应的界面效果。
4实验过程使用的图片如下:
四、实验指导
1.搭建菜单界面布局
(1)订单菜单界面主要包含三部分:顶部导航栏、左侧菜单栏和右侧菜单列表。搭建界面布局的步骤:
①创建项目程序,导入图片资源素材;
②在res→values目录下创建colors.xml文件,添加颜色定义代码如下:
<?xml version="1.0" encoding="utf-8"?>
<resources><color name="purple_200">#FFBB86FC</color><color name="purple_500">#FF6200EE</color><color name="purple_700">#FF3700B3</color><color name="teal_200">#FF03DAC5</color><color name="teal_700">#FF018786</color><color name="black">#FF000000</color><color name="white">#FFFFFFFF</color><color name="dark_gray">#626262</color><color name="gray">#f7f8f9</color></resources>
③在res→values目录下创建styles.xml文件,定义文本样式代码如下:
<?xml version="1.0" encoding="utf-8"?>
<resources><style name="tvNavigationBarStyles"><item name="android:layout_width">wrap_content</item><item name="android:layout_height">wrap_content</item><item name="android:layout_marginLeft">25dp</item><item name="android:layout_marginTop">4dp</item><item name="android:textSize">16sp</item></style><style name="tvleftStyles"><item name="android:layout_width">100dp</item><item name="android:layout_height">40dp</item><item name="android:gravity">center</item><item name="android:textColor">@color/dark_gray</item><item name="android:textSize">16sp</item></style></resources>
④在res→layout目录下,在activity_main.xml中添加界面控件;创建left_layout.xml完成搭建左侧菜单栏布局;创建right_layout.xml文件搭建右侧菜单栏布局;创建list_item.xml完成创建listview的条目布局界面,并修改默认标题栏。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white"android:orientation="vertical"tools:context=".MainActivity"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:layout_marginBottom="4dp"android:gravity="center_vertical"><TextViewandroid:id="@+id/tv_order"style="@style/tvNavigationBarStyles"android:textColor="@color/black"android:text="点菜"/><TextViewandroid:id="@+id/tv_discuss"android:layout_toRightOf="@id/tv_order"style="@style/tvNavigationBarStyles"android:textColor="@color/dark_gray"android:text="评价"/><TextViewandroid:id="@+id/tv_business"style="@style/tvNavigationBarStyles"android:textColor="@color/black"android:layout_toRightOf="@id/tv_discuss"android:text="商家"/><TextViewandroid:layout_width="70dp"android:layout_height="30dp"android:textSize="12sp"android:layout_alignParentRight="true"android:layout_marginRight="15dp"android:background="@drawable/left"android:gravity="center"android:textColor="#ef842c"android:text="好友拼单"/></RelativeLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><fragmentandroid:id="@+id/left"android:name="cn.itcast.menu.LeftFragment"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"tools:layout="@layout/left_layout"/><fragmentandroid:id="@+id/right"android:name="cn.itcast.menu.RightFragment"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="3"tools:layout="@layout/right_layout"/></LinearLayout>
</LinearLayout>
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:padding="5dp"><ImageViewandroid:id="@+id/iv_img"android:layout_width="70dp"android:layout_height="70dp"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="8dp"android:layout_marginRight="8dp"android:orientation="vertical"><TextViewandroid:textSize="14sp"android:padding="2dp"android:id="@+id/tv_name"android:layout_width="wrap_content"android:layout_height="wrap_content"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#868788"android:id="@+id/tv_sale"android:textSize="12sp"/><TextViewandroid:id="@+id/tv_price"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="2dp"android:textSize="12sp"/></LinearLayout></LinearLayout>
left_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/tv_recommend"style="@style/tvleftStyles"android:background="@color/white"android:text="推荐" /><TextViewandroid:id="@+id/tv_must_buy"style="@style/tvleftStyles"android:text="进店必买"/></LinearLayout>
right_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ListViewandroid:id="@+id/lv_list"android:layout_width="match_parent"android:layout_height="wrap_content"android:divider="@null"/></LinearLayout>
2.实现菜单界面功能
(1)封装菜品信息实体类FoodBean:
package cn.itcast.menu;public class FoodBean {private static final long serialVersionUID=1L;private String name;private String sales;private String price;private int img;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSales() {return sales;}public void setSales(String sales) {this.sales = sales;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}public int getImg() {return img;}public void setImg(int img) {this.img = img;}}
(2)加载左侧菜单栏界面布局,在LeftFragment.java中代码实现如下:
package cn.itcast.menu;import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
public class LeftFragment extends Fragment {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view =inflater.inflate(R.layout.left_layout,container,false);return view;}@Overridepublic void onPause() {super.onPause();}
}
(3)通过ListView实现菜单列表,编写其对应的适配器RightAdapter.java。
package cn.itcast.menu;import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;public class RightAdapter extends BaseAdapter {private Context mContext;private List<FoodBean> list;public RightAdapter(Context context , List<FoodBean>list){this.mContext=context;this.list=list;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder=null;if(convertView==null){convertView=View.inflate(mContext,R.layout.list_item,null);holder= new ViewHolder();holder.tv_name=convertView.findViewById(R.id.tv_name);holder.tv_sale=convertView.findViewById(R.id.tv_sale);holder.tv_price=convertView.findViewById(R.id.tv_price);holder.iv_img=convertView.findViewById(R.id.iv_img);convertView.setTag(holder);}else {holder=(ViewHolder) convertView.getTag();}FoodBean bean=list.get(position);holder.tv_name.setText(bean.getName());holder.tv_sale.setText(bean.getSales());holder.tv_price.setText(bean.getPrice());holder.iv_img.setBackgroundResource(bean.getImg());return convertView;}class ViewHolder{TextView tv_name,tv_sale,tv_price;ImageView iv_img;}
}
(4)创建右侧Fragment来显示菜单栏列表信息,具体实现代码如下:
package cn.itcast.menu;import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import java.io.Serializable;
import java.util.List;public class RightFragment extends Fragment {private ListView lv_list;public RightFragment() {}public RightFragment getInstance(List<FoodBean> list) {RightFragment rightFragment = new RightFragment();Bundle bundle = new Bundle();bundle.putSerializable("list", (Serializable) list);rightFragment.setArguments(bundle);return rightFragment;}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {View view = inflater.inflate(R.layout.right_layout, container, false);lv_list = view.findViewById(R.id.lv_list);if (getArguments() != null) {List<FoodBean> list = (List<FoodBean>) getArguments().getSerializable("list");RightAdapter adapter = new RightAdapter(getActivity(), list);lv_list.setAdapter(adapter);}return view;}
}
(5)实现显示菜单的效果,在MainActivity.java中定义init()方法、setData()方法、clickEvent()方法和switchData()方法,分别实现初始化界面控件、实现界面控件点击事件和切换右侧菜单列表数据的功能,代码如下:
package cn.itcast.menu;import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentTransaction;
import android.app.Fragment;
import android.app.FragmentManager;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class MainActivity extends AppCompatActivity {private FragmentManager fragmentManager;private FragmentTransaction fragmentTransaction;private Fragment leftFragment;private RightFragment rightFragment;private TextView tv_recommed,tv_must_buy;private String[]names1={"爆款*肥牛鱼豆腐骨肉相连三荤五素一份米饭","豪华双人套餐","【热销】双人套餐(含两份米饭)"};private String[]sales1={"月售520 好评度80%","月售520 好评度80%","月售520 好评度80%"};private String[]prices1={"$23","$41","$32"};private int []imgs1={R.drawable.food1,R.drawable.food2,R.drawable.food3};private String[]names2={"鸿运当头-油焖大虾","金肥牛跃龙门","香甜菠萝咕噜肉"};private String[]sales2={"月售1314 好评度90%","月售999 好评度85%","月售520 好评度80%"};private String[]prices2={"$36","$45","$29"};private int []imgs2={R.drawable.foodd1,R.drawable.foodd2,R.drawable.foodd3};private Map<String, List<FoodBean>> map;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setData();init();clickEvent();}private void init(){//给主页面左侧的fragment界面控件赋值fragmentManager = getFragmentManager();leftFragment=fragmentManager.findFragmentById(R.id.left);tv_recommed=findViewById(R.id.tv_recommend);tv_must_buy=findViewById(R.id.tv_must_buy);}private void setData(){//给数据赋值将其全部放在对应的数据集里map=new HashMap<>();List<FoodBean>list1=new ArrayList<>();List<FoodBean>list2=new ArrayList<>();for(int i=0;i<names1.length;i++){FoodBean bean=new FoodBean();bean.setName(names1[i]);bean.setPrice(prices1[i]);bean.setImg(imgs1[i]);bean.setSales(sales1[i]);list1.add(bean);}map.put("1",list1);for(int i=0;i<names2.length;i++){FoodBean bean=new FoodBean();bean.setName(names2[i]);bean.setPrice(prices2[i]);bean.setImg(imgs2[i]);bean.setSales(sales2[i]);list2.add(bean);}map.put("2",list2);}private void clickEvent(){//点击推荐还在必须控件变化颜色,可以增加可适度tv_recommed.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {switchData (map.get("1"));tv_recommed.setBackgroundColor(Color.WHITE);}});tv_must_buy.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {switchData (map.get("2"));tv_must_buy.setBackgroundColor(Color.WHITE);}});switchData (map.get("1"));}public void switchData(List<FoodBean> list){rightFragment=new RightFragment().getInstance(list);//实例fragmentfragmentManager=getFragmentManager();//获取FragmentManagerfragmentTransaction=getSupportFragmentManager().beginTransaction();//开启事务fragmentTransaction.replace(R.id.right,rightFragment);//添加一个FragmentfragmentTransaction.commit();//提交事务}}
五、代码下载地址:
android: 实现注册界面、实现注册界面、饭堂小广播、音乐播放器、记事本、读取手机通讯录、学生管理系统 - Gitee.com
相关文章:
安卓(android)订餐菜单【Android移动开发基础案例教程(第2版)黑马程序员】
一、实验目的(如果代码有错漏,可查看源码) 1.掌握Activity生命周的每个方法。 2.掌握Activity的创建、配置、启动和关闭。 3.掌握Intent和IntentFilter的使用。 4.掌握Activity之间的跳转方式、任务栈和四种启动模式。 5.掌握在Activity中添加…...
deb安装失败后,无法再安装别的包的解决方案
把package_name换成出安装问题的包 移除该包的安装标记 sudo dpkg --remove --force-remove-reinstreq package_name清理残留文件和配置 sudo apt-get purge package_name...
算法基础学习——二分查找(附带Java模板)
有单调性的数列一定可以使用二分,没有单调性的题目也可能可以使用二分; (一)整数二分 二分的本质: 在某个整数区间内,存在某种性质使得区间内左半边的数都不满足该性质;而右半边的数都满足该性…...
蓝桥杯例题五
无论你面对多大的困难和挑战,都要保持坚定的信念和积极的态度。相信自己的能力和潜力,努力不懈地追求自己的目标和梦想。不要害怕失败,因为失败是成功的垫脚石。相信自己的选择和决策,不要被他人的意见和批评左右。坚持不懈地努力…...
pyside6-uic form.ui -o ui_form.py 的作用
pyside6-uic form.ui -o ui_form.py 的作用 pyside6-uic form.ui -o ui_form.py 这个命令是用来将 .ui 文件转换为 Python 代码文件的工具。 具体作用: pyside6-uic:这是一个命令行工具,用于将用 Qt Designer 或其他图形界面工具创建的 .ui …...
理解神经网络:Brain.js 背后的核心思想
温馨提示 这篇文章篇幅较长,主要是为后续内容做铺垫和说明。如果你觉得文字太多,可以: 先收藏,等后面文章遇到不懂的地方再回来查阅。直接跳读,重点关注加粗或高亮的部分。放心,这种“文字轰炸”不会常有的,哈哈~ 感谢你的耐心阅读!😊 欢迎来到 brain.js 的学习之旅!…...
工业相机开发操作流程
建议按照如下的流程操作相机(其中有一些步骤是可选的,已经标明): 一、载入SDK的动态链接库档MVCAMSDK.DLL。可以使用动态或者静 态加载两种方式。 如果使用C/C进行开发,在工程引用 CameraApi.h头文件(位于安装目录的SDK/DEMO/VC/include中)和…...
利用飞书机器人进行 - ArXiv自动化检索推荐
相关作者的Github仓库 ArXivToday-Lark 使用教程 Step1 新建机器人 根据飞书官方机器人使用手册,新建自定义机器人,并记录好webhook地址,后续将在配置文件中更新该地址。 可以先完成到后续步骤之前,后续的步骤与安全相关&…...
SpringCloudGateWay和Sentinel结合做黑白名单来源控制
假设我们的分布式项目,admin是8087,gateway是8088,consumer是8086 我们一般的思路是我们的请求必须经过我们的网关8088然后网关转发到我们的分布式项目,那我要是没有处理我们绕过网关直接访问项目8087和8086不也是可以࿱…...
Win10安装MySQL、Pycharm连接MySQL,Pycharm中运行Django
一、Windows系统mysql相关操作 1、 检查系统是否安装mysql 按住win r (调出运行窗口) 输入service.msc,点击【确定】 image.png 打开服务列表-检查是否有mysql服务 (compmgmt.msc) image.png 2、 Windows安装MySQL …...
MR-GDINO: Efficient Open-World Continual Object Detection—— 高效开放世界持续目标检测
这篇文章提出了一种名为MR-GDINO的开放世界持续目标检测方法,旨在解决开放世界检测器在持续学习过程中对已见类别和未见类别的灾难性遗忘问题。文章的主要内容和贡献如下: 问题定义:提出了开放世界持续目标检测任务,要求检测器在持…...
显示当前绑定变量
来自v$sql中的信息 测试两个变量的情况(实际可以看6个,可根据需要修改) DROP TABLE T1 PURGE; CREATE TABLE T1 AS SELECT A.*,SYSDATE RIQI FROM DBA_USERS A ORDER BY 1;var mc char(3); var id number; exec :mc:SYS; exec :id:50;set li…...
如何将xps文件转换为txt文件?xps转为pdf,pdf转为txt,提取pdf表格并转为txt
文章目录 xps转txt方法一方法二 pdf转txt整页转txt提取pdf表格,并转为txt 总结另外参考XPS文件转换为TXT文件XPS文件转换为PDF文件PDF文件转换为TXT文件提取PDF表格并转为TXT示例代码(部分) 本文测试代码已上传,路径如下ÿ…...
STM32 PWM驱动舵机
接线图: 这里将信号线连接到了开发板的PA1上 代码配置: 这里的PWM配置与呼吸灯一样,呼吸灯连接的是PA0引脚,输出比较单元用的是OC1通道,这里只需改为OC2通道即可。 完整代码: #include "servo.h&quo…...
「AI学习笔记」深度学习的起源与发展:从神经网络到大数据(二)
深度学习(DL)是现代人工智能(AI)的核心之一,但它并不是一夜之间出现的技术。从最初的理论提出到如今的广泛应用,深度学习经历了几乎一个世纪的不断探索与发展。今天,我们一起回顾深度学习的历史…...
专业视角深度解析:DeepSeek的核心优势何在?
杭州深度求索(DeepSeek)人工智能基础技术研究有限公司,是一家成立于2023年7月的中国人工智能初创企业,总部位于浙江省杭州市。该公司由量化对冲基金幻方量化(High-Flyer)的联合创始人梁文锋创立,…...
科技巨头AI投资引领未来增长
标题:科技巨头AI投资引领未来增长 文章信息摘要: 2024年科技巨头的资本支出远超预期,达到2360亿美元,主要得益于AI基础设施和数据中心建设的加速。预计2025年这一趋势将继续保持强劲增长,资本支出可能突破3000亿美元。…...
【Unity3D】Tilemap俯视角像素游戏案例
目录 一、导入Tilemap 二、导入像素风素材 三、使用Tilemap制作地图 3.1 制作Tile Palette素材库 3.2 制作地图 四、实现A*寻路 五、待完善 一、导入Tilemap Unity 2019.4.0f1 已内置Tilemap 需导入2D Sprite、2D Tilemap Editor、以及一个我没法正常搜出的2D Tilemap…...
Java 知识速记:全面解析 final 关键字
Java 知识速记:全面解析 final 关键字 什么是 final 关键字? final 关键字是 Java 中的一个修饰符。它可以用于类、方法和变量,其作用是限制对这些元素的修改。究竟如何限制?我们来逐个分析。 final 在变量中的用法 1. 声明常…...
《智能家居“孤岛危机”:设备孤立如何拖垮系统优化后腿》
在科技飞速发展的今天,智能家居不再是遥不可及的概念,它正逐渐走进千家万户,为我们描绘出舒适便捷的未来生活蓝图。想象一下,下班回家前,你可以通过手机远程开启空调,让室内温度恰到好处;到家时…...
大数据学习之Kafka消息队列、Spark分布式计算框架一
Kafka消息队列 章节一.kafka入门 4.kafka入门_消息队列两种模式 5.kafka入门_架构相关名词 Kafka 入门 _ 架构相关名词 事件 记录了世界或您的业务中 “ 发生了某事 ” 的事实。在文档中 也称为记录或消息。当您向 Kafka 读取或写入数据时,您以事件的 形式执行…...
Linux《基础指令》
在之前的Linux《Linux简介与环境的搭建》当中我们已经初步了解了Linux的由来和如何搭建Linux环境,那么接下来在本篇当中我们就要来学习Linux的基础指令。在此我们的学习是包括两个部分,即指令和关于Linux的基础知识;因此本篇指令和基础知识的…...
Avalonia+ReactiveUI跨平台路由:打造丝滑UI交互的奇幻冒险
一、引言 在当今数字化时代,跨平台应用开发已成为大势所趋。开发者们迫切需要一种高效、灵活的方式,能够让应用程序在不同操作系统上无缝运行,为用户提供一致的体验。Avalonia 和 ReactiveUI 的组合,宛如一对天作之合的舞者&…...
Ansible自动化运维实战--通过role远程部署nginx并配置(8/8)
文章目录 1、准备工作2、创建角色结构3、编写任务4、准备配置文件(金甲模板)5、编写变量6、编写处理程序7、编写剧本8、执行剧本Playbook9、验证-游览器访问每台主机的nginx页面 在 Ansible 中,使用角色(Role)来远程部…...
H264原始码流格式分析
1.H264码流结构组成 H.264裸码流(Raw Bitstream)数据主要由一系列的NALU(网络抽象层单元)组成。每个NALU包含一个NAL头和一个RBSP(原始字节序列载荷)。 1.1 H.264码流层次 H.264码流的结构可以分为两个层…...
批量解密,再也没有任何限制了
有的时候我们在网上下载了PDF文档。发现没有办法进行任何的操作,就连打印权限都没有。今天给大家介绍的这个软件可以一键帮你进行PDF解密,非常方便,完全免费。 PDF智能助手 批量解密PDF文件 这个软件不是很大,只有10MBÿ…...
认识小程序的基本组成结构
1.基本组成结构 2.页面的组成部分 3.json配置文件 4.app.json文件(全局配置文件) 5.project.config.json文件 6.sitemap.json文件 7.页面的.json配置文件 通过window节点可以控制小程序的外观...
模型I/O
文章目录 什么是模型I/O模型I/O功能之输出解析器输出解析器的功能输出解析器的使用Pydantic JSON输出解析器结构化输出解析器 什么是模型I/O 模型I/O在所有LLM应用中,核心元素无疑都是模型本身。与模型进行有效的交互是实现高效、灵活和可扩展应用的关键。LangChain…...
DeepSeek模型:开启人工智能的新篇章
DeepSeek模型:开启人工智能的新篇章 在当今快速发展的技术浪潮中,人工智能(AI)已经成为了推动社会进步和创新的核心力量之一。而DeepSeek模型,作为AI领域的一颗璀璨明珠,正以其强大的功能和灵活的用法&…...
git push到远程仓库时无法推送大文件
一、错误 remote: Error: Deny by project hooks setting ‘default’: size of the file ‘scientific_calculator’, is 164 MiB, which has exceeded the limited size (100 MiB) in commit ‘4c91b7e3a04b8034892414d649860bf12416b614’. 二、原因 本地提交过大文件&am…...
初识ExecutorService
设计目的 ExecutorService是Java并发包(java.util.concurrent)的一部分,旨在提供一种更高层次的抽象来管理线程和任务执行。它解决了手动创建和管理线程带来的复杂性和资源浪费问题,通过复用固定数量的线程池来处理大量短生命周期的任务,从而…...
初二回娘家
昨天下午在相亲相爱一家人群里聊天,今天来娘家拜年。 聊天结束后,开始准备今天的菜肴,梳理了一下,凉菜,热菜,碗菜。 上次做菜,粉丝感觉泡的不透,有的硬,这次使用开水浸泡…...
js基础(黑马程序员)
Web APIs(day6) 一、正则表达式 1.介绍 正则表达式(Regular Expression):是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象 通常用来查找、替换那些符合正则表达式的文本&#x…...
Java---猜数字游戏
本篇文章所实现的是Java经典的猜数字游戏 , 运用简单代码来实现基本功能 目录 一.题目要求 二.游戏准备 三.代码实现 一.题目要求 随机生成一个1-100之间的整数(可以自己设置区间),提示用户猜测,猜大提示"猜大了",…...
Oracle Primavera P6 最新版 v24.12 更新 2/2
目录 一. 引言 二. P6 EPPM 更新内容 1. 用户管理改进 2. 更轻松地标准化用户设置 3. 摘要栏标签汇总数据字段 4. 将里程碑和剩余最早开始日期拖到甘特图上 5. 轻松访问审计数据 6. 粘贴数据时排除安全代码 7. 改进了状态更新卡片视图中的筛选功能 8. 直接从活动电子…...
【React】 react路由
这一篇文章的重点在于将React关于路由的问题都给搞清楚。 一个路由就是一个映射关系,key:value。key是路径,value 可能是function或者component。 安装react-router-dom包使用路由服务,我这里想要用的是6版本的包,因此后面加”6&q…...
Linux的常用指令的用法
目录 Linux下基本指令 whoami ls指令: 文件: touch clear pwd cd mkdir rmdir指令 && rm 指令 man指令 cp mv cat more less head tail 管道和重定向 1. 重定向(Redirection) 2. 管道(Pipes&a…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.18 逻辑运算引擎:数组条件判断的智能法则
1.18 逻辑运算引擎:数组条件判断的智能法则 1.18.1 目录 #mermaid-svg-QAFjJvNdJ5P4IVbV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QAFjJvNdJ5P4IVbV .error-icon{fill:#552222;}#mermaid-svg-QAF…...
C语言实现库函数strlen
size_t是 unsigned int fgets会读入\n,用strcspn函数除去 assert判读指针是否为空指针,使用前要引头文件<assert.h> #include <stdio.h> #include <assert.h> size_t mystrlen(const char* str) {assert(str);size_t count 0;while …...
18 大量数据的异步查询方案
在分布式的应用中分库分表大家都已经熟知了。如果我们的程序中需要做一个模糊查询,那就涉及到跨库搜索的情况,这个时候需要看中间件能不能支持跨库求交集的功能。比如mycat就不支持跨库查询,当然现在mycat也渐渐被摒弃了(没有处理笛卡尔交集的…...
FastExcel使用详解
文章目录 FastExcel使用详解一、引言二、环境准备与依赖引入1、Maven 依赖引入2、实体类定义 三、核心操作:读写 Excel1、读取 Excel1.1 自定义监听器1.2 读取文件 2、写入 Excel2.1 简单写入2.2 模板写入 四、Spring Boot 集成示例1、文件上传(导入&…...
深度学习python基础(第四节) 元组、字符串、集合和字典
本节主要介绍元组,字符串,集合,字典的基本语法定义,以及相关的操作. 元组的定义和操作 元组一旦定义完成就不可修改. """ # 定义元组字面量 (元素,元素,....,元素) # 元素可以不同的数据类型# 定义元组变量 变量名称 (元素,…...
QT串口通信,实现单个温湿度传感器数据的采集
1、硬件设备 RS485中继器(一进二出),usb转485模块、电源等等 => 累计115元左右。 2、核心代码 #include "MainWindow.h" #include "ui_MainWindow.h"MainWindow::...
绘制决策树尝试3
目录 代码解读AI 随机状态 种子 定义决策树回归模型 tree的decision regressor fit 还可用来预测 export 效果图 我的X只有一个特征 为何这么多分支 ??? 这是CART回归 CART回归 为什么说代码是CART回归? 不是所有的决…...
【逻辑学导论第15版】A. 推理
识别下列语段中的前提与结论。有些前提确实支持结论,有些并不支持。请注意,前提可能直接或间接地支持结论,而简单的语段也可能包含不止一个论证。 例题: 1.管理得当的民兵组织对于一个自由国家的安全是必需的,因而人民…...
qt-C++笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别
qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别 code review! 参考笔记 1.qt-C笔记之重写QGraphicsItem的paint方法(自定义QGraphicsItem) 文章目录 qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphic…...
[Java]泛型(二)泛型方法
1.定义 在 Java 中,泛型方法是指在方法声明中使用泛型类型参数的一种方法。它使得方法能够处理不同类型的对象,而不需要为每种类型写多个方法,从而提高代码的重用性。 泛型方法与泛型类不同,泛型方法的类型参数仅仅存在于方法的…...
ProfibusDP主机与从机交互
ProfibusDP 主机SD2索要数据下发:68 08 F7 68 01 02 03 21 05 06 07 08 1C 1668:SD2 08:LE F7:LEr 68:SD2 01:目的地址 02:源地址 03:FC_CYCLIC_DATA_EXCHANGE功能码 21:数据地址 05,06,07,08&a…...
jQuery小游戏(二)
jQuery小游戏(二) 今天是新年的第二天,本人在这里祝大家,新年快乐,万事胜意💕 紧接jQuery小游戏(一)的内容,我们开始继续往下咯😜 游戏中使用到的方法 key…...
【MQ】如何保证消息队列的高可用?
RocketMQ NameServer集群部署 Broker做了集群部署 主从模式 类型:同步复制、异步复制 主节点返回消息给客户端的时候是否需要同步从节点 Dledger:要求至少消息复制到半数以上的节点之后,才给客户端返回写入成功 slave定时从master同步数据…...