<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Andypan的智慧书屋]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/oinvuki3375</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; oinvuki3375]]></copyright><item><title><![CDATA[突然又点进来了]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/125177147</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/125177147</guid><author>oinvuki3375</author><pubDate>Wed, 08 Jun 2022 08:18:26 +0800</pubDate><description><![CDATA[时隔4年，突然又点进来了来都来了，就随便写点什么吧我随便写，你随便看]]></description><category></category></item><item><title><![CDATA[人工智能机器学习大数据java爬虫python网络linux算法ios经济android金融c电子书下载合集]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/82686446</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/82686446</guid><author>oinvuki3375</author><pubDate>Thu, 13 Sep 2018 13:11:44 +0800</pubDate><description><![CDATA[链接地址：http://note.youdao.com/noteshare?id=b9e1cb156fde5c42dfd7d133933eaf8e



 

 





                    

         还有7000+豆瓣高分好书。。。。持续更新国外最新的畅销书。。。

 



 

 ...]]></description><category></category></item><item><title><![CDATA[尽量避免null,多用optional]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/79387714</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/79387714</guid><author>oinvuki3375</author><pubDate>Tue, 27 Feb 2018 14:15:40 +0800</pubDate><description><![CDATA[尽量少的用null,NPE是万恶之源，可以使用java8提供的Optional,对应scala中是option,可以参考OptionalUtil中的方法。下面给几个对比的example:

eg:

使用前：


T t= service.get();

if(t== null  ){


throw new Exception(&quot;object not exist&quot;);

}

使用后：


T ...]]></description><category></category></item><item><title><![CDATA[使用guava-retry优雅的实现接口重试]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/79387616</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/79387616</guid><author>oinvuki3375</author><pubDate>Tue, 27 Feb 2018 14:10:38 +0800</pubDate><description><![CDATA[介绍

API 接口调用异常, 网络异常在我们日常开发中经常会遇到，这种情况下我们需要先重试几次调用才能将其标识为错误并在确认错误之后发送异常提醒。guava-retry可以灵活优雅的实现这一功能。

Guava retryer在支持重试次数和重试频度控制基础上，能够兼容支持多个异常或者自定义实体对象的重试源定义，让重试功能有更多的灵活性。Guava Retryer也是线程安全的，入口调用逻辑采用...]]></description><category></category></item><item><title><![CDATA[rz sz 命令安装]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78246760</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78246760</guid><author>oinvuki3375</author><pubDate>Mon, 16 Oct 2017 10:04:32 +0800</pubDate><description><![CDATA[对于经常使用Linux系统的人员来说，少不了将本地的文件上传到服务器或者从服务器上下载文件到本地，rz / sz命令很方便的帮我们实现了这个功能，但是很多Linux系统初始并没有这两个命令。今天，我们就简单的讲解一下如何安装和使用rz、sz命令。
1.软件安装

root 账号登陆后，依次执行以下命令：







1

cd
 /tmp






]]></description><category></category></item><item><title><![CDATA[XMLhandleTest]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78218030</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78218030</guid><author>oinvuki3375</author><pubDate>Thu, 12 Oct 2017 18:09:49 +0800</pubDate><description><![CDATA[import scala.collection.mutable.ArrayBuffer
import scala.xml._
import scala.xml.parsing.XhtmlParser
import scala.io.Source
import scala.xml.transform.{RewriteRule, RuleTransformer}

object XMLhandleTe]]></description><category></category></item><item><title><![CDATA[Compare performance for immutable var / mutable val]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78217897</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78217897</guid><author>oinvuki3375</author><pubDate>Thu, 12 Oct 2017 17:56:58 +0800</pubDate><description><![CDATA[/**
 * Compare performance for immutable var / mutable val
 * varImmutable: 1641ms
 * valMutable: 110ms
 * valArrayFixedLength: 93ms
 */
object PerformmancetTest extends App {


  val count =]]></description><category></category></item><item><title><![CDATA[Idea hot key]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78212968</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78212968</guid><author>oinvuki3375</author><pubDate>Thu, 12 Oct 2017 11:33:08 +0800</pubDate><description><![CDATA[一.找文件找代码找引用相关


1.双击shift 
 在项目的所有目录查找，就是你想看到你不想看到的和你没想过你能看到的都给你找出来


2.ctrl+f 
当前文件查找特定内容


3.ctrl+shift+f
当前项目查找包含特定内容的文件


4.ctrl+n 
查找类


5.ctrl+shift+n
查找文件


6.ctrl+e 
最近]]></description><category></category></item><item><title><![CDATA[利用模式匹配和递归计算list]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78190105</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78190105</guid><author>oinvuki3375</author><pubDate>Tue, 10 Oct 2017 10:46:30 +0800</pubDate><description><![CDATA[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))]]></description><category></category></item><item><title><![CDATA[交换一个数组前两个元素位置（@的用法）]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78184673</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78184673</guid><author>oinvuki3375</author><pubDate>Mon, 09 Oct 2017 17:20:13 +0800</pubDate><description><![CDATA[
def swap2(a: Array[Int]) = a match {
  case Array(a, b, end@_*) =&amp;gt; Array(b, a) ++ end
}

assert(swap2(Array(1, 2, 3, 4)).deep == Array(2, 1, 3, 4).deep)

一个大大的彩蛋：https://mp.youkuaiyun.com/postedit/82686...]]></description><category></category></item><item><title><![CDATA[FileVistor]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78184547</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78184547</guid><author>oinvuki3375</author><pubDate>Mon, 09 Oct 2017 17:11:20 +0800</pubDate><description><![CDATA[在早期的Java版本中，如果需要对指定目录下的文件进行遍历，则需要用递归的方法来实现，这种方法有点复杂，而且灵活性也不高。而使用Java7中Files工具类中的walkFileTree()方法可以很容易的实现对目录下的所有文件进行遍历。这个方法需要一个Path和一个FileVisitor参数。其中Path是要遍历的路径，而FileVisitor则可以看成的一个文件访问器，它主要提供的四个方法，这在]]></description><category></category></item><item><title><![CDATA[list的：+ 和 ：+操作区别]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78182548</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78182548</guid><author>oinvuki3375</author><pubDate>Mon, 09 Oct 2017 14:51:16 +0800</pubDate><description><![CDATA[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]]></description><category></category></item><item><title><![CDATA[实现一个adjustToPair(_ * _)(6,7) = 42 的方法]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78144233</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78144233</guid><author>oinvuki3375</author><pubDate>Sat, 30 Sep 2017 17:11:30 +0800</pubDate><description><![CDATA[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]]></description><category></category></item><item><title><![CDATA[unapplyDemo]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78132464</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78132464</guid><author>oinvuki3375</author><pubDate>Fri, 29 Sep 2017 11:49:11 +0800</pubDate><description><![CDATA[class ApplyDemo {
  def apply() = "apply in class"

  def test {
    println("test")
  }
}

/**
  * 伴生对象，相当于类的静态方法
  */
object ApplyDemo {

  def stat {
    println("static method")
  }

  def apply()]]></description><category></category></item><item><title><![CDATA[一个矩阵的简单运算工具类]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78126740</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78126740</guid><author>oinvuki3375</author><pubDate>Thu, 28 Sep 2017 18:08:25 +0800</pubDate><description><![CDATA[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]]></description><category></category></item><item><title><![CDATA[深入理解Scala的隐式转换系统]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78110688</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78110688</guid><author>oinvuki3375</author><pubDate>Wed, 27 Sep 2017 11:06:17 +0800</pubDate><description><![CDATA[摘要：

通过隐式转换，程序员可以在编写Scala程序时故意漏掉一些信息，让编译器去尝试在编译期间自动推导出这些信息来，这种特性可以极大的减少代码量，忽略那些冗长，过于细节的代码。

 

使用方式：

1.将方法或变量标记为implicit

2.将方法的参数列表标记为implicit

3.将类标记为implicit

 

Scala支持两种形式的隐式转换：]]></description><category></category></item><item><title><![CDATA[偏函数Demo]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78105942</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78105942</guid><author>oinvuki3375</author><pubDate>Tue, 26 Sep 2017 19:40:37 +0800</pubDate><description><![CDATA[//偏函数
//被包在花括号内没有match的一组case语句是一个偏函数，它是PartialFunction[A, B]的一个实例，A代表参数类型，B代表返回类型，常用作输入模式匹配
package cn.itcast.cases

object PartialFuncDemo  {

  def func1: PartialFunction[String, Int] = {
    case ]]></description><category></category></item><item><title><![CDATA[OptionDemo]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78105925</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78105925</guid><author>oinvuki3375</author><pubDate>Tue, 26 Sep 2017 19:38:34 +0800</pubDate><description><![CDATA[//Option类型
//在Scala中Option类型样例类用来表示可能存在或也可能不存在的值(Option的子类有Some和None)。
//Some包装了某个值，None表示没有值


object OptionDemo {
  def main(args: Array[String]) {
    val map = Map("a" -> 1, "b" -> 2)
    val v =]]></description><category></category></item><item><title><![CDATA[样例类Demo]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78105909</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78105909</guid><author>oinvuki3375</author><pubDate>Tue, 26 Sep 2017 19:36:29 +0800</pubDate><description><![CDATA[//在Scala中样例类是一中特殊的类，可用于模式匹配。case class是多例的，后面要跟构造参数，
case object是单例的

import scala.util.Random

case class SubmitTask(id: String, name: String)
case class HeartBeat(time: Long)
case object CheckTimeO]]></description><category></category></item><item><title><![CDATA[匹配数组、元组]]></title><link>https://blog.youkuaiyun.com/oinvuki3375/article/details/78105846</link><guid>https://blog.youkuaiyun.com/oinvuki3375/article/details/78105846</guid><author>oinvuki3375</author><pubDate>Tue, 26 Sep 2017 19:30:39 +0800</pubDate><description><![CDATA[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]]></description><category></category></item></channel></rss>