当前位置: 首页 > news >正文

scala高级函数快速掌握

scala高级函数

    • 一.函数至简原则
    • 二.匿名的简化原则
    • 三.高阶函数
    • 四.柯里化和闭包
    • 五.递归
    • 六.抽象控制
    • 七.惰性加载

🔥函数对于scala(函数式编程语言)来说非常重要,大家一定要学明白,加油!!!!🔥

一.函数至简原则

1.return可以省略,Scala会把函数体最后一行代码作为返回值

      def f0(name:String):String ={name}println(f0("scala"))

2.如果函数体内只有一行代码,可以省略花括号

def f2(name:String):String=name

3.如果返回值类型如果能推断出来,:和返回值类型可以一起省略

def f3(name:String)=name

这不就相当于数学上的函数嘛! f(x)=x。 这也是至简原则的目的,让函数最终尽可能符合我们数学上的使用习惯。

4.如果return没有省略,则返回值类型不能省略

def f4(name:String)={return name}
//会报错

5.如果函数声明Unit(空类型),那么即使函数体中使用return也不起作用

def f5(name:String):Unit={return name}

6.scala如果期望是无返回值类型,可以省略等号,这种函数也叫做过程,不存在映射关系

def f6(name:String){println(name)}

7.如果函数无参数,但是声明了参数列表,那么调用时,小括号,可加可不加

def f7():Unit={println(name)}
f7()
f7

8.如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略

def f8:Unit={println(name)}
f8

9.如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略,也不需要返回值。也就是匿名函数!lambda表达式

(name:String) =>{println(name)}

lambda表达式没有函数名如何调用呢?

用法1:直接定义个变量,这样就相当于有了名字

val fun =(name:String) =>{println(name)} //lambda表达式的返回值(函数类型)赋给fun 相当于有了名字
fun("scala")

用法2:定义一个函数,以函数作为参数传入

//相当于函数的参数是固定的,这个函数的操作却决于传入的函数
val fun =(name:String) =>{println(name)} 
def f(func:String =>Unit):Unit={           //String =>Unit 是函数的类型,代表函数的参数是String类型,返回类型是Unitfunc("scala")
}
f(fun)
f((name:String) =>{println(name)})

匿名函数就是一个表达式,它的返回值也就是这个表达式的值。

二.匿名的简化原则

1.参数类型可以省略,会根据形参进行自动推导

f((name) =>{println(name)})  //看用法2中定义的函数,传入的参数已经定义死了,必须是String =>Unit(String类型)

2.类型省略之后,如果只有一个参数,圆括号可以省略.

f(name=>{println(name)})

3.匿名函数如果只有一行,大括号也可以省略

f(name=>println(name))

4.如果参数只出现一次,则参数省略且后面可以用_代替,注意对应顺序

f(println(_))

5.如果可以推断出,当前传入的println是一个函数体,而不是调用语句,可以直接省略下划线

f(println)   //传入的是一个操作

案例:定义一个“二元运算”函数,只对1和2两个数操作,但是具体的运算通过传入的参数决定

def dualFunction(fun:(Int,Int)=>Int):Int={fun(1,2)  //具体的参数已经是定死的
}
val add = (a:Int,b:Int)=>a+b
val minus = (a:Int,b:Int)=>a-b
println(dualFunction(add))
println(dualFunction(minus))
println(dualFunction((a,b)=>a-b))
println(dualFunction(_-_))

三.高阶函数

函数在scala编程里面是一等公民,不想Java只能在类里面定义方法,非常灵活,在一个代码块中就可以定义函数,调用函数。

1.函数可以作为值进行传递,类似给函数起别名

def f(n:Int):Int={println("f调用")n+1
}
val f1 = f _    //f _ 代表f这整个函数体
val f2:Int=>Int =f   //这样f1(函数对象)就是函数类型(f2:Int=>Int),编译器知道要传函数,所以可以只写个f

2.函数作为参数进行传递

这里就是匿名函数案例演示的那种,参数是定义死的,具体操作看传入的函数(参数)

但是数据一定要定义死嘛?我们可以函数参数和数据参数一起传入

def dualEval(op:(Int,Int)=>Int,a:Int,b:Int):Int={op(a,b)
}
def add(a:Int,b:Int):Int={a+b
} 
println(dualEval(add,12,35)) //把普通函数作为参数

