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

c#-LINQ与lambda表达式学习笔记

https://blog.csdn.net/m0_56259289/article/details/144134122

 static void Main(string[] args) //程序入口{int[] arr1 = new int[] { 1, 2, 3, 4, 5, 6, 7 };int[] arr2 = new int[] { 1, 2, 3, 4, 5, 6, 7 };var query1 = from n in arr1 select n;var query2 = from a in arr1from b in arr2select a + b;var query3 = from n in arr2 select n * 10;var query4 = from n in arr2select new{Id = n,name = n.ToString()};var query11 = from n in arr1where n < 3select n;}

class Student
{public string Name { get; set; }public int Age { get; set; }public string Class { get; set; }
}List<Student> students = new List<Student>
{new Student { Name = "Alice", Age = 20, Class = "A" },new Student { Name = "Bob", Age = 22, Class = "B" },new Student { Name = "Charlie", Age = 21, Class = "A" },new Student { Name = "David", Age = 23, Class = "B" },new Student { Name = "Eve", Age = 20, Class = "C" }
};var studentGroups = from s in studentsgroup s by s.Class into gselect new { Class = g.Key, Count = g.Count() };foreach (var group in studentGroups)
{Console.WriteLine($"Class: {group.Class}, Number of Students: {group.Count}");
}

方法调用where

public static bool IsEven(int n)
{return n % 2 == 0 ? true : false;
}static void Main(string[] args) //程序入口
{int[] arr = new int[] {1,2,3,4,5,6,7,8 };var query = from n in arrwhere IsEven(n)select n;foreach (var n in query){Console.WriteLine(n);}
}

let

int[] arr = new int[] {1,2,3,4,5,6,7,8 };
var query = from num in arrlet n = num % 2where n==0select num;foreach (var n in query)
{Console.WriteLine(n);}

orderby

var query = from n in arrwhere n > 1 && n < 6orderby n descendingselect n;

group by

int[] arr = new int[] {1,2,3,4,5,6,7,8 };
var query = from n in arrwhere n > 1 && n < 6group n by n % 2;foreach (var n in query)
{foreach (var j in n){Console.WriteLine(j);}}
int[] arr = new int[] {1,2,3,4,5,6,7,8 };
var query = from n in arrwhere n > 1 && n < 6group n by n % 2 into gfrom sn in gselect sn;foreach (var n in query)
{Console.WriteLine(n);  }

join

nt[] arr1 = new int[] {1,2,3,4,5,6,7,8 };int[] arr2 = new int[] { 1,4, 5, 6,8 };var query = from a in arr1where a < 7join b in arr2 on a equals bselect a;//将arr1和arr2数组连接,同时满足a,b相等的条件,其中b是arr2中的元素 

LINQ构架

IEnumerable  var 二者相等

IEnumerable<int> scoreQuery =from score in arr1where score > 2select score;var scoreQuery2 = from score in arr1where score > 2select score;

key

string[] langusges = { "java", "c#", "c++", "python", "vb" };
var query = from item in langusgesgroup item by item.Length into lengthgroupsorderby lengthgroups.Keyselect lengthgroups;
foreach (var n in query)
{Console.WriteLine(n.Key);  }

 

武学案例

 

 var master = new List<MartialArtsMaster>(){new MartialArtsMaster() { Id = 1, Name = "黄蓉", Age = 18, Menpai = "丐帮", Kungfu = "打狗棒法", Level = 9 },new MartialArtsMaster() { Id = 7, Name = "黄蓉2", Age = 18, Menpai = "丐帮", Kungfu = "打狗棒法", Level = 93 },new MartialArtsMaster() { Id = 2, Name = "洪七公", Age = 34, Menpai = "丐帮", Kungfu = "没有", Level = 4 },new MartialArtsMaster() { Id = 3, Name = "郭靖", Age = 54, Menpai = "黑帮", Kungfu = "细心打法", Level = 10 },new MartialArtsMaster() { Id = 4, Name = "任我行", Age = 76, Menpai = "明教", Kungfu = "葵花宝典", Level = 14 },new MartialArtsMaster() { Id = 5, Name = "东方不败", Age = 95, Menpai = "华山", Kungfu = "葵花宝典", Level = 20 },new MartialArtsMaster() { Id = 6, Name = "岳不群", Age = 26, Menpai = "华山", Kungfu = "葵花宝典", Level = 20 }};var kongfu = new List<kungfu>(){new kungfu() { kuongfuId = 1, kongfuName = "打狗棒法", Lethality = 90 },new kungfu() { kuongfuId = 2, kongfuName = "没有", Lethality = 95 },new kungfu() { kuongfuId = 3, kongfuName = "细心打法", Lethality = 50 },new kungfu() { kuongfuId = 4, kongfuName = "葵花宝典", Lethality = 99 }};var GaiBangMaster = from m in masterwhere m.Level > 8 && m.Menpai == "丐帮"select m;var GaiBangMethod = master.Where(m => m.Level > 8 && m.Menpai == "丐帮");string matserLevel = "查询丐帮中武力值大于8:";foreach(var num in GaiBangMaster){matserLevel = num.Id + " "+num.Name + " "+ num.Age + " " +num.Menpai +" "+ num.Kungfu +" "+ num.Level +"\n" ;Console.WriteLine(matserLevel);}foreach (var num in GaiBangMethod){matserLevel = num.Id + " " + num.Name + " " + num.Age + " " + num.Menpai + " " + num.Kungfu + " " + num.Level + "\n";Console.WriteLine(matserLevel);}
 var masterkongfumethod = master.SelectMany(k => kongfu, (m, k) => new { mt = m, kf = k }).Where(x => x.kf.Lethality > 90 && x.mt.Kungfu == x.kf.kongfuName).OrderBy(m => m.mt.Level).Select(m => m.mt + " " + m.mt.Name + " " + m.mt.Age + " " + m.mt.Menpai + "\n");var topmaster = from m in master
