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

我用AI学Android Jetpack Compose之开篇

打算写一个系列,我用AI学Android Jetpack Compose,本教程需要有一定Android开发基础的同学,至少能运行成功Hello World!会基本的Java或Kotlin语法,如果不会,先去学习基本的Android应用开发,推荐这本书。
在这里插入图片描述

现在AI确实厉害,可以极大的提高学习工作效率,Android Jetpack Compose是谷歌主推的Android开发方式,相比传统的Android原生开发,有一定的优势,但是我没用过啊,安卓更新太快,不学习就要跟不上时代,没办法,用Ai学吧。
我打算用通义千问来学,通义千问有代码模式,比较好用。以下答案均来自通义千问。

文章目录

  • 1.什么是Android Jetpack Compose?
  • 2.我要学习Android Jetpack Compose开发App,要学哪些东西?
  • 3.我只会Java不会Kotlin,能学Android Jetpack Compose吗?
  • 4.通过和你问答的方式,能学会Jetpack Compose吗?

**首先了解一下什么是Android Jetpack Compose。**

1.什么是Android Jetpack Compose?

Android Jetpack Compose 是谷歌官方推出的用于构建原生Android用户界面的现代声明式UI工具包。它简化了Android应用程序UI开发的过程,让开发者能够使用更少的代码创建直观、动态且响应迅速的用户界面。

Jetpack Compose 的主要特点包括:

  • 声明式UI编程:与传统的命令式UI编程不同,开发者只需要描述“什么”应该显示在屏幕上,而不是“如何”绘制和更新UI。这种模式减少了样板代码的数量,并使得UI逻辑更加清晰。
  • 组合函数:通过Kotlin语言中的高阶函数特性,Jetpack Compose引入了组合函数的概念,这些函数可以用来定义UI组件及其布局。
  • 状态驱动UI:UI直接绑定到应用的数据模型或状态上,当状态发生变化时,相关的UI会自动更新。这促进了数据和UI之间的紧密耦合,同时也简化了状态管理。
  • 内置动画和手势支持:提供了简单的API来添加动画效果以及处理触摸事件和其他手势输入。
  • Material Design组件:内置了一系列遵循Google Material Design指南的UI组件,如按钮、文本框等,方便快速搭建符合设计规范的应用程序。
  • 互操作性:可以轻松地将Jetpack Compose集成进现有的基于View的传统Android项目中,逐步迁移旧代码至新的声明式风格。

Jetpack Compose旨在提高开发效率,减少冗余代码,并为开发者提供更好的工具来构建美观且高效的移动应用。随着其生态系统的不断扩展和完善,越来越多的开发者选择使用Jetpack Compose进行Android UI开发。

那要学哪些东西呢,你可以提问:

2.我要学习Android Jetpack Compose开发App,要学哪些东西?

要学习Android Jetpack Compose以开发应用程序,你需要掌握以下几个关键领域:

  1. Kotlin编程语言

    • Kotlin是Jetpack Compose的官方支持语言。你应该熟悉Kotlin的基本语法、函数式编程概念(如高阶函数)、协程(Coroutines)和流(Flow),因为这些在Compose中用于处理异步操作和状态管理。
  2. Jetpack Compose基础

    • 了解如何创建和使用组合函数(Composable functions),这是Jetpack Compose的核心构建块。
    • 学习声明式UI的概念,理解如何通过代码直接描述UI,并且当数据或状态改变时自动更新UI。
    • 熟悉Compose中的布局系统,包括修饰符(Modifiers)、排版(Layouts)、约束(Constraints)等。
  3. 状态管理和响应性

    • 掌握如何在Jetpack Compose中管理状态,例如使用StateMutableStateremember等关键字来存储和追踪UI状态。
    • 了解如何利用ViewModel与LiveData或者StateFlow进行跨组件的状态共享和管理。
  4. Material Design组件

    • 学会使用Jetpack Compose提供的基于Material Design的预定义组件,如按钮、文本框、卡片等,并自定义它们以适应你的应用设计需求。
  5. 导航和路由

    • 学习如何使用Compose Navigation库来实现屏幕间的导航,设置不同的路由路径,传递参数等。
  6. 动画和手势

    • 探索如何添加动画效果到你的应用中,以及如何处理用户交互产生的手势事件。
  7. 测试和调试

    • 学习编写单元测试和集成测试,确保你的Compose UI逻辑正确无误。同时也要知道如何有效地调试Compose应用。
  8. 工具和资源

    • 熟练使用Android Studio IDE及其对Jetpack Compose的支持功能,比如实时预览(Live Preview)、布局检查器(Layout Inspector)等。
    • 关注官方文档、示例项目、教程和其他社区资源,保持学习最新的最佳实践和技术发展。
  9. 其他Jetpack组件

    • 虽然不是直接与Jetpack Compose相关,但了解其他Jetpack组件(如Room数据库、WorkManager、Paging等)对于构建完整且高效的应用程序非常重要。

