我用AI学Android Jetpack Compose之入门篇(1)
这篇我们先来跑通第一个Android Jetpack Compose工程,现在新版本的Android Studio,新建工程选择Empty Activity默认就会开启Jetpack Compose的支持,再次声明,答案来自 通义千问Ai
文章目录
- 1.用Android Jetpack Compose需要安装什么开发环境?
- 2.我有基本的Android Studio环境,告诉我怎么创建Android Jetpack Compose工程?
- 创建新的Jetpack Compose项目
- 添加Jetpack Compose依赖(如果需要)
- 运行你的第一个Jetpack Compose应用
- 3.我的Android Studio找不到Empty Compose Activity,怎么办?
- 1. **检查Android Studio版本**
- 2. **确认插件已安装**
- 3. **手动添加Jetpack Compose支持**
- 创建普通项目
- 修改`build.gradle`文件
- 将XML布局转换为Compose函数
- 4. **重启并清理项目**
- 4.我纠正你一下,我用的是Android Studio Giraffe | 2022.3.1 Patch 1,我新建工程,选Empty Activity,默认就是Compose
- 确认项目配置
- 探索和学习
- 5.怎么运行这个应用?
- 1. **确认开发环境**
- 2. **连接目标设备**
- 3. **选择目标设备**
- 4. **构建并运行应用**
- 5. **查看结果**
- 6. **调试与日志**
- 示例步骤
1.用Android Jetpack Compose需要安装什么开发环境?
使用Android Jetpack Compose进行开发,你需要设置一个适当的开发环境。以下是详细的步骤和需要安装的工具:
-
安装Java Development Kit (JDK):
- 虽然Jetpack Compose主要基于Kotlin,但Android开发仍然依赖于Java环境。确保你已经安装了最新版本的OpenJDK或Oracle JDK(通常推荐使用OpenJDK)。你可以通过命令行检查是否已安装以及其版本号:
java -version
。
- 虽然Jetpack Compose主要基于Kotlin,但Android开发仍然依赖于Java环境。确保你已经安装了最新版本的OpenJDK或Oracle JDK(通常推荐使用OpenJDK)。你可以通过命令行检查是否已安装以及其版本号:
-
安装Android Studio:
- Android Studio是官方支持的集成开发环境(IDE),它为Jetpack Compose提供了最佳的支持。确保下载并安装最新稳定版本的Android Studio,因为它会包含最新的Jetpack Compose插件和其他必要的工具。
- 你可以从Android Studio官网获取安装包。
- Android Studio是官方支持的集成开发环境(IDE),它为Jetpack Compose提供了最佳的支持。确保下载并安装最新稳定版本的Android Studio,因为它会包含最新的Jetpack Compose插件和其他必要的工具。
-
配置Android SDK:
- 在安装Android Studio的过程中,会自动为你配置好Android SDK。如果你选择了自定义安装,确保选择了“Android SDK”选项。此外,确保你的SDK版本是最新的,并且包含了构建Jetpack Compose应用所需的API级别。
-
启用Jetpack Compose支持:
- 安装完成后,在Android Studio中创建新项目时可以选择使用Jetpack Compose模板。如果已有项目想要添加Compose支持,可以通过修改
build.gradle
文件来添加必要的依赖项。例如:dependencies {implementation "androidx.compose.ui:ui:1.0.0" // 或者更新到最新版本implementation "androidx.compose.material:material:1.0.0"implementation "androidx.compose.ui:ui-tooling-preview:1.0.0"debugImplementation "androidx.compose.ui:ui-tooling:1.0.0" }
- 安装完成后,在Android Studio中创建新项目时可以选择使用Jetpack Compose模板。如果已有项目想要添加Compose支持,可以通过修改
-
安装必要的Gradle插件:
- 确保你的项目的
build.gradle
文件中包含了正确的Gradle插件,如com.android.application
和org.jetbrains.kotlin.android
,并且它们的版本是最新的。这将确保你可以正确地编译和支持Jetpack Compose的应用程序。
- 确保你的项目的
-
设置虚拟设备或连接真实设备:
- 使用Android Studio自带的AVD Manager(Android Virtual Device Manager)创建和管理模拟器,或者直接连接一个真实的Android设备用于测试。为了使Jetpack Compose的功能得到最好的表现,建议使用支持GPU加速的较新版本Android系统的设备或模拟器。
-
探索Jetpack Compose示例代码和文档:
- 最后,不要忘记利用官方提供的Jetpack Compose示例项目和文档来学习和参考。Google经常更新这些资源,以反映最新的实践和技术进步。
完成以上步骤后,你应该已经准备好开始使用Jetpack Compose进行开发了。记得定期检查是否有新的更新,保持你的开发环境处于最新状态。
2.我有基本的Android Studio环境,告诉我怎么创建Android Jetpack Compose工程?
既然你已经有了基本的Android Studio环境,创建一个支持Jetpack Compose的新项目就相对简单了。以下是详细的步骤来引导你完成这个过程:
创建新的Jetpack Compose项目
-
启动Android Studio:
- 打开你的Android Studio。
-
选择“Start a new Android Studio project”:
- 在欢迎界面中选择“Start a new Android Studio project”以开始一个新的项目。
-
选择模板:
- 在“Choose your project”页面,你会看到多个应用模板。对于Jetpack Compose项目,请选择带有“Empty Compose Activity”的选项。这将为你设置好所有必要的Compose依赖项。
- 如果没有找到此选项,确保你使用的是最新版本的Android Studio,并且已经安装了Jetpack Compose的支持库。
-
配置项目信息:
- 输入你的项目名称、包名和保存位置。
- 选择最低SDK版本(API level)。为了充分利用Jetpack Compose的功能,建议选择一个较高的API级别,如API 21或更高。
-
点击“Finish”:
- 点击“Finish”按钮后,Android Studio将会根据所选模板自动生成项目结构,并自动添加必要的依赖项到
build.gradle
文件中。
- 点击“Finish”按钮后,Android Studio将会根据所选模板自动生成项目结构,并自动添加必要的依赖项到
添加Jetpack Compose依赖(如果需要)
如果你是从一个非Compose项目转换而来,或者上述步骤未能正确添加Compose依赖,你需要手动编辑build.gradle
文件。在项目的build.gradle
文件中,确保包含以下内容:
plugins {id 'com.android.application'id 'org.jetbrains.kotlin.android'
}android {...buildFeatures {compose true // 启用 Jetpack Compose}composeOptions {kotlinCompilerExtensionVersion '1.4.0' // 使用最新的版本号}...
}dependencies {implementation "androidx.compose.ui:ui:1.4.0" // 或者更新到最新版本implementation "androidx.compose.material:material:1.4.0"implementation "androidx.compose.ui:ui-tooling-preview:1.4.0"debugImplementation "androidx.compose.ui:ui-tooling:1.4.0"...
}
运行你的第一个Jetpack Compose应用
-
同步项目:
- 修改完
build.gradle
文件后,记得点击工具栏上的“Sync Now”来同步项目更改。
- 修改完
-
打开主活动文件:
- 通常情况下,主活动文件是
MainActivity.kt
。在这个文件中,你会看到一些默认生成的代码,用于展示一个简单的文本组件。
- 通常情况下,主活动文件是
-
运行应用程序:
- 连接一个物理设备或者启动一个虚拟设备(AVD),然后点击工具栏上的绿色运行按钮(Run)来编译并部署你的应用。
-
查看结果:
- 应用程序应该成功构建并在选定的设备上运行,显示由Jetpack Compose渲染的UI。
通过以上步骤,你应该能够成功创建并运行一个基于Jetpack Compose的Android项目。随着你对Compose越来越熟悉,你可以开始探索更多复杂的UI组件和功能。如果你遇到任何问题,可以随时查阅官方文档或寻求社区的帮助。
3.我的Android Studio找不到Empty Compose Activity,怎么办?
如果你在创建新项目时没有看到“Empty Compose Activity”模板,这可能是由于以下几个原因造成的。我们可以逐一排查并解决问题:
1. 检查Android Studio版本
确保你使用的是最新版本的Android Studio。Jetpack Compose的支持是在较新的版本中引入的,因此旧版本可能不包含这个模板。你可以通过以下步骤更新你的Android Studio:
- 打开Android Studio。
- 转到
Help
>Check for Updates
(在macOS上是Android Studio
>Check for Updates
)。 - 如果有可用更新,按照提示进行安装。
2. 确认插件已安装
确保你已经安装了必要的Jetpack Compose插件和支持库。有时候,即使Android Studio本身是最新的,也可能需要单独安装或更新这些插件:
- 打开
File
>Settings
(在macOS上是Android Studio
>Preferences
)。 - 导航到
Plugins
,搜索Jetpack Compose
或Compose
相关插件,并确保它们已被安装且为最新版本。 - 如果未安装,请点击安装按钮,然后重启IDE以应用更改。
3. 手动添加Jetpack Compose支持
如果上述方法仍然无法解决问题,你可以选择一个普通的空活动模板(如“Empty Activity”),然后手动将Jetpack Compose集成到项目中。以下是具体步骤:
创建普通项目
- 使用“Empty Activity”或其他类似模板创建一个新的Android项目。
修改build.gradle
文件
编辑项目的顶级build.gradle
文件和模块级build.gradle
文件,以添加必要的依赖项和配置。例如,在模块级build.gradle
文件中添加如下内容:
plugins {id 'com.android.application'id 'org.jetbrains.kotlin.android'
}android {...buildFeatures {compose true // 启用 Jetpack Compose}composeOptions {kotlinCompilerExtensionVersion '1.4.0' // 使用最新的版本号}...
}dependencies {implementation "androidx.compose.ui:ui:1.4.0" // 或者更新到最新版本implementation "androidx.compose.material:material:1.4.0"implementation "androidx.compose.ui:ui-tooling-preview:1.4.0"debugImplementation "androidx.compose.ui:ui-tooling:1.4.0"...
}
将XML布局转换为Compose函数
打开默认生成的activity_main.xml
文件,将其删除或重命名为备份。然后,在MainActivity.kt
中替换现有的代码,使其成为一个简单的Compose应用程序。例如:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.spclass MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {MyApp {Greeting("Hello, World!")}}}
}@Composable
fun MyApp(content: @Composable () -> Unit) {MaterialTheme {Surface {content()}}
}@Composable
fun Greeting(name: String) {Text(text = name, fontSize = 24.sp)
}@Preview(showBackground = true)
@Composable
fun DefaultPreview() {MyApp {Greeting("Hello, World!")}
}
4. 重启并清理项目
有时候,IDE缓存可能导致一些问题。尝试执行以下操作来清除缓存并重启项目:
- 在菜单栏中选择
File
>Invalidate Caches / Restart...
。 - 点击
Invalidate and Restart
按钮。
完成以上步骤后,你应该能够成功地将Jetpack Compose集成到你的项目中。尽管缺少特定的模板,但通过手动配置,你仍然可以充分利用Jetpack Compose的功能。如果你遇到任何问题或不确定的地方,不要犹豫向社区寻求帮助或者查阅官方文档。
4.我纠正你一下,我用的是Android Studio Giraffe | 2022.3.1 Patch 1,我新建工程,选Empty Activity,默认就是Compose
感谢你的澄清。在Android Studio Giraffe | 2022.3.1 Patch 1版本中,选择“Empty Activity”模板时,默认情况下确实会启用Jetpack Compose支持。这意味着你不需要专门寻找“Empty Compose Activity”模板,因为“Empty Activity”已经集成了Compose。
既然如此,如果你选择了“Empty Activity”并且默认就是使用Jetpack Compose,那么你应该已经有了一个配置好的Compose项目。接下来,你可以直接开始探索和编写Jetpack Compose代码了。
确认项目配置
为了确保一切设置正确,你可以检查以下几个方面:
-
build.gradle
文件:-
检查模块级的
build.gradle
文件,确认已包含必要的Jetpack Compose依赖项。例如:plugins {id 'com.android.application'id 'org.jetbrains.kotlin.android' }android {...buildFeatures {compose true // 启用 Jetpack Compose}composeOptions {kotlinCompilerExtensionVersion '1.4.0' // 使用最新的版本号}... }dependencies {implementation "androidx.compose.ui:ui:1.4.0" // 或者更新到最新版本implementation "androidx.compose.material:material:1.4.0"implementation "androidx.compose.ui:ui-tooling-preview:1.4.0"debugImplementation "androidx.compose.ui:ui-tooling:1.4.0"... }
-
-
主活动文件(
MainActivity.kt
):-
打开
MainActivity.kt
文件,确认它使用了setContent
方法来设置Compose内容,并且包含了至少一个简单的Composable函数。例如:import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.spclass MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {MyApp {Greeting("Hello, World!")}}} }@Composable fun MyApp(content: @Composable () -> Unit) {MaterialTheme {Surface {content()}} }@Composable fun Greeting(name: String) {Text(text = name, fontSize = 24.sp) }@Preview(showBackground = true) @Composable fun DefaultPreview() {MyApp {Greeting("Hello, World!")} }
-
-
运行应用程序:
- 连接物理设备或启动AVD(Android Virtual Device),然后点击工具栏上的绿色运行按钮(Run)来编译并部署你的应用。
- 应用程序应该成功构建并在选定的设备上运行,显示由Jetpack Compose渲染的UI。
探索和学习
既然你已经有了一个预配置好的Jetpack Compose项目,现在是时候开始深入学习和探索了。你可以尝试修改现有的Composable函数、添加新的组件、处理状态变化等。此外,官方文档和教程是极好的资源,可以帮助你进一步理解Jetpack Compose的各种特性和最佳实践。
如果你遇到任何问题或有疑问,随时可以提问!祝你在Jetpack Compose的学习之旅中取得成功。
5.怎么运行这个应用?
要运行你创建的Jetpack Compose应用,你需要确保已经正确设置了开发环境,并且遵循了正确的步骤来编译和部署应用到目标设备上。以下是详细的步骤指南:
1. 确认开发环境
确保你的Android Studio是最新的,并且已经安装了必要的插件和支持库。如果还没有完成这些设置,请参考之前的指导进行配置。
2. 连接目标设备
你可以选择使用虚拟设备(AVD)或物理设备来运行应用程序:
-
使用虚拟设备:
- 打开
AVD Manager
(可以通过点击工具栏中的小机器人图标或通过Tools
>AVD Manager
访问)。 - 创建一个新的虚拟设备或者选择一个已有的设备配置。
- 启动所选的虚拟设备。
- 打开
-
使用物理设备:
- 使用USB线将Android设备连接到电脑。
- 确保开发者选项和USB调试已经在设备上启用。可以在设备的“设置”>“关于手机”中多次点击版本号以开启开发者选项,然后在“设置”>“系统”>“开发者选项”中找到并启用USB调试。
3. 选择目标设备
- 在Android Studio的工具栏中,你会看到一个下拉菜单,显示可用的目标设备列表。
- 如果你启动了虚拟设备或连接了物理设备,它应该出现在这个列表中。
- 选择你要运行应用的目标设备。
4. 构建并运行应用
- 点击工具栏上的绿色运行按钮(Run),或者通过
Run
>Run 'app'
菜单项来启动应用。 - Android Studio会自动执行以下操作:
- 编译项目代码。
- 构建APK文件。
- 将APK安装到选定的目标设备上。
- 启动应用程序。
5. 查看结果
一旦应用成功部署到目标设备上,你应该能够看到由Jetpack Compose渲染的UI。例如,如果你按照之前提供的示例代码创建了一个简单的“Hello, World!”应用,那么屏幕上应该会显示居中的文本。
6. 调试与日志
如果遇到问题,可以利用以下工具进行排查:
- Logcat:打开Logcat窗口(
View
>Tool Windows
>Logcat
),查看日志输出,寻找可能的错误信息。 - Debug模式:通过点击工具栏上的调试按钮(带有虫子图标的按钮)来启动应用,进入调试模式,这可以帮助你逐步检查代码执行情况。
- 布局检查器:使用Layout Inspector工具(
View
>Tool Windows
>Layout Inspector
)来分析运行时的UI布局,了解各个组件的位置和属性。
示例步骤
假设你已经有一个预配置好的Jetpack Compose项目,以下是具体的操作步骤:
class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {MyApp {Greeting("Hello, World!")}}}
}@Composable
fun MyApp(content: @Composable () -> Unit) {MaterialTheme {Surface(modifier = Modifier.fillMaxSize()) {content()}}
}@Composable
fun Greeting(name: String) {Box(modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.Center) // 居中对齐内容) {Text(text = name, fontSize = 24.sp)}
}@Preview(showBackground = true)
@Composable
fun DefaultPreview() {MyApp {Greeting("Hello, World!")}
}
- 确认所有依赖项和配置都正确无误。
- 选择目标设备(虚拟机或物理设备)。
- 点击运行按钮,等待应用编译、构建和部署。
- 观察设备屏幕,确认应用是否如预期般运行。
如果你遇到了任何特定的问题或错误消息,不要犹豫向我提问!我可以帮助你进一步诊断和解决问题。
相关文章:
我用AI学Android Jetpack Compose之入门篇(1)
这篇我们先来跑通第一个Android Jetpack Compose工程,现在新版本的Android Studio,新建工程选择Empty Activity默认就会开启Jetpack Compose的支持,再次声明,答案来自 通义千问Ai 文章目录 1.用Android Jetpack Compose需要安装什…...
使用 Docker 查看 Elasticsearch 错误日志
在使用 Elasticsearch(简称 ES)的过程中,我们可能会遇到各种问题。为了快速定位和解决这些问题,查看错误日志是关键。本文将介绍如何使用 Docker 查看 Elasticsearch 的错误日志,并提供一些实用技巧。 1. 安装 Docker…...

