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

Android开发入门

文章目录

    • JetBrains
      • 历史沿革
      • 主营业务
    • Kotlin
    • SDK
    • Android Studio
      • 特点
      • 功能
    • gradle
    • 9 Patch图片
      • 1. 作用和用途
      • 2. 创建9 Patch图片
      • 3. 在布局文件中使用9 Patch图片
      • 4. 注意事项
    • mipmap子目录
    • AVD

JetBrains

JetBrains是一家成立于2000年的捷克软件开发公司,总部位于布拉格,在全球多地设有办事处,包括俄罗斯圣彼得堡、美国马萨诸塞州波士顿和中国上海等。以下是对它的详细介绍:

历史沿革

  • 创立:最初名为IntelliJ Software,由Sergey Dmitriev、Valentin Kipyatkov和Eugene Belyaev创立。
  • 管理层变动:2012年,CEO Sergey Dmitriev由Oleg Stepanov和Maxim Shafirov接替。
  • 相关事件:2021年被提及可能与SolarWinds黑客攻击有关,但公司予以否认;2022年响应俄罗斯入侵乌克兰事件,暂停了在俄罗斯和白俄罗斯的销售和研发活动,并于2023年2月21日解散了俄罗斯法人实体。

主营业务

  • 集成开发环境(IDE)
    • IntelliJ IDEA:适用于Java、Kotlin、Groovy、Scala等基于Java虚拟机的语言,有开源的社区版和功能更强大的旗舰版。
    • PyCharm:专为Python开发设计,有社区版、专业版和教育版,集成了Django、Flask等Python Web框架和数据科学工具。
    • WebStorm:专门针对Web和前端开发,支持JavaScript、TypeScript、HTML、CSS等,以及Node.js、Angular、React、Vue.js等最新的JavaScript生态系统。
    • CLion:用于C和C++开发,集成了CMake构建系统,支持GNU Compiler Collection(GCC)和Clang编译器、GDB调试器、LLDB和Google Test。
    • AppCode:支持C、C++、Objective-C和Swift编程,仅适用于macOS,2022年12月宣布停止新订阅和续订服务。
    • DataGrip:数据库管理工具,支持多种SQL数据库,通过插件也可访问其他数据存储。
    • DataSpell:用于Jupyter笔记本和Python的数据科学工具。
    • Fleet:轻量级多功能IDE,支持协作和远程工作流。
    • GoLand:用于Go语言开发。
    • Rider:用于.NET开发,主要是C#和F#,也支持Unity(C#)和Unreal Engine(C++)游戏开发。
    • RubyMine:用于Ruby和Ruby on Rails开发。
    • RustRover:用于Rust开发。
  • 编程语言
    • Kotlin:一种静态类型编程语言,可以运行在Java虚拟机上,也可以编译成JavaScript或本地代码。
    • JetBrains MPS:针对特定领域语言(DSLs)的开源语言工作台。
    • Ktor:基于Kotlin的框架,用于开发服务器和客户端应用。
  • 团队协作工具
    • TeamCity:持续集成和持续交付服务器。
    • YouTrack:网络错误跟踪器、问题跟踪系统和项目管理软件。

Kotlin

Kotlin是一种现代的、跨平台的编程语言,以下是关于它的详细介绍:

一、历史背景

Kotlin是由JetBrains开发的,JetBrains是著名的集成开发环境(IDE)制造商,如IntelliJ IDEA就是他们的产品。Kotlin于2011年首次发布,其设计目标是为了创建一种与Java兼容,同时更加简洁、安全和高效的编程语言。在2017年,Google宣布Kotlin成为Android开发的一级支持语言,这使得它在移动开发领域迅速崛起。

二、语言特点

  1. 简洁性

    • 相比Java,Kotlin减少了大量的样板代码。例如,在定义一个简单的数据类时,Java需要编写很多代码来定义属性、构造函数、getter和setter方法等。而在Kotlin中,一个数据类可以用非常简洁的方式定义:
    data class User(val name: String, val age: Int)
    
    • 这就定义了一个包含姓名和年龄两个属性的数据类,编译器会自动为这个类生成equals()、hashCode()、toString()等方法。
  2. 与Java的互操作性

    • Kotlin可以与Java无缝互操作。这意味着可以在Kotlin项目中使用现有的Java库,反之亦然。例如,如果有一个Java类:
    public class JavaClass {public int add(int a, int b) {return a + b;}
    }
    
    • 在Kotlin中可以很容易地调用这个Java类的方法:
    val javaObj = JavaClass()
    val result = javaObj.add(3, 5)
    
  3. 安全性

    • Kotlin通过空安全(Null - Safety)机制避免了空指针异常(Null Pointer Exceptions)。在Kotlin中,变量默认是非空的,除非显式地声明为可空类型。例如:
    var nonNullVariable: String = "Hello"
    // 下面这行代码会在编译时出错,因为nonNullVariable不能为null
    // nonNullVariable = null
    var nullableVariable: String? = "World"
    nullableVariable = null
    
    • 当访问可空变量的成员时,需要进行空安全检查,比如使用?.操作符:
    val length: Int? = nullableVariable?.length
    
  4. 函数式编程支持

    • Kotlin支持函数式编程特性,如高阶函数、Lambda表达式等。例如,下面是一个使用Lambda表达式对列表进行过滤的例子:
    val numbers = listOf(1, 2, 3, 4, 5)
    val evenNumbers = numbers.filter { it % 2 == 0 }
    
    • 这里的filter函数接受一个Lambda表达式作为参数,用于定义过滤的条件。

