自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术笔记

Java, SSH, Hadoop和Linux技术相关

  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

原创 Python Decorator

很多人认为Python的装饰器就是Java的注解。虽然表现的形式很类似,但本质上有很大的差别,甚至Python的装饰器更加灵活。本文就是对机制的简单介绍。

2016-05-28 20:53:02 701

原创 中国GDP什么时候会超过美国

经常看到网上讨论中国什么时候能赶超美国的争论。且不说这个问题有多无聊,讨论这个问题的人也很无聊。看了半天,也没看出个所以然。还不如针对这个问题收集数据,做做分析。本文主要收集GDP相关数据。这个指标现在争议很大,不能够反映国民经济的很多方面。但就统计数据的质量来说,GDP比较全面,而且容易获得。这里选取世界银行的统计数据,中国和美国2005年到2014年十年间的GDP数据如下

2016-01-06 13:35:43 2728

原创 Spark示例之数组排序

数组排序是一个常见的操作。基于比较的排序算法其性能下限是O(nlog(n)),但在分布式环境下面我们可以并发,从而提高性能。这里展示了Spark中数组排序的实现,并分析了性能,同时尝试找到导致性能提升的原因。

2015-02-26 23:07:00 3486

原创 Spark本地安装和简单示例

Spark是基于内存的大数据分析平台,由UC Berkely AMP lab发布的一大神器。相比Hadoop而言,其最大的优势是基于内存,这样可以极大提高其速度和通用性。本文从最简单的安装到第一个应用脚本,引导初学者入门。。。。

2015-01-26 22:47:23 1904

原创 Java类的初始化

Java提供了两种不同的初始化类型,分别是类的初始化和对象的初始化。类成员都是静态的,默认会设置一个值。对象的初始化会在构造函数里面进行。但如果想要赋给静态变量非默认值,或者是初始化一类共有的对象属性(不论调用哪个构造函数),那么就需要一些特殊的方法。Java提供了静态初始化块和非静态初始化块来处理这两种情况。

2014-08-21 22:26:41 1292

原创 本地变量初始化

函数里面的本地变量不会被初始化。在Java里面,本地变量其实就是本地变量数组的一个槽(slot)。作为一个类型安全的语言,Java强制要求对本地变量进行初始化。从字节码的角度,其必须有astore_?指令来对槽进行赋值。

2014-06-16 23:05:19 1515

原创 本地new int[]的处理

本文主要展示Java代码函数中定义的数组初始化底层是如何处理的。

2014-05-07 23:19:07 1043

原创 Java的ForEach

ForEach是Java5带来的新特性之一。尽管有其局限性,ForEach还是极大方便了程序员编写简介的代码。那么,其底层是如何实现的呢?

2014-05-01 21:44:42 1535

原创 面试题:统计给定位串中1的个数

种群计数就是统计一个位串中1的个数。Java的Short,Integer和Long都有bitCount方法,就是种群计数的实现。这类问题不仅很基础,也很重要。如果将其作为面试题,很容易考察算法能力的高低。

2014-04-20 20:46:47 1451

原创 Rsync的实现算法

rsync是unix系统下很强大的同步工具,可以将源文件或者目录同步到目标文件或目录。与简单的scp相比,rsync具有传输速度快,高效的特点。借助其核心的差分算法,rsync可以实现最小化传输,即只传输变动的部分。

2014-04-16 23:24:26 2011

原创 神秘的Java Boolean的哈希值

很多程序员都没有注意到,Boolean类的哈希值是一对神秘的数字......

2014-03-24 23:06:33 1765

原创 程序员必备:字符串哈希函数比较

一个股票交易系统的后台,为了能快速查找各种股票代码的Tick,会计算其哈希值,然后存贮在哈希表里面。一个好的哈希函数应该能实现很好地分布性,减少冲突。这里选取了几种常用的字符串哈希,包括BKDRHash,APHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash和DJBHash,通过在不同的字符串集合测试,来测试其性能。

2014-02-23 22:19:51 10284

原创 面试题:支持O(1)时间内完成pop,push和max的栈

一般的栈,本身的pop和push的操作就是O(1)的,可以考虑使用一个变量来存储最大值。问题在于,如果这个最大值被pop出去,这个变量就需要重新计算。如果通过遍历一遍来求出,则需要O(n)的时间,达不到要求。此外,任何想通过一个排好序的序列来解决最大值的pop问题的方案,都有一个致命缺点,就是每次push的时候,需要进行插入。因此需要更巧妙的方法。。。。

2014-01-26 22:51:00 11244

原创 ScrollView基础

ScrollView 基础ScrollView 可以实现列表数据的滚动展示,类似ListView的效果。ScollView要比ListView原始,因为自己要手动实现数据到视图的转换。ListView则只要实现Adapter就好了。一个Layout 下面是一个通用的ScrollView的布局: <RelativeLayout android:layout_

2013-02-24 22:12:34 1012

原创 Android下TabActivity的使用(2)

上一篇写了TabActivity的基本用法,这节来讲诉TabActivity的界面定制。很多项目都需要重新设计标签的位置和样式,比如将标签放到下方,使用图片而不是文字来显示等等。界面的结构下面这幅图展示了TabActivity的结构:其中,TabHost是根元素,其id为@android:id/tabhost,包含了TabWidget和TabContent。TabWidget就