3.函数作为函数的返回值返回

看到这里我们可以发现,只要是值用到的地方,我们都可以用函数进行代替。

这里就设计到函数嵌套了

def f5():Int => Unit{    //Int => Unit这里说明返回值是函数类型def f6(a:Int)={println("f6调用"+6)}f6    //return 可以省略
}
println(f5())   //这里得到的是一个引用(函数),也就是得到的f6()
println(f5()(25))

**应用案例:**对数组进行处理,将操作抽象出来,处理完毕之后的结果返回一个新的数组。(也就是大数据map操作)

yield:就是在for循环中,每次循环都会产生一个值,然后将每次产生的值保存,最后组成一个集合。

val arr:Array[Int]=Array(12,45,75,98)  //每次只对数组中的一个元素进行操作,这个操作是单独抽象的,只需要单独的定义操作def arrayOperations(array: Array[Int],op:Int=>Int):Array[Int]={for (elem <- array) yield op(elem)}//定义一个加1操作def addOne(elem:Int):Int={elem+1}//调用函数var newArray:Array[Int]=arrayOperations(arr,addOne)println(newArray.mkString(","))//这里传入匿名函数也是可以的 
var newArray2 = arrayOperations(arr,_+1 )

这里的应用是以后处理大数据,来了一堆集合,数据就是那些,但是需要进行很多步操作, 我们通过这样可以单独定义他 们的操作。

案例:通过函数嵌套的方式接受三个参数,当这三种类型参数都为假时,返回fales。

 def f1(i:Int):String=>(Char=>Boolean)={def f2(s:String):Char=>Boolean={def f3(c:Char):Boolean={if (i==0&&s==""&&c=='0') false else true}f3}f2}
println(f1(0)("")('0'))     //结果为false
//可以用匿名函数进行简化书写,但是这种书写也会被函数的柯里化给代替
def func1(i:Int):String=>(Char=>Boolean)={s=>c=> if (i==0&&s==""&&c=='0') false else true
}

四.柯里化和闭包

闭包:如果一个函数,访问到了它的外部(局部)变量的值,那么这个函数和他所处的环境成为闭包

函数柯里化:把一个参数列表的多个参数,变成多个参数列表,每个参数都是一个小括号

函数性编程语言(scala)定是支持闭包的。它可以延长他所使用的参数的做作用域(如上面那个案例,内层函数用到了外层函数的一个局部变量或者是一个参数,为了我们在调用的时候还能分层调用,在调用的时候第二步还能使用外层函数的参数,那么闭包会把外层函数的参数或者局部变量和内层函数打包起来,保存到一个函数对象里面,存放在堆内存里面)。

柯里化:

def addCurrying(a:Int)(b:Int):Int={a+b}  //一旦使用了柯里化,底层一定使用了闭包println(addCurrying(23)(32))}

五.递归

递归:一个函数/方法在函数/方法体内又调用了本身

方法调用自身

方法必须要有跳出的逻辑

方法调用自身时,传递的参数应该有规律

Scala中递归必须声明返回值类型

//递归计算阶乘
def fact(n:Int):Int={if (n==0) return 1 //这个return不能省,因为scala只能自动返回最后一行,这里不是最后一行fact(n-1)*n
}
//尾递归:递归最后一行返回的只有对于自身的调用,没有其他额外的计算,这样当前这层函数不用保存任何东西,这样就用压栈了,节省空间。
def tailFact(n:Int):Int={@tailrec  //如果写的不是尾递归,idea会报错def loop(n:Int,currRes:Int):Int={if(n==0)return currResloop(n-1,currRes*n)   //每次调用我不需要保存上一层的任何信息,不用压栈,做一个栈帧的覆盖就节省空间了。}loop(n,1)
}
//尾递归只有函数式编程语言才支持,比如Java就不支持

六.抽象控制

1.值调用:把计算后的值传递过去

2.名调用:把代码传递过去

//传值参数
def f0(a:Int):Unit={println("a"+a)
}def f1():Int={println("f1调用")12
}
f0(f1) 
//传名参数,传递的不再是具体的值,而是代码块
def f2(a:=>Int):Unit={    //注意这里参数的类型println("a:"+a)println("a:"+a)
}
f2(f1())  //每一次用到a的时候,都会把f2中完整的代码块执行一遍。