开始学习时,可以从简单的例子入手,逐步增加复杂度,尝试构建真实的项目。此外,积极参与开发者社区,阅读官方指南和技术博客,参加线上线下的技术交流活动,都会帮助你更快地掌握Jetpack Compose。

我还有个疑问:

3.我只会Java不会Kotlin,能学Android Jetpack Compose吗?

虽然Jetpack Compose主要是为Kotlin设计的,并且利用了Kotlin的一些语言特性,但如果你目前只熟悉Java,也并非完全不能开始学习Jetpack Compose。不过,考虑到Compose充分利用了Kotlin的功能,如协程、Flow、高阶函数等,掌握Kotlin将会使你更容易理解和使用Jetpack Compose。

这里有一些建议帮助你在继续学习Jetpack Compose的同时逐步过渡到Kotlin:

  1. 学习基础Kotlin

    • 你可以先通过官方文档或在线课程快速入门Kotlin。重点是理解Kotlin与Java之间的相似性和差异,特别是那些对Jetpack Compose至关重要的部分,比如函数式编程概念和协程。
  2. 参考转换工具

    • Android Studio提供了从Java代码转换成Kotlin代码的功能,这可以帮助你直观地看到两种语言在表达相同逻辑时的区别,从而加速学习过程。
  3. 实践结合理论

    • 在学习Kotlin的过程中,尝试将所学的知识应用到小规模的Jetpack Compose项目中。通过实际编写代码来巩固你的理解。
  4. 阅读和分析现有代码

    • 查看用Kotlin编写的Jetpack Compose示例代码或开源项目,这有助于你更好地理解如何在真实世界的应用程序中运用这些技术。
  5. 社区资源和支持

    • 利用开发者社区(如Stack Overflow、Reddit上的r/androiddev、Google Developers论坛等)寻求帮助和指导。很多有经验的开发者愿意分享他们的知识和建议。
  6. 逐步迁移

    • 如果你已经在维护一个基于Java的Android项目,可以考虑逐步引入Kotlin模块或者使用Jetpack Compose来构建新功能。这样可以在不影响现有工作流程的情况下慢慢适应新的语言和技术栈。
  7. 专注于Jetpack Compose特定领域

    • 即便是在学习Kotlin的同时,你也可以集中精力了解Jetpack Compose的核心概念和API,因为许多原理和最佳实践是通用的,不论你使用哪种编程语言。

总结来说,虽然直接从Java转向Jetpack Compose会有一些挑战,但这是完全可以实现的目标。随着时间推移,你会发现自己逐渐掌握了必要的Kotlin技能,进而能够更加高效地开发Jetpack Compose应用程序。记住,学习一门新语言和框架是一个渐进的过程,保持耐心并持续练习是非常重要的。

我有信心,Ai你有信心吗?

4.通过和你问答的方式,能学会Jetpack Compose吗?

