最强总结 | 带你快速搞定kotlin开发(中篇)

Android Studio 接入 DeepSeek 实战指南:API 桥接与本地 Ollama 方案 代码生成大模型(如 DeepSeek-Coder)正成为 Android 开发提效新范式,其核心原理是通过标准化 API 协议(如 OpenAI 兼容接口)或本地推理引擎(如 Ollama)与 IDE 对接。技术价值在于绕过官方生态限制,实现 Kotlin/Compose/Room 等安卓技术栈的智能补全与重构。典型应用场景包括协程 Retrofit 封装、Java 到 Jetpack Compose 的自动化迁移、以及离线环境下的安全代码生成。本文聚焦实测可行的两条主线:基于 CodeGPT 插件的 De 阅读详情

关注我,你的眼睛会怀孕

Kotlin必知必会(中)

1.1 再讲构造器

  • 主构造器、次构造器、初始化代码块、构造属性

// 在类名后面直接写的构造器称为主构造器,age直接在构造器里声明的,称为构造属性
class Person constructor(name: String, private var age: Int) {
    companion object {
        const val TAG = "Person"
    }
    var name: String? = null
    private var sex: String? = null
    private var weight: Float? = null

    // 初始化代码块
    init {
        sex = "男"
    }

    // 次级构造函数,必须要要调用主构造器通过this(参数列表)
    constructor(na:String, age:Int, weight:Float): this(na, age) {
        this.name = na
        this.age = age
        this.weight = weight
    }

    fun introduce() {
        Log.d(TAG, "my name is $name,age is $age, sex is $sex, weight is $weight")
    }
}

正如上面注释所写到的,Kotlin 中的类可以有一个 主构造器 (primary constructor), 以及一个或多个 次构造器 (secondary constructor). 主构造器是类头部的一部分, 位于类名称(以及可选的类型参数)之后,并且有一点与Java不同,就是在主构造器中我们可以直接声明成员属性。

当然还有点不同的是,kotlin为我们提供了一个init关键字进行初始化,主构造器中不能包含任何代码. 初始化代码可以放在 初始化代码块中,需要注意的是初始化代码块中待初始化的属性,一定要放到初始化块的上方。

如果类有主构造器, 那么每个次级构造器都必须委托给主构造器, 要么直接委托, 要么通过其他次级构造器间接委托. 委托到同一个类的另一个构造器时, 使用 this 关键字实现。 
到这里,我想大家一定会好奇,init代码块和次级构造函数的执行顺序是什么?

初始化代码段中的代码实际上会成为主构造器的一部分. 对主构造器的委托调用, 会作为次级构造器的第一条语句来执行, 因此所有初始化代码段中的代码, 以及属性初始化代码, 都会在次级构造器的函数体之前执行. 即使类没有定义主构造器, 也会隐含地委托调用主构造器, 因此初始化代码段肯定会在次级构造器执行之前调用。

1.2 数据类型(data class)  

这个设计也是kotlin的一个亮点,我们在实际项目当中一定会大量的使用的数据类(bean),然后会去做比较相等、复制等操作,对于Java来说就要去重写equals、hashCode、toString等函数。

kotlin比较灵性的一点是对于使用data class声明的类,会自动的根据构造属性生成对应的函数。

data class User(var name: String?, var age: Int) {

}

class SomeThing {

    fun test() {
        val user = User("Bob", 18)
        var other = User("Kotlin", 18)
        // copy()函数只是拷贝的值,并不是引用
        val user2 = user.copy()
        // Kotlin的"=="相当于Java的equals,比较的
        // 是值,如果需要比较引用可以使用三等号"==="
        // when如果不加参数,分支条件都是布尔表达式
        when {
            user == user2 -> println("111")
            user === user2 -> println("222")
        }
        // copy可以指定更改部分属性
        other = user.copy(name = "Kotlin")
        println("other == user = ${other == user}")
        println("other === user = ${other === user}")

        // 解构
        val (name, age) = user
        print(name)
        print(age)
    }
}

