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

Android开发案例——简单计算器

实现计算机的简单功能

1、显示页面jsj.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"android:background="#eee"><TextViewandroid:layout_width="match_parent"android:layout_height="80dp"android:background="#42714A"android:gravity="center_vertical"android:text="Chapter03"android:textColor="#fff"android:textSize="25sp"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="简单计算机"android:gravity="center_horizontal"android:textSize="20sp"android:textColor="#000"/><TextViewandroid:id="@+id/tvresult"android:layout_width="match_parent"android:layout_height="180dp"android:background="#fff"android:layout_margin="5dp"android:text="0"android:textSize="40sp"android:textStyle="bold"android:textColor="#000"android:gravity="bottom|right"/><GridLayoutandroid:layout_marginTop="20dp"android:layout_width="match_parent"android:layout_height="wrap_content"android:columnCount="4"><Buttonandroid:id="@+id/btn_ce"style="@style/MyTextStyle"android:text="CE"/><Buttonandroid:id="@+id/btn_divide"style="@style/MyTextStyle"android:text="÷"/><Buttonandroid:id="@+id/btn_multiply"style="@style/MyTextStyle"android:text="x" /><Buttonandroid:id="@+id/btn_c"style="@style/MyTextStyle"android:text="C"/><Buttonandroid:id="@+id/btn_7"style="@style/MyTextStyle"android:text="7"/><Buttonandroid:id="@+id/btn_8"style="@style/MyTextStyle"android:text="8"/><Buttonandroid:id="@+id/btn_9"style="@style/MyTextStyle"android:text="9"/><Buttonandroid:id="@+id/btn_plus"style="@style/MyTextStyle"android:text="+"/><Buttonandroid:id="@+id/btn_4"style="@style/MyTextStyle"android:text="4"/><Buttonandroid:id="@+id/btn_5"style="@style/MyTextStyle"android:text="5"/><Buttonandroid:id="@+id/btn_6"style="@style/MyTextStyle"android:text="6"/><Buttonandroid:id="@+id/btn_minus"style="@style/MyTextStyle"android:text="—"/><Buttonandroid:id="@+id/btn_1"style="@style/MyTextStyle"android:text="1"/><Buttonandroid:id="@+id/btn_2"style="@style/MyTextStyle"android:text="2"/><Buttonandroid:id="@+id/btn_3"style="@style/MyTextStyle"android:text="3"/><Buttonandroid:id="@+id/btn_sqrt"style="@style/MyTextStyle"android:text="√"/><Buttonandroid:id="@+id/btn_reciprocal"style="@style/MyTextStyle"android:text="1/X"/><Buttonandroid:id="@+id/btn_0"style="@style/MyTextStyle"android:text="0" /><Buttonandroid:id="@+id/btn_dot"style="@style/MyTextStyle"android:text="."/><Buttonandroid:id="@+id/btn_equal"style="@style/MyTextStyle"android:text="="/></GridLayout>
</LinearLayout>

2、样式页面 style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources><style name="MyTextStyle"><item name="android:textSize">23sp</item><item name="android:layout_width">0dp</item><item name="android:layout_height">80dp</item><item name="android:layout_columnWeight">1</item></style></resources>

3、后端代码CalculatorActivity.java

