Skip to content

Instantly share code, notes, and snippets.

View huowa222's full-sized avatar
💭
Just leave me alone!

Howard huowa222

💭
Just leave me alone!
  • Self employed
  • Beijing
View GitHub Profile
@huowa222
huowa222 / hello world
Last active May 30, 2016 16:08
hello , my first gist code
public class sexIdentifier {
public static final String HOMOSEXUAL = "homo";
public static final String STRAIGHT = "straight";
public static void main(String args[]){
public String identifyGender(String yourGender, String belovedGender){
if(yourGender.equals(belovedGender)){
return HOMOSEXUAL;
}else{
@huowa222
huowa222 / gist:9569075
Created March 15, 2014 15:33
J.U.C framework
J.U.C并发框架(1)
翻译:书卷多情
在J2SE1.5中,java.util.concurrent包下的大部分同步工具(锁、阻塞等)以AbstractQueuedSynchronizer类为基础来构建。这个框架提供了一些常用机制用于自动管理并发状态、阻塞及非阻塞线程和队列。本论文描述了该框架的根源、设计实现、用法及性能。
关键字:synchronized, java
1、介绍
@huowa222
huowa222 / gist:9569687
Created March 15, 2014 16:09
Java lock lock vs synchronizer
JVM底层又是如何实现synchronized的?
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。
数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进一步追问:JVM底层又是如何实现synchronized的?
本文所指说的JVM是指Hotspot的6u23版本,下面首先介绍synchronized的实现:
synrhronized关键字简洁、清晰、语义明确,因此即使有了Lock接口,使用的还是非常广泛。其应用层的语义是可以把任何一个非null对象 作为"锁",当synchronized作用在方法上时,锁住的便是对象实例(this);当作用在静态方法时锁住的便是对象对应的Class实例,因为 Class数据存在于永久带,因此静态方法锁相当于该类的一个全局锁;当synchronized作用于某一个对象实例时,锁住的便是对应的代码块。在 HotSpot JVM实现中,锁有个专门的名字:对象监视器。
1. 线程状态及状态转换
当多个线程同时请求某个对象监视器时,对象监视器会设置几种状态用来区分请求的线程:
@huowa222
huowa222 / gist:9640745
Created March 19, 2014 12:34
classification algorithm : disicion tree
3.1、摘要
在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法。这两种算法都以贝叶斯定理为基础,可以对分类及决策问题进行概率推断。在这一篇文章中,将讨论另一种被广泛使用的分类算法——决策树(decision tree)。相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现,决策树更加适用。
3.2、决策树引导
通俗来说,决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话:
女儿:多大年纪了?
@huowa222
huowa222 / gist:9640781
Created March 19, 2014 12:36
classification algorithm Naive Bayesian classification
1.1、摘要
贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本文作为分类算法的第一篇,将首先介绍分类问题,对分类问题进行一个正式的定义。然后,介绍贝叶斯分类算法的基础——贝叶斯定理。最后,通过实例讨论贝叶斯分类中最简单的一种:朴素贝叶斯分类。
1.2、分类问题综述
对于分类问题,其实谁都不会陌生,说我们每个人每天都在执行分类操作一点都不夸张,只是我们没有意识到罢了。例如,当你看到一个陌生人,你的脑子下意识判断TA是男是女;你可能经常会走在路上对身旁的朋友说“这个人一看就很有钱、那边有个非主流”之类的话,其实这就是一种分类操作。
从数学角度来说,分类问题可做如下定义:
已知集合:和,确定映射规则,使得任意有且仅有一个使得成立。(不考虑模糊数学里的模糊集情况)
@huowa222
huowa222 / gist:9640835
Created March 19, 2014 12:39
similarity caculation Mahout Apache OpenSource
Apache Mahout 是 ApacheSoftware Foundation (ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序,并且,在 Mahout 的最近版本中还加入了对Apache Hadoop 的支持,使这些算法可以更高效的运行在云计算环境中。
在现实中广泛使用的推荐系统一般都是基于协同过滤算法的,一般分为基于用户(user)的协同过滤算法和基于项目(item)的协同过滤算法,这类算法通常都需要计算user和user,item和item之间的相似度,对于不同的数据量和不同类型的数据源,都需要不同的相似度计算方法来提高推荐性能和提高推荐的准确度,幸好在mahout中提供了大量的计算相似度的组件,这些组件实现了一些不同的相似度计算方法:
如图1:基于user的相似度计算
1.Pearson correlation-based similarity(皮尔森用户协同推荐算法)(一般不建议使用)
(PearsonCorrelationSimilarity) 根据用户对于物品的喜好分数进行用户的打分进行推荐,用户之间的相似度从-1~1
@huowa222
huowa222 / gist:9640856
Created March 19, 2014 12:40
recommendation opensource list
原文地址:http://in.sdo.com/?p=1707
收集和整理了目前互联网上能找到的开源推荐系统,并附上了个人的一些简单点评(未必全面准确),这个列表是目前为止比较全面的了,希望对大家了解掌握推荐系统有帮助(文/陈运文)
SVDFeature
由上海交大的同学开发,采用C++语言,代码质量很高。去年我们参加KDD竞赛时用过,很好很方便,而且出自咱们国人之手,所以置顶推荐!
项目地址:
http://svdfeature.apexlab.org/wiki/Main_Page
SVDFeature包含一个很灵活的Matrix Factorization推荐框架,能方便的实现SVD、SVD++等方法, 是单模型推荐算法中精度最高的一种。SVDFeature代码精炼,可以用相对较少的内存实现较大规模的单机版矩阵分解运算。
另外含有Logistic regression的model,可以很方便的用来进行ensemble运算
@huowa222
huowa222 / gist:9668681
Created March 20, 2014 17:01
programmer produtivity
俗话说,天下武功,唯快不破。也就是说要练成天下高手的话,出招速度一定要快,这样才能在江湖上立足,不至于掉了脑袋。而程序员要在IT界混出个名堂,也要有高效的工作效率才行。IT行业时时刻刻都产生着新知识、新技术,要想跟上变革肯定要有几把刷子。
而我本人很喜欢各种各样的方式来提高自己的工作效率,可以分享给大家一些经验。
1、键盘功底要扎实。敲键盘时要使用标准指法。可能你认为这是程序员的基本功,可是我发现其实很多程序员都做不到这点。看着他们敲代码时那笨拙的指法我就心急。其实炼成标准指法不难,相当年我还是一指禅,打字极慢,痛定思定,在一周内我打字必用标准指法,再别扭也要坚持,一周后就适应了标准指法了。现在不说运指如飞也算是略有小成。练习指法和键盘速度可以给大家推荐一些网站:http://10fastfingers.com/typing-test/english,这个就是练习标准指法的,我可以轻松上60 WPM(每分钟60单词),有个外国同事可以达到130以上,那才叫恐怖。http://typing.io/lessons,专门供程序员练习敲代码的网站,融合了各种括号和标点,难度有点大。
穷人的恶性循环:
穷 -> 需要努力工作 -> 没有时间去交际 -> 人脉越来越狭窄 -> 工作越来越难做 -> 越需要努力去工作 -> 越没有时间去发展人脉 -> 越穷
富人的良性循环:
有钱 -> 工作很轻松 -> 很多时间都在交际上 -> 人脉越来越广 -> 工作越来越不用努力 -> 越有更多的时间精力去发展人脉 -> 越富有
程序员的恶性循环:
加班 -> 没空学习 -> 老是写同等水平代码 -> 无法提升代码质量 -> 老是出BUG -> 老是需要修改 -> 加班 -> ....
@huowa222
huowa222 / gist:9804335
Created March 27, 2014 10:12
今天是我非常郁闷的一天。today is my blue day. im in very bad mood.
今天是我非常郁闷的一天,心情很差。today is my blue day. im not in mood to do anything. i know everybody hate aggressive boys.