自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 Javascript实现Lisp列表(list)及操作

Lisp中列表(list)是一个值对,通过操作cons来创建值对,例如(cons 1 2), 1和2分别是值对的两个值。 cons操作具有闭包性,因此构成列表的元素可以是原子类型,也可以是列表类型,如(cons 1 (cons 2 3))。读取列表的操作有car、cdr,分别是读取值对的“左值”和“右值”,如(car '(1 2)) 返回1,(cdr '(1 2)) 则返回2, car、cdr操作

2014-03-04 00:07:42 3398

原创 豆瓣FM电台Chrome扩展——单曲循环

在前面的一篇博客《豆瓣FM电台Chrome扩展——下载》中, 介绍了添加一个下载当前音频的扩展功能。 有网友指出,是否可以考虑添加单曲循环的功能? 我觉得这个功能很不错,之前如果遇到一首非常喜欢的歌曲,只能听一遍,感觉确实不太过瘾。 于是晚上开始动手完成了一下,添加一个“循环”的链接, 点击它可以保持当前的音乐单曲循环,想听过久听多久。要是听够了,点击“随机”,就恢复随机播放。效果图如下:

2013-10-15 23:45:45 2122

原创 豆瓣FM电台Chrome扩展——下载

作为一个豆瓣fm的忠实用户,被豆瓣fm与音乐不期而遇的理念深深吸引。 最近豆瓣推出升级到PRO享受更高品质音乐的服务,升级后确实质量提升明显。但是有个功能仍然没有提供,那就是无法下载喜欢的歌曲。 在对豆瓣fm网页经过一番研究之后,决定做个下载当前歌曲的Chrome插件,方便自己下载喜欢的音乐。用chrome的开发者工具打开douban.fm首页,发现

2013-10-05 12:04:12 2774 5

原创 Key/Value存储引擎——Bitcask的Java实现

Bitcask是一个key/value存储引擎,具有连续写入的高性能

2013-10-03 16:31:22 4272 2

原创 Android手机控制树莓派制作的四驱小车

年初的时候看到@段念-段文韬 的这篇文章《使用树莓派制作的远程开门器》后,觉得硬件编程似乎没有想象的难。 之前认为硬件编程可能需要学习新的编程语言,需要特别的编程环境。然而树莓派使用Linux操作系统环境,只要Linux支持的编程语言 ,都可以成为你的选择。当语言环境不是问题的时候,对于我来说,我最感兴趣的部分是如何用树莓派来控制一些低速的外部设备,例如 :继电器、小马达。 一般的PC并不提供

2013-08-06 17:05:43 33415 22

原创 一个快速移动开发的模板

大概两周前,我们BI团队开始做移动应用,我自己也是刚刚接触移动开发,过去两周在同事们的帮助下,虽然学到的知识和经验非常有限,我想仍然有一些东西是可以总结和分享。假如这对大家有一丁点的帮助,那就很好了! 有一点我最深刻的感受,就是移动开发并非要求你一定去学习一打新的技术栈, 比如Java、Object-C,操作系统等等。 可以说,做移动开发需要的最小的技术集合是前端web开发所需要的技术,这其中

2014-12-29 10:11:31 1203

原创 JavaScript提前声明

var a=10;function test(){a=5;alert(a);alert(this.a);var a;alert(this.a);alert(a);}

2014-05-04 11:40:18 1046

原创 python中的self

最新用到python写代码,发现一个python确实是个比较有趣的语言,

2014-05-04 10:37:18 1098

原创 像Lisp一样写JavaScript--构建栈

老子有言:“道生一,一生二,二生三,三生万物!”说来惭愧,我始终未能领会其中奥义。直到最近学习lisp,虽只是略知其皮毛,却无意发现Lisp中竟能蕴藏了如此高深莫测的思想,惊喜和感慨之余,便在前写下了《Javascript实现Lisp列表(list)及操作》的笔记。

2014-03-09 16:43:05 2470 1

原创 牛顿法求平方根

牛顿法求平方根牛顿法是一种寻找方程的根的通用技术,特殊的例子是求一个数x的平方根,基本的思路是根据一个猜测y,通过一定的操作得到一个更好的猜测。根据猜测y得到的(y+x/y)/2是一个更好的猜测。 重复上述的操作,直到得到一个足够好的猜测为止。

2014-01-12 11:40:35 1846