传名调用的案例:自己实现一个while循环函数

//1.用闭包实现一个函数,将代码块作为参数传入,递归调用
def myWhile(condition:=>Boolean):(=>Unit)=>Unit={//内层函数需要递归调用,参数就是循环体(代码块)def doLoop(op:=>Unit):Unit={ if(condition){opmyWhile(condition)(op)  //尾递归}  }doLoop _
}n=10
myWhile(n>=1){println(n)n-=1
}//参数是一个代码块时,小括号可以省略//2.用匿名函数实现
def myWhile2(condition:=>Boolean):(=>Unit)=>Unit={//内层函数需要递归调用,参数就是循环体(代码块)op=>{ if(condition){opmyWhile2(condition)(op)  //尾递归}  }
}
//3.用函数柯里化实现
def myWhile(condition:=>Boolean)(op:=>Unit):Unit={if(condition){opmyWhile3(condition)(op)}
}

七.惰性加载

说明:函数的返回值被声明lazy时,函数的执行将被推迟,直到我们首次对此取值,该函数才会被执行,这种函数我们称之为惰性函数。

(不用到,不执行加载)

lazy val result:Int = sum(13,47)
println("1.函数调用")
println("2.result="+result)def sum(a:Int,b:Int):Int={printlb("3.sum调用")
}//最后输出顺序时1 3 2

相关文章:

scala高级函数快速掌握

scala高级函数一.函数至简原则二.匿名的简化原则三.高阶函数四.柯里化和闭包五.递归六.抽象控制七.惰性加载&#x1f525;函数对于scala&#xff08;函数式编程语言&#xff09;来说非常重要&#xff0c;大家一定要学明白&#xff0c;加油&#xff01;&#xff01;&#xff01;…...

手写模拟SpringMvc源码

MVC框架MVC是一种设计模式&#xff08;设计模式就是日常开发中编写代码的一种好的方法和经验的总结&#xff09;。模型&#xff08;model&#xff09;-视图&#xff08;view&#xff09;-控制器&#xff08;controller&#xff09;&#xff0c;三层架构的设计模式。用于实现前端…...

五分钟了解JumpServer V2.* 与 v3 的区别

一、升级注意项 1、梳理数据。JumpServer V3 去除了系统用户功能&#xff0c;将资产与资产直接绑定。当一个资产名下有多个同名账号&#xff0c;例如两个root用户时&#xff0c;升级后会自动合并最后一个root&#xff0c;不会同步其他root用户。升级前需保证每一个资产只拥有一…...

用友开发者中心应用构建实践指引!

基于 iuap 技术底座&#xff0c;用友开发者中心致力于为企业和开发者提供一站式技术服务&#xff0c;让人人都能轻松构建企业级应用。 本文以人力资源领域常用的应聘人员信息登记与分析功能为例&#xff0c;详细介绍如何在用友开发者中心使用 YonBuilder 进行应用构建。 功能…...

snap使用interface:content的基础例子

snap做包还在学习阶段&#xff0c;官网文档可查看&#xff1a;The content interface | Snapcraft documentation该例子由publiser和consumer两部分组成&#xff0c;一个提供一个只读的数据区&#xff0c;一个来进行读取其中的信息&#xff0c;这样就完成了content的交互。publ…...

蓝桥杯刷题第七天

第一题&#xff1a;三角回文数问题描述对于正整数 n, 如果存在正整数 k 使得2n123⋯k2k(k1), 则 n 称为三角数。例如, 66066 是一个三角数, 因为 66066123⋯363。如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位 上的数字是一样的, 则称这个数为回文数。例如…...

FinOps首次超越安全成为企业头等大事|云计算趋势报告

随着云计算在过去十年中的广泛应用&#xff0c;云计算用户所面临的一个持续不变的趋势是&#xff1a;安全一直是用户面临的首要挑战。然而&#xff0c;这种情况正在发生转变。 知名IT软件企业 Flexera 对云计算决策者进行年度调研已经持续12年&#xff0c;而今年安全问题首次…...

【深度强化学习】(3) Policy Gradients 模型解析,附Pytorch完整代码

