- 博客(1350)
- 收藏
- 关注
原创 算法基础:从斐波那契数列的计算理解动态规划数组的作用
这篇文章以Fibonacci数列计算的递归实现使用动态规划法的优化为例,对动态规划方式所能起到的作用进行说明。
2020-10-31 10:07:37 679
原创 从ARM镜像的三种方式看统一镜像构建
Java虚拟机所提出的“一处编译、处处运行”的机制使得Java得到了极大的发展,不依赖与底层的操作系统,在JVM层进行解耦,同一份Java字节码在不同平台的运行真正实现了跨操作系统的需求,从此Java应用基本上默认被认为跨操作系统可用的。这种思路显然对于容器的发展具有同样的借鉴作用,在前面的文章曾介绍过使用QEMU在x86体系架构的机器上进行ARM镜像构建的方式,这篇文章以ARM镜像的三种构建方式为例对镜像的统一构建进行展开。
2020-10-31 05:33:50 1985
原创 Docker跨平台架构的新特性buildx的启用方式
Docker在19.03引入了一个新的特性,使得Docker可以构建不同CPU体系结构的镜像,比如ARM镜像,这是不必引入模拟器的情况下,Docker自身所提供的原生统一构建机制,但是使用时需要进行设定才能进行使用,这篇文章以此实验特性的开启为例,如何暂时开启或者永久开启的方式进行说明。
2020-10-30 21:32:24 2329
原创 Docker基础:Docker Desktop community的手动更新方法
这篇文章介绍一下MacOS上的Docker Desktop community手动更新的方法。
2020-10-30 19:56:34 5009
原创 Dockerfile实践之多阶段构建
在Docker 17.05之后,Docker在构建中支持了多阶段构建,简单来说,Dockerfile中可以有多个FROM,这篇文章通过一个简单的示例来说明多阶段构建的使用场景和方式。
2020-10-30 05:23:16 1049
原创 版本管理工具Subversion Edge的备份恢复与数据迁移方案
软件开发生命周期中会使用到多种工具,这些工具的更迭与迁移,备份与恢复都构成了软件开发生命周期的重要部分。这篇文章以当下最新版本的Subversion Edge为例介绍一下其备份恢复与数据迁移方案,因相关内容官方资料不全,类似内容较少,所以进行了此部分整理。在这篇文章中获取当下最新的版本进行了验证,对于实际的使用者相信有较强的借鉴作用。
2020-10-29 20:36:38 2341 3
原创 常见经典排序算法总结
算法几乎是每个软件从业者都会或多或少需要接触的内容,而排序则是算法中最基础的内容,这篇文章整理了常见的经典排序算法,并对于算法的实现和要点进行整理。
2020-10-29 19:42:12 370
原创 算法基础:排序算法:希尔排序
希尔排序是一个年过花甲的排序算法,是最早一批冲进时间复杂度n平方之内的算法之一,本质上是插入算法的优化。由Shell-Metzner在1959年所提出,在很长一段时间内都是以希尔排序命名,像我这样的古老的程序员念书的时候,这个排序还是被称为希尔排序的。据说希尔本人认为这个算法不应该以他的名字命名,如果根据希尔排序的原理或者实现方式来命名的话,它可能会被命名为“一种优化的插入排序算法”或者“一种改进的增量递减的插入排序改进算法”,虽然这更像一个专利的名称。这篇文章继续介绍一下希尔排序的主要要点和实现。
2020-10-29 06:25:51 366
原创 算法基础:排序算法:快速排序
快速排序的整体的思路也非常优秀,相较于冒泡选择还是插入的平均时间复杂度都是达到了O(n平方),而快速排序也是降至 O(nlogn),而且相较于归并排序对于空间的额外需求O(n),快速排序这方面也没有问题。唯一的一个问题可能在于由于存在非临元素的交换,可能会产生不稳定性,所以快速排序是不稳定的排序。这篇文章介绍一下归并排序的主要要点和实现,也是比较不错的一个排序算法,深受很多高校老师和面试官的青睐。
2020-10-29 05:30:00 418
原创 算法基础:排序基础:分区算法之单向循环法
前一篇文章中介绍了快排的核心分区算法的双向循环法的实现,分区算法将待排序列根据基准值进行分区,形成整体有序局部无序的结果特征,加之每次执行都会使序列中的基准值就位,非常简洁和有效。双向循环虽然理解简单,但是实现稍微繁琐(虽然之后十来行,但是毕竟是经典算法,还是可以利用别的方式进一步的简化),这篇文章继续介绍一下另外一种方式:单向循环法。
2020-10-29 04:43:59 1730
原创 算法基础:排序基础:分区算法之双向循环法
分区算法也被称为分割算法,实际上它是快速排序的核心内容,此部分内容如果理解了,快排就剩下一个三行的递归套路需要写了。这篇文章来介绍一下快排的内核:分区算法。
2020-10-29 04:12:30 631
原创 算法基础:排序算法:计数排序
计数排序也被称为桶排序或者箱排序,都是它和常规的桶排序还是有较为明显的区别,在这篇文章中还是使用计数排序的称呼。计数排序可以进一步将排序的时间复杂度降低到O(n),而且也可以是稳定的排序,理解起来也很容易,实现简单。它算是空间换时间策略的代表之一,空间消耗过大,受排序序列的影响极大,能够排序的场合受限,这些也都是计数排序的阿喀琉斯之踵(或许类比失当,计数排序也很难称得上是排序之中的阿喀琉斯)。
2020-10-27 06:49:25 555
原创 算法基础:排序算法:归并排序
归并排序相较于冒泡、选择与插入排序,理解和实现起来稍微有一点点麻烦的排序算法。但是整体的思路非常优秀,无论是冒泡选择还是插入的平均时间复杂度都是达到了O(n平方),而归并排序则成功的将其降至 O(nlogn)。这篇文章介绍一下归并排序的主要要点和实现,是比较不错的一个排序算法。
2020-10-26 20:29:01 294
原创 算法基础:排序算法:插入排序
插入排序也是非常容易理解的排序算法,这篇文章介绍一下排序的主要要点和实现,插入排序的主要做法是外层循环中选定插入元素,内层循环移动并空出插入位置,返回外层循环进行插入。
2020-10-26 08:31:00 356
原创 算法基础:排序算法:冒泡排序
冒泡排序是所有排序中最为人所知的排序大概毫不为过,因为其名称中就包含了算法的主要思路,这篇文章介绍一下冒泡排序的主要要点和实现以及简单的优化思路。
2020-10-26 06:47:58 425
原创 算法基础:排序算法:7个常用的衡量指标
时间复杂度和空间复杂度是衡量算法的重要指标,对于排序算法这一特定算法,这篇文章整理了一些常见的基础性的指标,后续将以此为基础进行进一步的解释。
2020-10-25 20:53:18 2681
原创 算法基础:使用STL实现全排列
STL是标准模版库的缩写,是泛化编程的实现,基本观念是将数据和操作进行分离,数据使用容器进行管理,操作由算法进行实现,迭代器在两者之间进行沟通,使得任何算法和任何容器都有可能进行交互运作。这篇文章以一个简单的例子进行介绍STL使用上的便利之处。
2020-10-25 05:36:46 734
原创 C语言基础:printf使用指南
与scanf类似,printf大概是每个C语言开发者使用的第一个函数,除了打印Hello World只剩下应付C语言上机作业或者算法比赛或考试了,这篇文章将继续温故知新,或者说带你了解一些从来没有注意过的printf的特性。
2020-10-24 06:22:17 911 1
原创 C语言基础:scanf使用指南
在前面一篇文章中介绍了scanf的基本使用方法,这篇文章继续介绍一些稍微冷门的有用知识点,两篇文章结合起来基本上能够大体掌握scanf的使用方式。
2020-10-24 05:32:40 1231
原创 C语言基础:scanf使用基础
scanf大概率只是在C语言上机作业或者算法比赛或考试中广泛使用的一个函数,在实际项目中直接使用的概率应该很低,但是做一些算法模拟的时候却很有用处,值得花点时间稍微掌握一下。
2020-10-23 07:15:01 706
原创 算法基础:全排列问题
全排列是常见的一种场景,对于缺乏更好技巧的时候,作为暴力破解的思路,结合深度遍历使用对初入门者非常有效,代价就是时间复杂度很高。这篇文章介绍一下使用临位对换法来解决全排列的思路和方法。
2020-10-22 21:17:32 861
原创 基础算法:两步理解基础背包问题
动态规划问题中最为典型的问题之一就是背包问题,而0-1背包是其中最为基础的,N个物品具有各自的重量和价值,根据背包可容纳的重量W的限制,求取在此限制之下能装入的物品的最大价值,一般情况下会转化为dp的一个N*W复杂度的问题求解,这篇文章通过简单的示例进行解释和说明。
2020-10-11 09:43:25 591
原创 基础算法:编辑距离
编辑距离又称莱文斯坦距离,是俄国数学家Vladimir Levenshtein在1965年所提出的概念,主要用来判断对于两个字符串的差异化的量化,确认需要多少次处理才能将一个字符串变为另外一个,处理一般分为添加、删除和替换三种。
2020-10-07 19:47:06 3760 3
原创 GDB基础:MacOS上的GDB安装与设定
这篇文章介绍一下MacOS下GDB的安装与设定方法。在MacOS上使用LLDB可能会更方便一些,但是对于习惯gdb的用于以及LLDB无法完成的地方,GDB还是有很多优势的。
2020-09-19 03:45:49 2559
原创 Apache Superset:1:概要介绍
Apache Superset是一个可用于数据展示与数据可视化的开源软件,在处理大量数据方面效果显著。Superset最招为Airbnb所开发,在2017年成为Apache的孵化项目。
2020-09-16 22:40:31 1843 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人