HOLA

世界无限广阔

Paper reviews: Implementing Remote Procedure Calls

RPC Remote procedure call is an useful paradigm for providing communication across a network between programs and it is written in a high-level language. There are lots of open source RPC framewor...

Monotone Stack

什么是单调栈 单调栈就是一种栈内元素保持单调增或者单调减的栈,我们只在栈顶操作元素。单调栈的性质可以总结为: 单调栈里的元素具有单调性 元素加入栈前,会在栈顶把破坏栈单调性的元素都删除 单调栈如何维护其单调性 如果stack单调递增,栈顶元素大于等于新元素a: 不断 pop() 栈顶元素。 若 peek...

正则表达式

语法 ^ : 匹配输入字符串开始的位置。 $ : 匹配输入字符串的结尾位置。 () : 标记一个子表达式的开始和结束位置。 * : 匹配前面的子表达式零次或多次。 + : 匹配前面的子表达式一次或多次。 ? : 匹配前面的子表达式零次或一次。 . : 匹配除换行符 \n 之外的任何单字符。 [ : 标记一个中括号表达式的开始。 \ : 将下一个字符标记为或特殊字符、或原义字...

Creating a Java Compiler Plugin

上个月一直在看Error Prone的源码,对java编译器工作流程也有了一点了解,零零散散看过的资料也不少,正好最近放假想试试能不能自己实现一个编译器插件。俗话说纸上得来终觉浅,不写一写怎么知道自己不会写,下面是我从不会写到会写一点点的心得。

Error Prone VS SpotBugs

Error Prone 简介 Error Prone 是一款由Google开发的开源JAVA代码检查工具,它通过加强编译器的类型检查来匹配bug。起初Goole是想把FindBugs整合到他们的代码库里面,后来实验之后发现FindBugs是编译后生成检查报告,它不会中断编译过程,这就导致很多程序员根本不去修复检查出的bug。所以他们根据ClangMR的经验,也就是把检查过程放到编译中,按...

Breadth First Search

Minimum Height Trees class Solution { public List<Integer> findMinHeightTrees(int n, int[][] edges) { List<Integer> result = new ArrayList<>(); if (n == 0) { ret...

Binary Tree

Preorder Divide Conquer public class Solution { public ArrayList<Integer> preorderTraversal(TreeNode root) { ArrayList<Integer> result = new ArrayList<Integer>(); ...

ARIMA建模实例

之前写过一篇关于时间序列的文章,下面来说一说怎么把ARIMA算法应用的具体的dataset上,因为我在最近的Data Analytics课程作业里用到了这个算法,我就暂且用这个例子来讲讲。 数据集 数据集包括了从2004年1月1日到2008年6月1日13个不同地区每小时的气温观测值,我抽取了地区1的数据来做预测,并以每天的最高气温为研究对象。这一步要做的工作就是整理数据集,生成日期,计算每...

时间序列及其预测模型

课堂笔记 教材: Forecasting: Principles and Practice 三个基本原则 过去数据中的随机波动可以忽略掉,即异常数据 真实的数据一定会被用于建模和计算 我们假设:环境变化的方式不会随着时间改变 那么我们要预测什么呢? 每个产品的销量还是一组产品的销量 每个销售点的销量,一组销售点的销量,还是总体的销量 每小时,每天,每周还...

汇率提醒小工具

事情是这样的,因为最近深陷汇率波动的风波中,亏得要叫爸爸了,所以想有个工具可以提醒我买进卖出这样,但是看了一圈都没app有这个功能的,于是我打算自己写一个脚本来做这个事情。 需求如下: 定时刷新(1分钟为间隔) 一旦发现买入价格、卖出价格到达某个值触发通知 汇率信息发送到指定邮箱 编码 其实这个事情还是蛮简单的,首先要拿到数据,我的做法是直接访问url拿到网页源码,再用...