Coil:Android上基于Kotlin协程的超级图片加载库

Coil:Android上基于Kotlin协程的超级图片加载库

1. coil简介

在当今移动应用程序的世界中,图片加载是一个不可或缺的功能。为了让应用程序能够高效地加载和显示图片,开发人员需要依赖于强大的图片加载库。而今天,我将向大家介绍一款备受瞩目的安卓图片加载库——Coil。Coil不仅支持Kotlin协程,还具备快速、轻量、易用和现代的特性。

Coil是一款注重性能和用户体验的图片加载库。它以其出色的加载速度和优化策略而闻名。Coil利用了多项优化技术,包括内存和磁盘缓存、内存中的图像降采样、自动暂停/取消请求等,从而实现快速加载并提供流畅的用户体验。

Coil的设计理念之一是保持轻量高效。相较于其他知名的图片加载库,如Picasso、Glide和Fresco,Coil在APK大小方面表现出色。对于那些已经使用了OkHttp和协程的应用程序来说,Coil仅会增加约2000个方法,与Picasso相当,并且明显少于Glide和Fresco。这使得Coil成为在应用程序中使用的理想选择,不会增加过多的包体积。

Coil还引以为傲的是其简单易用的API。它充分利用了Kotlin语言的特性,提供了简洁、直观的API接口,减少了样板代码的编写。下面是一个使用Coil加载图片的示例代码:

// 在协程中加载图片
lifecycleScope.launch {
    val imageBitmap = Coil.load("https://example.com/image.jpg") {
        // 可选的参数
        crossfade(true)
        placeholder(R.drawable.placeholder)
        error(R.drawable.error)
    }.bitmap

    imageView.setImageBitmap(imageBitmap)
}

通过上述代码,可以看出使用Coil加载图片非常简单和直观。开发者只需指定图片的URL,并可以选择添加一些可选参数,如淡入淡出效果、占位图和错误图等。Coil会自动处理加载请求并将结果以位图的形式返回,方便开发者在应用程序中显示。

Coil的现代化特性也是其吸引人的一部分。作为一款Kotlin优先的库,Coil充分利用了Kotlin语言的强大功能,使API更加简洁和易用。此外,Coil采用了现代化的库,如协程、OkHttp、Okio和AndroidX Lifecycles,以保持与最新的安卓开发趋势和技术的兼容性。

Coil作为一款安卓上基于Kotlin协程的超级图片加载库,以其快速、轻量、易用和现代的特性脱颖而出。它通过多种优化策略实现快速加载,并在APK大小方面保持较小的影响。Coil的简洁API充分利用了Kotlin语言的特性,减少了开发者的工作量。同时,Coil还采用了现代化的技术,使其与最新的安卓开发趋势保持一致。如果你正在开发安卓应用程序并寻找一款强大且易用的图片加载库,那么不妨尝试一下Coil,它一定会让你的开发体验更加愉快并提供出色的用户体验。

2. 快速上手指南

Coil 是一款功能强大的图片加载库,以下是使用 Coil 快速上手的指南:

  1. 添加依赖:
    在 build.gradle 文件中添加以下依赖来下载 Coil:
implementation("io.coil-kt:coil:2.5.0")
  1. 加载图片:
    使用 ImageView 的扩展函数 load 来加载一张图片,可以根据需要传入不同类型的参数,例如:
// URL
imageView.load("https://example.com/image.jpg")

// Resource
imageView.load(R.drawable.image)

// File
imageView.load(File("/path/to/image.jpg"))

// 其他更多选项...
  1. 配置请求选项:
    通过 lambda 语法,可以轻松配置请求选项,例如设置淡入淡出效果、占位图或使用转换器等:
imageView.load("https://example.com/image.jpg") {
    crossfade(true)
    placeholder(R.drawable.image)
    transformations(CircleCropTransformation())
}
  1. Jetpack Compose:
    如果使用 Jetpack Compose,可以引入 Coil 的 Compose 扩展库,并使用 AsyncImage 组件加载图片:
implementation("io.coil-kt:coil-compose:2.5.0")

AsyncImage(
    model = "https://example.com/image.jpg",
    contentDescription = null,
)
  1. 图片加载器 ImageLoader:
    Coil 使用单例的 ImageLoader 来将 ImageRequest 加入队列,可以通过以下方式获取 ImageLoader 实例:
val imageLoader = context.imageLoader

