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

Kotlin学习基础知识大全(上)

在这里插入图片描述

文章目录

  • Kotlin基础知识全面解析
    • 第一章:Kotlin语言概述
      • 1.1 Kotlin的发展历程
      • 1.2 Kotlin的设计目标
      • 1.3 Kotlin的应用领域
      • 1.4 Kotlin与Java的比较
    • 第二章:Kotlin基础语法
      • 2.1 变量与常量
      • 2.2 基本数据类型
        • 数字类型示例:
        • 字符和字符串示例:
      • 2.3 运算符
      • 2.4 控制流
        • if表达式
        • when表达式
        • 循环结构
      • 2.5 异常处理
    • 第三章:函数与Lambda表达式
      • 3.1 函数定义
      • 3.2 函数参数
      • 3.3 扩展函数
      • 3.4 高阶函数与Lambda
      • 3.5 内联函数
    • 第四章:类与对象
      • 4.1 类定义
      • 4.2 构造函数
      • 4.3 继承
      • 4.4 抽象类与接口
      • 4.5 数据类
      • 4.6 单例与伴生对象
    • 第五章:空安全与类型系统
      • 5.1 可空类型
      • 5.2 安全调用操作符
      • 5.3 Elvis操作符
      • 5.4 非空断言
      • 5.5 安全类型转换

在这里插入图片描述

Kotlin基础知识全面解析

第一章:Kotlin语言概述

1.1 Kotlin的发展历程

Kotlin是由JetBrains公司开发的一种静态类型编程语言,最初发布于2011年。JetBrains是知名IDE工具IntelliJ IDEA的开发商,他们开发Kotlin的目的是为了解决Java语言在开发效率、代码简洁性和安全性方面的一些不足。

2016年2月,Kotlin 1.0正式发布,标志着语言进入稳定阶段。2017年5月,在Google I/O大会上,Google宣布Kotlin成为Android开发的官方支持语言,这一决定极大地推动了Kotlin的普及。

1.2 Kotlin的设计目标

Kotlin的设计团队为这门语言设定了几个核心目标:

  1. 简洁性:通过减少样板代码提高开发效率
  2. 安全性:在语言层面避免常见的编程错误,如空指针异常
  3. 互操作性:与Java完全互操作,可以无缝使用现有Java生态
  4. 工具友好:提供优秀的IDE支持,特别是IntelliJ IDEA

1.3 Kotlin的应用领域

Kotlin主要应用于以下几个领域:

  1. Android开发:作为Java的替代语言,Kotlin已成为Android开发的首选
  2. 服务器端开发:可以与Spring等框架配合使用
  3. 跨平台开发:通过Kotlin Multiplatform可以开发跨平台应用
  4. 前端开发:可以编译为JavaScript
  5. 数据科学:Kotlin也正在成为数据科学领域的一个选择

1.4 Kotlin与Java的比较

特性JavaKotlin
空安全
扩展函数
数据类需要手动实现原生支持
函数式编程Java 8+支持有限全面支持
协程
字符串模板有限支持强大支持
默认参数
类型推断有限全面

第二章:Kotlin基础语法

在这里插入图片描述

2.1 变量与常量

在Kotlin中,变量声明使用var关键字,常量声明使用val关键字。

// 变量声明
var count: Int = 10
count = 20  // 可以重新赋值// 常量声明
val language: String = "Kotlin"
// language = "Java"  // 编译错误,val不可重新赋值

Kotlin支持类型推断,可以省略类型声明:

var count = 10      // 自动推断为Int类型
val name = "Kotlin" // 自动推断为String类型

2.2 基本数据类型

Kotlin中的所有数据类型都是对象,没有Java中的原始类型概念。Kotlin的基本数据类型包括:

  • 数字类型:Byte, Short, Int, Long, Float, Double
  • 字符类型:Char
  • 布尔类型:Boolean
  • 字符串类型:String
