自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1350)
  • 收藏
  • 关注

原创 算法基础:从斐波那契数列的计算理解动态规划数组的作用

这篇文章以Fibonacci数列计算的递归实现使用动态规划法的优化为例,对动态规划方式所能起到的作用进行说明。

2020-10-31 10:07:37 679

原创 C基础:程序执行时间的计算方法的三种方式

这篇文章介绍一下在C或者C++中计算程序执行时间的三种常见方法。

2020-10-31 09:25:25 7403

原创 从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

原创 如何在x86架构下进行ARM镜像的构建与运行

这篇文章介绍一下使用QEMU进行容器化的构建和执行方式。

2020-10-28 19:50:21 11247 1

原创 算法基础:排序算法:计数排序

计数排序也被称为桶排序或者箱排序,都是它和常规的桶排序还是有较为明显的区别,在这篇文章中还是使用计数排序的称呼。计数排序可以进一步将排序的时间复杂度降低到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 07:18:17 475

原创 算法基础:排序算法:冒泡排序

冒泡排序是所有排序中最为人所知的排序大概毫不为过,因为其名称中就包含了算法的主要思路,这篇文章介绍一下冒泡排序的主要要点和实现以及简单的优化思路。

2020-10-26 06:47:58 425

原创 算法基础:排序算法:7个常用的衡量指标

时间复杂度和空间复杂度是衡量算法的重要指标,对于排序算法这一特定算法,这篇文章整理了一些常见的基础性的指标,后续将以此为基础进行进一步的解释。

2020-10-25 20:53:18 2681

原创 C++基础:STL之可重复集合multiset

这篇文章介绍一下STL中multiset的基本使用方法。

2020-10-25 20:04:05 2836

原创 C++基础:STL之unordered_map

这篇文章介绍一下STL中unordered_map的基本使用方法。

2020-10-25 19:49:57 826

原创 C++基础:STL之set

这篇文章介绍一下STL中set的基本使用方法。

2020-10-25 16:08:14 832

原创 C++基础:STL之map

这篇文章介绍一下STL中map的基本使用方法。

2020-10-25 15:29:54 329

原创 C++基础:STL之双向队列deque

这篇文章介绍一下STL中队列deque的基本使用方法。

2020-10-25 11:54:13 729

原创 C++基础:STL之双向链表list

这篇文章介绍一下STL中list的基本使用方法。

2020-10-25 10:37:40 575

原创 C++基础:STL之队列queue

这篇文章介绍一下STL中队列queue的基本使用方法。

2020-10-25 09:25:43 1378

原创 C++基础:STL之栈stack

这篇文章介绍一下STL中stack的基本使用方法。

2020-10-25 09:07:00 957 1

原创 C++基础:STL之变长数组vector

这篇文章介绍一下STL中vector的基本使用方法。

2020-10-25 06:50:55 590 1

原创 算法基础:使用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

原创 C语言基础:哪儿来的32766

这篇文章通过一个简单的示例程序来介绍一下如何结合使用IDE来学习C语言。

2020-10-01 07:21:34 11947 24

原创 C语言基础:使用IDE快速开发

这篇文章介绍一下如何使用CLion进行C语言的开发与调试。

2020-09-30 22:15:06 12457 10

原创 GDB基础:MacOS上的GDB安装与设定

这篇文章介绍一下MacOS下GDB的安装与设定方法。在MacOS上使用LLDB可能会更方便一些,但是对于习惯gdb的用于以及LLDB无法完成的地方,GDB还是有很多优势的。

2020-09-19 03:45:49 2559

原创 架构解密的读书笔记

治辉的架构解密的第2版,上周在去北京的路上一边读一边做了一些笔记,涉猎广泛,由浅入深,循序渐进,非常推荐一读。

2020-09-17 05:10:46 3494 1

原创 Apache Superset:1:概要介绍

Apache Superset是一个可用于数据展示与数据可视化的开源软件,在处理大量数据方面效果显著。Superset最招为Airbnb所开发,在2017年成为Apache的孵化项目。

2020-09-16 22:40:31 1843 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除