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

Android —— 四大组件之Activity(一)

Android四大组件即Activity(前台)Service(后台),Broadcast(通信),ContentProvider(数据存储)
一、Activity

  • Activity 充当了应用与用户互动的入口点
  • Activity 提供窗口供应用在其中绘制界面。此窗口通常会填满屏幕,但也可能比屏幕小,并浮动在其他窗口上面
  • 要使应用能够使用 Activity,必须在清单(manifest)中声明Activity及其特定属性,例如:
 <manifest ... ><application ... ><activity android:name=".ExampleActivity" />...</application ... >
  ...
</manifest >

1.1 生命周期

  1. Activity的生命周期有七个方法:onCreate(),onStart(),onResume(),onRestart(),onPause(),onStop(),onDestroy()
  2. 当第一次启动一个Activity时,回调如下:onCreate->onStart->onResume
  3. 当Activity退到后台:用户打开一个新的Avtivity或切换到桌面时,回调如下:onPause->onStop,这里有一种特殊情况,如果新启动的Activity是透明主题,那么不会回调onStop
  4. 当用户再次回到原Activity时,回调如下:onRestart->onStart->onResume
  5. 当用户按back键回退时,回调如下:onPause->onStop->onDestroy
  6. 从一个Activity启动另一个Activity时,旧Activity的onPause先调用,然后新Activity才会启动。即:onPause->onCreate->onStart->onResume->onStop
  7. 当Activity处于前台并可与用户进行交互时,一定会执行onResume
    在这里插入图片描述

1.2 异常情况

除了用户进行操作所导致的正常生命周期之外,还有一些异常情况。比如当资源相关的系统配置发生改变或内存不足时,Activity就可能被杀死

例如,当前Activity处于竖屏状态,当把手机横屏时,系统配置发生改变,这时Activity就会被销毁重建。其生命周期如下所示
[图片]

因此可以看出来,onSaveInstanceState和onRestoreInstanceState这两个方法分别是用来发生异常情况时保存数据、恢复数据的。

onSaveInstanceState
调用时机:Activity异常销毁时(例如内存不足、横竖屏切换)
作用:保存信息到Bundle中,当重建Activity时可以通过这个Bundle取出数据
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {super.onSaveInstanceState(outState);outState.putString("data","this is data");  //保存数据
}@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {super.onRestoreInstanceState(savedInstanceState);String data = savedInstanceState.getString("data"); //取出数据
}

1.3 启动模式

  1. Standard(标准模式):
  • 这是默认的启动模式。每次启动一个新的 Activity,系统都会创建一个新的实例,不管之前是否已经有相同实例存在。
  1. SingleTop(单顶部模式):
  • 在这种模式下,如果要启动的 Activity 已经位于任务栈的顶部,系统将不会创建新的实例,而是会重用现有的实例。如果不在顶部,则会创建新的实例。
  1. SingleTask(单任务模式):
  • 在这种模式下,每个任务栈中只能有一个该类型的 Activity 实例。如果要启动的 Activity 已经存在于其他任务栈中,系统会将任务栈调至前台并复用现有实例,否则会创建新的任务栈和实例。
  • 示例场景:应用程序的主界面,当用户通过应用程序图标启动时,始终会显示同一个主界面实例,无论之前是否已经有其他界面打开。
  1. SingleInstance(单实例模式):
  • 在这种模式下,系统会为特定 Activity 创建一个新的任务栈,并确保这个任务栈中只有这一个实例。其他应用程序无法在同一个任务栈内启动相同类型的 Activity。
  • 示例场景:应用程序的共享资源或功能,例如一个音乐播放器,无论从哪里启动,都只会有一个全局的播放器界面,不会被其他界面所覆盖。

1.4 任务栈

