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

ScrollView(滚动视图)详解和按钮点击事件

在这里插入图片描述

文章目录

  • **ScrollView(滚动视图)详解**
    • **1. 核心特性**
    • **2. 基本用法**
      • **XML 示例:简单滚动布局**
    • **3. 水平滚动:HorizontalScrollView**
    • **4. 高级用法**
      • **(1) 嵌套滚动控件**
      • **(2) 动态添加内容**
      • **(3) 监听滚动事件**
    • **5. 注意事项**
    • **6. 总结**
  • Android三种onClick实现方式详细对比
    • 第一种方式:静态内部类 + 传递View参数
      • 实现代码
      • 特点与优劣
    • 第二种方式:非静态内部类(示例代码有误,应为非静态)
      • 修正后的实现代码
      • 特点与优劣
    • 第三种方式:Activity实现接口
      • 实现代码
      • 特点与优劣
    • 综合对比表
    • 实际开发建议

在这里插入图片描述

ScrollView(滚动视图)详解

ScrollView 是 Android 中用于实现垂直滚动的布局容器,允许内容超出屏幕时通过滑动查看。它只能包含一个直接子控件(通常是一个 LinearLayoutRelativeLayout)。


1. 核心特性

  • 垂直滚动:默认只支持垂直方向滚动(水平滚动需用 HorizontalScrollView)。
  • 单子控件限制:只能有一个直接子 View(但子 View 可以包含多个子控件)。
  • 无复杂布局逻辑:仅提供滚动功能,不参与子 View 的排列。
  • 嵌套滚动:可与 RecyclerViewListView 等嵌套使用(需注意性能问题)。

2. 基本用法

XML 示例:简单滚动布局

<ScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:fillViewport="true">  <!-- 确保内容填满屏幕 --><!-- 只能有一个直接子 View --><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><!-- 多个子控件 --><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Title"android:textSize="24sp" /><ImageViewandroid:layout_width="match_parent"android:layout_height="300dp"android:src="@drawable/large_image" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Submit" /></LinearLayout>
</ScrollView>

关键属性

  • android:fillViewport="true":强制内容填满屏幕(即使内容不足)。

3. 水平滚动:HorizontalScrollView

如果需要水平滚动,使用 HorizontalScrollView

<HorizontalScrollViewandroid:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:orientation="horizontal"><!-- 多个水平排列的子控件 --><Button android:text="Button 1" /><Button android:text="Button 2" /><Button android:text="Button 3" /></LinearLayout>
</HorizontalScrollView>

4. 高级用法

(1) 嵌套滚动控件

ScrollView 可以嵌套 RecyclerView/ListView,但需禁用内部滚动以避免冲突:

recyclerView.isNestedScrollingEnabled = false  // Kotlin
// 或
recyclerView.setNestedScrollingEnabled(false); // Java

(2) 动态添加内容

val scrollView = findViewById<ScrollView>(R.id.scroll_view)
val linearLayout = LinearLayout(this).apply {orientation = LinearLayout.VERTICAL
}// 动态添加子 View
repeat(20) {val textView = TextView(this).apply {text = "Item $it"setPadding(16.dpToPx(), 16.dpToPx(), 16.dpToPx(), 16.dpToPx())}linearLayout.addView(textView)
}scrollView.addView(linearLayout)

(3) 监听滚动事件

scrollView.viewTreeObserver.addOnScrollChangedListener {val isAtBottom = scrollView.getChildAt(0).bottom <= (scrollView.height + scrollView.scrollY)if (isAtBottom) {Toast.makeText(this, "Reached bottom!", Toast.LENGTH_SHORT).show()}
}

5. 注意事项

  1. 性能优化

    • 避免嵌套过多 ScrollView(尤其是包含 RecyclerView)。
    • 长列表建议直接用 RecyclerView(自带滚动和复用机制)。
  2. 常见问题

    • 内容不显示:检查子 View 的高度是否为 wrap_content
    • 滚动冲突:嵌套 RecyclerView 时禁用内部滚动。
  3. RecyclerView 对比

    特性ScrollViewRecyclerView
    滚动方向仅垂直/水平双向自由滚动
    复用机制无(所有子 View 同时加载)有(高效复用)
    适用场景简单内容滚动长列表/网格

