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

我用AI学Android Jetpack Compose之入门篇(2)

我跑成功了第一个Compose应用,但我还是有很多疑问,请人工智能来解释一下吧。答案来自 通义千问

文章目录

  • 1.请解释一下Compose项目的目录结构。
      • 根目录
      • 模块目录(通常是`app`)
        • `app/build.gradle`
        • `app/src/main`
        • `app/src/main/ui`
        • `app/src/main/composables`
        • `app/src/debug`
        • `app/src/release`
      • 测试相关目录
      • 其他文件和目录
      • 示例目录结构
  • 2.解释一下下列代码,加上必要的注释
      • 代码解释
  • 3.这段代码我也不理解,帮我加上必要的注释。
      • 解释
  • 4.下面这段代码也解释一下,加上必要的注释。
      • 代码解释
  • 5.还有一段代码,帮忙解释一下,加上必要的注释。
      • 代码解释

1.请解释一下Compose项目的目录结构。

Jetpack Compose项目的目录结构与传统的Android项目相似,但有一些特定的文件和配置用于支持Compose UI。了解这个结构有助于更好地组织代码、资源和依赖项。以下是一个典型的Jetpack Compose项目的目录结构及其各个部分的作用:

根目录

  • build.gradle:根级别的构建脚本,通常包含所有子模块共享的配置和依赖管理。

  • gradle.properties:定义了Gradle的全局属性,例如版本号等。

  • settings.gradle:指定哪些模块是项目的一部分。

  • .gitignore:告诉Git哪些文件或目录应该被忽略,不纳入版本控制。

模块目录(通常是app

这是你主要的应用程序代码所在的地方。对于大多数项目来说,这里会有一个名为app的模块,它包含了应用程序的所有源代码和资源。

app/build.gradle
  • 模块级别的构建脚本,包含特定于该模块的配置,如插件、依赖项、签名配置等。对于Jetpack Compose项目,你会在这里看到对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"...
}
app/src/main

这是应用程序的主要源码和资源目录。

  • java/kotlin:存放应用程序的Java或Kotlin源代码。对于Jetpack Compose项目,推荐使用Kotlin,并且大部分UI逻辑将位于这里的Composable函数中。

  • res

    • drawable:存放图片和其他可绘制资源。
    • layout:尽管Jetpack Compose不再需要XML布局文件,但某些情况下可能仍然会有遗留的XML布局资源。
    • mipmap:应用图标资源。
    • values:字符串、颜色、尺寸等资源文件。
    • xml:其他XML配置文件,如权限配置等。
  • resources:可以存放额外的资源文件,如字体、着色器等。

  • AndroidManifest.xml:应用程序的清单文件,定义了组件和服务等信息。

app/src/main/ui

这是一个常见的组织方式,专门用于存放与UI相关的代码。虽然这不是强制性的,但它有助于保持代码的整洁和易于维护。在这个目录下,你可以创建多个子目录来进一步分类你的UI组件:

  • components:基础UI组件,如按钮、文本框等。
  • screens:每个屏幕或页面的顶级组合函数。
  • themes:主题和样式定义,如颜色、字体等。
  • utils:辅助函数和工具类。
app/src/main/composables

另一个常见的组织方式是直接在src/main下创建一个composables文件夹,用来存放所有的Composable函数。这种方式适用于较小规模的项目,或者当你的UI逻辑相对简单时。

app/src/debug
  • 这个目录用于存放仅在调试构建中使用的代码和资源,例如特殊的调试工具或日志记录功能。
app/src/release
  • 类似地,这个目录用于存放仅在发布构建中使用的代码和资源,如不同的API密钥或优化后的资源文件。

测试相关目录

  • app/src/androidTest:存放仪器测试代码,这些测试是在真实设备或模拟器上运行的。
  • app/src/test:存放单元测试代码,这些测试是在主机(即开发者的电脑)上运行的。

其他文件和目录

  • .idea:包含IDE特定的配置文件,如编码设置、版本控制集成等。
  • build:由Gradle生成的输出文件,如编译后的APK、缓存等。通常不需要手动修改这个目录中的内容。
  • captures:有时用于存储性能分析捕捉数据或其他临时文件。

示例目录结构

MyComposeApp/
├── app/
│   ├── build.gradle
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/
│   │   │   ├── kotlin/
│   │   │   │   └── com/
│   │   │   │       └── example/
│   │   │   │           └── mycomposeapp/
│   │   │   │               ├── MainActivity.kt
│   │   │   │               ├── ui/
│   │   │   │               │   ├── components/
│   │   │   │               │   ├── screens/
│   │   │   │               │   ├── themes/
│   │   │   │               │   └── utils/
│   │   │   ├── res/
│   │   │   │   ├── drawable/
│   │   │   │   ├── layout/
│   │   │   │   ├── mipmap/
│   │   │   │   ├── values/
│   │   │   │   └── xml/
│   │   │   └── AndroidManifest.xml
│   │   ├── androidTest/
│   │   └── test/
│   ├── src/debug/
│   └── src/release/
├── build.gradle
├── gradle.properties
├── settings.gradle
└── .gitignore

