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

Java SE入门及基础(54) 函数式接口

目录

1. 什么是函数式接口

函数式接口

示例

示例

2. 函数式编程

示例

3. Lambda 表达式延迟执行

应用场景

示例

4. Consumer 接口

解释说明

示例

5. BiConsumer 接口

解释说明

示例

6. Predicate 接口

解释说明

示例

练习

7. Function 接口

解释说明

示例

练习


1. 什么是函数式接口

函数式接口

        A functional interface is any interface that contains only one abstract method. (A functional interface may contain one or more default methods or static methods.) Because a functional interface contains only one abstract method, you can omit the name of that method when you implement it.
        函数式接口是仅包含一种抽象方法的任何接口。 (一个函数式接口可能包含一个或多个默认方法或静态方法。)由于一个函数式接口仅包含一个抽象方法,因此在实现该方法时可以省略该方法的名称。
示例
public interface Hello {
        void sayHello ( String name );
        static void show (){}
        default void print (){}
        private void test (){}
}
        JDK8 专门为函数式接口提供了一个注解标识 @FunctionalInterface ,该注解只能使用在接口类型的定义上,表明这是一个函数式接口, 编译器在编译时就是会对该接口进行检测:接口中是否只有一个抽 象接口方法。如果有多个抽象接口方法或者一个抽象接口方法也没有,则将报编译错误
示例
@FunctionalInterface
public interface Hello {
        void sayHello ( String name );
        static void show (){}
        default void print (){}
        private void test (){}
}
        注意: 如果接口类型上没有 @FunctionalInterface 注解,但接口中只有一个抽象方法,这个接口也 是函数式接口。这与 @Override 注解一样,即使方法上面没有写,同样是属于方法重写

2. 函数式编程

        函数式编程是一种编程方式,在 Java 中,简单来说就是一个变量能够存储一个函数。而能够实现这种赋值操作的只有 Lambda 表达式
示例
@FunctionalInterface
public interface Hello {
        void sayHello ( String name );
        static void show (){}
        default void print (){}
        // private void test(){}
}
package com . wq . functional ;
public class HelloTest {
        public static void main ( String [] args ) {
                // Hello hello = name -> System.out.println(name);
                Hello hello = System . out :: println ;
                hello . sayHello ( "Marry" );
        }
}

3. Lambda 表达式延迟执行

应用场景
        在某种条件下才会处理数据
示例
package com . wq . lambda . lazy ;
public interface MsgBuilder {
        String buildMsg ( String ... infos );
}
package com . wq . lambda . lazy ;
public class PrintUtil {
        public static void print ( boolean valid , String msg ){
                if ( valid ){
                        System . out . println ( msg );
                }
        }
        private static String build ( String ... infos ){
                StringBuilder builder = new StringBuilder ();
                for ( String info : infos ){
                        builder . append ( info );
                }
                return builder . toString ();
        }
        public static void print ( boolean valid , String ... infos ){
                if ( valid ){
                        // MsgBuilder builder = new MsgBuilder() {
                                // @Override
                                // public String buildMsg(String... infos) {
                                        // return PrintUtil.build(infos);
                                // }
                        // };
                        // MsgBuilder builder = (String... arr) -> {
                                // return PrintUtil.build(arr);
                        // };
                        // MsgBuilder builder = arr -> PrintUtil.build(arr);
                        MsgBuilder builder = PrintUtil :: build ;
                        System . out . println ( builder . buildMsg ( infos ));
                }
        }
}
package com . wq . lambda . lazy ;
public class PrintTest {
        public static void main ( String [] args ) {
                String name = "Marry" ;
                String desc = " is friendly" ;
                //不会打印任何信息,但是此时已经完成了字符串的组装,这是属于性能上的浪费
                PrintUtil . print ( false , name + desc );
                //不会打印任何信息,但是也未构建字符串
                PrintUtil . print ( false , name , desc );
                //会打印信息时才会构建字符串
                PrintUtil . print ( true , name , desc );
        }
}

4. Consumer 接口