package com.example.android;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.text.DecimalFormat;public class CalculatorActivity extends AppCompatActivity {private TextView tvResult; //用于显示计算结果和输入表达式的控件private String currentInput = "0"; //初始值为0private String operator = ""; //当前选择的运算符,初始为空字符串private double firstNumber = 0; //存储第一个操作数,初始值为0private boolean isNewNumber = true; //标记是否开始输入新的数字,初始为true@Override     //活动创建时调用的方法protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.jsj); //活动布局界面tvResult = findViewById(R.id.tvresult); //获取对象int[] buttonIds = {R.id.btn_ce, R.id.btn_divide, R.id.btn_multiply, R.id.btn_c,R.id.btn_7, R.id.btn_8, R.id.btn_9, R.id.btn_plus,R.id.btn_4, R.id.btn_5, R.id.btn_6, R.id.btn_minus,R.id.btn_1, R.id.btn_2, R.id.btn_3, R.id.btn_sqrt,R.id.btn_reciprocal, R.id.btn_0, R.id.btn_dot, R.id.btn_equal};  //存储所有按钮的idfor (int id : buttonIds) { //为每个按钮设置点击事件监听器Button button = findViewById(id);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {handleButtonClick(((Button) v).getText().toString()); //调用handleButtonClick方法}});}}private void handleButtonClick(String buttonText) {switch (buttonText) {case "CE":currentInput = "0";break;case "C":currentInput = "0";operator = "";firstNumber = 0;isNewNumber = true;break;  //恢复初始状态case "÷":case "x":case "+":case "—":if (!operator.isEmpty()) {calculateResult(); //如果存在运算符,调用calculateResult方法}operator = buttonText;firstNumber = Double.parseDouble(currentInput);isNewNumber = true;break;case "=": //调用calculateResult方法计算结果,清空operatorcalculateResult();operator = "";isNewNumber = true;break;case "√":double sqrtResult = Math.sqrt(Double.parseDouble(currentInput));currentInput = formatResult(sqrtResult);break;case "1/X":if (!currentInput.equals("0")) { //分母不能为0double reciprocalResult = 1 / Double.parseDouble(currentInput);currentInput = formatResult(reciprocalResult);} else {currentInput = "错误";}break;case ".":if (isNewNumber) { //如果是新数字,currentInput设置为0currentInput = "0.";isNewNumber = false;} else if (!currentInput.contains(".")) {currentInput += "."; //如果不包含.则在后面追加.}break;default:if (isNewNumber) {currentInput = buttonText;isNewNumber = false;} else {currentInput += buttonText;}break;}tvResult.setText(currentInput); //将值设置到tvResult中显示}private void calculateResult() {double secondNumber = Double.parseDouble(currentInput); //将输入内容转换成double型double result = 0;switch (operator) {case "÷":if (secondNumber != 0) { //如果除数不为0result = firstNumber / secondNumber;} else {currentInput = "错误";return;}break;case "x":result = firstNumber * secondNumber;break;case "+":result = firstNumber + secondNumber;break;case "—":result = firstNumber - secondNumber;break;}currentInput = formatResult(result); //将结果赋值给currentInput}private String formatResult(double result) { //格式化DecimalFormat decimalFormat = new DecimalFormat("#.########");return decimalFormat.format(result);}
}

相关文章:

Android开发案例——简单计算器

实现计算机的简单功能 1、显示页面jsj.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&…...

实现类似 “更新中” 的水平进度条按钮效果

如上图所示 activity_test3.xml <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height"match_parent…...

【QT入门到晋级】QT打动态库包及引入动态库包

前言 本篇为持续更新状态&#xff0c;内容包含window、Linux下打动态库包&#xff0c;以及引入动态库包的方式。 一、window 1、动态库打包 以百度的OCR接口调用打dll库为例&#xff0c;以下为qtcreator创建动态库过程&#xff1a; 1.1Qtcreator创建lib项目 创建成功后&…...

Linux:解决 yum 官方源无法使用(CentOS 7)

文章目录 一、原因二、解决方法 一、原因 CentOS 7 在 2024年 6 月 30 日结束了它的生命周期&#xff08;End of Life, EOL&#xff09;&#xff0c;这意味着官方不再提供更新和支持&#xff0c;包括其 yum 源也将停止服务。 因此对于仍然需要使用 CentOS 7 的用户来说&#…...

软考-高项,知识点一览十八 项目绩效域

十八 项目绩效域 价值驱动的项目管理知识体系关注价值的实现&#xff0c;包含了 项目管理原则、绩效域、项目生命周期、过程组、10 大知识领域和价值交付系统。在整个生命周期过程中&#xff0c;项目管理者需要始终坚持项目管理原则&#xff0c;通过涵盖 10 大知识领域的项目管…...

macOS安装java

一、下载 官网Java Downloads | Oracle 安装载java8,下载对应的JDK Java Downloads | Oracle 二、双击安装 安装 完成 三、查看安装位置 打开终端窗口&#xff0c;执行命令&#xff1a; /usr/libexec/java_home -V /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Content…...

wpf ScaleTransform

