移动开发最佳实践:为 Android 和 iOS 构建成功应用的策略
您可以将本文作为指南,确保您的应用程序符合可行的最重要标准。请注意,这份清单远非详尽无遗;您可以加以利用,并添加一些自己的见解。
了解您的目标受众
要制作一个成功的应用程序,你需要了解你是为谁制作的。从创建用户角色开始–基于人口统计、行为模式、动机和目标,对理想用户进行半虚构的表示。
进行市场调查,收集有关您的受众的数据。调查、焦点小组和一对一访谈是了解用户需求的有效方法。行为分析可以揭示他们如何与类似的应用程序交互,什么让他们感到沮丧,什么让他们感到高兴。
了解你的用户可以塑造你的应用程序的设计,功能,甚至营销策略。例如,千禧一代可能更喜欢与社交媒体整合的现代简约设计,而年长的受众可能更看重简单和清晰而不是美学。理解这一点是让你的应用与用户群产生共鸣的关键。
选择正确的发展方式
在原生、混合或跨平台开发之间做出选择非常重要:它会影响用户体验和开发流程。专为 Android 或 iOS 开发的原生应用程序往往性能优越,可以访问所有设备功能。它们也更容易完美地遵循平台的设计准则,提供无缝的用户体验。但是,原生开发需要大量资源:如果同时为 Android 和 iOS 开发,基本上需要构建两个独立的应用程序。
使用Web技术构建的混合应用程序,并包装在原生容器中,开发起来更快,更便宜。单个代码库可以在Android和iOS上运行。但它们对设备功能的访问可能有限,其性能可能无法与原生应用程序相匹配。
像React Native或Flutter这样的跨平台开发工具提供了一个中间地带。它们允许从单个代码库开发在两个平台上运行的应用程序,其性能和功能更接近原生应用程序。
值得一提的还有 Xamarin 和 Xamarin.Forms。前者能让开发人员使用 C# 编写程序,然后将其转换为适用于 Android 和 iOS 的原生代码。这样就能实现接近原生的性能水平。第二种则更上一层楼,使开发人员能够从共享代码库中制定用户界面。不过,您应该记住,虽然 Xamarin.Forms 提高了开发效率,但它可能不适合要求复杂用户界面或独特平台特定功能的应用程序。
此外,微软的 .NET 多平台应用程序用户界面(MAUI)是 Xamarin.Forms 演进的下一个阶段。MAUI 促进了跨越各种平台的统一项目结构,同时仍允许完全访问原生 API。这种方法既简化了开发工作流程,又保持了原生特有的外观和功能。所有这些都使其成为跨平台应用程序开发的理想选择。
具体选择取决于您的资源、应用程序复杂性和性能要求。权衡利弊,做出正确的选择。
遵循平台指南
Android和iOS都有自己的设计语言——Material Design 和 Human Interface Guidelines(人机界面指南)。他们的目标是确保一致和直观的用户体验。一般来说,人们习惯了他们平台的特定行为,无论是后退按钮的位置,导航风格还是触摸手势。
在开发应用程序时,请参考这些指南,了解设计元素的外观,以及您应该使用的网格、比例、颜色和图像类型。此外,通知、小部件甚至应用程序安装过程等内容在不同平台上可能会有所不同。坚持平台指导原则可以帮助您让用户在使用应用时有宾至如归的感觉,缩短他们的学习曲线,并提高他们的满意度。
优化应用性能
应用的性能直接影响用户的感知和整体体验。用户期望即时响应和无缝的旅程,因此性能不佳的应用程序可能会导致沮丧并很快被放弃。最终,应用性能取决于几个因素:
加载时间。这是用户对您应用程序的第一印象。缓慢的加载速度会让用户在探索您的应用程序之前就望而却步。懒加载"、优化资产或异步操作等策略可以帮助您缩短加载时间。
有效利用资源。优化不佳的应用程序会占用设备资源,如CPU、内存和电池。过度的电池消耗反过来可能会很快导致卸载。注意资源消耗型操作、不必要的后台进程或内存泄漏。要优化代码,您可以使用性能分析工具,如Android Profiler或Xcode Instruments。
专注于UI和UX设计
良好的UX和UI设计对于一个成功的应用程序来说非常重要。最终,UX是关于了解用户的需求,并创建一个易于使用且令人愉快的应用程序。另一方面,UI设计是为了让你的应用在视觉上吸引人和直观。
仔细规划应用的信息架构和导航。您的用户应该能够以最小的努力和混乱来执行他们的任务。使用熟悉的导航模式,并保持界面整洁。
也不要忽视美学。颜色、字体和图标的一致性可以让你的应用感觉更精致。使用设计来指导用户,传达功能,甚至激发情感。执行良好的UX和UI设计可以使您的应用程序在拥挤的应用程序市场中脱颖而出。
确保你的设计是响应式的
在移动的开发中,一种尺寸并不适合所有人。Android的生态系统非常多样化。此操作系统可在具有各种屏幕大小、宽高比和分辨率的设备上运行。iOS虽然不那么分散,但仍然提供各种设备尺寸,并提供更多或更多的屏幕空间。
您的应用程序应该在所有这些设备上看起来和功能都非常好。一个深思熟虑的响应式设计将确保您的应用程序的UI调整到可用的屏幕空间,保持可用性和美学吸引力。这意味着你的应用的元素(按钮、文本、图像等)应适应屏幕大小和方向的变化。
您可以使用相对单位来调整大小和定位,灵活的布局(如Android的ConstraintLayout或iOS的AutoLayout),以及更大屏幕的多窗格布局。此外,请记住以各种分辨率提供资源,以防止可能导致模糊的缩放问题。
优先考虑安全
用户将他们的个人数据委托给您的应用,保护这些数据应该是您的首要任务之一。从代码本身开始,考虑应用程序各个级别的安全措施。
对静态和传输中的数据使用加密。使用安全和更新的协议进行数据传输。注意SQL注入或XSS(跨站脚本)漏洞,并通过适当的编码来防止它们。
如果您的应用涉及用户身份验证,请考虑采用双因素身份验证等措施来增强安全性。安全地存储令牌和敏感数据,并尽可能限制数据暴露。在您的应用程序中添加LastPass或Bitwarden等密码管理器的兼容性可以提高其安全性和用户体验。这些工具提供了一种安全的方式来存储和自动填充密码。但是您需要使用安全编码实践和这些服务提供的特定API来谨慎地实现这种集成。如果做得好,它证明了您对数据安全的承诺,并为您的用户添加了一个方便的功能。
确保与您的应用通信的API也是安全的,使用API密钥、OAuth或JWT(JSON Web令牌)等技术进行访问控制。定期更新和修补您的应用,以防范刚刚发现的漏洞。此外,不要忘记,良好使用刷新令牌对于应用程序安全性至关重要。它们会生成新的访问令牌,并允许用户保持登录状态,而无需重复登录。您需要安全地存储这些令牌以避免未经授权的使用。
留意奇怪的活动,例如突然的位置更改或多次失败的登录尝试。在这些情况下,请立即限制API访问,并要求用户重新登录。在便利性与强大的安全性之间取得平衡,有助于您与应用的用户建立信任。
彻底测试
一个良好的测试策略对于确保你的应用程序是可靠和健壮的至关重要。从应用程序的单个组件或功能的单元测试开始。这允许在微观层面上早期检测问题。
接下来,集成测试有助于验证应用的不同部分是否按预期协同工作。这可能包括测试数据库交互、API调用或用户界面元素。
功能测试从用户的角度关注应用程序的功能。每个功能在各种场景中是否都按预期运行?
最后,可用性测试可以让你了解用户对你的应用的体验。这可以揭示从开发人员的角度来看可能不明显的设计或流程问题。
还需要在不同的设备和操作系统上进行测试,以确保您的应用对所有用户都表现良好。自动化测试可以帮助快速覆盖多个场景,但手动测试对于检查视觉元素和交互至关重要。
使用分析
数据很重要。收集大量数据有助于了解应用程序的成功程度。您可以使用 Firebase、Google Analytics 或 Flurry 等分析工具收集有关用户行为和应用程序性能的信息。这将使您能够做出数据驱动的决策和改进。
查看每日和每月活跃用户、留存率、流失率和会话时长等关键指标。了解哪些功能最常用,哪些被忽略。跟踪用户的旅程,以确定他们在哪里遇到问题或中途退出。
加载时间、崩溃或API响应时间等性能指标可以帮助您优化应用。事件跟踪可以提供对用户如何与特定特征交互的理解。
同样重要的是了解用户获取工作的有效性。跟踪您的用户来自哪里以及哪些渠道最有效。衡量应用内购买或广告的转化率。
确保正确处理错误
错误在任何软件产品中都是不可避免的,但您的应用如何处理它们会对用户体验产生真正的影响。良好的错误处理可确保您的应用即使在意外情况下也保持稳定和可用。
例如,意外的关机或冻结可能会使用户感到沮丧。在可能的情况下,提供信息丰富的错误消息,帮助人们了解错误所在以及如何解决。
但是错误处理不仅仅是针对用户的。您还需要一个好的错误报告系统来通知开发人员问题。像Crashlytics这样的工具可以提供实时崩溃报告,这将帮助您识别问题并快速修复它们。
请记住您的应用可能遇到的不同类型的错误:网络错误、服务器错误、设备错误或甚至用户错误。为这些场景做好计划,并妥善处理。
添加社交媒体集成
如今,人人都在使用社交媒体。因此,将这些平台整合到您的移动应用程序中以增强用户体验是非常有意义的。
从入门开始,整合社交媒体可以让用户更轻松。他们可以使用现有的社交资料,而不用再创建和记忆另一套登录信息。
除了方便之外,这种集成还为提高应用程序内的参与度提供了一种途径。您可以提供直接将应用内成就分享到社交源的选项,这在大多数情况下有助于提高用户保留率。
这种自然的分享也可以作为你的应用程序的一种不引人注目的促销工具,这要归功于通过社会证明进行口碑营销的力量。
除此之外,在用户同意的情况下,社交媒体可以为您提供一个了解用户偏好的窗口,使您能够在应用程序中进一步个性化他们的体验。但是,在这里要小心行事,始终优先考虑用户隐私。
建立稳固的货币化战略
现在是时候考虑钱了。如何让你的app盈利?这里有几种策略可以使用。
免费增值这是一种流行而简单的方法:用户可以免费下载和使用该应用程序的基本功能。要解锁额外的高级功能,他们需要付款。当应用程序在高级版本中提供明确的价值时,这种方法效果很好。
应用内购买。在这里,用户可以在应用程序内购买商品或服务。这种策略通常用于游戏应用程序,玩家可以购买额外的生命,特殊的能量或化妆品。但它不仅限于游戏。其他应用程序也可以采用这种模式来销售产品或服务。
订阅。这也很简单:用户以固定的费用获得对内容或服务的访问。这适用于新闻、音乐、视频流或云服务等应用程序。
终身许可证支持。一次性解决方案,让您的用户感觉他们真正拥有应用程序及其所有功能。它可能会更昂贵,但通常会大大提高用户的满意度。
广告。如果你的应用吸引了大量的用户群,应用内广告可能是一个很好的收入来源。您可以显示横幅广告或奖励视频广告。尽量不要用太多或侵入性的广告来破坏用户体验。
赞助。这种模式,应用与广告商合作,广告商为用户提供完成某些应用内操作的奖励。这可以提高用户参与度,同时还可以增加收入。
考虑哪种策略最适合您的应用、业务目标和用户。您也可以考虑这些策略的组合。
使其可访问
要做一个真正好的应用程序,你需要考虑你所有的用户:包括那些生活有残疾的人,如视力受损、听力损失或运动障碍。添加辅助功能-不仅可以满足这些用户的需求,还可以增强应用程序的整体可用性。除此之外,这些功能可以为所有用户派上用场,而不仅仅是那些残疾人。想想智能手机中的“黑暗模式”,在光线不好的情况下是多么方便。
Android和iOS都有自己的指南和API,可帮助您制作更易于访问的应用程序。您可以使用一系列工具,如屏幕阅读器和可调对比度,灵活的文本大小和字幕功能。
在设计应用程序时,请考虑各种交互模式。触摸、语音、键盘输入或开关控制–所有这些不同的模式对有各种需求的人都或多或少有帮助。您还可以为屏幕阅读器朗读的图像提供替代文本,并确保您的配色方案对色盲者友好。
本地化
如果您计划在多个地区发布应用程序,则需要使其适应特定地区的语言、文化和其他要求。
首先确保您的代码可以支持不同的语言、日期和时间格式、数字格式和文本方向。将字符串和图像外部化,以便它们可以轻松地替换为不同的语言和字母。
与母语人士或专业翻译人员合作翻译您的应用内容。你还需要记住文化上的细微差别,比如颜色的含义、视觉隐喻或社会习俗。
确保您的应用程序符合当地法律和法规。此外,考虑本地化您的应用商店列表,以提高不同地区的可发现性和转化率。
添加离线功能
即使在当今世界,互联网连接也不总是有保证的。用户可能处于信号接收较差的区域,或者更喜欢保存数据使用。因此,即使在离线模式下,您的应用程序也应该有效运行。
首先,决定哪些功能应该离线可用。并非所有这些都适合或可行于离线使用。例如,查看和编辑数据通常可以离线使用,而需要实时交互或数据更新的功能可能无法离线使用。
使用缓存策略在本地存储数据。这可能涉及缓存API响应、预加载数据或存储用户生成的内容。iOS中的CoreData或Android中的Room等技术以及Realm等库可以帮助管理本地数据存储。
不要忘记确保本地数据的安全性,特别是如果它涉及敏感信息。您可能会考虑在存储数据之前对其进行验证或清理。
接下来,计划设备重新联机后的数据同步。它应该是无缝和高效的,最大限度地减少数据使用和电池消耗。您还需要处理在多个设备上脱机修改相同数据的冲突。
此外,当用户处于脱机模式时以及当他们的更改已同步时,通知用户。这可以防止混淆并增强对应用的信任。
计划定期更新
APP不是静态的产品,而是动态的实体。他们过着自己的生活,并随着时间的推移而发展。定期更新将帮助您满足不断变化的用户期望,修复错误,提高性能,并保持领先于竞争对手。
为未来的功能和改进计划路线图。听取用户反馈并监控应用分析,以确定需要增强的领域。提供明显优势的更新可以提高用户保留率和参与度。
此外,请准备好调整您的应用程序以适应技术进步和平台变化。这可能包括采用新的API,为新的操作系统版本更新应用程序,甚至为新设备进行优化。
虽然定期更新很重要,但要避免过于频繁地进行更改或没有真实的的好处。这可能会让用户感到沮丧,并导致负面评论。平衡创新与稳定性,让您的受众满意。
结论部分
开发一个应用程序不是短跑,而是一场马拉松,不会在发布时结束。您的产品将继续发展,由用户的反馈,新技术和不断变化的趋势塑造。保持新鲜,并保持相关性。
上面的列表只是一个蓝图。最终,创建一个成功的应用程序的力量属于你。
原文:https://dev.to/chkon/mobile-development-best-practices-strategies-for-building-successful-apps-for-android-and-ios-bgc
相关文章:

移动开发最佳实践:为 Android 和 iOS 构建成功应用的策略
您可以将本文作为指南,确保您的应用程序符合可行的最重要标准。请注意,这份清单远非详尽无遗;您可以加以利用,并添加一些自己的见解。 了解您的目标受众 要制作一个成功的应用程序,你需要了解你是为谁制作的。从创建…...

2023年第二届网络安全国际会议(CSW 2023)
会议简介 Brief Introduction 2023年第二届网络安全国际会议(CSW 2023) 会议时间:2023年10月13日-15日 召开地点:中国杭州 大会官网:www.cybersecurityworkshop.org 2023年第二届网络安全国际会议(CSW 2023)由杭州电子科技大学,国…...

【100天精通python】Day23:正则表达式,基本语法与re模块详解示例
目录 专栏导读 1 正则表达式概述 2 正则表达式语法 2.1 正则表达式语法元素 2.2 正则表达式的分组操作 3 re 模块详解与示例 4 正则表达式修饰符 专栏导读 专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html 1 正则表达式概述 python 的…...

C++ 派生类成员的标识与访问——作用域分辨符
在派生类中,成员可以按访问属性分为以下四种: (1)不可访问成员。这是从基类私有成员继承下来的,派生类或是建立派生类对象的模块都无法访问到它们,如果从派生类继续派生新类,也是无法访问的。 &…...

