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

【学习笔记】Java 8函数式编程#Lambda表达式#方法引用

全文目录

    • 函数式编程:Functional programming
      • 函数式编程的一些基本概念
        • 函数式编程的定义:
        • 程序的副作用:
        • 函数编程与数学函数:
        • 设计函数式编程应该遵循的原则:
          • First-Class and Higher-Order Functions
          • 纯函数
          • 不变性
          • 引用透明
        • 函数式编程的作用:
      • 函数式接口
        • 说明:
        • 函数式接口的定义:
        • JDK中的函数式接口:
        • 实例:
      • Lambda表达式:Lambda Expressions
        • 概念:
        • 结构:
        • 语法规则:
      • 方法引用:Method Reference
        • 定义:
        • 方法引用种类:
      • 参考

函数式编程:Functional programming

函数式编程的一些基本概念

函数式编程,又称函数程序设计、泛函编程,是一种编程范式。



函数式编程的定义:

简单来说:函数式编程就是将计算机的程序运算比作数学中的函数运算,函数运算的最终结果只能取决于输入值。当使用相同参数调用函数时,它将始终返回相同的结果。

规范来说:函数式编程有时被视为纯函数式编程的同义词,是将所有函数视为确定性数学函数或纯函数的函数式编程的一个子集。当使用一些给定参数调用纯函数时,它将始终返回相同的结果,并且不受任何可变状态或其他副作用(side effect)的影响。



程序的副作用:

定义:如果一次操作、一个方法或一个表达式在其本地环境之外修改了一些变量的状态,那么就可以认为程序产生了副作用。

副作用包括修改非局部变量、修改静态局部变量、修改通过引用传递的可变参数、执行I/O或调用其他副作用函数。


副作用的表现

  • 在方法变更一个状态后将其从新变更为新的状态
  • 在方法执行期间变更本地(非当前方法的局部变量)或全局的变量
  • 方法执行未返回前的一次数据库保存操作
  • 在方法中打印的日志
  • 在方法中执行I/O操作



函数编程与数学函数:

数学中的函数:将函数输入和输出相关联的表达式,函数的输出值始终依赖于函数的输入值。此外,多个函数可以组合成一个新的函数形式。

类似如下例子。表达式:y=x^2 - 1,输入:x=5,输出:y=24,且当x=5时,输出始终为24;

那么函数式编程也是类似的,有表达式:函数体(代码块),输入:方法参数,输出:返回值。



设计函数式编程应该遵循的原则:

  • First-Class and Higher-Order Functions
  • 纯函数
  • 不变性
  • 引用透明

当然以上原则并不需要完全遵循,只是作为更为完美的函数设计的参考。下面将对上述的原则一一解释


First-Class and Higher-Order Functions

First-Class Function:一等函数,即在一门编程语言中,函数与变量并没有实质区别,函数也可以同普通变量一样,作为参数传递给其他函数,或将它们作为其他函数的值返回,并将它们分配给变量或将它们存储在数据结构中。这就意味着,函数名称与普通变量一样,其将被定义为函数类型 + 函数名称,如同 int a一样,只是这里的函数名称实际是由代码块组成的函数运算块。


Higher-Order Function:高阶函数有两以下两个特征:

  1. 将一个或多个函数作为参数
  2. 将函数作为结果返回

一等函数和高阶函数的区别:

  1. 一等函数针对编程语言:当某种语言具有一等函数特性时,那么该语言将会把函数视为普通变量。更常见的说法是“一种语言是否支持一等函数”。
  2. 高阶函数针对函数:高阶函数是对其他函数起作用的函数,当一个函数有N个函数作为参数或将函数作为返回值,那么该函数就是一个高阶函数。
  3. 这两件事密切相关,因为很难想象一种具有一流函数的语言不支持高阶函数,相反,很难想象具有高阶函数但没有一流函数支持的语言。

纯函数

纯函数(Pure Functions):即是没有副作用的函数。


不变性