通过这种结构化的方式,你可以更清晰地管理和扩展Jetpack Compose项目。当然,具体的目录布局可以根据项目的复杂性和团队的偏好进行调整。重要的是选择一种能够帮助你高效工作并保持代码整洁的方法。

我还看不懂代码,让Ai解释一下吧

2.解释一下下列代码,加上必要的注释

当然,下面是对这段Jetpack Compose代码的详细解释,并加上了必要的注释来帮助理解每个部分的功能和作用:

package cn.edu.jssvc.myapplicationimport android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import cn.edu.jssvc.myapplication.ui.theme.MyApplicationTheme// 定义主活动类,继承自ComponentActivity,这是Jetpack Compose推荐的基类
class MainActivity : ComponentActivity() {// 重写onCreate方法,在这里设置应用的内容视图(UI)override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// 使用setContent来定义Composable函数作为应用程序的主要UI内容setContent {// 应用程序的主题,通常包含颜色、字体等样式信息MyApplicationTheme {// Surface组件用于提供一个背景色并容纳其他子组件// 这里使用fillMaxSize修饰符让Surface占据整个屏幕// 并使用MaterialTheme中的background颜色作为背景色Surface(modifier = Modifier.fillMaxSize(),color = MaterialTheme.colorScheme.background) {// 调用Greeting函数显示欢迎消息Greeting("Android")}}}}
}// 定义一个Composable函数,它接受一个字符串参数name和一个可选的Modifier参数
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {// Text组件用于显示文本,这里是动态地显示传入的名字Text(text = "Hello $name!", // 动态生成的问候语modifier = modifier // 可选的修饰符,默认为无修饰)
}// 定义一个预览函数,用于在Android Studio中预览Greeting组件的样子
@Preview(showBackground = true) // 显示背景以便更好地查看UI效果
@Composable
fun GreetingPreview() {// 在预览中应用主题,以确保预览与实际运行时一致MyApplicationTheme {// 预览Greeting组件,传入"Android"作为名字Greeting("Android")}
}

代码解释

  1. 包声明

    • package cn.edu.jssvc.myapplication:指定代码所在的包名,这有助于组织和管理项目中的不同模块。
  2. 导入语句

    • 导入了必要的库和工具,包括Android操作系统、Jetpack Compose的基础组件、布局修饰符、主题支持等。
  3. MainActivity类

    • 继承自ComponentActivity,这是Jetpack Compose推荐的基类。
    • 重写了onCreate方法,其中调用了setContent来定义应用的主要UI内容。
    • 使用了MyApplicationTheme来应用应用程序的主题样式。
    • 包含了一个Surface组件,设置了填充整个屏幕的修饰符,并指定了背景颜色。
    • 调用了Greeting函数来显示一条欢迎消息。
  4. Greeting函数

    • 是一个Composable函数,意味着它可以用来构建UI。
    • 接受一个字符串参数name,用于定制化问候语。
    • 内部使用Text组件来显示文本,支持传递一个可选的Modifier参数以进一步定制其行为或外观。
  5. GreetingPreview函数

    • 通过@Preview注解标记为预览函数,允许开发者在不运行应用程序的情况下查看UI的效果。
    • showBackground = true参数确保预览窗口中有背景色,从而更真实地反映最终的应用界面。
    • 应用了MyApplicationTheme以确保预览时使用的主题与实际应用一致。
    • 调用了Greeting函数,传入固定的文本"Android"作为示例。

通过这种方式,你可以创建一个简单的Jetpack Compose应用程序,它会在启动时显示一条带有特定文本的问候消息。同时,提供的预览功能使得开发者可以在IDE中快速查看UI效果,而无需每次都要编译和部署应用。

3.这段代码我也不理解,帮我加上必要的注释。

当然可以。这段代码定义了一些颜色常量,这些颜色通常用于应用程序的主题配置中。以下是带有详细注释的版本,帮助你理解每个部分的作用:

package cn.edu.jssvc.myapplication.ui.themeimport androidx.compose.ui.graphics.Color// 定义了一系列颜色值,使用Color类创建特定的颜色对象。
// 这些颜色将被用于应用程序的主题,例如背景色、文本颜色等。// 主色调(Primary Colors)
// 紫色80 (Purple80) - 较浅的紫色,适用于强调色或次要元素
val Purple80 = Color(0xFFD0BCFF)// 紫灰80 (PurpleGrey80) - 带有灰色调的浅紫色,适合用作分隔线或背景
val PurpleGrey80 = Color(0xFFCCC2DC)// 粉色80 (Pink80) - 较浅的粉色,可以用于按钮或其他交互元素
val Pink80 = Color(0xFFEFB8C8)// 次要色调(Secondary Colors)
// 紫色40 (Purple40) - 较深的紫色,通常作为主色调,如工具栏背景或标题文字
val Purple40 = Color(0xFF6650a4)// 紫灰40 (PurpleGrey40) - 深紫色带灰色调,可用于图标或文本颜色
val PurpleGrey40 = Color(0xFF625b71)// 粉色40 (Pink40) - 较深的粉色,适合用作警告信息或重要提示的颜色
val Pink40 = Color(0xFF7D5260)

