Binary-Search-Tree in JavaScript

这里用 JavaScript 实现一个二叉搜索树。二叉搜索树可以很方便地进行排序。下面的实现比较简单,很容易就会出现非平衡二叉树。G.M. Adelson-Velsky 和 E.M. Landis 在 1962 年的论文《An Algorithm For The Organization Of Information》中提出了一种可以实现自平衡二叉树,后世称为 AVL 树。

除了 AVL 树,还有很多其他的平衡二叉树的实现,例如 AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中? 就是个不错的入门级参考,可以大致了解这些平衡树的特点、区别。看起来,红黑树是应用最广泛的。

Read More

Share

ImageMagick 简单入门

ImageMagick 是一款可以运行在 Linux/Unix/Windows/MacOS (现在甚至支持 iOS、Android)下的免费开源图片处理程序。使用 ImageMagick 可以进行图片的拉伸、裁剪、缩放、格式转换、生成 GIF 、添加文字/图案等各种操作。

MacOS 下可以方便地使用 Homebrew 进行安装:

1
2
3
4
5
$ brew install imagemagick
# 查看使用帮助
$ man magick
$ man convert

magick 和 convert 应该是同一个程序。

ImageMagick 的最新版本目前已经是 7.* 以上了。建议安装最新版,因为之前它还暴露过了一个严重漏洞,在最新版本里该漏洞是已经修复了的。它的源码放在 Github 上面维护:https://github.com/ImageMagick。

Read More

Share

heap sort using javascript

Share

关于插入排序

Read More

Share

about quick sort algorithm

历史

快速排序算法是由 Tony Hoare 在 1959 年发明的。如果实现得好,那么它的速度可以达到其两个主要竞争者——归并排序与堆排序——的两倍到三倍以上。

在高速的实现中,快排是一个不稳定的算法,即它不能保证原来相等的值的位置不变。

Read More

Share

关于归并排序

概述

归并排序(Merge-Sort),由冯诺依曼于 1945 年发明,是分治法(Divide and Conquer)的经典案例。

JavaScript 实现

代码思路比较清晰:

  • 首先,需要一个执行合并有序数组的函数(将两个有序表合并成一个有序表,称为二路归并)。
  • 然后,对需要排序的数组进行拆分,分别对左右两个子数组进行归并排序,然后合并。这样就形成了递归

Read More

Share

关于脚型与选择足球鞋

我的脚型属于前脚掌比较宽的,耐克的鞋里目前发现刺客比较合脚,一图胜千言(图里的B是刺客):

Share

初涉 Mobile Web 开发

2015年12月至今年6月,我在猫眼做的开发基本都是桌面浏览器项目、B 端产品,技术栈是 Node.js/Koa + Webpack + React.js。从今年7月份开始,趁着一个新的 C 端项目的启动,自己转而投入到移动端 web 开发中。

C 端产品与 B 端产品差异巨大。

Read More

Share

Charles 的配置

目录

  • HTTPS 抓包配置
  • Charles 请求映射(Proxy Remote Mapping)
  • iOS 设备配置证书

Read More

Share

OpenSSL and Base64

记录一个小命令,涉及到两个比较基础的概念:OpenSSL 和 base64 编码。

OpenSSL 包含一个命令行工具用来完成 OpenSSL 库中的所有功能,更好的是,它可能已经安装到你的系统中了。
—— 百度百科

Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。
—— 廖雪峰的官方网站 - base64

OpenSSL 可以将任意 PNG 图片编码成 base64 字符序列,下面的命令以 in.png 图片作为输入,转码后把 base64 序列输出到 out.txt 文件里。

1
openssl base64 -in in.png -out out.txt

不过有个问题,上面的命令会产生折行(即 line breaks),要想直。要想去掉折行,需要添加 -A 参数:

1
openssl base64 -A -in in.png -out out.txt
Share