三、应用领域

  1. Android开发
    • 由于Google对Kotlin的支持,它已经成为Android应用开发的热门语言。使用Kotlin可以更高效地构建Android应用的用户界面、处理业务逻辑等。例如,在Android的Activity或Fragment中,可以使用Kotlin编写简洁的代码来处理用户交互和数据显示。
    class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val button = findViewById<Button>(R.id.my_button)button.setOnClickListener {// 处理按钮点击事件Toast.makeText(this, "Button Clicked", Toast.LENGTH_SHORT).show()}}
    }
    
  2. 后端开发
    • Kotlin也可以用于后端开发。它可以与Spring Boot等框架一起使用来构建Web服务。例如,使用Kotlin和Spring Boot构建一个简单的RESTful API:
    @RestController
    class HelloController {@GetMapping("/hello")fun sayHello(): String {return "Hello, World!"}
    }
    
  3. 跨平台开发
    • 借助于Kotlin Multiplatform Mobile(KMM)等技术,Kotlin可以用于开发跨平台的移动应用。这意味着可以使用Kotlin编写共享的业务逻辑代码,然后在Android和iOS平台上分别使用特定的框架来构建用户界面,从而提高开发效率,减少代码重复。

SDK

  1. 定义
    • SDK是Software Development Kit的缩写,中文意思是软件开发工具包。Android SDK是Android软件开发工具包,它包含了一系列开发Android应用程序所必需的软件工具、库文件、文档、示例代码和调试工具等资源。
  2. 主要组成部分
    • 库文件
      • Android SDK提供了大量的库文件,例如Android运行时库(ART - Android Runtime)。ART是Android系统中应用程序的运行环境,它负责执行应用程序的字节码。这些库文件为开发者提供了许多预先编写好的功能,像用于处理用户界面(UI)的Android UI库,开发者可以利用它来创建各种精美的界面元素,如按钮、文本框、列表等。通过调用这些库中的类和方法,开发者可以节省大量的时间和精力,而不用从头开始编写复杂的底层代码。
    • 开发工具
      • Android Studio集成开发环境(IDE):这是开发Android应用的主要工具。它提供了代码编辑、编译、调试和打包等一系列功能。在Android Studio中,开发者可以方便地进行代码的编写,它有智能代码补全功能,能够根据上下文自动提示可能要输入的代码,提高开发效率。同时,它可以对代码进行语法检查,帮助开发者发现代码中的错误。
      • SDK Manager:这是一个用于管理Android SDK各个组件的工具。开发者可以通过它来下载和更新不同版本的Android系统平台(如Android 10、Android 11等对应的SDK版本)、各种硬件平台的支持库(如针对不同屏幕分辨率、不同芯片架构的库)。例如,如果开发者要开发一款需要支持折叠屏手机的应用,就可以通过SDK Manager下载相关的支持库来进行开发。
    • 文档
      • Android SDK提供了丰富的文档,包括API(Application Programming Interface)文档。这些文档详细说明了Android SDK中各种类、方法、接口的使用方式和功能。例如,当开发者想要使用某个特定的传感器(如加速度传感器)来开发一个运动检测应用时,就可以查阅API文档,了解如何在代码中获取传感器数据、如何处理数据以及相关的权限要求等内容。文档还包括开发指南,为开发者提供了从应用架构设计到具体功能实现等各个方面的指导。
    • 示例代码
      • 有许多示例代码帮助开发者快速上手。这些示例涵盖了各种应用场景,如简单的“Hello World”应用,展示了一个基本的Android应用的结构;还有像地图应用示例,演示了如何在Android应用中集成地图功能。开发者可以参考这些示例代码来学习Android开发的最佳实践,通过修改示例代码来快速构建自己的应用程序的雏形。
  3. 作用
    • 支持应用开发
      • 它是Android应用开发的基础。没有Android SDK,开发者很难为Android系统开发出功能完善的应用程序。通过使用SDK中的工具和资源,开发者可以轻松地创建出符合Android系统规范的应用,包括游戏、工具软件、社交应用等各种类型的应用。
    • 确保兼容性
      • 由于Android系统存在多个版本,并且运行在各种各样的硬件设备上,Android SDK可以帮助开发者确保他们的应用在不同的Android设备和系统版本上都能正常运行。例如,通过在开发过程中使用SDK提供的兼容性库,开发者可以让应用在较新和较旧的Android版本上都具有良好的用户体验。