6. 总结

  • ScrollView:简单实现垂直滚动,适合内容较少的页面。
  • HorizontalScrollView:实现水平滚动。
  • 关键技巧
    • 使用 fillViewport="true" 填满屏幕。
    • 嵌套滚动控件时注意性能问题。
    • 动态内容需通过代码添加。

示例场景:注册表单、长文章、设置页面等需要滚动的界面。


Android三种onClick实现方式详细对比

第一种方式:静态内部类 + 传递View参数

实现代码

Button btn_toMain2 = findViewById(R.id.btn_toMain2);
btn_toMain2.setOnClickListener(new staticMyOnClickListener(tv_hello));static class staticMyOnClickListener implements View.OnClickListener{private final TextView tv_hello;public staticMyOnClickListener(TextView tv_hello) {this.tv_hello = tv_hello;}@Overridepublic void onClick(View view) {tv_hello.setTextColor(0xFFFF0000);}
}

特点与优劣

优点:

  1. 内存安全:使用静态内部类,不会隐式持有外部Activity的引用
  2. 职责明确:点击逻辑封装在独立类中,符合单一职责原则
  3. 可复用:可以在多个地方复用同一个ClickListener

缺点:

  1. 代码量较多:需要单独定义类
  2. 参数传递麻烦:如果需要访问多个Activity成员,需要全部通过构造函数传递
  3. 不够灵活:修改TextView需要重新创建实例

适用场景

  • 处理相对独立、简单的点击逻辑
  • 需要复用点击逻辑的情况
  • 对内存安全性要求较高的场景

第二种方式:非静态内部类(示例代码有误,应为非静态)

修正后的实现代码

Button btn_toMain3 = findViewById(R.id.btn_toMain3);
btn_toMain3.setOnClickListener(new MyOnClickListener());class MyOnClickListener implements View.OnClickListener{@Overridepublic void onClick(View view) {// 可以直接访问Activity成员tv_hello.setTextColor(0xFFFF0000);}
}

特点与优劣

优点:

  1. 访问方便:可以直接访问外部Activity的所有成员
  2. 代码简洁:不需要传递参数
  3. 实现简单:适合快速开发

缺点:

  1. 内存泄漏风险:非静态内部类隐式持有Activity引用,如果被长生命周期对象持有会导致内存泄漏
  2. 复用性差:与特定Activity强耦合,难以复用

适用场景

  • 简单的临时点击处理
  • 确定生命周期短、不会被外部持有的情况
  • 需要频繁访问Activity成员的场景

第三种方式:Activity实现接口

实现代码

public class MainActivity extends AppCompatActivity implements View.OnClickListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btn_toMain5 = findViewById(R.id.btn_toMain5);btn_toMain5.setOnClickListener(this);}@Overridepublic void onClick(View view) {if(view.getId() == R.id.btn_toMain5){Intent intent = new Intent();intent.setClass(this, MainActivity5.class);startActivity(intent);}}
}

特点与优劣

优点:

  1. 代码集中:所有点击逻辑在一个方法中,便于管理
  2. 内存安全:不会造成内存泄漏
  3. 适合多控件:适合处理多个控件的点击事件
  4. 简洁:不需要额外定义类

缺点:

  1. 方法易膨胀:当控件多时,onClick方法会变得庞大
  2. 耦合度高:点击逻辑与Activity强耦合
  3. 可读性下降:大量if-else或switch-case降低可读性

适用场景

  • 处理少量控件的点击事件
  • 需要快速实现点击功能的场景
  • 点击逻辑相对简单的应用

综合对比表

特性静态内部类非静态内部类Activity实现接口
内存安全性低(有泄漏风险)
代码量中等
复用性
访问Activity成员需显式传递直接访问直接访问
适合控件数量单个/少量单个/少量多个
代码组织分散分散集中
推荐程度★★★★☆★★☆☆☆★★★☆☆