使用Apache Mahout制作 推荐引擎
目录 创建工程 基本概念 关键概念 基于用户与基于项目的分析 计算相似度的方法 协同过滤 基于内容的过滤 混合方法 创建一个推荐引擎 图书评分数据集 加载数据 从文件加载数据 从数据库加载数据 内存数据库 协同过滤 基于用户的过滤 基于项目的过滤 添加自定…...

Elasticsearch:利用 AutoOps 检测长时间运行的搜索查询
作者:来自 Elastic Valentin Crettaz 了解 AutoOps 如何帮助你调查困扰集群的长期搜索查询以提高搜索性能。 AutoOps 于 11 月初在 Elastic Cloud Hosted 上发布,它通过性能建议、资源利用率和成本洞察、实时问题检测和解决路径显著简化了集群管理。 Au…...
python二元表达式 三元表达式
目录 二元表达式必须要有else,示例: 二元表达式: 三元表达式 可以嵌套成多元表达式 python 代码中,有时写 if else比较占行,把代码变一行的方法就是二元表达式, 二元表达式必须要有else,示例: if img is None:breakcv2.imwrite("aaa.jpg", img) if coun…...

计算机网络 (22)网际协议IP
一、IP协议的基本定义 IP协议是Internet Protocol的缩写,即因特网协议。它是TCP/IP协议簇中最核心的协议,负责在网络中传送数据包,并提供寻址和路由功能。IP协议为每个连接在因特网上的主机(或路由器)分配一个唯一的IP…...