Android Studio

Android Studio是谷歌于2013年5月16日在I/O大会上推出的一个Android集成开发工具,是一种基于IntelliJ IDEA的免费Android开发环境。以下是它的一些主要信息:

特点

  • 基于IntelliJ IDEA:继承了IntelliJ IDEA强大的代码编辑和分析功能,提供高级代码完成、重构和分析等功能。
  • 基于Gradle的构建支持:允许开发者方便地管理项目依赖和构建过程,能够灵活地定制构建脚本,生成不同的构建变体以适应各种需求。
  • 可视化布局编辑器:可以通过拖放控件来创建用户界面,并实时预览不同屏幕尺寸和设备上的布局效果。
  • 多语言支持:支持Kotlin、Java、C++等多种编程语言,开发者可根据项目需求选择。
  • 快速部署:支持快速将应用程序部署到模拟器或连接的设备上进行测试,提高开发效率。
  • 性能分析工具:提供Profiler和Energy Profiler等工具,帮助开发者分析应用程序的性能瓶颈和电量消耗情况。
  • 智能代码编辑:具有代码自动补全、语法检查、代码导航等功能,帮助开发者更高效地编写代码。

功能

  • 设计布局:使用布局编辑器创建和调整应用的用户界面布局,支持各种布局方式和约束条件。
  • 编写代码:在智能代码编辑器中编写Kotlin、Java或C++代码,享受代码自动补全、重构等功能。
  • 构建项目:通过Gradle构建系统,方便地管理项目的依赖关系和构建过程,生成APK或其他安装包。
  • 调试应用:利用内置的调试器,设置断点、查看变量值、跟踪程序执行路径等,快速定位和解决应用中的问题。
  • 性能优化:借助性能分析工具,分析应用的CPU、内存、网络等方面的性能,找出性能瓶颈并进行优化。
  • 测试应用:支持单元测试、集成测试等多种测试方式,确保应用的质量和稳定性。
  • 版本控制:与常见的版本控制系统(如Git、SVN等)集成,方便管理项目的版本和代码更新。

gradle

Gradle是一个强大的构建工具,它不仅仅用于Android开发,不过在Android开发领域有非常重要的地位。

  1. 在Android开发中的角色

    • 项目构建自动化:Gradle用于自动化构建Android项目,它可以将源代码、资源文件、依赖库等各种文件组合在一起,生成最终的APK(Android应用安装包)。例如,当开发者在Android Studio中点击“Build”或“Run”按钮时,Gradle就会在后台执行一系列的任务来构建和打包应用。
    • 依赖管理:Gradle能够有效地管理项目的依赖关系。在Android开发中,应用通常会依赖于许多外部库,如用于网络请求的Retrofit、用于图像处理的Glide等。Gradle允许开发者通过简单的配置文件(通常是build.gradle)声明这些依赖,然后自动下载并添加到项目中。例如,在build.gradle文件中可以这样添加Retrofit依赖:
    dependencies {implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    }
    
    • 构建变体支持:它支持构建变体,这对于Android开发非常有用。可以根据不同的需求创建不同的构建变体,如开发版本、测试版本和发布版本。这些变体可以有不同的应用图标、应用名称、API端点等。例如,在开发阶段,可以使用一个指向测试服务器的API端点来获取数据,而在发布版本中,可以切换到正式的生产服务器端点。Gradle通过配置build.gradle文件来实现这种构建变体的管理。
  2. 与Android Studio的集成

    • Android Studio默认使用Gradle来构建Android项目。在新建一个Android项目时,Android Studio会自动生成build.gradle文件和相关的Gradle配置。开发者可以在Android Studio的“Gradle”面板中查看和管理Gradle任务,这个面板通常位于Android Studio界面的右侧。例如,通过Gradle面板可以执行清理项目(clean任务)、构建调试版本(assembleDebug任务)或构建发布版本(assembleRelease任务)等操作。
  3. Gradle的优势

    • 灵活性:Gradle的构建脚本是基于Groovy或Kotlin DSL(Domain - Specific Language)编写的,这使得构建脚本具有很高的灵活性。开发者可以根据项目的具体需求自定义构建过程,例如添加自定义的构建任务来进行代码混淆、资源压缩等操作。
    • 性能:Gradle采用了增量构建(incremental build)的方式,它只会重新构建那些发生变化的部分,从而节省了构建时间。例如,如果只是修改了一个Java类中的代码,Gradle在下次构建时不会重新编译所有的代码,而是只编译这个修改的类和与之相关的部分。
  4. Gradle的应用范围扩展

    • 虽然在Android开发中广为人知,但Gradle本身是一个通用的构建工具,它还可以用于构建Java项目、Kotlin项目、Groovy项目等。在其他类型的项目中,Gradle同样可以进行依赖管理、构建任务自动化等操作,只是具体的配置和应用场景会有所不同。