不变性(Immutability):即一个对象被实例化后,其属性不能够被改变。这是语言级别的设计支持的。在 Java 中,我们必须自己创建不可变的数据结构(正如String、基本类型、math类一样)。Immutables和Project Lombok提供了现成的框架,用于在 Java 中定义不可变数据结构。


引用透明

引用透明(Referential Transparency):如果将表达式替换为其相应的值,且没有对程序的行为造成影响时,那么该表达式就是引用透明的。换句话说,引用透明的表达式没有副作用且具有不变性。

下面是baeldung的一个例子:

public class SimpleData {private Logger logger = Logger.getGlobal();private String data;public String getData() {logger.log(Level.INFO, "Get data called for SimpleData");return data;}public SimpleData setData(String data) {logger.log(Level.INFO, "Set data called for SimpleData");this.data = data;return this;}
}// 对logger的三个调用在语义上是等效的,但在引用上并不透明
String data = new SimpleData().setData("Baeldung").getData();
// 不是引用透明的,因为它会产生副作用,其将会打印一条日志。如果我们像第三次调用一样用它的值替换这个调用,我们将不会打印该日志。
logger.log(Level.INFO, new SimpleData().setData("Baeldung").getData());
// 不是引用透明的,因为SimpleData是可变的。
logger.log(Level.INFO, data);
logger.log(Level.INFO, "Baeldung");



函数式编程的作用:

采用函数式编程的最大优势是纯函数和不可变状态。大多数编程的挑战的根源在于副作用和可变状态。去掉它们会使我们的程序更易于阅读、推理、测试和维护。




函数式接口

说明:

函数式接口实际上只是函数式编程的定义,它将作为方法参数,被传给其他方法,而实现这些接口的方法一般被表现为lambda表达式(当然你也可以用一般接口的形式来实现函数式接口,也可以通过匿名内部类来实现,但lambda表达式实际上就是为了简化上述情况而产生的)。



函数式接口的定义:

要定义一个函数式接口,需要满足以下两种情况

  1. 使用@FunctionalInterface注解,标注接口为函数式接口
  2. 接口内部必须只有一个或以下的普通接口方法。但可以有任意数量的接口默认方法和接口静态方法,这些都不影响函数式接口的定义。



JDK中的函数式接口:

Function:接受一个参数,并返回一个结果