from k in kongfu
where k.kongfuName == m.kungfu
orderby m.leverl * k.lethality + m.age
select m.id + " " + m.Name + " " + m.age + " " + m.kunggu + " " + m.level;var topmaster = master.Join(kongfu, m => m.kungfu, k => k.kongfuName, (m, k) => new { m, k }).OrderBy(x => x.m.leverl * x.k.lethality + x.m.age).Select(x => $"{x.m.id} {x.m.Name} {x.m.age} {x.m.kunggu} {x.m.level}");

 .Select(x => new { id = x.Id, Name = x.Name, masterJongfu = x.Kungfu, Leverl = x.Level, Top = (++i) });这里的意思是并不想直接返回master对象,而是创建一个匿名对象,返回master的部分属性,和自己添加的属性

int i = 1;
var masterTop = master.Where(x => x.Level > 8).OrderByDescending(x => x.Level).Select(x => new { id = x.Id, Name = x.Name, masterJongfu = x.Kungfu, Leverl = x.Level, Top = (++i) });

案例

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
namespace studytest  //命名空间
{class Program //类{static void Main(string[] args) //程序入口{var master = new List<MartialArtsMaster>(){new MartialArtsMaster() { Id = 1, Name = "黄蓉", Age = 18, Menpai = "丐帮", Kungfu = "打狗棒法", Level = 9 },new MartialArtsMaster() { Id = 7, Name = "黄蓉2", Age = 18, Menpai = "丐帮", Kungfu = "打狗棒法", Level = 93 },new MartialArtsMaster() { Id = 2, Name = "洪七公", Age = 34, Menpai = "丐帮", Kungfu = "没有", Level = 4 },new MartialArtsMaster() { Id = 3, Name = "郭靖", Age = 54, Menpai = "黑帮", Kungfu = "细心打法", Level = 10 },new MartialArtsMaster() { Id = 4, Name = "任我行", Age = 76, Menpai = "明教", Kungfu = "葵花宝典", Level = 14 },new MartialArtsMaster() { Id = 5, Name = "东方不败", Age = 95, Menpai = "华山", Kungfu = "葵花宝典", Level = 20 },new MartialArtsMaster() { Id = 6, Name = "岳不群", Age = 26, Menpai = "华山", Kungfu = "葵花宝典", Level = 20 }};var kongfu = new List<kungfu>(){new kungfu() { kuongfuId = 1, kongfuName = "打狗棒法", Lethality = 90 },new kungfu() { kuongfuId = 2, kongfuName = "没有", Lethality = 95 },new kungfu() { kuongfuId = 3, kongfuName = "细心打法", Lethality = 50 },new kungfu() { kuongfuId = 4, kongfuName = "葵花宝典", Lethality = 99 },new kungfu() { kuongfuId = 5, kongfuName = "九阳真经", Lethality = 95 }};//test1var menpaiNum = master.Where(x => x.Menpai == "丐帮").OrderByDescending(x => x.Level).Select(x => new { Name = x.Name, Menpai = x.Menpai, kungfu = x.Kungfu, Level = x.Level, gg = "111" });foreach (var m in menpaiNum){Console.WriteLine(m.Name + " " + m.Menpai + " " + m.kungfu + " " + m.Level + " " + m.gg);}//test2var eqkungfuNum = master.Join(kongfu, m => m.Kungfu, k => k.kongfuName, (m, k) =>new { m.Name, m.Kungfu, k.kongfuName,k.Lethality });foreach(var m in eqkungfuNum){Console.WriteLine($"master: {m.Name},kungfu:{m.Kungfu}m.Lethality");}//lambda表达式int i = 1;var masterTop = master.Where(x => x.Level > 8).OrderByDescending(x => x.Level).Select(x => new { id = x.Id, Name = x.Name, masterKongfu = x.Kungfu, Leverl = x.Level, Top = (++i) });//LINQ经典int ii = 1;var KongfuTop = from k in kongfuwhere k.Lethality > 90orderby k.Lethality descendingselect new { KongfuId = k.kuongfuId, kongfuName = k.kongfuName, Lethality = k.Lethality, KongfuTop = (ii++) };//var masterLethalityTop = from m in masterTopjoin k in KongfuTop on m.masterKongfu equals k.kongfuNameorderby m.Leverl * k.Lethality descendingselect new { Id = m.id, Name = m.Name, kongfu = m.masterKongfu, Lever = m.Leverl, Kill = m.Leverl * k.Lethality };//var masterLethalityTopMethod =masterTop.Join(KongfuTop, m => m.masterKongfu, k => k.kongfuName, (m, k) =>new { id = m.id, Name = m.Name, kongfu = m.masterKongfu, Level = m.Leverl, Kill = m.Leverl * k.Lethality }).OrderByDescending(m => m.Kill);foreach (var ma in masterLethalityTop){Console.WriteLine(ma.Id + " " + ma.Name + " " + ma.kongfu + " " + ma.Lever + " " + ma.Kill + "\n");}foreach (var ma in masterLethalityTopMethod){Console.WriteLine(ma.id + " " + ma.Name + " " + ma.kongfu + " " + ma.Level + " " + ma.Kill + "\n");}}}
}