使用data class声明的数据类型,会根据构造器中声明的属性自动推断出equals方法,在kotlin中equals方法等同于双等号“==”,而双等号在Java中是比较引用(地址)是否相等,在kotlin中需要使用三等号“===”。

解构这个是不是蛮有意思,kotlin会按照数据类型User中构造器中声明的属性顺序,拆开来逐个赋值给你的变量。再也不用再一个一个去手动赋值啦。

1.3 吃一波糖  

  • ?:

我们一定使用过一些在判断一些属性是空时,给它赋上一个默认值的经历,这样的代码写起来也是挺无聊的,kotlin通过?:可以为我们做一些简化,user.name ?: "Kotlin"  

```java
// Java中这么写
if (user.name != null && user.name.length > 3) {}
// 那么利用语法糖可以这么简写
if (user.name?.length ?: 0 > 3) {}
```
> 稍微解释下,上面的user.name如果是null,那么user.name?.length整个被看做为null,那么就会被使用0这个默认值,但是这个简化看上去也没有简化太多,而且可读性显然变的更差了,所以并不要求一定要这么写,但是别人这么写要能看懂。
  • when

上一篇我们已经讲过了when,这里再补充一点,when表达式是有返回值的,满足条件的分支的返回值将成为整个表达式的值. 如果用作流程控制语句, 各个分支的返回值将被忽略. (与 if 类似, 各个分支可以是多条语句组成的代码段, 代码段内最后一个表达式的值将成为整个代码段的值.)

如果其他所有分支的条件都不成立, 则会执行 else 分支. 如果 when 被用作表达式, 则必须有 else 分支, 除非编译器能够证明其他分支的条件已经覆盖了所有可能的情况

  • 循环和lambda

假设有个User列表,然后找出年龄小于20岁的部分:

    fun showYoungPerson(users: List<User>) {
        val youngPersonList = ArrayList<User>()
        for (person in users) {
            if (person.age < 20) {
                youngPersonList.add(person)
            }
        }
    }

对于里面的for循环我们可以使用foreach函数:

    users.forEach({ person: User ->
        if (person.age < 20) {
            youngPersonList.add(person)
        }
    })

我们可以看到,函数的参数是一个lambda表达式,在kotlin中,如果函数的最后一个参数是lambda表达式,可以直接移到外面来:

    users.forEach(){ person: User ->
        if (person.age < 20) {
            youngPersonList.add(person)
        }
    }

而如果只要一个lambda的参数,foreach后面的小括号都可以直接省略掉的,就变成这样:

    users.forEach{ person: User ->
        if (person.age < 20) {
            youngPersonList.add(person)
        }
    }

如果lambda只有一个参数也是可以省略的,kotlin直接有默认的it指代当前遍历的对象:

    users.forEach{
        if (it.age < 20) {
            youngPersonList.add(it)
        }
    }

其实我们还能简化,kotlin中的容器类提供过滤的函数filter(),他会直接返回符合条件的集合:

    val youngPersonList = users.filter { it.age < 20 }

kotlin还提供了一个过滤函数partition,他可以返回两个集合,一个是满足条件的,另一个是不满足条件的:

    val (youngPersonList, oldPersonList) = users.partition { it.age < 20 }

对于单纯做100次循环的操作,kotlin还可以使用repeat函数:

    repeat(100) {
        println(it)
    }
  • 局部函数

说白了就是函数里面再嵌套个函数,局部函数里面可以访问外部函数的属性,有人可能要问设计这种函数有啥用?我想了下,使用的场景可能就是你的一个函数里想再抽出一个函数,但这个函数只有你这个外部函数会调用,不想被类中的其他地方调用,这个时候你就可以抽成一个局部函数。 
需要注意的是,这种嵌套的方式每次在外部函数被调用的时候会生成一个额外的对象,所以如果调用比较平凡的函数还是不要在里面嵌套内部函数。

    fun outerMethod() {
        val name = "kotlin"

        fun innerMethod() {
            print(name)
        }
        // 调用内部函数
        innerMethod()
    }
  • 函数默认值