void accept ( T t ); // 接收一个被消费的数据
解释说明
        Consumer 顾名思义就是消费者的意思。可以消费一个被接收到的数据,至于如何消费,就需要看这个接口被如何实现。
示例
package com . wq . consumer ;
import java . util . Arrays ;
import java . util . HashSet ;
import java . util . List ;
import java . util . Set ;
import java . util . function . Consumer ;
public class ConsumerTest {
        public static void main ( String [] args ) {
                // Consumer<String> c1 = new Consumer<String>() {
                        // @Override
                        // public void accept(String s) {
                                // System.out.println(s);
                        // }
                // };
                // Consumer<String> c1 = (String s) -> {
                        // System.out.println(s);
                // };
                // Consumer<String> c1 = s -> System.out.println(s);
                Consumer < String > c1 = System . out :: println ;
                c1 . accept ( " 这是被消费的信息 " );
                // Consumer<String> c2 = new Consumer<String>() {
                        // @Override
                        // public void accept(String s) {
                                // System.out.println(s.charAt(0));
                        // }
                // };
                Consumer < String > c2 = s -> System . out . println ( s . charAt ( 0 ));
                c2 . accept ( "This is a consumer" );
                Consumer < String > c3 = c1 . andThen ( c2 );
                c3 . accept ( " 先打印再取第一个字符 " );
                //将数组转换为集合
                List < Integer > numbers = Arrays . asList ( 1 , 2 , 3 , 4 , 5 );
                // numbers.forEach(new Consumer<Integer>() {
                        // @Override
                        // public void accept(Integer integer) {
                                // System.out.println(integer);
                        // }
                // });
                //
                // numbers.forEach(integer -> System.out.println(integer));
                numbers . forEach ( System . out :: println );
                Set < String > names = new HashSet <> ();
                names . add ( "admin" );
                names . add ( "test" );
                names . add ( "developer" );
                // names.forEach(new Consumer<String>() {
                        // @Override
                        // public void accept(String s) {
                                // System.out.println(s);
                        // }
                // });
                names . forEach ( System . out :: println );
        }
}

5. BiConsumer 接口

void accept ( T t , U u ); // 接收两个被消费的数据
解释说明
        BiConsumer 也是一个消费者,只是这个消费者可以一次性消费两个数据(一般是键值对)。至于如何消费,就需要看这个接口被如何实现。
示例
package com . wq . consumer ;
import java . util . HashMap ;
import java . util . Map ;
import java . util . function . BiConsumer ;
public class BiConsumerTest {
        public static void main ( String [] args ) {
                // BiConsumer<String,Integer> bc = new BiConsumer<String, Integer>() {
                        // @Override
                        // public void accept(String s, Integer integer) {
                                // System.out.println(s + "=>" + integer);
                        // }
                // };
                BiConsumer < String , Integer > bc = ( s , i ) -> System . out . println ( s + "=>" + i );
                bc . accept ( "a" , 1 );
                Map < String , String > counties = new HashMap <> ();
                counties . put ( "CN" , " 中国 " );
                counties . put ( "EN" , " 英国 " );
                counties . put ( "US" , " 美国 " );
                // counties.forEach(new BiConsumer<String, String>() {
                        // @Override
                        // public void accept(String s1, String s2) {
                                // System.out.println(s1 + "=>" + s2);
                        // }
                // });
        counties . forEach (( s1 , s2 ) -> System . out . println ( s1 + "=>" + s2 ));
        }
}

6. Predicate 接口

boolean test ( T t ); // 检测是否满足条件
default Predicate < T > and ( Predicate <? super T > other ); // 条件之间的逻辑与衔接
default Predicate < T > negate (); // 条件取反
default Predicate < T > or ( Predicate <? super T > other ); // 条件之间的逻辑或衔接
解释说明
        Predicate 是条件的意思,可以检测给定数据是否满足条件,也可以与其他条件进行衔接。至于如何检测,就需要看这个接口被如何实现。