通过问答的方式可以作为学习Jetpack Compose的一部分,但要全面掌握它还需要结合其他形式的学习和实践。问答可以帮助你解决特定问题、澄清概念或获取指导,但它通常不会提供系统化的课程结构或深入的主题讲解。为了更有效地学习Jetpack Compose,建议采用以下几种方法相结合:

  1. 官方文档和教程

    • 阅读官方的Jetpack Compose文档以及Google提供的各种教程。这些资源提供了详细的解释和示例代码,帮助你理解核心概念和技术细节。
  2. 在线课程和视频

    • 参加由专业讲师授课的在线课程(如Coursera、Udemy、Pluralsight等平台上的课程),或者观看YouTube上的教学视频。这些课程往往包含结构化的学习路径和实战项目。
  3. 编写代码并构建项目

    • 实践是学习编程的最佳方式之一。尝试创建小型应用程序或功能模块,将所学的知识应用到实际项目中。这不仅能加深你的理解,还能让你遇到并解决问题。
  4. 阅读源码和案例研究

    • 分析开源项目的实现,尤其是那些使用Jetpack Compose构建的应用程序。你可以从中学到最佳实践、设计模式和其他有用的技术。
  5. 参与社区讨论

    • 加入开发者社区,例如Stack Overflow、Reddit上的r/androiddev子版块、Google Developers论坛或是Slack/Discord群组。在这些地方提问、回答他人的问题,甚至只是观察对话,都可以极大地扩展你的知识面。
  6. 持续更新与跟进

    • Jetpack Compose是一个快速发展的框架,因此保持对最新发布的版本、特性更新及社区动态的关注非常重要。订阅相关的博客、新闻通讯,参加技术会议或本地聚会也是不错的选择。
  7. 利用问答平台

    • 当然,在遇到具体问题时,向我这样的AI助手或者其他专业人士求助是非常有效的。你可以在这里得到即时的帮助和反馈,这对于排除故障或理解复杂主题特别有帮助。

综上所述,问答平台可以为你提供即时的帮助和支持,但为了真正精通Jetpack Compose,你需要一个更加综合性的学习计划,包括理论学习、动手实践、社区互动等多个方面。通过这种方式,你能够获得更深层次的理解,并且在面对真实世界的挑战时更加自信。

我相信用Ai就可以学会,我们下一篇开始!

相关文章:

我用AI学Android Jetpack Compose之开篇

打算写一个系列,我用AI学Android Jetpack Compose,本教程需要有一定Android开发基础的同学,至少能运行成功Hello World!会基本的Java或Kotlin语法,如果不会,先去学习基本的Android应用开发,推荐…...

算法题(24):只出现一次的数字(二)

审题: 数组中除了答案元素只出现一次外,其他元素都会出现三次,我们需要找到并返回答案元素 思路: 由于现在会出现三次,所以利用异或运算符的方法就会失效。而所有数据都在32位二进制范围内,所以我们采用依次…...

计算机网络 (15)宽带接入技术

前言 计算机网络宽带接入技术是指通过高速、大容量的通信信道或网络,实现用户与互联网或其他通信网络之间的高速连接。 一、宽带接入技术的定义与特点 定义:宽带接入技术是指能够传输大量数据的通信信道或网络,其传输速度通常较高&#xff0c…...

什么是索引

在数据库管理系统中,索引是一种数据结构,用于快速定位数据库表中的特定记录。索引类似于一本书的目录,可以帮助数据库引擎迅速找到所需的数据,而不必扫描整个表。 类型:常见的数据库索引类型包括B树索引、哈希索引、全…...

【数据结构】树链刨分

1 u v k,修改路径上节点权值,将节点 uu 和节点 vv 之间路径上的所有节点(包括这两个节点)的权值增加 kk。2 u k,修改子树上节点权值,将以节点 uu 为根的子树上的所有节点的权值增加 kk。3 u v,询…...

perl包安装的CPAN大坑

先看一个用cpan安装的例子。 $cpan -i App::cpanminus Loading internal logger. Log::Log4perl recommended for better logging Reading /home/wubin/.cpan/MetadataDatabase was generated on Tue, 24 Dec 2024 15:29:01 GMT Running install for module App::cpanminusTry…...

打造三甲医院人工智能矩阵新引擎(四):医疗趋势预测大模型篇 EpiForecast与DeepHealthNet合成应用

一、引言 1.1 研究背景与意义 在当今数字化时代,医疗领域积累了海量的数据,涵盖电子病历、医学影像、基因序列、临床检验结果等多源异构信息。这些数据蕴含着疾病发生发展、治疗反应、疫情传播等规律,为医疗趋势预测提供了数据基础。准确的医疗趋势预测能辅助医疗机构提前…...