或者,您也可以创建自己的 ImageLoader 实例进行依赖注入:

val imageLoader = ImageLoader(context)

如果您不需要 ImageLoader 作为单例,请使用 io.coil-kt:coil-base 替换 Gradle 依赖。

  1. 图片请求 ImageRequest:
    如果需要自定义 ImageRequest 的加载目标,可以通过以下方式将 ImageRequest 加入队列:
val request = ImageRequest.Builder(context)
    .data("https://example.com/image.jpg")
    .target { drawable ->
        // 处理结果
    }
    .build()
val disposable = imageLoader.enqueue(request)

如果需要命令式地执行图片加载,可以直接调用 execute(ImageRequest)

val request = ImageRequest.Builder(context)
    .data("https://example.com/image.jpg")
    .build()
val drawable = imageLoader.execute(request).drawable

请参考 Coil 的完整文档以获取更多信息。

注意:Coil 兼容 R8 混淆,无需额外添加混淆规则。如果需要混淆代码,可能需要添加对应的混淆规则,如 Coroutines 和 OkHttp。

3. 快速加载与优化

Coil是一款注重性能和用户体验的图片加载库,通过多项优化策略实现快速加载。下面将详细解释Coil如何通过内存和磁盘缓存、内存中的图像降采样以及自动暂停/取消请求等优化策略来提高应用程序的性能和用户体验。

内存和磁盘缓存:
Coil利用了内存和磁盘缓存来提高图片加载的速度和效率。它使用了LRU(最近最少使用)算法来管理内存缓存,将最常用的图像数据保存在内存中,避免了频繁的网络请求和IO操作。同时,Coil还支持磁盘缓存,将已经下载过的图像数据保存到本地存储介质中,下次再次加载相同的图像时可以直接从缓存中读取,减少了网络请求的次数和数据传输量。

内存中的图像降采样:
为了提高加载速度和节省内存消耗,Coil采用了内存中的图像降采样技术。当加载大尺寸的图像时,Coil会先对图像进行降采样处理,即减少图像的像素数量,从而降低图像的分辨率和内存占用。这种降采样技术可以在不影响图像质量的前提下,大幅度减少内存消耗和加载时间。

自动暂停/取消请求:
Coil还具备自动暂停和取消请求的功能,这对于提高用户体验和节省资源非常重要。当控件(如ImageView)不可见时,Coil会自动暂停相应的图片加载请求,避免不必要的网络请求和资源浪费。当控件再次可见时,Coil会自动恢复加载请求。此外,如果由于某些原因(如滚动过快)需要取消加载请求,Coil也提供了便捷的方法来手动取消请求,从而避免加载过多无用的图片。

通过以上优化策略,Coil能够实现快速加载并提供流畅的用户体验。内存和磁盘缓存减少了网络请求的次数,内存中的图像降采样减少了内存占用,而自动暂停/取消请求避免了不必要的加载。这些优化不仅提高了应用程序的性能,还减少了用户等待时间,从而提升了用户体验。

以下是一个使用Coil加载图片的示例代码,在加载图片时同时展示了Coil的优化特性:

// 在协程中加载图片
lifecycleScope.launch {
    val imageBitmap = Coil.load("https://example.com/image.jpg") {
        // 可选的参数
        crossfade(true)
        placeholder(R.drawable.placeholder)
        error(R.drawable.error)
    }.bitmap

    imageView.setImageBitmap(imageBitmap)
}

通过Coil的内置优化策略,开发者可以轻松地实现快速、高效的图片加载功能。同时,Coil的简洁API和现代化特性使得开发者可以更加便捷地集成和使用该库,为应用程序带来出色的用户体验。

Coil通过内存和磁盘缓存、内存中的图像降采样以及自动暂停/取消请求等优化策略,实现了快速加载和流畅的用户体验。内存和磁盘缓存减少了网络请求的次数,内存中的图像降采样减少了内存占用,而自动暂停/取消请求避免了不必要的加载。这些优化策略提高了应用程序的性能,减少了用户等待时间,从而提升了用户体验。如果你正在开发安卓应用程序并寻找一款高效且易用的图片加载库,不妨尝试一下Coil,它将为你的应用程序带来出色的图片加载效果。

4. 轻量高效