任务栈(Task Stack)是一种用于管理Activit的数据结构。每个任务栈都代表了一个用户任务(user task),而任务栈中包含了一系列相互关联的活动。任务栈的概念主要用于管理应用程序中不同活动之间的导航和交互。
每当启动一个新的Activity,系统会将该Activity放入一个任务栈中。任务栈可以看作是Activity的集合,按照启动的顺序排列,用户可以通过返回按钮或者其他导航手段在这些活动之间切换。
在任务栈中,活动的顺序和关系是有一定规则的:

  1. 后进先出(Last In, First Out,LIFO): 当启动一个新的Activity时,它会被放置在任务栈的顶部。当用户按下返回按钮时,系统会从栈顶移除当前Activity,并显示下面的一个Activity。
  2. 同一应用程序的Activity: 默认情况下,来自同一应用程序的Activity会放在同一个任务栈中。这样做可以实现应用程序内部的导航。
  3. 不同应用程序的Activity: 不同应用程序的活动会放在不同的任务栈中。这样做可以实现应用程序之间的隔离和交互。
    任务栈的存在使得 Android 应用程序能够更好地处理多个活动之间的关系,实现导航和用户体验。任务栈的特性还可以与活动的启动模式一起使用,以达到更精确的界面导航和管理效果。
    1.5 隐式启动
    安卓有两种方式启动Activity,一种是显示启动,另外一种是隐式启动。显示启动我们在项目中经常用到,大家也都比较熟悉。隐式启动常用于不同应用之间的跳转(例如打开支付宝微信的支付页面),也可用于H5与native之间的交互。隐式启动就是action,category和data的匹配
    intent-filter 过滤器
  • 一个Activity 可以有多个过滤器。每个过滤器必须同时有一个或多个action,category 和 data。
  • Intent 只要匹配上其中一个过滤器,就可以启动这个Activity.
  • 而匹配上这个过滤器,就是同时匹配上这个过滤器的 action,category和data.
  • 上面说的 intent-filter 其实同样适用于 BroadcastReceiver 和 Service。
    匹配规则
  1. action的匹配规则
  • action在Intent-filter可以设置多条
  • intent中必须指定action否则匹配失败且intent中action最多只有一条
  • intent中的action和intent-filter中的action必须完全一样时(包括大小写)才算匹配成功
  • intent中的action只要与intent-filter其中的一条匹配成功即可
<activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filte><intent-filter><action android:name="com.test.action.ENTER"/><action android:name="com.test.action.ENTER2"/><category android:name="android.intent.category.DEFAULT"/></intent-filter>
</activity>

下面的两个intent都可以匹配上面MainActivity的action规则

Intent intent = new Intent("com.test.action.ENTER");startActivity(intent);Intent intent2 = new Intent("com.test.action.ENTER2");startActivity(intent2);
  1. category的匹配规则
  • category在intent-filter中可以有多条
  • category在intent中也可以有多条
  • intent中所有的category都可以在intent-filter中找到一样的(包括大小写)才算匹配成功
  • 通过intent启动Activity的时候如果没有添加category会自动添加android.intent.category.DEFAULT,如果intent-filter中没有添加android.intent.category.DEFAULT则会匹配失败
  1. data的匹配规则
    在说data的匹配规则之前先来说说data的语法
<data android:host="string"android:mimeType="string"android:path="string"android:pathPattern="string"android:pathPrefix="string"android:port="string"android:scheme="string"/>