解释

  1. 包声明

    • package cn.edu.jssvc.myapplication.ui.theme:指定了代码所在的包名,确保这些颜色资源能够被项目中的其他模块正确引用。
  2. 导入语句

    • import androidx.compose.ui.graphics.Color:导入了Jetpack Compose库中的Color类,它用于表示和操作颜色。
  3. 颜色常量定义

    • 这里定义了六种颜色,每种颜色都由一个十六进制的颜色码表示。这些颜色分为两个类别:
      • 主色调(Primary Colors):较浅的颜色,通常用于界面中的强调色或次要元素。
      • 次要色调(Secondary Colors):较深的颜色,适合作为主色调,如背景、标题文字等。
  4. 颜色用途说明

    • 对于每个颜色变量,添加了简短的注释解释其可能的应用场景。这有助于开发者在选择颜色时更好地理解它们的预期用途。

通过这种方式,你可以为应用程序创建一个统一且协调的颜色方案,从而提升用户体验的一致性和美观度。当需要在应用的不同部分使用这些颜色时,只需引用相应的变量即可。例如,在定义主题或设置UI组件的颜色属性时,你可以直接使用Purple80Purple40等变量来确保整个应用的颜色风格一致。

4.下面这段代码也解释一下,加上必要的注释。

当然,下面是对这段Jetpack Compose代码的详细解释,并加上了必要的注释来帮助理解每个部分的功能和作用:

package cn.edu.jssvc.myapplication.ui.themeimport android.app.Activity
import android.os.Build
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect
import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.core.view.WindowCompat// 定义深色模式下的颜色方案,使用之前定义的颜色常量
private val DarkColorScheme = darkColorScheme(primary = Purple80, // 主色调(例如:工具栏背景)secondary = PurpleGrey80, // 次要色调(例如:按钮或图标)tertiary = Pink80 // 第三色调(例如:强调色)
)// 定义浅色模式下的颜色方案,同样使用之前定义的颜色常量
private val LightColorScheme = lightColorScheme(primary = Purple40, // 主色调secondary = PurpleGrey40, // 次要色调tertiary = Pink40 // 第三色调/* Other default colors to overridebackground = Color(0xFFFFFBFE), // 背景颜色surface = Color(0xFFFFFBFE), // 表面颜色(如卡片)onPrimary = Color.White, // 主色调上的文本颜色onSecondary = Color.White, // 次要色调上的文本颜色onTertiary = Color.White, // 第三色调上的文本颜色onBackground = Color(0xFF1C1B1F), // 背景上的文本颜色onSurface = Color(0xFF1C1B1F), // 表面上的文本颜色*/
)// 定义一个Composable函数MyApplicationTheme,用于设置应用程序的主题
@Composable
fun MyApplicationTheme(darkTheme: Boolean = isSystemInDarkTheme(), // 是否启用暗黑模式,默认跟随系统设置dynamicColor: Boolean = true, // 是否启用动态颜色(仅Android 12及以上版本支持),默认启用content: @Composable () -> Unit // 接受一个Composable内容块作为参数
) {// 根据条件选择合适的颜色方案val colorScheme = when {// 如果启用了动态颜色且设备API级别为Android 12及以上,则使用动态颜色方案dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {val context = LocalContext.current // 获取当前上下文if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)}// 否则根据是否启用暗黑模式选择预定义的颜色方案darkTheme -> DarkColorSchemeelse -> LightColorScheme}// 获取当前视图val view = LocalView.current// 如果不是在编辑模式下(即不是在设计时预览),应用一些额外的效果if (!view.isInEditMode) {SideEffect {// 获取当前窗口val window = (view.context as Activity).window// 设置状态栏颜色为主色调window.statusBarColor = colorScheme.primary.toArgb()// 设置状态栏图标颜色是否为亮色(根据是否是暗黑模式)WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !darkTheme}}// 应用MaterialTheme,传递选定的颜色方案、排版规则以及实际的内容MaterialTheme(colorScheme = colorScheme,typography = Typography, // 使用预定义的排版规则content = content // 插入传入的内容)
}