问题:$

  • $符号在字符串前面告诉 C# 编译器:这个字符串是一个带插值的字符串,即字符串内部可以包含变量或表达式。

问题 lambda

总结:

  • 为什么要用 .Select(x => new {...}) 而不是 Select(x)

  • 选择性返回字段:通过 Select(x => new {...}) 你可以选择性地返回 MartialArtsMaster 中的某些字段。例如,如果你只对 IdNameKungfuLevel 等信息感兴趣,可以只选择这些字段,而不返回整个对象。
  • 添加额外的属性:通过匿名类型,你还可以在查询中添加额外的属性,比如这里的 Top,它是基于其他字段计算出来的一个额外字段。
  • 避免暴露不需要的字段:如果你只关心某些字段,使用 Select 可以避免暴露整个对象的所有字段,减少不必要的数据传输。
  • Select(x => x) 会返回原始的 MartialArtsMaster 对象,包含所有属性。
  • Select(x => new { ... }) 通过创建一个匿名类型,可以返回特定字段,还可以进行加工,比如计算排名等。

列表add

master.Add(new MartialArtsMaster() { Id = 1, Name = "黄蓉", Age = 18, Menpai = "丐帮", Kungfu = "打狗棒法", Level = 9 });

 分组

 groupjoin

var mastergroup = kongfu.GroupJoin(master, k => k.kongfuName, m => m.Kungfu, (k, m) =>new { k.kuongfuId, k.kongfuName, k.Lethality, Count = m.Count() }).OrderByDescending(k => k.Count);
foreach (var kk in mastergroup)
{Console.WriteLine(kk.kuongfuId+kk.kongfuName+kk.Lethality+kk.Count);
}

groupby

 问题

1. from m in master

这部分指定了查询的源是 master 列表中的元素。每个元素 m 表示 MartialArtsMaster 类的一个实例。

2. group m by m.Menpai into g

这行代码是关键的分组操作:

  • group m by m.Menpai:表示按照每个 MartialArtsMaster 实例的 Menpai 属性进行分组。
  • into g:这部分将分组结果命名为 g,它代表一个分组后的集合。每个分组都会包含一个 Menpai 值及其对应的所有成员。

3. orderby g.Key

这部分是排序操作,作用是按 Menpai(即分组的依据)对分组后的结果进行排序:

  • g.Key:每个分组 g 都有一个 Key,它就是该分组依据的值。在本例中,g.Key 对应的就是 m.Menpai(即门派名称)。所以,orderby g.Key 就是按门派名称(Menpai)对分组结果进行升序排序。

    为什么要加上 orderby 呢?

    • orderby g.Key 让查询的结果按照 Menpai 字段排序。这样,可以确保结果按门派名称的字母顺序排列,易于查看。
    • 如果不加 orderby,则返回的分组顺序将是不确定的,通常是根据原始数据中分组的顺序来排序的,但这种顺序可能会导致数据不易理解或处理。

groupby问题 

var groupitems = from m in mastergroup m by m.Menpai into gorderby g.Keyselect new{menpai = g.Key,Count = g.Count()};var groupmethod = master.GroupBy(m => m.Menpai, (k, m) => new { menpai = k, count = m.Count() });

 

(k, m) => new { menpai = k, count = m.Count() }

  • 这是 GroupBy 的第二个参数,它是一个用于生成结果的投影(projection)函数。它的作用是为每个分组生成一个新的对象。
    • k:代表每个分组的键(即 m.Menpai 的值),这就是分组的依据。在这个例子中,k 是每个 Menpai
    • m:代表分组中的元素集合。它是一个集合,包含了所有具有相同 Menpai 的 master 元素。