【UI自动化测试】selenium八种定位方式
🏡个人主页:謬熙,欢迎各位大佬到访❤️❤️❤️~ 👲个人简介:本人编程小白,正在学习互联网求职知识…… 如果您觉得本文对您有帮助的话,记得点赞👍、收藏⭐️、评论💬&am…...
REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架
REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架 前言 提出这一模型的初衷为了应对大量计算资源和数据集出现伴随的知识产权问题。使用LLM合成类似人类的内容容易受到恶意利用,包括垃圾邮件和抄袭。 ChatGPT等大语言模型LLM的开发取得的进展标志着人机对话交互的范式…...
Android SPRD 工模测试修改
设备有两颗led灯,工模测试需全亮 vendor/sprd/proprietories-source/factorytest/testitem/led.cpp -13,6 13,10 typedef enum{#define LED_BLUE "/sys/class/leds/blue/brightness"#define LED_RED …...

H3C CN3360B光纤存储交换机配置案例
这几天在项目里面遇到了一台光纤存储交换机,需要划Zone来实现服务器外接存储 接下来我就分享我在项目中的配置 我是通过交换机串口进去的,也可以通过网口,串口的配置我就不介绍了 网口配置的地址是:10.77.77.77/24 登入方式&…...
问题:Flask应用中的用户会话(Session)管理失效
我来分享一个常见的PythonWeb开发问题: 问题:Flask应用中的用户会话(Session)管理失效 这是一个在Flask开发中经常遇到的问题。当用户登录后,有时会话会意外失效,导致用户需要重复登录。 解决方案: 1. 首先&#x…...
Backend - C# 操作数据库 DB(ADO.NET、LINQ to SQL、EF)
目录 一、ADO.NET(传统) 二、LINQ to SQL(已过时) 三、EF(推荐) 常见的操作数据库的方法:有三种,分别是 ADO.NET、LINQ to SQL、EF 一、ADO.NET(传统) ADO.NE…...

JMeter + Grafana +InfluxDB性能监控 (二)
您可以通过JMeter、Grafana 和 InfluxDB来搭建一个炫酷的基于JMeter测试数据的性能测试监控平台。 下面,笔者详细介绍具体的搭建过程。 安装并配置InfluxDB 您可以从清华大学开源软件镜像站等获得InfluxDB的RPM包,这里笔者下载的是influxdb-1.8.0.x86_…...

springCloud实战
一、Feign的实战 1、使用 1.1步骤 ①引入feign依赖 ②在启动类上加上EnableFeignClients注解,开启Feign客户端 ③编写FeignClient接口 1.2开启feign调用日志 只需在yml配置文件中开启配置即可 feign:client:default:loggerLevel: FULL #feign接口被调用时的…...
从优化算法到分布式训练-提升AI模型收敛速度的系统性分析【附核心实战代码】
本文收录于专栏:精通AI实战千例专栏合集 https://blog.csdn.net/weixin_52908342/category_11863492.html从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码,详细讲解供大家学习,希望可以帮…...

如何在 Windows 10/11 上录制带有音频的屏幕 [3 种简单方法]
无论您是在上在线课程还是参加在线会议,您都可能需要在 Windows 10/11 上录制带有音频的屏幕。互联网上提供了多种可选方法。在这里,本博客收集了 3 种最简单的方法来指导您如何在 Windows 10/11 上使用音频进行屏幕录制。请继续阅读以探索! …...
鸿蒙应用开发(2)
鸿蒙应用开发启航计划-CSDN博客 鸿蒙应用开发(1)-CSDN博客 没看过前两篇的,建议请先看上面。 如果你学习完了前两篇,那么你学习这篇文章,就很容易理解了。 这一篇文章将介绍声明式UI的 渲染控制。你需要了解的是&…...

单片机-LED点阵实验
要将第一个点点亮,则 1 脚接高电平 a 脚接低电平,则第一个点就亮了;如果要将第一行点亮,则第 1 脚要接高电平,而(a、b、c、d、e、f、g、h )这些引脚接低电平,那么第一行就会点亮&…...

微服务-Nacos(注册中心)
Nacos Nacos可以看作注册中心配置中心,比Eureka更加强大。 注册中心 在父工程中引入SpringCloudAlibaba的版本依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId&g…...
【Linux知识】shell编程知识科普
文章目录 概述文件格式语法及例子 文件读写文件读取文件写入错误处理 后台执行shell1. 使用 & 符号2. 使用 nohup 命令3. 使用 screen 或 tmux使用 screen使用 tmux 4. 使用 disown 命令5. 使用系统服务管理器(如 systemd) 概述 Linux shell脚本文件…...

Web3 借贷与清算机制全解析:链上金融的运行逻辑
Web3 借贷与清算机制全解析:链上金融的运行逻辑 超额抵押借款 例如,借款人用ETH为抵押借入DAI;借款人的ETH的价值一定是要超过DAI的价值;借款人可以任意自由的使用自己借出的DAI 稳定币 第一步:借款人需要去提供一定…...

【西门子杯工业嵌入式-5-串口实现数据收发】
西门子杯工业嵌入式-5-串口实现数据收发 一、通信基础1.1 什么是通信1.2 嵌入式系统中的通信 二、串行通信原理2.1 串行通信简介2.2 通信参数约定 三、GD32F470 串口资源与性能3.1 串口硬件资源 四、串口通信的实现4.1 串口初始化流程4.2 串口发送函数编写4.3 使用 printf 实现…...
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
在使用PHP连接MySQL数据库时,可能会遇到连接失败和写锁问题。这类问题可能会影响应用的正常运行,本文将详细介绍排查和解决这些问题的方法。 一、PHP连接MySQL数据库失败 1. 排查连接失败的常见原因 数据库配置错误: 检查数据库主机、用户名…...
强化学习入门:交叉熵方法数学推导
前言 最近想开一个关于强化学习专栏,因为DeepSeek-R1很火,但本人对于LLM连门都没入。因此,只是记录一些类似的读书笔记,内容不深,大多数只是一些概念的东西,数学公式也不会太多,还望读者多多指教…...
免费 SecureCRT8.3下载、安装、注册、使用与设置
参考:SecureCRT 8.3中文 安装教程 - Hope - 博客园...
Spring Boot 定时任务的使用
前言 在实际开发中,我们经常需要实现定时任务的功能,例如每天凌晨执行数据清理、定时发送邮件等。Spring Boot 提供了非常便捷的方式来实现定时任务,本文将详细介绍如何在 Spring Boot 中使用定时任务。 一、Spring Boot 定时任务简介 Spr…...
MySQL连接报SSL错误
问题(cmd) C:\Users>mysql -h xx.xx.xx.xx -u root -p Enter password: ERROR 2026 (HY000): SSL connection error: error:0A000102:SSL routines::unsupported protocol 解决方案 1. 临时禁用 SSL 连接(不推荐生产环境使用࿰…...
分布式Session处理的五大主流方案解析
在分布式环境下,Session 处理的核心挑战是确保用户请求在不同服务器间流转时能保持会话状态一致。以下是主流解决方案及优缺点分析: 🔐 一、集中存储方案(主流推荐) Redis/Memcached 存储 原理:将 Session…...

OpenCV计算机视觉实战(10)——形态学操作详解
OpenCV计算机视觉实战(10)——形态学操作详解 0. 前言1. 腐蚀与膨胀1.1 为什么要做腐蚀与膨胀1.2 OpenCV 实现 2. 开运算与闭运算2.1 开运算与闭运算原理2.2 OpenCV 实现 3. 形态学梯度与骨架提取3.1 形态学梯度3.2 骨架提取 小结系列链接 0. 前言 形态…...
CSS 选择器全解析:分组选择器/嵌套选择器,从基础到高级
一、CSS 选择器基础:从单个元素到多个元素 CSS 选择器是用来定位 HTML 元素的工具,就像 “元素的地址”。最基础的选择器有: 元素选择器(按标签名定位) css p { color: red; } /* 所有<p>标签 */ div { b…...