Fork me on GitHub
Skye's Blog

Forever youthful,forever weeping


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

Java读取properties配置文件

发表于 2017-02-20 | 分类于 Java |

读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):

通过jdk提供的java.util.Properties类

此类继承自java.util.HashTable,即实现了Map接口,所以,可使用相应的方法来操作属性文件,但不建议使用像put、putAll这两个方法,因为put方法不仅允许存入String类型的value,还可以存入Object类型的。因此java.util.Properties类提供了getProperty()和setProperty()方法来操作属性文件,同时使用store或save(已过时)来保存属性值(把属性值写入.properties配置文件)。在使用之前,还需要加载属性文件,它提供了两个方法:load和loadFromXML。load有两个方法的重载:load(InputStream inStream)、load(Reader reader),所以,可根据不同的方式来加载属性文件。可根据不同的方式来获取InputStream,如:

  1. 通过当前类加载器的getResourceAsStream方法获取

    1
    InputStream inStream = TestProperties.class.getClassLoader().getResourceAsStream("test.properties");
  2. 从文件获取

    1
    InputStream inStream = new FileInputStream(new File("filePath"));
阅读全文 »

台湾清华大学彭明辉教授的研究生手册

发表于 2017-01-15 | 分类于 paper |

一、论文的要求
  我对硕士论文的基本要求是:
  (1)论文的主要内容,是叙述一套方法在一个特定场合中的应用。
  (2)这套方法必须要有所创新或突破,并因而对学术界有所贡献。因此,它或者是解决既有问题的新方法,或者是既有方法的新应用,或者是以一个新的方法开启一整片新的应用领域。
  (3)在论文中,你必须要有能力提出足够的证据来让读者信服说:针对这个应用场合,你所提出来的方法确实有比文献中一切既有方法更优越之处。
  (4)此外,你必须要能清楚指出这个方法在应用上的限制,并且提出充分证据来说服读者:任何应用场合,只要能够满足你所提出来的假设(前提)条件,你的方法就一定适用,而且你所描述的优点就一定会存在。
  (5)你还必须要在论文中清楚指出这个方法的限制和可能的缺点(相对于其它文献上的既有方法,或者在其它应用场合里)假如这个方法有任何重大缺点,在口试时才被口试委员指出来,其后果有可能是论文无法通过。
  (6)行文风格上,它是一篇论证严谨,逻辑关系清晰,而且结构有条理的专业论述。也就是说,在叙述你的方法的过程,你必须要清清楚楚地交代这个方法的应用程序以及所有仿真或实验结果的过程,使得这个专业领域内的任何读者,都有办法根据你的描述,在他的实验室下复制出你的研究成果,以便确定你的结论确实是可以「在任何时间、任何地点、任何人」都具有可重复性(可重复性是「科学」的根本要求)。
  (7)而且,你对这个方法的每一个步骤都必须要提供充分的理由说明「为什么非如此不可」。

阅读全文 »

决策树(Decision Tree) && ID3 Algorithm

发表于 2017-01-13 | 分类于 Machine learning |

分类与预测

餐饮企业经常会碰到下面的问题:

  1. 如何预测未来一段时间内,哪些顾客会流失,哪些顾客最有可能成为VIP客户?
  2. 如何预测一种心产品的销售量,以及在哪种类型的客户中会较受欢迎?

除此之外,餐厅经理需要通过数据分析来了解具有某些特征的顾客的消费习惯/这些都是分类与预测的例子。

阅读全文 »

「China Daily」Tencent launches WeChat 'mini apps'

发表于 2017-01-10 | 分类于 好奇心英语 |

By Fan Feifei | China Daily | Updated: 2017-01-10 07:10

http://www.chinadaily.com.cn/business/tech/2017-01/10/content_27906217.htm


Chinese people check their WeChat 14.5 times on average and spend 48 minutes on social media per day. [Photo/IC]

News text

Chinese internet giant Tencent Holdings Ltd launched “mini apps” on Monday, which let users interact with app-like services within its instant messaging app WeChat, without having to download and install them.

