Born to be proud
8/5
2017

LRU & LFU 数据结构

在内容替换算法中,LRU 与 LFU 是最为经典的两种置换算法。替换策略本身简单易懂,但在大规模内容处理时,设计高效的数据结构与插入查找方法使得时间复杂度较低并不简单。

LRU

LRU 即 Least Recently Used,最近最少使用算法。当有新内容需要缓存时,LRU 算法使用新内容替换掉最久没有使用的内容。

image

7/27
2017

QR 码解析算法

检测定位符流程

  • 横向扫描,检测 黑白黑白黑 的组合
  • 默认隔(3 * maxI) / (4 * MAX_MODULES)行扫描一次,TRY_HARDER开启后逐行扫描
  • 验证是否满足1:1:3:1:1的比例
  • 检测纵向是否满足定位符特征
  • 如果已经确定了两个定位符,则可跳过 (Math.abs(firstConfirmedCenter.getX() - center.getX())-Math.abs(firstConfirmedCenter.getY() - center.getY())) / 2; 行,继续扫描
  • 如果提前确定3个定位符,且模块大小相近,则停止扫描 haveMultiplyConfirmedCenters()
  • 否则继续扫描图片
  • 筛选掉和其他相差较大的定位符,选择匹配最好的3个定位符
  • 确定三个定位符的中心坐标和各自位置 orderBestPatterns()
  • 返回检测到的三个定位符的结果

7/24
2017

换电脑后如何恢复Hexo环境

首先本地安装 Git 和 Node.js

sudo apt-get install git-core    //安装 Git

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash        //安装 Node.js
nvm install stable

安装Hexo

1
npm install -g hexo-cli

设置 Github 秘钥

ssh-keygen -t rsa -C "youremail@example.com" 

执行后会在用户主目录下生成.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH key密钥对,id_rsa是私钥,id_rsa.pub是公钥。

登陆GitHub,打开「Settings」->「SSH and GPG keys」,然后点击「new SSH key」,填上Title,在Key文本框里粘贴公钥id_rsa.pub文件的内容(千万不要粘贴成私钥了!),最后点击「Add SSH Key」。

7/19
2017

机试题

给夏令营学生出的机试题,虽然很简单,但要写出复杂度较低的方法并不容易。

相对排名

给定 N 个运动员的分数,计算他们的相对排名和得分最高的三个人,他们将分别获得奖项:”Gold Medal”, “Silver Medal” 和 “Bronze Medal”.

例子:

Input: [5, 4, 3, 2, 1]
Output: ["Gold Medal", "Silver Medal", "Bronze Medal", "4", "5"]

Explanation: 
前三个是得分最高的三个人,他们分别获得"Gold Medal", "Silver Medal" 和 "Bronze Medal".
剩下的两名运动员,你只需根据他们的分数输出他们的相对排名.

7/6
2017

Java值传递与引用传递

Java值传递

指的是在方法调用时,传递的参数是按值的拷贝传递。此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值.

public class ParamTest {
    public static void main(String[] args) {
        int price = 5;
        doubleValue(price);
        System.out.print(price);    //【输出结果】: 5
    }

    public static void doubleValue(int x) {
        x = 2 * x;
    }
}