自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 人工智能机器学习大数据java爬虫python网络linux算法ios经济android金融c电子书下载合集

链接地址:http://note.youdao.com/noteshare?id=b9e1cb156fde5c42dfd7d133933eaf8e                               还有7000+豆瓣高分好书。。。。持续更新国外最新的畅销书。。。   ...

2018-09-13 13:11:44 313

原创 突然又点进来了

时隔4年,突然又点进来了来都来了,就随便写点什么吧我随便写,你随便看

2022-06-08 08:18:26 87

原创 尽量避免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 835

原创 使用guava-retry优雅的实现接口重试

介绍API 接口调用异常, 网络异常在我们日常开发中经常会遇到,这种情况下我们需要先重试几次调用才能将其标识为错误并在确认错误之后发送异常提醒。guava-retry可以灵活优雅的实现这一功能。Guava retryer在支持重试次数和重试频度控制基础上,能够兼容支持多个异常或者自定义实体对象的重试源定义,让重试功能有更多的灵活性。Guava Retryer也是线程安全的,入口调用逻辑采用...

2018-02-27 14:10:38 2984

转载 rz sz 命令安装

对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令。今天,我们就简单的讲解一下如何安装和使用rz、sz命令。1.软件安装root 账号登陆后,依次执行以下命令:1cd /tmp

2017-10-16 10:04:32 410

原创 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 378

原创 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 173

原创 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 264

原创 利用模式匹配和递归计算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 249

原创 交换一个数组前两个元素位置(@的用法)

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.csdn.net/postedit/82686...

2017-10-09 17:20:13 2316

转载 FileVistor

在早期的Java版本中,如果需要对指定目录下的文件进行遍历,则需要用递归的方法来实现,这种方法有点复杂,而且灵活性也不高。而使用Java7中Files工具类中的walkFileTree()方法可以很容易的实现对目录下的所有文件进行遍历。这个方法需要一个Path和一个FileVisitor参数。其中Path是要遍历的路径,而FileVisitor则可以看成的一个文件访问器,它主要提供的四个方法,这在

2017-10-09 17:11:20 223

原创 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 230

原创 实现一个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 160

转载 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 144

原创 一个矩阵的简单运算工具类

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 263

转载 深入理解Scala的隐式转换系统

摘要:通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码。 使用方式:1.将方法或变量标记为implicit2.将方法的参数列表标记为implicit3.将类标记为implicit Scala支持两种形式的隐式转换:

2017-09-27 11:06:17 162

原创 偏函数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 156

原创 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 161

原创 样例类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 292

原创 匹配数组、元组

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 173

原创 类型检查和转换

ScalaJavaobj.isInstanceOf[C]obj instanceof Cobj.asInstanceOf[C](C)objclassOf[C]C.class

2017-09-26 19:23:41 267

原创 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 415

原创 构造器注意点

注意:主构造器会执行类定义中的所有语句/**  *每个类都有主构造器,主构造器的参数直接放置类名后面,与类交织在一起  */ class Student(val name: String, val age: Int){  //主构造器会执行类定义中的所有语句  println("执行主构造器")   try {    println("读取文件")   

2017-09-26 19:16:59 200

原创 计算工时小程序

每次月末看到到家都在计算工时够不够,好辛苦,还容易出错,于是就写了个小程序给大家用大大的彩蛋:https://mp.csdn.net/postedit/82686446package utilimport scala.collection.mutable.ArrayBufferimport scala.io.Sourceobject WorkTimeHelper extends...

2017-09-26 18:54:25 2652

原创 Java8时间计算

一个大大的彩蛋:https://mp.csdn.net/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 604

原创 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 206

原创 特质->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 157

原创 特质的继承层级

//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 189

原创 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 134

原创 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 219

原创 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 105

原创 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 118

原创 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 119

原创 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 159

原创 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 664 1

原创 十六,与java交互

结合scala和java          scala和java高度兼容,因此可以进行互操作,大多数情况下结合这两种语言时并不需要太多顾虑,尽管如此,有时你还是会遇到一些结合java和scala的问题。基本上,scala使用java代码相对于java使用scala代码更容易一些。 scala代码如何被翻译:         scala的实现方式是将代码翻译为标准的java字节码

2017-09-14 14:49:14 109

原创 十五,Actor和并发

与java的基于共享数据和锁的线程模型不同,scala的actor包则提供了另外一种不共享任何数据、依赖消息传递的模型。设计并发软件时,actor是首选的工具,因为它们能够帮助你避开死锁和争用状况,这两种情形都是在使用共享和锁模型时很容易遇到的。 创建actor:actor是一个类似于线程的实体,它有一个用来接收消息的邮箱。实现actor的方法是继承scala.actors.Actor

2017-09-14 14:48:12 199

原创 十四,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 149

原创 十三,包和引用

打包:         scala的代码采用了java平台完整的包机制。你可以使用两种方式把代码放进包里:①  使用放在文件顶部的package子句来把整个文件放入包中;②  使用package子句把要放入到包中的代码用花括号括起来,这种方式像C#的命名空间。使用这种方式,你可以定义出嵌套的包,注意:scala的包可以嵌套,java则不可以。任何你自己写的顶层包都被隐含地包含在_roo

2017-09-14 14:11:28 104

原创 十二,集合

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 158

空空如也

空空如也

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

TA关注的人

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