使用函数默认值可以为我们节省写重载函数的时间:

    // 带默认值的参数
    fun test(name: String, age: Int = 18) {
        println(name)
        println(age)
    }

    fun call() {
        test("kotlin")
        test("kotlin", 19)
    }

当使用一个参数的时候第二个参数就会使用默认的参数值

  • 扩展

这是我个人很喜欢的特性,kotlin中我们可以向任意类扩展函数或者属性,比如我觉得MutableList应该具备可以任意交换数据的函数,那我们就可以自己为MutableList类扩展一个这样的函数,然后我们就可以在所有MutableList的对象中使用这个函数:

    fun <T> MutableList<T>.swap(index1: Int, index2: Int) {
        val tmp = this[index1] // 'this' 指代 list 实例
        this[index1] = this[index2]
        this[index2] = tmp
    }

    fun call() {
        val list = mutableListOf<String>("A", "B", "C")
        list.swap(0, 2)
    }

扩展函数中的this代指调用此扩展函数的对象,本质上其实我们并没有为类真的新增一个成员函数,当然如果类的成员函数和你的扩展函数一样,会优先调用成员函数的,其本质是什么呢?其实就是在你自己的类里面新增了一个函数,并且可以通过点号标记法的形式, 对这个数据类型的变量调用这个新函数,我们把上面的扩展函数反编译一下:

    public final void swap(@NotNull List $this$swap, int index1, int index2) {
          Intrinsics.checkParameterIsNotNull($this$swap, "$this$swap");
          Object tmp = $this$swap.get(index1);
          $this$swap.set(index1, $this$swap.get(index2));
          $this$swap.set(index2, tmp);
   }

另外需要注意的是,扩展函数的调用是静态的,是根据调用对象的表达式决定的,并不会在根据运行时的类型选择,举个例子:

    open class Shape

    class Rectangle: Shape()

    fun Shape.getName() = "Shape"

    fun Rectangle.getName() = "Rectangle"

    // 表达式中是Shape类型
    fun printClassName(s: Shape) {
        println(s.getName())
    }    
    // 我们传入的是Rectangle对象
    printClassName(Rectangle())

所以输出结果是“Shape”,而并不会是Rectangle。

  • inline内联函数

简单点讲,就是使用inline声明的函数,在调用的时候,直接将内联函数体直接copy到调用的位置,也就是说如果这个函数有多处调用,就会多次的将同样的代码插入到调用的位置。如果你的函数比较大,调用的地方又比较多的话,显然不太适合。可能有人问,这个函数有什么好处,好处就是减少了方法栈的一次入栈和退栈操作。

函数相关的后面会出新的文章细讲,这里不再赘述。请继续关注本专题哦。

一篇文章太长,显然不利于大家碎片化的学习,本篇暂时说到这,后面将继续讲解Kotlin必知必会相关的知识点,这些知识点不会讲的太深,目的是能够让大家看懂别人为什么这么写,或者自己能够开始动手写就行。等我们一起学习完必知必会的,我会再去仔细扣一些细节来和大家分享。还有比如大家都在说kotlin的协程,那么协程的本质究竟是什么?后面我开单篇文章来和大家一起详细探讨。

欢迎大家一起来探讨,公众号里也有群二维码,喜欢讨论的同学也可以扫码加群。

Android平台Lua脚本开发:从环境搭建到自动化实战 脚本语言作为轻量级、解释执行的编程工具,在自动化、快速原型和逻辑热更新等场景中具有独特优势。其核心原理是通过嵌入宿主程序或独立解释器,实现动态代码加载与执行,从而提升开发灵活性和效率。在移动开发领域,Android平台对脚本化技术的需求日益增长,特别是在自动化测试、设备管理和轻量级工具开发等应用场景中。本文聚焦于Lua这一轻量高效的脚本语言在Android上的实践,详细解析了通过LuaDroid等集成环境快速上手的路径,并深入探讨了文件操作、系统命令调用等热词相关的自动化脚本编写技巧,为移动端开发者提供了一 阅读详情