大家好&#xff0c;今天和各位分享一下基于策略的深度强化学习方法&#xff0c;策略梯度法是对策略进行建模&#xff0c;然后通过梯度上升更新策略网络的参数。我们使用了 OpenAI 的 gym 库&#xff0c;基于策略梯度法完成了一个小游戏。完整代码可以从我的 GitHub 中获得&…...

Windows基于Nginx搭建RTMP流媒体服务器(附带所有组件下载地址及验证方法)

RTMP服务时常用于直播时提供拉流推流传输数据的一种服务。前段时间由于朋友想搭建一套直播时提供稳定数据传输的服务器&#xff0c;所以就研究了一下如何搭建及使用。 1、下载nginx 首先我们要知道一般nginx不能直接配置rtmp服务&#xff0c;在Windows系统上需要特殊nginx版本…...

交流电机驱动器中的隔离电压感应

汽车和工业终端设备&#xff0c;如电机驱动器、串式逆变器和机载充电器&#xff0c;在高电压下运行&#xff0c;不能安全地与人直接互动。隔离电压测量通过保护人类免受高压电路执行一个功能的影响&#xff0c;有助于优化操作和确保使用的安全性。 设计用于高性能&#xff0c;隔…...

爬取知乎问题答案

参考博客&#xff1a;基于Python知乎回答爬虫 jieba关键字统计可视化_知乎爬虫搜索关键词_菠萝柚王子的博客-CSDN博客 1、安装依赖包 import numpy import requests import certifi from PIL import Image from lxml import etree import jieba from wordcloud import WordClo…...

通用智能理论

将智能定义为解决矛盾的能力&#xff0c;用解决矛盾的概率提升来评估智能程度&#xff0c;以此为基础推导智能原理&#xff0c;建立一种新的通用智能理论。 1 前言 通用人工智能&#xff08;Artificial General Intelligence&#xff09;是人类长久以来的梦想。经历了一次次挫败…...

保姆级使用PyTorch训练与评估自己的MixMIM网络教程

文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址&#xff1a;https://github.com/Fafa-DL/Awesome-Backbones 操作教程&#xff1a;https://www.bilibili.co…...

《百万在线 大型游戏服务端开发》前两章概念笔记

第1章 从角色走路说起 游戏网络通信的流程则是服务端先开启监听&#xff0c;等待客户端的连接&#xff0c;然后交互操作&#xff0c;最后断开。 套接字 每个Socket都包含网络连接中一端的信息。每个客户端需要一个Socket结构&#xff0c;服务端则需要N1个Socket结构&#xff…...

3BHE029110R0111 ABB

3BHE029110R0111 ABB变频器控制方式低压通用变频输出电压为380&#xff5e;650V&#xff0c;输出功率为0.75&#xff5e;400kW&#xff0c;工作频率为0&#xff5e;400Hz&#xff0c;它的主电路都采用交—直—交电路。其控制方式经历了以下四代。1U/fC的正弦脉宽调制&#xff0…...

实现防重复操作(JS与CSS)

实现防重复操作&#xff08;JS与CSS&#xff09; 一、前言 日常开发中我们经常会对按钮进行一个防重复点击的校验&#xff0c;这个通常使用节流函数来实现。在规定时间内只允许提交一次&#xff0c;可以有效的避免事件过于频繁的执行和重复提交操作&#xff0c;以及为服务器考…...

怎么合并或注销重复LinkedIn领英帐号?

您可能会发现您拥有多个领英帐户。如果您收到消息&#xff0c;提示您尝试使用的邮箱与另一个帐户已绑定&#xff0c;就表明您可能存在重复的领英帐户。如果您使用许多不同的邮箱地址&#xff0c;也可能会收到这样的提示。 领英精灵温馨提示: 目前&#xff0c;仅支持在 PC 端合并…...

Redis高频面试题汇总(中)

目录 1.什么是redis事务&#xff1f; 2.如何使用 Redis 事务&#xff1f; 3.Redis 事务为什么不支持原子性 4.Redis 事务支持持久性吗 5.Redis事务基于lua脚本的实现 6.Redis集群的主从复制模型是怎样的&#xff1f; 7.Redis集群中&#xff0c;主从复制的数据同步的步骤 …...

