自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【计算机网络】2、计算机网络在信息时代中的作用

21世纪的一些重要特征就是数字化、网络化和信息化,它是一个以网络为核心的信息时代。思考:大家每天离不开的一件物品是什么?如果没有了网络,没有了互联网给,没有了互联网上丰富多彩的信息和应用,人们还会对手机痴迷吗?那我们平时所说的网络到底是什么呢?网络(Network)由若干结点(Node)和连接这些结点和链路(Link)所组成。网络中的结点可以是计算机、集线器、交换机或者路由器等。图1多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的计算机网络。这样的网络称..

2022-04-27 15:31:07 230

原创 【计算机网络】1、为什么要学习计算机网络基础

一、《第48次中国互联网网络发展状况统计报告》显示截止2021.6,中国网民数量达到10.11亿,网民每周上网时间接近27个小时,其中20-50岁的网民占比56.4%,占了超过一半以上。手机网民占比99.6%。有5亿多人玩游戏,但是网络游戏同比下降1.7%。二、对于我们有什么意义呢?1.了解计算机网络常识跟同事朋友聊天时,需要用到网络常识,否则很尴尬、不够专业。2.软件开发对于程序员来说,掌握计算机网络知识,以及计算机网络调试软件的方法,对于软件开发是很重要的。eg:软件

2022-04-27 14:19:08 3137

原创 技术分享1:canal原理及安装、使用

最近leader建议小组内每个成员选一个主题,一个月分享一次新技术的学习成果。于是就有了这篇文章的诞生。0、canal原理1.canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议;2.mysql master收到dump请求,开始推送binary log给slave(也就是canal);3.canal解析...

2019-07-31 11:50:36 493

原创 68.Scala并发编程原生线程Actor、Cass Class下的消息传递和偏函数实战解析及其在Spark中的应用源码解析

package ce.scala.zhong//6import scala.actors.Actorimport scala.actors.Actor._//用case class 或者case object作为消息来传递,有两个原因://1.参数是val类型的,在传输过程中不会改变。2.接收消息时,模式匹配+case class,极大简化了代码的处理(比如下面的name和age可以

2017-10-12 22:15:03 385

原创 67.Scala并发编程匿名Actor、消息传递、偏函数实战解析及其在Spark源码中的应用解析