相关推荐

Flutter与Unity混合开发性能优化实战:从卡顿到丝滑的完整解决方案

在移动应用开发中,混合开发架构常被用于整合不同引擎的优势,例如结合Flutter的跨平台UI能力与Unity的高性能3D渲染。其核心原理在于通过原生层桥接两个独立的运行时环境,实现通信与渲染协同。这种架构的技术价值在于能够打造兼具丰富2D交互与沉浸式3D体验的复合型应用,广泛应用于电商产品展示、教育仿真、AR/VR等场景。然而,性能瓶颈是混合开发面临的主要挑战,尤其是当Flutter与Unity在**视图嵌入**模式下协同工作时,容易出现渲染冲突、内存飙升与通信延迟问题。本文聚焦于通过**纹理传递**优化、

weixin_30920853的博客 358

箭头函数跟普通函数的区别

箭头函数跟普通函数的区别 1.写法不同 箭头函数使用箭头定义,普通函数中没有。 //箭头函数 (参数1,参数2...参数n)=>{ //代码段 } //普通函数 function 函数名(参数1,参数2...参数n)=>{ //代码段 } 2.箭头函数不能用于构造函数 普通函数可以用于构造函数,以此创建对象实例。 3.箭头函数中this的指向不同 箭头函数自身没有this,它的this是父级普通函数的this. 在普通函数中,this总是指向调用它的对象或者,如果用作构造函数,

weixin_47218056的博客 6763

Claude Code深度解析:代码语义理解与工程级AI协作者实践

AI编程工具正从语法补全迈向代码语义理解——这一范式升级要求模型具备AST解析、上下文建模与工程约束识别能力。基于抽象语法树(AST)的语义分析,使AI能区分`list.isEmpty()`与`list.size() == 0`的业务等价性;128K上下文支持则真实适配微服务链路调试等复杂工程场景。其技术价值在于将AI定位为‘人主导、AI协作者’,强调渐进式生成、安全边界意识与设计决策前置,而非黑盒输出。典型应用场景包括遗留系统重构、多模块联调诊断、Spring生态安全重构及跨语言API契约同步。本文聚焦C

weixin_30338481的博客 419

箭头函数与普通函数的区别

箭头函数与普通函数的区别 1、外形不同:箭头函数使用箭头定义,普通函数中没有。 2、 箭头函数全都是匿名函数:普通函数可以有匿名函数,也可以有具名函数 3、箭头函数不能用于构造函数:普通函数可以用于构造函数,以此创建对象实例。 4、箭头函数中 this 的指向不同:在普通函数中,this 总是指向调用它的对象,如果用作构造函数,它指向创建的对象实例。 5、箭头函数不具有 arguments 对象:每一个普通函数调用后都具有一个 arguments 对象,用来存储实际传递的参数。但是箭头函数并没有此对象。 6

yzkdcsdn的博客 2万+

Android应用静态分析利器:Androguard框架核心解析与自动化实战

在移动安全与逆向工程领域,静态分析是理解应用内部逻辑、检测潜在风险的基础技术。其核心原理在于不运行程序的情况下,通过解析二进制文件结构(如APK、DEX)来提取代码、资源和元数据信息。这项技术的价值在于能够自动化、规模化地审查应用行为,广泛应用于恶意软件检测、隐私合规审计、漏洞挖掘等场景。本文聚焦于实现这一过程的强大工具——Androguard,一个基于Python的Android应用逆向工程框架。它通过提供可编程的库接口,允许开发者深度解析APK的Manifest、反编译DEX字节码、构建控制流图,并支持

congsong2560的博客 380

kotlin-quick-guide:开发人员Kotlin快速指南