示例
import java . util . function . Predicate ;
public class PredicateTest {
        public static void main ( String [] args ) {
                // Predicate<String> p1 = new Predicate<String>() {
                        // @Override
                        // public boolean test(String s) {
                                // return s.contains("中国");
                        // }
                // };
                Predicate < String > p1 = s -> s . contains ( " " );
                boolean result1 = p1 . test ( " 中华人民共和国 " );
                System . out . println ( result1 );
                Predicate < String > p2 = s -> s . indexOf ( " " ) > 0 ;
                boolean result2 = p2 . test ( " 中华人民共和国 " );
                System . out . println ( result2 );
                Predicate < String > p3 = p1 . negate (); // 取反
                System . out . println ( p3 . test ( " 中华人民共和国 " ));
                Predicate < String > p4 = p1 . and ( p2 ); // 逻辑与衔接
                System . out . println ( p4 . test ( " 中华人民共和国 " ));
                Predicate < String > p5 = p1 . or ( p2 ); // 逻辑或衔接
                System . out . println ( p5 . test ( " 中华人民共和国 " ));
        }
}
练习
        学生有姓名、性别和年龄。现有一个集合内存储有10 名学生信息,请找出其中性别为男,年龄在 20 岁以上的学生,并在控制台进行输出
package com . wq . predicate ;
public class Student {
        private String name ;
        private String sex ;
        private int age ;
        public Student ( String name , String sex , int age ) {
                this . name = name ;
                this . sex = sex ;
                this . age = age ;
        }
        public String getName () {
                return name ;
        }
        public void setName ( String name ) {
                this . name = name ;
        }
        public String getSex () {
                return sex ;
        }
        public void setSex ( String sex ) {
                this . sex = sex ;
        }
        public int getAge () {
                return age ;
        }
        public void setAge ( int age ) {
                this . age = age ;
        }
        @Override
        public String toString () {
                return "Student{" +
                        "name='" + name + '\'' +
                        ", sex='" + sex + '\'' +
                        ", age=" + age +
                        '}' ;
        }
}
package com . wq . predicate ;
import java . util . Arrays ;
import java . util . List ;
import java . util . function . Consumer ;
import java . util . function . Predicate ;
public class Exercise {
        public static void main ( String [] args ) {
                List < Integer > numbers = Arrays . asList ( 1 , 2 , 3 , 4 , 5 );
                List < Student > students = Arrays . asList (
                        new Student ( " 管理员 1" , " " , 20 ),
                        new Student ( " 管理员 2" , " " , 21 ),
                        new Student ( " 管理员 3" , " " , 22 ),
                        new Student ( " 管理员 4" , " " , 23 ),
                        new Student ( " 管理员 5" , " " , 24 ),
                        new Student ( " 管理员 6" , " " , 18 ),
                        new Student ( " 管理员 7" , " " , 16 ),
                        new Student ( " 管理员 8" , " " , 19 ),
                        new Student ( " 管理员 9" , " " , 20 ),
                        new Student ( " 管理员 0" , " " , 23 )
                );
                // Predicate<Student> p1 = new Predicate<Student>() {
                        // @Override
                        // public boolean test(Student student) {
                                // return "男".equals(student.getSex());
                        // }
                // };
                Predicate < Student > p1 = stu -> " " . equals ( stu . getSex ());
                Predicate < Student > p2 = stu -> stu . getAge () > 20 ;
                Predicate < Student > p3 = p1 . and ( p2 );
                // students.forEach(new Consumer<Student>() {
                        // @Override
                        // public void accept(Student student) {
                                // if(p3.test(student)){
                                        // System.out.println(student);
                                // }
                        // }
                // });
                students . forEach ( student -> {
                        if ( p3 . test ( student )){
                                System . out . println ( student );
                        }
                });
        }
}

7. Function 接口

R apply ( T t ); // 将一个对象转换为另一种数据类型的对象
default < V > Function < T , V > andThen ( Function <? super R , ? extends V >
after ); // 复合转换
解释说明
        Function 是功能的意思,可以将一种数据类型的对象转换为另一种数据类型的对象,至于如何转换,就需要看这个接口被如何实现。