RSA e与phi不互质(AMM算法进行有限域开根)

e与phi不互质 这一部分学习来自trup师傅的博客 针对CTFer的e与phi不互素的问题 - 跳跳糖 1&#xff1a;m^t<n from Crypto.Util.number import * from secret import flag flag bflag{*********} m bytes_to_long(flag) p getPrime(1024) q getPrime(1024) n p * q …...

021-spring-springmvc-组件

SpringMVC的handMapping 比较重要的部分 比较重要的部分 比较重要的部分 关于组件的部分 这里以 RequestMappingHandlerMapping 为例子 默认的3个组件是&#xff1a; org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping org.springframework.web.servlet.mvc…...

【Leecode】Leecode刷题之路第99天之恢复二叉搜索树

题目出处 99-恢复二叉搜索树-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 99-恢复二叉搜索树-官方解法 方法1&#xff1a;显式中序遍历 思路&#xff1a; 代码示例&#xff1a;&…...

【从零开始入门unity游戏开发之——C#篇41】C#迭代器(Iterator)——自定义类实现 foreach 操作

文章目录 前言一、什么是迭代器&#xff1f;二、标准迭代器的实现方法1、自定义一个类CustomList2、让CustomList继承IEnumerable接口3、再继承IEnumerator接口4、完善迭代器功能5、**foreach遍历的本质**&#xff1a;6、在Reset方法里把光标复原 三、用yield return语法糖实现…...

运算符重载 - 自定义运算符行为

引言 C 是一种支持面向对象编程&#xff08;OOP&#xff09;的编程语言&#xff0c;它允许程序员通过运算符重载来自定义类的行为。运算符重载使得我们可以为自定义类型定义与内置类型相似的操作方式&#xff0c;从而使代码更加直观和易读。 本文将详细介绍 C 中的运算符重载…...

RabbitMQ-基本使用

RabbitMQ: One broker to queue them all | RabbitMQ 官方 安装到Docker中 docker run \-e RABBITMQ_DEFAULT_USERrabbit \-e RABBITMQ_DEFAULT_PASSrabbit \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network mynet\-d \rabbitmq:3…...

sklearn基础教程

sklearn&#xff0c;全称为Scikit-learn&#xff0c;是一个基于Python的开源机器学习库&#xff0c;广泛用于数据挖掘和数据分析。它建立在NumPy、SciPy和matplotlib这些科学计算库之上&#xff0c;提供了简单而高效的工具来解决各种机器学习问题。 安装 首先&#xff0c;确保…...

173. 矩阵距离 acwing -多路BFS

原题链接&#xff1a;173. 矩阵距离 - AcWing题库 给定一个 N行 M 列的 01矩阵 A&#xff0c;A[i][j] 与 A[k][l]]之间的曼哈顿距离定义为&#xff1a; dist(i,j,k,l)|i−k||j−l|| 输出一个 N 行 M 列的整数矩阵 B&#xff0c;其中&#xff1a; B[i][j]min1≤x≤N,1≤y≤M,A…...

【MySQL】--- 内置函数

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; MySQL &#x1f3e0; 时间函数 约定&#xff1a;我们在MySQL中说的日期指的是年 月 日&#xff0c;时间指的是时 分 秒。 &#x1f9f7; now() select n…...

更改element-plus的table样式

表头样式&#xff1a; <el-table :data"props.tableData" style"width: 100%" :header-cell-style"headerCellStyle" :cell-style"cellStyle"> </el-table>样式&#xff1a; // 表头样式 const headerCellStyle {backgro…...

25.Java JUC 引入(进程与线程、线程的状态、并发与并行、管程、用户线程与守护线程)

一、JUC 简介 JUC 是 java.util.concurrent 工具包的简称&#xff0c;这是一个处理线程的工具包&#xff0c;从 JDK1.5 开始出现 二、进程与线程 1、基本介绍 &#xff08;1&#xff09;进程 进程是计算机中的程序关于某数据集合上的一次运行活动&#xff0c;是系统进行资源…...

双目视觉:reprojectImageTo3D函数

