0%

这是一篇介绍如何利用golang第三方库https://github.com/olivere/elastic进行elasticsearch的操作的文章。
文章中并不会介绍非常详细的API,更侧重于作者在工作中的使用经验和查文档经验。文章中主要包括以下内容:

  1. 作者认为比较重要的API设计理念以及文档查阅方式
  2. 作者在工作中使用到的elasticsearch的实例,包括从接到需求,查阅文档,并实现的过程
阅读全文 »

函数式编程实现各类排序算法

Github仓库链接(长期更新)

介绍

在Coursera网站上的Programming Languages, Part A课程的第一节的额外练习中,有引导同学实现快速排序和归并排序的过程(事实上在正式作业的challenge部分也用到了排序进行去重,当然可以使用简单的$O(n^2)$算法进行去重,不过排序后去重能提升到$O(n\log n)$而已),就我个人来看,这也是很有意思的一件事,所以写了博文记录下来。

使用到的函数式编程介绍

这次使用的语言是Programming Languages, Part A课程的Standard ML语言。

其实在传统的命令式编程中,我们应该已经比较熟悉各类排序算法的实现了,那么函数式编程有什么区别呢?

在这篇博文中中,我们暂时不使用函数式编程中比较高人气的map, reduce, filter等(第一节的课程也没有涉及,当然,日后可能回来更新也说不定)

我们主要使用的函数式编程功能如下:

  • 不可更改的列表(存储同一类型的数据)
  • 对列表的操作 hd, tl(hd返回列表第一个元素,tl返回删除了列表第一个元素的新列表)
  • 元组,可以使用 #<number>的方式进行索引的不可变数据(可存储不同类型的数据)
  • 递归
  • 少量pattern-matching(在val binding里),类似于python中的x, y = y, x
阅读全文 »

Github链接

编写目的

在观看了几份视频后决定先开发一个LexerDemo类,用于展示词法分析的含义,也即LexerDemo类仅展示词法分析的输入和词法分析的输出,不展示其余任何东西,开放的接口仅有无参构造函数和用于返回词法分析结果的lex方法。LexerDemo用于对仅含非负整数,加减乘除的运算表达式做词法分析。

阅读全文 »

题解仓库,更新中 GitHub LeetCode-Java

题目大意

给定一个排好序的数组,内里元素可能有重复,给定一个目标值,找出目标值最左端和最右端的index。传送门

典型的二分搜索

二分搜索并不容易写,因为实际上的二分搜索也可以被分成很多类,但是当人们提起时,往往混为一谈,我觉得,基本的,典型的二分搜索有这两类:

  1. 寻找一个特定值
  2. 寻找满足某个条件的连续区间的边界
阅读全文 »