示例
import java . util . function . Function ;
public class FunctionTest {
        public static void main ( String [] args ) {
                // Function<String,Integer> f1 = new Function<String, Integer>() {
                        // @Override
                        // public Integer apply(String s) {
                                // return Integer.parseInt(s);
                        // }
                // };
                // Function<String,Integer> f1 = s -> Integer.parseInt(s);
                Function < String , Integer > f1 = Integer :: parseInt ;
                Integer i = f1 . apply ( "123" );
                System . out . println ( i );
                // Function<Integer,Double> f2 = new Function<Integer, Double>() {
                        // @Override
                        // public Double apply(Integer integer) {
                                // return integer * 10.0;
                        // }
                // };
                Function < Integer , Double > f2 = integer -> integer * 10.0 ;
                System . out . println ( f2 . apply ( i ));
                Function < String , Double > f3 = f1 . andThen ( f2 );
                double d = f3 . apply ( "5" );
                System . out . println ( d );
        }
}
练习
现有文本存储学生信息如下:
谢霆锋 , ,37
刘德华 , ,52
郭富城 , ,46
张学友 , ,40
要求将学生信息从文本中读取出来并转换为学生对象,然后存储在集合中
import java . io . BufferedReader ;
import java . io . FileNotFoundException ;
import java . io . FileReader ;
import java . io . IOException ;
import java . util . ArrayList ;
import java . util . List ;
import java . util . function . Function ;
public class Exercise {
        public static void main ( String [] args ) {
                String path = "F:/stu.txt" ;
                // Function<String, Student> function = new Function<String, Student>() {
                        // @Override
                        // public Student apply(String s) {
                                // return new Student(s.split(","));
                        // }
                // };
                Function < String , Student > function = s -> new
                Student ( s . split ( "," ));
                List < Student > students = readStudent ( path , function );
                students . forEach ( System . out :: println );
                System . out . println ( "========================" );
                // Function<String[], Student> f = new Function<String[], Student> () {
                        // @Override
                        // public Student apply(String[] strings) {
                                // return new Student(strings);
                        // }
                // };
                // Function<String[], Student> f = strings -> new Student(strings);
                Function < String [], Student > f = Student :: new ;
                List < Student > stus = readStudent1 ( path , f );
                stus . forEach ( System . out :: println );
        }
        public static List < Student > readStudent1 ( String path ,
                Function < String [], Student > function ){
                List < Student > students = new ArrayList <> ();
                try ( FileReader reader = new FileReader ( path );
                        BufferedReader br = new BufferedReader ( reader )) {
                        String line ;
                        while (( line = br . readLine ()) != null ){
                                String [] arr = line . split ( "," );
                                Student stu = function . apply ( arr );
                                students . add ( stu );
                        }
                } catch ( FileNotFoundException e ) {
                        e . printStackTrace ();
                } catch ( IOException e ) {
                        e . printStackTrace ();
                }
                return students ;
        }
        public static List < Student > readStudent ( String path , Function < String , Student > function ){
                List < Student > students = new ArrayList <> ();
                try ( FileReader reader = new FileReader ( path );
                        BufferedReader br = new BufferedReader ( reader )) { String line ;
                        while (( line = br . readLine ()) != null ){
                                Student stu = function . apply ( line );
                                students . add ( stu );
                        }
                } catch ( FileNotFoundException e ) {
                        e . printStackTrace ();
                } catch ( IOException e ) {
                        e . printStackTrace ();
                }
                return students ;
        }
        private static class Student {
                private String name ;
                private String sex ;
                private int age ;
       public Student ( String [] arr ) {
                this . name = arr [ 0 ];
                this . sex = arr [ 1 ];
                this . age = Integer . parseInt ( arr [ 2 ]);
        }
        public String getName () {
                return name ;
        }
        public void setName ( String name ) {
                this . name = name ;
        }
        public String getSex () {
                return sex ;
        }
        public void setSex ( String sex ) {
                this . sex = sex ;
        }
        public int getAge () {
                return age ;
        }
        public void setAge ( int age ) {
                this . age = age ;
        }
        @Override
        public String toString () {
                return "Student{" +
                        "name='" + name + '\'' +
                        ", sex='" + sex + '\'' +
                        ", age=" + age +
                        '}' ;
        }
}
}