实际开发建议

  1. 优先考虑Lambda表达式(Java 8+):

    button.setOnClickListener(v -> {// 处理点击
    });
    

    简洁且内存安全,适合简单逻辑

  2. 复杂逻辑使用静态内部类

    • 特别是需要复用的场景
    • 或者点击逻辑较复杂需要单独封装的
  3. 避免使用非静态内部类

    • 除非能确保不会造成内存泄漏
    • 或者点击逻辑生命周期与Activity完全一致
  4. Activity实现接口适合

    • 小型项目或快速原型开发
    • 点击逻辑简单且控件不多的情况
  5. 对于大型项目

    • 考虑使用ViewBinding或DataBinding
    • 或者采用MVVM模式,将点击逻辑放在ViewModel中

相关文章:

ScrollView(滚动视图)详解和按钮点击事件

文章目录 **ScrollView&#xff08;滚动视图&#xff09;详解****1. 核心特性****2. 基本用法****XML 示例&#xff1a;简单滚动布局** **3. 水平滚动&#xff1a;HorizontalScrollView****4. 高级用法****(1) 嵌套滚动控件****(2) 动态添加内容****(3) 监听滚动事件** **5. 注…...

2025年3月,再上中科院1区TOP,“等级熵+状态识别、故障诊断”

引言 2025年3月&#xff0c;研究者在国际机械领域顶级期刊《Mechanical Systems and Signal Processing》&#xff08;JCR 1区&#xff0c;中科院1区 Top&#xff0c;IF&#xff1a;7.9&#xff09;上以“Rating entropy and its multivariate version”为题发表科学研究成果。…...

根据pdf文档生成问答并进行评估

目标是根据pdf文档生成问答&#xff0c;并进行评估。 首先&#xff0c;安装依赖 pip install PyPDF2 pandas tqdm openai -q 具体过程如下&#xff1a; 1、将pdf放在opeai_blog_pdfs目录下&#xff0c;引用依赖 2、上传pdf文件&#xff0c;创建向量库 3、单个提问的向量检索…...

计算机网络 - 四次挥手相关问题

通过一些问题来讨论 TCP 的四次挥手断开连接 说一下四次挥手的过程&#xff1f;为什么需要四次呢&#xff1f;time-wait干嘛的&#xff0c;close-wait干嘛的&#xff0c;在哪一个阶段&#xff1f;状态CLOSE_WAIT在什么时候转换成下一个状态呢&#xff1f;为什么 TIME-WAIT 状态…...

SLAM | 两组时间戳不同但同时开始的imu如何对齐

场景&#xff1a; 两个手机在支架上&#xff0c;同时开始采集数据 需求&#xff1a; 对齐两个数据集的imu数据 做到A图片 B imu 做法&#xff1a; 取出来两组imu数据到excel表中&#xff0c;画图 A组 B组&#xff1a; x轴 &#xff1a; 所有imu的时间戳减去第一个时间…...

code review时线程池的使用

一、多线程的作用 多个任务并行执行可以提升效率异步&#xff0c;让与主业务无关的逻辑异步执行&#xff0c;不阻塞主业务 二、问题描述 insertSelective()方法是一个并发度比较高的业务&#xff0c;主要是插入task到任务表里&#xff0c;新建task&#xff0c;并且insertSele…...

物流网络暗战升级DHL新布局将如何影响eBay卖家库存分布策略?

物流网络暗战升级&#xff1a;DHL新布局将如何影响eBay卖家库存分布策略&#xff1f; 跨境电商发展迅猛&#xff0c;卖家对物流的依赖程度不言而喻。尤其是平台型卖家&#xff0c;例如在eBay上经营多站点的卖家&#xff0c;物流成本和时效几乎直接决定了利润空间与客户满意度。…...

JAMA Netw. Open:机器学习解码大脑:精准预测PTSD症状新突破

创伤后应激障碍&#xff08;PTSD&#xff09;是一种常见的心理健康状况&#xff0c;它可以在人们经历或目睹创伤性事件&#xff08;如战争、严重事故、自然灾害、暴力攻击等&#xff09;后发展。PTSD的症状可能包括 flashbacks&#xff08;闪回&#xff09;、噩梦、严重的焦虑、…...

域控制器升级的先决条件验证失败,证书服务器已安装