【Flutter从入门到入坑之三】Flutter 是如何工作的

【Flutter从入门到入坑之一】Flutter 介绍及安装使用 【Flutter从入门到入坑之二】Dart语言基础概述 【Flutter从入门到入坑之三】Flutter 是如何工作的 本文章主要以界面渲染过程为例&#xff0c;介绍一下 Flutter 是如何工作的。 页面中的各界面元素&#xff08;Widget&…...

Web Components学习(2)-语法

一、Web Components 对 Vue 的影响 尤雨溪在创建 Vue 的时候大量参考了 Web Components 的语法&#xff0c;下面写个简单示例。 首先写个 Vue 组件 my-span.vue&#xff1a; <!-- my-span.vue --> <template><span>my-span</span> </template>…...

Lesson 9.2 随机森林回归器的参数

文章目录一、弱分类器的结构1. 分枝标准与特征重要性2. 调节树结构来控制过拟合二、弱分类器的数量三、弱分类器训练的数据1. 样本的随机抽样2. 特征的随机抽样3. 随机抽样的模式四、弱分类器的其他参数在开始学习之前&#xff0c;先导入我们需要的库。 import numpy as np im…...

Kubernetes Secret简介

Secret概述 前面文章中学习ConfigMap的时候&#xff0c;我们说ConfigMap这个资源对象是Kubernetes当中非常重要的一个对象&#xff0c;一般情况下ConfigMap是用来存储一些非安全的配置信息&#xff0c;如果涉及到一些安全相关的数据的话用ConfigMap就非常不妥了&#xff0c;因…...

Redis 哨兵(Sentinel)

文章目录1.概述2. 没有哨兵下主从效果3.搭建多哨兵3.1 新建目录3.2 复制redis3.3 复制配置文件3.4 修改配置文件3.5 启动主从3.6 启动三个哨兵3.7 查看日志3.8 测试宕机1.概述 在redis主从默认是只有主具备写的能力&#xff0c;而从只能读。如果主宕机&#xff0c;整个节点不具…...

精读笔记 - How to backdoor Federated Learning

文章目录 精读笔记 - How to backdoor Federated Learning1. 基本信息2. 系统概要3. 攻击模型3.1 问题形式化定义3.1.1 前提假设3.1.2 攻击目标3.2 创新点3.2.1 Semantic Backdoor3.2.2 攻击方法4. 实验验证4.1 图像分类4.2 实验操作4.2.1 超参数设置4.2.2 衡量标准4.3 结果分析…...

即时通讯系列-N-客户端如何在推拉结合的模式下保证消息的可靠性展示

结论先行 原则&#xff1a; server拉取的消息一定是连续的原则&#xff1a; 端侧记录的消息的连续段有两个作用&#xff1a; 1. 记录消息的连续性&#xff0c; 即起始中间没有断层&#xff0c; 2. 消息连续&#xff0c; 同时意味着消息是最新的&#xff0c;消息不是过期的。同…...

关于js数据类型的理解

目录标题一、js数据类型分为 基本数据类型和引用数据类型二、区别&#xff1a;传值和传址三、深浅拷贝传值四、数据类型的判断一、js数据类型分为 基本数据类型和引用数据类型 1、基本数据类型 Number、String、Boolean、Null、undefined、BigInt、Symbol 2、引用数据类型 像对…...

大一上计算机期末考试考点

RGB颜色模型也称为相加混色模型 采样频率大于或等于原始声音信号最高频率的两倍即可还原出原始信号. 声音数字化过程中&#xff0c;采样是把时间上连续的模拟信号在时间轴上离散化的过程。 量化的主要工作就是将幅度上连续取值的每一个样本转换为离散值表示。 图像数字化过…...

微搭问搭001-如何清空表单的数据

韩老师&#xff0c;我点关闭按钮后&#xff0c;弹窗从新打开&#xff0c;里面的数据还在&#xff0c;这个可以从新打开清除不&#xff1f; 点关闭的时候清掉 就是清楚不掉也&#xff1f;咋清掉 清掉表单内容有属性可以做到&#xff1f; $page.widgets.id**.value “” 就可以实…...

Windows7,10使用:Vagrant+VirtualBox 安装 centos7