代码解释

  1. 包声明

    • package cn.edu.jssvc.myapplication.ui.theme:指定代码所在的包名,确保这些主题配置能够被项目中的其他模块正确引用。
  2. 导入语句

    • 导入了必要的库和工具,包括Android操作系统、Jetpack Compose的基础组件、颜色方案、排版规则等。
  3. 颜色方案定义

    • DarkColorSchemeLightColorScheme 分别定义了深色模式和浅色模式下的颜色方案。它们指定了主色调、次要色调和第三色调,以及其他可能需要覆盖的颜色属性。
  4. MyApplicationTheme函数

    • 是一个Composable函数,用于设置整个应用程序的主题。
    • 接受三个参数:
      • darkTheme:布尔值,指示是否启用暗黑模式,默认情况下跟随系统的设置。
      • dynamicColor:布尔值,指示是否启用动态颜色(仅适用于Android 12及以上版本),默认启用。
      • content:接受一个Composable内容块作为参数,表示应用程序的实际UI内容。
    • 根据dynamicColorBuild.VERSION.SDK_INT判断是否使用动态颜色方案。如果启用了动态颜色并且设备支持,则根据是否启用暗黑模式选择相应的动态颜色方案;否则,选择预定义的颜色方案。
    • 使用SideEffect副作用函数,在非编辑模式下应用额外的效果,如设置状态栏颜色和状态栏图标颜色。
    • 最后,通过MaterialTheme应用选定的颜色方案、排版规则以及实际的内容。
  5. 状态栏颜色和图标颜色设置

    • SideEffect中,获取当前窗口并设置其状态栏颜色为主色调的颜色值。
    • 根据是否启用暗黑模式设置状态栏图标颜色是否为亮色,以确保与主题一致。
  6. MaterialTheme应用

    • 将选定的颜色方案和排版规则应用于整个应用程序的主题中,并插入传入的UI内容。

通过这种方式,你可以创建一个灵活且响应式的设计主题,它可以根据用户的偏好(如是否启用暗黑模式)和设备特性(如是否支持动态颜色)自动调整。这不仅提升了用户体验的一致性和美观度,还减少了开发者手动管理不同主题变体的工作量。

5.还有一段代码,帮忙解释一下,加上必要的注释。

当然,下面是对这段Jetpack Compose代码的详细解释,并加上了必要的注释来帮助理解每个部分的功能和作用:

package cn.edu.jssvc.myapplication.ui.themeimport androidx.compose.material3.Typography
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.sp// 定义一个Typography对象,用于配置应用程序中的文本样式。
// Typography是Material Design中定义的一组预设文本样式,可以确保应用内的文字排版一致且美观。val Typography = Typography(// bodyLarge:用于正文内容的主要文本样式bodyLarge = TextStyle(fontFamily = FontFamily.Default, // 使用默认字体系列fontWeight = FontWeight.Normal, // 字体粗细为正常(普通)fontSize = 16.sp, // 字体大小为16sp(缩放独立像素)lineHeight = 24.sp, // 行高为24sp,确保多行文本有足够的间距letterSpacing = 0.5.sp // 字符间距为0.5sp,增加字符之间的可读性),/*// 下面是其他可以覆盖的默认文本样式,可以根据需要取消注释并调整:titleLarge = TextStyle(fontFamily = FontFamily.Default, // 使用默认字体系列fontWeight = FontWeight.Normal, // 字体粗细为正常(普通)fontSize = 22.sp, // 字体大小为22splineHeight = 28.sp, // 行高为28spletterSpacing = 0.sp // 字符间距为0sp),labelSmall = TextStyle(fontFamily = FontFamily.Default, // 使用默认字体系列fontWeight = FontWeight.Medium, // 字体粗细为中等fontSize = 11.sp, // 字体大小为11splineHeight = 16.sp, // 行高为16spletterSpacing = 0.5.sp // 字符间距为0.5sp)*/
)

代码解释

  1. 包声明

    • package cn.edu.jssvc.myapplication.ui.theme:指定了代码所在的包名,确保这些排版配置能够被项目中的其他模块正确引用。
  2. 导入语句

    • 导入了必要的库和工具,包括Material Design的排版规则、文本样式、字体系列、字体粗细以及单位转换(如sp)。
  3. Typography对象定义

    • val Typography = Typography(...):创建了一个名为Typography的对象,它包含了一组预设的文本样式。这个对象将用于整个应用程序的文本排版设置,以确保一致性。
  4. bodyLarge文本样式

    • bodyLarge:这是用于正文内容的主要文本样式,适用于段落文本或长篇内容。
      • fontFamily = FontFamily.Default:使用默认字体系列,即设备系统字体。
      • fontWeight = FontWeight.Normal:字体粗细为正常(普通),适用于大多数正文文本。
      • fontSize = 16.sp:字体大小为16sp,这是一个常见的正文文本大小。
      • lineHeight = 24.sp:行高为24sp,确保多行文本有足够的间距,提高可读性。
      • letterSpacing = 0.5.sp:字符间距为0.5sp,轻微增加字符之间的空间,有助于提升阅读体验。
  5. 其他文本样式(注释掉的部分)

    • 这里列出了其他一些可以自定义的文本样式,例如titleLargelabelSmall,它们分别用于较大的标题和较小的标签文本。
    • 每个样式都包含了类似的属性:字体系列、字体粗细、字体大小、行高和字符间距。
    • 如果你需要在应用程序中使用这些样式,可以取消注释并根据需要进行调整。