9 Patch图片

9 Patch图片(也称为点九图,文件扩展名为.9.png)是Android平台上一种特殊的图片格式,主要用于在不同屏幕尺寸和分辨率下保持图片的拉伸和显示效果。以下是关于9 Patch图片的详细介绍:

1. 作用和用途

  • 自适应拉伸:普通的图片在拉伸时可能会出现变形或失真的情况,而9 Patch图片通过特殊的标记,指定了图片哪些部分可以拉伸,哪些部分需要保持不变,从而在不同尺寸的屏幕上都能保持良好的显示效果。
  • 背景和边框:常用于制作按钮、对话框、列表项等UI元素的背景,确保在不同设备上这些元素的边框、圆角等细节不会因为拉伸而变形。

2. 创建9 Patch图片

  • 使用Android Studio自带的工具

    • 打开Android Studio,在项目的res目录下找到或创建一个drawable文件夹,将需要制作成9 Patch图片的普通PNG图片复制到该文件夹中。
    • 右键点击该PNG图片,选择Create 9-Patch file...
    • 会弹出一个9 Patch编辑窗口,在图片的四周会有一些黑色的边框和控制点。
    • 左边和上边的边框用于定义拉伸区域,右边和下边的边框用于定义内容区域。通过点击和拖动这些边框,可以指定图片的拉伸和内容区域。
    • 拉伸区域:在左边和上边的边框上点击,会出现黑色的点或线段,这些区域表示图片在拉伸时可以被拉伸的部分。
    • 内容区域:在右边和下边的边框上点击,会出现黑色的点或线段,这些区域表示图片中需要显示内容的部分,例如文字或图标,在拉伸图片时,这部分区域会保持相对位置不变。
    • 编辑完成后,点击Save保存9 Patch图片,文件扩展名为.9.png
  • 使用其他工具
    除了Android Studio自带的工具,还有一些第三方工具可以创建9 Patch图片,如draw9patch工具。

3. 在布局文件中使用9 Patch图片

在布局文件(如activity_main.xml)中,可以像使用普通图片一样使用9 Patch图片作为背景或其他视图的资源。例如:

<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Click me"android:background="@drawable/my_9patch_button" />

这里的@drawable/my_9patch_button就是指向之前创建的9 Patch图片资源。

4. 注意事项

  • 图片质量:制作9 Patch图片的原始PNG图片质量要高,避免在拉伸时出现模糊或锯齿现象。
  • 测试不同设备:由于不同设备的屏幕尺寸和分辨率差异较大,制作好9 Patch图片后,需要在多种设备上进行测试,确保显示效果符合预期。
  • 内容区域的设置:正确设置内容区域非常重要,否则可能会导致图片中的文字或图标被裁剪或显示位置不正确。

mipmap子目录

在这里插入图片描述
不同的图标目录

AVD

Android 虚拟设备(Android Virtual Device)

用途:是 Android 开发中用于模拟真实 Android 设备的虚拟环境,开发者可以在 AVD 上安装和测试 Android 应用程序,而无需实际的物理设备

创建与配置:需要确保 CPU 支持虚拟化(如 VT-x 或 AMD-V),拥有至少 8GB 内存和 20GB 空闲磁盘空间。通过下载并安装包含 Android 模拟器的 Android Studio,在安装过程中选择 Android 模拟器组件,然后利用 SDK Manager 下载必要的工具来创建和配置 AVD。

相关文章:

Android开发入门

文章目录 JetBrains历史沿革主营业务 KotlinSDKAndroid Studio特点功能 gradle9 Patch图片1. 作用和用途2. 创建9 Patch图片3. 在布局文件中使用9 Patch图片4. 注意事项 mipmap子目录AVD JetBrains JetBrains是一家成立于2000年的捷克软件开发公司&#xff0c;总部位于布拉格&…...

深度学习在金融风控中的应用:突破传统模型的瓶颈