出现“证书服务器已安装”导致域控制器升级失败时&#xff0c;核心解决方法是卸载已安装的证书服务‌。具体操作如下&#xff1a;‌ ‌卸载证书服务‌ 以管理员身份打开PowerShell&#xff0c;执行命令&#xff1a; Remove-WindowsFeature -Name AD-Certificate该命令会移除A…...

Node.js入门

Node.js入门 html,css,js 30年了 nodejs环境 09年出现 15年 nodejs为我们解决了2个方面的问题&#xff1a; 【锦上添花】让我们前端工程师拥有了后端开发能力&#xff08;开接口&#xff0c;访问数据库&#xff09; - 大公司BFF&#xff08;50&#xff09;【✔️】前端工程…...

使用CubeMX新建EXTI外部中断工程——不使用回调函数

具体的使用CubeMX新建工程的步骤看这里&#xff1a;STM32CubeMX学习笔记&#xff08;3&#xff09;——EXTI(外部中断)接口使用_cubemx exti-CSDN博客 之前一直都是在看野火的视频没有亲手使用CubeMX生成工程&#xff0c;而且野火给的例程代码框架和自动生成的框架也不一样&…...

Verilog的整数除法

1、可变系数除法实现----利用除法的本质 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2025/04/15 13:45:39 // Design Name: // Module Name: divide_1 // Project Name: // Target Devices: // Tool Versions: // Description: // // Depe…...

win32汇编环境,网络编程入门之十九

;win32汇编环境,网络编程入门之十九 ;在这一编程里&#xff0c;我们学习一下如何使用gethostbyname函数&#xff0c;也顺便学一下如何将C定义的函数在WIN32汇编环境中使用 ;先看一下官方解释&#xff1a;从主机数据库中检索与主机名对应的主机信息。 ;它的原理是从你的电脑DNS中…...

Java学习手册:Java线程安全与同步机制

在Java并发编程中&#xff0c;线程安全和同步机制是确保程序正确性和数据一致性的关键。当多个线程同时访问共享资源时&#xff0c;如果不加以控制&#xff0c;可能会导致数据不一致、竞态条件等问题。本文将深入探讨Java中的线程安全问题以及解决这些问题的同步机制。 线程安…...

在生信分析中,从生物学数据库中下载的序列存放在哪里?要不要建立一个小型数据库,或者存放在Gitee上?

李升伟 整理 在Galaxy平台中使用时&#xff0c;从NCBI等生物学数据库下载的DNA序列的存储位置和管理方式需要根据具体的工作流程和需求进行调整。以下是详细的分步说明和建议&#xff1a; 一、Galaxy中DNA序列的默认存储位置 在Galaxy的“历史记录”&#xff08;History&…...

Python异步编程入门:Async/Await实战详解

引言 在当今高并发的应用场景下&#xff0c;传统的同步编程模式逐渐暴露出性能瓶颈。Python通过asyncio模块和async/await语法为开发者提供了原生的异步编程支持。本文将手把手带你理解异步编程的核心概念&#xff0c;并通过实际代码案例演示如何用异步爬虫提升10倍效率&#…...

cmd 终端输出乱码问题 |Visual Studio 控制台输出中文乱码解决

在网上下载&#xff0c;或者移植别人的代码到自己的电脑&#xff0c;使用VS运行后&#xff0c;控制台输出中文可能出现乱码。这是因为源代码的编码格式和控制台的编码格式不一致。 文章目录 查看源代码文件编码格式查看输出控制台编码格式修改编码格式修改终端代码页 补充总结 …...

【算法】椭圆曲线签名(ECDSA)

&#x1f914;什么是椭圆曲线签名&#xff08;ECDSA&#xff09;&#xff1f; 椭圆曲线签名算法&#xff08;Elliptic Curve Digital Signature Algorithm&#xff0c;简称 ECDSA&#xff09;是一种基于 椭圆曲线密码学 的数字签名算法。它主要用于加密货币&#xff08;如 Bit…...

Linux下使用MTK的SP_Flash_tool刷机工具