这是Kotlin的快速入门指南,适用于具有编码经验(使用任何其他语言)的人员。我整理了从不同来源(如Kotlin Koans和JetBrains Academy)学到的知识,作为在进行编码挑战或Android应用程序时的快速参考。本指南绝不是Kotlin的完整参考,但对于新用户来说可能已经足够。我假设您已经了解其他语言的编程知识,所以我跳过了对诸如可变性和lambda表达式之类的概念的解释。但是,如果您不熟悉这些术语,那么简单的网络搜索肯定会帮助您理解它们。 src目录中包含一个示例程序,以使您了解Kotlin文件和软件包的外观。 目录 基本事实 代码块用大括号括起来, {...} 每个语句都应从新行开始 Kotlin中有三种类型的评论: // This is a single line comment /* This is an example of a multiline c

箭头函数与普通函数的区别?

1. 箭头函数比普通函数更加简洁 如果没有参数,就直接写一个空括号即可 如果只有一个参数,可以省去参数的括号 如果有多个参数,用逗号分割 如果函数体的返回值只有一句,可以省略大括号 2. 箭头函数没有自己的this 箭头函数不会创建自己的this, 所以它没有自己的this,它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了,之后不会改变。 3. 箭头函数继承来的this指向永远不会改变 var id = 'GLOBAL'; var obj = {

m0_62118859的博客 2万+

智能客服系统知识库构建:长尾问题解决方案全解析

智能客服系统知识库构建:长尾问题解决方案全解析

嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 4112

箭头函数和普通函数的区别

普通函数的this指向调用该函数的对象① 独立调用时,指向全局对象(window或global)② 被对象调用时,指向调用它的对象③ 使用call、apply或bind方法调用时,指向他们的第一个参数④ 在构造函数中使用时,指向实例化该构造函数的对象箭头函数的this指向该函数定义是所在的定义域① 在全局作用域定义时,this指向window,此时this.item为undefined② 在普通函数中定义时,this继承普通函数的this指向。

Kong08242022的博客 2105

STM32F407VET6与CH395Q串口通信实战:从零搭建以太网客户端(附完整代码)

本文详细介绍了基于STM32F407VET6微控制器与南京沁恒微CH395Q以太网芯片,通过串口通信从零搭建TCP客户端应用的完整实战过程。内容涵盖硬件连接、驱动层设计、基于FreeRTOS的任务实现以及核心调试技巧,并提供了完整的代码示例,帮助嵌入式开发者快速实现设备联网功能。

weixin_29179311的博客 413

R语言笔记十:独立性检验函数

1.独立性检验函数        独立性检验是根据频数信息判断两类因子彼此相关或相互独立的假设检验。所谓独立性就是指变量之间是独立的,没有关系。 独立性检验算法:卡方检验、Fisher检验、Cochran-Mantel-Haenszel检验 2.假设检验 假设检验(Hypothesis Testing)是数理统计学中根据一定假设条件由样本推断总体的一种方法。 原假设——没有发生 备择假设——发生了 具体做法:根据问题的需要对所研究的总体作

weixin_44384631的博客 4111

最强总结 | 带你快速搞定kotlin开发(上篇)

关注我,你的眼睛会怀孕Kotlin必知必会(上)1.1 函数:funsum(a:Int,b:Int):Int{ returna+b } //对于只有一行...

吴延宝 879

DeepSeek研发的精算大模型「精卫」已实现98%精算任务覆盖,中国人寿采用后年节约3.2亿元技术采购成本,形成关键技术替代效应

根据现有资料,精算领域关键技术替代效应的行业标准定义尚未明确具体提及。然而,可以从相关文献中提取一些关键概念和方法来推导出可能的定义。​替代效应的基本定义​:替代效应是指一种商品价格变动引起另一种商品的相对价格变动,从而导致消费者在维持原有效用水平不变的条件下对商品需求量做出的调整。​技术替代效应​:在精算领域,技术替代效应可以理解为新技术或新方法对现有技术或方法的替代,从而影响精算模型、数据处理和决策过程。例如,机器学习在精算中的应用日益增长,改变了精算师的工作方式和模型构建方法。​。

百态·数智思维 | 聚焦大数据、量化与未来AI 1710

kotlin编译失败_最强总结 | 带你快速搞定kotlin开发(上篇)

关注我,你的眼睛会怀孕Kotlin必知必会(上)1.1 函数:funsum(a:Int,b:Int):Int{returna+b}//对于只有一行的函数,kotlin可以这么简写,爽不?funsum(a:Int,b:Int):Int=a+b可以看到函数的声明是通过fun关键字的,函数的参数类型和参数名的位置跟Java是相反的,中间使用:...

weixin_33958871的博客 591

CANoe信号波形分析保姆级教程:Graphic窗口从配置到实战避坑

本文详细解析了CANoe的Graphic窗口在信号波形分析中的高效配置与实战应用技巧。从信号显示模式选择、测量光标进阶操作到信号分组策略,提供工程化解决方案,帮助工程师快速定位总线信号异常,提升汽车电子开发与测试效率。

weixin_29279047的博客 265

从 SOAUTH2 到系统用户,SAP AS ABAP 里配置 OAuth 2.0 Client 的完整落地思路

SAP OAuth 2.0客户端配置的核心在于建立系统级信任关系。在AS ABAP中,每个OAuth 2.0客户端必须关联一个System类型的用户账号(通过SU01创建),并建议采用业务语义明确的命名规范(如ZBTP_PO_APPROVAL_APP)。关键配置包括:客户端认证方式(推荐SSL证书而非共享密钥)、Token生命周期(默认3600秒)、Scope访问范围,以及根据应用场景选择Authorization Code或SAML 2.0 Bearer等授权模式。项目实践中应避免混合配置不同授权类型,而

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 985

最强总结 | 带你快速搞定kotlin开发(下篇)

关注我,你的眼睛会怀孕Kotlin必知必会(下)①前言通过前面两篇文章的介绍,我们对kotlin有了初步的了解(没看的同学可以通过点击话题跳转回去阅读),现在去动手写kotlin代码或者...

吴延宝 318

解锁RK1126与SC132GS摄像头适配密码:技术与代码全解析

本文详细介绍了瑞芯微RK1126芯片与SC132GS摄像头的适配方法。首先分析了RK1126的四核Cortex-A7处理器、Mali-T860 GPU等硬件特性,以及SC132GS的130万像素、全局快门等技术参数。重点阐述了基于MIPI CSI接口的硬件连接原理和基于V4L2框架的软件驱动设计,并提供了完整的初始化、数据采集和图像处理代码实现。针对常见连接和图像质量问题给出了解决方案,展现了该组合在智能安防、工业检测等领域的应用潜力,为开发者提供了实用的技术参考。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1501

最强整理:五步搞定Android开发环境部署,通用流行框架大全

前言 一个Android开发的朋友跟我谈他面试经历,上周去爱奇艺面试,其他问题都答得不错,面试官问了一个哈夫曼算法的题没答出来,后来面试官很明确的说,我们还是想找一个会些算法基础的。 如果之前有学过数据结构和算法,建议大家不定时的去刷刷算法题 因为从面试的角度来讲,目前 BAT 和 TMD 等一线互联网企业或多或少都会有几个算法题,而对应届毕业生来说,算法的要求度则更高!这里可以分享一下我收集整理的数据结构算法题含答案。 背景介绍 Android 项目一般使用 gradle 作为构建打包工具,而其执行速度

m0_53537576的博客 182

【MATLAB代码】UKF组合导航例程,15维状态量、3维观测量。附完整的代码,有中文注释、误差输出图像

摘要 本文提出了一种基于15维误差状态模型的UKF组合导航算法,实现了三维位置、速度和姿态的高精度估计。算法采用严格的误差状态模型,包含位置(3)、速度(3)、姿态(3)、陀螺偏差(3)和加速度计偏差(3)共15个状态量,通过3维GNSS位置观测进行校正。仿真结果表明,相比纯IMU积分,UKF算法能有效抑制误差积累,显著提高导航精度。文中提供了完整的MATLAB源代码,可直接运行并复现三维轨迹对比、位置/速度曲线及误差分析结果。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 310

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Zotero Style 完整使用指南

深夜,你又一次点开 Zotero 文献库,几百条记录混在一起,哪篇读完了、哪篇只开了个头,全靠翻文件夹回忆。Zotero Style 是一款免费的 Zotero 插件,把阅读进度条、智能标签、文献关系图谱直接塞进你熟悉的列表界面,让文献管理从"凭感觉"变成"看得到"。接下来 5 分钟,从装好到跑通核心流程。 ## 一、旧流程 vs 新流程 | 环节 | 以前 | 装上 Zotero Style

gitblog_00263的博客 342

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

如何用开源炉石脚本5分钟搞定每日任务:智能自动化工具完全指南

还在为炉石传说每天重复的日常任务感到疲惫吗?想要测试新卡组却苦于没有足够时间?这款开源炉石脚本正是你需要的智能游戏助手!基于Java和Kotlin开发的专业自动化工具,能够帮你解放双手,让游戏体验更加轻松愉快。 ## 🎮 为什么你需要这款炉石脚本? 想象一下:每天只需5分钟,就能完成原本需要30分钟的日常任务。这款炉石传说脚本不仅是一个简单的自动化工具,更是一个智能决策系统,它能够模拟真人玩

gitblog_00408的博客 251

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android开发者的AI三线并行实战:Claude、GPT、Gemini分工指南

在Android开发中,大模型并非通用解题器,而是需按场景精准调用的工程工具。由于Android生态存在API版本碎片化、框架深度耦合、硬件协议私有化等独特约束,单一模型难以覆盖全链路需求。Claude Sonnet在Kotlin语义理解与生命周期合规性上表现稳健,适合核心代码修正;Gemini 3.1 Pro凭借超长上下文与低成本优势,专精于文档解析、日志聚类等批量信息处理;GPT-5.4则强于跨模态整合与方案权衡,适用于软硬协同、合规对齐等复杂决策场景。这种三线并行模式,本质是将时间成本、金钱成本与风险

weixin_30700977的博客 360

2021年Java开发教程合集:IntelliJ IDEA下载、入门教程、最新资讯!

IntelliJ IDEA是Java语言开发的集成环境,IntelliJ在业界被公认为优秀的Java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。 点击即可下载IntelliJ IDEA最新试用版 入门系列教程: 如何创建您的第一个Java应用程序 如何进行调试 如何添加jar包 常用快捷键介绍 如何自定义键盘快捷方式 排名前5的键盘导航快捷方式 如何为现有Intell

qq_42444778的博客 626

2026 年上鸿蒙别再试错了:选框架看这篇

大家好,我是胡琦。这两年我和很多开发者聊鸿蒙生态(OpenHarmony / HarmonyOS NEXT)时,几乎每个人都会问同一个问题:“我现有的跨平台代码,到底能不能跑在鸿蒙上?“如果能跑,要改多少?“选哪个框架最稳?“手机能跑,PC 能不能也一起搞定?“有没有成熟仓库可以直接抄作业?所以我把自己最近一段时间的调研结果整理成了一份**《2026版:跨平台框架适配鸿蒙信息汇总表》**,你可以把它当成一张“鸿蒙通行证地图”。

sinat_34365157的博客 1380

Java、C#、C++核心对比:从设计哲学到实战选型指南

在软件开发领域,编程语言是构建数字世界的基石,其设计哲学深刻影响着开发效率、系统性能与可维护性。从原理上看,语言通过不同的内存管理机制(如自动垃圾回收与手动管理)、运行时环境(虚拟机与原生编译)来平衡控制力与安全性。这种技术差异直接决定了其核心价值:是追求极致的性能与控制,还是侧重开发效率与生态完整性。因此,不同的语言自然适配于差异化的应用场景,例如企业级后端、云原生服务、系统软件或实时嵌入式开发。本文聚焦于Java、C#和C++这三大主流语言,深入剖析其各自的**内存管理**策略与**生态系统**构成,为

weixin_30565199的博客 565
上一篇: 最强总结 | 带你快速搞定kotlin开发(上篇)
下一篇: 最强总结 | 带你快速搞定kotlin开发(下篇)
IT烂笔头
博客等级 码龄15年 621粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值