通过这种方式,你可以为应用程序创建一组统一的文本样式,从而确保整个应用的文字排版风格一致。这不仅提升了用户体验的一致性和美观度,还减少了开发者手动管理不同文本样式的复杂性。当需要在UI组件中应用这些样式时,只需引用相应的Typography属性即可,例如Typography.bodyLargeTypography.titleLarge

相关文章:

我用AI学Android Jetpack Compose之入门篇(2)

我跑成功了第一个Compose应用,但我还是有很多疑问,请人工智能来解释一下吧。答案来自 通义千问 文章目录 1.请解释一下Compose项目的目录结构。根目录模块目录(通常是app)app/build.gradleapp/src/mainapp/src/main/uiapp/src/ma…...

确认2D Tilemap Editor安装后仍然没有基础的Tile

Create > 2D 新建里面什么Tile类型都有,就是没有最基础的Tile。 在Assets文件夹中,点击右键 > Create > C# Script,新建一个脚本,代码内容复制粘贴进去 using UnityEngine; using UnityEngine.Tilemaps;[CreateAssetMe…...

flutter 独立开发之笔记

1、# use: - [flutter_launcher_icons:] 每次修改完icon后,都需要执行一遍 dart run flutter_launcher_icons 2、开启混淆并打包apk flutter build apk --obfuscate --split-debug-info./out/android/app.android-arm64.symbols 3、开启windows支持 flutter con…...

234.回文链表

234.回文链表 思路1&#xff1a;双指针 1.一次遍历记录链表的值到数组中 2.数组头尾双指针开始判断 复杂度&#xff1a; 时间O(n),空间O(n) 代码&#xff1a; class Solution { public:bool isPalindrome(ListNode* head) {vector<int>nums;while(head){nums.push…...

02、Redis的安装与配置

一、安装配置CentOS7 第一步:安装虚拟机 这个步比较简单,直接安装好VMware和使用CentOS7的镜像安装操作系统 相关资源如果有需要可以在如下位置下载: VMare虚拟机:VMare工具 CentOS7镜像:CentOS7镜像 JDK17_linux-x64:JDK17_linux-x64 linux服务器连接工具:MobaX…...

自动驾驶相关知识学习笔记

一、概要 因为想知道SIL、HIL是什么仿真工具&#xff0c;故而浏览了自动驾驶相关的知识。 资料来源《自动驾驶——人工智能理论与实践》胡波 林青 陈强 著&#xff1b;出版时间&#xff1a;2023年3月 二、图像的分类、分割与检测任务区别 如图所示&#xff0c;这些更高阶的…...

虹软人脸识别

虹软人脸识别 一.虹软人脸识别1. 获取APP_ID与SDK_KEY2. 获取SDK二.Spring整合1. jar包引入2. yaml配置3. 配置类4. 工具类5. api接口6. 启动加载三.前端四.相关文献一.虹软人脸识别 开发者平台 1. 获取APP_ID与SDK_KEY 2. 获取SDK 开发文档 jar包与dll文件...

【Unity笔记】如何把语言修改为简体中文?

方法1&#xff1a; 打开unity hub--------->点击安装--------------->点击你正在使用引擎的设置按钮&#xff08;右面&#xff09;------------>点击添加模块------------>最下面语言包&#xff0c;下载简体中文。 方法2&#xff1a; https://new-translate.unit…...

在Nvidia Jetson ADX Orin中使用TensorRT-LLM运行llama3-8b

目录 背景&#xff1a;步骤 1.获取模型权重第 2 步&#xff1a;准备第 3 步&#xff1a;构建 TensorRT-LLM 引擎 背景&#xff1a; 大型语言模型 &#xff08;LLM&#xff09; 推理的关键瓶颈在于 GPU 内存资源短缺。因此&#xff0c;各种加速框架主要强调减少峰值 GPU 内存使…...

图数据库管理系统(Graph DBMS)全面解析

目录 前言1. 图数据库管理系统概述1.1 图数据库的基本组成1.2 图数据库的工作原理 2. 图数据库的特点与优势2.1 高效处理复杂关系数据2.2 灵活的数据建模2.3 优越的查询性能2.4 支持大规模分布式存储 3. 图数据库的应用场景3.1 社交网络3.2 推荐系统3.3 金融风控3.4 网络与IT运…...

中华人民共和国预算法实施条例

