Android技术探索与实践:从新功能体验到故障调试的全方位探索

news2024/10/6 22:30:24

 

 

目录

Android技术探索与实践:从新功能体验到故障调试的全方位探索  

 第一章:技术解析

·Android平台的架构和工作原理

·应用组件的生命周期和交互方式

·Android开发中常用的设计模式和技术框架解析

第二章:产品新功能体验测评

 深入了解最新发布的Android版本,并对其新功能进行体验和测评:

分析新功能对用户体验和开发者的影响,并提出建议和改进意见:

第三章:故障调试 

常见的Android应用故障和错误排查方法:

分享故障调试的经验和教训:熟练使用各类调试工具,

第四章:测试比对 

不同测试方法和工具的比较和评估:

分析测试结果和反馈,提出测试优化建议:

第五章:使用心得 

从用户角度出发,

探索用户界面设计和用户体验优化的方法:

 分享个人使用Android应用的技巧和心得体会:

第六章:开发使用技巧 

分享Android开发过程中的实用技巧和工具推荐:

深入理解性能优化和内存管理的方法和技巧:

探索开发调试技巧和提高开发效率的实践:

第七章:科普应用 

介绍一些有趣的Android应用和技术应用场景:

分析科普应用的设计和实现思路:

鼓励读者自己尝试开发自己的科普应用,并提供相关资源和指导:

结语


Android技术探索与实践:从新功能体验到故障调试的全方位探索  

摘要:文章深入探索了Android平台的各个方面,包括技术解析、产品新功能体验测评、故障调试、测试比对、使用心得、开发使用技巧以及科普应用。通过对Android的全方位探索,读者将能够更深入地理解和应用Android技术,提升开发效率和用户体验。

 第一章:技术解析

·Android平台的架构和工作原理

Android系统分为Linux内核层、硬件抽象层、运行时库层、应用框架层和应用层五个层次。Linux内核层提供硬件驱动访问接口与进程管理。硬件抽象层将硬件差异隐藏在内部,为上层提供统一接口。运行时库层包括WebKit,FreeType,OpenGL等,提供网页,图像,3D渲染能力。

应用框架层包括Activity Manager,Package Manager,Telephony Manager等,管理应用视图,资源,电话服务等。应用层运行各种应用程序。这种分层架构让各部分可以高内聚低耦合地工作。上层通过接口访问下层服务,下层也只面向接口进行开发。

Linux内核层:提供硬件抽象接口与进程/线程管理。它基于Linux内核,进行了裁剪与修改。硬件抽象层:将不同硬件的差异隐藏在内部,为上层提供统一接口。它由多个库组成,每个对应一类硬件。

运行时库层:提供WebKit,OpenGL,FreeType等,用于网页,图像,3D渲染。使用C/C++实现,但Java可调用。

应用框架层:提供Activity Manager,Package Manager,Telephony Manager等来管理应用生命周期,资源,电话服务等。开发者主要使用Java开发,调用这些框架。应用层:运行各种应用,如Contacts,Browser,Settings等。

·应用组件的生命周期和交互方式

Activity,Service,Broadcast Receiver,Content Provider是Android四大组件。

Activity与用户交互,有生命周期回调方法。Service在后台运行,无界面的组件。Broadcast Receiver接收并响应广播。Content Provider管理应用数据。组件使用Intent进行交互。Intent指定行为与数据,由Intent Filter匹配到相应组件。熟练掌握组件生命周期与交互,是Android开发的基础。

Activity:与用户交互,重写生命周期方法监听状态变化。Service:后台运行执行长期操作。有生命周期方法但无界面。Broadcast Receiver:接收并响应广播,无生命周期方法。Content Provider:管理应用数据,通过ContentResolver访问。组件使用Intent进行交互。Intent指定要执行的动作与要操作的数据,通过Intent Filter找到匹配的组件执行请求。

·Android开发中常用的设计模式和技术框架解析

Activity:与用户交互,重写生命周期方法监听状态变化。Service:后台运行执行长期操作。有生命周期方法但无界面。Broadcast Receiver:接收并响应广播,无生命周期方法。Content Provider:管理应用数据,通过ContentResolver访问。组件使用Intent进行交互。Intent指定要执行的动作与要操作的数据,通过Intent Filter找到匹配的组件执行请求。

第二章:产品新功能体验测评

 深入了解最新发布的Android版本,并对其新功能进行体验和测评:

Android 10:这是最新发布的Android版本。它带来全新的手势导航与全屏手势。手势操作取代虚拟按键,通过向内/外滑动返回/切换应用,提高了流畅性。但初始使用难免生疏,需要短暂适应。手势使操作如直接触摸屏幕,带来高度沉浸感。Project Mainline使部分模块通过Play Store更新,修复Bug更快,应用更兼容,开发更简单。新增使用触屏与位置的报告要求,加强数据控制与隐私。实时字幕、智能回复支持更多场景。 Android 9 Pie:它专注人工智能与电池优化。App Actions通过学习用户习惯预测下一步动作;Slices在搜索结果中显示更丰富的应用信息。这些功能利用机器学习提高用户体验。采用限制后台进程运行时间,减少CPU唤醒等方式节省电量。显示具体电量可用时间等新功能,让用户更清楚电量消耗。通知分组,让用户更focus。快速设置重新设计,常用功能更近手。

分析新功能对用户体验和开发者的影响,并提出建议和改进意见:

全新手势操作带来差异化体验,Project Mainline更快更新修复Bug,加强控制让用户更放心,提高用户体验。开发者应用更易兼容,开发难度下降。但手势操作初始需要适应,开发者也需更新应用。人工智能功能利用机器学习提高用户体验。但预测不准确时体验下降。电池优化带来续航提升但可能影响推送效果。这需要运用者与开发者共同努力,不断提高与完善。限制后台进程提高续航但会影响实时性,设置更改带来重新适应。通知分组让信息更聚焦但部分信息可能遗漏。 这需要开发者采取更精细权衡,兼顾用户需求与系统限制。综上,新功能带来的新体验需要一定适应期。但随之而来的流畅与便捷让人一见倾心。人工智能给用户惊喜但也要在误判中进步。系统优化让电池更持久,应用变得更稳定,但也面临影响实用性的问题。这都需要用户与开发者的共同努力,通过不断使用与更新来完善产品,共同进步。

第三章:故障调试 

常见的Android应用故障和错误排查方法:

应用崩溃:通过adb logcat读取崩溃日志,查找堆栈信息定位问题原因。常见原因是空指针,数组越界等。布局异常:使用Hierarchy Viewer检查布局,定位显示问题组件,修复布局Bug。网络请求失败:检查网络状态,域名解析,通过Chrome Postman等工具测试请求,验证接口及参数。应用卡顿:通过Traceview与Systrace检查执行时间过长的方法,查找效率低下或ANR的原因。

使用调试工具和技巧解决常见问题:打开调试模式,设置断点调试与检查变量,定位逻辑问题。使用adb工具获取屏幕截图,日志,检查设备参数等,辅助定位与复现Bug。输出详细日志,在出现问题时记录调用栈与异常信息。将日志级别设置为Debug输出更详细日志。使用 gradle构建时开启Proguard混淆,Release版本去除,方便调试。使用Hierarchy Viewer预览与分析布局,检查嵌套深度,定位显示异常组件。它可以在不同设备上渲染布局。借助Traceview与Systrace分析应用执行时间与ANR问题,查找低效率原因。使用Chrome开发者工具的Device Mode调试与测试WebView应用。

分享故障调试的经验和教训:熟练使用各类调试工具,

如日志,断点,adb,Hierarchy View等。这可以大幅提高定位与修复问题的效率。在开发阶段就要养成测试与日志输出的习惯。这可以最大限度地发现与解决问题,减少上线后Bug出现的可能。不同问题采用对应工具。布局异常用Hierarchy Viewer,ANR用Traceview与Systrace,逻辑Bug用调试模式等。遇到问题不轻易放弃。分析问题与现象,通过查询资料与尝试各种办法进一步判定与缩小问题范围。有时问题的解决需要综合多种手段与条件。

第四章:测试比对 

不同测试方法和工具的比较和评估:

单元测试:通过JUnit等框架测试方法与类,保证代码质量。轻量级,开发者编写,覆盖范围高,缺少UI测试。功能测试:也称黑盒测试,通过设计测试用例验证软件功能。测试人员编写,较全面,缺少技术视角,较费时。压力测试:检验软件在高负载下的稳定性与性能。使用工具生成大量请求,量化指标衡量软件性能,覆盖面窄但有针对性。 beta/灰度发布:在部分用户中发布版本进行测试,获取实际反馈。覆盖面广,真实场景,但缺少针对性,难以量化。

