- 博客(70)
- 收藏
- 关注

原创 人工智能机器学习大数据java爬虫python网络linux算法ios经济android金融c电子书下载合集
链接地址:http://note.youdao.com/noteshare?id=b9e1cb156fde5c42dfd7d133933eaf8e 还有7000+豆瓣高分好书。。。。持续更新国外最新的畅销书。。。 ...
2018-09-13 13:11:44
358
原创 尽量避免null,多用optional
尽量少的用null,NPE是万恶之源,可以使用java8提供的Optional,对应scala中是option,可以参考OptionalUtil中的方法。下面给几个对比的example:eg:使用前:T t= service.get();if(t== null ){throw new Exception("object not exist");}使用后:T ...
2018-02-27 14:15:40
898
原创 使用guava-retry优雅的实现接口重试
介绍API 接口调用异常, 网络异常在我们日常开发中经常会遇到,这种情况下我们需要先重试几次调用才能将其标识为错误并在确认错误之后发送异常提醒。guava-retry可以灵活优雅的实现这一功能。Guava retryer在支持重试次数和重试频度控制基础上,能够兼容支持多个异常或者自定义实体对象的重试源定义,让重试功能有更多的灵活性。Guava Retryer也是线程安全的,入口调用逻辑采用...
2018-02-27 14:10:38
3054
转载 rz sz 命令安装
对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令。今天,我们就简单的讲解一下如何安装和使用rz、sz命令。1.软件安装root 账号登陆后,依次执行以下命令:1cd /tmp
2017-10-16 10:04:32
445
原创 XMLhandleTest
import scala.collection.mutable.ArrayBufferimport scala.xml._import scala.xml.parsing.XhtmlParserimport scala.io.Sourceimport scala.xml.transform.{RewriteRule, RuleTransformer}object XMLhandleTe
2017-10-12 18:09:49
417
原创 Compare performance for immutable var / mutable val
/** * Compare performance for immutable var / mutable val * varImmutable: 1641ms * valMutable: 110ms * valArrayFixedLength: 93ms */object PerformmancetTest extends App { val count =
2017-10-12 17:56:58
200
原创 Idea hot key
一.找文件找代码找引用相关1.双击shift 在项目的所有目录查找,就是你想看到你不想看到的和你没想过你能看到的都给你找出来2.ctrl+f 当前文件查找特定内容3.ctrl+shift+f当前项目查找包含特定内容的文件4.ctrl+n 查找类5.ctrl+shift+n查找文件6.ctrl+e 最近
2017-10-12 11:33:08
293
原创 利用模式匹配和递归计算list
val l = List(List(9,8),8,List(12)) def leafSum(l: List[Any]): Int = l.map(_ match { case l: List[Any] => leafSum(l) case x: Int => x case _ => 0 }).sum println(leafSum(l))
2017-10-10 10:46:30
268
原创 交换一个数组前两个元素位置(@的用法)
def swap2(a: Array[Int]) = a match { case Array(a, b, end@_*) => Array(b, a) ++ end}assert(swap2(Array(1, 2, 3, 4)).deep == Array(2, 1, 3, 4).deep)一个大大的彩蛋:https://mp.youkuaiyun.com/postedit/82686...
2017-10-09 17:20:13
2365
转载 FileVistor
在早期的Java版本中,如果需要对指定目录下的文件进行遍历,则需要用递归的方法来实现,这种方法有点复杂,而且灵活性也不高。而使用Java7中Files工具类中的walkFileTree()方法可以很容易的实现对目录下的所有文件进行遍历。这个方法需要一个Path和一个FileVisitor参数。其中Path是要遍历的路径,而FileVisitor则可以看成的一个文件访问器,它主要提供的四个方法,这在
2017-10-09 17:11:20
260
原创 list的:+ 和 :+操作区别
val lst = List(1, 2, 3, 4, 5, 6, 7, 8, 9)val a = (List[Int]() /: lst) ((i, l) => l +: i)val b = lst.foldLeft(List[Int]())((i, l) => l +: i)val c = lst.foldLeft(List[Int]())((i, l) => i :+ l)pri
2017-10-09 14:51:16
269
原创 实现一个adjustToPair(_ * _)(6,7) = 42 的方法
object Demo6 extends App { def adjustToPair(f: (Int, Int) => Int) = (t: (Int, Int)) => f(t._1, t._2) val pairs = (1 to 10) zip (11 to 20)// pairs.foreach(println) println(pairs.map(adjustToP
2017-09-30 17:11:30
183
转载 unapplyDemo
class ApplyDemo { def apply() = "apply in class" def test { println("test") }}/** * 伴生对象,相当于类的静态方法 */object ApplyDemo { def stat { println("static method") } def apply()
2017-09-29 11:49:11
170
原创 一个矩阵的简单运算工具类
object MatrixTool extends App { class Matrix(val m: Array[Array[Double]]) { val rows = m.length val cols = m(0).length def apply(r: Int, c: Int) = m(r)(c) def update(r: Int, c: In
2017-09-28 18:08:25
295
转载 深入理解Scala的隐式转换系统
摘要:通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码。 使用方式:1.将方法或变量标记为implicit2.将方法的参数列表标记为implicit3.将类标记为implicit Scala支持两种形式的隐式转换:
2017-09-27 11:06:17
189
原创 偏函数Demo
//偏函数//被包在花括号内没有match的一组case语句是一个偏函数,它是PartialFunction[A, B]的一个实例,A代表参数类型,B代表返回类型,常用作输入模式匹配package cn.itcast.casesobject PartialFuncDemo { def func1: PartialFunction[String, Int] = { case
2017-09-26 19:40:37
184
原创 OptionDemo
//Option类型//在Scala中Option类型样例类用来表示可能存在或也可能不存在的值(Option的子类有Some和None)。//Some包装了某个值,None表示没有值object OptionDemo { def main(args: Array[String]) { val map = Map("a" -> 1, "b" -> 2) val v =
2017-09-26 19:38:34
189
原创 样例类Demo
//在Scala中样例类是一中特殊的类,可用于模式匹配。case class是多例的,后面要跟构造参数,case object是单例的import scala.util.Randomcase class SubmitTask(id: String, name: String)case class HeartBeat(time: Long)case object CheckTimeO
2017-09-26 19:36:29
319
原创 匹配数组、元组
package cn.itcast.cases object CaseDemo extends App{ val arr = Array(1, 3, 5) arr match { case Array(1, x, y) => println(x + " " + y) case Array(0) => println("only 0") case Ar
2017-09-26 19:30:39
203
原创 类型检查和转换
ScalaJavaobj.isInstanceOf[C]obj instanceof Cobj.asInstanceOf[C](C)objclassOf[C]C.class
2017-09-26 19:23:41
306
原创 apply方法
1.1.1. apply方法通常我们会在类的伴生对象中定义apply方法,当遇到类名(参数1,...参数n)时apply方法会被调用 object ApplyDemo { def main(args: Array[String]) { //调用了Array伴生对象的apply方法 //def apply(x: Int, xs: Int*):
2017-09-26 19:22:19
465
原创 构造器注意点
注意:主构造器会执行类定义中的所有语句/** *每个类都有主构造器,主构造器的参数直接放置类名后面,与类交织在一起 */ class Student(val name: String, val age: Int){ //主构造器会执行类定义中的所有语句 println("执行主构造器") try { println("读取文件")
2017-09-26 19:16:59
224
原创 计算工时小程序
每次月末看到到家都在计算工时够不够,好辛苦,还容易出错,于是就写了个小程序给大家用大大的彩蛋:https://mp.youkuaiyun.com/postedit/82686446package utilimport scala.collection.mutable.ArrayBufferimport scala.io.Sourceobject WorkTimeHelper extends...
2017-09-26 18:54:25
2805
原创 Java8时间计算
一个大大的彩蛋:https://mp.youkuaiyun.com/postedit/82686446一.Period类主要是Period类方法getYears(),getMonths()和getDays()来计算.import java.time.LocalDate;import java.time.Month;import java.time.Period;public class Test...
2017-09-25 16:42:33
655
原创 trait 实例
//Implement a class IterableInputStream that extends java.io.InputStream with the trait Iterable[Byte] .class IterableInputStram(is: InputStream) extends InputStream with Iterable[Byte] { overri
2017-09-23 19:00:23
234
原创 特质->self type:this
trait Buffering { this: FileInputStream => val b = new BufferedInputStream(this) override def read(ab: Array[Byte]): Int = { b.read(ab) } } val b = new FileInputStream("c:/ObjectT
2017-09-23 18:34:25
182
原创 特质的继承层级
//Make your own silly trait hierarchy example that demonstrates layered traits,//concrete and abstract methods, and concrete and abstract fields.trait Woody { val wood: String def play:
2017-09-23 18:14:51
215
原创 trait 继承的Demo
trait Logger { def log(msg: String) {}}trait PrinterLogger extends Logger { val v = 24 override def log(msg: String): Unit = { println(msg) }}trait CryptoLogger extends Logger { v
2017-09-23 17:31:06
160
原创 scala-io-读写对象
@SerialVersionUID(42L)class Person(val name: String) extends Serializable { private val Friends = new ArrayBuffer[Person]() def addFriend(p: Person) { Friends += p } def isFriend(p: Per
2017-09-23 16:05:04
246
原创 scala File -demo1
def countClass(dir: File): Int = { val dirList = dir.listFiles dirList.filter(_.toString.endsWith(".class")).length + dirList.filter(_.isDirectory).map(countClass(_)).sum}val dir = "E:\\woskspa
2017-09-23 13:31:10
133
原创 scala-io-demo1
val in = Source.fromFile("c:/test.txt") //for (m <- """\d{2,}""".r.findAllIn(in.toArray)) println(m) //"""\d{2,}""".r.findAllIn(in.toArray).foreach(println)///notice:in just only be used on
2017-09-23 12:00:43
143
原创 scala 继承2
class Creature { def range: Int = 110 val env: Array[Int] = new Array[Int](range)}class AntA extends Creature { override def range = 20}class AntB extends Creature { override val range
2017-09-23 10:20:50
141
原创 scala继承例子1
import scala.collection.mutable.ArrayBufferobject Demo3 extends App { abstract class Item { def price: Double def description: String } class SimpleItem(val price: Double, val descr
2017-09-22 16:43:44
183
原创 scala 继承父类
class Point(val x: Double, val y: Double)class LabeledPoint(val label: String,val x: Double, y: Double) extends Point(x, y)val p = new LabeledPoint("label", 12.32, 56.3)println(p.label)printl...
2017-09-22 16:38:20
726
1
原创 十六,与java交互
结合scala和java scala和java高度兼容,因此可以进行互操作,大多数情况下结合这两种语言时并不需要太多顾虑,尽管如此,有时你还是会遇到一些结合java和scala的问题。基本上,scala使用java代码相对于java使用scala代码更容易一些。 scala代码如何被翻译: scala的实现方式是将代码翻译为标准的java字节码
2017-09-14 14:49:14
135
原创 十五,Actor和并发
与java的基于共享数据和锁的线程模型不同,scala的actor包则提供了另外一种不共享任何数据、依赖消息传递的模型。设计并发软件时,actor是首选的工具,因为它们能够帮助你避开死锁和争用状况,这两种情形都是在使用共享和锁模型时很容易遇到的。 创建actor:actor是一个类似于线程的实体,它有一个用来接收消息的邮箱。实现actor的方法是继承scala.actors.Actor
2017-09-14 14:48:12
221
原创 十四,I/O
由于scala可以和java互操作,因此目前scala中的I/O类库并不多,你可能需要使用java中的I/O类库。下面介绍scala中有的东东: scala.Console对象可以用于终端输入输出,其中终端输入函数有:readLine、readInt、readChar等等,终端输出函数有:print、println、printf等等。其实,Predef对象中提供的预定义的
2017-09-14 14:12:38
168
原创 十三,包和引用
打包: scala的代码采用了java平台完整的包机制。你可以使用两种方式把代码放进包里:① 使用放在文件顶部的package子句来把整个文件放入包中;② 使用package子句把要放入到包中的代码用花括号括起来,这种方式像C#的命名空间。使用这种方式,你可以定义出嵌套的包,注意:scala的包可以嵌套,java则不可以。任何你自己写的顶层包都被隐含地包含在_roo
2017-09-14 14:11:28
121
原创 十二,集合
scala的集合(collection)库分为可变(mutable)类型与不可变(immutable)类型。以Set为例,特质scala.collection.immutable.Set和scala.collection.mutable.Set都扩展自scala.collection.Set。 scala集合的顶层抽象类和特质: scala.collection.immutab
2017-09-14 14:10:28
183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人