在WPF中&#xff0c;ScaleTransform是用于实现元素缩放的核心类&#xff0c;属于System.Windows.Media命名空间下的变换类型。以下是其主要特性与使用方式的总结&#xff1a; ‌核心属性‌ ‌缩放比例‌ ScaleX&#xff1a;水平方向缩放比例&#xff08;默认1.0&#xff0c;即…...

开源分享!! 4款免费的数据库在线工具

无论是开发企业网站、搭建电商系统&#xff0c;还是做复杂的应用开发&#xff0c;数据库管理都是绕不开的核心环节。你是否遇到过这些问题&#xff1a; 在本地装了一堆数据库工具&#xff0c;来回切换麻烦又低效&#xff1f;想调试 SQL 语句&#xff0c;还要先配置各种环境&am…...

Mybatis-plus 主键自增值与数据库主键自增值不一致

数据库表的自增值为 100 但是在 java 项目中向数据库插入一天数据后报错&#xff1a; org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property id of class com.wf.dao.pojo.Article with…...

数据清洗到底在清洗什么?

在大数据时代&#xff0c;数据是每个企业的五星资产&#xff0c;被誉为“新石油”&#xff0c;但未经处理的数据往往参杂着大量“杂质”。这些“脏数据”不仅影响分析结果&#xff0c;严重的甚至误导企业决策。数据清洗作为数据预处理的关键环节&#xff0c;正是通过“去芜存菁…...

shell编程之正则表达式

目录 1&#xff0c;正则表达式的定义 2&#xff0c;正则表达式用途 正则表达式的常用选项及示例&#xff08;grep为例&#xff09;&#xff1a; sed基本语法及常用选项&#xff1a; awk的基本语句及常用选项&#xff1a; 扩展正则表达式(egrep) 元字符总结&#xff1a; …...

每日一题-力扣-2537. 统计好子数组的数目 0416

LeetCode 2537. 统计好子数组的数目 问题描述 给定一个整数数组nums和一个整数k&#xff0c;定义"好子数组"为包含至少k对相等元素的子数组。任务是计算数组中所有"好子数组"的数量。 两个相等的元素构成一对&#xff0c;例如数组[1,1,1]中有3对(1,1)&am…...

遨游防爆手机:构筑煤矿安全通讯的数字护盾

在煤炭、石油、化工等危险作业场景中&#xff0c;安全生产始终是企业发展的生命线。面对复杂多变的生产环境&#xff0c;传统的通讯设备已难以满足现代工业对安全性、可靠性和智能化的严苛要求。遨游通讯作为国内领先的防爆通讯设备制造商&#xff0c;凭借其核心科技自主研发的…...

进程通信详解

进程间通信&#xff08;IPC&#xff09;详解&#xff1a;原理、方式与使用场景全解析 摘要 进程间通信&#xff08;IPC&#xff09;是操作系统中用于实现多个独立进程之间数据交换和资源协作的重要机制。本文系统地讲解了 IPC 的基本概念、设计目标和系统实现原理&#xff0c;…...

《What Are Step-Level Reward Models Rewarding?》全文翻译

《What Are Step-Level Reward Models Rewarding?Counterintuitive Findings from MCTS-Boosted Mathematical Reasoning》 Step-Level奖励模型到底奖励了什么&#xff1f;来自基于MCTS提升的数学推理的反直觉发现 摘要 Step-level奖励模型&#xff08;SRMs&#xff09;通过…...

windows使用docker-desktop安装milvus和可视化工具attu

这里写目录标题 docker-desktop安装docker安装milvusdocker安装milvus可视化工具attu注意点 docker-desktop安装 参考&#xff1a;Windows Docker 安装 docker安装milvus 参考&#xff1a;添加链接描述在 Docker 中运行 Milvus&#xff08;Windows&#xff09; docker安装m…...

如何通过原型链实现方法的“重写”(Override)?

在 JavaScript 中&#xff0c;通过原型链实现方法的 “重写”&#xff08;Override&#xff09; 的核心思路是&#xff1a;在子类&#xff08;或子对象&#xff09;的原型链上定义同名方法&#xff0c;覆盖父类&#xff08;或父对象&#xff09;的方法。以下是具体实现步骤和代…...

PyTorch - Tensor 学习笔记