前言 reprojectImageTo3D 是 OpenCV 中用于从视差图生成三维点云的函数。它的原理是利用视差图和相机的校准参数&#xff0c;通过三角测量法&#xff0c;计算每个像素对应的三维坐标。以下内容根据源码分析所写&#xff0c;觉得可以的话&#xff0c;点赞收藏哈&#xff01;&am…...

深度解析 Kubernetes Service 负载均衡器及其在 Cube Studio 推理服务中的优化选择

目录 一、Kubernetes Service 负载均衡器概述 Service 的核心功能&#xff1a; 二、Kubernetes Service 类型及适用场景 1. ClusterIP&#xff08;默认类型&#xff09; 2. NodePort 3. LoadBalancer 4. ExternalName 5. Ingress&#xff08;增强型 Service&#xff09;…...

NLP 中文拼写检测纠正论文-07-NLPTEA-2020中文语法错误诊断共享任务概述

拼写纠正系列 NLP 中文拼写检测实现思路 NLP 中文拼写检测纠正算法整理 NLP 英文拼写算法&#xff0c;如果提升 100W 倍的性能&#xff1f; NLP 中文拼写检测纠正 Paper java 实现中英文拼写检查和错误纠正&#xff1f;可我只会写 CRUD 啊&#xff01; 一个提升英文单词拼…...

快速上手LangChain(三)构建检索增强生成(RAG)应用

文章目录 快速上手LangChain(三)构建检索增强生成(RAG)应用概述索引阿里嵌入模型 Embedding检索和生成RAG应用(demo:根据我的博客主页,分析一下我的技术栈)快速上手LangChain(三)构建检索增强生成(RAG)应用 langchain官方文档:https://python.langchain.ac.cn/do…...

深度学习中的离群值

文章目录 深度学习中有离群值吗&#xff1f;深度学习中的离群值来源&#xff1a;处理离群值的策略&#xff1a;1. 数据预处理阶段&#xff1a;2. 数据增强和鲁棒模型&#xff1a;3. 模型训练阶段&#xff1a;4. 异常检测集成模型&#xff1a; 如何处理对抗样本&#xff1f;总结…...

汽车燃油软件标定测试

油箱测试 确定油箱的参数&#xff1a; 总容积&#xff0c;额定容积&#xff0c;不可用容积等。油泵测试&#xff08;静态&#xff09; 分为加油测试&#xff0c;减油测试&#xff0c;1L或者500ml增减&#xff1b; 分别测试油泵的阻值输出&#xff0c;类似&#xff1a; 油量 阻…...

#C02L02P01. C02.L02.一维数组最值问题.知识点1.求最大值

从键盘读入n&#xff08;1<n<100&#xff09;个正整数&#xff0c;输出最大值。 算法分析 假设一个最大值 maxx0 &#xff1b; maxx 依次跟数组中的元素进行比较&#xff1b; 如果该数组元素大于 maxx &#xff0c;则将该数组元素值赋值给 maxx &#xff1b; maxx 即…...

pycharm如何拉取一个git项目,然后,修改后再上传到自建的项目中?

以chattts为例 https://github.com/2noise/ChatTTS.git 1.建一个虚拟环境&#xff0c;用于项目使用 2.pychar&#xff4d;新建工程 &#xff13;.忽略 提示 勾选&#xff0c;新建远程仓库 设置账号和密码 设置git路径&#xff0c;一般是正确的&#xff0c;点测试即可 &…...

【数据库初阶】MySQL中表的约束(上)

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; 数据库初阶 &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 亲爱的小伙伴们&#xff0c;大家好&#xff01;在这篇文章中&#xff0c;我们将深入浅出地为大家讲解 MySQL…...

smbms超市管理系统

系统测试及实现效果 完整源码已上传资源 登录界面 系统首页 订单管理页面 用户管理页面 供应商管理页面 密码修改 SQL语句分析 存储引擎&#xff1a;InnoDB&#xff0c;支持事务和外键&#xff1b;字符集&#xff1a;utf8&#xff0c;支持多语言字符&#xff1b;排序规则&am…...

Visual Studio 中增加的AI功能