Coil 是一款轻量级的图片加载库,相比其他流行的图片加载库(如 Picasso、Glide 和 Fresco),它在 APK 大小方面具有明显的优势。以下将对 Coil 与其他图片加载库在 APK 大小上的差异进行对比,并举例说明 Coil 在不同类型应用程序中的适用性。

  1. 对比 Coil 与其他图片加载库的 APK 大小:
    • Picasso:Picasso 是另一款简单易用的图片加载库,但它的 APK 大小较大。这是因为 Picasso 内置了许多功能,如图片转换、裁剪和旋转等,导致库的体积增大。
    • Glide:Glide 是一个功能强大的图片加载库,它提供了许多高级功能,如 GIF 支持、缩略图生成和本地视频加载等。然而,这些额外的功能也导致了 Glide 的 APK 大小较大。
    • Fresco:Fresco 是 Facebook 开源的图片加载库,它专注于处理大型图像和动态图像。由于其内置了许多高级特性,包括渐进式加载、动画和 WebP 支持等,导致了较大的 APK 大小。

相比之下,Coil 注重于简单、高效的图片加载,避免了不必要的复杂功能,因此 APK 大小相对较小。这使得 Coil 成为一款非常适合对应用程序大小敏感的项目的图片加载库。

  1. Coil 在不同类型应用程序中的适用性举例:
    • 博客应用:对于博客类应用,通常需要加载不同尺寸的图片以提供良好的阅读体验。Coil 的内存中图像降采样技术可以快速加载并优化显示这些图片,同时通过内存和磁盘缓存减少网络请求,提高用户体验。
    • 社交媒体应用:社交媒体应用中图片数量众多,而且用户在浏览过程中会频繁地滚动和刷新页面。Coil 的自动暂停/取消请求功能可以根据视图的可见性自动暂停或取消加载请求,避免不必要的网络请求和资源浪费,提升滑动流畅性。
    • 电子商务应用:电子商务应用需要加载大量商品图片,并且需要在加载失败时显示占位图或错误图。Coil 可以通过简单的 API 设定占位图和错误图,方便地处理加载失败的情况,并且通过内存和磁盘缓存提高加载效率。

示例代码:

// 在博客应用中使用 Coil 加载图片
lifecycleScope.launch {
    val imageBitmap = Coil.load("https://example.com/image.jpg") {
        crossfade(true)
        placeholder(R.drawable.placeholder)
        error(R.drawable.error)
    }.bitmap

    imageView.setImageBitmap(imageBitmap)
}

// 在社交媒体应用中使用 Coil 加载图片
override fun onBindViewHolder(holder: PostViewHolder, position: Int) {
    val post = posts[position]

    // 根据视图的可见性自动暂停/取消请求
    if (post.isVisible) {
        Coil.load(post.imageUrl)
            .placeholder(R.drawable.placeholder)
            .error(R.drawable.error)
            .into(holder.imageView)
    } else {
        Coil.imageLoader(context).clear(holder.imageView)
    }
}

// 在电子商务应用中使用 Coil 加载图片
Coil.load("https://example.com/product_image.jpg") {
    placeholder(R.drawable.placeholder)
    error(R.drawable.error)
    transformations(CircleCropTransformation())
}.into(imageView)

Coil 是一款轻量高效的图片加载库,在 APK 大小方面具有明显的优势。相比其他图片加载库,Coil 简化了功能,避免不必要的复杂特性,从而减小了 APK 的大小。无论是博客应用、社交媒体应用还是电子商务应用,Coil 都能根据不同类型的应用需求提供快速、高效的图片加载功能,并通过内存和磁盘缓存、自动暂停/取消请求等优化策略提升用户体验。如果您需要一个轻量级且易于集成的图片加载库,Coil 是一个值得考虑的选择。

5. 简单易用的 API

Coil 是一款利用 Kotlin 语言特性提供简洁、易用的图片加载库。它通过设计优雅的 API 接口,使开发者能够轻松地集成和使用该库,同时减少样板代码的编写。下面将探讨 Coil 如何通过其 API 接口提供便利性,并举例说明其如何减少冗余代码。

  1. 使用 Kotlin 的扩展函数和默认参数
    Kotlin 的扩展函数是一项强大的语言特性,可以向现有类添加新的函数,使 API 更简洁直观。Coil 利用这一特性,为 ImageView 类添加了 load 扩展函数,使得加载图片变得非常简单,只需在 ImageView 上调用 load 函数并传入图片 URL 即可。

示例代码:

imageView.load("https://example.com/image.jpg") {
    crossfade(true)
    placeholder(R.drawable.placeholder)
    error(R.drawable.error)
}

此外,Coil 还使用了默认参数,允许开发者只传递必要的参数,而省略可选参数。例如,在上述示例中,crossfadeplaceholdererror 都是可选参数,如果不需要设置,可以直接忽略它们。

  1. 支持多种加载源和转换器
    Coil 提供了丰富的 API 接口,支持从多种不同的源加载图片,包括网络、文件、ContentProvider、资源和 Uri 等。开发者只需根据自己的需求选择合适的加载源,并传递相应的参数即可实现图片加载。

另外,Coil 还支持图片转换器,如裁剪、旋转、圆角和灰度等。这些转换器可以通过链式调用的方式添加到加载过程中,以满足不同场景下的图片处理需求。

示例代码:

imageView.load("https://example.com/image.jpg") {
    transformations(CircleCropTransformation())
}
  1. 灵活的内存和磁盘缓存策略
    Coil 提供了灵活的内存和磁盘缓存策略,以提高图片加载的效率和性能。开发者可以根据具体的应用场景和需求,自定义缓存策略,包括内存缓存大小、磁盘缓存大小、缓存过期时间等。

示例代码:

val imageLoader = ImageLoader.Builder(context)
    .memoryCacheSize(50 * 1024 * 1024) // 设置内存缓存大小为 50MB
    .diskCacheSize(100 * 1024 * 1024) // 设置磁盘缓存大小为 100MB
    .build()

imageView.load("https://example.com/image.jpg") {
    memoryCachePolicy(CachePolicy.DISABLED) // 禁用内存缓存
    diskCachePolicy(CachePolicy.ENABLED) // 启用磁盘缓存
}

Coil 利用 Kotlin 语言的特性,提供了简洁、易用的 API 接口,使开发者能够轻松地集成和使用该库。通过扩展函数、默认参数和链式调用,Coil 简化了图片加载的代码编写过程,减少了冗余代码的出现。同时,Coil 还支持多种加载源和转换器,以及灵活的内存和磁盘缓存策略,满足了不同应用场景下的图片加载需求。如果您追求简单易用的图片加载库,并希望减少样板代码的编写,那么 Coil 是一个值得考虑的选择。

6. 现代化技术

Coil 是一款基于 Kotlin 语言开发的图片加载库。除了提供简单易用的 API 接口外,Coil 还强调了自己作为 Kotlin 优先和使用现代库的图片加载库的身份。这意味着 Coil 非常注重与最新的安卓开发趋势保持一致,并提供更好的性能和稳定性。

  1. Kotlin 优先
    Kotlin 是一种功能强大且易于学习的编程语言,它具有许多 Java 语言所不具备的特性。Coil 之所以选择 Kotlin 作为主要编程语言,是因为 Kotlin 具有更好的互操作性、更好的类型安全性、更少的样板代码和更好的可读性等优点。此外,Kotlin 还可以为 Coil 提供更好的 API 简化和扩展性。

示例代码:

val imageLoader = ImageLoader.Builder(context)
    .componentRegistry {
        add(SvgDecoder(context))
    }
    .build()

imageView.load("https://example.com/image.svg") {
    decoder(SvgDecoder(context))
}
  1. 使用现代库
    Coil 还利用了现代库,如协程、OkHttp、Okio 和 AndroidX Lifecycles 等,以提高性能和稳定性。例如,使用协程可以避免在主线程中执行耗时操作,而使用 OkHttp 和 Okio 可以提高网络请求的效率和稳定性。另外,使用 AndroidX Lifecycles 可以更好地管理图片加载过程中的生命周期,避免内存泄漏和资源浪费。

示例代码:

val imageLoader = ImageLoader.Builder(context)
    .componentRegistry {
        add(SvgDecoder(context))
    }
    .networkCachePolicy(CachePolicy.ENABLED)
    .okHttpClient {
        OkHttpClient.Builder()
            .cache(CoilUtils.createDefaultCache(context))
            .build()
    }
    .build()

imageView.load("https://example.com/image.jpg") {
    lifecycle(lifecycleOwner.lifecycle)
}