(1995年11月2日国务院第37次常务会议通过 1995年11月22日中华人民共和国国务院令第186号发布 自发布之日起施行) 第一章 总则 第一条 根据《中华人民共和国预算法》(以下简称预算法)&#xff0c;制定本条例。 第二条 县级以上地方政府的派出机关&#xff0c;根据本级政…...

LabVIEW专栏十、工厂模式

目录 一、工厂模式1.1、创建仪器管理类1.2、初始化1.3、方法1.3.1、set devices1.3.2、index to device 1.4、释放资源 二、测试管理类2.1、界面2.2、程序框图2.2.1、初始化2.2.2、索引仪器 该章介绍一种设计模式"工厂模式"&#xff0c;新建一个仪器管理类&#xff0…...

基于SpringBoot的斯诺克球馆预约购票管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

C# 设计模式(行为型模式):命令模式(专注于撤销重做)

C# 设计模式&#xff08;行为型模式&#xff09;&#xff1a;命令模式 (Command Pattern) 一、什么是命令模式&#xff1f; 命令模式&#xff08;Command Pattern&#xff09;是一种行为型设计模式&#xff0c;它将请求封装成一个对象&#xff0c;从而使你可以用不同的请求、队…...

牛客网刷题 ——C语言初阶(2分支和循环-for)——打印菱形

1. 题目描述 用C语言在屏幕上输出以下图案&#xff1a; 2. 思路 我是先上手&#xff0c;先把上半部分打印出来&#xff0c;然后慢慢再来分析&#xff0c;下面这是我先把整个上半部分打印出来&#xff0c;因为空格不方便看是几个&#xff0c;这里先用&代替空格了 然后这里…...

[ LeetCode 75 ] 1768. 交替合并字符串

题目描述&#xff1a;&#xff08;相关标签&#xff1a;双指针、字符串&#xff09; 给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾。 返…...

【Java】——方法

方法&#xff08;method&#xff09;是程序中最小的执行单元 eg&#xff1a;main方法 作用&#xff1a; 提高代码的复用性、提高代码的可维护性 方法的格式&#xff1a; 将代码打包在一起&#xff0c;该过程称为方法定义 方法调用&#xff1a; 方法定义后并不是直接运行&am…...

Koi技术教程-Tauri基础教程-第一节 Tauri项目创建及结构说明

1 “你日渐平庸&#xff0c;甘于平庸&#xff0c;将继续平庸。”——《以自己喜欢的方式过一生》 2. “总是有人要赢的&#xff0c;那为什么不能是我呢?”——科比布莱恩特 3. “你那么憎恨那些人&#xff0c;和他们斗了那么久&#xff0c;最终却要变得和他们一样&#xff0c;…...

《Mcal》--MCU模块

一、MCU模块的主要功能 控制系统时钟的产生。控制系统通用模块&#xff0c;该模块会涉及到Adc、Ftm等外设的配置。控制外设时钟。控制MCU运行的模式。初始化定义RAM Section。 比较重要的是时钟的配置。 二、系统时钟的配置 1、芯片时钟树 要想弄明白时钟配置&#xff0c;需…...

大模型思维链推理的进展、前沿和未来分析

大模型思维链推理的综述&#xff1a;进展、前沿和未来 "Chain of Thought Reasoning: A State-of-the-Art Analysis, Exploring New Horizons and Predicting Future Directions." 思维链推理的综述&#xff1a;进展、前沿和未来 摘要&#xff1a;思维链推理&#…...

windows上利用MinGW编译hiredis

1、下载 hiredis https://github.com/redis/hiredis 2、利用CMake生成Makefile文件 CMAKE_BUILD_TYPE: 默认空的时候是Release的。如果需要Debug则自行修改。 执行Configure的时候选择MinGW&#xff08;确保MinGW已经安装&#xff0c;并且已加入到环境变量&#xff09; 3、执行…...

06-RabbitMQ基础

目录 1.初识MQ 1.1.同步调用 1.2.异步调用 1.3.技术选型 2.RabbitMQ 2.1.安装 2.2.收发消息 2.2.1.交换机 2.2.2.队列 2.2.3.绑定关系 2.2.4.发送消息 2.3.数据隔离 2.3.1.用户管理 2.3.2.virtual host 3.SpringAMQP 3.1.导入Demo工程 3.2.快速入门 3.2.1.消…...

Spring Boot 的自动配置,以rabbitmq为例,请详细说明

Spring Boot 的自动配置特性能够大大简化集成外部服务和组件的配置过程。以 RabbitMQ 为例&#xff0c;Spring Boot 通过 spring-boot-starter-amqp 提供了自动配置支持&#xff0c;开发者只需在应用中添加相关依赖并配置必要的属性&#xff0c;Spring Boot 会自动配置所需的连…...

ros2-4.1 服务通信介绍

服务是ROS图中节点之间的另一种通信方法。服务分为客户端和服务端&#xff0c;客户端发送请求给服务端&#xff0c;服务端可以根据客户端的请求做一些处理&#xff0c;然后返回结果给客户端。也称为为请求-响应模型。 服务和话题的不同之处&#xff0c;话题是没有返回的&#…...