上层链接&#xff1a;PyTorch 学习笔记-CSDN博客 Tensor 初始化Tensor import torch import numpy as np# 1、直接从数据创建张量。数据类型是自动推断的 data [[1, 2],[3, 4]] x_data torch.tensor(data)torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])输出&am…...

《协议栈的骨架:从Web请求到比特流——详解四层架构的可靠传输与流量控制》

前言 本篇博客将详细介绍网络原理&#xff08;细~~~&#xff09; &#x1f496; 个人主页&#xff1a;熬夜写代码的小蔡 &#x1f5a5; 文章专栏 若有问题 评论区见 &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ​ ​​ ​​ 一.应用层 这里的应用层只是个开头&a…...

软考 系统架构设计师系列知识点 —— 设计模式之创建者模式

本文内容参考&#xff1a; 软考 系统架构设计师系列知识点之设计模式&#xff08;2&#xff09;_系统架构设计师中考设计模式吗-CSDN博客 创建者模式_百度百科 建造者模式_百度百科 https://zhuanlan.zhihu.com/p/551870461 特此致谢&#xff01; Builder Pattern&#xf…...

oracle判断同表同条件查出两条数据,根据长短判断差异

目标&#xff1a;同一个物料&#xff0c;账套不同&#xff0c;排查同料号有差异的规格名称 在Oracle数据库中&#xff0c;如果你想查询同一张表中两条数据某个字段的长度不同的情况&#xff0c;你可以使用JOIN语句或者窗口函数&#xff08;如ROW_NUMBER()、RANK()、DENSE_RANK…...

咋用fliki的AI生成各类视频?AI生成视频教程

最近想制作视频&#xff0c;多方考查了决定用fliki&#xff0c;于是订阅了一年试试&#xff0c;这个AI生成的视频效果来看真是不错&#xff0c;感兴趣的自己官网注册个账号体验一下就知道了。 fliki官网 Fliki生成视频教程 创建账户并登录 首先&#xff0c;访问fliki官网并注…...

【STM32-代码】

STM32-代码 ■ printf() 输出到uart1■■■ ■ printf() 输出到uart1 static UART_HandleTypeDef * g_HDebugUART &huart1;int fputc(int c, FILE *f) {(void)f;HAL_UART_Transmit(g_HDebugUART, (const uint8_t *)&c, 1, DEBUG_UART_TIMEOUT);return c; }int fgetc…...

用cursor三个小时复刻高德地图的足迹地图

用cursor三个小时复刻了高德地图的足迹地图&#xff0c;当然&#xff0c;是“低配”版的。 1、首先要初始化&#xff0c;提出一个需求&#xff0c;让它自由发挥 运行之后发现它报错了&#xff0c;原因出在这行代码&#xff0c;“https://cdn.jsdelivr.net/npm/echarts5,4.3/…...

Git分支管理与工作流实践

Git分支管理与工作流实践 一、Git分支规范与核心原则 主分支&#xff08;master/main&#xff09; 核心作用&#xff1a;存储生产环境代码&#xff0c;永远保持稳定且可直接发布。禁止直接在此分支开发。操作规范&#xff1a;仅通过合并release或hotfix分支更新&#xff0c;合…...

python面试总结

目录 Python基础 1、python及其特点 2、动态类型和静态类型&#xff1f; 3、变量命名规则是什么&#xff1f; 4、基本数据类型有哪些&#xff1f; 5、Python 中字典&#xff1f; 6、集合set是什么&#xff1f;有什么特点&#xff1f; 7、python的字符串格式化 函数 1…...

基于骨骼识别的危险动作报警系统设计与实现

基于骨骼识别的危险动作报警系统设计与实现 基于骨骼识别的危险动作报警分析系统 【包含内容】 【一】项目提供完整源代码及详细注释 【二】系统设计思路与实现说明 【三】基于骨骼识别算法的实时危险行为预警方案 【技术栈】 ①&#xff1a;系统环境&#xff1a;Windows 10…...

HarmonyOS 5.0应用开发——五子棋游戏(鸿蒙版)开发

【高心星出品】 文章目录 五子棋游戏&#xff08;鸿蒙版&#xff09;开发运行效果开发步骤项目结构核心代码棋盘组件&#xff1a;游戏逻辑处理&#xff1a;主页面&#xff1a; 五子棋游戏&#xff08;鸿蒙版&#xff09;开发 五子棋是一款传统的两人策略型棋类游戏&#xff0…...