package ce.scala.actorimport scala.actors.Actor._import scala.actors.Actorobject Actor_Message_67 { def main(args: Array[String]): Unit = { //匿名Actor val actor_Message = actor{ //Actor

2017-10-12 21:37:03 357

原创 66.Scala并发编程实战初体验及其在Spark源码中的应用解析

程序宏大时java并发编程变得非常复杂,java并发编程的理念是:基于共享数据和加锁java多线程同时访问一个加锁数据时易发生死锁scala的并发编程:actor。与java实现方式完全不同,actor不共享数据,依赖消息传递A传给B消息,B不停看收件箱。B看到邮件后处理。import scala.actors.Actorobject First_Actor e

2017-10-12 21:33:47 327

原创 65.Scala中隐式转换内幕操作规则揭秘、最佳实践及其在Spark中的应用源码解析

隐式砖混的内幕操作规则:1.必须有关键字implicit,可以修饰在类/对象/函数/参数或者变量前2.作用域规则。隐式转换在整个作用域中必须是单一的标志符。相当于id,是唯一的。3.隐式转换内容必须在不存在其他插入转换的前提下才能进行正常的隐式转换。import scala.io.Sourceimport java.io.Fileclass RicherFile(va

2017-10-12 21:30:37 355

原创 64.Scala中隐式对象代码实战详解

隐式对象:implicit object xxxpackage ce.scala.zhongabstract class Template[T]{ //抽象类 T是泛型 def add(x : T, y : T) : T}abstract class SubTemplate[T] extends Template[T]{ def Unit : T}object

2017-10-12 21:25:53 304

原创 63.Scala中隐式类代码实战详解

package ce.scala.zhongimport scala.io.Sourceimport java.io.Fileobject Context_Helper{ implicit class FileEnhancer(file : File){ //隐式类,只有File或其子类才可匹配 def read = Source.fromFile(file.getPath

2017-10-12 21:23:30 243

原创 62.Scala中上下文界定内幕中的隐式参数与隐式参数的实战详解及其在Spark中的应用源码解析

package ce.scala.zhongclass Pair_Implicits[T:Ordering](val first:T, val second : T){ def bigger(implicit ordered:Ordering[T]) = { //存在一个隐式值ordered if(ordered.compare(first, second) > 0) firs

2017-10-12 21:21:07 342

原创 61.Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析

object Implicit_Conversions_with_Implicit_Parameters_61 { def main(args: Array[String]): Unit = { //泛型函数 柯里化 有两个参数列表 def bigger[T](a : T, b : T) (implicit ordered : T => Ordered[T]) =

2017-10-03 22:53:13 295

原创 60.Scala中隐式参数实战详解以及隐式参数在Spark中的应用源码解析

隐式参数:函数/方法中参数前有implicit关键字//7object Context_Implicits{ implicit val default : String = "Java"}object Param{ //这里有两个参数列表,属于柯里化 def print(content : String)(implicit language : String){

2017-10-03 22:51:45 304

原创 59.Scala中隐式转换初体验实战详解以及隐式转换在Spark中的应用源码解析

隐式转换的目的:增强类库功能在spark或者play框架中,到处可见。增强类库的方式:在Java或者C#中,用工具类或者继承在Scala中,用隐式转换或者隐式参数。import java.io.Fileimport scala.io.Sourceclass RichFile(val file : File){ //RichFile是增强的类。比如1 to 3 1是In

2017-10-03 22:49:52 433

原创 58.Scala中Abstract Types实战详解

抽象类型:在trait、class、abstract class中,定义的类型是抽象的。package ce.scala.zhongimport scala.io.BufferedSourceimport scala.io.Source//7trait Reader{ //可以对抽象类型进行复杂的类型限制 type In <: java.io.Serial

2017-10-03 22:48:37 305

原创 57.Scala中Dependency Injection实战详解

依赖注入:一个程序是由不同的组件构成,不同组件之间有依赖关系,需要协同工作。比如:Spring框架依赖注入很多时候要使用自身类型package ce.scala.zhong//7trait Logger {def log(msg : String)}trait Auth { auth : Logger => //通过自身类型,可以很好地限定类型和行为

2017-09-30 19:42:40 366

原创 56.Scala中Self Types实战详解

自身类型的第一个用途:class Self { self => //self是this的别名,每个类都有个this指针,指向自己的实例。可以用除了this的其他任何名字。 val tmp = "scala" def foo = self.tmp + this.tmp}object Self_Types_56 {    def main(args: A

2017-09-30 17:17:24 705

原创 55.Scala中Infix Type实战详解

中值类型:允许带有2个参数的类型object Infix_Types_55 { def main(args: Array[String]): Unit = { //7 object Log {def >>: (data : String) : Log.type = {println(data); Log}} //<<: 是方法名,返回了Log实例的类型,使其可

2017-09-29 18:40:04 382

原创 54.Scala中复合类型实战详解

A extends B with C with DA必须同时是B、C、D的类型。比如某个类既具有某种功能,又能序列化eg:可以规定List或者Array里的元素, 比如必须实现序列化接口又必须实现某个功能性接口trait Compound_Type1trait Compound_Type2class Compound_Type extends Compound_Type1

2017-09-29 18:38:28 312

原创 53.Scala中结构类型实战详解

结构类型:指一组关于抽象的方法、字段或类型的规格说明,这些抽象方法、字段、类型是我们传进参数或者说要使用相关的对象必须具备的。在javascript或者Ruby中,只要看起来、走起来、叫起来像鸭子,我们就认为它是鸭子。在构建复杂表达式时,不想从类/接口去限制它,这种方式含有动态语言的灵活性和简洁性class Structural{ def open() = prin

2017-09-29 18:35:32 419

原创 52.Scala中路径依赖代码实战详解

class Outer{ //外部类 ,外部类不能访问内部类private级别的成员 private val x = 10 class Inner{ private val y = x + 10 //但是内部类可以访问外部类的私有成员。因为内部类隐含地持有外部类的实例。 }}object Path_Dependence_52 { def main(args: Arra

2017-09-29 18:33:18 375

原创 51.Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用

Spark中链式调用的例子:sc.textFile(“hdfs://...”).flatMap(_.split(“ ”)).map(_, 1).reduceByKey(_ +_).map(x => (x._2, x._1)).sortByKey(false).map(x=> (x._2, x_1)).saveAsTextFile(“hdfs://…")class Anima

2017-09-26 13:46:06 615

原创 50.Scala中Variance变化点及其在Spark中的应用源码解析

函数在参数上是逆变的,但在返回值上是协变的。 默认是这样的。一个具体对象从操作结果看,既要求逆变,又要求协变,这是类型本身要保持不变。eg:Array[T] 由于scala数组不支持型变,所以Array[Worker]和Array[Person]不能互相转变。(Worker是Person的子类)若把Array[Worker]赋值给Array[Person]的话,那Array[P

2017-09-25 22:22:33 288

原创 49.Scala中Variance代码实战及其在Spark中的应用源码解析

eg: List[T] A:父类 B:子类  List[A]是否是List[B]的父类? 是的话,可以进行型变(协变)协变:和具体类型的继承关系是一致的。比如A是B的父类,List[A]是List[B]的父类逆变:和具体类型的继承关系是相反的。比如A是B的父类,List[B]是List[A]的父类但是在Java中,String是Obejct的子类,List[String]并不是Li

2017-09-25 22:19:36 281

原创 48.Scala类型约束代码实战及其在Spark中的应用源码解析

A =:= B //表示A类型等同于B类型   A def main(args: Array[String]): Unit = { def rocky[T](i : T)(implicit ev : T <:< java.io.Serializable) { //传入隐式参数,规定T必须是Serializable的子类型 println("Li

2017-09-25 22:17:15 211

原创 47.Scala多重界定代码实战及其在Spark中的应用源码解析

一个类型变量可同时拥有上界和下界,但是一个类型变量不可同时拥有多个上界或者下界T T >: A with B  //A或者B就是T的子类T>: A T : A : B //上下文界定,需要同时满足。T必须同时满足存在A[T]这种类型的隐式值和B[T]这种类型的隐式值T class M_A[T]class M_B[T]object Multiple_Boun

2017-09-24 18:24:36 237

原创 46.ClassTag 、Manifest、ClassManifest、TypeTag代码实战及其在Spark中的应用源码解析

一、ClassTag 、Manifest、ClassManifest、TypeTag代码实战package ce.scala.zhongobject Multiple_Bounds_46 { def main(args: Array[String]): Unit = { //常见写法(推荐) def arrayMake[T : Manifest](first :

2017-09-21 20:03:43 505

原创 45.Scala中Context Bounds代码实战及其在Spark中的应用源码解析

一、Context Bounds代码 实战class Pair_Ordering[T : Ordering] (val first : T, val second : T){ //T是泛型/类型, Ordering是泛型类/泛型接口 def bigger(implicit ordered : Ordering[T]) = { //ordered是隐式值,可以认为我们并没有给bigge

2017-09-20 21:30:34 257

原创 44.Scala中View Bounds代码实战及其在Spark中的应用源码解析

一、View Bounds代码实战class Pair_NotPerfect[T <% Comparable[T]] (val first : T, val second :T){ def bigger = if(first.compareTo(second) > 0) first else second}object View_Bounds_44 { def main(

2017-09-20 19:44:43 252

原创 43.Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析

一、Scala中的类型变量Bounds代码实战//上界class Pair[T <: Comparable[T]] (val first : T, val second : T) { //Comparable[T]是父类 //若对T不做限定,则不确定first这个类型是否有compareTo这个方法。 //Comparable[T]是T的上界,T是Comparable[T]

2017-09-19 19:07:57 329

原创 42.Scala中泛型类、泛型函数、泛型在Spark中的广泛应用

一、Scala中的泛型类代码实战sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product

2017-09-17 19:17:27 740

原创 41.List继承体系实现内幕和方法操作源码揭秘

一、List的继承体系分析和源码解读1.List类abstract class List[+A]  ...List是抽象的类,我们平时用List(1,2,3)来构建一个List对象,用的都是其伴生对象的apply方法2.List有两个子类Nil和::这两个子类都实现了其成员方法isEmpty、head、tail //* This class comes with two

2017-09-17 16:47:35 263

原创 40.Set、Map、TreeSet、TreeMap操作代码实战

一、Set、Map代码实战 import scala.collection.mutable val data = mutable.Set.empty[Int] data ++= List(1,2,3) //追加集合 data += 4 //追加元素 println(data) data --= List(2,3) //减少集合

2017-09-17 15:38:50 367

原创 39.ListBuffer、ArrayBuffer、Queue、Stack操作代码实战

一、ListBuffer、ArrayBuffer代码实战 import scala.collection.mutable.ListBuffer //可变的 val listBuffer = new ListBuffer[Int] listBuffer += 1 //追加数据 listBuffer ++= List(2,3) //追加集合 pri

2017-09-15 15:17:35 387

原创 38.List伴生对象操作方法代码实战

一、apply、make、range代码实战 println(List.apply(1,2,3)) //1 2 3构成一个集合 println(List.make(3,5)) //5出现3次 println(List.range(1,5)) //左闭右开 println(List.range(9,1,-3)) //左闭右开,步长为-3输出:List(

2017-09-13 18:51:34 237

原创 37.List的foldLeft、foldRight、sort操作代码实战

def main(args: Array[String]): Unit = { println((1 to 100).foldLeft(0)(_ + _)) //初始值为0,从1一直加到100 println(( 0 /: (1 to 100) ) (_ + _)) println((1 to 5).foldRight(100) (_ - _)) //初始值为

2017-09-12 23:22:09 284

原创 36.List的partition、find、takeWhile、dropWhile、span、forall、exists操作代码实战

一、partition、find、takeWhile、dropWhile实战 println(List(1,2,3,4,5) partition(_ % 2 == 0)) //把List分成两部分,偶数\奇数各一部分 println(List(1,2,3,4,5) find(_ % 2 == 0)) //找出List集合中第一个满足条件的元素,注意是第一个 print

2017-09-12 20:35:27 365

原创 35.List的map、flatMap、foreach、filter操作代码实战

一、对List的map、flatMap实战map:对List所有元素执行一个具体的函数flatMap:对List内部的成员进行map,结果为List,再对这个结果flat合并,产生合并后的集合 println(List(1,2,3,4,5) map(_ + 1)) //相当于map(item => item + 1) val data = List("scala

2017-09-12 14:10:12 622

原创 34.对List进行高效的排序和倒排序代码实战

package ce.scala.ppobject MergedSort { def main(args: Array[String]): Unit = { def mergedsort[T] (less : (T,T) => Boolean) (input : List[T]) : List[T] ={ //less指定元素排序的算法 input是指具体排序的对象

2017-09-10 19:35:28 971

原创 33.List的一阶函数操作代码实战详解

一、List的drop、take、splitAt、apply、indices、toString、mkString等实战把两个List组拼起来,列表和列表连接用三个冒号的连接操作符,元素和列表连接用两个冒号的连接操作符 println(List(1,2,3,4) ::: List(5,6,7) ::: List(8,9)) println(List(1,2,3,4) ::: (

2017-09-09 17:55:23 341

原创 32.List的基本操作实战与基于模式匹配的List排序算法实现

一、List的基本操作实战package ce.scala.ppobject HelloList { def main(args: Array[String]): Unit = { //7 val bigdata = List("Hadoop", "Spark") //调用了其伴生对象的apply() 把鼠标放在bigData上,显示 val bigData:Lis

2017-08-31 21:05:04 313

空空如也

空空如也

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

TA关注的人

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