一、Vagrant&#xff0c;VirtualBox 是什么二、版本说明1、win7下建议安装版本2、win10下建议安装版本三、Windows7下安装1、安装Vagrant2、安装VirtualBox3、打开VirtualBox&#xff0c;配置虚拟机默认安装地址四、windows7下载.box文件&#xff0c;安装centos 71、下载一个.b…...

基于JavaEE开发博客系统项目开发与设计(附源码)

文章目录1.项目介绍2.项目模块3.项目效果1.项目介绍 这是一个基于JavaEE开发的一个博客系统。实现了博客的基本功能&#xff0c;前台页面可以进行文章浏览&#xff0c;关键词搜索&#xff0c;登录注册&#xff1b;登陆后支持对文章进行感谢、评论&#xff1b;然后还可以对评论…...

Android Framework——zygote 启动 SystemServer

概述 在Android系统中&#xff0c;所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育&#xff08;fork&#xff09;出来的&#xff0c;这也许就是为什么要把它称为Zygote&#xff08;受精卵&#xff09;的原因吧。由于Zygote进程在Android系统中有着如此重…...

在ubuntu上搭建SSH和FTP和NFS和TFTP

一、SSH服务搭建使用如下命令安装 SSH 服务&#xff1b;ssh 的配置文件为/etc/ssh/sshd_config&#xff0c;使用默认配置即可。sudo apt-get install openssh-server开启 SSH 服务以后我们就可以在 Windwos 下使用终端软件登陆到 Ubuntu&#xff0c;比如使用 Mobaxterm。二、FT…...

ThinkPHP 6.1 模板篇之文件加载

本文主要讲述模板中如何使用包含文件、引入css/js文件及路径优化。 包含文件 使用{include}标签来加载公用重复的文件&#xff0c;比如头部、尾部和导航部分 包含用法 1.创建公用文件 在模版 view 目录创建一个 common公共目录&#xff0c;分别创建 header、footer 和 nav …...

操作系统内核与安全分析课程笔记【1】链表、汇编与makefile

文章目录链表循环双向链表哈希链表其他链表汇编内联汇编扩展内联汇编makefile链表 链表是linux内核中关键的数据结构。在第二次课中&#xff0c;重点介绍了循环双向链表和哈希链表。这两种链表都在传统的双向链表的基础之上进行了针对效率的优化。(ps&#xff1a;这部分可以通…...

华为OD机试题 - 九宫格按键输入(JavaScript)| 机考必刷

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:九宫格按键输入题目输入输出示例一输入输出说明示例二输入输出说…...

PMSM控制_foc 控制环路

整个系统的控制过程有以下部分&#xff0c;以无感FOC&#xff0c;双电阻电流采样&#xff0c;控制周期为 10KHz 为例&#xff1a; 1、在每隔一个 PWM 周期采样一次两相电流 2、进行 FOC 的计算 &#xff08;1&#xff09;clarke 变换&#xff0c;将电流变换至静止坐标系下的 Ia…...

Linux 练习七 (IPC 共享内存)

文章目录System V 共享内存机制&#xff1a;shmget shmat shmdt shmctl案例一&#xff1a;有亲缘关系的进程通信案例二&#xff1a;非亲缘关系的进程通信内存写端write1.c内存读端read1.c案例三&#xff1a;不同程序之间的进程通信程序一&#xff0c;写者shmwr.c程序二&#xf…...

【数据库原理复习】ch4 完整性约束 SQL定义

这里写目录标题基本概念实体完整性参照完整性违规处理用户自定义完整性约束条件定义完整性约束命名字句基本概念 完整性约束主要包括 实体完整性参照完整性用户自定义完整性 实体完整性 关系模型中实体完整性通常在建表时候添加primary key完成 # primary key定义 create …...

【2023年的就业形势依旧严峻】

2023年口罩放开的第一年&#xff0c;也是第一个招聘会&#xff0c;挤满了求职者和用人单位&#xff0c;大多数都是想着重新开始&#xff0c;抓住金三银四的好时机&#xff0c;找到心仪的工作和符合岗位要求的人才&#xff0c;一起整装出发。我们理想的状态是&#xff0c;经济已…...

Linux下LED灯驱动模板详解