前言&#xff1a; 人工智能的发展&#xff0c;在现在&#xff0c;编程技术的IDE里面也融合了AI的基本操做。本例&#xff0c;以微软的Visual Studio中的人工智能的功能介绍例子。 本例的环境&#xff1a; Visual Studio 17.12 1 AI 智能变量检测&#xff1a; 上图展示了一…...

大功率PCB设计

1.电源和电机的走线用线径较大的铺铜&#xff0c;讲究的是走线顺畅&#xff1a; 2.同一个电源属性四层板都铺铜&#xff0c;并打很多过孔: 3.走线顺畅&#xff0c;可以看到从左到右供电。从右向左接地&#xff0c;加电流采样&#xff1a; 一个问题&#xff0c;这样会形成电源环…...

Nginx与frp结合实现局域网和公网的双重https服务

背景&#xff1a; 因为局域网内架设了 tiddlywiki、 Nextcloud 等服务&#xff0c;同时也把公司的网站架设在了本地&#xff0c;为了实现局域网直接在局域网内访问&#xff0c;而外部访问通过frps服务器作为反向代理的目的&#xff0c;才有此内容。 实现的效果如下图琐事 不喜欢…...

改投论文时如何重构

摘要: 不同期刊和会议对于论文的风格、页数限制等方面有一些差别, 论文在某个地方被拒, 改投别处时需要进行重构. 本贴描述重构的基本方案. 你的衣柜乱糟糟的, 如何清理呢? 方案 A. 把不喜欢的衣服一件件丢掉.方案 B. 把衣服全部丢出来, 然后再把喜欢的衣服一件件放进去. 对…...

【YOLOv5】源码(common.py)

该文件位于/models/common.py&#xff0c;提供了构建YOLOv5模型的各种基础模块&#xff0c;其中包含了常用的功能模块&#xff0c;如自动填充autopad函数、标准卷积层Conv、瓶颈层Bottleneck、C3、SPPF、Concat层等 参考笔记&#xff1a;【YOLOv3】 源码&#xff08;common.py…...

python中的赋值方法

python赋值方法有很多&#xff0c;主要可以分为链式赋值、系列解包赋值、常量形式赋值&#xff0c;下面介绍下三者间区别&#xff1a; 1、链式赋值&#xff1a; 链式赋值用于同一个对象赋值给多个变量 xy123 可以认为是 x 123 y 123 2、系列解包赋值&#xff1a; 系列数据…...

pyhton 掩码 筛选显示

目录 bitwise_and控制&#xff1a; 点乘&#xff1a; 性能对比&#xff1a; bitwise_and控制&#xff1a; import cv2# 读取彩色图和mask二值图 color_img cv2.imread(color_image.jpg) mask cv2.imread(mask.jpg, 0) # 以灰度模式读取二值图# 确保彩色图和mask的尺寸一…...

测试覆盖率

1、概念 覆盖率测试&#xff0c;也称为测试覆盖率分析&#xff0c;是软件测试中的一个重要概念&#xff0c;用来衡量测试用例执行时对代码的覆盖程度。它提供了一种量化的方法来评估测试集的充分性&#xff0c;即测试是否足够广泛地触及了应用程序的所有部分。覆盖率测试可以应…...

clickhouse query_log 常用查询语句

1、查询一段时间耗时超过3秒的语句。 SELECT* FROMsystem.query_log WHEREquery_duration_ms > 30000AND event_time > 2024-12-31 15:50:00 AND event_time < 2024-12-31 17:50:00 ORDER BYevent_time desc;2、查询一段时间报错的语句 SELECT* FROMsystem.query_lo…...

uni-app 资源引用(绝对路径和相对路径)方法汇总

文章目录 一、前言&#x1f343;二、绝对路径和相对路径2.1 绝对路径2.2 相对路径 三、引用组件四、引用js4.1 js 文件引入4.2 NPM支持 五、引用css六、引用json6.1 json文件引入 七、引用静态资源7.1 模板内引入静态资源7.2 css 引入静态资源7.3 js/uts 引入静态资源7.4 静态资…...

Java SpringBoot使用EasyExcel导入导出Excel文件

点击下载《Java SpringBoot使用EasyExcel导入导出Excel文件(源代码)》 在 Java Spring Boot 项目中&#xff0c;导入&#xff08;读取&#xff09;和导出&#xff08;写入&#xff09; Excel 文件是一项常见的需求。EasyExcel 是阿里巴巴开源的一个用于简化 Java 环境下 Excel…...