如何 cURL Elasticsearch:进入 Shell

作者&#xff1a;来自 Elastic Philipp Krenn Kibana 的控制台是开始使用 Elasticsearch 的 REST API 的最简单方法 - 语法突出显示、自动完成、格式化、导出 cURL、JavaScript 或 Python。而且你不必担心正确的端点、身份验证等。但是有时&#xff0c;如果 Kibana 不可用、你…...

【信息系统项目管理师】高分论文:论信息系统项目的风险管理(人民医院的信息系统)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划风险管理2、项目风险识别3、风险定性分析4、风险定量分析5、制定风险应对6、实施风险应对计划7、监督风险论文 2022年6月,我作为项目经理承担了XX县人民医院的信息系统建设,该项目总投资300万,其…...

安装和配置 Apache 及 PHP

安装和配置 Apache 及 PHP # 1. 停止当前 Apache 服务 sudo apachectl stop# 2. 清除现有的 Apache 配置和文件 sudo rm -rf /etc/apache2 sudo rm -rf /usr/sbin/httpd sudo rm -rf /Library/WebServer# 3. 使用 Homebrew 安装 Apache brew install httpd# 4. 启动 Apache su…...

jenkins入门12-- 权限管理

Jenkins的权限管理 由于jenkins默认的权限管理体系不支持用户组或角色的配置&#xff0c;因此需要安装第三发插件来支持角色的配置&#xff0c;我们使用Role-based Authorization Strategy 插件 只有项目读权限 只有某个项目执行权限...

虚功、达朗贝尔原理和拉格朗日方程

