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

安卓 jetpack compose

以下是 Jetpack Compose 中常用的一些组件的列表:

组件名称描述
Text用于显示文本内容。
Button可点击的按钮组件,常用于触发事件。
TextField用于输入文本的文本框组件。
Image用于展示图片。
Column垂直布局容器,可以在其中垂直排列子组件。
Row水平布局容器,可以在其中水平排列子组件。
Box用于层叠布局,可以让子组件重叠。
LazyColumn用于显示可滚动的垂直列表,适用于展示大量数据。
LazyRow用于显示可滚动的水平列表,适用于展示大量数据。
Slider滑动条组件,可用于调整数值。
Switch开关组件,用于切换状态。
Checkbox复选框组件,用于表示选中或未选中状态。
RadioButton单选按钮组件,常用于一组选项中选择一个。
Card卡片组件,用于展示相关联的信息,如图文信息。
AlertDialog对话框组件,用于显示警告或提示信息,并可包含操作按钮。
Scaffold提供基本的 Material Design 布局结构,如顶部应用栏、底部导航、抽屉菜单等。
TopAppBar顶部应用栏组件,常用于提供导航和操作。
BottomNavigation底部导航栏组件,用于在不同页面间进行切换。
FloatingActionButton浮动操作按钮,常用于执行主要的应用操作。
Divider分割线组件,用于在视觉上分隔内容。
ProgressIndicator进度指示器组件,用于显示操作的进度。
Spacer用于添加空白间隔的组件,常用于调整布局间距。

演示:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><!--Load images from Unsplash--><uses-permission android:name="android.permission.INTERNET" /><applicationandroid:allowBackup="true"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.Jetsnack"><profileable android:shell="true" tools:targetApi="q" /><activityandroid:name="com.treevalue.jetsnack.MainActivity"android:theme="@style/Theme.Jetsnack"android:exported="true"android:windowSoftInputMode="adjustResize"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

import androidx.compose.foundation.*
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.graphics.Color
import androidx.compose.material.Typography@Composable
fun MyApplicationTheme(darkTheme: Boolean = isSystemInDarkTheme(),content: @Composable () -> Unit
) {val colors = if (darkTheme) {darkColors(primary = Color(0xFFBB86FC),primaryVariant = Color(0xFF3700B3),secondary = Color(0xFF03DAC6))} else {lightColors(primary = Color(0xFF1EB980),primaryVariant = Color(0xFF045D56),secondary = Color(0xFF03DAC6))}MaterialTheme(colors = colors,typography = Typography(),shapes = Shapes(),content = content)
}import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.*
import androidx.compose.ui.graphics.*
import androidx.compose.ui.res.*
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.*
import androidx.compose.foundation.lazy.*
import com.example.jetsnack.R@Composable
fun MyApp() {Column(modifier = Modifier.fillMaxSize().padding(16.dp),horizontalAlignment = Alignment.CenterHorizontally,verticalArrangement = Arrangement.Center) {Greeting(name = "Jetpack Compose")Spacer(modifier = Modifier.height(16.dp))MyButton()Spacer(modifier = Modifier.height(16.dp))MyTextField()Spacer(modifier = Modifier.height(16.dp))MyImage()Spacer(modifier = Modifier.height(16.dp))MyColumn()Spacer(modifier = Modifier.height(16.dp))MyRow()}
}@Preview(showBackground = true)
@Composable
fun DefaultPreview() {MyApp()
}@Composable
fun MyTextField() {var text by remember { mutableStateOf("") }TextField(value = text,onValueChange = { newText -> text = newText },label = { Text(text = "Enter something") })
}@Composable
fun Greeting(name: String) {Text(text = "Hello, $name!")
}@Composable
fun MyButton() {Button(onClick = { /* Do something */ }) {Text(text = "Click Me")}
}@Composable
fun MyColumn() {Column {Text(text = "Item 1")Text(text = "Item 2")Text(text = "Item 3")}
}@Composable
fun MyRow() {Row {Text(text = "Item A")Text(text = "Item B")Text(text = "Item C")}
}@Composable
fun MyImage() {Image(painter = painterResource(id = R.drawable.lyy),contentDescription = "My Image")
}