@FunctionalInterface
public interface Function<T, R> {// 接受一个参数,并返回一个结果R apply(T t);// apply方法的组合实现 表示before.apply(v)的函数输出值r将作为this.apply(r)的输入值default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {Objects.requireNonNull(before);return (V v) -> apply(before.apply(v));}// apply方法的组合实现 表示this.apply(t)的函数输出值r将作为after.apply(r)的输入值default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {Objects.requireNonNull(after);return (T t) -> after.apply(apply(t));}// 函数将永远将输入参数作为输出参数static <T> Function<T, T> identity() {return t -> t;}

Predicate:接受一个参数,返回Boolean

@FunctionalInterface
public interface Predicate<T> {// 接受一个参数,返回Booleanboolean test(T t);// 表示两个Predicate的与判断 this.test(t) and a.test(t)default Predicate<T> and(Predicate<? super T> other) {Objects.requireNonNull(other);return (t) -> test(t) && other.test(t);}// 表示非Predicate的判断 !this.test(t)default Predicate<T> negate() {return (t) -> !test(t);}// 表示两个Predicate的或判断 this.test(t) or a.test(t)default Predicate<T> or(Predicate<? super T> other) {Objects.requireNonNull(other);return (t) -> test(t) || other.test(t);}static <T> Predicate<T> isEqual(Object targetRef) {return (null == targetRef)? Objects::isNull: object -> targetRef.equals(object);

Supplier:无参返回一个结果。该函数可以接受无参构造方法、无参方法来返回一个结果

@FunctionalInterface
public interface Supplier<T> {// 无参返回一个结果T get();
}

Consumer:接受一个参数,并处理,无返回结果

@FunctionalInterface
public interface Consumer<T> {// 接受一个参数,并处理,无返回结果void accept(T t);// 组合操作 表示消费的先后顺序,当前实例消费完成后,after才开始消费default Consumer<T> andThen(Consumer<? super T> after) {Objects.requireNonNull(after);return (T t) -> { accept(t); after.accept(t); };}



实例:

使用上面的函数接口实现简单的判断和输出功能:

public class FITest<T, R> {public static void main(String[] args) {// 判断输入的密码是否正确 正确时计算并返回结果FITest<String, String> fiTest = new FITest<>();Scanner sc = new Scanner(System.in);System.out.print("请输入密码: ");String key = sc.next();String result = fiTest.getIfTrue(key, // 输入数据k1 -> k1 + " Is Right KEY! ", // Predicate判断为真时的回调方法k2 -> k2.equals("KEY") // 判断条件);System.out.println(result);}// 判断正确时打印输出public R getIfTrue(T t, Function<T, R> function, Predicate<T> predicate) {if (predicate.test(t)) {return function.apply(t);} else {System.err.println("密码错误!");}return null;}
}// 输入输出结果
请输入密码: NKEY
null
密码错误!
----------------------
请输入密码: KEY
KEY Is Right KEY! 




Lambda表达式:Lambda Expressions

概念:

即是一个匿名函数,即没有函数名的函数。Lambda表达式可以让我们不用实现函数式接口,而是通过函数体完成其接口方法。Lambda是实现回调函数(callback function)的一种方式。



结构:

(输入 +) 函数体 (+ 输出)

// 输入(String a)   
// "->" 符号后的部分都可以当作函数体 
// 输出一个String类型的变量upper
(String a) -> {String upper = a.toUpperCase();System.out.println(upper);return upper;
}



语法规则:

  1. 声明类型、不声明类型
(int a, int b) -> a + b(a, b) -> a - b// 前面两个表达式含义相同,相当于下面的方法
int sum(int a, int b) {return a +b;

注意:单个参数需要声明类型时,必须使用“()”圆括号。

// 一个入参
(List<String> l) -> {l.forEach(element -> System.out.println(element));
}

  1. 有输入参数、没有输入参数
(String a) -> new String(a)
// 需要一个没有内容的括号表示无参
() -> new String()// 以上相当于一个是有参方法,一个是无参方法
String newStr(String a) {return new String(a);
}String newStr() {return new String();

  1. 单条执行语句、多条执行语句
() -> "lambda".toUpperCase()() -> {// other statementreturn "lambda".toUpperCase();
}

注意:单条语句可以省去“{}”


  1. 带有输出的Lambda表达式、不带有输出
// 有返回值
(List<String> list) -> {return list;
}(List<String> list) -> list// 无返回值
(List<String> list) -> {list.clear();
}(List<String> list) -> list.clear()

注意:

  1. 当函数体只有一条且为输出语句时,需要确保简写表达式语句有返回值
  2. 当无返回值的表达式只有一条时,需要确保简写表达式不会有返回值




方法引用:Method Reference

定义:

当使用一个Lambda表达式创建一个匿名函数时,如果该函数什么都不做,仅仅只是调用一个现有的方法时,就可以使用方法的名字来代表该方法的调用。


方法引用即是用现有方法的名字,来紧凑的表达一个易于阅读的Lambda表达式。


方法引用使用两个冒号 :: 表示



方法引用种类:

种类句法例子
引用静态方法ContainingClass::staticMethodNamePerson::compareByAgeMethodReferencesExamples::appendStrings
引用类的实例对象的方法containingObject::instanceMethodNamemyComparisonProvider::compareByNamemyApp::appendStrings2
引用特殊类型的任意对象的实例方法ContainingType::methodNameString::compareToIgnoreCaseString::concat
引用构造函数ClassName::newHashSet::new

下面的代码是Oracle文档的一段代码实例:
import java.util.function.BiFunction;public class MethodReferencesExamples {public static <T> T mergeThings(T a, T b, BiFunction<T, T, T> merger) {return merger.apply(a, b);}public static String appendStrings(String a, String b) {return a + b;}public String appendStrings2(String a, String b) {return a + b;}public static void main(String[] args) {MethodReferencesExamples myApp = new MethodReferencesExamples();// Calling the method mergeThings with a lambda expressionSystem.out.println(MethodReferencesExamples.mergeThings("Hello ", "World!", (a, b) -> a + b));// Reference to a static methodSystem.out.println(MethodReferencesExamples.mergeThings("Hello ", "World!", MethodReferencesExamples::appendStrings));// Reference to an instance method of a particular object        System.out.println(MethodReferencesExamples.mergeThings("Hello ", "World!", myApp::appendStrings2));// Reference to an instance method of an arbitrary object of a// particular typeSystem.out.println(MethodReferencesExamples.mergeThings("Hello ", "World!", String::concat));



结语:花费了大概一周的空闲时间,终于对函数式编程有了初步的了解,接下来,将会继续学习函数式编程在Java中的实际应用:Stream流式操作。也希望能在实际的编码中能写出优美、可读性强且可维护性高的函数式编程语句,加油!

当然,如果文中有错误,也希望能即时提醒。



参考

Lambda Expressions

Functional Programming in Java

Functional programming
Method References

Any difference between First Class Function and High Order Function

first-class functions:函数是一等公民

Higher-order_function

First-class_function

Side effect

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-2891.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

Git一个项目中引用其他Git仓库

// git submodule add [git地址] [目录位置] $ git submodule add https://xxx/gittest.git src/gittest使用submodule后 在当前git目录下会生成一个 .gitmodules 文件 如果但当前目录已经存在了一个 .gitmodules&#xff0c;命令需要更改为 $ git submodule add -f https://…...

2021.6.1

链接查询 连接查询可分为内连接和外连接。 一.内连接&#xff1a;内连接分3种&#xff1a;交叉连接、相等连接、自然连接。 1.内连接语法&#xff1a; 1.交叉连接&#xff1a; 交叉链接又称“笛卡尔链接”&#xff0c;即所有类型的内连接的基础 语法 select * from table…...

SpringBoot入门及官网教程

文章目录http://felord.cn/_doc/_springboot/2.1.5.RELEASE/_book/https://spring.io/projects/spring-boothttps://springboot.io/http://felord.cn/_doc/_springboot/2.1.5.RELEASE/_book/ https://spring.io/projects/spring-boot https://springboot.io/...

c++:mt19937生成随机数

随机生成&#xff1a; int rd(){mt19937 rd1(time(NULL));return rd1(); }指定随机数的生成范围&#xff1a; int rd(){mt19937 rd1(time(NULL));uniform_int_distribution<int>t(0,100000);//指定范围return t(rd1); }...

js中find和findIndex的使用

ES6为Array增加了find()&#xff0c;findIndex函数。 find()函数用来查找目标元素&#xff0c;找到就返回该元素&#xff0c;找不到返回undefined。 findIndex()函数也是查找目标元素&#xff0c;找到就返回元素的位置&#xff0c;找不到就返回-1。 他们的都是一个查找回调函…...

投资理财1

1. 投资术语 熔断&#xff1a;也叫自动停盘机制&#xff0c;是指当股指波幅达到规定的熔断点时&#xff0c;交易所为控制风险采取的暂停交易措施。具体说是对某一合约在达到涨跌停板之前&#xff0c;设置一个熔断价格&#xff0c;使合约买卖报价在一段时间内只能在这一价格范围…...

【项目】springboot中使用kaptcha生成验证码,登录时密码加盐处理

记录使用kaptcha的过程 为前后端分离项目&#xff0c;前端vue框架 0.下载jar包 在maven的网站https://mvnrepository.com/search?qcom.github.penggle 搜索下载jar 导入到工程中 1.添加依赖 <dependency><groupId>com.github.penggle</groupId><art…...

Mybatis源码研究之DatabaseIdProvider

借助Mybatis提供的 databaseId特性&#xff0c;我们可以实现让应用同时支持多种类型的数据库。 0. 目录这里写目录标题1. 测试用例2. 原理解析3. databaseId的其它应用4. Links1. 测试用例 相关的配置和测试用例如下 &#xff08;这里我们以源生的mybatis为例&#xff0c;与Sp…...

学生成绩管理系统+打包

文章目录文件管理&#xff1a;D:\hyt\python\pytorch_graduate\file_management成绩管理&#xff1a;D:\hyt\python\pytorch_graduate\stusystem打包&#xff1a;D:\hyt\python\pytorch_graduate\package_test学生成绩管理系统0.基础原理1.文件管理2 学生管理系统Tk打包1.基础原…...

Yocto Build with Bitbake的调试

https://docs.yoctoproject.org/dev-manual/common-tasks.html#recipe-logging-mechanisms 官方文档里有输出调试信息的方法。包含两种&#xff0c;一种是调用python的&#xff0c;一种是bash的。 建议直接使用warning方法&#xff0c;保证输出级别足够。 另外&#xff0c;在…...

IntentService源码分析指南

转载链接&#xff1a;https://www.jianshu.com/p/8a3c44a9173a...

为啥集群小文件治理那么重要,你真的懂吗?

小文件是 Hadoop 集群运维中的常见挑战&#xff0c;尤其对于大规模运行的集群来说可谓至关重要。如果处理不好&#xff0c;可能会导致许多并发症。Hadoop集群本质是为了TB,PB规模的数据存储和计算因运而生的。为啥大数据开发都说小文件的治理重要&#xff0c;说HDFS 存储小文件…...

Flink大数据实时计算系列-第一个程序JAVA版本-分组统计

Flink大数据实时计算系列-第一个程序JAVA版本-分组 在基线版本上增加了分组统计的代码 #Flink代码 package com.flinkniu.flink.operator;import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink...

Ant Design Vue实现a-table表格单元格合并

Ant Design Vue实现a-table表格单元格合并 参考Ant design Vue官网关于行和列合并api https://antdv.com/components/table-cn/ 下面官网对表格合并这块的描述 &#xff01;&#xff01;&#xff01;注意注意注意重要事情说三遍&#xff1a;很多同学都习惯性的将columns写在d…...

【CoppeliaSim】Solidworks中模型导出模型到V-REP

一、下载安装插件 插件名称&#xff1a;sw2urdfSetup 下载地址&#xff1a;https://github.com/ros/solidworks_urdf_exporter/releases/tag/1.6.0 下载后直接安装即可。安装成功后&#xff0c;可在SolidWorks的菜单栏中看到&#xff1a;工具-Tools-Export as URDF 二、导出…...

css中id和class的区别

css中id和class的区别ID是唯一的类不是唯一的语法区别ID是唯一的 每个元素仅可以有一个ID每个页面仅可以有一个元素拥有这个ID 类不是唯一的 你可以在多个元素中使用相同的类你可以使用多个类在一个元素中 语法区别 id对应css是用样式选择符“#”&#xff08;井号&#xff…...

力扣刷题:动态规划篇

目录322. 零钱兑换题目介绍题目实现5. 最长回文子串题目介绍题目实现518. 零钱兑换 II题目介绍题目实现53. 最大子序和题目介绍题目实现63. 不同路径 II题目介绍[62. 不同路径](https://leetcode-cn.com/problems/unique-paths/)题目实现70. 爬楼梯题目介绍题目实现72. 编辑距离…...

Java面试list 和 set 区别

List和Set的区别 List:&#xff1a;有序&#xff0c;按对象进入的的序保存对象&#xff0c;可可允许多个Null元素对象&#xff0c;可以使用lterator迭取出所有元素。在逐一便历&#xff0c;也可以使用get(int index)获取指定下标的元素 Set&#xff1a;无序&#xff0c;不可重复…...

诚意分享:这里有份超全Java体系化进阶学习图谱

摘要 Apache Kafka是一个分布式消息发布订阅系统。它最初由LinkedIn公司基于独特的设计实现为一个分布式的提交日志系统( a distributed commit log)&#xff0c;之后成为Apache项目的一部分。 成千上万的企业都在使用Kafka&#xff0c;三分之一的世界500强公司也在其中&…...

requests+re爬取猫眼电影排行

import requests from requests.exceptions import RequestException import re,json,timedef get_one_page(url):#获取网页信息try:headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/53…...

强推!程序员必备!CSDN浏览器插件,让码字效率提升n倍,颜值与实力并存

目 录 一 写在前面 二 测评信息 三 测评体验 3.1 安装方便 3.2 始于颜值 3.2.1 简约美观的主题 3.2.2 多变时尚的风格 3.3 忠于强大 3.3.1 快捷的搜索 3.3.2 丰富的功能 3.3.3 开发者神器 3.4 一些建议 四 写在最后 一 写在前面 你是否对极致的用户体验有很高的…...

Window10 远程连接(校内网实验室电脑连接寝室电脑)

Windows10 远程连接win10远连用途被连机设置密钥升级开启文件打印机共享&#xff08;回显请求-ICMPv4)记住电脑内网IP和你的微软账号&#xff01;临时机开启连接win10远连用途 windows自带的远程连接&#xff0c;使用方便。 我用于校内实验室或者图书馆电脑操作宿舍电脑&#…...

js中find和findIndex的使用

ES6为Array增加了find()&#xff0c;findIndex函数。 find()函数用来查找目标元素&#xff0c;找到就返回该元素&#xff0c;找不到返回undefined。 findIndex()函数也是查找目标元素&#xff0c;找到就返回元素的位置&#xff0c;找不到就返回-1。 他们的都是一个查找回调函…...

博客后端开发

数据库设计 用户表 tb_user 字段名类型长度不是null主键注释idvarchar255是是主键accountvarchar255是 账户passwordvarchar255是 密码namevarchar255否 别名emailvarchar128否 邮箱introductionvarchar255否 个人简介avatarvarchar255否 头像create_timedatetime0是 注册时间…...

c++:mt19937生成随机数

随机生成&#xff1a; int rd(){mt19937 rd1(time(NULL));return rd1(); }指定随机数的生成范围&#xff1a; int rd(){mt19937 rd1(time(NULL));uniform_int_distribution<int>t(0,100000);//指定范围return t(rd1); }...

Docker和k8s知识概括

Docker和k8s知识概括Docker简介K8S简介Docker简介 Docker简介&#xff1a; 2010年&#xff0c;几个搞IT的年轻人&#xff0c;在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。具体来说&#xff0c;是和LXC有关的容器技术。LXC&…...

2021.6.1

链接查询 连接查询可分为内连接和外连接。 一.内连接&#xff1a;内连接分3种&#xff1a;交叉连接、相等连接、自然连接。 1.内连接语法&#xff1a; 1.交叉连接&#xff1a; 交叉链接又称“笛卡尔链接”&#xff0c;即所有类型的内连接的基础 语法 select * from table…...

【vue】vue3学习笔记(三)

接上篇 面包屑 安装path-to-regexpcomponent/breadcrumb/index <template><el-breadcrumb class"app-breadcrumb breadcrumb-container" separator"/"><el-breadcrumb-item v-for"(item, index) in levelList" :key"item…...

Git一个项目中引用其他Git仓库

// git submodule add [git地址] [目录位置] $ git submodule add https://xxx/gittest.git src/gittest使用submodule后 在当前git目录下会生成一个 .gitmodules 文件 如果但当前目录已经存在了一个 .gitmodules&#xff0c;命令需要更改为 $ git submodule add -f https://…...

大厂实习之路|记录我的腾讯9面之旅

文章目录自我介绍简历投递情况腾讯面试情况腾讯某部门一面、二面&#xff08;3.22 3.24 &#xff09;微信安卓一面&#xff08;3.29&#xff09;&#xff1a;不知名安卓部门一面&#xff08;4.6&#xff09;&#xff1a;不知名安卓部门一面与二面(4.24&#xff0c;4.26)&#x…...

地磁感应器逆时针90度

static struct mag_hw cust_mag_hw {.i2c_num 3,.direction 2,.power_id MT65XX_POWER_NONE, /*!< LDO is not used */.power_vol VOL_DEFAULT, /*!< LDO is not used */};...

传感器系列之4.7地磁传感器

4.7地磁传感实验 一、实验目的1&#xff0e;掌握LPC2378芯片的编程方法 2. 掌握地磁传感器的工作原理 3. 掌握地磁传感器的使用流程 二、实验材料1&#xff0e;具有USB 串口通讯的PC 机1 台 2&#xff0e;ADS1.2 集成开发软件1 套 3&#xff0e;J-Link-ARM 仿真器及软件1 套…...

X Metaverse Pro Cloud Mining Starts a New Level of Mining

With the development of cryptocurrency, mining, as one of the powerful ways to acquire digital currency, has been gaining popularity in the investment circle. With the digitization of the mining industry and the expanded participating groups, the whole m...

GE电口,后面还有个(2路bypass)是什么

GE电口是服务器和网络中对RJ45等各种双绞线接口的统称&#xff0c;就是千兆接口&#xff0c;2路bypass就是一对接口...

什么是FE/GE/XG端口???

一、FE端口 FE接口是指Fast Ethernet 快速以太网/百兆网端口。 二、GE端口 GE端口指的是Gigabit Ethernet千兆网以太网端口。 三、XG端口 XG端口指的是10 Gigabit Ethernet万兆网以太网端口。...

.ge()函数

import operator #首先要导入运算符模块 operator.gt(1,2) #greater than&#xff08;大于&#xff09; operator.ge(1,2) #greater and equal&#xff08;大于等于&#xff09; operator.eq(1,2) #equal&#xff08;等于&#xff09; operator.le(1,2) …...

网络接口 FE GE 10GE SFP

FE接口&#xff0c;快速以太网接口(FE)GE接口&#xff0c;千兆以太网接口(GbE)10GE接口&#xff0c;万兆以太网接口(10GbE) GE接口有光纤接口&#xff0c;也有电接口两种方式。GE SFP是千兆速率的光口&#xff0c;10 GE SFP是万兆速率的光口 注&#xff1a;GE接口&#xff0c;指…...

Flowable 数据库表结构 ACT_GE_PROPERTY

属性数据表(act_ge_property) 属性数据表。存储整个流程引擎级别的数据 字段名称字段描述数据类型主键为空取值说明NAME_名称nvarchar(64)√schema.versionschema.historynext.dbidVALUE_值nvarchar(300)√5.create(5.)REV_乐观锁int√version...

Kai Ge - Q绑查询V1.4

介绍&#xff1a; 原先版本不能用了&#xff0c;更新一下继续发布&#xff01; 最近有很多人问我要。 就弄了一个&#xff01; 网盘下载地址&#xff1a; http://kekewl.org/12m2HzTsMUG 图片&#xff1a;...

mybatis-plus le ge 记录

出异常源代码 this.baseMapper.selectList(new QueryWrapper<PersonnelRoleDO>().lambda().eq(PersonnelRoleDO::getTenantId, tenantId).eq(PersonnelRoleDO::getPersonnelCode, personnelCode).ge(PersonnelRoleDO::getStartTime, format).le(PersonnelRoleDO::getExpi…...

Kai Ge - Q绑查询V1.3

介绍&#xff1a; 软件功能修复&#xff01; 网盘下载地址&#xff1a; https://zijiewangpan.com/Im2y7e4XH1h 图片&#xff1a;...

torch.ge()

参考torch.ge() - 云社区 - 腾讯云 函数作用 torch.ge(a,b)比较a&#xff0c;b的大小&#xff0c;a为张量&#xff0c;b可以为和a相同形状的张量&#xff0c;也可以为一个常数。 代码示例 >>> import torch >>> atorch.Tensor([[1,2,3],[4,5,6]]) >>…...

FE,GE,POS口的概念

FE,GE,POS口的概念 FE接口&#xff08;Fast Ethernet&#xff09;&#xff0c;就是快速以太网接口 GE接口&#xff08;Gigabit Ethernet&#xff09;,就是千M以太网接口 POS&#xff08;Packet Over SONET/SDH)&#xff0c;用于更高速度的接口&#xff0c;通常用于广域网、城域…...

plc ge c语言编程,GE PLC编程软件是什么

GE Fanuc PLC的编程中有Logic Developer一PLC&#xff0c;属于MachineEdition系列自动化软件中的一个部分。这个软件包提供了多种工具用于创建功能强大的PLC控制程序。Logic Developer一PLC可以用于组态你的PLC控制器或远程I/O站&#xff0c;创建和修改PLC逻辑&#xff0c;上载…...

IP技术 -- 2 50GE

随着运营商5G业务的拓展&#xff0c;5G基站峰值带宽将提升至10Gbit/s&#xff0c;承载网接入环带宽将达到26G&#xff0c;当前10GE和25GE带宽不足&#xff0c;而100GE成本又太高&#xff0c;无法支持接入层海量应用需求&#xff0c;因此&#xff0c;满足5G接入层带宽需求的50GE…...

(一)Activiti 数据库25张表——一般数据1 (ACT_GE_BYTEARRAY)

概览 表名解释ACT_GE_BYTEARRAY二进制数据表&#xff0c;存储通用的流程定义和流程资源。ACT_GE_PROPERTY系统相关属性&#xff0c;属性数据表存储整个流程引擎级别的数据&#xff0c;初始化表结构时&#xff0c;会默认插入三条记录。ACT_GE_BYTEARRAY 简介&#xff1a; 二进制…...

2个25Ge网口做bond(mode4)后,iperf2压测不到50Gb

问题现象&#xff1a; centos7 服务器&#xff0c;有2个网卡&#xff0c;一个25Ge&#xff0c;2个网口&#xff0c;一个10Ge,2个网口&#xff0c;25GE2个网口连接一台交换机&#xff0c;10GE两个网口连接一台交换机。 分别对25Ge的两个网口和10GE两个网口做bond&#xff0c;mod…...

投资组合分析的 GE McKinsey 矩阵

企业现在变得更加脆弱和竞争&#xff0c;要求他们在选择投资时更加警惕&#xff0c;以取得最大的成果。GE麦肯锡矩阵确保公司以更系统和更精确的方式分析其投资组合。 “GE-McKinsey 九盒矩阵是一种战略工具&#xff0c;它为多业务公司提供了一种系统方法&#xff0c;可以在其业…...

微星GE62 2QC-264XCN刷黑苹果详细教程亲测有效,完美双系统,双屏!

黑苹果安装教程:机型微星GE62 2QC-264XCN 教程前言: 从装上黑苹果到现在的体验已经一周多了,很幸运的是自己在初步安装的时候,没有遇到“五国图和八个苹果等问题。当然因为手贱也体验到了,只因为想用下最新版的黑苹果,那时候遇到了各种问题,最后也是重新刷回了我的这个…...

(一)Activiti 数据库25张表——一般数据2 (ACT_GE_PROPERTY)

概览 表名解释ACT_GE_BYTEARRAY二进制数据表&#xff0c;存储通用的流程定义和流程资源。ACT_GE_PROPERTY系统相关属性&#xff0c;属性数据表存储整个流程引擎级别的数据&#xff0c;初始化表结构时&#xff0c;会默认插入三条记录。ACT_GE_PROPERTY 简介&#xff1a; 属性数…...