数字类型示例:
val one: Int = 1
val threeBillion: Long = 3000000000
val oneLong = 1L  // Long类型
val oneByte: Byte = 1val pi = 3.14  // Double
val eFloat = 2.7182818284f  // Float,实际值为2.7182817
字符和字符串示例:
val letter: Char = 'A'
val text: String = "Hello, Kotlin!"// 字符串模板
val name = "Alice"
val greeting = "Hello, $name!"  // "Hello, Alice!"
val lengthInfo = "Name has ${name.length} characters"  // "Name has 5 characters"// 多行字符串
val multiLineText = """This is a multi-line string.It preserves all indentation and line breaks.You can include "quotes" without escaping.
""".trimIndent()

2.3 运算符

Kotlin支持大多数标准运算符:

  • 算术运算符:+, -, *, /, %
  • 比较运算符:==, !=, <, >, <=, >=
  • 逻辑运算符:&&, ||, !
  • 位运算符:and, or, xor, inv, shl, shr, ushr
val a = 10
val b = 20println(a + b)  // 30
println(a < b)  // true
println(a == 10 && b == 20)  // true
println((a and 0x0F) shl 2)  // 40

2.4 控制流

if表达式

在Kotlin中,if是一个表达式,可以返回值:

val max = if (a > b) a else b// 也可以是多行
val max = if (a > b) {println("Choose a")a
} else {println("Choose b")b
}
when表达式

when表达式比Java中的switch更强大:

when (x) {1 -> print("x == 1")2 -> print("x == 2")3, 4 -> print("x == 3 or 4")in 5..10 -> print("x is in the range 5 to 10")!in 11..20 -> print("x is outside the range 11 to 20")else -> print("x is neither 1 nor 2")
}

when也可以不带参数使用:

when {x.isOdd() -> print("x is odd")x.isEven() -> print("x is even")else -> print("x is funny")
}
循环结构

Kotlin提供了多种循环结构:

// for循环
for (i in 1..5) {print(i)  // 输出: 12345
}for (i in 1 until 5) {print(i)  // 输出: 1234
}for (i in 5 downTo 1) {print(i)  // 输出: 54321
}for (i in 1..10 step 2) {print(i)  // 输出: 13579
}// while循环
var x = 5
while (x > 0) {print(x--)  // 输出: 54321
}// do-while循环
var y = 0
do {print(y++)  // 输出: 01234
} while (y < 5)

2.5 异常处理

Kotlin的异常处理与Java类似,但有一些改进:

try {// 可能抛出异常的代码val result = 10 / 0
} catch (e: ArithmeticException) {println("除零错误: ${e.message}")
} finally {println("无论是否异常都会执行")
}

Kotlin不强制要求捕获所有异常,只有运行时异常(RuntimeException)和错误(Error)。

第三章:函数与Lambda表达式

在这里插入图片描述

3.1 函数定义

Kotlin中使用fun关键字定义函数:

// 基本函数定义
fun add(a: Int, b: Int): Int {return a + b
}// 表达式函数体
fun add(a: Int, b: Int) = a + b// 无返回值函数
fun printSum(a: Int, b: Int): Unit {println("sum of $a and $b is ${a + b}")
}
// Unit返回类型可以省略
fun printSum(a: Int, b: Int) {println("sum of $a and $b is ${a + b}")
}

3.2 函数参数

Kotlin函数参数支持默认值和命名参数:

fun greet(name: String = "World", prefix: String = "Hello") {println("$prefix, $name!")
}// 使用示例
greet()                          // Hello, World!
greet("Kotlin")                  // Hello, Kotlin!
greet(prefix = "Hi", name = "Android") // Hi, Android!

3.3 扩展函数

扩展函数允许在不修改类定义的情况下为类添加新函数:

fun String.addExclamation(): String {return "$this!"
}println("Hello".addExclamation()) // 输出: Hello!// 扩展属性
val String.lastChar: Charget() = this[length - 1]println("Kotlin".lastChar) // 输出: n

3.4 高阶函数与Lambda

高阶函数是指以函数作为参数或返回值的函数:

