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

JDK1.8

JDK1.8

1. Lamdba表达式

Lambda表达式是什么?

Lambda是一个匿名函数,我们可以将Lambda表达式理解为一段可以传递的代码(将代码像数据一样传递)。使用它可以写出简洁、灵活的代码。作为一种更紧凑的代码风格,使java语言表达能力得到提升。

public static void main(String[] args) {//使用匿名函数new Thread(new Runnable(){@Overridepublic void run(){System.out.println("我是没有使用Lambda表达式:不简洁");}}).start();//使用Lambda表达式new Thread(()->System.out.println("我是使用Lambda表达式:简洁、灵活")).start();}

Lambda表达式在java语言中引入了一种新的语法元素和操作。这种操作符号为“->”,Lambda操作符或箭头操作符,它将Lambda表达式分割为两部分。 左边:指Lambda表达式的所有参数 右边:指Lambda体,即表示Lambda表达式需要执行的功能

六种语法格式 :

  1. 语法格式一:无参数、无返回值,只需要一个Lambda体
public interface Lock {public abstract void lockUp();  //上锁
}public static void main(String[] args) {Lock lock = ()-> System.out.println("Lambda表达式:简洁、灵活,优雅永不过时");lock.lockUp();
}
  1. 语法格式二:lambda有一个参数、无返回值
public interface Lock {public abstract void lockUp(String str);  //上锁
}public static void main(String[] args) {Lock lock = (s) -> System.out.println(s+"上锁");lock.lockUp("张三");
}
  1. Lambda只有一个参数时,可以省略()
public interface Lock {public abstract void lockUp(String str);  //上锁
}public static void main(String[] args) {Lock lock = s -> System.out.println(s+"上锁");lock.lockUp("张三");
}
  1. 语法格式四:Lambda有两个参数时,并且有返回值
public interface Lock {public abstract String lockUp(String str,String str2);  //上锁
}Lock lock = (s1,s2) -> {System.out.println("门被上锁。。。。。。");return "上锁";
};
lock.lockUp("张三","李四");
  1. 语法格式五:当Lambda体只有一条语句的时候,return和{}可以省略掉
public interface Lock {public abstract String lockUp(String str,String str2);  //上锁
}Lock lock = (s1,s2) ->  "上锁";
lock.lockUp("张三","李四");
  1. 类型推断:数据类型可以省略,因为编译器可以推断得出,称为“类型推断”

    public interface Lock {public abstract void lockUp(String str);  //上锁
    }public static void main(String[] args) {//可以写类型Lock lock = (String s) -> System.out.println(s+"上锁");lock.lockUp("张三");//可以不写类型Lock lock = (s) -> System.out.println(s+"上锁");lock.lockUp("张三");
    }
    

2. forEach+Lambda

  1. 使用forEach和Lambda循环list集合

    List<String> list = new ArrayList<String>();
    list.add("A");
    list.add("B");
    list.add("C");
    //使用forEach和Lambda循环list集合
    list.forEach(s->System.out.println(s));public class UserVo {private String userName;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}
    }
    List<UserVo> list = new ArrayList<UserVo>();
    list.add(new UserVo());
    list.add(new UserVo());
    list.add(new UserVo());//使用forEach和Lambda循环list集合并输出对象信息
    list.forEach(s->System.out.println(s.getUserName()));
    
  2. 使用forEach和Lambda循环Map集合

    Map<String, UserVo> map = new HashMap<String, UserVo>();
    map.put("A", new UserVo());
    map.put("B", new UserVo());
    map.put("C", new UserVo());map.forEach((k,v)->System.out.println(k+"==="+v.getUserName()));
    

3. 函数式接口

什么是函数式接口?

函数式接口:只包含一个抽象方法的接口,称为函数式接口,并且可以使用lambda表达式来创建该接口的对象,可以在任意函数式接口上使用@FunctionalInterface注解,来检测它是否是符合函数式接口。同时javac也会包含一条声明,说明这个接口是否符合函数式接口

  • 函数式接口: 有且仅有一个抽象方法的接口。
  • Java中的函数式编程体现就是Lambda表达式。
  • 所以函数式接口即可以适用于Lambda使用的接口。

