Skip to content
  • NestJS模块中providers,imports,exports的简单使用

    NestJS模块中有三个参数,分别是providers,imports和exports,很多时候经常会搞不清楚他们的具体用途,下面作个简单介绍。

    Providers(提供者)

    在 NestJS 中,providers 是一种处理业务逻辑的特殊类。它们是模块中的主要组件,用于处理数据存储、服务调用和其他与业务逻辑相关的任务。

    typescript
    // cat.service.ts
    
    import { Injectable } from '@nestjs/common';
    
    @Injectable()
    export class Cat
    // cat.service.ts
    
    import { Injectable } from '@nestjs/common';
    
    @Injectable()
    export class Cat
  • Android开发常见问题:Android Studio[read time out]解决方法

    因为在多平台开发,经常会重新拉取代码,或者更新依赖,在gradle构建的时候,会出现read time out的报错,在中国区有时候挂VPN也不好使,这时候可以试试设置阿里云代理,如下:

    kotlin
    pluginManagement {
        repositories {
            maven("https://maven.aliyun.com/repository/google")
            maven("https://maven.aliyun.com/repository/public")
            maven("https://maven.aliyun.com/repository/jcenter")
            google()
            mavenCentral()
            gradlePluginPortal()
            maven("https://www.jitpack.io")
    
        }
    }
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            maven("https://maven.aliyun.com/repository/google")
            maven("https://maven.aliyun.com/repository/public")
            maven("https://maven.aliyun.com/repository/jcenter")
            google()
            mavenCentral()
            maven("https://www.jitpack.io")
    
        }
    }
    pluginManagement {
        repositories {
            maven("https://maven.aliyun.com/repository/google")
            maven("https://maven.aliyun.com/repository/public")
            maven("https://maven.aliyun.com/repository/jcenter")
            google()
            mavenCentral()
            gradlePluginPortal()
            maven("https://www.jitpack.io")
    
        }
    }
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            maven("https://maven.aliyun.com/repository/google")
            maven("https://maven.aliyun.com/repository/public")
            maven("https://maven.aliyun.com/repository/jcenter")
            google()
            mavenCentral()
            maven("https://www.jitpack.io")
    
        }
    }
    groovy
    buildscript {
        repositories {
            maven {
                url "https://maven.aliyun.com/repository/google"
            }
            maven {
                url "https://maven.aliyun.com/repository/public"
            }
            maven {
                url "https://maven.aliyun.com/repository/jcenter"
            }
            google()
            mavenCentral()
            gradlePluginPortal()
            maven {
                url "https://www.jitpack.io"
            }
        }
    }
    
    allprojects {
        repositories {
            maven {
                url "https://maven.aliyun.com/repository/google"
            }
            maven {
                url "https://maven.aliyun.com/repository/public"
            }
            maven {
                url "https://maven.aliyun.com/repository/jcenter"
            }
            google()
            mavenCentral()
            maven {
                url "https://www.jitpack.io"
            }
        }
    }
    buildscript {
        repositories {
            maven {
                url "https://maven.aliyun.com/repository/google"
            }
            maven {
                url "https://maven.aliyun.com/repository/public"
            }
            maven {
                url "https://maven.aliyun.com/repository/jcenter"
            }
            google()
            mavenCentral()
            gradlePluginPortal()
            maven {
                url "https://www.jitpack.io"
            }
        }
    }
    
    allprojects {
        repositories {
            maven {
                url "https://maven.aliyun.com/repository/google"
            }
            maven {
                url "https://maven.aliyun.com/repository/public"
            }
            maven {
                url "https://maven.aliyun.com/repository/jcenter"
            }
            google()
            mavenCentral()
            maven {
                url "https://www.jitpack.io"
            }
        }
    }
  • Jetpack Compose介绍

    Jetpack Compose 是 Android 官方推出的现代化 UI 工具包,它允许你使用 Kotlin 构建声明式的用户界面。本文将为你提供 Jetpack Compose 的快速入门指南,让你了解如何创建简单的 Composable 函数、构建用户界面以及处理用户交互。

    步骤 1:设置项目

    首先,确保你的 Android 项目已配置为使用 Jetpack Compose。你需要在项目的 build.gradle 文件中添加 Compose 相关依赖:

    android {
        ...
        buildFeatures {
            compose true
        }
    
        composeOptions {
            kotlinCompilerExtensionVersion '1.0.0-rc1'
        }
    }
    
    dependencies {
        ...
        implementation "androidx.compose.ui:ui:1.0.0-rc1"
        implementation "androidx.compose.material:material:1.0.0-rc1"
        implementation "androidx.activity:activity-compose:1.3.0-rc01"
    }
    android {
        ...
        buildFeatures {
            compose true
        }
    
        composeOptions {
            kotlinCompilerExtensionVersion '1.0.0-rc1'
        }
    }
    
    dependencies {
        ...
        implementation "androidx.compose.ui:ui:1.0.0-rc1"
        implementation "androidx.compose.material:material:1.0.0-rc1"
        implementation "androidx.activity:activity-compose:1.3.0-rc01"
    }

    TIP

    因为Compose还在不断地开发演进,所以版本众多,最近Google出了一个BOM的方式批量的方式去决定依赖版本,可以参考使用Using the Bill of Materials

  • Android Compose开发:使用Paging3进行分页加载

    Paging3 介绍

    Paging 3 是 Android 架构组件的一部分,旨在帮助 Android 应用程序有效地管理和显示大量数据。它专门用于处理分页加载,可以轻松地从网络或本地数据库加载数据,并以分页的方式显示在用户界面上。以下是 Paging 3 的简单介绍:

    1. 什么是 Paging 3?

    Paging 3 是一种用于处理分页加载数据的库,旨在简化 Android 应用程序中数据的管理和显示。它是 Android 架构组件的一部分,旨在解决应用程序中大量数据的常见问题。

    2. 核心概念

    Paging 3 基于

  • Android Compose开发:remember、mutableStateOf、derivedStateOf 和 rememberSaveable理解 Compose 中的状态管理

    Jetpack Compose 是一个现代的 Android UI 工具包,它引入了许多新的概念和技术来构建动态、响应式的用户界面。其中一个关键概念是状态管理,Compose 提供了一些工具来帮助我们管理和维护界面的状态。在本文中,我们将深入探讨 Compose 中的四个重要概念:remembermutableStateOfderivedStateOfrememberSaveable

    1. remember

    remember 是 Compose 中的一个函数,它用于创建一个可记忆的组件。这意味着无论组件如何重新

  • Android Compose开发:Retrofit如何实现JWT授权认证和自动刷新Token功能?OkHttp3中Interceptor和Authenticator使用实例

    之前写的《NestJS中如何进行鉴权和授权验证?JWT、Passport》这篇文章,介绍了在NestJS端如何实现JWT授权验证,下面介绍下,如何在Android端,利用Retrofit和OkHttp3来实现接口认证和Token自动刷新的功能。

    Interceptor

    在Android端,我们请求后端接口一般是以下代码:

    kotlin
        @POST("auth/current-user")
        suspend fu
        @POST("auth/current-user")
        suspend fu
  • The code execution cannot proceed because ResampleDmo.DlL was not found, Reinstalling the programmay fix this problem.

    这两天装了Windows 11的系统,打开WeChat就会遇到这个报错信息,应该是少了那个dll文件。

    打开https://winbindex.m417z.com/?file=resampledmo.dll这个网站,下载dll文件,下载后是blob格式的,要改名称,改成resampledmo.dll然后放到windows/system32文件夹下,之后以Administrator的身份,运行如下命令在CMD中:

    regsvr32 re
    regsvr32 re
  • Android开发FAQ:更换/替换aar/jar文件不生效的解决办法

    当您尝试替换一个 .aar 文件但更改不生效时,通常有几个可能的原因。以下是一些常见的问题和解决方法:

    1. 依赖缓存问题:Gradle 会缓存依赖项,以减少构建时间。如果您替换了 .aar 文件,但构建仍然使用了之前的缓存,请尝试执行以下操作:
    • 在 Android Studio 中,选择 "File" -> "Invalidate Caches / Restart" -> "Invalidate and Restart",这将清除 Gradle 缓存。

    • 或者,您可以手动删除项目目录下的 .gradle 和 `.ide

  • Android Compose开发:使用Room实现数据持久存储

    当在 Jetpack Compose 中使用 Room 数据库时,你可以充分利用 Compose 的声明式 UI 和 Room 的持久化数据管理能力,来构建具有响应式特性的应用程序。本文将为你提供一个完整的 Room 在 Compose 中使用的示例,以帮助你了解如何集成这两个强大的库。

    步骤一:添加依赖

    首先,在项目的 build.gradle 文件中添加 Room 的依赖:

    implementation "androidx.room:room-runtime:2.4.0"
    kapt "androidx.room:room-co
    implementation "androidx.room:room-runtime:2.4.0"
    kapt "androidx.room:room-co