相关文章:

Java SE入门及基础(54) 函数式接口

目录 1. 什么是函数式接口 函数式接口 示例 示例 2. 函数式编程 示例 3. Lambda 表达式延迟执行 应用场景 示例 4. Consumer 接口 解释说明 示例 5. BiConsumer 接口 解释说明 示例 6. Predicate 接口 解释说明 示例 练习 7. Function 接口 解释说明 示例…...

轻松同步:将照片从三星手机传输到iPad的简便方法

概括 想要在新 iPad 上查看三星照片吗&#xff1f;但是&#xff0c;如果您不知道如何将照片从三星手机传输到 iPad&#xff0c;则无法在 iPad 上查看图片。为此&#xff0c;本文分享了 7 个有用的方法&#xff0c;以便您可以使用它们在不同操作系统之间轻松发送照片。现在&…...

MySQL查询某个字段含有字母数字的值

在MySQL中&#xff0c;要查询某个字段含有字母和数字的值&#xff0c;可以使用正则表达式配合REGEXP操作符。以下是一个详细的示例&#xff0c;说明如何编写这样的查询。 假设我们有一个名为my_table的表&#xff0c;其中有一个名为my_column的字段&#xff0c;我们想要查询这…...

通关!游戏设计之道Day14

力量与你同在 所有类型的游戏里&#xff0c;赛车类&#xff0c;解谜类&#xff0c;动作冒险类和射击类你都能找到强化道具。 强化道具 设计强化道具时&#xff0c;设计师应该开动脑筋琢磨下面几个问题 1.强化道具有什么用&#xff1f; 2.他长什么样子&#xff0c;在整个游戏…...

实现一个自定义 hook,用于强制刷新当前组件

写在前面 在 react 中&#xff0c;如果 state 数据发生变化&#xff0c;我们知道&#xff0c;会重新渲染该组件。 但是这个前提是我们需要依赖 state 数据的变化&#xff0c;那比如我们并不想定义 state&#xff0c;又或者说我们的操作不能引起 state 的变化&#xff0c;此时…...

牛客热题:滑动窗口的最大值

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;滑动窗口的最大值题目链接方法一…...

Adobe产品安装目录修改

进入安装包目录&#xff0c;进入到products文件夹 编辑driver.xml文件 将“InstallDir”修改为你需要安装的软件的目录&#xff0c;我这里是修改到D:\Adobe目录 <DriverInfo> <ProductInfo> xxxxxxxxxxxxxxxxx </ProductInfo> 拷贝RequestInfo这部分…...

时间(空间)复杂度(结构篇)

目录 前言&#xff1a; 一、时间复杂度 1.1 时间复杂度的定义 1.2 时间复杂度的分析 表示方法&#xff1a; 1.3 常见的时间复杂度 1.4 时间复杂度的计算以及简单的分析 冒泡排序 折半查找&#xff08;二分查找&#xff09; 斐波那契数列&#xff08;递归&#xff09…...

react记录部署

导语 React中的核心概念 1 虚拟DOM&#xff08;Virtual DOM&#xff09; 2 Diff算法&#xff08;虚拟DOM的加速器&#xff0c;提升React性能的法宝&#xff09; React主要的原理 Virtual DOM 虚拟DOM; 提供了一种不同的而又强大的方式来更新DOM&#xff0c; 代替直接的DOM操…...

【计算机毕业设计】基于SSM+Vue的校园美食交流系统【源码+lw+部署文档】

目录 前 言 第1章 概述 1.1 研究背景 1.2 研究目的 1.3 研究内容 第二章 开发技术介绍 2.1 Java技术 2.2 Mysql数据库 2.3 B/S结构 2.4 SSM框架 第三章 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统性能分析 3.3 系…...