一、地址映射我们先了解MMU&#xff0c;全称是Memory Manage Unit。在老版本的Linux中要求处理器必须有MMU&#xff0c;但是现在Linux内核已经支持五MMU。MMU主要完成的功能如下&#xff1a;1、完成虚拟空间到物理空间的映射2、内存保护&#xff0c;设置存储器的访问权限&#…...

【C++】你不得不爱的——继承

凡是面向对象的语言&#xff0c;都有三大特性&#xff0c;继承&#xff0c;封装和多态&#xff0c;但并不是只有这三个特性&#xff0c;是因为者三个特性是最重要的特性&#xff0c;那今天我们一起来看继承&#xff01; 目录 1.继承的概念及定义 1.概念 2.继承的定义 2.基类…...

数据库系统概论

文章目录前言基础篇&#xff1a;1-5章第 1 章 绪论1.1 数据库系统概述1.2 数据模型1.3 数据库系统的结构1.4 数据库系统的组成1.5 小结第 2 章 关系数据库1.关系模型1.1 关系数据结构1.2 关系完整性约束实体完整性、参照完整性、用户定义完整性2.关系代数8种关系代数运算符并 ∪…...

32位处理器AM6528BACDXEA、AM6548BACDXEAF基于Arm Cortex-A53内核【工业4.0嵌入式产品应用】

AM6528BACDXEA、AM6548BACDXEAF 处理器是专为满足工业4.0嵌入式产品对处理性能的复杂需求而设计的Arm应用处理器。AM654x和AM652x器件将四个或两个Arm Cortex-A53内核与一个双Arm Cortex-R5F MCU子系统结合在一起。这些包含的功能旨在帮助客户实现终端产品的功能安全目标。它还…...

多图片怎么转换成PDF?这招教你轻松转换

多图片怎么转换成PDF&#xff1f;我们经常会传输图片文件给同事或者朋友&#xff0c;但是多张图片的传输比较麻烦&#xff0c;有的时候传输比较慢&#xff0c;而且也不便于查看&#xff0c;所以我们就可以将需要传输的多张图片转换成一个PDF文件&#xff0c;这样查看文件时就可…...

kali双网卡

先单独开启一个网卡&#xff0c;配置/etc/network/interfaces 修改为如下配置 This file describes the network interfaces available on your system and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* The loopb…...

【wed前端初级课程】第一章 什么是HTML

什么是WEB前端&#xff1f; 简单来说就是网页&#xff0c;只是这个网页它是由多种技术参与制作的&#xff0c;用来向用户展示的页面。 HTML(超文本标签语言)&#xff1a;它决定了网页的结构。 CSS&#xff1a;网页的装饰器。 JavaScript&#xff1a;JavaScrip最初是因为校验…...

sd卡格式化后数据恢复怎么操作

有时候我们需要清空SD卡数据文件&#xff0c;有时候则是因为需要修复SD卡所以需要格式化&#xff0c;但是却被提示无法格式化SD卡。这种情况往往是由于平时SD卡使用时的一些不良习惯或是SD卡中病毒&#xff0c;病毒在运行SD卡中的软件所造成的。那么sd卡格式化后数据恢复怎么操…...

论文阅读笔记|大规模多标签文本分类

多标签文本分类&#xff08;Extreme Multi Label Classification, MLTC&#xff09;是自然语言处理领域中一个十分重要的任务&#xff0c;其旨在从一个给定的标签集合中选取出与文本相关的若干个标签。MLTC可以广泛应用于网页标注&#xff0c;话题识别和情感分析等场景。大规模…...

国际化翻译navigator.language与语种对照表

代码(navigator.language) 语种 字段名 "zh-CN", 中文 Chinese "zh-SG" 马新简体 Chinese_SG "zh-TW","zh-HK", 繁体中文 Chinese_TW "en", "en-US"&#xff08;美国&#xff09;, "en-EG"…...

Matlab进阶绘图第6期—雷达图/蜘蛛图/星图

雷达图&#xff08;Radar Chart&#xff09;&#xff0c;又称星图、蜘蛛图、蜘蛛网图、网络图、Kiviat图等&#xff0c;是一种以从同一点开始的轴上表示的三个以上变量的二维图表的形式&#xff0c;来显示多变量数据的图形方法。 雷达图可以直观地对多维数据集目标对象的性能、…...