SQL注入实操三(SQLilabs Less41-65)
文章目录 一、sqli-labs靶场1.轮子模式总结2.Less-41 stacked Query Intiger type blinda.注入点判断b.轮子测试c.获取数据库名称d.堆叠注入e.堆叠注入外带注入获取表名f.堆叠注入外带注入获取列名g.堆叠注入外带注入获取表内数据 3.Less-42 Stacked Query error baseda.注入点…...

(亲测解决)PyCharm 从目录下导包提示 unresolved reference(完整图解)
最近在进行一个Flask项目的过程中遇到了unresolved reference 包名的问题,在网上找了好久解决方案,并没有一个能让我一步到位解决问题的。 后来,我对该问题和网上的解决方案进行了分析,发现网上大多数都是针对项目同一目录下的py…...

【AI量化模型】跑通baseline
跑通baseline 任务学习内容特征工程模型训练与验证 bug未纠错的结果 任务 教程部署在百度 AI Studio,可以一键fork运行代码,选择*v100 32g1*的配置,baseline运行大约20分钟,再加上进阶部分大约40分钟 学习内容 特征工程 构建基…...

ElasticSearch:全文检索及倒排索引原理
1.从全文检索说起 首先介绍一下结构化与非结构化数据: 结构化数据将数据具有的特征事先以结构化的形式定义好,数据有固定的格式或有限的长度。典型的结构化数据就是传统关系型数据库的表结构,数据特征直接体现在表结构的字段上,…...