3. menpai = k

  • 在生成新的匿名对象时,menpai = k 将分组的键 k 赋值给 menpai 属性。因为 k 是我们用来分组的依据(即门派),所以 menpai 就代表该分组的门派名称。

为什么 menpai = k 而不能使用 menpai = m.Menpai

  • 原因m 在这里代表的是分组后的元素集合(即一组有相同 Menpai 值的元素)。所以,m 是一个集合,不能直接使用 m.Menpai,因为 m 是一个包含多个元素的集合,而不是单个元素。

  • kGroupBy 方法的分组键,它代表了当前分组的标识。在这个例子中,k 对应的是每个分组的 Menpai 值,而这个值是每个分组的共同属性。因此,menpai = k 赋值给 menpai 属性是正确的,它表示该分组的 Menpai

如果你使用 menpai = m.Menpai,会发生编译错误,因为 m 是一个集合(IEnumerable 类型),它本身并没有 Menpai 属性。你需要使用分组的键 k 来获取每个分组的 Menpai 属性。

量词

 var any = master.Any(m => m.Menpai == "丐帮");Console.WriteLine(any + "\n");var all = master.All(m => m.Menpai == "丐帮");Console.WriteLine(all + "\n");var ouyangfeng = new MartialArtsMaster { Id = 1, Name = "黄蓉", Age = 18, Menpai = "丐帮", Kungfu = "打狗棒法", Level = 9 };var huangrong = master[0];var isouyangfeng = master.Contains(ouyangfeng);var ishuangrong = master.Contains(huangrong as MartialArtsMaster);Console.WriteLine(isouyangfeng +"\n");Console.WriteLine(ishuangrong);