1. Column(垂直布局)

Column 用于在垂直方向上排列子组件。可以通过 verticalArrangementhorizontalAlignment 控制子组件的排列方式和对齐方式。

@Composable
fun ColumnExample() {Column(modifier = Modifier.padding(16.dp),verticalArrangement = Arrangement.SpaceBetween,horizontalAlignment = Alignment.CenterHorizontally) {Text("First Item")Text("Second Item")Text("Third Item")}
}

2. Row(水平布局)

Row 用于在水平方向上排列子组件。与 Column 类似,Row 也支持 horizontalArrangementverticalAlignment 属性。

@Composable
fun RowExample() {Row(modifier = Modifier.padding(16.dp),horizontalArrangement = Arrangement.SpaceAround,verticalAlignment = Alignment.CenterVertically) {Text("Left")Text("Center")Text("Right")}
}

3. Box(层叠布局)

Box 允许子组件在层叠的形式中存在,可以用来创建重叠的UI效果。

@Composable
fun BoxExample() {Box(modifier = Modifier.size(150.dp).background(Color.LightGray),contentAlignment = Alignment.Center) {Text("Bottom", modifier = Modifier.align(Alignment.BottomCenter))Text("Top", modifier = Modifier.align(Alignment.TopCenter))}
}

4. LazyColumn 和 LazyRow(滚动列表)

LazyColumnLazyRow 类似于 RecyclerView,在展示大量数据时非常有用。

@Composable
fun LazyColumnExample() {LazyColumn {items(100) { index ->Text("Item $index", modifier = Modifier.padding(8.dp))}}
}@Composable
fun LazyRowExample() {LazyRow {items(100) { index ->Text("Item $index", modifier = Modifier.padding(8.dp))}}
}

5. Scaffold(结构布局)

Scaffold 提供了一个基本的 Material Design 布局结构。

@Composable
fun ScaffoldExample() {Scaffold(topBar = { TopAppBar(title = { Text("Scaffold Example") }) },floatingActionButtonPosition = FabPosition.End,floatingActionButton = { FloatingActionButton(onClick = {}) { Icon(Icons.Filled.Add, contentDescription = "Add") } },content = { innerPadding ->Box(modifier = Modifier.padding(innerPadding)) {Text("Content goes here")}})
}

Box 组件的基本用途是允许其子组件以层叠的方式显示。可以通过 modifier 属性控制 Box 的大小、填充、背景色等。

@Composable
fun BasicBoxExample() {Box(modifier = Modifier.size(200.dp).background(Color.Gray),contentAlignment = Alignment.Center) {Text("Centered Text", style = TextStyle(color = Color.White))}
}

子组件定位

Box 中,子组件可以通过 Modifier.align 定位到不同的位置。例如,可以将一个组件定位在底部中心,另一个定位在顶部中心。

@Composable
fun PositionedBoxExample() {Box(modifier = Modifier.size(200.dp).background(Color.LightGray)) {Text("Top Center", Modifier.align(Alignment.TopCenter))Text("Bottom Center", Modifier.align(Alignment.BottomCenter))}
}

使用层叠实现复杂界面

Box 可以用来创建更复杂的界面元素,例如一个图像与一段文字的组合,或是按钮悬浮在图像上方。

@Composable
fun OverlayBoxExample() {Box(modifier = Modifier.size(200.dp).background(Color.DarkGray)) {Image(painter = painterResource(id = R.drawable.image),contentDescription = "Background Image",contentScale = ContentScale.Crop)Text("Overlay Text",style = TextStyle(color = Color.White, fontSize = 16.sp),modifier = Modifier.align(Alignment.BottomStart).padding(8.dp))FloatingActionButton(onClick = { /* Handle click */ },modifier = Modifier.align(Alignment.TopEnd),content = { Icon(Icons.Default.Add, contentDescription = "Add") })}
}