介绍自动化测试和UI测试的最佳实践:

自动化测试通过编写脚本操作软件进行测试,可以自动执行而不需要人工干预。可用于功能测试,性能测试,安全测试等,提高测试效率。UI测试则通过编写脚本模拟用户操作界面进行测试。通常使用工具如Espresso,UiAutomator等,可以测试各类用户交互流畅性,以找出界面Bug。最佳实践:开发阶段集成自动化测试,如单元测试。及时发现问题,减少后期回归测试量。针对复杂业务流编写功能测试脚本进行自动化。保证核心流程质量。通过UI测试脚本,测试各种界面交互与操作流畅性。检查界面的显示是否正确无误。进行beta版/灰度发布前,利用自动化工具进行性能,安全,兼容性测试。发布更稳定版本。测试团队可以编写更全面的测试计划与方案。开发者也要编写单元测试与进行本地测试,最大限度发现Bug。

分析测试结果和反馈,提出测试优化建议:

通过测试报告与错误统计,分析问题的类型与频率,找出软件缺陷,提出改进对策。软件在不同国家与设备上的兼容性问题,需要针对性测试与修复。用户的实际使用反馈最真实。通过用户反馈不断改进与修复问题,完善软件。由于时间与成本限制,无法实现全部场景的自动化。需要人工创建特定的测试用例与数据,进行真实操作测试。开发者也须测试自己编写的代码,而不仅仅依赖测试团队的测试报告。只有在代码编写阶段就解决问题,才能减少后续的回归测试成本。综上,测试工作需要开发团队,测试团队通力合作。多种测试手段配合使用,才能全面保证软件质量。

第五章:使用心得 

从用户角度出发,

分享Android应用的使用心得和体验:流畅性:应用打开及界面切换是否流畅,没有明显卡顿现象,响应是否迅速。这深刻影响用户体验。易用性:界面布局是否清晰易理解,功能是否易于查找与使用,是否需要过长的适应与学习期。这决定用户的获得感与粘性。功能完备:是否符合该类应用的功能预期,是否提供更加丰富更能满足用户需求的功能,新增功能是否紧跟行业发展与用户需求。隐私与安全:应用是否会收集过多与隐私相关的数据信息,这些信息是否有保障措施与使用限制,应用自身是否具备一定的安全机制与防护措施。体验连贯性:同一开发团队开发的应用,在界面风格,交互方式,功能结构上是否保持连贯与统一,让用户产生一致的体验感与预期。  

探索用户界面设计和用户体验优化的方法:

参考行业内优秀产品与应用的界面风格与交互方式。运用通用界面组件与设计规范。层次清晰,重要功能醒目突出。通过字体,颜色,空间引导用户注意重点。减少界面元素数量,避免界面显得过于复杂繁琐。adopting a minimalistic style。提供清晰直观的反馈与提示。如操作后的loading提示,错误后的错误说明等。增加人性化表达。在显示文字上采用一定的感叹号, Transitioning等表达方式,为界面赋予情感。 运用通用的手势与操作习惯。如左滑删除,下拉刷新等,让用户产生熟悉感。增加细节设计,如高斯模糊玻璃效果,微妙的动画过渡等。提高产品质感。

 分享个人使用Android应用的技巧和心得体会:

掌握各类应用的核心功能与使用技巧,获得最佳用户体验。如切换Do Not Disturb模式提高专注力,设置睡眠时间管理生物钟等。定制应用通知,关闭不必要的,调整必要通知的方式与数量,避免因通知过多造成的干扰。通过第三方应用增强系统功能。如通过Weather与Calendar应用获得丰富的天气与日程信息;通过Gallery增强图片管理与编辑功能等。 关闭后台进程和不必要服务提高电量与运行效率。禁用动态壁纸,关闭蓝牙与Wi-Fi等当不使用时。使用文件夹或第三方应用整理应用图标,保持桌面整洁。通过搜索更快查找应用。定期清理应用缓存,删除无用应用与文件,保持手机存储空间充足。   

第六章:开发使用技巧 

分享Android开发过程中的实用技巧和工具推荐:

使用Android Studio,熟练掌握Layout Editor,代码模板,快捷键等提高开发效率。采用Gradle构建应用,通过依赖管理自动下载所需依赖库。使用Git进行版本控制。推荐Github,Bitbucket等代码管理平台。为 Layout安装可视化工具使用 Sketch 或 Figma 等工具进行UI/UX设计。使用Gson,protobuf等序列化库转换对象数据与字符串。借助Retrofit,OkHttp等框架简化网络开发。采用RxJava,LiveData等库进行异步与响应式编程。使用leakcanary检测内存泄漏。STRICT MODE检测UI线程中执行耗时操作。使用Timber简化日志输出,方便Locate问题。掌握ADB,Hierarchy Viewer等调试工具。

深入理解性能优化和内存管理的方法和技巧:

尽量在子线程中执行耗时操作,避免ANR。使用高效数据结构与算法,避免在循环或频繁调用的代码中创建对象。避免过度使用Context对象,使用ApplicationContext代替。使用SoftReference或WeakReference释放内存不再使用的资源。主动调用recycle()释放Bitmap等占用内存较大的资源。优化自定义View的onDraw()方法及调用invalidate()方法的频率。使用Android分析工具Systrace, Instrument, Perfetto等分析内存使用状况与帧率,寻找优化点。

探索开发调试技巧和提高开发效率的实践:

熟练使用Step Over, Step In, Step Out等调试方法。采用断点跟踪变量值的改变和方法的调用顺序。输出详细的日志信息,包括Tag, 方法调用轨迹,异常详情等信息快速定位问题。通过lint检查XML文件和Java代码潜在的问题。在adb shell中调用top命令监视应用内存使用情况。使用dumpsys检查应用信息。采用热更新的方式更新应用资源和代码,减少重新安装应用的次数。使用模板和代码块快速生成重复代码。

第七章:科普应用 

介绍一些有趣的Android应用和技术应用场景:

AR使用户可以在设备屏幕上看到虚拟对象合成在实际环境中的效果。如股东大会,试衣间中的虚拟人效果。需要摄像头与图像识别技术。VR通过头显设备让用户沉浸在虚拟场景中。如 roller coaster模拟过山车体验,可用于教育,游戏,医疗等。需要高性能运算与视觉渲染。人工智能在图片识别,语音识别,智能回复,机器翻译等领域的应用日益广泛。这需要大数据与神经网络算法支撑。区块链技术通过去中心化记账,提高数据不可篡改性与安全性。在付款,医疗,供应链管理等领域有应用。需要加密算法与P2P网络。机器人技术使得机械设备具备操控性与学习能力。可用于工程,农业,消费,服务等各行各业。需要各类传感器,执行器与控制算法。

分析科普应用的设计和实现思路:

选取合适的技术(AR/VR/AI/区块链/机器人技术)。基于硬件设备与开发工具的条件与要达到的效果进行选择。确定应用场景与具体功能目标。这需要对行业与用户需求进行充分调研分析。目标需明确具体可操作。构想创新点,这样的应用才会让用户感到新奇与兴趣。但创新也要建立在科学技术的基础上,避免过于不切实际。选取开发语言( Java/C++/Python)及相关技术框架。如OpenCV, TensorFlow, RealSense SDK等。如果涉及硬件,需要选取适配的传感设备,执行机构等。并编写设备驱动程序与校准算法。构思好界面与交互设计。这是用户体验的重要组成部分。要简洁直观,与技术效果相呼应。测试与调试,查找问题进行修复与优化。采取更真实的使用场景进行测试会更加有效。   

鼓励读者自己尝试开发自己的科普应用,并提供相关资源和指导:

选择自己感兴趣的技术方向与应用场景进行学习和开发。利用各类在线学习资源与教程入门。熟练掌握相关开发语言,框架及工具。这需要大量的代码实践与项目练习。  在开发过程中遇到问题,及时查阅官方文档以及各种社区问答进行解决。提高自己解决问题的能力。与其他开发者交流,共同探讨技术细节与实现方法。这可以更全面理解相关技术,了解不同思路与实现方案。尽量选择开源的库,示例与工程参考。这可以节省大量开发时间,并学习到优秀的技术实现。通过参考优秀的设计与产品,学习并吸收理念与方法。培养自己的设计思维与审美能力。在实现某项关键技术或功能后,总结与分享心得。这可以检验自己的理解,并帮助他人学习。鼓励您挑战自己,尝试在科技领域内学习与实践。我将为您提供技术资料,解答问题,并分享相关知识与经验。让我们共同进步

结语