深度学习在金融风控中的应用:突破传统模型的瓶颈 金融风险控制(简称“风控”)是现代金融体系中至关重要的一环,关系到金融机构的稳定性、客户的安全以及整体经济的健康运行。近年来,随着深度学习的迅猛发展,传统的风控模型正面临被颠覆的挑战,新的技术手段和思维方式正…...

Vim安装与配置教程(解决软件包Vim没有安装可候选)

Vim安装与配置教程&#xff08;解决软件包Vim没有安装可候选&#xff09;_软件包 vim 没有可安装候选-CSDN博客文章浏览阅读4.4k次&#xff0c;点赞70次&#xff0c;收藏47次。在Linux系统中&#xff0c;当我们使用apt-get install vim命令安装Vim 编辑器时&#xff0c;如果系统…...

探索AI(chatgpt、文心一言、kimi等)提示词的奥秘

大家好&#xff0c;我是老六哥&#xff0c;我正在共享使用AI提高工作效率的技巧。欢迎关注我&#xff0c;共同提高使用AI的技能&#xff0c;让AI成功你的个人助理。 "AI提示词究竟是什么&#xff1f;" 这是许多初学者在接触AI时的共同疑问。 "我阅读了大量关于…...

深入MapReduce——从MRv1到Yarn

引入 我们前面篇章有提到&#xff0c;和MapReduce的论文不太一样。在Hadoop1.0实现里&#xff0c;每一个MapReduce的任务并没有一个独立的master进程&#xff0c;而是直接让调度系统承担了所有的worker 的master 的角色&#xff0c;这就是Hadoop1.0里的 JobTracker。在Hadoop1…...

线段树 算法

文章目录 基础知识适用场景小结 题目概述题目详解300.最长递增子序列2407.最长递增子序列 II 基础知识 线段树和树状数组都只是一个工具来的&#xff0c;题目并不会一下子就告诉你这个题目用到线段树和树状数组&#xff0c;这个取决于你想使用的数据结构以及所要优化的方向 线…...

Redis实战(黑马点评)——redis存储地理信息、位图、HyperLogLog 用法

Redis存储geo数据类型基本介绍 geo 就是 geolocation 的简写形式&#xff0c;代表地理坐标。redis 在 3.2 版本中加入了对 geo 的支持&#xff0c;允许存储地理坐标信息&#xff0c;帮助我们根据经纬度来检索数据。常见的命令有&#xff1a; geoadd&#xff1a;添加一个地理空…...

Flutter_学习记录_基本组件的使用记录

1.TextWidge的常用属性 1.1TextAlign: 文本对齐属性 常用的样式有&#xff1a; TextAlign.center 居中TextAlign.left 左对齐TextAlign.right 有对齐 使用案例&#xff1a; body: Center(child: Text(开启 TextWidget 的旅程吧&#xff0c;珠珠, 开启 TextWidget 的旅程吧&a…...

C语言实现统计数组正负元素相关数据

在编程的世界里&#xff0c;对数组中元素的统计分析是常见的需求。今天&#xff0c;我们就来探讨一段用C语言实现的代码&#xff0c;它能统计数组中负数的个数以及正数的平均值。 代码功能概述 这段C语言代码的主要功能是&#xff1a;首先从用户处获取一个整数 n &#xff0c;用…...

AJAX RSS Reader:技术解析与应用场景

AJAX RSS Reader:技术解析与应用场景 引言 随着互联网的快速发展,信息量呈爆炸式增长。为了方便用户快速获取感兴趣的信息,RSS(Really Simple Syndication)技术应运而生。AJAX RSS Reader作为一种基于AJAX技术的信息读取工具,在用户体验和信息获取方面具有显著优势。本…...

使用openwrt搭建ipsec隧道

背景&#xff1a;最近同事遇到了个ipsec问题&#xff0c;做的ipsec特性&#xff0c;ftp下载ipv6性能只有100kb, 正面定位该问题也蛮久了&#xff0c;项目没有用openwrt, 不过用了开源组件strongswan, 加密算法这些也是内核自带的&#xff0c;想着开源的不太可能有问题&#xff…...

将5分钟安装Thingsboard 脚本升级到 3.9

稍微花了一点时间&#xff0c;将5分钟安装Thingsboard 脚本升级到最新版本 3.9。 [rootlab5 work]# cat one-thingsboard.shell echo "test on RHEL 8.10 " source /work/java/install-java.shell source /work/thingsboard/thingsboard-rpm.shell source /work/po…...

Linux---架构概览

一、Linux 架构分层的深度解析 1. 用户空间&#xff08;User Space&#xff09; 用户空间是应用程序运行的环境&#xff0c;与内核空间隔离&#xff0c;确保系统稳定性。 应用程序层&#xff1a; 用户程序&#xff1a;如 edge、vim&#xff0c;通过调用标准库&#xff08;如 …...