Coil 作为 Kotlin 优先和现代化技术使用的图片加载库,不仅具有简单易用的 API 接口,还可以与最新的安卓开发趋势保持一致,并提供更好的性能和稳定性。通过利用 Kotlin 的特性、协程、OkHttp、Okio 和 AndroidX Lifecycles 等现代化技术,Coil 可以更好地满足开发者的需求,并在复杂的应用场景下表现出色。如果您想要一个与时俱进、性能卓越的图片加载库,Coil 绝对是一个值得尝试的选择。

Coil 是一款基于 Kotlin 协程的图片加载库,它具有许多优点和特性,可以加速开发速度、简化代码,并提供出色的用户体验。

7. 结论

  1. Kotlin 协程的使用
    Coil 使用 Kotlin 协程来执行异步操作,这使得加载图片变得更加简单和高效。Coil 的协程支持可以让开发者在不阻塞主线程的情况下完成图片加载操作,从而提高用户体验。同时,Kotlin 协程本身还具有很好的可读性和可维护性,这也为 Coil 的开发者提供了更好的开发体验。

示例代码:

val imageLoader = ImageLoader(context)

lifecycleScope.launch {
    val drawable = imageLoader.loadDrawable("https://example.com/image.jpg")
    imageView.setImageDrawable(drawable)
}
  1. 简单易用的 API
    Coil 提供简单易用的 API 接口,使得开发者可以更快地集成 Coil 到他们的应用程序中,同时也可以简化代码。例如,开发者只需要一行代码就可以将图片加载到 ImageView 控件中。

示例代码:

imageView.load("https://example.com/image.jpg")
  1. 支持多种图片格式
    Coil 不仅可以加载常见的图片格式,如 PNG、JPG 和 GIF 等,还可以加载 WebP、SVG 和 HEIF 等先进格式。这使得开发者可以更好地适应不同的应用场景,并提供更好的用户体验。

  2. 可配置性高
    Coil 提供灵活的配置选项,使得开发者可以根据自己的需求进行定制。例如,开发者可以定义自己的图片解码器或缓存策略,以满足特定的业务需求。

  3. 出色的性能和稳定性
    Coil 利用现代化技术,如协程、OkHttp 和 AndroidX Lifecycles 等,以提高性能和稳定性。这使得 Coil 在复杂的应用场景下表现出色,同时也可以避免内存泄漏和资源浪费等问题。

总之,Coil 是一款基于 Kotlin 协程的图片加载库,它具有许多优点和特性,可以加速开发速度、简化代码,并提供出色的用户体验。通过使用 Kotlin 协程、简单易用的 API、支持多种图片格式、高度可配置性和出色的性能和稳定性等特性,Coil 可以帮助开发者更快地构建出优秀的安卓应用程序。因此,鼓励读者尝试使用 Coil 来优化他们的安卓应用程序,以获得更好的用户体验和开发效率。

8. 参考链接

Github仓库地址:https://github.com/coil-kt/coil
官方文档:https://coil-kt.github.io/coil/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/372481.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小程序插件测试

1、下载微信小程序开发者工具,下载地址: 微信开发者工具下载地址与更新日志 | 微信开放文档 选择稳定版下载: 2、下载并解压测试项目(此处根据公司的项目来,可问开发要) 3、导入解压后的文件夹&#xff…

Flink cdc3.0动态变更表结构——源码解析

文章目录 前言源码解析1. 接收schema变更事件2. 发起schema变更请求3. schema变更请求具体处理4. 广播刷新事件并阻塞5. 处理FlushEvent6. 修改sink端schema 结尾 前言 上一篇Flink cdc3.0同步实例 介绍了最新的一些功能和问题,本篇来看下新功能之一的动态变更表结…

通过Navicat for MySQL排查sql语句错误

开发的软件用到MySQL数据库,但在进行某个sql操作时执行失败了: 我们可以用Navicat for MySQL来排查sql语句是否存在语法错误等问题。将该sql语句复制 打开Navicat for MySQL,连接该软件所用到的MySQL数据库,点击“新建查询”。将刚…

AI嵌入式K210项目(26)-二维码识别

文章目录 前言一、什么是二维码?二、实验准备三、实验过程四、API接口总结 前言 本章介绍基于机器视觉实现二维码识别,主要包含两个过程,首先检测图像中是否有二维码,如果有则框出并打印二维码信息; 一、什么是二维码…

Re-understanding of data storytelling tools from a narrative perspective