随着Android新版本的推出,系统不断地优化和创新,带来许多方便开发者与用户的新功能。 从Android 10 开始,Google推出了全新的导航手势和全屏手势。相比之前的虚拟按键,全屏手势带来了更流畅的用户体验。通过向内或向外滑动,可以方便地返回或切换应用,或呼出最近任务列表,无需长按虚拟按键。系统自带的launcher也进行了改版,基于全屏手势优化,使得桌面也更加简洁。 在应用兼容性方面,Android 10主动发起“Project Mainline”计划,旨在分离一些关键模块成为独立的APK,可以通过Play Store分发和更新,无需等到正式系统OTA,这样可以更快地修复安全漏洞和bug,提高应用的兼容性,降低应用开发难度。 相比之前的Android系统,Android 10在安全和隐私方面也做出了较大调整。例如增加了对触屏和位置的报告要求,要求开发者说明使用这些模块的原因;增加了一个用于控制后台位置访问的开关;默认关闭Wi-Fi和蓝牙扫描功能等。这些调整无疑会使得用户的隐私信息更加安全。从上述三个方面,我们可以看出Android 10在功能、兼容性与安全性上都有较大提升,这使得最新版本的Android为开发者和用户带来更佳的体验。当然,Android的升级速度也使得许多用户无法及时进行系统更新,无法享受到最新功能与安全修复,这也是Google需要努力解决的问题之一。 总体来说,Android的快速迭代为这个移动生态带来活力,也为用户和开发者提供便利。但也需要平衡不同用户的更新体验,确保所有用户都可以使用到最新最安全的功能。Android能否在功能创新与普及度之间取得平衡,将是其面临的一个巨大挑战。

通过文章的全面探索和实践,希望大家能够更好地理解和应用Android技术,提升自己的技术水平和开发效率。同时,也能够更好地体验和使用Android应用,并在自己的领域中探索创新和应用。Android平台的不断发展和创新为我们带来了无限的可能性,让我们一同踏上Android技术的征程吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【安卓源码】Binder机制5 -- Java层Framework Binder机制和 AIDL

图中红色代表整个framework层 binder架构相关组件; Binder类代表Server端,BinderProxy类代码Client端;图中蓝色代表Native层Binder架构相关组件;上层framework层的Binder逻辑是建立在Native层架构基础之上的,核心逻辑都…

shell编程:概述、脚本入门、变量、运算符、条件判断、流程控制、读取控制台、函数、正则表达式、文本处理工具、综合案例

第 1 章 Shell 概述 1)Linux 提供的 Shell 解析器有 [atguiguhadoop101 ~]$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh2)bash 和 sh 的关系 sh:比较基础bash:功能更加强大,默…

三十四、Hybrid 接口用法解析

文章目录 前言交换机接口类型有哪些Hybrid 端口使用场景什么时候必须使用 Hybrid 一、Hybrid 特点二、Hybrid 当做 access和trunk使用三、Hybrid 特殊用法 前言 交换机接口类型有哪些 Access、trunk、Hybrid、qinq Hybrid 端口使用场景 接pc、服务器、接交换机、接路由器&a…

Linux守护进程

"忍耐的灵魂啊,安静地运转吧~" 我们先来看看这个场景。这是一个常见的基于TCP套接字的网络服务器,服务端接收客户端发送的消息,收到后并向echo回响给客户端。 对于Linux而言,终端只能有一个前台进程,这也是为…

行业唯一丨冠珠出席“中国企业社会责任高峰论坛”,并荣获人民日报社“ESG年度案例”

践行社会责任,推动品牌高质量发展。5月11日,由人民日报社指导、人民日报社经济社会部主办的“中国企业社会责任高峰论坛”在上海盛大举行。 本次论坛围绕乡村振兴、共同富裕、绿色低碳等重点议题进行深入研讨,邀请国家发展和改革委员会、商务…

教程硬货|微信小程序开发之基于vue的微信开发工具JS文件解读(一)

文章目录 1 前言2 前期准备3 微信开发者工具3.1 创建项目3.2 页面介绍 4 读懂Pages4.1 index.wxss4.2 index.wxml4.3 index.json4.4 index.js 5 logs6 小程序的主要文件6.1 app.js6.2 app.json 7 讨论 1 前言 鉴于前段时间出的第一篇记录安装Nodejs和HBuilderX搭建、部署微信小…

【C++】内存分区模型

目录 1、缘起 2、内存分区模型 2.1、程序运行前 2.2、程序运行后 3、总结 1、缘起 前几天学习完了 C 的 基础语法 知识点,现在终于要踏上学习 C 核心编程 的旅程了,期待沿途中所遇到的风景。 2、内存分区模型 C 程序在执行时,将内存大…