blk_mq_alloc_tag_set函数struct blk_mq_tag_set结构体学习
struct blk_mq_tag_set结构体 include/linux/blk-mq.h struct blk_mq_tag_set {unsigned int *mq_map;const struct blk_mq_ops *ops;unsigned int nr_hw_queues;unsigned int queue_depth; /* max hw supported */unsigned int reserved_tags;unsigned int cmd_size; /…...

Windows搭建Snort环境及使用方式
目录 0x01 前置环境0x02修改配置文件0x03 自测0x04 使用0x05 感言 0x01 前置环境 环境描述windows10snort2.9.2https://www.snort.org/downloads 先把上面环境下载好! 需要注意的是安装npcap这个软件 0x02修改配置文件 软件安装目录:C:/Snort/ 配置文…...

Android network — iptables四表五链
Android network — iptables四表五链 1. iptables简介2. iptables的四表五链2.1 iptables流程图2.2 四表2.3 五链2.4 iptables的常见情况 3. NAT工作原理3.1 BNAT3.2 NAPT 4. iptables配置 本文主要介绍了iptables的基本工作原理和四表五链等基本概念以及NAT的工作原理。 1. i…...

【C++从0到王者】第十六站:stack和queue的使用
文章目录 一、stack的使用1.stack的介绍2.stack的使用 二、queue的使用1.queue的护额晒2.queue的使用 三、stack和queue相关算法题1.最小栈2.栈的压入、弹出序列3.逆波兰表达式4.两个栈实现一个队列5.用两个队列实现栈6.二叉树的层序遍历1.双队列2.用一个变量levelSize去控制 7…...

centos7 部署Tomcat和jpress应用
目录 一、静态、动态、伪静态 二、Web 1.0 和 Web 2.0 三、centos7 部署Tomcat 3.1 安装、配置jdk 3.2 安装 Tomcat 3.3 配置服务启动脚本 3.3.1 创建用户和组 3.3.2 创建tomcat.conf文件 3.3.3 创建服务脚本(tomcat.service) 3.3.4 重新加载守护进程并且测试 四、部…...

Unity Shader:常用的C#与shader交互的方法
俗话说久病成医,虽然不是专业技术美术,但代码写久了自然会积累一些常用的shader交互方法。零零散散的,总结如下: 1,改变UGUI的材质球属性 有时候我们需要改变ui的一些属性,从而实现想要的效果。通常UGUI上…...

luajit 使用 clang编译的坑
为了尝试将LuaJIT接入虚幻Lua插件之中,需要预编译LuaJIT链接库,在桌面平台问题不大, 主要是移动平台,涉及跨平台编译,因为对跨平台编译具体细节没有系统研究,这里先记录一下跨平台编译LuaJIT的主要过程 由于官方提供的…...

[SWPUCTF 2021 新生赛]Do_you_know_http
打开环境,根据题目提示,应该是考察http相关的东西 打开环境提示说请使用wLLm浏览器访问 那我们更改浏览器信息,在burp重发器中发包后发现是302重定向,但是提示说success成功,说明 我们修改是成功的,既然是…...

web前端之CSS
文章目录 一、CSS简介1.1 CSS语法规则 二、CSS的引用方法2.1 定义行内样式表2.2定义内部样式表2.3链入外部样式表2.4导入外部样式表 三、CSS选择符3.1 基本选择符3.1.1 标签选择符3.1.2 class类选择符3.1.3 id选择符 3.2 复合选择符3.2.1 交集选择符(合并选择器&…...

HarmonyOS元服务开发实践:桌面卡片字典
一、项目说明 1.DEMO创意为卡片字典。 2.不同卡片显示不同内容:微卡、小卡、中卡、大卡,根据不同卡片特征显示同一个字的不同内容,基于用户习惯可选择喜欢的卡片。 3.万能卡片刷新:用户点击卡片刷新按钮查看新内容,同时…...

xLua学习
xLua教程:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/XLua%E6%95%99%E7%A8%8B.md xLua配置:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/configure.md FAQ:https://github.com/Tencent/xLua/blob/maste…...

Web3到底是个啥?
Web3到底是个啥? Web3是近两年来科技领域最火热的概念之一,但是目前对于Web3的定义却仍然没有形成标准答案,相当多对于Web3的理解,都是建立在虚拟货币行业(即俗称的“币圈”)的逻辑基础之上的。 区块链服务…...

pycharm、idea、golang等JetBrains其他IDE修改行分隔符(换行符)
文章目录 pycharm、idea、golang系列修改行分隔符我应该选择什么换行符JetBrains IDE,默认行分隔符 是跟随系统修改JetBrains IDE,默认行分隔符 pycharm、idea、golang系列修改行分隔符 一般来说,不同的开发环境和项目对换行格式的使用偏好不同: Windo…...

ThinkPHP函数深度解析
ThinkPHP是一个具有丰富功能和强大灵活性的PHP开发框架。在这篇文章中,我们将详细介绍ThinkPHP的一些关键函数,以帮助开发人员更好地理解和使用这个框架。 1. 入门:ThinkPHP的核心函数 1.1 C()函数 C()函数用于读取和设置配置参数。它是Thin…...

【java】【maven】【高级】MAVEN聚合继承属性等
目录 1、模块开发与设计 2、聚合 2、继承 3、属性 4、版本管理 5、资源配置 6、多环境配置 7、多环境开发配置 8、跳过测试 9、私服 前言:maven的高级使用包含分模块开发与设计、聚合、继承、属性、版本管理、资源配置、多环境配置、多环境开发配置、跳过…...

LeetCode150道面试经典题-合并两个有序数组(简单)
合并两个有序数组 题目: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意&a…...

记录 运维三剑客一件部署的的docker-compose,yml文件
CAdvisor: 收集 InfluxDB: 存储 Grafana: 展示 version: 3.1volumes:grafana_data: {}services:influxdb:image: tutum/influxdb:0.9restart: alwaysenvironment:- PRE_CREATE_DBcadvisorports:- "8083:8083"- "8086:8086"volumes:- ./data/inf…...

Xposed框架开发
文章目录 xpose插件开发步骤清单文件新建一个类(插件入口点)设置入口点 Hook第一个实例zhuceji.apk一些常用的HOOKHookH5PluginHookProxyPluginHookSystem 资料Xposed原理初探 xpose插件开发步骤 magisk安装与配置 Xpose Framework API LSPosed magisk …...

2.13 Android ebpf非网络相关帮助函数API汇总(十二 本章完)
1.long bpf_user_ringbuf_drain(struct bpf_map *map, void *callback_fn, void *ctx, u64 flags) 描述:从指定的用户环形缓冲区中排出样本,并为每个此类样本调用提供的回调: long (*callback_fn)(struct bpf_dynptr *dynptr, void *ctx); 如果callback_fn返回0,帮助函数…...

关于游戏的笔记
关于搭建秦时明月2一键端,并且开启秘境神秘商人东海寻仙幻化 1.该游戏下主要的目录 gm端 服务框架 服务端 2.修改对应的文件 C:\qs\Q2Server\server\conf_common\ManagerAddress.xmlC:\qs\Q2Server\server\conf_manager\GateServer.xml修改ip 3.启动gm startup…...

vue diff 前后缀+最长递增子序列算法
文章目录 查找相同前后缀通过前后缀位置信息新增节点通过前后缀位置信息删除节点 中间部份 diff判断节点是否需要移动删除节点删除未查找到的节点删除多余节点 移动和新增节点最长递增子序列 求解最长递增子序列位置信息 查找相同前后缀 如上图所示,新旧 children 拥…...

【Python】Locust持续优化:InfluxDB与Grafana实现数据持久化与可视化分析
目录 前言 influxDB 安装运行InfluxDB 用Python 上报数据到influxdb ocust 数据写入到 influx Locust的生命周期 上报数据 优化升级 配置Grafana 总结 资料获取方法 前言 在进行性能测试时,我们需要对测试结果进行监控和分析,以便于及时发现问…...