以下是一个简单的示例,演示如何在 Jetpack Compose 中实现弹出菜单。


import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Button
import androidx.compose.material.DropdownMenu
import androidx.compose.material.DropdownMenuItem
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.treevalue.jetsnack.ui.theme.MyApplicationThemeclass MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {MyApplicationTheme {// A surface container using the 'background' color from the themeSurface(modifier = Modifier.fillMaxSize(),color = MaterialTheme.colors.background) {PopupMenuDemo()}}}}
}@Composable
fun PopupMenuDemo() {var expanded by remember { mutableStateOf(false) }var selectedItem by remember { mutableStateOf("None") }Column(modifier = Modifier.padding(16.dp)) {Button(onClick = { expanded = true }) {Text(text = "Show Menu")}DropdownMenu(expanded = expanded,onDismissRequest = { expanded = false }) {DropdownMenuItem(onClick = {expanded = falseselectedItem = "Item 1"}) {Text("Item 1")}DropdownMenuItem(onClick = {expanded = falseselectedItem = "Item 2"}) {Text("Item 2")}DropdownMenuItem(onClick = {expanded = falseselectedItem = "Item 3"}) {Text("Item 3")}}Text(text = "Selected: $selectedItem", modifier = Modifier.padding(top = 16.dp))}
}@Preview(showBackground = true)
@Composable
fun DefaultPreview() {MyApplicationTheme {PopupMenuDemo()}
}
  1. Button 和 DropdownMenu:

    • Button 用于触发弹出菜单的显示。
    • DropdownMenu 是实际的弹出菜单组件,expanded 参数控制菜单的显示与隐藏,onDismissRequest 在菜单外点击时触发,用于关闭菜单。
  2. DropdownMenuItem:

    • DropdownMenuItem 定义了菜单中的各个项,点击时会触发对应的操作。
  3. 状态管理:

    • 使用 remembermutableStateOf 来管理菜单的显示状态 (expanded) 以及选中的菜单项 (selectedItem)。

一个简单的响应式网格布局:


import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.Card
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.Alignment@Composable
fun ResponsiveLayout() {val items = listOf("Item 1", "Item 2", "Item 3", "Item 4")Column(modifier = Modifier.fillMaxSize(),verticalArrangement = Arrangement.Center,horizontalAlignment = Alignment.CenterHorizontally) {LazyColumn {items(items) { item ->Card(modifier = Modifier.padding(8.dp).fillMaxWidth(),elevation = 4.dp) {Text(text = item,modifier = Modifier.padding(16.dp),fontWeight = FontWeight.Bold)}}}}
}@Preview(showBackground = true)
@Composable
fun PreviewResponsiveLayout() {ResponsiveLayout()
}

响应式设计可以使用 BoxWithConstraints 来实现:

@Composable
fun ResponsiveBoxLayout() {BoxWithConstraints {if (maxWidth < 600.dp) {ColumnLayout()} else {RowLayout()}}
}@Composable
fun ColumnLayout() {Column(modifier = Modifier.fillMaxSize(),verticalArrangement = Arrangement.Center,horizontalAlignment = Alignment.CenterHorizontally) {Text(text = "Column Layout", modifier = Modifier.padding(16.dp))}
}@Composable
fun RowLayout() {Row(modifier = Modifier.fillMaxSize(),horizontalArrangement = Arrangement.Center,verticalAlignment = Alignment.CenterVertically) {Text(text = "Row Layout", modifier = Modifier.padding(16.dp))}
}@Preview(showBackground = true)
@Composable
fun PreviewResponsiveBoxLayout() {ResponsiveBoxLayout()
}

使用 Jetpack Compose 实现页面显示和用户动态交互的示例。

1. 创建简单的 UI 和交互


import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.rememberclass MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {MyApp()}}
}@Composable
fun MyApp() {var count by remember { mutableStateOf(0) }Column(modifier = Modifier.fillMaxSize(),verticalArrangement = Arrangement.Center,horizontalAlignment = Alignment.CenterHorizontally) {Text(text = "Count: $count", style = MaterialTheme.typography.h4)Spacer(modifier = Modifier.height(16.dp))Button(onClick = { count++ }) {Text("Increment")}}
}@Preview(showBackground = true)
@Composable
fun DefaultPreview() {MyApp()
}
  • MainActivity 中的 setContent 方法用于设置 Compose 的内容。
  • MyApp 是主要的 Composable 函数,它包含一个计数器和一个按钮。
  • remembermutableStateOf 用于在状态变化时重新组合 UI。
  • Column 用于垂直排列元素,Spacer 用于增加间距,Button 用于用户交互。