【Python Cookie 和代理 IP】零基础也能轻松掌握的学习路线与参考资料

一、Python Cookie 1、什么是Cookie? Cookie是一种在客户端保存数据的机制,服务器通过在HTTP响应头中添加Set-Cookie头实现。浏览器在接收到响应头中的Set-Cookie后,会将这个Cookie保存在本地。之后每次请求都会将本地保存的Cookie自动添加…

WPF插件之 - PropertyChanged.Fody插件的使用详解

总目录 文章目录 总目录一、PropertyChanged.Fody是什么?二、PropertyChanged.Fody的安装三、PropertyChanged.Fody的功能1. 特性1 实现属性通知的功能2 通知其他属性4 不进行属性通知3 指定属性更改时将调用的方法5 设置当前属性依赖的属性6 不检查是否相等7 DoNot…

lua:浅谈对元表和元方法的认识

前言 本篇在讲什么 浅谈对Lua元表和元方法的理解 本篇适合什么 适合初学Lua的小白 本篇需要什么 对Lua语法有简单认知 依赖Lua5.1的环境 依赖Sublime Text3编辑器 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码…

ETCD实现分布式锁

分布式锁具备特点 互斥性:在同一时刻,只有一个客户端能持有锁 安全性:避免死锁,如果某个客户端获得锁之后处理时间超过最大约定时间,或者持锁期间发生了故障导致无法主动释放锁,其持有的锁也能够被其他机制…

ANR实战案例 - FCM拉活启动优化

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、Trace日志分析二、业务分析1.Firebase源码分析2.Firebase官方查看官方文档Dem…

数据压缩新利器!小精灵ELF助你高效存储与传输

存储空间不够用?网络传输太慢?想必每个人在生活中都会遇到这些问题。看着爆满的硬盘、焦急的等待数据的接受,更新设备?不是每个人都能承担这个成本。那不如尝试一下无损压缩? 为了减少存储空间的占用,提高…

《Netty》从零开始学netty源码(五十七)之ServerBootstrap.bind()

目录 ServerBootstrap.bind()initAndRegister()init()register()doBind0() ServerBootstrap.bind() 在第一篇的HelloWorld中通过ServerBootstrap.bind()方法绑定端口号并最终启动Netty的服务,服务端的bind过程如下: 上面的代码主要分成两部分&#xff0…

【P20】JMeter XPath提取器(XPath Extractor)

文章目录 一、准备工作二、测试计划 一、准备工作 百度:https://www.w3school.com.cn/example/xmle/cd_catalog.xml 进入网页后,右键检查或按F12,打开调试工具 如图,使用XPath提取器(XPath Extractor)获取…

typescript学习笔记(下)

1、类型拓宽 所有通过 let 或 var 定义的变量、函数的形参、对象的非只读属性,如果满足指定了初始值且未显式添加类型注解的条件,那么它们推断出来的类型就是指定的初始值字面量类型拓宽后的类型,这就是字面量类型拓宽。 下面我们通过字符串…

数据结构-排序-(选择、堆排序、归并排序、基数排序)

目录 一、选择排序 二、堆排序 排序 效率分析 三、归并排序 排序 分析 四、基数排序 一、选择排序 思想:每趟在待排序元素中选取关键字最小的元素加入有序子列 不稳定性 空间复杂度:O(1) 时间复杂度: void swap(int &a,int &…

[Linux] 动态 / 静态库的生成与使用

文章目录 简要概念 静态库生成使用 动态库生成使用 简要概念 库一般分为两种: 静态库动态库 在 Linux 中: 如果是动态库,库文件是以 .so 作后缀的如果是静态库,库文件是以 .a 作后缀的 库文件的命名: libXXX.so …

RBTree

目录 红黑树的概念 红黑树性质 红黑树节点设计 红黑树的插入 红黑树的验证 红黑树和AVL树的比较 红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或 Black。 通过对任何一条从根到叶子的…

Point-SLAM: Dense Neural Point Cloud-based SLAM阅读记录

前言 只读了前半部分就感慨文章结构真的好清晰,从Introduction到related work完完全全都在体现它的motivation——他做了一件什么事情?以及为什么要这么做?解决了什么问题。 第一遍阅读 keywords: 以RGBD作为输入 使用点云表示场景的 dens…