// 高阶函数示例
fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {return operation(a, b)
}// 使用Lambda表达式
val sum = calculate(10, 5) { x, y -> x + y }  // 15
val product = calculate(10, 5) { x, y -> x * y }  // 50// Lambda表达式语法
val sum: (Int, Int) -> Int = { x, y -> x + y }
println(sum(1, 2))  // 3

3.5 内联函数

使用inline关键字可以减少高阶函数的运行时开销:

inline fun measureTime(block: () -> Unit): Long {val start = System.currentTimeMillis()block()return System.currentTimeMillis() - start
}val time = measureTime {// 执行一些耗时操作Thread.sleep(1000)
}
println("Execution took $time ms")

第四章:类与对象

在这里插入图片描述

4.1 类定义

Kotlin中使用class关键字定义类:

class Person {// 属性var name: String = ""var age: Int = 0// 方法fun speak() {println("$name is $age years old")}
}// 使用
val person = Person()
person.name = "Alice"
person.age = 25
person.speak()  // 输出: Alice is 25 years old

4.2 构造函数

Kotlin类可以有一个主构造函数和多个次构造函数:

// 主构造函数
class Person constructor(firstName: String) {val name: Stringinit {// 初始化块name = firstName.capitalize()}
}// 简化写法
class Person(val name: String, var age: Int) {init {println("Person created with name=$name and age=$age")}// 次构造函数constructor(name: String) : this(name, 0) {println("Secondary constructor called")}
}// 使用
val person1 = Person("Alice", 25)
val person2 = Person("Bob")

4.3 继承

Kotlin中所有类默认都是final的,要允许继承需要使用open关键字:

open class Animal(val name: String) {open fun makeSound() {println("$name makes a sound")}
}class Dog(name: String) : Animal(name) {override fun makeSound() {println("$name barks")}
}val dog = Dog("Rex")
dog.makeSound()  // 输出: Rex barks

4.4 抽象类与接口

// 抽象类
abstract class Shape {abstract fun area(): Double
}class Circle(val radius: Double) : Shape() {override fun area() = Math.PI * radius * radius
}// 接口
interface Drawable {fun draw()
}class Rectangle : Drawable {override fun draw() {println("Drawing a rectangle")}
}

4.5 数据类

数据类自动生成equals(), hashCode(), toString(), copy()等方法:

data class User(val name: String, val age: Int)val user1 = User("Alice", 25)
val user2 = user1.copy(age = 26)println(user1)  // 输出: User(name=Alice, age=25)
println(user1 == user2)  // false

4.6 单例与伴生对象

// 单例
object Singleton {fun doSomething() {println("Doing something...")}
}Singleton.doSomething()// 伴生对象
class MyClass {companion object {const val CONSTANT = "constant"fun create(): MyClass = MyClass()}
}val instance = MyClass.create()
println(MyClass.CONSTANT)

第五章:空安全与类型系统

在这里插入图片描述

5.1 可空类型

Kotlin通过类型系统区分可空和非空引用:

var a: String = "abc"  // 非空类型
// a = null  // 编译错误var b: String? = "abc"  // 可空类型
b = null  // 允许

5.2 安全调用操作符

val length = b?.length  // 如果b为null,返回null// 链式调用
val streetLength = person?.address?.street?.length

5.3 Elvis操作符

val length = b?.length ?: 0  // 如果b为null,返回0// 也可以抛出异常
val length = b?.length ?: throw IllegalArgumentException("b is null")

5.4 非空断言

val length = b!!.length  // 如果b为null,抛出NullPointerException

5.5 安全类型转换

val aInt: Int? = a as? Int  // 如果转换失败,返回null而不是抛出异常

相关文章:

Kotlin学习基础知识大全(上)

文章目录 Kotlin基础知识全面解析第一章&#xff1a;Kotlin语言概述1.1 Kotlin的发展历程1.2 Kotlin的设计目标1.3 Kotlin的应用领域1.4 Kotlin与Java的比较 第二章&#xff1a;Kotlin基础语法2.1 变量与常量2.2 基本数据类型数字类型示例&#xff1a;字符和字符串示例&#xf…...

【Java面试笔记:进阶】18.什么情况下Java程序会产生死锁?如何定位、修复?

死锁(Deadlock)是指两个或多个线程因竞争资源而无限期阻塞的现象。 1. 死锁的定义与产生原因 定义:死锁是一种程序状态,多个线程或进程因循环依赖而永久处于等待状态,无法继续执行。 根据 Coffman 条件,死锁产生需同时满足以下四个必要条件: 互斥(Mutual Exclusion)…...

PS Mac Photoshop 2025 for Mac图像处理 PS 2025安装笔记

Mac分享吧 文章目录 效果一、准备工作二、开始安装1、Anticc简化版安装1.1双击运行软件&#xff0c;安装1.2 解决来源身份不明的开发者问题**此代码为打开&#xff1a;系统偏好设置 – 隐私与安全性&#xff0c;中的【任何来源】&#xff0c;如下图&#xff1a;**1.3 再次运行…...

HarmonyOS 框架基础知识

参考文档&#xff1a;HarmonyOS开发者文档 第三方库&#xff1a;OpenHarmony三方库中心仓 基础特性 Entry&#xff1a;关键装饰器 Components&#xff1a;组件 特性EntryComponent​​作用范围仅用于页面入口可定义任意可复用组件​​数量限制​​每个页面有且仅有一个无数量…...

LabVIEW实现Voronoi图绘制功能

该 LabVIEW 虚拟仪器&#xff08;VI&#xff09;借助 MathScript 节点&#xff0c;实现基于手机信号塔位置计算 Voronoi 图的功能。通过操作演示&#xff0c;能直观展示 Voronoi 图在空间划分上的应用。 各部分功能详细说明 随机地形创建部分 功能&#xff1a;根据 “Maximum a…...

centos7的环境下ollama 如何卸载

在 CentOS 7 环境下卸载 ollama&#xff0c;可以按照以下步骤操作。假设 ollama 是通过手动安装的&#xff0c;以下是卸载的详细步骤。 1. 停止所有运行中的 ollama 进程 在卸载之前&#xff0c;确保所有与 ollama 相关的进程都已停止。 查找并停止进程 ps aux | grep ollam…...

中心极限定理(CLT)习题集 · 答案与解析篇

中心极限定理(CLT)习题集 答案与解析篇 与题目篇一一对应。若有其他解法欢迎在评论区补充。 1. 概念与判断题 1.1 经典叙述 若 (X_1,X_2,\dots) i.i.d.,满足 (E[X_1]=\mu,;0<\sigma^2:=\operatorname{Var}(X_1)<\infty)。 则 [ Z_n=\frac{\sum_{k=1}^{n}(X_k-\mu)}…...

Spring Cloud Gateway配置双向SSL认证(完整指南)

本文将详细介绍如何为Spring Cloud Gateway配置双向SSL认证,包括证书生成、配置和使用。 目录结构 /my-gateway-project ├── /certs │ ├── ca.crt # 根证书 │ ├── ca.key # 根私钥 │ ├── gateway.crt # 网关证书 │ ├── …...

中间系统-SPF计算

SPF计算 isis如何计算路由&#xff1a;以自己为根构建SPF树&#xff0c;之后填充叶子。 <R1>display isis lsdb 0000.0000.0001.00-00 verbose //查看lsp的详细信息 SOURCE 0000.0000.0001.00 //源节点系统&#xff0c;用于标识产生该LSP的路由器…...

立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务

作者&#xff1a;厦门立马耀网络科技有限公司大数据开发工程师 陈宏毅 背景介绍 行业 蝉选是蝉妈妈出品的达人选品服务平台。蝉选秉持“陪伴达人赚到钱”的品牌使命&#xff0c;致力于洞悉达人变现需求和痛点&#xff0c;提供达人选高佣、稳变现、速响应的选品服务。 业务特…...

Diffusion inversion后的latent code与标准的高斯随机噪音不一样

可视化latents_list如下; 可视化最后一步与标准的噪声&#xff1a; 能隐约看出到最后一步还是会有“马”的形状 整个代码&#xff08;及可视化代码如下&#xff09;&#xff1a; ## 参考freeprompt(FPE)的代码 import os import torch import torch.nn as nn import torch.n…...

C语言-函数-1

以下是我初学C语言的笔记记录&#xff0c;欢迎在评论区留言补充 一&#xff0c;函数分为几类 * 函数分为两类&#xff1a; 一类是库函数&#xff1b;一类是自定义函数 * 库函数&#xff1a; 系统自己带的&#xff0c;在使用时候&#xff0c;要用到头文件&#xff1b; 查询库函…...

AXOP34032: 40V/40µA 轨到轨输入输出双通道运算放大器

AXOP34032是一款通用型高压低功耗双通道运算放大器&#xff0c;产品的工作电压为2.5V至40V&#xff0c;具有1.2MHz的带宽&#xff0c;压摆率为 0.7V/μs&#xff0c;单路静态电流为40A。该产品非常适合需要较高耐压的低功耗应用。 产品可选关断功能(AXOP34032S)。 主要特性 2…...

HTML5 服务器发送事件 (Server-Sent Events):实现网页自动获取服务器更新

一、引言 在现代 Web 应用开发中,实时性和动态交互性变得越来越重要。HTML5 引入的服务器发送事件(Server-Sent Events,简称 SSE)为网页获取来自服务器的实时更新提供了一种简单而有效的解决方案。与传统方式中网页需主动询问服务器是否有更新不同,SSE 能够让更新自动推送…...

如何创建和使用 Hive 视图

一、Hive 视图的基本概念 Hive 视图是一种虚拟表,其内容由查询语句定义,本身不存储实际数据。当查询视图时,Hive 会动态执行视图定义中的查询逻辑并返回结果。视图的核心作用是简化复杂查询、提供数据抽象和实现权限控制。例如,通过视图可以隐藏底层表的复杂关联关系,或限…...

快速体验tftp文件传输(嵌入式设备)

一、参考资料 Linux tftp 命令 | 菜鸟教程 Ubuntu最新版本(Ubuntu22.04LTS)安装Tftp服务及其使用教程-CSDN博客 Windows下的Tftpd32(Tftpd64)软件下载和使用教程-集成了Tftp服务器、客户端-CSDN博客 tftpd32 tftpd64文件传输安装和使用教程【图文并茂】-CSDN博客 二、快速…...

数据库进阶之MySQL 程序

1.目标 1> 了解mysqlId服务端程序 2> 掌握mysql客户端程序的使用 3> 了解工具包中的其他程序 2. MySQL程序简介 本章介绍 MySQL 命令⾏程序以及在运⾏这些程序时指定选项的⼀般语法(如:mysql -uroot -p)。 对常⽤程序进⾏详细的讲解(实用工具的使用方法)&#xf…...

细说STM32单片机FreeRTOS信号量和互斥量及二值信号量的应用实例

目录 一、信号量和互斥量概述 1、二值信号量 2、计数信号量 3、互斥量 4、递归互斥量 5、相关函数概述 &#xff08;1&#xff09; 负责创建的函数 &#xff08;2&#xff09; 负责释放和获取的函数 &#xff08;3&#xff09;负责返回数据的函数 二、二值信号量使用…...

云原生之认识DDD

一、DDD是什么? 领域驱动设计(DDD) 做为一种软件工程的方法论,它可以帮助我们设计高质量的软件,或者说任何工程的设计都需要方法论,不论是城市设计、建筑设计、室内设计。 比如没有方法论的情况下楼是可以盖起来的,或许整个楼道和窗户上挂满了电话线、闭路线、电线?下水…...

Kingbase 数据库物理备份与恢复操作手册

版本环境&#xff1a;KingbaseES V8R6 适用对象&#xff1a;DBA / 运维工程师 / 技术支持人员 目标用途&#xff1a;生产环境灾备保障、全量迁移、异地容灾恢复 一、物理备份操作流程 物理备份是指直接对数据库实例的物理文件进行复制&#xff0c;具备完整性强、恢复速度快等特…...

高等数学同步测试卷 同济7版 试卷部分 上 做题记录 第四章 不定积分同步测试卷 A卷

第四章 不定积分同步测试卷 A卷 一、单项选择题(本大题共5小题&#xff0c;每小题3分&#xff0c;总计15分) 1. 2. 3. 4. 5. 二、填空题(本大题共5小题,每小题3分,总计15 分) 6. 7. 8. 9. 10. 三、求解下列各题(本大题共5小题,每小题6分,总计30…...

【刷题Day25】用户态和内核态、Reactor、虚拟内存(浅)

什么是用户态和内核态&#xff1f; 用户态&#xff08;User Mode&#xff09;和内核态&#xff08;Kernel Mode&#xff09;是操作系统中的两种运行模式&#xff0c;用于区分应用程序与操作系统内核的操作权限。 两者区别在于权限级别&#xff1a; 用户态&#xff1a;应用程…...

使用Qt Quick Controls创建自定义日历组件

目录 引言相关阅读1. DayOfWeekRow2. MonthGrid3. WeekNumberColumn 项目结构及实现工程结构图代码实现及解析1. 组件封装2. 主界面实现 运行效果 总结下载链接 引言 Qt6 Quick框架提供了一套丰富的日历相关组件&#xff0c;包括 MonthGrid、DayOfWeekRow 和 WeekNumberColumn…...

Java 富文本转word

前言&#xff1a; 本文的目的是将传入的富文本内容(html标签&#xff0c;图片)并且分页导出为word文档。 所使用的为docx4j 一、依赖导入 <!-- 富文本转word --><dependency><groupId>org.docx4j</groupId><artifactId>docx4j</artifactId&…...

基于 Spring Boot 瑞吉外卖系统开发(七)

基于 Spring Boot 瑞吉外卖系统开发&#xff08;七&#xff09; 新增菜品页面 菜品管理页面提供了一个“新增菜品”按钮&#xff0c;单击该按钮时&#xff0c;会打开新增菜品页面。 菜品分类列表 首先要获取分类列表数据。 请求路径/category/list&#xff0c;请求方法GE…...

react 子组件暴露,父组件接收

// Child.jsx import React, { forwardRef, useImperativeHandle, useState } from react; import { Form, Input } from antd;const Child forwardRef((props, ref) > {const [form] Form.useForm();const [customState, setCustomState] useState(默认值);useImperativ…...

如何在Spring Boot中配置自定义端口运行应用程序

Spring Boot 应用程序默认在端口 8080 上运行嵌入式 Web 服务器&#xff08;如 Tomcat、Jetty 或 Undertow&#xff09;。然而&#xff0c;在开发、测试或生产环境中&#xff0c;开发者可能需要将应用程序配置为在自定义端口上运行&#xff0c;例如避免端口冲突、适配微服务架构…...

5.第五章:数据分类的方法论

文章目录 5.1 传统分类方法5.1.1 基于规则的分类方法5.1.2 基于统计的分类方法5.1.3 传统分类方法的局限性 5.2 现代分类技术5.2.1 神经网络分类模型5.2.2 深度学习分类方法5.2.3 现代分类技术的优势 5.3 创新分类方法5.3.1 小样本学习方法5.3.2 零样本学习方法5.3.3 主动学习方…...

如何在 Unity 中导入 gltf /glb 文件

遗憾的是&#xff0c;默认情况下&#xff0c;Unity 无法导入 gltf 文件。 我们有 个好消息要告诉你 gltf&#xff0c;有一种方法可以将 glb 文件格式导入 Unity&#xff01; 看完这篇文章后&#xff0c;让我们将 “gltf&#xff0c; glb” 文件放入 Unity 中&#xff0c;并将其…...

Docker部署一款开源的极简服务器监控工具Ward内网穿透远程使用

文章目录 前言1.关于Ward2.Docker部署3.简单使用ward4.安装cpolar内网穿透5. 配置ward公网地址6. 配置固定公网地址总结 前言 各位小伙伴们&#xff0c;你们是不是也遇到过这样的情况&#xff1a;每次打开服务器管理界面&#xff0c;密密麻麻的数据和图表看得你眼花缭乱&#…...

Day11(回溯法)——LeetCode79.单词搜索

1 前言 今天主要刷了一道热题榜中回溯法的题&#xff0c;现在的计划是先刷热题榜专题吧&#xff0c;感觉还是这样见效比较快。因此本文主要介绍LeetCode79。 2 LeetCode79.单词搜索(LeetCode79) OK题目描述及相关示例如下&#xff1a; 2.1 题目分析解决及优化 感觉回溯的方…...

数据结构-图

一、图的定义与基本术语 图&#xff08;Graph&#xff09;是一种非线性数据结构&#xff0c;由顶点&#xff08;Vertex&#xff09;和边&#xff08;Edge&#xff09;组成。它包含以下基本术语&#xff1a; 顶点&#xff08;Vertex&#xff09; &#xff1a;是图中的数据元素。…...

数据结构-选择排序(Python)

目录 选择排序算法思想 选择排序算法步骤 选择排序代码实现 选择排序算法分析 选择排序算法思想 选择排序&#xff08;Selection Sort&#xff09;基本思想&#xff1a; 将数组分为两个区间&#xff1a;左侧为已排序区间&#xff0c;右侧为未排序区间。每趟从未排序区间中…...

[特殊字符] 分布式定时任务调度实战:XXL-JOB工作原理与路由策略详解

在微服务架构中&#xff0c;定时任务往往面临多实例重复执行、任务冲突等挑战。为了解决这一问题&#xff0c;企业级调度框架 XXL-JOB 提供了强大的任务统一调度与执行机制&#xff0c;特别适合在分布式系统中使用。 本文将从 XXL-JOB 的核心架构入手&#xff0c;详细讲解其调…...

【前端】基于 Promise 的 HTTP 客户端工具Axios 详解

Axios 详解 1. 简介 定义&#xff1a;Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js 环境&#xff0c;简化 HTTP 请求的发送和处理。核心特点&#xff1a; 支持 Promise API&#xff0c;可链式调用。自动转换 JSON 数据。支持请求/响应拦截。可取…...

React Native 安卓端 android Image 播放gif webp 动态图

React Native 安卓端 android Image 播放gif webp 动态图 RN项目是0.78.2 React是19.0 基本介绍 Image 是 React Native 中用于显示各种类型图片的核心组件&#xff0c;支持显示网络图片、静态资源、本地图片以及 base64 编码的图片。在 Android 端&#xff0c;Image 组件还可…...

【mysql】windows mysql命令

终端配置环境变量&#xff0c;找到mysql地址放入环境变量-系统变量中 例如&#xff1a; C:\Program Files\MySQL\MySQL Server 8.0\bin win键R输入 sysdm.cpl 快速打开电脑变量-高级-环境变量 连接命令 mysql -u root -p 查看所有数据库 show databases; 选中数据库 …...

uniappx 打包配置32位64位x86安装包

{"app": {"distribute": {"android": {"abiFilters": ["armeabi-v7a","arm64-v8a","x86","x86_64"]}}} }...

【C++ 类和数据抽象】static 类成员

目录 一、static 类成员的基本概念 1.1 静态成员的定义 1.2 静态数据成员 1.3 静态成员函数 1.4 内存布局 1.5 访问控制 1.6 性能分析 1.7 C标准演进 二、static 类成员的特点 2.1 共享性 2.2 不依赖于对象 2.3 无 this 指针 三、静态成员的初始化规则 3.1 初始化…...

深入了解递归、堆与栈:C#中的内存管理与函数调用

在编程中&#xff0c;理解如何有效地管理内存以及如何控制程序的执行流程是每个开发者必须掌握的基本概念。C#作为一种高级编程语言&#xff0c;其内存管理和函数调用机制包括递归、堆与栈。本文将详细讲解这三者的工作原理、用途以及它们在C#中的实现和应用。 1. 递归 (Recur…...

声音分离人声和配乐-从头设计数字生命第5课, demucs——仙盟创梦IDE

demucs 伴奏提取人声分离技术具有多方面的重大意义&#xff0c;主要体现在以下几个领域&#xff1a; 音乐创作与制作 创作便利性提升&#xff1a;创作者能轻易获取无伴奏的人声轨道&#xff0c;便于对人声进行单独处理&#xff0c;如调整音准、音色、添加特效等&#xff0c…...

基于PHP+Uniapp的互联网医院源码:电子处方功能落地方案

随着“互联网医疗”政策红利持续释放&#xff0c;互联网医院已成为推动医疗数字化转型的重要方向。在这一趋势下&#xff0c;电子处方功能模块作为核心环节&#xff0c;不仅直接关系到线上问诊闭环的实现&#xff0c;也成为系统开发中技术难度较高、业务逻辑最为复杂的一部分。…...

Linux 基础命令入门指南

在 Linux 系统中&#xff0c;命令行是高效操作和管理系统的核心方式。掌握一些基础命令&#xff0c;能够让我们更便捷地完成文件操作、系统监控、文本处理等任务。本文将为大家介绍常用的 Linux 基础命令&#xff0c;帮助新手快速入门。 一、文件和目录操作命令 1. ls&#x…...

(done) 吴恩达版提示词工程 3. 迭代 (控制输出长度、提取特定细节、输出 HTML 格式)

url: https://www.bilibili.com/video/BV1Z14y1Z7LJ?spm_id_from333.788.videopod.episodes&vd_source7a1a0bc74158c6993c7355c5490fc600&p3 别人的笔记 url: https://zhuanlan.zhihu.com/p/626966526 3. 迭代&#xff08;Iterative&#xff09; 当我使用大语言模型…...

学员答题pk知识竞赛小程序怎么做

制作学员答题PK知识竞赛小程序&#xff0c;主要有以下步骤&#xff1a; 一、规划设计 明确需求&#xff1a;确定小程序的使用场景是校园知识竞赛、培训机构考核还是企业内部培训等。答题功能&#xff0c;规定答题的具体规则&#xff0c;包括题目类型&#xff08;单选、多选、…...

P1217 [USACO1.5] 回文质数 Prime Palindromes【python】

P1217 [USACO1.5] 回文质数 Prime Palindromes 题目描述 因为 151 151 151 既是一个质数又是一个回文数&#xff08;从左到右和从右到左是看一样的&#xff09;&#xff0c;所以 151 151 151 是回文质数。 写一个程序来找出范围 [ a , b ] ( 5 ≤ a < b ≤ 100 , 000 …...

搭建私人网站

第一章 阿里云服务器选购与配置 1.1 注册与实名认证 ‌注册账号‌ 访问阿里云官网&#xff0c;点击右上角"免费注册"&#xff0c;填写邮箱/手机号&#xff0c;完成人机验证后获取验证码。 注意&#xff1a;企业用户需选择"企业实名认证"&#xff0c;个人用…...

Nacos简介—1.Nacos使用简介

大纲 1.Nacos的在服务注册中心 配置中心中的应用 2.Nacos 2.x最新版本下载与目录结构 3.Nacos 2.x的数据库存储与日志存储 4.Nacos 2.x服务端的startup.sh启动脚本 5.Dubbo Nacos微服务RPC调用开发示例 6.Nacos对临时与持久化服务实例的健康检查机制 7.Nacos保护阈值机…...

【工具】使用 MCP Inspector 调试服务的完全指南

Model Context Protocol (MCP) Inspector 是一个交互式开发工具&#xff0c;专为测试和调试 MCP 服务器而设计。本文将详细介绍如何使用 Inspector 工具有效地调试和测试 MCP 服务。 1. MCP Inspector 简介 MCP Inspector 提供了直观的界面&#xff0c;让开发者能够&#xff…...

架构-项目管理

一、盈亏平衡分析 核心知识点&#xff1a; 基本公式 正常情况&#xff1a;销售额 固定成本 可变成本 税费 利润盈亏平衡时&#xff1a;销售额 固定成本 可变成本 税费&#xff08;利润为0&#xff0c;即不赚不亏的临界点&#xff09; 公式推导&#xff1a;利润 销售额…...