避坑,app 播放器media:MediaElement paly报错

System.Runtime.InteropServices.COMException HResult=0x8001010E Message= Source=WinRT.Runtime StackTrace: 在 WinRT.ExceptionHelpers.<ThrowExceptionForHR>g__Throw|38_0(Int32 hr) 在 ABI.Microsoft.UI.Xaml.Controls.IMediaPlayerElementMethods.get_MediaPlay…...

STM32单片机入门学习——第38节: [11-3] 软件SPI读写W25Q64

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.16 STM32开发板学习——第一节&#xff1a; [1-1]课程简介 前言开发板说明引用解答和…...

使用阿里云创建公司官网(使用wordpress)

安装 LNMP 不通的lnmp版本 https://lnmp.org/download.html wget http://soft.vpser.net/lnmp/lnmp2.1.tar.gz -cO lnmp2.1.tar.gztar zxf lnmp2.1.tar.gz && cd lnmp2.1 && ./install.sh lnmp数据库选5.7 选好数据库&#xff0c;会让你设置数据库 root 用户…...

Python程序结构深度解析:顺序结构与对象布尔值的底层逻辑与应用

一、程序结构的三大基石 在计算机科学领域&#xff0c;任何复杂的算法都可以分解为顺序结构、选择结构和循环结构这三种基本结构的组合。这种结构化编程思想由计算机科学家Bhm和Jacopini在1966年首次提出&#xff0c;至今仍是现代编程语言设计的核心原则。 1.1 顺序结构的本质…...

【系统搭建】Ubuntu系统两节点间SSH免密配置

SSH免密配置是MPI分布式、DPDK通信等集群节点间通信的基础配置 1. 安装SSH服务端&#xff08;所有节点执行&#xff09; Ubuntu 默认只安装 SSH 客户端&#xff08;openssh-client&#xff09;&#xff0c;未安装服务端&#xff08;openssh-server&#xff09;,需要手动安装并…...

美信监控易:揭秘高效数据采集和数据分析双引擎

在当今复杂多变的运维环境中&#xff0c;一款强大的运维管理软件对于保障企业的IT系统稳定运行至关重要。北京美信时代的美信监控易运维管理软件&#xff0c;凭借其卓越的数据分析双引擎&#xff0c;成为了众多运维团队的首选。 首先&#xff0c;美信监控易的数据采集引擎展现出…...

基于STM32+FPGA的地震数据采集器软件设计,支持RK3568+FPGA平台

0 引言 地震观测是地球物理观测的重点&#xff0c;是地震学和 地球物理学发展的基础 [1] 。地震数据采集器主要功 能是将地震计采集的地震波模拟信号转换为数字信 号并进行记录或传输 [2] &#xff0c;为地震学提供大量的基础 数据。本文将介绍基FPGAARM的地震数据采集器软…...

NO.95十六届蓝桥杯备战|图论基础-单源最短路|负环|BF判断负环|SPFA判断负环|邮递员送信|采购特价产品|拉近距离|最短路计数(C++)

P3385 【模板】负环 - 洛谷 如果图中存在负环&#xff0c;那么有可能不存在最短路。 BF算法判断负环 执⾏n轮松弛操作&#xff0c;如果第n轮还存在松弛操作&#xff0c;那么就有负环。 #include <bits/stdc.h> using namespace std;const int N 2e3 10, M 3e3 1…...

Linux 网络管理深度指南:从基础到高阶的网卡、端口与路由实战

一、网卡管理&#xff1a;构建网络连接的基石 1.1 现代网络工具链解析 在当代Linux系统中&#xff0c;iproute2套件已全面取代传统的net-tools&#xff0c;其优势体现在&#xff1a; 推荐组合命令&#xff1a; ip -c addr show | grep "inet " # 彩色显示有效IP…...

《重构全球贸易体系用户指南》解读

文章目录 背景核心矛盾与理论框架美元的“特里芬难题”核心矛盾目标理论框架 政策工具箱的协同运作机制关税体系的精准打击汇率政策的混合干预安全工具的复合运用 实施路径与全球秩序重构阶段性目标 风险传导与反制效应内部失衡加剧外部反制升级系统性风险 范式突破与理论再思考…...

