- 博客(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 3511
原创 豆瓣FM电台Chrome扩展——单曲循环
在前面的一篇博客《豆瓣FM电台Chrome扩展——下载》中, 介绍了添加一个下载当前音频的扩展功能。 有网友指出,是否可以考虑添加单曲循环的功能? 我觉得这个功能很不错,之前如果遇到一首非常喜欢的歌曲,只能听一遍,感觉确实不太过瘾。 于是晚上开始动手完成了一下,添加一个“循环”的链接, 点击它可以保持当前的音乐单曲循环,想听过久听多久。要是听够了,点击“随机”,就恢复随机播放。效果图如下:
2013-10-15 23:45:45 2183
原创 豆瓣FM电台Chrome扩展——下载
作为一个豆瓣fm的忠实用户,被豆瓣fm与音乐不期而遇的理念深深吸引。 最近豆瓣推出升级到PRO享受更高品质音乐的服务,升级后确实质量提升明显。但是有个功能仍然没有提供,那就是无法下载喜欢的歌曲。 在对豆瓣fm网页经过一番研究之后,决定做个下载当前歌曲的Chrome插件,方便自己下载喜欢的音乐。用chrome的开发者工具打开douban.fm首页,发现
2013-10-05 12:04:12 2871 5
原创 Android手机控制树莓派制作的四驱小车
年初的时候看到@段念-段文韬 的这篇文章《使用树莓派制作的远程开门器》后,觉得硬件编程似乎没有想象的难。 之前认为硬件编程可能需要学习新的编程语言,需要特别的编程环境。然而树莓派使用Linux操作系统环境,只要Linux支持的编程语言 ,都可以成为你的选择。当语言环境不是问题的时候,对于我来说,我最感兴趣的部分是如何用树莓派来控制一些低速的外部设备,例如 :继电器、小马达。 一般的PC并不提供
2013-08-06 17:05:43 33621 22
原创 一个快速移动开发的模板
大概两周前,我们BI团队开始做移动应用,我自己也是刚刚接触移动开发,过去两周在同事们的帮助下,虽然学到的知识和经验非常有限,我想仍然有一些东西是可以总结和分享。假如这对大家有一丁点的帮助,那就很好了! 有一点我最深刻的感受,就是移动开发并非要求你一定去学习一打新的技术栈, 比如Java、Object-C,操作系统等等。 可以说,做移动开发需要的最小的技术集合是前端web开发所需要的技术,这其中
2014-12-29 10:11:31 1255
原创 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 1089
原创 像Lisp一样写JavaScript--构建栈
老子有言:“道生一,一生二,二生三,三生万物!”说来惭愧,我始终未能领会其中奥义。直到最近学习lisp,虽只是略知其皮毛,却无意发现Lisp中竟能蕴藏了如此高深莫测的思想,惊喜和感慨之余,便在前写下了《Javascript实现Lisp列表(list)及操作》的笔记。
2014-03-09 16:43:05 2550 1
原创 牛顿法求平方根
牛顿法求平方根牛顿法是一种寻找方程的根的通用技术,特殊的例子是求一个数x的平方根,基本的思路是根据一个猜测y,通过一定的操作得到一个更好的猜测。根据猜测y得到的(y+x/y)/2是一个更好的猜测。 重复上述的操作,直到得到一个足够好的猜测为止。
2014-01-12 11:40:35 1881
原创 Javascript Function
函数在诸如python以及ruby的动态语言当中被当作是一等公民,相比叫静态语言,在这些语言当中函数可以不依托在任何的类或者实例,即可定义和调用。在web前端交互面向对象语言Javascript同样具有这样的语言能力,因此我们可以这样来定义和调用一个function://定义 var addMoney = function(count,callback){ // add money
2013-12-18 10:17:26 1011
原创 Javascript构造函数和prototype实现封装继承
像Java、c++那样的强类型语言,类型是一切对象的模板,通过类型定义,可以描述(封装)数据和操作。根据需求,类型可以扩展继承、多态变化,使得代码的重用性和可读性相比过程化编程语法大大提高。 Javascript也是一门面向对象的语言,在没有类型定义的情况,通过定义原型来实现类型模板。先来简单粗暴的创建一个实例: var cat = {name: 'xiaoqi', age: 1};
2013-12-13 23:08:47 1485
原创 声音采集
现实中的声音是一段连续的信号, 现在大部分的声音是以离散的数字信号保存下来,例如CD、MP3音频格式。 在保存这些信息时,考虑到对声音质量和存储的效率, 需要对声音的几个重要的基本属性进行研究。对于人类而言,声音是通过物体震动而产生的声波,通过介质传播而能够被人耳感知到的波动现象。能够被人耳朵感知到的波动频率在20到20KHz之间, 高于这个范围称为“超声波”,低于此范围称为“次声波”。一
2013-12-02 15:58:22 5995
原创 Javascript创建对象的基本模式
门户大开型(fully exposed): 只能提供公用成员命名规范区分私用性: 使用下划线来表示成员的私用性闭包: 真正创建私有成员,只有通过一些公开的方法来访问看看大开门户的对象:var Book = function(name, author){this.bookname = name;this.bookauthor = author;}var
2013-12-01 20:40:41 988
原创 Huffman编码——Java实现
Huffman编码 是一种编码方式,常用于无损压缩。本文只介绍用Java语言来实现该编码方式的算法和数据结构。Huffman编码的核心在于构建一颗最优化的二叉树,首先要得到一个原数据编码中的【编码:频率】的表格,第一步: 计算出每个词(编码)出现的频次,并输出到一个列表例如字符串:"this is an example of a huffman tree", 它的二进制编码是1
2013-10-03 12:48:32 1622
原创 Java 8 Optional 续1
前面讲过Java程序当中Null来表示空对象时带来NullPointerException的问题,以及解决这些问题的几种办法。今天我们要来了解更多的Optional的更多使用方法。从下面这段简单的代码开始: public String getName() { Company company = getCompany(); if (company !=
2013-09-08 12:08:29 1342
原创 Guava Optional 和 Java 8 optional
Null 上帝创造了男人,多年之后他老人家后悔了!Null的发明人同时也是快速排序的发明人表达对Null的忏悔称:“”这是个造成上亿美元损失的错误“。
2013-09-06 16:38:52 6233 4
原创 回文字符串
在庞果网上的一个挑战题目:http://hero.pongo.cn/回文字符串是指从左到右和从右到左相同的字符串,现给定一个仅由小写字母组成的字符串,你可以把它的字母重新排列,以形成不同的回文字符串。 输入:非空仅由小写字母组成的字符串,长度不超过100; 输出:能组成的所有回文串的个数(因为结果可能非常大,输出对1000000007取余数的结果)。 例如:输入"aabb" 输出为2(因为“a
2013-07-31 16:32:12 2298 2
原创 给对象添加功能
通过修改代码给已有的类型增加功能是最直接的方式。 但往往有很多原因让这种方式被重新考虑:JDK或者第三方类库,无论如何你都要考虑其他方式,而不是直接修改。新增的职责不适合被添加到现有的任何一个类型中。通过继承在很多情况下是个容易想到的方式。比如,增加子类来获得新的类型,在新的子类当中可以增加很妙的新功能。假如这个功能果实在很妙,于是其它已有的子类(兄弟)也希望获得这样的功能,问
2013-07-20 14:57:26 1112
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人