专注于做有价值的技术原创

0%

1. 表,栈和队列

表,栈和队列是计算机科学中最简单和最基本的三种底层数据结构。事实上,每一个有意义的程序都将明晰地至少使用一种这样的数据结构,而栈则在程序中总是要间接地用到,不管你在程序中是否做了声明。

1.1 抽象数据类型(ADT)

在计算机软件编程中,我们会接触到诸如整型,浮点型,字符型,布尔型等基本数据类型,也有一些更为复杂的复合数据类型,如数组,字典(散列表),元组等。如果我们抛开这些数据类型具体实现,进一步抽象,给出更一般的定义,即每一种数据类型实际是一些特定操作的集合。我们称这些操作的集合抽象数据类型abstract data type, ADT)。ADT 是数学意义上的抽象,它不约束各个操作的具体实现,对于每种 ADT 并不存在什么法则来告诉我们必须要有哪些操作,这只是一个设计决策。

阅读全文 »

前言

本文所有 shell 命令均在阿里云ECS服务器上测试过,以确保每行代码都是百分百可用的。测试使用的服务器配置信息如下:

  • 2核8G内存 40G SSD云盘
  • CentOS 7.6 64位

为了精简篇幅,同时又方便直观的了解各命令执行的效果。本文对命令输出的处理方式分为以下三种:

  1. 在提供必要的输出信息的命令行前加上 $ , 代表该行为要执行的命令,同时也意味着紧接着的是该命令执行后的输出信息,直到遇到下一个以 $ 开始的行,用于区分命令和命令的输出,实际运行不用加 $

  2. 未加 $ 的整个代码块,都不提供输出信息;

  3. 输出信息量大,但又有一些影响我们了解重要信息的输出,通过管道,使用实用程序 grep 过滤重要信息,格式:$ command | grep xxx

阅读全文 »

前言

在数据量不大时,我们的程序只需要考虑能否实现功能。但随着用户量的增长以及随之而来的用户行为数据和各种业务数据的急剧增加,那些仅仅能满足功能的代码,就不得不再考虑它的运行效率。如果运行过于漫长,就算实现了功能,这样的程序在实际生产中也是不能用的,必须对程序算法进行分析,给出时间复杂度更低的改进算法。本文从初学者角度介绍算法分析的数学基础,以及如何使用大 O 法分析程序或算法的时间复杂度和常用的分析法则。

1. 为什么要做算法分析?

设想解决同一个问题有两个算法,算法 1 花费的时间为 T_1(N)=100N ,算法 2 花费的时间为 T_2(N)=N^2 。其中 N 代表解决问题要处理的数据量,当 N 相等时,要判断哪个算法更快,取决于 N 的大小,或者说要处理的数据量大小。当数据量很小时,算法1要比算法2花费更多时间;当 N 超过某个临界值后(这里是 100),算法2的花费时间急剧增加,远超算法1,相对而言,算法1却增长平缓。 

阅读全文 »

macOS 安装 mysql

1. 下载 MySQL Community Server

打开下载页面 https://dev.mysql.com/downloads/mysql/5.7.html ,下载镜像安装文件。

阅读全文 »

前言

2019年10月5日凌晨,Vue 的作者尤雨溪公布了 Vue3 的源代码。当然,它暂时还不是完整的 Vue3,而是 pre-alpha 版,只完成了一些核心功能。github 命名为 vue-next ,寓意下一代 vue 。在笔者发文前,已经有很多大佬陆续发布了一些解读 Vue3 源码的文章。但是,本文并不打算再增加一篇解读源码的文章,而是以项目参与者的视角,通过动手实践,一步步理解和搭建自己的 Vue3 项目。因此,为了达到最佳效果,建议读者,一边阅读本文,一边打开终端跟着一步步动手实践。你将掌握所有构建 Vue3 所必须的知识。

阅读全文 »

前言

笔者上一篇博客 《如何在命令行中显示五彩斑斓的“黑”》,讲到了任何编程都可以在命令行终端打印彩色字体和彩色背景的文字,以及一些简单文本格式(粗体,下划线,闪烁,反转背景色,隐藏),并给出了 python 语言的实现。为了让前端开发的同学也能快速使用这一功能,在自己的项目中输出漂亮的日志,笔者用 js 重写了一遍,并发布到 github 和 npm 。读者可以到 github 查看源码,项目地址:https://github.com/kenblikylee/colorconsole,也可以直接 npm 安装使用。

阅读全文 »

如何在命令行中显示五彩斑斓的“黑”

1. 前言

大部分 coder 已经习惯了命令行枯燥的黑底白字,而且任何编程语言入门的第一行代码都是教我们如何在标准输出(大部分情况就是命令行终端或控制台)打印一行“非黑即白”的 hello world! 。以至于很多不懂编程的“大佬”都觉得程序猿们都TM奇了个葩了,整天对着一块黑屏,瞎JB敲来敲去,还TM当个宝似的。那么本文将告诉你,这不仅仅是一块黑屏,它还能黑得五彩斑斓,亮瞎🐶眼。。。哈哈哈。。。下图为本文最终能达到的效果,提前贴出来,以表示我没有在吹🐂B。

阅读全文 »

前言

本文集以 Kaggle 网站真实竞赛《dogs-vs-cats-redux-kernels-edition》为主线,讲解如何使用深度学习技术解决图像分类问题。本文作为文集第一篇,讲解图像数据集的下载和清洗。

1. kaggle 命令行

不熟悉 kaggle 命令行接口的读者可参考专栏 《Kaggle 命令行工具查看 AI 最新竞赛和下载数据集》

通过关键词搜索竞赛:

1
2
3
4
5
$ kaggle competitions list -s "dog cat"
ref deadline category reward teamCount userHasEntered
---------------------------------- ------------------- ---------- --------- --------- --------------
dogs-vs-cats 2014-02-01 23:59:00 Playground Swag 215 False
dogs-vs-cats-redux-kernels-edition 2017-03-02 23:59:00 Playground Knowledge 1314 True
阅读全文 »