本文先引入虚位移,从虚功和虚功原理出发,介绍达朗贝尔原理(d’Alembert’s principle) 和 拉格朗日方程(Lagrange’s equations)。 1. 虚功 力学系统的虚位移(virtual displacement)或称无限小位移(infinitesimal displacement)是指力学系统的位形(configuration …...

面向对象分析和设计OOA/D,UML,GRASP

目录 什么是分析和设计&#xff1f; 什么是面向对象的分析和设计&#xff1f; 迭代开发 UML 用例图 交互图 基于职责驱动设计 GRASP 常见设计原则 什么是分析和设计&#xff1f; 分析&#xff0c;强调是对问题和需求的调查研究&#xff0c;不是解决方案。例如&#x…...

【Linux】记录一下考RHCE的学习过程(七)

年底了&#xff0c;公司接的北京地铁轨道交通的项目做不完了&#xff0c;一百多列地铁的设备都得调&#xff0c;派我出差了几周&#xff0c;这几天才回来&#xff0c;出差累死了实在是没办法更新。&#xff08;YOASOBI的二开票还没抢到ToT&#xff0c;哭死&#xff0c;看看回滚…...

【深度学习】深度(Deep Learning)学习基础

深度学习&#xff08;Deep Learning&#xff09; 深度学习是一种基于人工神经网络的机器学习方法&#xff0c;通过多个层次&#xff08;深度&#xff09;的神经网络从数据中自动学习特征和模式。它是人工智能的一个核心领域&#xff0c;尤其在处理复杂数据&#xff08;如图像、…...

121 买入股票的最佳时机

思路1&#xff1a; 买的那天一定是卖的那天之前的最小值。 每到一天&#xff0c;维护那天之前的最小值即可。 假设第一天是最小值&#xff0c;最大值初始化为0&#xff0c;当以后某天的价格小于最小值时&#xff0c;将最小值更新 当天价格大于最小值&#xff0c;说明有利可图…...

JVM之Java内存模型

Java内存模型&#xff08;Java Memory Model&#xff0c;简称JMM&#xff09;是Java虚拟机&#xff08;JVM&#xff09;规范中定义的一套规则&#xff0c;用于描述多线程环境下变量如何被访问和同步。在多线程编程中&#xff0c;内存模型的重要性不言而喻&#xff0c;它直接关系…...

matlab系列专栏-快捷键速查手册

目录 1在命令窗口(Command Window)中 2. 在编辑器(Editor)&#xff08;m文件&#xff09;中 1在命令窗口(Command Window)中 1)【↑、↓】——切换到之前、之后运行过的命令&#xff0c;可以重复按多次来达到想要的命令。 2)【Tab】——自动补全。在Command窗口&#xff0c…...

快手一面-面经

1. RPC和Http的区别&#xff1f; RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;和 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是两种不同的通信机制&#xff0c;它们有不同的用途、工作原理和应用场景…...

<style lang=“scss“ scoped>: 这是更常见的写法,也是官方文档中推荐的写法

这两种写法在大多数情况下是没有区别的&#xff0c;它们都是 Vue.js 单文件组件 (.vue 文件) 中用来定义组件私有样式的方式。 两种写法&#xff1a; <style lang"scss" scoped>: 这是更常见的写法&#xff0c;也是官方文档中推荐的写法。<style scoped l…...

cerebro关闭ssl

cerebro连接es报错 io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException: (certificate_unknown) Received fatal alert: certificate_unknown 在cerebro的application.conf配置文件中添加 play.ws.ssl.loose.acceptAnyCertificate true Disab…...

网络安全常见的问题

1. 什么是 DDoS 攻击&#xff1f;如何防范&#xff1f; 答&#xff1a;DDoS 攻击是指利用大量的计算机或者其他网络设备&#xff0c;同时向目标网络或者服务器 发送 大量的数据流量&#xff0c;以致其无法正常工作&#xff0c;从而导致网络瘫痪或者服务器宕机的攻击行 为。 …...

Eclipse配置Tomcat服务器(最全图文详解)

前言&#xff1a; 本章使用图文讲解如何在Eclipse开发工具中配置Tomcat服务器、如何创建和启动JavaWeb工程&#xff0c;欢迎童鞋们互相交流。觉得不错可以三连订阅喔。 目标&#xff1a; 一、配置Tomcat服务器 1. 切换Eclipse视图 2. 打开菜单 3. 找到服务选项 4. 选择…...

mv指令详解

&#x1f3dd;️专栏&#xff1a;https://blog.csdn.net/2301_81831423/category_12872319.html &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 基本语法 主要功能 常用选项详解 1. …...

SQL从入门到实战

学前须知 sqlzoo数据介绍 world nobel covid ge game、goal、eteam teacher、dept movie、casting、actor 基础语句 select&from SELECT from WORLD Tutorial - SQLZoo 基础查询select单列&多列&所有列&别名应用 例题一 SELECT name, continent, population …...

回归中医传统 重铸中医之魂 — 薛应中 —

最近做了一个20次课的讲义纲要,每节课都是中医理念下某一类疾病的认知与诊疗,或是一个重大健康观念的辨析,准备陆续和各届人士一起探讨。 下面就算是一个序言,主要是做一个自我介绍,将自己的一点心得,结合我的行医经历,以及学习中医的治学之道等,做一个开场白。 (一)中医的有…...

什么是面向对象?

面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种流行的编程方法&#xff0c;它以对象和类为基础构建软件。该编程范式围绕“对象”这一基本概念展开&#xff0c;其中对象被视为包含数据和行为的软件构件。以下是对面向对象编程的深…...

HDFS读写流程

因为namenode维护管理了文件系统的元数据信息&#xff0c;这就造成了不管是读还是写数据都是基于NameNode开始的&#xff0c;也就是说NameNode成为了HDFS访问的唯一入口。入口地址是&#xff1a;http://nn_host:8020。 一、写数据流程 1.1 Pipeline管道、ACK应答响应 Pipeline…...

HDFS Federation联邦机制

一、当前HDFS体系架构 1.1 简介 当前的HDFS架构有两个主要的层&#xff1a; 命名空间&#xff08;namespace&#xff09; HDFS体系结构中的命名空间层由文件&#xff0c;块和目录组成。该层支持与名称空间相关的文件系统操作&#xff0c;例如创建&#xff0c;删除&#xff0…...

机器学习周报-ModernTCN文献阅读

文章目录 摘要Abstract 0 提升有效感受野&#xff08;ERF&#xff09;1 相关知识1.1 标准卷积1.2 深度分离卷积&#xff08;Depthwise Convolution&#xff0c;DWConv&#xff09;1.3 逐点卷积&#xff08;Pointwise Convolution&#xff0c;PWConv&#xff09;1.4 组卷积(Grou…...

QT RC_FILE 应用程序图标设置

1.先做一个app.ico 文件&#xff0c;并将文件放入资源文件夹中 2.打开QT项目的.pro文件在最下面增加 RC_FILE $$PWD/res/app.rc 3.在资源文件夹中创建一个app.rc文件。在QT开发工具中编辑并输入下在内容 IDI_ICON1 ICON "app.ico" 4.测试效果...

5G学习笔记之SNPN系列之网络选择

目录 0. NPN系列 1. 概述 2. 自动网络选择 3. 手动网络选择 0. NPN系列 1. NPN概述 2. NPN R18 3. 【SNPN系列】SNPN ID和广播消息 4. 【SNPN系列】UE入网和远程配置 5. 【SNPN系列】SNPN选择 6. PNI-NPN 1. 概述 对于某个特定的UE&#xff0c;可以仅支持SNPN接入模式&#x…...

k8s helm部署kafka集群(KRaft模式)——筑梦之路

添加helm仓库 helm repo add bitnami "https://helm-charts.itboon.top/bitnami" --force-update helm repo add grafana "https://helm-charts.itboon.top/grafana" --force-update helm repo add prometheus-community "https://helm-charts.itboo…...