
Scala学习路线所用到的所有示例
发布日期:2021-05-14 05:35:40
浏览次数:21
分类:原创文章
本文共 24734 字,大约阅读时间需要 82 分钟。
import java.io.{FileNotFoundException, FileReader, IOException}import java.util.Dateimport scala.collection.immutableimport scala.collection.mutable.{ArrayBuffer, ListBuffer}import scala.xml.dtd.ANYimport Array._import scala.{+:, ::}import scala.collection.mutable.Setimport scala.io.Sourceimport scala.sys.processimport scala.util.control.Breaks.{break, breakable}object scalaTest { def main(args: Array[String]): Unit = { /*var or val*/// var a = 1// val b =2// a =3// b = 4 //error : reassignment to val// println(a, b) /*if judge*/ /*if else if*/// var score = 10////// if (score > 90){//// print("优秀")//// }else if(score > 80){//// print("良好")//// } else if(score > 60){//// print("及格")//// }else{//// print("不及格")//// } /*match*/// var score = 61//// score match {// case 69 => {// print("69")// }// case 65 =>{// print("65")// }// case _ => print("none")//// } /*match 2*/// val list = List(1,2,3.4,"spark","hive")// for(i <- list){// val rs = i match {// case i:Int =>"i is a Int"// case i:Double => "i is a double"// case i:String => "i is string , "+i// case _ => "i is unknown type"//// }// println(rs)// } /*match 3 use guard */// val list =List(1,2,3,4,5,6)// for(ele <- list){// val rs = ele match {// case _ if(ele %2 == 0) => {ele+" is a even."}// case _ => {ele +"is a odd."}// }// println(rs)// } /* loop*/ /*while*/// var i = 1//// while(i<10){//// print("i is :"+i)//// i+=1//// } /*do ... while */// var i =0// do{//// print("i is :" +i)// i+=1//// }while(i < 10) /*for*/// val listA = List(1,2,3,4,5);// for(m <- listA// if m < 4; if m != 2){//print("elements is :"+m)// } /*for loop use range*/// for(i <- range(1,10)){// println(i)// } /*for eg2*/// for(i <- 1 to 10 by 3){// println(i)// } /*for use offset*/// for(i <- range(1,10,2) ){// println(i)// } /*for and if judge*/// for (i <- 1 to 10// if i%2 == 0){// print(i)//// } /*for and yield*/// val yieldTest = for{i <- 1 to 10// if i%7 == 0// }yield i//// for(i <- yieldTest){// print(i)// } /*yield eg2*/// var testVar = for {i <- 1 to 10// if i % 3 == 0// } yield {print(i)// i }// println(testVar) /*more creater for*/// for( i <- range(1,9); j <- range(1,9)){// println(i," * ",j,"=",i*j)// } /*break*/// val arr = Array(1, 2, 49, 4, 88, 10)// breakable{// for(i <- arr){// if(i>5) break// println(i)// }// } /*continue*/// val arr = Array(1, 2, 66, 4, 88, 10)// for(i <- arr){// breakable{// if(i >50){// break// }// println(i)// }// } /*String*/ /*StringBuilder*/// val builder = new StringBuilder// builder += 'a' //+= for char add,so need ''// builder ++= "def" // ++= for string add ,so need ""// println(builder.length) /*add*/// val str1 = "abc"// val str2 = "ddd"// var str3 = str1.concat(str2)// var str4 = str1 + str2// println(str3)// println(str4) /*split*/// val str1 = "abc"// val str2 = "dddeddddeddddd"// val str3 = "a,b,c,d,e,f,e,1"// var arr1 = new Array[String](10)// arr1 = str3.split(",")// for (i <- arr1){// println(i)// }// arr1.foreach{x => println(x)} /*stringBuffer*/// var arrB1 = ArrayBuffer[Int]()// arrB1.append(1)// for(i <- arrB1){// println(i)// }// arrB1.foreach{x => println(x)} /*Array*/// var arr1 = new Array[Int](3)// arr1(0) = 1// arr1(1) =2// arr1.foreach(x => print("first:"+x+"\n"))//// println("------------------")//// arr1(0)=999// arr1.foreach(x => print("second:"+x+"\n")) /*create a array's two method*/// var arr1 = Array(111,222.333,6666)// arr1.foreach(println("arr1: ", _))//// val arr2 = new Array[Int](3)// arr2(0) = 9999// arr2(1) = 88888// arr2.foreach(println("arr2: ",_)) /*Array Buffer*/// var arr1 = new ArrayBuffer[Int]()// arr1.append(1)// arr1.append(2)//// arr1.foreach(x => println(x))// println("-----------")// println(arr1(0)) /*two dim array*/// var arr1 = Array.ofDim[Int](2,2)// arr1(0)(0) = 1// arr1(0)(1) = 2// arr1.foreach{x => x.foreach(y => println(y))} /*array concat*/// var arr2 = new Array[Int](1)// arr2(0)=3//// var arr3 = new Array[Int](1)// arr3(0) = 4//// var arr4 = concat(arr3, arr2)//// arr4.foreach(x => println(x))// for(i <- arr4){// println(i)// } /*range array*/// var arr1 = range(1,10)// arr1.foreach(x => println(x)) /*add 3 once*/// var arr2 = range(1,10,3)// arr2.foreach(x => println(x)) /*for loop use range*/// for(i <- range(1,10)){// println(i)// } /*========================collection==================================*/ /******************************list*********************************/// var list1 = List(1,2,3)//// list1.foreach(x => println(x))//// println(list1(0),list1(2))//// println("------change ele-----------")//// //list1(0) = 9999 //error : value update is not a member of List[Int]//// println(list1(0)) /*list*/// var arr1 = List(1, "2",3)// arr1.foreach(x => println(x)) /*statement method2*/// var list1 = 1::2::Nil// list1.foreach(x => println(x)) /*common method*/// var lb = new ListBuffer[Int]// lb.append(1)// lb.append(2,3,4)// lb.foreach(x => println(x)) /*apply*/// println(lb.apply(1)) /*drop*/// var lb = new ListBuffer[Int]// lb.append(1,2,3,4)// var listTem = new ListBuffer[Int]// listTem = lb.dropRight(2)// listTem.foreach(x => println(x)) /*drop while*/// var lb = new ListBuffer[Int]// lb.append(1,2,3,4,5)//// var lbTemp = new ListBuffer[Int]// var len = lb.length// lbTemp = lb.dropWhile(len => len<3 )// lbTemp.foreach(x => println(x)) /*exist*/// val listString = new ListBuffer[String]// listString.append("张三","李四","麻子","赵四"," ")// var flag:Boolean = listString.exists(x => x.equals("zhangsan"))// val flag2 = listString.exists(x => x.equals("赵四"))//// println("flag :"+flag)// println("flag2 :"+flag2) /*indexOf*/// val lb = new ListBuffer[String]// lb.append("张三","李四","王五","赵四"," ")//// var index1 = lb.indexOf("张三")// println(index1)// println("------------------")// var index2 = lb.indexOf("张三1")// println(index2) /*lastIndexOf*/// val lb = new ListBuffer[String]// lb.append("张三","李四","王五","赵四"," ","张三")// var index = lb.lastIndexOf("张三")// println(index) /*map*/// val lb = new ListBuffer[String]// lb.append("张三","李四","王五","赵四"," ","张三")// var list2 = lb.map(x => x.trim+"2333")//// list2.foreach(x => println(x)) /*max min*/// var lb = new ListBuffer[Int]// lb.append(1,2,3,4,5)// var x = lb.max// println(x)//// println("----------------")// var n = lb.min// println(n) /*sorted and sortedBy*/// var lb = new ListBuffer[Int]// lb.append(1,2,9,4,5,2)// var lb2 = lb.sorted//// lb2.foreach(x => println("lb2 : "+x))//// println("---------------")//// var sortTest = (i:Int) => {// i match {// case 1 => 2// case 2 => 1// case 4 => 0// case _ => 3// }// }//// var lb3 = lb.sortBy(sortTest)// lb3.foreach(x => println("lb3: "+x)) /*sortedBy 2*/// //create a Class Person// class Person(age:Int, salary:Double, name:String){// var Age = age//// var Salary = salary//// var Name = name////// }//// val lisa = new Person(38, 2.3, "lisa")// val nana = new Person(1, 3.4, "nana")// val zhaoSi = new Person(1, 5.9, "赵四")// val grandpa = new Person(80, 20, "grandpa")//// //create a list// var listPerson = new ListBuffer[Person]//// listPerson.append(lisa, nana, zhaoSi, grandpa)//// //create a sort rule// var sortRule = (p:Person) => {// (p.Age, p.Salary)// }////// //list sort use the list Rule// var listPersonSorted = listPerson.sortBy(sortRule)(Ordering.Tuple2(Ordering.Int.reverse,// Ordering.Double.reverse// ))//// listPersonSorted.foreach(x => println(x.Name, x.Age, x.Salary)) /*list concat*/// var list1 = List(1)// var list2 =List(2)//// //method 1// var list3 = list1:::list2//// //method 2// var list4 = List.concat(list1, list2)// list3.foreach(x => println(x))// list4.foreach(x => println("list4: "+x)) /**********************Tuple****************************/ /*create tuple*/ // val tuple1 = (1,"yi",3.4) // println(tuple1._1) /*foreach*/ // val tuple1 = (1,"yi",3.4) // // tuple1.productIterator.foreach(println(_)) /**********************Vector************************************/ /**create a vector*/// val vector1 = Vector(1,2,33,"爱神的箭")// vector1.foreach(println(_))// println(vector1.getClass.getName) /**concat vector**/// val vector1 = Vector(1,2,33,"爱神的箭")//// val vector2 = vector1:+1// vector2.foreach(println("vector2 :",_))//// val vector3 = 666+:vector1// vector3.foreach(println("vector3 :",_)) /************************ Range***********************************/// val range1 = new Range(1,5,2)// range1.foreach(println(_))//// println(1 to 5 by 1)// println(1.to(5).by(2))// println(1 until 5)// val a = .5f to 10.8f by 0.5f// a.foreach(println(_)) /****************************************set *****************/ /*set's head tail isEmpty*/// var set1 =Set("一",1,2,"er")// var set2 = Set()// println("set1.head :"+set1.head)// println("set1.tail:"+set1.tail)// println("set1.isEmpty:"+set1.isEmpty)// println("---------------")//// println("set2 :"+set2.isEmpty)// println(set2.getClass.getName)// println(set1.apply(1))// println(set1.apply(9999)) /*set concat*/// var set1 =Set(1,2,3)// var set2 =Set(4,5)//// var set3 = set1++set2//// var set4 = set1.++(set2)// println("set3: "+set3)// println("set4: "+set4) /*set max min */// var set1 = Set(1,2,3,99,100.3)// println(set1.max) /*set max min 2*/// var set2 = Set("a", " b","C")// println("set2: "+set2.max) /*Set.intersect*/// var set1 = Set(1,2,3,99,100.3)// var set2 = Set(1,100.3)// var set3 = set1.&(set2)// var set4 = set1.intersect(set2)//// set3.foreach(println(_))// println("----------------")// set4.foreach("set4: "+println(_)) /*set count*/// var set1 = Set(1,2,3,99,100.3)//// println(set1.apply(3))// println(set1.contains(2222222)) /*set filter*/// var set1 = Set(1,2,3,99,100.3)// var set2 = set1.filter(_>3)//// set2.foreach(println(_)) /*set forall*/// var set1 = Set(1,2,3,99,100)// println(set1.forall(_ >=1)) /*iterator*/// var inter = Iterator(1, 2, 3, 4)// while (inter.hasNext){//// println(inter.next())// } /*iterator's max min*/// var iter = Iterator(1, 2, 3, 4)// println(iter.max)// println(iter.min) /*iterator's find*/// var iter = Iterator(1, 2, 3, 4)// iter.find(_>2)// while (iter.hasNext){// println(iter.next())// } /*set flatmap*/// var iter = Iterator(1, 2, 3, 4)// var iter2 = iter.flatMap(e => e * 10)//// while (iter2.hasNext){// iter2.next()// } /*****************Map*************************************map*/ //val map1 = Map("name" -> "zhangsan", "age" -> "10") /*mutable map*/// val map2 = scala.collection.mutable.Map("name"->"zhangsan","gender"-> 2)// map2 +=("age" -> 12)//// map2.foreach(println(_))// map1.foreach(println(_))// println(map1.get("name")) /*use key get value*/// println(map1("name"))// println(if(map1.contains("gender")) map1("gender") else 0 ) /*isEmpty*/// println(map1.isEmpty) /*get all keys*/// println(map1.keys) /*get all values*/// val map2 = Map("name" -> "zhangsan", "age" -> "10")// println(map2.values) /*merge two map*/// val map2 =Map("name" -> "hangman2", "age" -> "10","gender"->1)// val map3 = Map("name" -> "zhangsan3", "age" -> "10")// val map4 = map2 ++ map3// map4.foreach(println(_)) /*get all keys and values*/// val map2 =Map("name" -> "hangman2", "age" -> "10","gender"->1)// map2.keys.foreach(i => {//// print("key is ", i)// println("value is ", map2(i))//// }) /*apply*/// val map2 =Map("name" -> "hangman2", "age" -> "10","gender"->1)// println(map2.apply("name3")) /*exists*/// val map2 =Map("name" -> "hangman2", "age" -> "10","gender"->1)// println(map2.exists(x => x._1 == "age" && x._2 == "10") ) /*filter*/// val map2 = Map("name" -> "hangman2", "age" -> "10","gender"->1)// println(map2.filter(x => x._1 == "name")) /*high map's foreach*/// val map1 = Map("zs"->"张三","ls"->"李四","ww"->"王五")// map1 foreach (x=>println(x._1,x._2))//// map1 foreach {x => x match {// case (k,v) => {println(k,v)}// }}//// map1 foreach {// case (k, v) => {// println(k, v)// }// } /*map*/// val list = List("hadoop","hive","spark")// val list2 = list.map(s => s.toUpperCase())// list2.foreach(println("list2: ",_))// val list3 = list.map(s => println(s.length)) /*flatmap*/// val list = List("hadoop","hive","spark")// println(list.flatMap(s => s.toList)) /*filter*/// val map1 = Map("zs"->"张三","ls"->"李四","ww"->"王五")// val map2 = map1 filter {x=> x._1 contains("s") }// map2.foreach(x=> println( x._1, x._2)) /* reduce*/// val list = List(1,2,3,4,5)// val num = list.sum// val num2 = list.reduce(_+_)// println(num)// println(num2) /*fold*/// val list = List(1,2,3,4,5)// val rs = list.fold(10)(_*_)// println(rs)//// val list2 = (list fold 10) (_+_) //infix// println(list2) /** * method * * */// def add(b: Int, a: Int)={//// var c = a// var d =b// a+b//// } /*get set */// class classTest{// private var privateVar = 0;// def value=privateVar//// def value_=(newValue:Int): Unit ={// if(newValue>0){// privateVar = newValue// }//// }////// }//// val myClassTest = new classTest// myClassTest.value=3// println(myClassTest.value) /*Infix */// class MyClassTest{// private var age = 0//// def increment(addAge :Int){// return age += addAge// }//// def curent:Int={age}//// def getAge():Int ={// return age// }//// }// val classTest = new MyClassTest// classTest increment 5// println("this is current method :", classTest.curent)// println("this is getAge method :", classTest.getAge()) /*infix eg2:*/// class MyClass{// def add(b:Int): Int ={// var c = b +3;// return c// }}//// val clazz = new MyClass// println(clazz add 3) /*omit parameter's () */// var b =0// def add(c:Int){// b += c// }// add(666)// println(b) /*Omit method's parameter*/// def add1 ={// var c = "this is c"// print("this is c2222")// }//// println(add1) /*** * function * */ /*function's declare*/ // var function0 = (a:Int, b:Int) => a+b // println(function0(1,3)) /*eg2*/ // var func1 = (a:Int,b:Int) => a.toString+ b.toString // println(func1(1,2)) /*use a function as parameter*/ // def highOrderFunc1 (a:Int, b:Int):Int= a + b // // def highOrderFunc2 ( f : =>Int, g:Int)= println("2222222") // println(highOrderFunc2(highOrderFunc1(1,2),2)) /*eg2*/ // def getTime()={ // // print("这是 getTime方法") // // System.nanoTime // } // // // def test(f: => Long)={ // // print("time is "+f) // // } // // test(getTime()) /*create a func eg*/// var func:(Int,String)=> String = {(para1,para2) => para1*2+" -----"+para2}// println(func(2,"OK"))// println(func.getClass.getName) /*Anonymous function*/// var anonymousTest:(Int,Int)=>Int = (a:Int, b:Int) => a+b// println(anonymousTest(1,2)) /*list test*/ //create a list val listTemp = List(1,2,3) //print(listTemp) //create a list val listTemp2 = 1::(2::(3::Nil)) //print(listTemp2) //two dimension list val listTwoDim = List(1,List(1,2,3)) //option val listForOpt = List(1,2,3,'四',List(5,6)) val listOpt2 = List(1,2) ; //1.add elements //print(listForOpt:::listOpt2) //concat two list //print(listForOpt::("one", "two")::Nil) //concat two list // print(List.concat(listForOpt,listOpt2)) //to concat two list //print(List.fill(10)("2")) //repeat elements 2 , 10 times //2.delete //3.change //4.search //print(listForOpt.head) //get first elements of list //print(listForOpt.tail) //return except first element's other ones //print(listForOpt.isEmpty) //judge the list is empty or not /** * * Class * * */ // class People(var name:String){//// def introduce(): Unit ={// println("my name is :", name)// }// }//// val zhangs = new People("zhangsan")// zhangs.introduce()//// println("get the people's old name ",zhangs.name)//// zhangs.name = "zhangXiaoSan"// println("get the people's new name ",zhangs.name) /*create var in method*/// class myMethodTest(var var1:Int){// def outPutTest(): Unit ={// println(var1)// }//}// val test = new myMethodTest(1)// test.outPutTest() //reference a method// val c = add(1,2)// print(c) /* * 111111111````````````````````````````````````*/ /* test the default parameter */// val date = new Date()// def testLine1(a:Date, b:String): Unit ={//// print("date:"+a,"b:"+b)// }//// val testLine2 = testLine1(date, _:String) //Default parameter////// testLine2("12121bbbbb") //need only one para,cause Default parameter /* make a method to a function*/// def methodTransfer(a:Int, b:Int): Int ={//// print("a+b is ", a+b)// return a+b// }//// val methodTransferTest = methodTransfer _//// var tmp = methodTransferTest(1,2)// println("methodTransferTest",tmp )// println("-----------")// tmp = methodTransfer(1,3)// println("methodTransfer ", tmp) /*eg2*/// def changeMethod1 (a:Int, b:Int)={// println("test here")// a+b// }//// val mVar = changeMethod1 _// println(mVar(1,2)) /****** Apply *******/// class ApplyTest {// def apply(name:String): Unit ={// printf("called apply method , and name is %s",name)// }// }// val test = new ApplyTest// test("张三") /*apply2 */// def add = (x:Int, y:Int) => x+y//// println("这里没有调用apply", add(1,2))// println("这里调用 apply:",add.apply(2,3)) /*update*/// val arr2 = new Array[Int](3)// arr2(0) = 9999// arr2(1) = 88888// arr2.update(2,9999)// arr2.foreach(println("arr2: ",_)) /*apply use case*/// case class Dog(val name:String){// def bark(): Unit ={// println("dog is wangwang")// }// }//// val daHuang = Dog("daHuang")// daHuang.bark() /*unapply*/// class People(val name:String){// def peopleInfo(): Unit ={// println("this people‘s name is :")// }// }// object People{// def apply(name:String): People ={//// return new People(name)// }////// def unapply(c:People): Option[String] ={//// return Some(c.name)// }// }//// var People(getName) = People("张三")// println(getName) /******************unapply 2 ****************************/// class Animal(val name:String, val theType:String){// def animalInfo(): Unit ={// printf("this Animal‘s name is %s, type is %s", name, theType)// }// }// object Animal{// def apply(name:String,theType:String): Animal ={//// return new Animal(name,theType)// }////// def unapply(c:Animal): Option[(String,String)] ={//// return Some(c.name,c.theType)// }// }//// val animal1 = Animal("大黄","狗狗")// animal1.animalInfo()// println("")////// val Animal(n,t) = animal1// printf("the animal's name is %s, and the type is %s",n,t) // class ApplyTest(name:String){// def speak(){// val name = this.name// println(name+"is speaking")// }////// }// object ApplyTest{// def apply(name:String): ApplyTest ={// new ApplyTest(name)// }//// }// val p1 = ApplyTest("张三")// p1.speak() /*option eg1:*/// case class Dog(val dname:String){//// val price_Dic = Map("柯基"->1000,"金毛"->"1100","边牧"->1500)//// def queryPrice(): Option[Any] ={// return price_Dic.get(dname)// }// }//// val d1 = Dog("金毛").queryPrice()// println(" return is",d1)// println("金毛 price is",d1.get)//// val d2 =Dog("柴犬").queryPrice()// println(" return is",d2)// println("柴犬’s price is ", d2.getOrElse("Option retrun None")) /* case */// case class People(val name:String, val age:Int){//// }// val saveList = new ListBuffer[String]// val peopleList = List(People("zs",1),People("ls",2),People("ww",9999))//// for(ele <- peopleList){// val result = ele match {// case People("zs",1) => {"this is ww 33"}// case People("zs",99) => {"this is 张三, 99岁了"}// case People(pname,page) =>{"this people's name is "+pname+", and page is "+page}// }//// saveList.append(result)// }// saveList.foreach(println(_)) /*option eg2:*/// case class Dog(val name:String, val age:Int){//// }// val myPet = Map("大黄"->Dog("大黄",3),"四眼"->Dog("四眼",2))// println(myPet.get("四眼")) /******** abstract *****/// abstract class People(){// val name:String//// def speak()// def info(): Unit ={// printf("this people's name is %s", name)// }// }//// case class Male(pname:String) extends People {// val name = pname//// override def speak(): Unit = {// printf("the man is speak")// }//// }//// val male1 = Male("尼古拉斯-张三")// male1.speak() /*Trait*/// trait Runable{// def category:String// def run(): Unit ={// printf("%s can run",category)// }// }//// trait Flyable {// def category: String//// def fly(): Unit = {// printf("%s can fly", category)// }// }// abstract class Animal(val theName:String){// def info()//// }//// case class Dog() extends Animal("Dog") with Runable{// override def category: String = "哺乳动物"//// override def info(): Unit = {// printf("the category is %s, and the name is %s \n",category,theName)// }// }////// val erHa = Dog()// erHa.info()// erHa.run() /*package*///import Animal.Canidae.Dog// val dog = new Dog()// dog.abc()//// import Animal.Felidae.Cat// val cat = new Cat// cat.miao() /*exception*/// try{// val reader = new FileReader("input.txt")//// }catch {// case fileNotFoundException: FileNotFoundException => {println("this is a file not find ex")}// case ex: IOException => {println("this is a IOexception")}//// }finally {// println("there is a error")// } /*word Count*///import java.io.File//import scala.collection.mutable.Map val textFilePath ="D:/doc/spark/input"//// //create a File// val dirFile = new File(textFilePath)// //to get every file or dir's path// val files = dirFile.listFiles()////// //to save the word// val resultMap1 = Map.empty[String,Int]//// //to get every file in the dir// for(file <- files){//// //get every file's data// val data = Source.fromFile(file)//// //to get every word// var str = data.getLines().flatMap(s => s.split(" "))//// // judge and count// str foreach {// word =>// if(resultMap1.contains(word)){// resultMap1(word) += 1//// }else{// resultMap1 += (word->1)//// }// }//// }////// //print the result// resultMap1.foreach(x => println(x._1,x._2))// println("--------------")//// //filter null// val resultMap2 = resultMap1.filter(x => x._1.nonEmpty)// resultMap2.foreach(x => println(x._1,x._2))//// println("--------------")// //sortBY// val resultMap3 = resultMap2.toList.sortBy(_._2)// resultMap3.foreach(x => println(x._1,x._2)) }}
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月30日 10时04分49秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CMake的主体框架
2021-05-14
微积分(三)
2021-05-14
Oracle
2021-05-14
软件工程应用
2021-05-14
数据科学
2021-05-14
函数与高级变量
2021-05-14
键盘事件
2021-05-14
折线图
2021-05-14
注册页面案例
2021-05-14
np.bincount(x)的简单解释
2021-05-14
LeetCode Top-100 T22-括号生成
2021-05-14
vscode设置eslint保存文件时自动修复eslint错误
2021-05-14
deepin 安装过程记录
2021-05-14
JAVA 多线程
2021-05-14
Java的 arraylist类【具体案例】
2021-05-14
牛客-链表中环的入口节点(Java)
2021-05-14
【ARM自学笔记】ARM Cortex -A中断系统(程序篇)
2021-05-14
解决微信小程序中 calc 失效问题
2021-05-14
JS数组去重的方法
2021-05-14
堆的应用_topK算法和堆排序
2021-05-14