dnf妖气追踪找门方案

第一种 跟之前一样还是确定boss的 位置,但是妖气追踪有几个boss位置重复的思路就是分两大类第一类就是boss位置不一样的,第二类在boss位置一样的大类 下面再分一一个小类, 这个小类就是boss位置重复的下面判断 第一个门蓝色人的位置 来确定后面门的路线还有一种情况就是在选择…...

【C语言练习题】整数和实数在计算机中的二进制表示

1. 请写出下列十进制整数在计算机中的二进制存储形式&#xff08;假设为16位整数&#xff09;&#xff1a; 32767&#xff1a; -1&#xff1a; 32768&#xff1a; -2&#xff1a; 答案&#xff1a; 0111111111111111 1111111111111111 1000000000000000 1111111111111110 解…...

OSCP:Windows 服务提权详解

在Windows操作系统中&#xff0c;服务是一种特殊的后台进程&#xff0c;它们通常以较高的权限&#xff08;如 SYSTEM 或 Administrator&#xff09;运行。攻击者可以通过控制服务的创建、配置或运行过程实现权限提升&#xff08;提权&#xff09;。本文将详细分析Windows服务提…...

寻找两个正序数组的中位数:分治法与二分查找的结合

寻找两个正序数组的中位数&#xff1a;分治法与二分查找的结合 在算法领域&#xff0c;“寻找两个正序数组的中位数” 是一道经典的高频面试题&#xff08;LeetCode 第 4 题&#xff09;。它不仅考察基本的数组操作&#xff0c;还涉及二分查找与分治思想的结合。今天&#xff…...

Python-基于PyQt5,json和playsound的通用闹钟

前言&#xff1a;刚刚结束2024年秋季学期的学习&#xff0c;接下来我们继续来学习PyQt5。由于之前我们已经学习了PyQt5以及PyUIC,Pyrcc和QtDesigner的安装&#xff0c;配置。所以接下来我们一起深入PyQt5&#xff0c;学习如何利用PyQt5进行实际开发-基于PyQt5&#xff0c;json和…...

51单片机开发:定时器中断

目标&#xff1a;利用定时器中断&#xff0c;每隔1s开启/熄灭LED1灯。 外部中断结构图如下图所示&#xff0c;要使用定时器中断T0&#xff0c;须开启TE0、ET0。&#xff1a; 系统中断号如下图所示&#xff1a;定时器0的中断号为1。 定时器0的工作方式1原理图如下图所示&#x…...

循序渐进kubernetes-RBAC(Role-Based Access Control)

文章目录 概要Kubernetes API了解 Kubernetes 中的 RBACRoles and Role Bindings:ClusterRoles and ClusterRoleBindings检查访问权限&#xff1a;外部用户结论 概要 Kubernetes 是容器化应用的强大引擎&#xff0c;但仅仅关注部署和扩展远远不够&#xff0c;集群的安全同样至…...

在Scene里面绘制编辑工具

功能要求 策划要在scene模式下编辑棋子摆放。用handle.GUI绘制来解决了。 问题 在scene模式下编辑产生的数据&#xff0c;进入游戏模式后就全不见了。改为executeAlways也没用。我的解决办法是把编辑数据序列化保存到本地。在OnEnable的时候再读取。但是我忽然想到&#xff…...

深入探索 Vue 3 Markdown 编辑器:高级功能与实现

目录 1. 为什么选择 Markdown 编辑器&#xff1f;2. 选择合适的 Markdown 编辑器3. 安装与基本配置安装 配置 Markdown 编辑器代码说明 4. 高级功能实现4.1 实时预览与双向绑定4.2 插入图片和图像上传安装图像上传插件配置图像上传插件 4.3 数学公式支持安装 KaTeX配置 KaTeX 插…...

动手学图神经网络(3):利用图神经网络进行节点分类 从理论到实践

利用图神经网络进行节点分类:从理论到实践 前言 在之前的学习中,大家对图神经网络有了初步的了解。本次教程将深入探讨如何运用图神经网络(GNNs)来解决节点分类问题。在节点分类任务里,大家往往仅掌握少量节点的真实标签,却要推断出其余所有节点的标签,这属于归纳式学…...

具身智能研究报告

参考&#xff1a; &#xff08;1&#xff09;GTC大会&Figure&#xff1a;“具身智能”奇点已至 &#xff08;2&#xff09;2024中国具身智能创投报告 &#xff08;3&#xff09;2024年具身智能产业发展研究报告 &#xff08;4&#xff09;具身智能行业深度&#xff1a;发展…...

LabVIEW春节快乐