「YashanDB迁移体验官」Mysql生产环境迁移至YashanDB数据库深度体验

「YashanDB迁移体验官」Mysql生产环境迁移至YashanDB数据库深度体验 1. 前言1.1 产品介绍1.2 产品架构1.3 产品规格1.3.1 数据库版本支持1.3.2 数据类型支持 2. YMP安装2.1 环境说明2.2 执行安装2.3 访问YMP2.3.1 YMP登录界面2.3.2 YMP迁移流程 3. YMP数据迁移3.1 创建数据源3.…...

qmt量化交易策略小白学习笔记第4期【qmt如何获取获取行情数据--内置python使用方法】

内置python使用方法 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;需免费开通量化回测与咨询实盘权限&#xff0c;可以和博主联系&#xff01; 获取历史行情与实时行情…...

XXE(XML外部实体注入)

1、XXE原理 XXE&#xff08;XML外部实体注入&#xff0c;XML External Entity) &#xff0c;在应用程序解析XML输入时&#xff0c;当允许引用外部实体时&#xff0c;可构造恶意内容&#xff0c;导致读取任意文件、探测内网端口、攻击内网网站、发起DoS拒绝服务攻击、执行系统命…...

kafka 案例

kafka 案例 目录概述需求&#xff1a; 设计思路实现思路分析1.kafka案例_API 带回调函数的生产者2.kafka案例_API生产者分区策略测试3.kafka案例_自定义分区的生产者4.kafka案例_API同步发送生产者5.kafka案例_API简单消费者5.kafka案例_API消费者重置offset 参考资料和推荐阅读…...

别被“涨价“带跑,性价比才是消费真理

文章来源&#xff1a;全食在线 “再不好好赚钱&#xff0c;连方便面也吃不起了。”这是昨天在热搜下&#xff0c;一位网友的留言。而热搜的内容&#xff0c;正是康师傅方便面即将涨价的消息。 01 传闻初现 昨天上午&#xff0c;朋友圈就有人放出康师傅方便面要涨价的消息&am…...

GEE深度学习——使用Tensorflow进行神经网络DNN土地分类

Tensorflow TensorFlow是一个开源的深度学习框架,由Google开发和维护。它提供了一个灵活的框架来构建和训练各种机器学习模型,尤其是深度神经网络模型。 TensorFlow的主要特点包括: 1. 它具有高度的灵活性,可以用于训练和部署各种类型的机器学习模型,包括分类、回归、聚…...

死锁示例(python、go)

Thread 1首先获取了资源A&#xff0c;然后尝试获取资源B&#xff0c;但此时资源B已经被Thread 2获取&#xff0c;因此Thread 1会一直等待。而Thread 2也类似&#xff0c;首先获取资源B&#xff0c;然后尝试获取资源A&#xff0c;但此时资源A已经被Thread 1获取&#xff0c;因此…...

Spring Cloud 面试题(五)

1. Eureka的自我保护模式是什么&#xff1f; Eureka的自我保护模式是一种应对网络异常的安全保护措施&#xff0c;旨在防止因网络分区或其他异常情况导致服务实例被错误地注销。当Eureka Server在短时间内丢失过多的客户端心跳时&#xff0c;会触发自我保护机制。以下是自我保…...

源码编译安装LAMP

1.LAMP介绍 LAMP架构是目前成熟的企业网站应用模式之一&#xff0c;指的是协同工作的一整套系统和相关软件&#xff0c;能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词&#xff0c;具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP&#xff08;…...

html5网页-浏览器中实现高德地图定位功能

介绍 HTML5是当前Web开发中最常用的技术之一&#xff0c;而地图应用又是其中一个非常常见的需求。高德地图是国内最受欢迎的地图服务提供商之一&#xff0c;他们提供了一系列的API&#xff0c;方便开发者在自己的网站或应用中集成地图功能。 接下来我们如何使用HTML5浏览器和高…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...