data由两部分组成:Uri 和 mimeType 即:
data = Uri + mimeType
【mimeType】是指媒体类型,image/png,audio/mpeg4-generic 和 video/* 等,分别指图片,文本,视频等
【Uri 】 :的形式是: : // : / | |
比如:https://www.baidu.com:8080/sraech/football 或 content://com.demo.test:200//folder/subfolder/etd
scheme 是 Uri 的形式,可以是:file,content,http等
Host 是域名,比如:www.baidu.com
port 是端口,比如:8080
path,pathPrefix 和 pathPattern 表示路径的参数

  • intent-filter中可以设置多个data
  • intent中只能设置一个data
  • intent-filter中指定了data,intent中就要指定其中的一个data
  • setType会覆盖setData,setData会覆盖setType,因此需要使用setDataAndType方法来设置data和mimeType


    如果没有指定Uri ,那系统会默认给这个data 设置Uri是content或File
    比如:
    Intent intent = new Intent();
    intent.setDataAndType(Uri.parse(“file://abcd”),“image/png”);
    这样Intent 设置的data方可匹配过滤器中的data。
    设置data 和 type时,要调用 setDataAndType()这个方法。不要先调用 setData() 再调用 setType() ,这两方法会同时清掉对方。
    当然,安卓自带了一些action可以直接使用
    [图片]

相关文章:

Android —— 四大组件之Activity(一)

Android四大组件即Activity&#xff08;前台&#xff09;Service&#xff08;后台&#xff09;&#xff0c;Broadcast&#xff08;通信&#xff09;&#xff0c;ContentProvider&#xff08;数据存储&#xff09; 一、Activity Activity 充当了应用与用户互动的入口点Activity …...

Ubuntu手持司岚S2激光雷达进行建图

目前通过ros包将激光雷达数据读取之后: roslaunch rplidar_ros view_rplidar_s2.launch 再通过运行 cartographer_ros结点将代码运行起来 roslaunch cartographer_ros demo_revo_lds.launch 这里要注意, 在demo_revo_lds.launch 文件中引入的revo_lds.lua文件中要使用仿真时…...

快速了解 Aurora DSQL

上周在 AWS re:Invent大会&#xff08;类似于阿里云的云栖大会&#xff09;上推出了新的产品 Aurora DSQL[1] &#xff0c;在数据库层面提供了多区域、多点一致性写入的能力&#xff0c;兼容 PostgreSQL。并声称&#xff0c;在多语句跨区域的场景下&#xff0c;延迟只有Google …...

【Android Studio】学习——网络连接

实验&#xff1a;Android网络连接 文章目录 实验&#xff1a;Android网络连接[toc]实验目标和实验内容&#xff1a;1、掌握Android联网的基本概念&#xff1b;2、能够使用URL connection实现网络连接&#xff1b;3、掌握第三方库的基本概念4、需实现的具体功能 实验结果功能说明…...

c语言复制字符串memcpy和strncpy函数区别

memcpy 和 strncpy 的耗时区别 这两个函数在功能上有明显差异&#xff0c;导致性能和耗时也不同。以下是它们的详细对比&#xff1a; 1. 功能差异 函数功能memcpy按字节复制数据&#xff0c;不处理字符串终止符 \0&#xff0c;适用于任意数据类型的内存复制。strncpy复制字符…...

Java设计模式 —— 【创建型模式】建造者模式详解

文章目录 一、建造者模式二、案例实现三、优缺点四、模式拓展五、对比1、工厂方法模式VS建造者模式2、抽象工厂模式VS建造者模式 一、建造者模式 建造者模式&#xff08;Builder Pattern&#xff09; 又叫生成器模式&#xff0c;是一种对象构建模式。它可以将复杂对象的建造过…...

python爬虫--某房源网站验证码破解

文章目录 使用模块爬取目标验证码技术细节实现成果代码实现使用模块 requests请求模块 lxml数据解析模块 ddddocr光学识别 爬取目标 网站验证码破解思路是统一的,本文以城市列表为例 目标获取城市名以及城市连接,之后获取城市房源信息技术直接替换地址即可 验证码 技术…...

Android 项目依赖库无法找到的解决方案

目录 错误信息解析 解决方案 1. 检查依赖版本 2. 检查 Maven 仓库配置 3. 强制刷新 Gradle 缓存 4. 检查网络连接 5. 手动下载依赖 总结 相关推荐 最近&#xff0c;我在编译一个 Android 老项目时遇到了一个问题&#xff0c;错误信息显示无法找到 com.gyf.immersionba…...

SpringBoot3整合SpringMVC

一、实现过程: (1).创建程序 (2).引入依赖: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…...

内网穿透 natapp安装与使用

前言 NATAPP是一款基于ngrok的内网穿透工具。以下是对NATAPP的详细概述&#xff1a; 基本概念 定义&#xff1a;内网穿透&#xff08;NAT穿透&#xff09;是一种技术&#xff0c;它允许具有特定源IP地址和端口号的数据包能够绕过NAT设备&#xff0c;从而被正确地路由到内网主机…...

docker镜像构建企业级示例

华子目录 示例&#xff08;在centos容器中源码编译nginx&#xff08;单介构建&#xff09;&#xff09;包准备为centos容器提供网络源添加企业7的ISO文件 提交为新的centos镜像编写dockerfile文件构建镜像如何优化自己构建的镜像大小多介构建 ldd命令基本用法示例 镜像优化方案…...

【论文阅读】龙芯2号处理器设计和性能分析

作者&#xff1a;胡伟武老师 胡伟武老师是计算机体系结构方向的大牛&#xff0c;推动了龙芯处理器的发展 学习体会&#xff1a; 学习追踪龙芯系列“工程流”论文&#xff0c;看看如何做工程&#xff0c;完成→完美 龙芯2号处理器几乎是工程向的论文&#xff0c;主要看一下实现…...

二一(GIT4)、echarts(地图)、黑马就业数据平台(学生页-增 删 改)

1. echarts 地图 echarts社区&#xff1a;makeapie echarts社区图表可视化案例 社区模板代码地址&#xff1a;自定义 tooltip-轮播 - category-work,series-map地图,tooltip提示框,visualMap视觉映射 - makeapie echarts社区图表可视化案例 // todo: 籍贯分布 地图 function…...

数据结构排序算法详解

数据结构排序算法详解 1、冒泡排序&#xff08;Bubble Sort&#xff09;2、选择排序&#xff08;Selection Sort&#xff09;2、插入排序&#xff08;Insertion Sort&#xff09;4、快速排序&#xff08;Quick Sort&#xff09; 1、冒泡排序&#xff08;Bubble Sort&#xff09…...

使用kubeadm命令安装k8s

版本信息 kubernetesVersion: 1.28.01. 前期环境准备 先配置软件源可以安装kubeadm、kubelet、kubectl三个软件,不同的系统不同的安装方式,这里不列举了,自己找。然后要安装cri-dockerd,因为kubernetes从1.24版本不再支持docker的api,支持原生的containerd的api,可以使用…...

依托 Spring Boot框架,精铸高扩展性招聘信息管控系统

1 绪 论 1.1 课题背景与意义 在Internet高速发展的今天&#xff0c;计算机的应用几乎完全覆盖我们生活的各个领域&#xff0c;互联网在经济&#xff0c;生活等方面有着举足轻重的地位&#xff0c;成为人们资源共享&#xff0c;信息快速传递的重要渠道。在中国&#xff0c;网上管…...

docker 部署 mysql 9.0.1

docker 如何部署 mysql 9 &#xff0c;请看下面步骤&#xff1a; 1. 先看 mysql 官网 先点进去 8 版本的 Reference Manual 。 选择 9.0 版本的。 点到这里来看&#xff0c; 这里有一些基础的安装步骤&#xff0c;可以看一下。 - Basic Steps for MySQL Server Deployment wit…...

SQL:从某行开始,查询一定行数的语句

比如实现从第五行开始查询5行数据的SQL语句 不同数据库有不同的实现方式&#xff0c;下面是各大数据库的查询语句。 1. SQL Server&#xff08;适用于 SQL Server 2012 及之后版本&#xff09;、DB2、Oracle&#xff08;适用12c及以上版本&#xff09; 这几种数据库的实现方式…...

18. 模块

一、什么是模块 模块化 指将一个完成的程序分解为一个一个小的模块。通过将模块组合&#xff0c;来搭建一个完整的程序。如果不采用模块化&#xff0c;那么所有的代码将统一保存到一个文件中。采用模块化后&#xff0c;将程序分别编写到多个文件中。使用模块化后&#xff0c;我…...

GroundingDINO微调训练_训练日志解释

文章目录 1. 训练日志1. Epoch 和 Iteration2. Learning Rate&#xff08;学习率&#xff09;3. ETA&#xff08;预计剩余时间&#xff09;4. Time 和 Data Time5. Memory6. Gradient Norm&#xff08;梯度范数&#xff09;7. Loss&#xff08;损失&#xff09;8. Individual L…...

华为eNSP:VRRP多网关负载分担

一、实验拓扑及目的 二、实验命令及实验步骤 LSW1的配置命令 <Huawei>sy [Huawei]un in e [Huawei]sys S1 [S1]vlan batch 100 200 [S1]int g0/0/1 [S1-GigabitEthernet0/0/1]port link-type access [S1-GigabitEthernet0/0/1]port default vlan 100 [S1-GigabitEtherne…...

uni-app写的微信小程序如何实现账号密码登录后获取token,并且每天的第一次登录后都会直接获取参数而不是耀重新登录(1)

uni-app写的微信小程序如何实现账号密码登录后获取token&#xff08;而token的有效器一般是30分钟&#xff0c;当页面在操作时token是不会过去&#xff0c;&#xff0c;离开页面第二天登录时token就是过期状态&#xff0c;因为记住了账号密码就不会操作再次登录&#xff0c;但是…...

【linux】(29)shell-变量和引号

Shell 脚本中有三种引号&#xff1a;双引号 "、单引号 和反引号 。它们有不同的作用。 双引号 " 双引号允许引用的字符串中包含变量和命令替换。 #!/bin/bash name"Alice" echo "Hello, $name!"单引号 单引号中的内容被原样引用&#xff0…...

Linux如何安装discuz

在Linux上安装Discuz!程序通常涉及以下步骤&#xff1a; 安装Web服务器&#xff08;如Apache或Nginx&#xff09;和数据库&#xff08;如MySQL或PostgreSQL&#xff09;。 下载Discuz!的最新版本。 将Discuz!文件上传到Web服务器的公共目录中。 根据README.md文件配置Discuz…...

SpringBoot如何使用EasyExcel实现表格导出(简洁快速入门版本)

前言 前面给大家介绍了动态表头的导入&#xff0c;这篇文章给大家介绍如何实现导出 前面给大家介绍了动态表头的导入&#xff0c;我们了解了如何通过EasyExcel灵活地读取结构不固定的Excel文件。这次&#xff0c;我们将目光转向数据导出——即如何将数据以Excel文件的形式输出…...

Python爬虫使用示例-保存诗人简介到csv文件中

一、获取资源 目标网址&#xff1a;&#xff08;第一页&#xff09; https://www.shicimingju.com/category/all&#xff08;后续&#xff09; https://www.shicimingju.com/category/all_2 https://www.shicimingju.com/category/all_3 ... https://www.shicimingju.com/ca…...

yocto的xxx.bb文件在什么时候会拷贝文件到build目录

在 Yocto 中&#xff0c;.bb 文件用于描述如何构建和安装一个软件包&#xff0c;而文件在构建过程中的拷贝操作通常会在某些特定的步骤中进行。具体来说&#xff0c;文件会在以下几个阶段被拷贝到 build 目录&#xff08;或者更准确地说&#xff0c;拷贝到目标目录 ${D}&#x…...

Mysql定时数据库备份保姆级教程

目录 一、需要解决的问题 1、如何传输文件? 2、如何备份数据库? 3、如何建立一个定时任务? 二、实施步骤 1、建立SSH公钥&#xff0c;实现无密码登录 2、编写备份数据库脚本 3、编写定时任务 MySQL 是一种全球广泛使用的关系型数据库管理系统&#xff0c;它存储的数…...

使用 Grafana 展示多个TiDB集群的告警

作者&#xff1a; yangzhj 原文来源&#xff1a; https://tidb.net/blog/229e283c 背景 在日常运维工作中&#xff0c;我们有时需要将多个生产集群的告警信息展示在一起&#xff0c;统一集中观察和分析TiDB 集群的告警情况。 本文将通过 Grafana 的多数据源功能来将多个Ti…...

lnmp+discuz论坛 附实验:搭建discuz论坛

Inmpdiscuz论坛 Inmp: t: linux操作系统 nr: nginx前端页面 me: mysql数据库 账号密码&#xff0c;等等都是保存在这个数据库里面 p: php——nginx擅长处理的是静态页面&#xff0c;页面登录账户&#xff0c;需要请求到数据库&#xff0c;通过php把动态请求转发到数据库 n…...

AI时代的开发新纪元:云开发 Copilot

AI时代的开发新纪元&#xff1a;云开发 Copilot 目录 引言&#xff1a;AI时代的开发新纪元低代码与AI的完美融合云开发 Copilot的革命性意义云开发 Copilot 的核心特性解析 快速生成应用功能低代码与AI的深度结合 实战演练&#xff1a;云开发 Copilot 的应用案例 从需求到实现…...

探索 Java 中的 Bug 世界

在 Java 编程的旅程中&#xff0c;我们不可避免地会遇到各种 Bug。这些 Bug 可能会导致程序出现意外的行为、崩溃或者性能问题。了解 Java Bug 的类型、产生原因以及解决方法&#xff0c;对于提高我们的编程技能和开发出稳定可靠的应用程序至关重要。 一、Java Bug 的定义与分类…...

【C++】等差数列末项计算题解析及优化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述与输入输出要求&#x1f4af;数学分析与公式推导公差的计算通项公式推导 &#x1f4af;示例解析解题步骤 &#x1f4af;程序实现与解析初版代码代码解析优点与不足…...

【LeetCode】55.跳跃游戏

文章目录 题目链接&#xff1a;题目描述&#xff1a;解题思路&#xff08;贪心算法&#xff09;&#xff1a; 题目链接&#xff1a; 55.跳跃游戏 题目描述&#xff1a; 解题思路&#xff08;贪心算法&#xff09;&#xff1a; 如果某一个位置的元素为N&#xff0c;表示后面N…...

linux基于systemd自启守护进程 systemctl自定义服务傻瓜式教程

系统服务 书接上文: linux自启任务详解 演示系统:ubuntu 20.04 开发部署项目的时候常常有这样的场景: 业务功能以后台服务的形式提供,部署完成后可以随着系统的重启而自动启动;服务异常挂掉后可以再次拉起 这个功能在ubuntu系统中通常由systemd提供 如果仅仅需要达成上述的场…...

SparkSQL编程实践

文章目录 SparkSQL编程实践1.1. 编程模型介绍1.2. SparkSQL编程1.2.1. 第三方库安装1.2.2. SparkSQL程序的结构1.2.3. SparkSQL执行模式1.2.3.1. Local模式1.2.3.2. 集群模式 1.2.4. 数据加载1.2.4.1. 通过RDD创建DataFrame1.2.4.2. 通过读取数据外部数据创建DataFrame标准读取…...

模型训练数据-MinerU一款Pdf转Markdown软件

模型训练数据-MinerU一款Pdf转Markdown软件-说明 简介&#xff1a; MinerU是什么 MinerU是上海人工智能实验室OpenDataLab团队推出的开源智能数据提取工具&#xff0c;专注于复杂PDF文档的高效解析与提取。MinerU能将包含图片、公式、表格等元素的多模态PDF文档转化为易于分析…...

shell基础用法

shell基础知识 shell中的多行注释 :<<EOF read echo $REPLY # read不指定变量&#xff0c;则默认写入$REPLY EOF # :<<EOF ...EOF 多行注释&#xff0c;EOF可以替换为&#xff01;# 等文件目录和执行目录 echo $0$0 # ./demo.sh echo $0的realpath$(realpath…...

Redisson分布式锁

概览 个人博客源地址 Redisson不只是一个 Java Redis 客户端&#xff0c;它是一个以内存 Redis 服务器作为后端的处理 Java 对象(如 java.util.List, java.util.Map, java.util.Set, java.util.concurrent.locks.Lock 等)的一个框架。 Redisson提供了使用Redis的最简单和最…...

【C语言--趣味游戏系列】--电脑关机整蛊小游戏

前言&#xff1a; 老铁们&#xff0c;还是那句话&#xff0c;学习很苦游戏来补&#xff0c; 为了提高大家与朋友之间的友谊&#xff0c;博主在这里分享一个电脑关机的恶作剧小游戏&#xff0c;快拿去试试吧&#xff01;&#xff01;&#xff01; 目录&#xff1a; 1.电脑关机代…...

C#实现一个HttpClient集成通义千问-开发前准备

集成一个在线大模型&#xff08;如通义千问&#xff09;&#xff0c;来开发一个chat对话类型的ai应用&#xff0c;我需要先了解OpenAI的API文档&#xff0c;请求和返回的参数都是以相关接口文档的标准进行的 相关文档 OpenAI API文档 https://platform.openai.com/docs/api-…...

二叉树优选算法(一)

一、根据二叉树创建字符串 题目介绍&#xff1a; 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 "()" 表示&#xff0c;转化后需…...

单片机C51--笔记8-STC89C51RC/RD-IIC协议

一、概述 IIC全称Inter-Integrated Circuit (集成电路总线) 是由PHILIPS公司在80年代开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。IIC属于半双 工同步通信方式。 特点 简单性和有效性。 由于接口直接在组件之上&#xff0c;因此IIC总线占用的空间非常小…...

HttpUtil的get和post请求

Http工具类 import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.ht…...

leetcode 二进制数转字符串

1.题目要求: 2.题目代码: class Solution { public:string printBin(double num) {string result;double compare_value 1.0;//先给把0和.赋值给result;result.push_back(0);result.push_back(.);while(result.size() < 33){//利用十进制转换成二进制的方法//1.先给num …...

前端项目使用gitlab-cicd+docker实现自动化部署

GitLab CI/CD 是一个强大的工具&#xff0c;可以实现项目的自动化部署流程&#xff0c;从代码提交到部署只需几个步骤。本文将带你配置 GitLab CI/CD 完成一个前端项目的自动化部署。 前言 为什么使用cicddocker&#xff1f; 目前我们公司开发环境使用的shell脚本部署&#…...

【Linux】进程

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;Linux 目录 一、冯诺依曼体系结构 &#x1f31f;系统调用和库函数概念 二、操作系统OS 三、进程 &#x1f31f;查看进程 &#x1f31f;通过系统调用获取进程标示符 &#x1f31f;通过系统调用创…...

transformers生成式对话机器人

简介 生成式对话机器人是一种先进的人工智能系统&#xff0c;它能够通过学习大量的自然语言数据来模拟人类进行开放、连贯且创造性的对话。与基于规则或检索式的聊天机器人不同&#xff0c;生成式对话机器人并不局限于预定义的回答集&#xff0c;而是可以根据对话上下文动态地…...

Text2SQL(NL2sql)对话数据库:设计、实现细节与挑战

Text2SQL&#xff08;NL2sql&#xff09;对话数据库&#xff1a;设计、实现细节与挑战 前言1.何为Text2SQL&#xff08;NL2sql&#xff09;2.Text2SQL结构与挑战3.金融领域实际业务场景4.注意事项5.总结 前言 随着信息技术的迅猛发展&#xff0c;人机交互的方式也在不断演进。…...

C# 关于加密技术以及应用(二)

AES&#xff08;Advanced Encryption Standard&#xff09;和 RSA&#xff08;Rivest-Shamir-Adleman&#xff09;是两种不同的加密算法&#xff0c;它们各自有特定的使用场景和优势。下面是它们的主要区别和适用场景&#xff1a; AES&#xff08;高级加密标准&#xff09; 特…...