- 博客(15)
- 收藏
- 关注
原创 什么是移动开发?
框架(ReactNative, Flutter, Uni-App, weex, taro ...)---------------原生App开发: iOS, Android, HarmonyOS。项目都要打包: iOS-ipa包, Android-apk包, HarmonyOS-app包。iOS: Xcode(开发工具), Object-C/Swift(开发语言)-------------混合App开发模式。------------跨平台App开发模式。开发运行在手机设备上的应用。一套代码发布到多个平台。
2024-10-19 10:13:20
494
原创 十大排序之快速排序
快速排序是一种分治算法,它的思想是通过选定一个基准值,将数组分成两个部分,左边部分的元素都小于等于基准值,右边部分的元素都大于基准值,然后再递归地对左右两个部分进行快速排序。快速排序广泛应用于各种场景,如数据库、搜索引擎等,其高效的排序速度和低空间复杂度使得它成为了一种非常重要的排序算法。总结: 快速排序的时间复杂度为O(nlogn),空间复杂度为O(logn),是一种高效的排序算法。时间复杂度: 快速排序是一种分治思想的排序算法,它的时间复杂度取决于基准数的选取。快速排序的空间复杂度为 O(logn)
2024-09-15 11:32:22
1010
原创 四大排序之堆排序
堆排序(Heap Sort)是一种选择排序,它的特点是:对需要排序的数据建立一个堆,然后每次取出堆顶元素,直到堆为空。②假设当前节点的下标为 i,左子节点的下标为 2i+1,右子节点的下标为 2i+2,父节点的下标为 (i-1)/2。③对于每个节点 i,比较它和左右子节点的值,找出其中最大的值,并将其与节点 i 进行交换。①将堆的根节点(也就是最大值)与堆的最后一个元素交换,这样最大值就被放在了正确的位置上。③重复进行步骤 ① 和步骤 ②,直到堆的大小为 1,这样我们就得到了一个有序的序列。
2024-09-14 08:16:29
447
原创 四大排序之希尔排序
希尔排序(Shell sort)是插入排序的一种改进版本,通过使用更大的步长来减少待排序列表中的元素,并最终通过使用步长为 1 的插入排序将数据有序化。希尔排序是一种改进版的插入排序,从历史的角度来看,它是一种非常非常重要的排序算法,因为它解除了人们对原有排序的固有认知。但是现在已经有很多更加优秀的排序算法:归并排序、快速排序等,所以从实际的应用角度来说,希尔排序已经使用的非常非常少了。希尔排序是一种创新的排序算法,它的名字来源于它的发明者Donald Shell,1959年,希尔排序算法诞生了。
2024-09-14 08:12:50
643
原创 后台管理系统中如何进行大文件(视频)上传?
我们在上面有提到,如果内容相同的文件进行hash计算时,对应的hash值应该是一样的,而且我们在服务器上给上传的文件命名的时候就是用对应的hash值命名的,所以在上传之前是不是可以加一个判断,如果有对应的这个文件,就不用再重复上传了,直接告诉用户上传成功,给用户的感觉就像是实现了秒传。到这里,我们就已经实现了大文件的分片上传的基本功能了,但是我们没有考虑到如果上传相同的文件的情况,而且如果中间网络断了,我们就得重新上传所有的分片,这些情况在大文件上传中也都需要考虑到,下面,我们就来解决下这两个问题。
2024-09-13 11:36:55
434
原创 算法之归并排序
这个算法最早出现在1945年,由约翰·冯·诺伊曼(John von Neumann)(又一个天才,现代计算机之父,冯·诺依曼结构、普林斯顿结构)首次提出。归并排序的基本思路是先将待排序数组递归地拆分成两个子数组,然后对每个子数组进行排序,最后将两个有序子数组合并成一个有序数组。虽然归并排序看起来比较复杂,但是只要理解了基本思路,实现起来并不困难,而且它还是一个非常有趣的算法。归并排序的代码实现较为简单,但要注意关于递归函数和合并函数的实现。归并排序是一种不需要过多研究的算法,适合于所有的排序场景。
2024-09-12 08:52:41
979
原创 算法之插入排序
插入排序就像是打扑克牌,从牌堆顶取一张牌,找到合适的位置插入到已有牌的顺序中,并不断重复这一步骤直到所有的牌都被插入到合适的位置,最终使得整副牌有序。由于插入排序的最好时间复杂度与最坏时间复杂度都接近O(n^2),所以插入排序适用于数据规模不大的场合,如果数据规模很大,通常使用其他算法。插入排序的时间复杂度在最好的情况下为O(n),在最坏的情况下为O(n^2),平均时间复杂度为O(n^2)。插入排序的优势在于它的性能表现在已经有序的序列上比冒泡排序、选择排序两种算法要好。
2024-09-12 08:50:44
1093
原创 十大排序之选择排序
我们分析选择排序中的每一步,再将每一步的时间复杂度加起来,最后得到的就是选择排序的时间复杂度。计算选择排序算法的时间复杂度,通常是通过分析算法中每一步的执行次数来确定的。
2024-09-11 08:07:22
465
原创 前端常见算法题
时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的次数。随着n的不断增大,时间复杂度不断增大,算法花费时间越多。常数阶O(1)对数阶O(log2 n)线性阶O(n)线性对数阶O(n log2 n)平方阶O(n^2)立方阶O(n^3)k次方阶O(n^K)指数阶O(2^n)选取相对增长最高的项最高项系数是都化为1若是常数的话用O(1)表示举个例子:如f(n)=3*n^4+3n+300 则 O(n)=n^4通常我们计算时间复杂度都是计算最坏情况。
2024-09-10 19:24:20
392
原创 性能分析四板斧
比如设置了onAreaChange,就算回调中没有任何逻辑,系统也会在C++侧去计算该组件的大小和位置变化情况,并且把结果回调到TS侧,额外消耗了系统开销。应该避免在onScroll、onAreaChange等系统高频的回调接口中进行冗余和耗时操作,这些接口在系统的每一帧绘制中都会执行回调操作,因此在这些接口中进行冗余和耗时操作会大量消耗系统资源,影响应用运行性能。推荐在Release版本中,尽量删除所有Trace信息,删除Debug日志,减少额外的系统开销。
2024-09-09 20:59:32
279
原创 性能分析四板斧
开发者封装一个数据结构类用于进行状态变量关联时,应该避免过多的成员变量关联大量ArkUI组件,这种情况下,当这个大对象的一个成员变量更新时,会导致所有关联这个大对象的组件都同时进行刷新,造成不必要的性能损耗,从而影响帧率。在父子组件关联的场景下,@Provide+@Consume开销要大于@State+@Prop/@Link,因此在该场景下推荐使用@State+@Prop/@Link的组合。),控制状态变量关联组件数量上限,控制对象级状态变量的成员变量关联组件数,减少系统的组件渲染负载,提升应用流畅度。
2024-09-09 20:58:38
612
原创 性能分析四板斧
复杂布局提供了场景化的能力(详细介绍可参考文章:优化布局性能使用Flex构建弹性布局;List既具备线性布局的特点,同时支持懒加载和滑动的能力;Grid/GridItem提供了宫格布局的能力,同时也支持懒加载和滑动能力;RelativeContainer是一种相对布局,通过描述各个内容组件间相互关系来指导内容元素的布局过程,可从横纵两个方面进行布局描述,是一种二维布局算法;
2024-09-09 20:57:57
578
原创 性能分析四板斧
在开发HarmonyOS NEXT应用时,优化应用性能是至关重要的。本文将介绍应用开发过程中常见的一些性能问题,并提供相应的解决方案,配合相关参考示例,帮助开发者解决大部分性能问题。我们把应用性能分析的方法划分为了,下面将介绍如何使用性能分析四板斧,解决应用开发过程中的性能问题。
2024-09-09 20:55:34
801
原创 冒泡排序理解
在冒泡排序中,每次比较两个相邻的元素,并交换它们的位置,如果左边的元素比右边的元素大,则交换它们的位置。这样的比较和交换的过程可以用一个循环实现。由此可见,冒泡排序的时间复杂度主要取决于数据的初始顺序,最坏情况下时间复杂度是O(n^2),不适用于大规模数据的排序。这种算法是稳定的,即相等元素的相对位置不会发生变化。因此,冒泡排序适用于数据规模小的场景。冒泡排序是一种简单的排序方法。
2024-09-09 16:23:30
921
原创 【什么是移动开发?】
--------------原生App开发: iOS, Android, HarmonyOS。项目都要打包: iOS-ipa包, Android-apk包, HarmonyOS-app包。App/基于宿主环境的应用程序(小程序...)/M站(基于浏览器运行的应用)iOS: Xcode(开发工具), Object-C/Swift(开发语言)-------------混合App开发模式。------------跨平台App开发模式。开发运行在手机设备上的应用。一套代码发布到多个平台。
2024-09-08 20:05:00
371
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人