扫描 | 学习笔记

简介: 快速学习扫描

开发者学堂课程【Scala 核心编程 - 进阶扫描学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9057


扫描


内容介绍

一.扫描简介

二.引用实例

三.执行过程


一.扫描简介

扫描,即对某个集合的所有元素做 fold 操作,但是会把产生的所有中间结果放置于一个集合中保存,他会把整个流程都展示出来。


二、引用实例

def minus( num1: Int, num2 :Int ) :Int={  

num1-num2

//5 (1,2,3,4,5)=>(5,4,2,-1,-5,-10)

val i8 = (1 to 5).scanLeft(5)(minus) //IndexedSeq[Int]  

println(i8)

def add( num1:Int,num2 :Int):Int={ num1 + num2 7J 15(1,23,4,5)=>(568.111520)

val i9 = (1to 5).scanLeft(S)(add) /IndexedSeq[Int]  

println(i9)


三.执行过程

新建一个文件叫 scanDemo01 然后写一个代码,这个函数就是一个普通的函数,我没有写list 我们只看1 to 5,就代表1到5的集合 ,它是一个集合,从左开始扫描,它把第一个保留下来,然后再开始折叠,这个跟前面有一个区别,它先把第一个元素放置,然后进行折叠操作,就是5跟1进行折叠

packege com.atguigu.chepter11

object IteratorDemoe1 {

def main(args: Array[string]): Unit = {

val iterator = List(1,2, 3,4, 5).iterator // 得到速代器

iteratol

println("--------遍历方式1--------")

while (iterator.hasNext){

println(iterator.next())

println("--------遍历方式2for--------")

for(enum <- iterator) {

println(enum)//

1等于4,这个4拿到以后结果再跟2进行处理,这个结果就是4减去2等于2,2减去一个3等于负1,它把每一次的结果都给保留起来了,负5减去一个5等于负4,整个流程都是一样的,它把第一个先保留4,整个返回的i8是一个 indexedseq,i8 是一个索引的序列,结果我们执行一下就行,并不难,执行

Packege com.atguigu.chepter11

Object IteratorDemoe1 {

def main(args: Array[string]): Unit = {

val iterator = List(1,2, 3,4, 5).iterator // 得到速代器

iterator的继承关系

def iterator:Iterator[A]=new Abstractiterator[A]{

Var these=self

def hasNext:Boolean=Ithese.isEmpty

def next(): A =

If(hasNext)

val result=these.head; these = these.tail; result

} else Iterator.empty.next()

println("--------遍历方式1 while ----------”)

while (iterator.hasNext){

println(iterator.next())

println("--------遍历方式2 for -----------------”)

for(enum <- iterator) {

println(enum) //

向有扫描,为了显示不同的效果,又写了一个新的函数叫 add ,这个普通函数,现在我们向右扫描,同样的道理,来分析一下流程,先写一个5,然后再分析,先把i9进行一个输出,然后运行结果,这个结果跟我们想象的一样,首先先把扫描的第一个数保存,然后开始右扫描,5+5等于10,10又作为第二个参数放进去,14又跟前面的3相加,就是17,又跟前面的2相加,就变成了19,19又跟前面1相加,然后完全一样,唯一要记住的区别就是扫描要把数给保存,然后再记住东西,这是扫描的基本介绍。

多扫描练习题,如下:

Val sentence="AAAAAAAAAABBBBBBBBCCCCCDDDDDDD"将 sentence 中各个字符,通过 foldLeft 存放到一个ArrayBuffer中目的:理解 flodLeft 的用法.

val sentence ="AAAAAAAAAABBBBBBBBCCCCCDDDDDDD"

Def putArry( arr:ArrayBuffer[Char],c: Char):ArrayBuffer[Char]=(

arr.append(c)

arr

//创建val arr = ArrayBuffer[Char]()

val arr =ArrayBuffer[Char]()

sentence.foldLeft(arr)(putArry)

先观察一下结果是什么,向左扫描的图,先保留3,然后跟后面1相乘,3又跟后面2相乘,就是6,6再跟后面3相乘,就是18,结果就是3.6.18。

相关文章
|
安全 网络协议 物联网
GOBY扫描篇
GOBY扫描篇
1195 0
GOBY扫描篇
|
2月前
|
SQL 数据采集 安全
扫描工具原理
扫描工具原理
|
2月前
|
Web App开发 JSON 网络协议
|
4月前
|
网络协议 Linux 网络安全
NMAP扫描基本操作
NMAP扫描基本操作
295 5
|
7月前
扫描工具 -- Nuclei
扫描工具 -- Nuclei
433 0
|
7月前
|
JavaScript 开发工具 Docker
扫描工具 -- ReconNote
扫描工具 -- ReconNote
59 0
|
SQL 安全 网络协议
第二轮学习笔记: 扫描工具 -- nmap信息收集
第二轮学习笔记: 扫描工具 -- nmap信息收集
153 0
第二轮学习笔记: 扫描工具 -- nmap信息收集
|
JSON 安全 NoSQL
微信扫描登录(获取扫描人信息分析) | 学习笔记
快速学习 微信扫描登录(获取扫描人信息分析)
270 0
微信扫描登录(获取扫描人信息分析) | 学习笔记
|
JSON fastjson API
微信扫描登录(获取扫描人信息) | 学习笔记
快速学习 微信扫描登录(获取扫描人信息)
151 0
|
Linux 虚拟化 Windows
带你读《从实践中学习Kali Linux网络扫描》之一:网络扫描概述
本书详细讲解了网络扫描涉及的各项理论知识和技术。书中首先从理论层面帮助读者明确扫描的目的和方式,然后从基本协议的角度讲解了通用的扫描技术,最后过渡到特定类型网络环境的专有扫描技术。在先期扫描完成后,本书继续深入讲解了如何借助响应内容识别目标,并对常见的服务给出了扫描建议。在最后的相关章节,本书详细讲解了高效的数据整理和分析方式。