stateflow中的函数

最近开始使用STATEFLOW,感觉功能比较强大,在嵌入式的应用中应该缺少不了,先将用到的仔细总结一下。还有一点,积极拥抱ai,学会使用AI的强大功能来学习。 在 Stateflow 中,不同类型的函数和状态适用于不同的建模需求。以下是 图形函数(Graphical Function)、Simulink 函…...

41.[前端开发-JavaScript高级]Day06-原型关系图-ES6类的使用-ES6转ES5

JavaScript ES6实现继承 1 原型继承关系图 原型继承关系 创建对象的内存表现 2 class方式定义类 认识class定义类 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible&qu…...

Flutter学习四:Flutter开发基础(一)Widget

Widget 简介 0 引言 本文是对 Flutter Widget 相关知识的学习和总结。 1 Widget 概念 1.1 Widget 基础 Widget 字面意思&#xff1a;控件、组件、部件、微件、插件、小工具widget 的功能是"描述一个UI元素的配置信息"&#xff0c;所谓的配置信息就是 Widget 接收…...

Dify智能体平台源码二次开发笔记(6) - 优化知识库pdf文档的识别

目录 前言 新增PdfNewExtractor类 替换ExtractProcessor类 最终结果 前言 dify的1.1.3版本知识库pdf解析实现使用pypdfium2提取文本&#xff0c;主要存在以下问题&#xff1a; 1. 文本提取能力有限&#xff0c;对表格和图片支持不足 2. 缺乏专门的中文处理优化 3. 没有文档结…...

【LaTeX】公式图表进阶操作

公式 解决不认识的符号 查资料&#xff1a;1&#xff09;知道符号样子&#xff1b;2&#xff09;知道符号含义 放大版括号 用来括住存在分式的式子&#xff0c;或者用来括住内部由有很多括号的式子。用法是在左右括号[]分别加上\left和\right \[ J_r\dfrac{i \hbar}{2m} \l…...

第二阶段:数据结构与函数

模块4&#xff1a;常用数据结构 (Organizing Lots of Data) 在前面的模块中&#xff0c;我们学习了如何使用变量来存储单个数据&#xff0c;比如一个数字、一个名字或一个布尔值。但很多时候&#xff0c;我们需要处理一组相关的数据&#xff0c;比如班级里所有学生的名字、一本…...

matlab中simulink的快捷使用方法

连接系统模块还有如下更有效的方式:单击起始模块。 按下 Ctrl键&#xff0c;并单击目标块。 图示为已经连接好的系统模块 旋转模块&#xff1a;选中模块后按图示点击即可...

Redux部分

在src文件夹下 的store文件夹下创建modules/user.js和index.js module/ user.js // 存储用户相关const { createSlice } require("reduxjs/toolkit");const userStore createSlice({name:"user",// 数据状态initialState:{token:},// 同步修改方法red…...

基于STM32F103C8T6的温湿度检测装置

一、系统方案设计 1、系统功能分析 本项目设计的是一款基于STM32F103C8T6的温室大棚检测系统低配版。由 STM32F103C8T6最小系统板&#xff0c;OLED显示屏&#xff0c;DHT11温湿度检测传感器&#xff0c;光敏电阻传感器组成&#xff0c; 可以实现如下功能&#xff1a; 使用D…...

设计模式 - 单例模式

一个类不管创建多少次对象&#xff0c;永远只能得到该类型一个对象的实力 常用到的&#xff0c;比如日志模块&#xff0c;数据库模块 饿汉式单例模式&#xff1a;还没有获取实例对象&#xff0c;实例对象就已经产生了 懒汉式单例模式&#xff1a;唯一的实例对象&#xff0c;…...

Linux驱动开发1 - Platform设备

背景 所有驱动开发都是基于全志T507&#xff08;Android 10&#xff09;进行开发&#xff0c;用于记录驱动开发过程。 简介 什么是platform驱动自己上网搜索了解。 在driver/linux/platform_device.h中定义了platform_driver结构体。 struct platform_driver {int (*probe…...

力扣-hot100(盛最多水的容器)

11. 盛最多水的容器 中等 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xf…...