CDN SSLTLS以及安全

随着互联网的发展&#xff0c;内容分发网络&#xff08;CDN&#xff09;在提升网站访问速度和安全性方面发挥了重要作用。然而&#xff0c;CDN在带来便利的同时也面临一些安全挑战。本文将探讨CDN的安全风险&#xff0c;并深入解析SSL/TLS加密技术及其在CDN中的应用。 CDN的安全…...

安卓11 SysteUI添加按钮以及下拉状态栏的色温调节按钮

最近客户想要做一个台灯产品&#xff0c;需要实现 串口调节台灯功能 &#xff0c;其中包括 亮度调节 色温调节 开关 三个功能 话不多说&#xff0c;贴代码 diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml old mode 100644 new …...

SpringMVC启动与请求处理流程解析

目录 SpringMVC的基本结构 1.MVC简介 2.基本结构 什么是Handler&#xff1f; 什么是HandlerMapping? 什么是HandlerAdapter&#xff1f; RequestMapping方法参数解析 DispatcherServlet的init()方法 DispatcherServlet的doService()方法 SpringBoot整合SpringMVC …...

RabbitMQ案例

1. 导入依赖 <!--AMQP依赖&#xff0c;包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 发送消息 注入RabbitTemplate Autowired RabbitT…...

前路漫漫,曙光在望 !

起始 从20年大一开始写作至今&#xff0c;转眼五年时光已经过去了&#xff0c;最开始在CSDN这个平台写博客也只是因为一次机缘巧合情况下得知写博客可以获取奖赏&#xff0c;所以那个时期开始疯狂在CSDN发文记录自己编程学习过程&#xff0c;但是至今也未从写作中获利一分哈…...

音视频-----RTSP协议 音视频编解码

流媒体协议详解&#xff1a;RTSP、RTP、RTCP、SIP、SDP、RTMP、WebRTC、WebSocket-CSDN博客 上文讲解比较清楚 多媒体编解码基础知识 一文详解WebRTC、RTSP、RTMP、SRT-腾讯云开发者社区-腾讯云 RTP :(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传…...

SpringMVC的消息转换器

SpringMVC的消息转换器&#xff08;Message Converter&#xff09;是Spring框架中用于处理HTTP请求和响应体与Java对象之间转换的组件。它们使得开发人员可以轻松地将HTTP请求的数据映射到方法参数&#xff0c;并将返回的对象转换为HTTP响应。 工作原理 当一个HTTP请求到达Spr…...

计算机网络练习题

学习这么多啦&#xff0c;那就简单写几个选择题巩固一下吧&#xff01; 1. 在IPv4分组各字段中&#xff0c;以下最适合携带隐藏信息的是&#xff08;D&#xff09; A、源IP地址 B、版本 C、TTL D、标识 2. OSI 参考模型中&#xff0c;数据链路层的主要功能是&#xff08;…...

本地测试文件解析

PostMapping("/test") public void test() throws IOException {Path csvFile Paths.get("D:\\test/27.csv");//虚拟机退出时删除临时文件csvFile.toFile().deleteOnExit();List<String> list Files.readAllLines(csvFile, Charset.forName("…...

websocket-sharp:.NET平台上的WebSocket客户端与服务器开源库

推荐一个C#开发的&#xff0c;实现WebSocket功能的开源项目。 01 项目简介 websocket-sharp提供 WebSocket 客户端和服务器库&#xff0c;基于 C# 开发的&#xff0c;并遵循 WebSocket 协议规范&#xff0c;使得开发人员能够轻松地在 .NET 应用程序中实现 WebSocket 通信。 …...

SwiftUI 撸码常见错误 2 例漫谈

概述 在 SwiftUI 日常撸码过程中&#xff0c;头发尚且还算茂盛的小码农们经常会犯这样那样的错误。虽然犯这些错的原因都很简单&#xff0c;但有时想要快速准确的定位它们却并不容易。 况且这些错误还可能在模拟器和 Xcode 预览&#xff08;Preview&#xff09;表现的行为不甚…...