注意:自定义函数式接口时,@FunctionalInterface是可选的,就算不写这个注解,只要保证满足函数式接口定义的条件,也照样是函数式接口。

//正确  函数式接口
@FunctionalInterface
public interface Lock {public abstract String lockUp(String str1,String str2);  //上锁//public abstract void openLock();  //开锁}//报错
@FunctionalInterface
public interface Lock {public abstract String lockUp(String str1,String str2);  //上锁public abstract void openLock();  //开锁}

4. 方法引用和构造器引用

1. 方法引用

当要传递给Lambda体的操作已经有实现方法,可以直接使用方法引用(实现抽象方法的列表,必须要和方法引用的方法参数列表一致)

方法引用:使用操作符“::”将方法名和(类或者对象)分割开来。

有下列三种情况:

对象::实例方法

类::实例方法

类::静态方法

@FunctionalInterface
public interface Lock {public abstract void lockUp(String str);  //上锁
}Lock lock = System.out::println;
lock.lockUp("测试。。。");
2. 构造器引用

本质上:构造器引用和方法引用相识,只是使用了一个new方法

使用说明:函数式接口参数列表和构造器参数列表要一致,该接口返回值类型也是构造器返回值类型

格式:ClassName :: new

@FunctionalInterface
public interface Lock {public abstract String lockUp(String str);  //上锁
}//非构造器引用
Lock lock1 = (s) -> new String(s);
//构造器引用
Lock lock2 = String::new;

5. Stream API

1. 什么是Stream?

Java8中两个最为重要特性:第一个的是Lambda表达式,另一个是Stream API。

StreamAPI它位于java.util.stream包中,StreamAPI帮助我们更好地对数据进行集合操作,它本质就是对数据的操作进行流水线式处理,也可以理解为一个更加高级的迭代器,主要作用是遍历其中每一个元素。简而言之,StreamAP提供了一种高效且易于使用的处理数据方式。

2. Stream特点:

1、Stream自己不会存储数据。

2、Stream不会改变源对象。相反,它们会返回一个持有结果的新Stream对象

3、Stream操作时延迟执行的。这就意味着它们等到有结果时候才会执行。

3. Stream操作的三个步骤?
  • 1、创建Stream:一个数据源(例如:set 、list),获取一个流
  • 2、中间操作:一个中间操作连接,对数据源的数据进行处理
  • 3、终止操作:一个终止操作,执行中间操作连,产生结果。
4. Stream创建可以通过三种方式创建。
  1. 通过java.util.Collection.stream() 方法用集合创建流
  2. 使用java.util.Arrays.stream(T[] array)方法用数组创建流
  3. 使用Stream的静态方法:of()、iterate()、generate()
    //1.通过 `java.util.Collection.stream()` 方法用集合创建流List<String> list = Arrays.asList("d","a", "b", "c");Stream<String> streamList = list.stream();System.out.println("###############顺序流##############");streamList.forEach(System.out::print);System.out.println();System.out.println("###############并行流##############");// 创建一个并行流Stream<String> parallelStream = list.parallelStream();parallelStream.forEach(System.out::print);System.out.println();//2.使用`java.util.Arrays.stream(T[] array)`方法用数组创建流int[] array={1,3,5,6,8};IntStream streamint = Arrays.stream(array);streamint.forEach(System.out::print);System.out.println();//3.使用`Stream`的静态方法:`of()、iterate()、generate()Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);stream.forEach(System.out::print);System.out.println();Stream<Integer> stream2 = Stream.iterate(0, (x) -> x + 3).limit(4);stream2.forEach(System.out::print);System.out.println();Stream<Double> stream3 = Stream.generate(Math::random).limit(3);stream3.forEach(System.out::print);System.out.println();
5. 中间操作

用下面这个集合来举例:


public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();Collections.addAll(list, "张无忌", "周芷若", "赵敏", "张强", "张三丰","张无忌");
}

(1).limit(n) 从list中取出n个元素

list.stream().limit(2).forEach(System.out::println);

(2).skip(n) 从list第n个元素开始,取出所有元素

list.stream().skip(3).forEach(System.out::println);

(3).distinct() 去除重复

list.stream().distinct().forEach(System.out::println);

(4).filter(Predicate<? super T> predicate) 筛选条件

括号中的内容为一个断言型函数式接口,其中的T为当前集合中元素的类型。

public static void main(String[] args) {List<Person> personList = new ArrayList<>();personList.add(new Person("欧阳雪",18,"中国",'F'));personList.add(new Person("Tom",24,"美国",'M'));personList.add(new Person("Harley",22,"英国",'F'));personList.add(new Person("向天笑",20,"中国",'M'));personList.add(new Person("李康",22,"中国",'M'));personList.add(new Person("小梅",20,"中国",'F'));personList.add(new Person("何雪",21,"中国",'F'));personList.add(new Person("李康",22,"中国",'M'));
}

找出年龄大于20的人并打印输出:

  personList.stream().filter((person)->person.getAge()>20).forEach(System.out::println);

(5).map(Function<? super T,?> mapper ) 将元素转换成其他形式或提取信息。

打印出集合中所有人的年龄:

personList.stream()
.map((person -> person.getAge()))
.forEach(System.out::println);

(6).sorted() 对元素进行排序

6. 终端操作

  1. forEach() 遍历流中每一个元素,会关闭流

    forEach 不能修改自己包含的本地变量值,也不能用 break/return 之类的关键字提前结束循环。

  2. findFirst(),findAny()

    查找操作,查找第一个、任何一个,返回的类型为Optional。常用于查询集中符合条件的元素,如果流是空的,则返回空大多数情况下,数据量不大的情况下,findAny()也会返回第一个元素,此时效果与findFirst()一致

  3. allMatch,anyMatch,noneMatch

    allMatch 要求Stream中所有元素都满足条件才返回true

    anyMatch, 只要有1个元素满足就返回true

    noneMatch 要求所有的元素都不满足条件才返回true

    
    //每个学生年纪都为18才返回true
    boolean flag = list.stream().allMatch(e -> e.getAge() == 18);
    //任意一个学生是18,则返回true
    boolean flag = list.stream().anyMatch(e -> e.getAge() == 18);
    //学生年纪没有一个是18 ,则返回true
    boolean flag = list.stream().noneMatch(e -> e.getAge() == 18);
    
  4. reduce:将整个数据流的值规约为一个值,其中count、min、max底层就是使用reduce,也可用于字符串连接

    // 字符串连接,concat = "ABCD"
    String concat = Stream.of("A", "B", "C", "D").reduce("", String::concat);
    // 集合累加求和,另一写法reduce(0,Integer::sum)
    int sum2=Stream.of(1,2,3,4,5).reduce((t,u)->t+u).get();
    //输出最大值,另一写法reduce(Integer::max)
    int max=Stream.of(1,2,3,4,5).reduce((t,u)-> t>=u? t:u).get();2>2个参数 T reduce(T identity, BinaryOperator<T> accumulator)
    多一个泛型T,实际上相对于在计算值的时候多一个初始化的值
    int sum3=Stream.of(1,2,3,4,5).reduce(0,(t,u)->t+u);
    