MTK的SP_Flash_tool刷机工具安装流程如下&#xff1a; 1、解压SP_Flash_Tool_Linux_v5.1336.00.100_Customer.zip unzip SP_Flash_Tool_exe_Linux_64Bit_v5.1520.00.100.zip 2、首先安装 libusb-dev 这个包&#xff1a; sudo apt-get install libusb-dev 3、安装成功之后…...

FRP内网穿透代理两个web页面(多端口内网穿透)

内网机器代理两个web页面出来 下载frp 选择0.51.2版本下载&#xff0c;高版本测试为成功 frp下载地址 部署frp server端&#xff08;公网部署&#xff09; #上传到opt rootsdgs-server07:/opt# ll frp_0.51.2_linux_amd64.tar.gz -rw-r--r-- 1 root root 11981480 Apr 15 1…...

Jenkins插件下载慢解决办法

jenkins设置插件使用国内镜像_jenkins 国内镜像-CSDN博客 国内源 以下是一些常用的国内 Jenkins 插件更新源地址&#xff1a; 清华大学&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json华为开源镜像站&#xff1a;https://mirrors.huawei…...

【Unity笔记】Unity开发笔记:ScriptableObject实现高效游戏配置管理(含源码解析)

在Unity开发中&#xff0c;高效管理游戏配置数据是提升开发效率的关键。本文分享如何使用ScriptableObject构建可编辑的键值对存储系统&#xff0c;并实现运行时动态读取。 一、为什么选择ScriptableObject&#xff1f; 1.1 ScriptableObject的核心优势 独立资源&#xff1a;…...

FPAG IP核调用小练习

一、调用步骤 1、打开Quartus 右上角搜索ROM&#xff0c;如图所示 2、点击后会弹出如图所示 其中文件路径需要选择你自己的 3、点击OK弹出如图所示 图中红色改为12与1024 4、然后一直点NEXT&#xff0c;直到下图 这里要选择后缀为 .mif的文件 5、用C语言生成 .mif文件 //…...

vue动画

1、动画实现 &#xff08;1&#xff09;、操作css的transition或animation &#xff08;2&#xff09;、在插入、更新或移除DOM元素时&#xff0c;在合适的时候给元素添加样式类名 &#xff08;3&#xff09;、过渡的相关类名&#xff1a; xxx-enter-active: 进入的时候激活…...

大数据学习(106)-hivesql函数

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…...

AI日报 - 2025年04月16日

&#x1f31f; 今日概览(60秒速览) ▎&#x1f916; 模型井喷 | OpenAI (o3/o4-mini, GPT-4.1), Meta (Llama 4 Scout/Maverick), Z.ai (GLM-4家族), Cohere (Embed 4), Google (DolphinGemma) 等发布新模型&#xff0c;多模态、长文本、高效推理成焦点。 ▎&#x1f4bc; 商业…...

C# 经纬度坐标的精度及WGS84(谷歌)、GCJ02(高德)、BD09(百度)坐标相互转换(含高精度转换)

1. 概述 WGS-84坐标系&#xff08;World Geodetic System一1984 Coordinate System&#xff09;是一种国际上采用的地心坐标系&#xff0c;GCJ-02是由中国国家测绘局&#xff08;G表示Guojia国家&#xff0c;C表示Cehui测绘&#xff0c;J表示Ju局&#xff09;制订的地理信息系…...

案例:陌陌聊天数据分析

背景分析&#xff1a; 陌陌作为聊天平台每天都会有大量的用户在线&#xff0c;会出现大量的聊天数据&#xff0c;通过对 聊天数据的统计分析 &#xff0c;可以更好的 对用户构建精准的 用户画像 &#xff0c;为用户提供更好的服务以及实现 高 ROI 的平台运营推广&#xff…...

关闭谷歌浏览器(Google Chrome)的自动更新可以通过以下方法实现。具体操作步骤取决于你的操作系统。

关闭谷歌浏览器&#xff08;Google Chrome&#xff09;的自动更新可以通过以下方法实现。具体操作步骤取决于你的操作系统。 1. 在 Windows 上关闭 Chrome 自动更新2. 在 macOS 上关闭 Chrome 自动更新3. 在 Linux 上关闭 Chrome 自动更新4. 注意事项1. 在 Windows 上关闭 Chro…...