阅读全文 »

hive动态分区

发表于 2017-01-03 | 分类于 大数据 |

实际使用中需要对处理后的数据按照时间分开,后续有按照时间的插入和删除操作,所以用hive的分区表是一个很好的解决方案。
比较蛋疼的是,由于 hive 不支持使用 load 语句进行动态分区插入数据,所以要新建一个表,再用 insert 语句把表中数据导入到新建的分区表中。

阅读全文 »

2016 Summary

发表于 2017-01-02 | 分类于 生活感悟 |

转眼已经过了一年,前些日子累的不行,元旦昏睡了两日养足精神。来到实验室发现几天前买的风信子意外地开花了,淡紫色。那就写一篇简短的年终总结吧。

阅读全文 »

MapReduce程序异常捕获存储

发表于 2016-12-16 | 分类于 大数据 |

在Map或reduce中使用multipleOutput来进行异常存储:

1
2
3
4
5
6
7
8
9
try{
...
...
context.write(newKey,newValue);
}catch(Exception e){
multipleOutput.write(new Text( null == e.getMessage()? ("error:"): e.getMessage),new Text(value.toString()),"_error/part");
e.printStackTrace();
}

MapReduce应用中CombineFileInputFormat原理与用法

发表于 2016-12-12 | 分类于 大数据 |

转载自:http://ju.outofmemory.cn/entry/72024

HDFS本身被设计来存储大文件,但是有时难免会有小文件出现,有时很可能时大量的小文件。通过MapReduce处理大量小文件时会遇到些问题。

MapReduce程序会将输入的文件进行分片(Split),每个分片对应一个map任务,而默认一个文件至少有一个分片,一个分片也只属于一个文件。这样大量的小文件会导致大量的map任务,导致资源过度消耗,且效率低下。Hadoop自身包含了CombineFileInputFormat,其功能是将多个小文件合并如一个分片,由一个map任务处理,这样就减少了不必要的map数量。

在了解CombineFileInputFormat之前,我们应了解其父类FileInputFormat的基本处理逻辑。注意这里的FileInputFormat的路径是org.apache.hadoop.mapreduce.lib.input.FileInputFormat,是新的MapReduce API。 mapred包下的FileInputFormat对应老的API,不再推荐使用。

阅读全文 »

MapReduce 递归子目录和合并小文件

发表于 2016-12-12 | 分类于 大数据 |

递归子目录

设置mapreduce.input.fileinputformat.input.dir.recursive=true,这个参数是客户端参数,可以在MapReduce中设置,也可以在mapred-site.xml中设置.在mapreduce程序中如

1
2
// 递归子目录
job.getConfiguration().setBoolean("mapreduce.input.fileinputformat.input.dir.recursive",true);

CombineTextInputFormat 合并小文件

1
2
3
4
5
6
7
//设置split大小
job.getConfiguration().setLong("mapreduce.input.fileinputformat.split.maxsize", 128 * 1024 * 1024);
//job.setInputFormatClass(TextInputFormat.class);
// 合并小文件
job.setInputFormatClass(CombineTextInputFormat.class);

Java获取与当天相差几天的日期两种方式

发表于 2016-12-09 | 分类于 Java |
1
2
3
4
5
6
7
8
Date date=new Date();//取时间
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
date=calendar.getTime(); //这个时间就是日期往后推一天的结果
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(date);
System.out.println(dateString);
1
2
3
4
5
6
7
8
9
10
/**
*获取两日期之间天数
*/
public String getDate(Date d,long i){
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
/*System.out.println("今天的日期:"+df.format(d));
System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - 2 * 24 * 60 * 60 * 1000)));
System.out.println("三天后的日期:" + df.format(new Date(d.getTime() + 3 * 24 * 60 * 60 * 1000)));*/
return df.format(new Date(d.getTime() + i * 24 * 60 * 60 * 1000));
}
1…345…8
Skye

Skye

学习总结 思想感悟

78 日志
14 分类
37 标签
Weibo GitHub 简书 Email
Links
  • Huanqiang
© 2016 - 2019 Skye