    1. min、max`最值操作:需要自定义比较器,返回数据流中最大、最小的值
    //查年纪最大的
    Optional<Student> max = list.stream().max(Comparator.comparing(Student::getAge));
    if (max.isPresent()) {Student student = max.get();
    }
    
  5. count : 返回Stream中元素的个数

  6. toArray数组操作:将数据流的元素转换成数组。

    List<String> list=Arrays.asList("a","b","c","a");     
    //返回数组 
    String[] newArr=list.stream().toArray(String[]::new);
    

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

a
//查年纪最大的
Optional max = list.stream().max(Comparator.comparing(Student::getAge));
if (max.isPresent()) {
Student student = max.get();
}


6. count : 返回Stream中元素的个数7. `toArray`数组操作:将数据流的元素转换成数组。```java
List<String> list=Arrays.asList("a","b","c","a");     
//返回数组 
String[] newArr=list.stream().toArray(String[]::new);

[外链图片转存中…(img-gkjGbjTk-1733555964258)]

相关文章:

JDK1.8

JDK1.8 1. Lamdba表达式 Lambda表达式是什么&#xff1f; Lambda是一个匿名函数&#xff0c;我们可以将Lambda表达式理解为一段可以传递的代码&#xff08;将代码像数据一样传递&#xff09;。使用它可以写出简洁、灵活的代码。作为一种更紧凑的代码风格&#xff0c;使java语…...

【jvm】讲讲jvm中的gc

目录 1. 说明2. 主要算法2.1 标记-清除算法2.2 复制算法2.3 标记-整理算法3. 主要回收器3.1 Serial GC3.2 Parallel GC3.3 CMS&#xff08;Concurrent Mark-Sweep&#xff09;GC3.4 G1&#xff08;Garbage-First&#xff09;GC 4. 触发条件4.1 Minor GC&#xff08;Young GC&am…...

Oracle 用户管理模式下的恢复案例-不完全恢复

1. 不完全恢复的几种常用方法 01. recover database using backup controlfile 如果丢失当前控制文件&#xff0c;用冷备份的控制文件恢复的时候&#xff0c;用来告诉 oracle&#xff0c;不要以 controlfile 中的 scn 作为恢复的终点&#xff1b; 02. recover database until …...

Leetcode经典题4--查找数组中的多数元素+Boyer-Moore 投票算法

题目描述&#xff1a; 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 输入输出示例 输入&#xff1a;nums [2,2,1,1,1,2,2] 输出…...

ubuntu20.04 如何使用 perf 性能分析工具 以及 hotspot 性能分析可视化工具?

官方文档&#xff1a;https://perfwiki.github.io/main/ 如何安装&#xff1a;https://askubuntu.com/questions/50145/how-to-install-perf-monitoring-tool 首先是安装 perf: sudo apt-get install linux-tools-common sudo apt-get install linux-tools-generic sudo apt-…...

Scala-隐式转换

系统自动完成的&#xff1a;把一种类型的数据转成了另一种类型的数据。 不是所有的类型都可以执行隐式转换 函数的参数类型 和 返回值类型是重要的&#xff0c;它约定了把什么类型转成什么类型 //张三的函数def getAge():Double{8.5}//函数名&#xff1a;tranform 不重要//函…...

基于Java和Vue开发的漫画阅读软件漫画阅读小程序漫画APP

前景分析 受众广泛&#xff1a;漫画的受众群体广泛&#xff0c;不仅限于青少年&#xff0c;还涵盖了成年人等多个年龄层和社会阶层。漫画文化在全球范围内的影响力不断扩大&#xff0c;未来漫画软件创业可以考虑全球市场的拓展。 市场需求大&#xff1a;数字化阅读趋势下&…...

租赁小程序的优势与应用场景解析

内容概要 租赁小程序&#xff0c;听起来是不是很酷&#xff1f;其实&#xff0c;它就是一个让你可以方便地租借各种高成本但用得不频繁的商品的平台。想象一下&#xff0c;当你需要租一件派对用的华丽小礼服&#xff0c;或是想体验一下超酷的运动器材&#xff0c;租赁小程序就…...

CC-Link IEFB转Modbus TCP协议网关(技术分享)

一&#xff0c;设备主要功能 捷米特JM-CCLKIE-TCP网关实现连接到CC-Link IE Field Basic总线中做为从站使用&#xff0c;连接到Modbus TCP总线中做为主站或从站使用。 应用广泛&#xff1a;捷米特JM-CCLKIE-TCP广泛应用于支持Modbus TCP接口的上位机、变频器、仪表、马保等等…...

开发手札:Win+Mac下工程多开联调

最近完成一个Windows/Android/IOS三端多人网络协同项目V1.0版本&#xff0c;进入测试流程了。为了方便自测&#xff0c;需要用unity将一个工程打开多次&#xff0c;分别是Win/IOS/Android版本&#xff0c;进行多角色联调。 在Win开发机上&#xff0c;以Windows版本为主版…...

SSM报错:表现层方法应该返回字符串,但是返回页面

在进行SSM项目时&#xff0c;后端表现层应该返回给前端字符串&#xff0c;但是却跳转页面 1.首先检查是否使用ResponseBody注解 ResponseBody注解 作用&#xff1a;将java对象转为json格式的数据。将controller的方法返回的对象通过适当的转换器转换为指定的格式之后&#xff0…...

Unity中使用Sqlite存储本地数据

sqlite-net sqlite下载页 我的环境&#xff1a;win11、unity团结1.3.4 1.下载sqlite-net&#xff0c;将SQLite.cs脚本导入Unity 2.下载各平台依赖项&#xff0c;如dll、aar等。导入Unity并设置 3.简单列子&#xff0c;打包测试 using System; using System.IO; using SQLi…...

微信直连:商户转账到零钱API开发报错:java.security.InvalidKeyException: Illegal key size

jdk版本 解决方案&#xff1a;下载jce_policy-8&#xff0c;替换jre下的 local_policy.jar 文件 替换jdk内的jre下的 替换jre下的 JDK 8u161 之后默认使用了不限制的Policy...

语言处理程序基础

逻辑运算 正规式 有限自动机 上下文无关文法 表达式&#xff08;前缀、后缀、中缀&#xff09; 将表达式&#xff08;a-b&#xff09;*&#xff08;c5&#xff09;构造成树的步骤为&#xff1a;括号不能出现在树中&#xff1b;按照表达式的计算顺序来依次构造&#xff01;&…...

deepsort复现报错TypeError: tuple indices must be integers or slices, not tuple 解决

deepsort复现中遇到的TypeError: tuple indices must be integers or slices, not tuple问题的解决-CSDN博客 以上为参考教程。 复现的时候出现这个报错&#xff0c;搞了好久试了好多方法&#xff0c;包括降 scikit-learn版本&#xff0c;都不行&#xff0c;最后终于找到这个博…...

「Mac畅玩鸿蒙与硬件42」UI互动应用篇19 - 数字键盘应用

本篇将带你实现一个数字键盘应用&#xff0c;支持用户通过点击数字键输入数字并实时更新显示内容。我们将展示如何使用按钮组件和状态管理来实现一个简洁且实用的数字键盘。 关键词 UI互动应用数字键盘按钮组件状态管理用户交互 一、功能说明 数字键盘应用将实现以下功能&…...

MSSQL SQLi Labs靶场 第一关 (手工版)

一.判断是否存在注入 输入http://172.16.0.87/less-1.asp?id1页面异常 加上闭合点&#xff1a;http://172.16.0.87/less-1.asp?id1--页面正常&#xff0c;说明存在注入 二.判断数据库类型 可通过以下Payload来探测当前站点是否是MSSQL数据库&#xff0c;正常执⾏说明后台数据…...

重磅更新:CnosDB 2.3.5.4 版本上线, 性能提升,问题修复一网打尽

&#x1f4e2; 重磅更新&#xff1a;CnosDB 2.3.5.4 版本上线, 性能提升&#xff0c;问题修复一网打尽 &#x1f4e2; 我们很高兴地向大家介绍最新版本的更新&#xff0c;以下是本次更新的主要内容&#xff1a; &#x1f539; 版本号&#xff1a;2.3.5.4 &#x1f539; 发布…...

后端-编辑按钮的实现

编辑一共要实现两步&#xff1a; 1.点击编辑蹦出来一个弹窗&#xff0c;此时需要回显&#xff0c;根据id查出来这条数据 2.修改某些值之后点击保存的时候调用修改的接口 根据id查询的时候正常操作 修改值的时候要注意一些问题 mapper层的Employee和impl层的接收实体不一样...

Python语言基础入门教程

Python是一种简单易学、功能强大的编程语言&#xff0c;非常适合初学者入门。本篇博客将带你从零开始&#xff0c;学习Python的一些基础知识&#xff0c;并通过详细分析和实例帮助你理解。 一、什么是Python&#xff1f; Python是一种高级编程语言&#xff0c;具有以下特点&am…...

verilog编程规范

verilog编程规范 文章目录 verilog编程规范前言一、代码划分二、verilog编码ABCDEFG 前言 高内聚&#xff0c;低耦合&#xff0c;干净清爽的代码 一、代码划分 高内聚&#xff1a; 一个功能一个模块干净的接口提取公共的代码 低耦合&#xff1a; 模块之间低耦合尽量用少量…...

Spring Boot 的启动原理

Spring Boot 是由 Pivotal 团队发布的一个开源框架&#xff0c;它基于 Spring 框架&#xff0c;旨在简化企业级应用程序的开发过程。与传统的 Spring 项目相比&#xff0c;Spring Boot 提供了一种更加简洁、高效的方式来构建和部署应用程序。其核心理念是“约定优于配置”和“自…...

Oracle 19C RU补丁升级,从19.7to19.25 -单机

1. 环境信息&#xff1a; 角色 数据库 IP地址 数据库版本 数据库名称 源端 单实例 172.30.21.191 19.7 hfzcdb 2. 安装准备 用rman备份数据库&#xff0c;再备份下oracle目录&#xff1a; 命令&#xff1a; tar zavf oracle.tar /oracle 19.25版本关于19C的补丁内…...

Web day08 项目实战(2)

目录 查询员工&#xff1a; 在EmpController层&#xff1a; 在pojo层&#xff1a; 在EmpServiceImpl 层中&#xff1a; 在dao层&#xff1a; 新增员工: pojo层&#xff1a; EmpController层&#xff1a; 在EmpServiceImpl 层中&#xff1a; 在EmpMapper层&#xff1a; …...

生命周期(vue2和vue3的生命周期对比)有哪些?

Vue.js 提供了一套完整的数据驱动和组件化思想&#xff0c;其生命周期钩子是开发者理解组件行为的关键。以下是 Vue 2 和 Vue 3 中生命周期钩子的对比&#xff1a; Vue 2 生命周期钩子 创建阶段 beforeCreate&#xff1a;实例初始化之前调用&#xff0c;此时 data 和 methods …...

智慧信息发系统——控件磁吸

//鍙悜涓婂惛 function fun_鎺т欢纾佸惛_璁&#xff04;畻(鐏典綋y,寮曞姏鍊&#xfffd;,閫夋嫨鍖哄煙,璁&#xff04;畻鍧愭爣绫诲瀷) {const 灞忓箷椤圭洰 document.querySelectorAll(閫夋嫨鍖哄煙);var 璺濈鎴戞渶杩憏 0;var 鏈€杩戜竴娆″紩鍔&#xfffd; 0…...

【时间序列预测】基于PyTorch实现CNN_LSTM算法

文章目录 1. CNN_LSTM模型概述2. 网络结构3. 完整代码实现4.模型解析4.1 CNN层4.2 ReLU层4.3 MaxPooling层4.4 LSTM层4.5 输出层4.6 前向传播 5. 总结 在时间序列预测任务中&#xff0c;CNN&#xff08;卷积神经网络&#xff09;和LSTM&#xff08;长短期记忆网络&#xff09;是…...

Android环境搭建

Android环境搭建 第一步&#xff1a;安装 Homebrew 执行以下命令来安装 Homebrew&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"检测是否安装成功&#xff1a; brew --version第二步&#xff1a;安装 No…...

HarmonyOS 5.0应用开发——Ability与Page数据传递

【高心星出品】 文章目录 Ability与Page数据传递Page向Ability传递数据Ability向Page传递数据 Ability与Page数据传递 基于当前的应用模型&#xff0c;可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。 使用EventHub进行数据通信&#xff1a;在基类Context中提供…...

【数据结构】顺序表

一、顺序表的基本概念 1.1 概念 顺序表是一种线性表的存储结构&#xff0c;其特点是&#xff1a;使用一段连续的存储空间存储线性表中的数据元素&#xff0c;通过数组实现&#xff0c;具有随机访问的能力。 可以把顺序表直接理解为数组&#xff0c;只不过这个数组里可以存各种类…...

光伏与储能软件有哪些?

随着技术的不断进步&#xff0c;光伏与储能的软件系统也层出不穷&#xff0c;为这一领域的发展提供了强有力的支持。 一、光伏设计软件 1、PVSyst 功能&#xff1a;这是一款全球广泛使用的光伏系统设计软件&#xff0c;支持光伏系统的模拟与设计&#xff0c;包括组件阵列、倾…...

AI周报(12.1-12.7)

AI应用-AI独立开发“小猫补光灯” 无论GitHub Copilot、Amazon CodeWhisperer&#xff0c;还是前面AI周报&#xff08;6.23-6.29&#xff09;Devv.ai&#xff0c;重在提高编码效率、提供编码补全和建议。小猫补光灯第一次让一个完全不会编程的产品经理&#xff0c;与AI协作&…...

windows 脚本批量管理上千台服务器实战案例

如果你们有接触服务器&#xff0c;都是知道服务器有BMC管理界面的&#xff0c;这几天我在做项目中&#xff0c;需要不断的开关机服务器&#xff0c;如果一两台服务器登录BMC界面重启服务器还好&#xff0c;如果服务器数量非常的庞大&#xff0c;成百上千台&#xff0c;我们不可…...

一级路由访问家里的二级路由设备 例如nas

家里升级千兆网&#xff0c;更换了光猫设备&#xff0c;家里走网线的话&#xff0c;只有100m速度&#xff0c;就直接用了光猫的无线&#xff0c;这次换的很顶&#xff0c;下载和打游戏也够用了&#xff0c;基本上没有网络波动。就客厅用了一个路由器&#xff0c;接了nas和摄像头…...

线程(二)——线程安全

如何理解线程安全&#xff1a; 多线程并发执行的时候&#xff0c;有时候会触发一些“bug”&#xff0c;虽然代码能够执行&#xff0c;线程也在工作&#xff0c;但是过程和结果都不符合我们的开发时的预期&#xff0c;所以我们将此类线程称之为“线程安全问题”。 例如&#xff…...

Altium Designer学习笔记 31 PCB布线优化_GND处理

基于Altium Designer 23学习版&#xff0c;四层板智能小车PCB 更多AD学习笔记&#xff1a;Altium Designer学习笔记 1-5 工程创建_元件库创建Altium Designer学习笔记 6-10 异性元件库创建_原理图绘制Altium Designer学习笔记 11-15 原理图的封装 编译 检查 _PCB封装库的创建Al…...

第四节、电机定角度转动【51单片机-TB6600驱动器-步进电机教程】

摘要&#xff1a;本节介绍用电机转动角度计算步骤&#xff0c;从而控制步进电机转角 一、 计算过程 1.1 驱动器接收一个脉冲后&#xff0c;步进电机转动一步&#xff0c;根据驱动器设置的细分值 计算一个脉冲对应电机转动的角度step_x s t e p x s t e p X … … ① step_{x…...

亚马逊云科技用生成式AI,向开发的复杂性动手了

生成式 AI、分布式扩展功能全面进化&#xff0c;还降价了。 同一天的发布&#xff0c;完全不同的方向。 今天凌晨&#xff0c;云计算巨头亚马逊云科技的 re:Invent 与大号创业公司 OpenAI 的发布「撞了车」。后者公布了一系列生成式 AI 应用&#xff0c;价格更贵、性能更强大&a…...

SharpDevelop IDE IViewContent.cs类

文件位置&#xff1a;IViewContent.cs /// <summary>/// IViewContent is the base interface for "windows" in the document area of SharpDevelop./// A view content is a view onto multiple files, or other content that opens like a document/// (e.…...

【工具变量】地级市城市全社会用电量数据(2006-2021年)

一、数据范围&#xff1a;覆盖中国300多个地级市 二、包含指标&#xff1a; 省份、地级市、年份、全社会用电量。 三、数据来源&#xff1a;国家电网查询数据。对于极大部分城市&#xff0c;国网售电量就是全社会用电量(往年的售电量和全社会用电量数据相同&#xff09;,此外…...

vue列表滚动动画效果

一、效果展示&#xff1a; 录屏2024-12-07 02.16.59 二、步骤&#xff1a; 1. 需要用<transition-group>包裹需要渲染的item列表 ⚠️注意&#xff1a;这里的:key"item.id"&#xff0c;必须要用id之类的&#xff0c;不能用index <transition-group name&qu…...

33.5 remote实战项目之设计prometheus数据源的结构

本节重点介绍 : 项目要求 通过remote read读取prometheus中的数据通过remote write向prometheus中写入数据 准备工作 新建项目 prome_remote_read_write设计prometheus 数据源的结构初始化 项目要求 通过remote read读取prometheus中的数据通过remote write向prometheus中写…...

Ceph文件存储

Ceph文件存储1.概念:数据以文件的形式存储在存储介质上&#xff0c;每个文件都有一个唯一的文件名并存储在一个目录结构中。提供方便的文件访问接口&#xff0c;支持多种文件操作&#xff0c;如创建、删除、读取、写入、复制等。用于存储和管理个人文件&#xff0c;如文档、图片…...

力扣-图论-5【算法学习day.55】

目录 前言 习题 1.移除可疑的方法 后言 前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键…...

Linux-音频应用编程

ALPHA I.MX6U 开发板支持音频&#xff0c;板上搭载了音频编解码芯片 WM8960&#xff0c;支持播放以及录音功能&#xff01;本章我们来学习 Linux 下的音频应用编程&#xff0c;音频应用编程相比于前面几个章节所介绍的内容、其难度有所上升&#xff0c;但是笔者仅向大家介绍 Li…...

SQL复杂查询功能介绍及示例

文章目录 1. 多表连接&#xff08;JOIN&#xff09;功能介绍应用场景示例查询及初始表格customers 表&#xff08;未查询前&#xff09;orders 表&#xff08;未查询前&#xff09;INNER JOIN 示例LEFT JOIN 示例 2. 子查询&#xff08;Subquery&#xff09;功能介绍应用场景示…...

Python使用Selenium自动实现表单填写之蛇年纪念币蛇钞预约(附源码,源码有注释解析,已测试可用

Python实现纪念币预约自动填写表单 声明:本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站…...

快速掌握HTML

目录 1. HTML文件的基本结构* 前端开发工具搭建* vscode的三个插件* 编写第一个html代码* 快速生成代码框架 *html特殊字符2. 双标签2.1 标题标签 h12.2 段落标签 p2.3 格式化标签2.4 超链接标签 a2.5 表格标签2.6 列表标签1. 无序列表&#xff1a;ul标签( 快捷键&#xff1a;u…...

Linux 音频驱动实验

音频是我们最常用到的功能&#xff0c;音频也是 linux 和安卓的重点应用场合。I.MX6ULL 带有 SAI接口&#xff0c;正点原子的 I.MX6ULL ALPHA 开发板通过此接口外接了一个 WM8960 音频 DAC 芯片&#xff0c;本章我们就来学习一下如何使能 WM8960 驱动&#xff0c;并且通过 WM89…...

【分布式】Redis分布式缓存

一、什么是Redis分布式缓存 Redis分布式缓存是指使用Redis作为缓存系统来存储和管理数据的分布式方案。在分布式系统中&#xff0c;多台服务器共同对外提供服务&#xff0c;为了提高系统的性能和可扩展性&#xff0c;通常会引入缓存来减轻数据库的压力。Redis作为一种高性能的…...