进程(完)

今天我们就补充一个小的知识点,查看进程树命令,来结束我们对linux进程的学习,那么话不多说,来看. 查看进程树 pstree 基本语法&#xff1a; pstree [选项] 优点&#xff1a;可以更加直观的来查看进程信息 常用选项&#xff1a; -p&#xff1a;显示进程的pid -u&#xff…...

(劳特巴赫调试器学习笔记)四、Practice脚本.cmm文件编写

Lauterbach调试器 文章目录 Lauterbach调试器一、什么是Practice脚本文件二、cmm脚本使用示例总结 一、什么是Practice脚本文件 官方文档解释&#xff1a; 因为Practice脚本以cmm为后缀&#xff0c;所以大多数人叫它cmm脚本。 以tricore为例&#xff0c;在安装目录下&#xff…...

并行流parallelStream.map().collect()

一、使用场景 先贴代码 public static void main(String[] args) {List<String> stringList new ArrayList<>();List<Integer> integerList new ArrayList<>();int num 10000;for (int i 0;i<num;i){stringList.add(String.valueOf(i));}stri…...

2025最新版flink2.0.0安装教程(保姆级)

Flink支持多种安装模式。 local&#xff08;本地&#xff09;——本地模式 standalone——独立模式&#xff0c;Flink自带集群&#xff0c;开发测试环境使用 standaloneHA—独立集群高可用模式&#xff0c;Flink自带集群&#xff0c;开发测试环境使用 yarn——计算资源统一…...

软件测试小讲

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; 在 Web 项目开发中&#xff0c;全面的测试是保证系统稳定性、功能完整性和良好用户体验的关键。下面是一个详细的 Web 项目测试点列表&#xff0c;涵盖了不同方面的测试&#xff1a; 1. 功能测试 确保应用…...

DP35 【模板】二维前缀和 ---- 前缀和

目录 一&#xff1a;题目 二&#xff1a;算法原理 三&#xff1a;代码实现 一&#xff1a;题目 题目链接&#xff1a;【模板】二维前缀和_牛客题霸_牛客网 二&#xff1a;算法原理 三&#xff1a;代码实现 #include <iostream> #include <vector> using name…...

C语言——分支语句

在现实生活中&#xff0c;我们经常会遇到作出选择和判断的时候&#xff0c;在C语言中也同样要面临作出选择和判断的时候&#xff0c;所以今天&#xff0c;就让我们一起来了解一下&#xff0c;C语言是如何作出选择判断的。 目录 1.何为语句&#xff1f; 2.if语句 2.1 if语句的…...

使用Docker安装Jenkins

1、准备 2、安装 详见&#xff1a; https://www.jenkins.io/doc/book/installing/ https://www.jenkins.io/zh/doc/book/installing/ https://www.jenkins-zh.cn/tutorial/get-started/install/ # 方式1&#xff1a; # 详见&#xff1a;https://www.jenkins.io/doc/book/inst…...

东方博宜OJ ——2395 - 部分背包问题

贪心入门 ————2395 - 部分背包问题 2395 - 部分背包问题题目描述输入输出样例问题分析贪心算法思路代码实现总结 2395 - 部分背包问题 题目描述 阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有 N (N < 100)堆金币&#xff0c;第i堆金币的总重量和总价值分别是mi,vi (l …...

【期中准备特辑】计组,电路,信号

计组 以点带面地复习书中内容&#xff01; 指令体系结构&#xff08;ISA&#xff09;是计算机硬件和软件的分界面 世界上第一台电子计算机是 ENIAC&#xff08;埃尼阿克&#xff09; 第一代计算机采用电子管作为主要器件&#xff1b;第二代计算机采用晶体管&#xff1b;第三代…...

经典算法 判断一个图是不是树

判断一个图是不是树 问题描述 给一个以0 0结尾的整数对列表&#xff0c;除0 0外的每两个整数表示一条连接了这两个节点的边。假设节点编号不超过100000大于0。你只要判断由这些节点和边构成的图是不是树。是输出YES&#xff0c;不是输出NO。 输入样例1 6 8 5 3 5 2 6 4 5…...

力扣 283 移动零的两种高效解法详解

目录 方法一&#xff1a;两次遍历法 方法二&#xff1a;单次遍历交换法 两种方法对比 在解决数组中的零移动到末尾的问题时&#xff0c;我们需要保持非零元素的顺序&#xff0c;并原地修改数组。以下是两种高效的解法及其详细分析。 方法一&#xff1a;两次遍历法 思路分析…...

代码随想录第18天:二叉树

一、修剪二叉树&#xff08;Leetcode 669&#xff09; 递归法 class Solution:def trimBST(self, root: TreeNode, low: int, high: int) -> TreeNode:# 如果当前节点为空&#xff0c;直接返回空节点&#xff08;递归终止条件&#xff09;if root is None:return None# 如果…...

KMP算法核心笔记:前后缀本质与nextval实现

KMP算法核心笔记&#xff1a;前后缀本质与nextval实现 核心疑问&#xff1a;为什么用「前后缀」而非「最大子串」&#xff1f; 1. 结构唯一性 前后缀限定在字符串首尾区域&#xff0c;最大子串可位于任意位置只有前后缀能保证滑动后的有效对齐 2. 移动确定性 文本&#xf…...

Breeze 40A FOC 电调:Vfast 观测器技术赋能无人机精准动力控制

核心技术特性 1. 全新Vfast 观测器技术 基于先进矢量控制算法&#xff08;FOC 驱动&#xff09;&#xff0c;实现电机状态实时精准观测&#xff0c;适配性优于传统 FOC 方案&#xff0c;兼容主流无人机动力配置。高效算法设计&#xff0c;输出功率与力效超越多数方波电调&…...

如何处理ONLYOFFICE文档服务器与Java Web应用间的安全认证和授权

如何处理ONLYOFFICE文档服务器与Java Web应用间的安全认证和授权&#xff1f; 处理 ONLYOFFICE 文档服务器与 Java Web 应用之间的安全认证和授权&#xff0c;通常涉及以下几个关键步骤和技术&#xff1a; 1. JWT (JSON Web Token) 认证 启用 JWT&#xff1a; ONLYOFFICE 文档…...

手机上的PDF精简版:随时随地享受阅读

在移动互联网时代&#xff0c;随时随地阅读电子书和文档已经成为许多人的习惯。无论是学习、工作还是娱乐&#xff0c;一款好用的PDF阅读器都是必不可少的工具。今天&#xff0c;我们要介绍的 思读PDF精简版&#xff0c;就是这样一款简洁而强大的PDF阅读工具&#xff0c;能够让…...

XCTF-web(一)

view_source F12ctrluctrlshiftiURL前添加&#xff1a;view-source:curl http://192.168.1.1robots 根据题目提示&#xff0c;查看一下robots.txt /flag_ls_h3re.php backup /index.php.bak ┌──(kali㉿kali)-[~] └─$ cat index.php.bak <html> <…...

字节跳动开源 Godel-Rescheduler:适用于云原生系统的全局最优重调度框架

背景 在云原生调度中&#xff0c;一次调度往往无法解决所有问题&#xff0c;需要配合重调度来优化资源分配和任务摆放。传统的重调度框架主要集中在识别异常节点或任务&#xff0c;并通过迁移或删除来解决。然而&#xff0c;这些框架往往只能解决局部问题&#xff0c;无法提供…...

贪心算法day9(合并区间)

1.合并区间 56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 对于这种区间问题&#xff0c;我们应该先排序根据排序的结果总结一些规律&#xff0c;进而的得出解决该问题的策略。 class Solution {public static int[][] merge(int[][] intervals) {//第一步进行左端点…...

插件化设计,打造个性化音乐体验!

打工人们你们好&#xff01;这里是摸鱼 特供版~ 今天给大家带来一款超酷的音乐播放器——MusicFree&#xff0c;它不仅功能强大&#xff0c;还支持插件化设计&#xff0c;让你的音乐体验更加个性化&#xff01; 推荐指数&#xff1a;★★★★★ 1. 插件化设计 功能强大&#…...