尊敬的LabVIEW开发者与用户朋友们&#xff1a; 灵蛇舞动辞旧岁&#xff0c;春风送暖贺新年&#xff01;值此癸巳蛇年新春佳节来临之际&#xff0c;向每一位深耕LabVIEW开发领域的伙伴致以最诚挚的祝福&#xff1a;愿您与家人在新的一年里平安顺遂、阖家幸福&#xff0c;事业如…...

MybatisX插件快速创建项目

一、安装插件 二、创建一个数据表测试 三、IDEA连接Mysql数据库 四、选择MybatiX构造器 五、配置参数 六、项目结构...

技术周总结 01.13~01.19 周日(Spring Visual Studio git)

文章目录 一、01.14 周二1.1&#xff09;问题01&#xff1a;Spring的org.springframework.statemachine.StateMachine 是什么&#xff0c;怎么使用&#xff1f;:如何使用StateMachine&#xff1a; 1.2&#xff09;问题02&#xff1a;Spring StateMachine 提供了一系列高级特性 …...

【C++】List的模拟实现

文章目录 1.ListNode 结构体2.List成员变量与typedef3.迭代器iterator4.begin()、end()、size()、empty()、构造函数5. insert()、erase()6.push_back()、pop_back()、push_front()、pop_front()7.拷贝构造、赋值、析构8.总代码 以后有时间会更新其它成员函数 1.ListNode 结构…...

剑指 Offer II 002. 二进制加法

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20002.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%8A%A0%E6%B3%95/README.md 剑指 Offer II 002. 二进制加法 题目描述 给定两个 01 字符串 a 和 b &#xff0c;请计算…...

(15)基于状态方程的单相自耦变压器建模仿真

1. 引言 2. 单相降压自耦变压器的状态方程 3. 单相降压自耦变压器的simulink仿真模型 4. 实例仿真 5. 总结 1. 引言 自耦变压器的原边和副边之间存在直接的电气连接,所以功率是通过感应和传导从原边转移到副边的,这与双绕组变压器不同,后者的原边和副边是电气隔离的。从…...

03.01、三合一

03.01、[简单] 三合一 1、题目描述 三合一。描述如何只用一个数组来实现三个栈。 你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标&#xff0c;value表示压入的值。 构造函数会传入一个stackSize参数&#xf…...

.git/hooks/post-merge 文件的作用

.git/hooks/post-merge 文件是 Git 版本控制系统中的一个钩子&#xff08;hook&#xff09;脚本&#xff0c;其作用是在合并&#xff08;merge&#xff09;操作完成后自动执行一些特定的操作。以下是关于 .git/hooks/post-merge 文件作用的详细解释&#xff1a; 作用 自动化任…...

SpringBoot项目创建

一、创建新的工程 二、配置pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http…...

评估训练模型所需的算力