2012-12-30 22:58:49 966

原创 Android下TabActivity的使用(1)

这篇文章总结了TabActivity的三种基本用法,具体的例子都取自ApiDemo。基本知识        要实现多标签的Activity,目标Activity(就是你建立的那个)首先要实现TabActivity类。这样,用户就可以通过getTabHost()方法来获得对应的TabHost对象,从而动态地添加标签。下面给出了标签切换时,如何设定显示区内容的三种方法。从Layout文

2012-12-16 21:56:29 1048

原创 VIM的标记:mark

使用vim编辑时,经常需要对好几行的大段代码进行操作,比如:缩进,删除,拷贝等等。比如拷贝,如果使用yy命令,还需要计算行数,十分不便。如果可以对位置进行标记,大段的代码就可以通过前后位置来标记。这样就方便多了。vim的mark就是最好的解决方案。所谓mark,就是一个位置,包括行号和列号。要对一个位置进行标记,使用m[a-zA-Z]就可以了。这意味你可以标记多达72个位置。不过一般我们用不到

2012-12-05 21:36:58 1277

原创 Android开发之多线程环境下更新界面

Android应用程序的界面运行于独立的线程里。但有时候软件需要单独的线程来处理数据,然后再更新界面。这样能够保证界面运行的流畅又不至于影响用户体验。这里的问题在于,UI只能被界面线程更新,在多线程环境下回出错。本文会展示这种典型的错误,以及解决方案。下面以计时器为例。在这个应用场景中,计时是在另一个线程里面完成的,然后再由UI显示出来。多线程更新界面的常见问题下面这段代码使用了一个T

2012-11-13 22:39:43 1799

原创 水平、垂直对齐

这篇文章的想法,开始于我做的一个手机端项目。该项目基于phonegap, 使用通用的web开发技术。在登录页面那里,我想让表单显示在页面中间,并意识到这个问题可以有很多解决方案。如能比较这些解决方案,那将是十分有意思的事情。HTML代码 为了便于研究,使用如下的html代码: content here! 分类水平的对齐有三种,分别是

2011-12-26 21:26:44 2938

原创 topcoder SRM 503报告

第一题:涂面包描述:    你要在面包片上涂layer_count层,做成山莓酱面包。考虑到每次涂酱,你只能最多涂upper_limit层,要求算出最少的涂酱次数。 分析:    要求最少的涂酱次数,只要每次涂尽可能多的山莓酱就好了。这是很典型的贪心思路。 代码:int ToastXRaspberry::apply(int upper_limit, int layer_count) {    if(layer_count % upper_limit == 0){   

2011-04-17 20:05:00 981

原创 vimperator介绍

<br />    在vim中上网,会让无数vimer心动。与vim那些实现脚本所提供粗糙的浏览效果相比,将一个浏览器改造成vim样式的,无疑效果会好很多。vimperator lab成功了,将firefox、Thunderbird和Sunbird编程了有模式的。<br />    作为一个firefox插件,vimperator将firefox编程了一个模式浏览器。和vim中快速的代码编辑速度相似,vimperator提供给vimer一个快速浏览网页的方法。该项目的发起者mike就是一名疯狂的vime

2011-03-02 18:28:00 1373

原创 位置更新的信息代价模型(一)

位置服务中移动对象需要不断想服务器报告自己的位置。服务器所获得的位置信息越精确,移动对象所能获得的服务就越好。考虑到移动对象位置固有的不精确性,系统实现就必须考虑什么时候以及什么频率进行位置更新。

2011-02-27 23:52:00 1024

原创 php中的文件包含

php关键词      php中用于文件包含的关键词有:include、include_once、require、require_once。一般来说,把include和require分在一组里,而include_once和require_once是一种改进完善形式。本文通过研究include和require的性质,兼顾include_once和require_once,获得php文件包含的

2010-02-12 23:40:00 2570

原创 PHP面向对象程序设计--概述

一、类1.类的定义class classname{    class definition;}更具体的有:class classname [ extends baseclass ]{ [ var $property [ = value ]; ... ] [ function functionname (args

2009-08-24 22:18:00 956

原创 Google主页的登录按钮

     本人笔记本被偷的一星期内,发生了很多事情,其中之一就是Google主页右上角的登录按钮和帐户状态栏消失了。     Google自从被央视曝光以来,坏事不断.先是google外文页面无法使用,后又联想功能被撤销,现在是google帐户的入口被隐藏了。Google在中国之艰难,由此可见一斑。     Google Accounts的login按钮被隐藏之后,网络上反应平平,好像大家

2009-07-26 22:46:00 1674

Concepts, Techniques, and Models of Computer Programming

MIT经典课程。重点介绍编程的概念、模型,对于如何提高编程能力,更好的设计一个成熟的软件产品有很好的见解

2011-12-31

Smarty.PHP.Template.Programming.and.Applications

A step-by-step guide to building PHP web sites and applications using the Smarty templating engine

2009-11-22

空空如也

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

TA关注的人

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