Scala的内部类
与java中内部类不同的事,Scala里面,内部类是属于对象的点击(此处)折叠或打开class Outer(val name: String) { outer => //val outer class Inner(val name: String){ &nbs...
Scala主构造器、私有构造器、构造器重载
dsadsa
Scala的For、Function、Lazy、Exception
for循环,不论在哪个语言里面都是很基本的循环语句for(i
Scala的数组操作
数组在任何语言里面都是很基本、很重要的一个数据结构,在Scala中也是如此。数组的定义:1,定长数组:val nums = new Array[Int](10)val a = new Array[String](10)val s = Array("Hello", "World")2,变长数组val b = ArrayBuffer[Int]()//定义一个变长数组数组遍历:for (i
Scala中的Map、Tuple、Zip
Map:k,v键值对,跟java里的Map差不多的意思。定义一个Map有以下几种方式:val map = Map("book"->10,"gun"->18,"ipad"->1000) val scores = scala.collection.mutable.Map("Scala" -> 7, "Hadoop" -> 8, "Spark" -> 10 )//可变的Mapval sortedScore = scala.collection.immutable.SortedMap("Scala" -> 7, "Hado...
Scala类的属性以及对象私有字段
var age = 0在scala里面,定义一个属性必须要手动赋值,不像在java里面,会默认赋值0这里,scala默认属性是private的,而且也会默认生成setter、getter方法val age = 0对于val,scala会默认加上final,并且只生成getter方法,没有setter方法private[this] var age = 0scala特有,这种属性只有本对象可以访问,该类...
MySQL之timestamp
在mysql中,timestamp是经常用到的类型,大小是4个字节,取值范围是1970-2038。如果一个表中有多列timestamp字段,在使用的时候需要注意一些细节。点击(此处)折叠或打开CREATE TABLE `test2` ( id INT(11) NOT NULL, t1 TIMESTAMP,&nbs...
Storm实战之TopN
TopN这种统计场景很常见,例如,统计出搜索热度最高的词,点击率最高的广告等,现在有了Hadoop、Storm这些工具之后,很方便地就能得到结果。这里以Storm为例,简易地实现了TopN单词的统计,由于刚刚入门,代码写得比较简单。在Storm里面要想实现TopN,最简单的方法是一个spout加一个bolt,spout发送word,bolt全局统计Top...
Map根据Value排序
说道Map排序,大家第一时间想到的是,利用现成的TreeMap,它会自动根据Map的Key进行排序。但是如果要按照Map的Value进行排序呢?api没有提供现成的实现,只能自己实现了。有以下几个核心组件。1,Comparator要想自定义排序肯定少不了Comparator,在compare方法里面实现自己的排序逻辑,这里正是借用了Comparator。2,M...
Spring实现数据库读写分离
数据库读写分离是最基本的DB扩展方式,我们可以在应用中自己实现,决定什么业务访问写库,什么业务访问读库。Spring提供了一套机制可以声明式地实现读写分离,简化我们的开发。下面把最主要的几块列出来。1,AbstractRoutingDataSource,这是Spring提供的最核心的组件,由它来管理所有的写库、读库,并统一对外提供dataSo...
深入理解JVM之编译优化
在源码编译阶段将源码编译为JVM字节码,JVM字节码是一种平台无关的中间代码方式,要由JVM在运行期间对其进行解释并执行,这种方式成为字节码解释执行方式。对于面向对象的语言而言,最重要的是执行方法的指令,JVM有一套自己的执行方法的指令:invokestatic(调用static方法)、invokevirtual(调用对象实例的方法)、invo...
深入理解JVM之OOM
做Java程序开发,难免会遇到OutOfMemory,导致的原因也是不尽相同,下面我们来捋一捋OOM出现的场景。一,堆空间不足,这是最容易,也是最常见的OOM。了解Java内存结构的同学应该知道,Java里面创建的对象大部分都是位于堆空间的,当创建的对象太多,而堆空间不足时,很容易抛出OOM,如下:点击(此处)折叠或打开...
Storm的重要概念
Storm中一些重要的概念:Spout(消息源) Bolt(消息处理者) Stream grouping(数据的分发方式) Topology(拓扑) Worker(工作进程) Task(执行具体逻辑的任务) Executor(执行Task的线程) Configuration(配置)编程模型:物理模型:worker进程:...
Storm实战之WordCount
在storm环境部署完毕,并正确启动之后,现在就可以真正进入storm开发了,按照惯例,以wordcount作为开始。这个例子很简单,核心组件包括:一个spout,两个bolt,一个Topology。spout从一个路径读取文件,然后readLine,向bolt发射,一个文件处理完毕后,重命名,以不再重复处理。第一个bolt将从spout接收到的字符串按空...
MySQL中in(独立子查询)的执行计划
在之前有一篇文章讲了in(常量列表)的执行计划,详见链接:http://blog.itpub.net/28912557/viewspace-1255568/。那么对于对于in(独立子查询),MYSQL会怎么执行呢?其实,现代mysql优化器都会将in独立子查询语句转换为exists相关子查询。所以有些人发现在MYSQl中测试发现in与exists性能差不多,就是这个原因。因...
Java保留两位小数的方法
保留两位小数一般有如下几种方法:1,BigDecimal.setScale方法,在做精确计数的应用时,经常会用到BigDecimal,需要注意的一点是,初始化BigDecimal时必须用String,否则精度不正确。点击(此处)折叠或打开BigDecimal bg = new BigDecimal("0.719"); System.out.println(bg.set...
HttpMethod自定义失败重连
我们做web开发时,需要经常使用httpclient来请求http服务,有时为了安全起见,服务提供方会提供多个http地址,这样如果我们请求某个ip出现异常,可以重试其他的ip地址,来尽量保证系统的稳定,以下是自定义一个HttpMethod重试机制的简要代码。点击(此处)折叠或打开public abstract clas...
单例与序列化
【转载】原文见http://ifeve.com/perfect-singleton/ 原文的题目叫“完美的单例实现”,但是看了下内容,不敢苟同,就我所知,要写一个安全、完美的单例是要考虑很多方面的,譬如懒加载、并发问题、内存模型、指令重排等。但是原文中并有提及到这些,仅仅说了一下序列化与单例,所以这里我就叫“单例与序列化”吧。...
maven解决jar包依赖冲突
maven很好滴帮我们管理了项目所依赖的jar包,但是有些jar包间接滴依赖了我们在pom中已经配置过的第三方jar,这样很容易引起jar包冲突我们可以利用maven生成整个项目的jar依赖数,再查看冲突的jar在哪些地方被引进来了mvn dependency:tree > a.txt 会生成一个文件,如下:...
搭建Hadoop的Eclipse开发环境
经过一些列繁琐的配置后,hadoop集群终于可以跑起来了,wordcount例子也能正确运行,好了,我们可以进行Map-Reduce开发了。作为一个java程序员,最简单的做法是:把在eclipse中写好的mapreduce程序打成jar包,上传至hadoop集群上,然后启动mapreduce任务。可是我们不是大师,谁也不能保证自己写的代码一次就能正确,我们需...