作者:任芃锟, 王轶 & 赵凡 发表:Visual Intelligence,新刊,实行单盲同行评议制度。由施普林格以开放获取 (Open Access) 模式出版。获2022“中国科技期刊卓越行动计划高起点新刊”项目资助,目前出版不收取文章处理…

瑞幸CNY营销又整了哪些花活?媒介盒子分享

还有不到一周时间,龙年春节就要来了,在这场龙年营销大战中,咖啡界的“显眼包”瑞幸又又又凭借花式营销成功出圈,从产品到物料包装,从联名合作到粉丝营销,海陆空全方位上线,那瑞幸具体怎么整的活…

深入探索CoT有效性和推理步长对于LLM性能的影响

思想链(CoT)对于提高大型语言模型(LLM)的推理能力具有重要意义。 然而,CoT 的有效性与提示中推理步骤的长度之间的相关性仍然很大程度上未知。 为了阐明这一点,多家研究机构(西北大学、罗格斯大…

【UE 材质】扇形材质

目录 效果 步骤 (1)控制扇形的弧宽度 (2)控制扇形的角度 (3)完整节点 效果 步骤 (1)控制扇形的弧宽度 创建一个材质,混合模式设置为“Additive”,着色…

【Java 数据结构】String进阶

字符串常量池 1. 创建对象的思考2. 字符串常量池(StringTable)3. 再谈String对象创建 1. 创建对象的思考 下面两种创建String对象的方式相同吗? public static void main(String[] args) {String s1 "hello";String s2 "hello";String s3 …

JVM 性能调优 - Java 中的四种引用(4)

为什么会有四种引用 我们先回顾下在 Java 虚拟机内存体系(1) 中提到了的垃圾回收算法 1、引用计数法 原理:给对象添加一个引用计数器,每当有一个地方引用它,计数器的值就加一。每当有一个引用失效,计数器的值就减一。当计数器值为零时,这个对象被认为没有其他对象引用,…

070:vue+cesium: 利用canvas设置径向渐变色材质

相关API参考: https://cesium.com/learn/cesiumjs/ref-doc/ColorMaterialProperty.html 第070个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置线性渐变色的材质,这里使用canvas的辅助方法。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. …

centos间文件传输

scp /home/vagrant/minio zx192.168.56.34:/home/zx /home/vagrant/minio 是你要传输的文件而且是当前机器登录用户有权限操作的文件 zx是目标机器的用户192.168.56.34是目标机器的地址 /home/zx是要传到这个文件夹下 要确保zx有/home/zx这个文件夹的操作权限 本质就是ssh文…

[leetcode] 27. 移除元素

文章目录 题目描述解题方法双指针java代码复杂度分析 相似题目 题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O ( 1 ) O(1) O(1) …

分布(一)利用python绘制直方图

分布(一)利用python绘制直方图 直方图(Histogram)简介 直方图主要用来显示在连续间隔(或时间段)的数据分布,每个条形表示每个间隔(或时间段)的频率,直方图的…

2024年考PMP还有什么用?

PMP 是项目管理专业人士资格认证的意思,也是项目管理领域通用的证书, 做项目的基本都会去考。 要说 PMP 有啥作用? 个人感觉 PMP 证书更多的是跳槽、转行的敲门砖的作用,因为现在很多公司都要 PMP 证书,有了可以加分…

VS Code+Live Server插件开发游戏并结合内网穿透分享好友异地访问

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 前言 本篇教程,我们将通过VS Code实现远程开发MENJA小游戏,并通过cpolar内网穿透发布到公网,分…

springboot157基于springboot的线上辅导班系统的开发与设计

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

fastapi 链接数据库,并报错问题

还有一个重点需要下载 pip install sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simplefrom fastapi import FastAPI import uvicorn from student.urls import student_id_mysql from sqlalchemy …

【sentinel流量卫兵配置持久化到Nacos】

sentinel流量卫兵配置持久化到Nacos 概述: 一、添加配置二、配置说明限流规则配置:降级规则配置:热点规则配置:授权规则配置:系统规则配置: 三、服务整合 概述: 控制台配置的参数,默…

2024/2/4学习记录

微信小程序 网络数据请求 出于安全性方面的考虑,小程序官方对数据接口得请求做出了俩个限制 只能对 https 类型的接口必须将接口的域名添加到信任列表中 需要去这里设置 域名只支持 https 协议域名不能使用 ip 地址 或者localhost域名必须经过 ICP 备案 服务器域…