分页 

    int pageSize = 2;int pageNum =(int) Math.Ceiling(master.Count() /(double) pageSize);Console.WriteLine(master.Count + " " + pageNum + " " + pageSize + "\n");for( i = 0; i < pageNum; i++){var pageMaster = (from m in masterjoin k in kongfu on m.Kungfu equals k.kongfuNameorderby m.Level * k.Lethality descendingselect new{m.Name,m.Menpai,m.Kungfu,m.Level,k.Lethality,kill = m.Level * k.Lethality}).Skip(i * pageSize).Take(pageSize);Console.WriteLine("姓名 门派武功 杀伤力 修炼等级 总武力");foreach(var m in pageMaster){Console.WriteLine(m.Name + " " + m.Menpai + " " + m.Kungfu + " " + m.Lethality + " " + m.kill+"\n");}}}for (i = 0; i < pageNum; i++){var pageMaster = master.Join(kongfu, m => m.Kungfu, k => k.kongfuName,(m,k) => new{m.Name,m.Menpai,m.Kungfu,m.Level,k.Lethality,kill = m.Level * k.Lethality}).OrderByDescending(x => x.Level * x.Lethality).Skip(i * pageSize).Take(pageSize);
  1. .Skip(i * pageSize)

    • 这个方法跳过查询结果中的前 i * pageSize 条记录。
    • i 表示当前页的索引,从 0 开始。
    • pageSize 表示每页显示的记录数。
    • 所以,.Skip(i * pageSize) 会跳过前面 i * pageSize 条数据,以确保你从第 i + 1 页开始加载数据。
  2. .Take(pageSize)

    • 这个方法会从跳过的记录之后,取出接下来的 pageSize 条记录。
    • 这样,每一页就会获取到 pageSize 条数据。

集合 

 var itemintersect = (from m in masterwhere m.Menpai == "明教" || m.Menpai == "丐帮"select m).Intersect(from m in master where m.Kungfu == "葵花宝典" select m);var itemmethod = master.Where(m => m.Menpai == "明教" || m.Menpai == "丐帮").Intersect(master.Where(m => m.Kungfu == "葵花宝典"));foreach( var m in itemmethod){Console.WriteLine(m.Name + " " + m.Menpai + " "+ m.Kungfu);}

合计

 int[] arr = new int[] { 1, 2, 3, 4 };int xx = arr.Aggregate((prod, n) => prod + n);int y = arr.Aggregate(0, (prod, n) => prod + n);int z = arr.Aggregate(0, (prod, n) => prod + n, r => r * 2);Console.WriteLine(xx +" " + y+" " +z +" ");

相关文章:

c#-LINQ与lambda表达式学习笔记

https://blog.csdn.net/m0_56259289/article/details/144134122 static void Main(string[] args) //程序入口{int[] arr1 new int[] { 1, 2, 3, 4, 5, 6, 7 };int[] arr2 new int[] { 1, 2, 3, 4, 5, 6, 7 };var query1 from n in arr1 select n;var query2 from a in arr…...

数据库基础二(数据库安装配置)

打开MySQL官网进行安装包的下载 https://www.mysql.com/ 接着找到适用于windows的版本 下载版本 直接点击下载即可 接下来对应的内容分别是&#xff1a; 1&#xff1a;安装所有 MySQL 数据库需要的产品&#xff1b; 2&#xff1a;仅使用 MySQL 数据库的服务器&#xff1b; 3&a…...

Word 插入图片会到文字底下解决方案

一、现象描述 正常情况下&#xff0c;我们插入图片都是这样的。 但有时突然会这样&#xff0c;插入的图片陷于文字底部。 二、网上解决方案 网上有教程说&#xff0c;修改图片布局选项&#xff0c;从嵌入型改成上下型环绕。改完之后确实有用&#xff0c;但是需要手动拖动图片…...

有没有什么免费的AI工具可以帮忙做简单的ppt?

互联网各领域资料分享专区(不定期更新): Sheet 正文 1. 博思AIPPT 特点:专为中文用户设计,支持文本/文件导入生成PPT,内置海量模板和智能排版功能,涵盖商务、教育等多种场景。可一键优化布局、配色,并集成AI绘图功能(文生图/图生图)。适用场景:职场汇报、教育培训、商…...

实战-使用 Playbook 批量部署多台 LAMP 环境

实战-使用 Playbook 批量部署多台 LAMP 环境 playbooks 使用步骤 playbook 是一个不同于使用 ansible 命令行执行方式的模式&#xff0c;功能更强大更灵活。 1、在 playbooks 中定义任务&#xff1a; - name&#xff1a; task description #任务描述信息 module_name: modul…...

CSS—引入方式、选择器、复合选择器、文字控制属性、CSS特性

目录 CSS 1.引入方式 2.选择器 3.复合选择器 4.文字控制属性 5.CSS特性 CSS 层叠样式表&#xff0c;是一种样式表语言&#xff0c;用来描述HTML文档的呈现 书写时一般按照顺序&#xff1a;盒子模型属性—>文字样式—>圆角、阴影等修饰属性 1.引入方式 引入方式方…...

Spring 源码硬核解析系列专题(十):Spring Data JPA 的 ORM 源码解析

在前几期中,我们从 Spring 核心到 Spring Boot、Spring Cloud、Spring Security 和 Spring Batch,逐步揭示了 Spring 生态的多样性。在企业级开发中,数据访问是不可或缺的部分,而 Spring Data JPA 通过简化 JPA(Java Persistence API)操作,成为主流的 ORM 框架。本篇将深…...

爬虫和逆向教程-专栏介绍和目录

文章目录 一、爬虫基础和进阶二、App数据采集三、爬虫项目四、爬虫面试 本专栏为爬虫初学者和进阶开发者量身定制的爬虫和逆向学习园地。为你提供全面而深入的爬虫和逆向技术指导&#xff0c;从入门到精通&#xff0c;从基础理论到高级实战&#xff0c;助你在数据的海洋中畅游&…...

Lua | 每日一练 (4)

&#x1f4a2;欢迎来到张胤尘的技术站 &#x1f4a5;技术如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 Lua | 每日一练 (4)题目参考答案线程和协程调度方式上…...

【折线图 Line】——1

🌟 解锁数据可视化的魔法钥匙 —— pyecharts实战指南 🌟 在这个数据为王的时代,每一次点击、每一次交易、每一份报告背后都隐藏着无尽的故事与洞察。但你是否曾苦恼于如何将这些冰冷的数据转化为直观、吸引人的视觉盛宴? 🔥 欢迎来到《pyecharts图形绘制大师班》 �…...

大白话前端性能优化,常见方法有哪些?

大白话前端性能优化&#xff0c;常见方法有哪些&#xff1f; 咱来唠唠前端性能优化&#xff0c;其实就是想办法让网页打开得更快、用起来更流畅&#xff0c;就跟给汽车做保养让它跑得更顺溜一样。下面详细说说常见的优化方法&#xff1a; 压缩代码 CSS 压缩&#xff1a;CSS …...

IP属地是通过卫星定位的吗?如何保护用户隐私

在数字时代&#xff0c;网络空间成为了人们日常生活不可或缺的一部分。随着社交媒体、在线服务等平台的兴起&#xff0c;用户IP属地信息的重要性日益凸显。然而&#xff0c;关于IP属地是如何确定的&#xff0c;尤其是是否通过卫星定位这一问题&#xff0c;却常常引发公众的疑问…...

Vue3+Node/Express支付宝沙箱支付与确认支付

Vue3Node/Express支付宝沙箱支付与确认支付 支付宝沙箱配置进入沙箱选择自定义密钥 密钥工具下载生成密钥格式转换 自定义密钥设置Express安装依赖项目目录创建alipay.js请求&#xff08;打开支付&#xff09;代码router/pay.jsapp.js 前端代码前端封装接口前端调用 实现支付查…...

什么是大语言模型

大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;是一种基于深度学习技术的人工智能模型&#xff0c;旨在理解和生成人类语言。以下是大语言模型的详细介绍&#xff1a; 一、基本概念 大语言模型通常包含数百亿甚至数千亿个参数&#xff0c;通过在海量…...

本地部署Embedding模型API服务的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…...

postgresql postgis扩展相关

项目 下载地址 http://rpmfind.net/linux/rpm2html/search.php?queryprotobuf(x86-64) Postgis Index of /postgis/source/ proj4 Index of /proj/ geos Index of /geos/ libxml2 ftp://xmlsoft.org/libxml2/ Index of /sources Json-c Releases json-c/json-c G…...

FFmpeg-chapter3-读取视频流(原理篇)

ffmpeg网站&#xff1a;About FFmpeg 1 库介绍 &#xff08;1&#xff09;libavutil是一个包含简化编程函数的库&#xff0c;包括随机数生成器、数据结构、数学例程、核心多媒体实用程序等等。 &#xff08;2&#xff09;libavcodec是一个包含音频/视频编解码器的解码器和编…...

入门基础项目(SpringBoot+Vue)

文章目录 1. css布局相关2. JS3. Vue 脚手架搭建4. ElementUI4.1 引入ElementUI4.2 首页4.2.1 整体框架4.2.2 Aside-logo4.2.3 Aside-菜单4.2.4 Header-左侧4.2.5 Header-右侧4.2.6 iconfont 自定义图标4.2.7 完整代码 4.3 封装前后端交互工具 axios4.3.1 安装 axios4.3.2 /src…...

C#调用CANoeCLRAdapter.dll文章(二)

一、引言 在上一篇指南中&#xff0c;我们介绍了如何通过C#调用CANoeCLRAdapter.dll实现基础功能&#xff0c;包括COM接口操作、DLL导入和PANL面板集成。本文将进一步探讨高级功能开发&#xff0c;涵盖事件驱动编程、CAPL脚本双向通信以及异步任务处理&#xff0c;帮助开发者构…...

ai大模型自动化测试-TensorFlow Testing 测试模型实例

AI大模型自动化测试是确保模型质量、可靠性和性能的关键环节,以下将从测试流程、测试内容、测试工具及测试挑战与应对几个方面进行详细介绍: 测试流程 测试计划制定 确定测试目标:明确要测试的AI大模型的具体功能、性能、安全性等方面的目标,例如评估模型在特定任务上的准…...

QT——c++界面编程库

非界面编程 QT编译的时候&#xff0c;依赖于 .pro 配置文件&#xff1a; SOURCES: 所有需要参与编译的 .cpp 源文件 HEADERS:所有需要参与编译的.h 头文件 QT&#xff1a;所有需要参与编译的 QT函数库 .pro文件一旦修改&#xff0c;注意需要键盘按 ctrls 才能加载最新的配置文…...

postman--接口测试工具安装和使用教程

postman–接口测试工具 postman是一款支持http协议的接口调试与测试工具&#xff0c;其主要特点就是功能强大&#xff0c;使用简单且易用性好 。 无论是开发人员进行接口调试&#xff0c;还是测试人员做接口测试&#xff0c;postman都是我们的首选工具之一 。 下面先通过一张…...

如何用python画一棵分形树

这个代码会生成一个彩色的分形树图案&#xff0c;可以通过调整draw_tree函数中的参数来改变树的形状和大小 import turtle import random# 递归函数绘制分形树 def draw_tree(branch_len, t):if branch_len > 5:t.color(random.choice(colors))t.pensize(branch_len / 10)t…...

【leetcode】二分查找专题

文章目录 1.二分查找1.题目2.解题思路3. 解题代码 2.在排序数组中查找元素的第一个和最后一个位置1.题目2.算法原理3. 代码 3.x的平方根1.题目2.代码 4.搜索插入位置1.题目2.解题思路3.解题代码 5.山脉数组的索引1.题目2.解题思路3. 代码 6.寻找峰值1.题目2.解题思路3.代码 7. …...

深度学习笔记17-马铃薯病害识别(VGG-16复现)

目录 一、 前期准备 1. 设置GPU 2. 导入数据 二、手动搭建VGG-16模型 1. 搭建模型 三、 训练模型 1. 编写训练函数 3. 编写测试函数 4. 正式训练 四、 结果可视化 1. Loss与Accuracy图 2. 指定图片进行预测 3. 模型评估 前言 &#x1f368; 本文为&#x1f517;365天深度学习训…...

【LeetCode】131.分割回文串

目录 题目描述输入输出示例及数据范围思路C 实现 题目描述 这道题目来自 LeetCode 131. 分割回文串。 题目描述如下&#xff1a; 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 输入输出示例及数据…...

【AIGC系列】5:视频生成模型数据处理和预训练流程介绍(Sora、MovieGen、HunyuanVideo)

AIGC系列博文&#xff1a; 【AIGC系列】1&#xff1a;自编码器&#xff08;AutoEncoder, AE&#xff09; 【AIGC系列】2&#xff1a;DALLE 2模型介绍&#xff08;内含扩散模型介绍&#xff09; 【AIGC系列】3&#xff1a;Stable Diffusion模型原理介绍 【AIGC系列】4&#xff1…...

基于C++“简单且有效”的“数据库连接池”

前言 数据库连接池在开发中应该是很常用的一个组件&#xff0c;他可以很好的节省连接数据库的时间开销&#xff1b;本文基使用C实现了一个简单的数据库连接池&#xff0c;代码量只有400行左右&#xff0c;但是压力测试效果很好&#xff1b;欢迎收藏 关注&#xff0c;本人将会…...

vulnhub靶场【kioptrix-4】靶机

前言 靶机&#xff1a;kioptrix-4&#xff0c;IP地址为192.168.1.75&#xff0c;后期IP地址为192.168.10.8 攻击&#xff1a;kali&#xff0c;IP地址为192.168.1.16&#xff0c;后期IP地址为192.168.10.6 都采用VMware虚拟机&#xff0c;网卡为桥接模式 这里的靶机&#xf…...

科普:ROC AUC与PR AUC

在评价二分类模型性能时&#xff0c;有许多评价指标&#xff0c;其中&#xff0c;有一对是用面积AUC&#xff08;Area Under the Curve&#xff09;做评价的&#xff1a;ROC AUC与PR AUC 本文我们对ROC AUC与PR AUC进行多维度对比分析&#xff1a; 一、定义与核心原理 维度RO…...

服务器IPMI用户名、密码批量检查

背景 大规模服务器部署的时候&#xff0c;少不了较多的网管和监测平台&#xff0c;这些平台会去监控服务器的性能、硬件等指标参数&#xff0c;为了便于管理和控制&#xff0c;则需要给服务器IPMI带外管理添加较多的用户&#xff0c;这就需要对较多的服务器检查所对应的IPMI用…...

51单片机中reg52.h与regx52.h在进行位操作时的不同

reg52.h中不能使用例如 P2_0;这样的定义 而只能使用 P2^0;这样的定义 但是都不可以对位进行直接赋值操作&#xff1b; 而 regx52.h中可以使用 P2_0和P2^0&#xff1b;但是只有使用下划线的才可以对位进行赋值操作 例如P2_0 1; 但不可以是P2^0 1; 在 C 语言中&#xff0c;…...

Apollo Cyber 学习笔记

目录 0 Introduction What Why Advantage 1 Example 2 Concept 3 Flow Chart 4 Module 4.1 Transport 4.1.1 Share Memory 4.1.1.1 Segment 4.1.1.1.1 State 4.1.1.1.2 Block 4.1.1.1.3 Common 4.1.1.2 Notifier 4.1.1.2.1 ConditionNotifier 4.1.1.2.2 Multi…...

【Electron入门】进程环境和隔离

目录 一、主进程和渲染进程 1、主进程&#xff08;main&#xff09; 2、渲染进程&#xff08;renderer&#xff09; 二、预加载脚本 三、沙盒化 为单个进程禁用沙盒 全局启用沙盒 四、环境访问权限控制&#xff1a;contextIsolation和nodeIntegration 1、contextIsola…...

拉链表介绍

拉链表 是处理 缓慢变化维&#xff08;SCD&#xff09; 的一种常用方法&#xff0c;特别适用于需要保留历史记录的场景。以下是拉链表的详细说明及实现方法&#xff1a; 1. 什么是拉链表&#xff1f; 拉链表是一种用于记录维度数据历史变化的表结构&#xff0c;通过 开始时间 …...

Spring Boot 日志配置与常见问题解析(详解)

目录 Spring Boot 日志配置与常见问题解析引言什么是日志&#xff1f;日志的重要性日志使用打印日志 日志框架介绍日志格式的说明⽇志级别日志级别的分类日志级别的使用 Spring Boot 日志配置1. 设置日志级别和格式2. 配置日志收集器3. 查看和分析日志4.日志的持久化5.设置日志…...

-bash: lsof: command not found

一、问题说明 执行如下命令时报错&#xff1a; # lsof |grep deleted > deleted_file -bash: lsof: command not found二、处理方法 # yum -y install lsof安装完成后可成功执行上面的命令。...

PC 端连接安卓手机恢复各类数据:安装、操作步骤与实用指南

软件介绍 这款用于恢复安卓手机数据的软件&#xff0c;虽运行在 PC 端&#xff0c;却专为安卓手机数据恢复打造&#xff0c;使用时得用数据线把手机和电脑连接起来。它的功能相当强大&#xff0c;能帮你找回安卓手机里已删除的短信、联系人、通话记录、文档&#xff0c;还有照…...

ES、OAS、ERP、电子政务、企业信息化(高软35)

系列文章目录 ES、OAS、ERP、电子政务、企业信息化 文章目录 系列文章目录前言一、专家系统&#xff08;ES&#xff09;二、办公自动化系统&#xff08;OAS&#xff09;三、企业资源规划&#xff08;ERP&#xff09;四、典型信息系统架构模型1.政府信息化和电子政务2.企业信息…...

android智能指针android::sp使用介绍

android::sp 是 Android 中的智能指针&#xff08;Smart Pointer&#xff09;的实现&#xff0c;用于管理对象的生命周期&#xff0c;避免手动管理内存泄漏等问题。它是 Android libutils 库中重要的一部分&#xff0c;常用于管理继承自 android::RefBase 的对象。 与标准库中…...

推荐一款最新开源,基于AI人工智能UI自动化测试工具!支持自然语言编写脚本!

随着互联网技术的飞速发展&#xff0c;Web应用越来越普及&#xff0c;前端页面也越来越复杂。为了确保产品质量&#xff0c;UI自动化测试成为了开发过程中不可或缺的一环。然而&#xff0c;传统的UI自动化测试工具往往存在学习成本高、维护困难等问题。特别是UI 自动化脚本里往…...

DeepSeek05-大模型WebUI

一、说明&#xff1a; 将DeepSeek部署到前台Web界面的方法主要有以下几种推荐方案&#xff0c;涵盖开源工具、第三方客户端及特定场景适配方案&#xff1a; Open WebUIChatbox AICherry StudioSillyTavern 二、Open WebUI 安装配置教程 特点&#xff1a;Open WebUI 是一个开…...

自然语言处理NLP入门 -- 第八节OpenAI GPT 在 NLP 任务中的应用

在前面的学习中&#xff0c;我们已经了解了如何使用一些经典的方法和模型来处理自然语言任务&#xff0c;如文本分类、命名实体识别等。但当我们需要更强的语言生成能力时&#xff0c;往往会求助于更先进的预训练语言模型。OpenAI 旗下的 GPT 系列模型&#xff08;如 GPT-3、GP…...

FFmpeg av_read_frame 和iOS系统提供的 AVAudioRecorder 实现音频录制的区别

1. 第一种方式:使用 FFmpeg 的 av_read_frame 特点 底层实现:基于 FFmpeg,这是一个强大的多媒体处理库,直接操作音频流。灵活性:非常灵活,可以处理多种音频格式、编解码器和输入设备。复杂性:需要手动管理音频流、数据包(AVPacket)、内存释放等,代码复杂度较高。跨平…...

【区块链】深入理解区块链中的 Gas 机制

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 深入理解区块链中的 Gas 机制一、Gas 的基本概念1.1 为什么需要 Gas&#xff1f…...

2020 年英语(一)考研真题 笔记(更新中)

Section I Use of English&#xff08;完型填空&#xff09; 原题 Directions&#xff1a;Read the following text. Choose the best word (s) for each numbered blank and mark A, B, C or D on the ANSWER SHEET. (10 points) Even if families are less likely to si…...

mamba_ssm和causal-conv1d详细安装教程

1.前言 Mamba是近年来在深度学习领域出现的一种新型结构&#xff0c;特别是在处理长序列数据方面表现优异。在本文中&#xff0c;我将介绍如何在 Linux 系统上安装并配置 mamba_ssm 虚拟环境。由于官方指定mamba_ssm适用于 PyTorch 版本高于 1.12 且 CUDA 版本大于 11.6 的环境…...

leetcode-442.数组中重复的数据

leetcode-442.数组中重复的数据 文章目录 leetcode-442.数组中重复的数据1.题目描述&#xff1a;数组中重复的数据2.第一次代码提交&#xff1a;(不符合仅使用常量额外空间)3.最终代码提交&#xff1a;只使用常数额外空间、时间复杂度为 O(n) 的做法&#xff0c;即“标记法” 1…...

UniApp 按钮组件 open-type 属性详解:功能、场景与平台差异

文章目录 引言一、open-type 基础概念1.1 核心作用1.2 通用使用模板 二、主流 open-type 值详解2.1 contact - 客服会话功能说明平台支持代码示例 2.2 share - 内容转发功能说明平台支持注意事项 2.3 getUserInfo - 获取用户信息功能说明平台支持代码示例 2.4 getPhoneNumber -…...

Android13修改多媒体默认音量

干就完了! 设置音量为最大音量,修改如下: /framework/base/media/java/android/media/AudioSystem.java/** hide */public static int[] DEFAULT_STREAM_VOLUME new int[] {4, // STREAM_VOICE_CALL7, // STREAM_SYSTEM5, // STREAM_RING-5, // STREAM_MUSIC15, // STREAM…...