2. 添加更多交互

添加一个文本输入框和显示用户输入的内容:

@Composable
fun MyApp() {var count by remember { mutableStateOf(0) }var text by remember { mutableStateOf("") }Column(modifier = Modifier.fillMaxSize(),verticalArrangement = Arrangement.Center,horizontalAlignment = Alignment.CenterHorizontally) {Text(text = "Count: $count", style = MaterialTheme.typography.h4)Spacer(modifier = Modifier.height(16.dp))Button(onClick = { count++ }) {Text("Increment")}Spacer(modifier = Modifier.height(16.dp))TextField(value = text,onValueChange = { text = it },label = { Text("Enter text") })Spacer(modifier = Modifier.height(16.dp))Text(text = "You typed: $text")}
}

在按钮点击时显示一个弹出菜单:


import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.Button
import androidx.compose.material.DropdownMenu
import androidx.compose.material.DropdownMenuItem
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.treevalue.jetsnack.ui.theme.MyApplicationThemeclass MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {MyApplicationTheme{// A surface container using the 'background' color from the themeSurface(modifier = Modifier.fillMaxSize(),color = MaterialTheme.colors.background) {PopupMenuExample()}}}}
}@Composable
fun PopupMenuExample() {var expanded by remember { mutableStateOf(false) }Column {Button(onClick = { expanded = true }) {Text("Show Menu")}DropdownMenu(expanded = expanded,onDismissRequest = { expanded = false }) {DropdownMenuItem(onClick = { /* Handle action */ }) {Text("Option 1")}DropdownMenuItem(onClick = { /* Handle action */ }) {Text("Option 2")}DropdownMenuItem(onClick = { /* Handle action */ }) {Text("Option 3")}}}
}@Preview(showBackground = true)
@Composable
fun DefaultPreview() {MyApplicationTheme{PopupMenuExample()}
}
  1. MainActivity: 设置Compose的内容,并在主题中包含一个示例组件PopupMenuExample
  2. PopupMenuExample:
    • 使用remembermutableStateOf创建一个expanded状态变量,用于控制菜单的显示状态。
    • 一个按钮点击时设置expandedtrue,显示弹出菜单。
    • DropdownMenu用于创建弹出菜单,当expandedtrue时显示,并在onDismissRequest时将expanded设置为false以关闭菜单。
    • DropdownMenuItem用于定义菜单项及其点击事件。

在 Jetpack Compose 中实现一个向左弹出的菜单:


import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import com.treevalue.jetsnack.ui.theme.MyApplicationThemeclass MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {MyApp()}}
}@Composable
fun MyApp() {var expanded by remember { mutableStateOf(false) }Box(modifier = Modifier.fillMaxSize().padding(16.dp)) {Text(text = "Click me",modifier = Modifier.clickable { expanded = true }.padding(16.dp))DropdownMenu(expanded = expanded,onDismissRequest = { expanded = false },offset = DpOffset(Dp(-100f), Dp(0f)) // 向左偏移 100 像素) {DropdownMenuItem(content = { Text("Option 1") },onClick = { /* Handle option 1 click */ })DropdownMenuItem(content = { Text("Option 2") },onClick = { /* Handle option 2 click */ })DropdownMenuItem(content = { Text("Option 3") },onClick = { /* Handle option 3 click */ })}}
}@Preview(showBackground = true)
@Composable
fun DefaultPreview() {MyApplicationTheme{MyApp()}
}
  1. MyApp 组合函数定义了一个文本组件 Text,当点击时,会将 expanded 状态设为 true,从而显示下拉菜单。
  2. DropdownMenu 组件的 expanded 参数控制菜单的显示和隐藏,onDismissRequest 参数定义菜单被取消时的处理。
  3. offset 参数使用 IntOffset,其中第一个值为横向偏移量(负值向左偏移),第二个值为纵向偏移量。

相关文章:

安卓 jetpack compose

以下是 Jetpack Compose 中常用的一些组件的列表&#xff1a; 组件名称描述Text用于显示文本内容。Button可点击的按钮组件&#xff0c;常用于触发事件。TextField用于输入文本的文本框组件。Image用于展示图片。Column垂直布局容器&#xff0c;可以在其中垂直排列子组件。Row…...

JavaWeb系列十九: jQuery的DOM操作 上

查找节点, 修改属性 查找属性节点: 查找到所需要的元素之后, 可以调用jQuery对象的attr()方法用来 设置/返回 它的各种属性值 设置属性值 $(“img”).attr(“width”, “300”);返回属性值 $(“img”).attr(“width”); 创建节点 创建节点: 使用jQuery的工厂函数$(): $(html标…...

JavaWeb系列十一: Web 开发会话技术(Cookie, Session)

韩sir Cookie技术Cookie简单示意图Cookie常用方法Cookie创建Cookie读取JSESSIONID读取指定Cookie Cookie修改Cookie生命周期Cookie的有效路径Cookie作业布置Cookie注意事项Cookie中文乱码问题 Session技术Session原理示意图Session常用方法Session底层机制Session生命周期Sessi…...

【激光雷达使用记录】—— 如何在ubuntu中利用ros自带的rviz工具实时可视化雷达点云的数据

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、查看雷达数据的 frame_id1. 查看雷达数据的话题2. 查看数据的frame_id 二、可视化雷达数据总结 前言 RViz&#xff08;ROS Visualization&#xff09;是机…...

运行项目报错(java: 无效的目标发行版: 17)项目jdk版本不兼容,修改Java编译器配置

...

一道session文件包含题

目录 环境说明 session文件包含getshell 审计源码 session包含 base64在session中的解码分析 题目&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Q0BN08b8gWiVE4tOnirpTA?pwdcate 提取码&#xff1a;cate 环境说明 这里我用的是linux&#xff0c;也可以用p…...

vuex数据持久化

清空原因&#xff1a; 刷新页面vuex的数据会丢失属于正常现象&#xff0c;因为JS的数据都是保存在浏览器的堆栈内存里面的&#xff0c;刷新浏览器页面&#xff0c;以前堆栈申请的内存被释放&#xff0c;这就是浏览器的运行机制&#xff0c;那么堆栈里的数据自然就清空了。 解…...

MySQL之复制(十)

复制 改变主库 确定期望的日志位置 如果有备库和新主库的位置不相同&#xff0c;则需要找到该备库最后一条执行的时间在新主库的二进制日志中相应的位置&#xff0c;然后再执行CHANGE MASTER TO.可以通过mysqlbinlog工具来找到备库执行的最后一条查询&#xff0c;然后在主库上…...

Spring MVC数据绑定和响应——简单数据绑定(一)默认类型数据绑定

一、Spring MVC常见的默认类型 当使用Spring MVC默认支持的数据类型作为处理器的形参类型时&#xff0c;Spring MVC的参数处理适配器会默认识别这些类型并进行赋值。Spring MVC常见的默认类型如下所示。 • HttpServletRequest&#xff1a;获取请求信息。 • HttpServlet…...

短视频平台自动化插件编写需要用到的源代码分享!

随着短视频平台的蓬勃发展&#xff0c;自动化插件的需求也日益增长&#xff0c;这些插件能够帮助用户更高效地管理内容、分析数据、优化发布策略等。 一、登录验证模块 登录验证是自动化插件的基础功能之一&#xff0c;确保用户能够安全地访问平台并执行相关操作&#xff0c;…...

安卓下载以来总是要添加maven下载地址,放在哪?

放这里面的 repositories 里...

springboot多数据源应用,A服务依赖于B服务jar包,A服务和B服务业务数据分别入自己的库如何做?

上一节我们简单阐述了springboot多数据源如何配置。在实际的业务场景中我们常常遇到A服务依赖于B服务jar包&#xff0c;A服务和B服务业务数据分别入自己的库中。为何要这么做呢&#xff1f;比如B服务是日志SDK&#xff0c;A服务集成B服务来实现记录日志的功能&#xff0c;但是日…...

20240626 每日AI必读资讯

&#x1f30d;警告&#xff01;OpenAI宣布全面封锁中国API接入&#xff01; - 7月9号开始封锁不支持的国家API - 如果在OpenAI不允许的国家使用其 API 将面临封杀 &#x1f517; 警告&#xff01;OpenAI 宣布全面封锁中国 API 接入-CSDN博客 &#x1f3b5;索尼、环球音乐、华…...

C语言经典算法题第一题

题目&#xff1a;古典问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔 子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总数 为多少&#xff1f; #include <stdio.h>int main() …...

计算预卷积特征

当冻结卷积层和训练模型时&#xff0c;全连接层或dense层(vgg.classifier)的输入始终是相同的。为了更好地理解&#xff0c;让我们将卷积块(在示例中为vgg.features块)视为具有了已学习好的权重且在训练期间不会更改的函数。因此&#xff0c;计算卷积特征并保存下来将有助于我们…...

Python 入门 —— 描述器

Python 入门 —— 描述器 文章目录 Python 入门 —— 描述器描述器简单示例定制名称只读属性状态交互验证器类自定义验证器验证器的使用 对象关系映射 描述器 前面我们介绍了两种属性拦截的方式&#xff1a;特性&#xff08;property&#xff09;以及重载属性访问运算符&#…...

测试驱动开发TDD

如何在后端测试代码&#xff0c;测试一个其前端的请求&#xff0c;能否正常处理 以登录请求为例 package com.example.demo.login;import com.example.demo.login.pojo.User; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import…...

[论文笔记]Mixture-of-Agents Enhances Large Language Model Capabilities

引言 今天带来一篇多智能体的论文笔记&#xff0c;Mixture-of-Agents Enhances Large Language Model Capabilities。 随着LLMs数量的增加&#xff0c;如何利用多个LLMs的集体专业知识是一个令人兴奋的开放方向。为了实现这个目标&#xff0c;作者提出了一种新的方法&#xf…...

Redis 7.x 系列【6】数据类型之字符串(String)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 前言2. 常用命令2.1 SET2.2 GET2.3 MSET2.4 MGET2.5 GETSET2.6 STRLEN2.7 SETEX2.8…...

指针(一)

指针基础 在C中&#xff0c;指针是至关重要的组成部分。它是C语言最强大的功能之一&#xff0c;也是最棘手的功能之一。 指针具有强大的能力&#xff0c;其本质是协助程序员完成内存的直接操纵。 指针&#xff1a;特定类型数据在内存中的存储地址&#xff0c;即内存地址。 …...

RTX5 | 消息队列实战 - 中断与线程间的数据桥梁

1. 消息队列在RTX5中的核心价值 第一次接触RTX5的消息队列功能时&#xff0c;我正被一个串口通信问题困扰&#xff1a;每次收到数据包都要在中断里完整解析&#xff0c;导致系统响应变慢。后来发现&#xff0c;消息队列就像快递柜——中断服务程序(ISR)是快递员&#xff0c;只需…...

AI辅助快速模拟:在快马平台用C语言生成ahflt.sys驱动行为原型

今天想和大家分享一个有趣的实验&#xff1a;如何在InsCode(快马)平台上快速模拟Windows驱动行为。最近在研究ahflt.sys这个系统文件时&#xff0c;发现直接操作真实驱动既复杂又有风险&#xff0c;于是尝试用C语言写了个控制台程序来模拟它的基础行为。 项目背景与需求分析 ah…...

网盘下载加速工具LinkSwift:八大主流网盘直链下载解决方案

网盘下载加速工具LinkSwift&#xff1a;八大主流网盘直链下载解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / …...

下篇:那个听声辨位的侦探后来破了大案——AI中隐马尔可夫模型的类型与作用,以及它为什么还在被使用

我们说了隐马尔可夫模型是一个“只能听声、不能见人”的侦探&#xff0c;靠着一串声音推理出隔壁房间在发生什么。现在的问题是&#xff1a;它到底有哪些具体的“形态”&#xff1f;不同类型的隐马尔可夫模型分别擅长什么&#xff1f;这个“老古董”在今天还能干什么&#xff1…...

2026进口调节阀品牌选型参考:产品质量与售后响应如何影响实际应用

2026年&#xff0c;进口调节阀在石油化工、电力、制药、冶金和新能源项目中仍有稳定需求。用户在查找进口调节阀品牌或调节阀厂家时&#xff0c;比较关注产品的认证情况、制造基地布局、工况适应能力和服务响应速度。本文整理了一些选型时常见的考虑要点&#xff0c;并介绍美国…...

小型物联网系统——家居网关设计(C语言实现)

一、系统概述 家居网关是小型物联网系统的核心枢纽&#xff0c;负责多协议设备接入、数据汇聚转发、本地/远程控制三大核心功能。本设计基于STM32F103C8T6主控&#xff0c;集成Zigbee&#xff08;传感器接入&#xff09;、Wi-Fi&#xff08;云端通信&#xff09;、GPIO&#xf…...

Memos笔记数据安全吗?手把手教你配置自动备份到GitHub/对象存储(防丢指南)

Memos数据安全全攻略&#xff1a;从本地备份到云端同步的完整方案 Memos作为一款轻量级开源笔记工具&#xff0c;凭借其简洁界面和本地存储特性赢得了不少用户青睐。但数据安全始终是悬在每位用户心头的一把剑——服务器宕机、硬盘损坏、误操作删除都可能让珍贵笔记瞬间消失。本…...

FPGA实战:手把手教你用Verilog实现以太网PHY芯片MDIO寄存器读写(附完整代码)

FPGA实战&#xff1a;手把手教你用Verilog实现以太网PHY芯片MDIO寄存器读写 在当今高速网络设备开发中&#xff0c;FPGA与以太网PHY芯片的协同工作已成为工业级设计的标配。MDIO&#xff08;Management Data Input/Output&#xff09;接口作为IEEE 802.3标准定义的两线制串行总…...

告别温度跳动!STM32 NTC测温的三种软件滤波方案实测与选型建议

STM32 NTC测温工程实战&#xff1a;三种软件滤波方案深度评测与选型指南 温度测量在工业控制、智能家居和医疗设备中扮演着关键角色&#xff0c;而NTC&#xff08;负温度系数热敏电阻&#xff09;因其成本低廉、响应快速成为最常用的温度传感器之一。但在实际工程中&#xff0c…...

SYSU-MM01跨模态行人重识别:Python评估实战指南

1. SYSU-MM01数据集与跨模态行人重识别基础 如果你正在研究行人重识别&#xff08;ReID&#xff09;&#xff0c;尤其是跨模态场景下的挑战&#xff0c;SYSU-MM01绝对是一个绕不开的基准数据集。这个由中山大学发布的权威数据集&#xff0c;最大的特点就是同时包含了可见光&…...