原创 Javascript Function

函数在诸如python以及ruby的动态语言当中被当作是一等公民,相比叫静态语言,在这些语言当中函数可以不依托在任何的类或者实例,即可定义和调用。在web前端交互面向对象语言Javascript同样具有这样的语言能力,因此我们可以这样来定义和调用一个function://定义 var addMoney = function(count,callback){ // add money

2013-12-18 10:17:26 980

原创 Javascript构造函数和prototype实现封装继承

像Java、c++那样的强类型语言,类型是一切对象的模板,通过类型定义,可以描述(封装)数据和操作。根据需求,类型可以扩展继承、多态变化,使得代码的重用性和可读性相比过程化编程语法大大提高。 Javascript也是一门面向对象的语言,在没有类型定义的情况,通过定义原型来实现类型模板。先来简单粗暴的创建一个实例:  var cat = {name:  'xiaoqi', age: 1};

2013-12-13 23:08:47 1467

原创 声音采集

现实中的声音是一段连续的信号, 现在大部分的声音是以离散的数字信号保存下来,例如CD、MP3音频格式。 在保存这些信息时,考虑到对声音质量和存储的效率, 需要对声音的几个重要的基本属性进行研究。对于人类而言,声音是通过物体震动而产生的声波,通过介质传播而能够被人耳感知到的波动现象。能够被人耳朵感知到的波动频率在20到20KHz之间, 高于这个范围称为“超声波”,低于此范围称为“次声波”。一

2013-12-02 15:58:22 5878

原创 Javascript创建对象的基本模式

门户大开型(fully exposed): 只能提供公用成员命名规范区分私用性: 使用下划线来表示成员的私用性闭包: 真正创建私有成员,只有通过一些公开的方法来访问看看大开门户的对象:var Book = function(name, author){this.bookname = name;this.bookauthor = author;}var

2013-12-01 20:40:41 957

原创 Huffman编码——Java实现

Huffman编码 是一种编码方式,常用于无损压缩。本文只介绍用Java语言来实现该编码方式的算法和数据结构。Huffman编码的核心在于构建一颗最优化的二叉树,首先要得到一个原数据编码中的【编码:频率】的表格,第一步: 计算出每个词(编码)出现的频次,并输出到一个列表例如字符串:"this is an example of a huffman tree", 它的二进制编码是1

2013-10-03 12:48:32 1588

原创 编程之美——CPU正弦曲线

编程之美的第一个例子可以

2013-09-16 09:56:07 2643

原创 Java 8 Optional 续1

前面讲过Java程序当中Null来表示空对象时带来NullPointerException的问题,以及解决这些问题的几种办法。今天我们要来了解更多的Optional的更多使用方法。从下面这段简单的代码开始: public String getName() { Company company = getCompany(); if (company !=

2013-09-08 12:08:29 1303

原创 Guava Optional 和 Java 8 optional

Null 上帝创造了男人,多年之后他老人家后悔了!Null的发明人同时也是快速排序的发明人表达对Null的忏悔称:“”这是个造成上亿美元损失的错误“。

2013-09-06 16:38:52 6148 4

原创 递归、尾递归和函数式编程

先来一个阶乘的递归实现(不考虑其他实现), 传统的递归实现:

2013-08-05 14:19:44 2334

原创 回文字符串

在庞果网上的一个挑战题目:http://hero.pongo.cn/回文字符串是指从左到右和从右到左相同的字符串,现给定一个仅由小写字母组成的字符串,你可以把它的字母重新排列,以形成不同的回文字符串。 输入:非空仅由小写字母组成的字符串,长度不超过100; 输出:能组成的所有回文串的个数(因为结果可能非常大,输出对1000000007取余数的结果)。 例如:输入"aabb" 输出为2(因为“a

2013-07-31 16:32:12 2240 2

原创 给对象添加功能

通过修改代码给已有的类型增加功能是最直接的方式。 但往往有很多原因让这种方式被重新考虑:JDK或者第三方类库,无论如何你都要考虑其他方式,而不是直接修改。新增的职责不适合被添加到现有的任何一个类型中。通过继承在很多情况下是个容易想到的方式。比如,增加子类来获得新的类型,在新的子类当中可以增加很妙的新功能。假如这个功能果实在很妙,于是其它已有的子类(兄弟)也希望获得这样的功能,问

2013-07-20 14:57:26 1087

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除