1.模型规模(核心因素) 1.1 参数量决定算力下限: 10亿参数模型:需约1-10 PetaFLOP/s-days(等效1万亿次浮点运算持续1天) 千亿参数(如GPT-3):约3,000-5,000 PetaFLOP/s-days 万亿参数模型:超过50,000 PetaFLOP/s-days 1.2 显存需求公式: 显存(GB) ≈ (参数量 20 by…...

Tez 0.10.1安装

个人博客地址&#xff1a;Tez 0.10.1安装 | 一张假钞的真实世界 具体安装步骤参照官网安装手册即可。此处只对官网手册进行补充。 从官网下载apache-tez-0.10.1-bin.tar.gz进行安装未成功&#xff0c;出现下面的异常。最终按照官网源代码编译的方式安装测试成功。 环境 Had…...

代码随想录算法训练营第三十八天-动态规划-完全背包-139.单词拆分

类似于回溯算法中的拆分回文串题目是要求拆分字符串&#xff0c;问这些字符串是否出现在字典里。但这道题可以反着来考虑&#xff0c;从字典中的单词能不能组成所给定的字符串 如果这样考虑&#xff0c; 这个字符串就背包&#xff0c;容器字典中的单词就是一个一个物品问题就转…...

selenium clear()方法清除文本框内容

在使用Selenium进行Web自动化测试时&#xff0c;清除文本框内容是一个常见的需求。这可以通过多种方式实现&#xff0c;取决于你使用的是哪种编程语言&#xff08;如Python、Java等&#xff09;以及你的具体需求。以下是一些常见的方法&#xff1a; 1. 使用clear()方法 clear…...

新增文章功能

总说 过程参考黑马程序员SpringBoot3Vue3全套视频教程&#xff0c;springbootvue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili 之前又偷懒几天。回老家没事干&#xff0c;玩也玩不好&#xff0c;一玩老是被家里人说。写代码吧还是&#xff0c;他们都看不懂&a…...

【设计测试用例自动化测试性能测试 实战篇】

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a; c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 设计测试用例…...

【算法与数据结构】动态规划

目录 基本概念 最长递增子序列&#xff08;中等&#xff09; 最大子数组和&#xff08;中等&#xff09; 基本概念 重叠子问题 一个问题可以被分解为多个子问题&#xff0c;并且这些子问题在求解过程中会被多次重复计算。例如&#xff0c;在计算斐波那契数列时&#xff0c;…...

扣子平台音频功能:让声音也能“智能”起来。扣子免费系列教程(14)

在数字化时代&#xff0c;音频内容的重要性不言而喻。无论是在线课程、有声读物&#xff0c;还是各种多媒体应用&#xff0c;音频都是传递信息、增强体验的关键元素。扣子平台的音频功能&#xff0c;为开发者和内容创作者提供了一个强大而灵活的工具&#xff0c;让音频的使用和…...

【CS61A 2024秋】Python入门课,全过程记录P4(Week7 Generators开始,更新于2025/1/29)

文章目录 关于基本介绍&#x1f44b;新的问题更好的解决方案Week7Mon Generators阅读材料Lab 05: Iterators, MutabilityQ1: WWPD: List-MutationQ2: Insert Items 关于 个人博客&#xff0c;里面偶尔更新&#xff0c;最近比较忙。发一些总结的帖子和思考。 江湖有缘相见&…...

JUC--ConcurrentHashMap底层原理

ConcurrentHashMap底层原理 ConcurrentHashMapJDK1.7底层结构线程安全底层具体实现 JDK1.8底层结构线程安全底层具体实现 总结JDK 1.7 和 JDK 1.8实现有什么不同&#xff1f;ConcurrentHashMap 中的 CAS 应用 ConcurrentHashMap ConcurrentHashMap 是一种线程安全的高效Map集合…...

【Linux网络编程】网络层说明

目录 前言&#xff1a; 1&#xff0c;网络层介绍 2&#xff0c;IP协议 3&#xff0c;IP协议的格式 4&#xff0c;网段划分 5&#xff0c;特殊的IP地址 6&#xff0c;私有IP地址和公网IP地址 前言&#xff1a; 网络层对于程序员来说不太重要&#xff0c;这方面知识大致了…...

002-基于Halcon的图像几何变换

本节将简要介绍Halcon中有关图像几何变换的基本算子及其应用&#xff0c;主要涉及五种常见的二维几何变换形式&#xff1a;平移、镜像、旋转、错切和放缩。这几种变换可归结为一类更高级更抽象的空间变换类型&#xff0c;即仿射变换&#xff08;Affine transformation&#xff…...

unity学习22:Application类其他功能

目录 1 是否允许后台运行 1.1 Application.runInBackground&#xff0c;显示是否允许后台运行 1.2 设置的地方 2 打开URL 2.1 Application.OpenURL("") 打开超链接 3 退出游戏 3.1 Application.Quit() 退出游戏 4 场景相关 5 返回游戏状态 6 控制游戏的行…...

配置cursor进行Java springboot项目开发

本文用于记录如何配置cursor进行Java SpringBoot项目开发&#xff0c;因为项目团队同事基本都是在使用idea开发工具&#xff0c;所以在尝试cursor新ide的时候发现还是有一些小坑要处理一下的。 首先为了后续在多个不同的java项目之间进行切换的时候不想翻来覆去的总配置指定jdk…...

ChirpIoT技术的优势以及局限性

ChirpIoT是一种由上海磐启微电子开发的国产无线射频通讯技术&#xff0c;ChirpIoT技术基于磐启多年对雷达等线性扩频信号的深入研究&#xff0c;并在此基础上对线性扩频信号的变化进行了改进&#xff0c;实现了远距离传输的一种无线通信技术。相关产品型号有E29-400T22D、E290-…...

ODP(OBProxy)路由初探

OBProxy路由策略 Primary Zone 路由 官方声明默认情况&#xff0c;会将租户请求发送到租户的 primary zone 所在的机器上&#xff0c;通过 Primary Zone 路由可以尽量发往主副本&#xff0c;方便快速寻找 Leader 副本。另外&#xff0c;设置primary zone 也会在一定成都上减少…...

【25考研】人大计算机考研复试该怎么准备?有哪些注意事项?

人大毕竟是老牌985&#xff0c;复试难度不会太低&#xff01;建议同学认真复习&#xff01;没有机试还是轻松一些的&#xff01; 一、复试内容 由公告可见&#xff0c;复试包含笔试及面试&#xff0c;没有机试&#xff01; 二、参考书目 官方无给出参考书目&#xff0c;可参照…...