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

python Numpy-数组

目录

Numpy:

一、Ndarray

 1 定义

2 数组的属性方法

    2.1 数组的维度:np.ndarray.shape

    2.2 元素的类型:np.ndarray.dtype

    2.3 数组元素的个数:np.ndarray.size 

    2.4 转置

    3 ndarray 所存储元素的数据类型     

    4 数组创建

    4.1 arrange函数

4.2 np.zeros函数 

4.3 np.ones函数

5 数组操作

5.1 numpy.reshape 

5.2 numpy.ndarray.flat 

5.3 numpy.ndarray.flatten    

5.4 numpy.ravel 

5.5 掩码操作

5.6 多维数组的切片

5.7 二维数组的组合、拆分     

5.7.1 垂直/水平方向组合拆分

5.7.2 对数组填充

5.7.3 对多维数组组合

    6 列表和数组互相转化

Numpy:

(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,
此外也针对数组运算提供大量的数学函数库,整合 C/C++/Fortran 代码的工具.
是一个运行速度非常快的数学库,主要用于数组计算,比python自带的列表运行要快. 
应用:
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用,
这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包。
SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)

一、Ndarray

 1 定义

    Narray:是一系列形同类型的数组的集合,以下标0开始索引,遍历集合中元素
    即同类型元素的多维数组
    语法:
    numpy.array(object, dtype=None, copy=True, order=None, subok=Flase, ndmin=0) 
    object:数组 
    dtype:数组元素的数据类型,可选 
    copy:对象是否需要复制,可选 
    order:创建数组的方式,c为行方向,F为列方向,A为任意方向(默认) 
    subok:默认返回一个与几类类型一致的数组
    ndmin:指定生成数组的最小维度 

2 数组的属性方法

    shape - 维度
    dtype - 元素类型
    size - 元素数量
    ndim - 维数,len(shape)
    itemsize - 元素字节数
    nbytes - 总字节数 = size x itemsize 
    real - 复数数组的实部数组
    imag - 复数数组的虚部数组
    T - 数组对象的转置视图
    flat - 扁平迭代器

    2.1 数组的维度:np.ndarray.shape

    a = np.array( 
    [
        # 第一页(第一个通道)
        [[1,2,3],   #第一页 第一行
         [4,5,6],   #第一页 第二行 
         [4,5,7]], 
        # 第二页(第二个通道) 
        [[5,6,7],  #第二页 第一行
         [7,8,9],  #第二页 第二行 
         [4,5,8]]     
    ])
    print(a.shape)  # (2,3,3)  2 多少页(几个通道)  3 每一页有多少行  3 每行有多少个元素(多少列) 

    2.2 元素的类型:np.ndarray.dtype

    print(a.dtype) #int64

    2.3 数组元素的个数:np.ndarray.size 

    返回数组总的元素个数

    print(a.size) # 18

    2.4 转置

    a = np.arange(1,7).reshape(2, 3)  # [[1,2,3],[4,5,6]]  2行3列
    a = a.T      # [[1,2],[3,4],[5,6]]  变为3行2列 
   

    3 ndarray 所存储元素的数据类型     

    类型名                       类型表示符                                        字符码  
    布尔类型                       bool_                                                 ? 
    有符号整型      int8(-128~127)/int16/int32/int64                 i1/i2/i4/i8    
    无符号整数型  uint8(0~255)/uint16/uint32/uint64              u1/u2/u4/u8
    浮点型             float16/float32/float64                                f2/f4/f8 
    复数型             complex64/complex128                             c8/c16
    字串型             str_,每个字符用32位Unicode编码表示    U<字符数>
    日期类型          np.datetime64                       M8[Y] M8[M] M8[D] M8[h] M8[m] M8[s]
    bool_有效值:True, False  逻辑表达式的结果也是布尔类型,结果为真为True,结果为假,为False
   

    4 数组创建

    4.1 arrange函数

    语法:   
    numpy.arange(start, stop, step, dtype=None) # 创建等差数组
    start:起始值,默认为 0 
    stop:结束值(不包含)
    step:步长,默认为 1 
    dtype:数组的数据类型
    例:
    a = np.arange(0,5,2) 数组内容[0, 2, 4] 

4.2 np.zeros函数 

    语法:
    np.zeros(数组元素个数, dtype='类型')
    # 创建值全为0的数组
    例:
    import numpy as np
    # 创建值全为0的 并包含10个元素的数组
    a = np.zeros(10) 
    print(a)   #输出: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] 
    print(type(a))    #  <class 'numpy.ndarray'> 
    print(type(a[0])) #  <class 'numpy.float64'>

4.3 np.ones函数

语法: 
    np.ones(数组元素个数, dtype='类型')   创建值全为1的数组
    例:
    import numpy as np
    # 创建值全为1的、包含10个元素的数组
    a = np.ones(10)
    print(a)   #输出: [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] 
    print(type(a))      # <class 'numpy.ndarray'>
    print(type(a[0]))   # <class 'numpy.float64'>

5 数组操作

5.1 numpy.reshape 

定义:不改变数据的条件下修改形状 
        语法:
        numpy.reshape(arr, newshape, order='C')
        注意:修改后得到的数组和原数组共享存储区
        arr:要修改形状的数组 
        newshape:整数或者整数数组,新的形状应当兼容原有形状 
        order:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'k' -- 元素在内存中的出现顺序
        例:  
        import numpy as np 
        a = np.arange(8) 
        print (a)    
        b = a.reshape(4,2) 
        print (b) 
        # 输出 a  [0 1 2 3 4 5 6 7] 
        # b [[0 1] 
        #    [2 3] 
        #    [4 5] 
        #    [6 7]] 

5.2 numpy.ndarray.flat 

       定义:是一个数组元素迭代器,可以通过flat访问数组中的每个元素
        例:
        import numpy as np 
        a = np.arange(8) 
        print (a) 
        b = a.reshape(4,2) 
        for row in b: 
            print (row, end = " ")  # end = " "  表示打印以空格结束,默认是换行符
        print() 
        #对数组中每个元素都进行处理,可以使用flat属性,该属性是一个数组元素迭代器:
        for element in b.flat: 
            print (element,end = " ") 
        # 输出 
        [0 1] [2 3] [4 5] [6 7]
        0 1 2 3 4 5 6 7

5.3 numpy.ndarray.flatten    

        定义:返回一份数组拷贝,对拷贝所做的修改不会影响原始数组
        语法:ndarray.flatten(order='C') 
        注意:修改后得到的数组和原数组独立存储区,单一修改,对另一方没有影响
        例:
        import numpy as np
        a = np.arange(8)
        c = a.reshape(2,2,2)  # c = [[[0,1],[2,3]],[[4,5],[6,7]]] 
        e = c.flatten()
        print(e) 
        a += 10
        print(a, e, sep='\n') # sep 表示a和e中间用换行符间隔打印 
        # 输出:
        #[11 32 13 14 15 16 17 18] 
        #[ 1 22  3  4  5  6  7  8]
   

5.4 numpy.ravel 

定义:直接修改原数组维度,改成一维(又叫扁平化操作)    
        语法:numpy.ravel(a, order='C')           
        注意:修改后得到的数组和原数组共享存储区
        例:    
        import numpy as np 
        a = np.arange(8)
        c = a.reshape(2,2,2)  # c = [[[0,1],[2,3]],[[4,5],[6,7]]] 
        c += 10
        e = c.ravel() 
        print(c, e, sep='\n') # sep 表示a和e中间用换行符间隔打印
        # 输出:         
        [[[10 11]
          [12 13]]
                                                                                                                           
         [[14 15]
          [16 17]]]
        [10 11 12 13 14 15 16 17]

5.5 掩码操作

定义:快速过滤数据的方法,掩码数组为True,对应位置的数据保留,为False则丢弃
        掩码数组通常是通过比较条件比较出来的 
        例:
        import numpy as np
        a = np.arange(1,6,1)
        print(a)
        mask = [True, False, True, False, False]
        print(a[mask]) # 执行掩码操作,并打印
        mask2 = (a >= 3)
        print(mask2) 
        print(a[mask2])
        # 输出
        [1 2 3 4 5]
        [1 3]
        [False False  True  True  True]
        [3 4 5]

5.6 多维数组的切片

例:
        import numpy as np
        a = np.arange(1, 28) # 产生1~28(不包含28)范围内的数字
        print(a)          # a = [1,2,3,....27]
        a.resize(3, 3, 3)    # 直接修改原数组的形状
        print(a) 
        # a = [[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]],[[19,20,21],[22,23,24],[25,26,27]]]
        print("***********************")
        # 切出第2页
        print(a[1, :, :]) 
        print("***********************")
        # 切出所有页的第2行          
        print(a[:, 1, :]) 
        print("***********************")
        # 切出第1页所有行的第2列
        print(a[0, :, 1]) 
        # 切出第1页所有行的第1列和第2列 
        # 页、行、列的下标索引都从0开始,第一列索引下标为0,第二列索引下标为1,第三列索引下标为2 
        print(a[0, :, 0:2])
   

5.7 二维数组的组合、拆分     

5.7.1 垂直/水平方向组合拆分

             垂直组合拆分:
              vstack(tup)   # 垂直方向组合 tup是两个二维数组组合成的元祖
              vsplit(ary,            # 待拆分的数组
              indices_or_sections)   # 拆成几个片段 
            水平组合拆分:
              hstack(tup)   # 水平方向组合 tup是两个二维数组组合成的元祖
              hsplit(ary,            # 待拆分的数组
              indices_or_sections)   # 拆成几个片段 
              例:
              import numpy as np
              # 先创建1~6的6个元素的一维数组,变为2行3列的二维数组
              a = np.arange(1,7).reshape(2, 3) 
              b = np.arange(2,8).reshape(2, 3) 
              print(a)
              print(b)
              print("--------------------")
              # (a,b) 元祖/tuple
              c = np.vstack((a,b))   # 垂直组合
              print(c)   # [[1,2,3],[4,5,6],[2,3,4],[5,6,7]]    4行3列
              print("--------------------")
              d, e = np.vsplit(c, # 待拆分的数组
                               2) # 拆分成2个片段 
              print(d) 
              print(e)

5.7.2 对数组填充

np.pad函数
        例:
        import numpy as np
        a = np.array([1,2,3,4,5]) 
        b = np.array([1,2,3,4]) 
        print(a)
        print(b)
        print("-------------------") 
        # 填充b数组使其长度与a相同
        b = np.pad(b, pad_width=(0, 1), # 对b进行填充,前面填充0个,后面填充1个
                      mode='constant', # 填充常数值 
                      constant_values=-1) # 填充常数值为-1 
        c = np.vstack((a, b))
        print(c)

5.7.3 对多维数组组合

np.split(c, 2, axis=0)
        通过给出的数组与要拆分的份数,按照某个方向进行拆分,axis的取值同上
        concatenate(tup,axis=0(default)) 
        指定要组合的元祖按照指定的方向组合
        axis = 0 垂直方向组合  改变的页/通道 
        axis = 1 水平方向组合  改变的是行
        axis = 2 深度方向组合  改变的是列  
        例:
        import numpy as np
        a = np.arange(1,9).reshape(2,2,2) 
        b = np.arange(11,19).reshape(2,2,2) 
        print(a)
        print(b) 
        print("-----------------------") 
        c = np.concatenate((a,b), # 元祖,指定要组合的数组
                           axis=0) # 轴的方向 0 垂直, 1 水平, 2 深度方向
        print(c)    
        print(c.shape)   # (4,2,2)
        print("---------------------")
        c = np.concatenate((a,b), # 元祖,指定要组合的数组
                           axis=1) # 轴的方向 0 垂直, 1 水平, 2 深度方向 
        print(c) 
        print(c.shape)  # (2,4,2)
        print("---------------------") 
        c = np.concatenate((a,b), # 元祖,指定要组合的数组
                           axis=2) # 轴的方向 0 垂直, 1 水平, 2 深度方向 
        print(c) 
        print(c.shape)  # (2,2,4)


    6 列表和数组互相转化

     数组转列表:np.array,np.asarray 
      列表转数组:列表推导式,tolist   
      import numpy as np
      #列表转数组     
      #方式1 np.array根据列表创建数组  
      L = [1, 2, 3, 4, 5] # 列表 
      print(L)
      arr1 = np.array(L) 
      print(type(L))   # list 
      print(type(arr1))  # numpy.ndarray
      #方式2 np.asarray
      arr2 = np.asarray(L)
      print(type(arr2))  # numpy.ndarray
      print(arr2)
      # 数组转列表 
      # 方式一:tolist 
      L2 = arr1.tolist()
      print(type(L2))     # list
      print(L2) 
      # 方式二:flat 列表推导式
      L3 = [elem for elem in arr1.flat] 
      print(type(L3))   # list
      print(L3)

相关文章:

python Numpy-数组

目录 Numpy&#xff1a; 一、Ndarray 1 定义 2 数组的属性方法 2.1 数组的维度&#xff1a;np.ndarray.shape 2.2 元素的类型&#xff1a;np.ndarray.dtype 2.3 数组元素的个数&#xff1a;np.ndarray.size 2.4 转置 3 ndarray 所存储元素的数据类型 4 数组创建 4.1 a…...

数据库分库分表从理论到实战

1.分库分表基础理论 1.1 分库分表基本概念 定义&#xff1a;分库分表是一种将单一数据库中的数据分散存储到多个数据库或表中的技术方案&#xff0c;其核心思想是通过"分而治之"的方式解决数据库性能瓶颈问题。分库&#xff1a;将表按业务或数据量拆分到不同数据库中…...

Java异常处理与File类终极指南

Java异常处理与File类终极指南 目录 异常体系全维度拆解异常处理十五种高阶模式自定义异常企业级实践File类深度探索与NIO进化论分布式系统异常处理架构性能调优与安全防护全网最全异常代码库一、异常体系全维度拆解 1.1 Java异常DNA解析 // 异常类的核心继承关系 public cla…...

pmap中的mode列,脏页,写时复制

写时复制&#xff08;Copy-on-Write&#xff0c;简称 COW&#xff09; 是一种计算机编程中的优化技术&#xff0c;主要用于内存或存储资源的管理。其核心思想是&#xff1a;只有在真正需要修改数据时&#xff0c;才会执行实际的复制操作&#xff0c;从而避免不必要的资源开销。…...

通过COM获取正在运行的Excel实例并关闭 c#实现

利用COM对象模型获取正在运行的Excel实例并关闭。示例代码如下&#xff1a; using Excel Microsoft.Office.Interop.Excel; using System.Runtime.InteropServices; try { Excel.Application excelApp (Excel.Application)Marshal.GetActiveObject("Excel.Applicatio…...

运行在华为云kubernetes应用接入APM服务

1 APM概述 在云时代微服务架构下应用日益丰富&#xff0c;纷杂的应用异常问题接踵而来。应用运维面临巨大挑战&#xff1a; 分布式应用关系错综复杂&#xff0c;应用性能问题分析定位困难&#xff0c;应用运维面临如何保障应用正常、快速完成问题定位、迅速找到性能瓶颈的挑战…...

虚幻引擎5-Unreal Engine笔记之摄像头camera

虚幻引擎5-Unreal Engine笔记之摄像头camera code review! 目录 第一部分&#xff1a;摄像头的基础概念 1.1 UE5 中摄像头的定义与作用1.2 UE5 中摄像头的类型与分类 第二部分&#xff1a;摄像头的代码结构与分类 2.1 摄像头是类还是组件&#xff1f;2.2 组件的本质&#xff…...

mysql的基础命令

1.SQL的基本概念 SQL 是用于管理和操作关系型数据库的标准编程语言。是所有关系型数据库&#xff08;如 MySQL、PostgreSQL、Oracle 等&#xff09;的通用语言。 SQL语句分类 DDL: Data Defination Language 数据定义语言 CREATE&#xff0c;DROP&#xff0c;ALTER DML: Da…...

去中心化算力池:基于IPFS+智能合约的跨校GPU资源共享平台设计

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;H卡级别算力&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生专属优惠。 一、问题背景&#xff1a;高校算力孤岛的困境 现状痛点 各高校GPU集群利用率差异显著&…...

数据库(二):ORM技术

什么是 ORM&#xff1f; ORM&#xff08;Object-Relational Mapping&#xff09; 是一种用于实现 对象模型&#xff08;面向对象&#xff09;与关系模型&#xff08;数据库&#xff09;之间映射的技术&#xff0c;使程序员可以通过操作对象的方式访问数据库数据&#xff0c;而无…...

Oracle基础知识

目录 1.别名的使用 2.AND的优先级高于OR 3.where后面可以接别名&#xff0c;order by后面不可以 4.Oracle中SQL的执行顺序(重点) 5.dual万用表 6.是否区分大小写 7.Oracle常用数据类型 8.Oracle常用函数 (1)length字符、lengthb字节和cast强制类型转换 (2)数据类型转…...

使用 vite-plugin-dynamic-base 实现运行时动态设置上下文路径

我们一般会在编译之前设置上下文&#xff0c;那么如何在编译之后动态设置上下文的路径&#xff1f; 本文使用的技术栈是 Go&#xff08;Gin&#xff09; Vue.js&#xff08;Vite&#xff09; 本文使用到的第三方包&#xff1a;https://github.com/chenxch/vite-plugin-dynam…...

spark-shuffle 类型及其对比

1. Hash Shuffle 原理&#xff1a;将数据按照分区键进行哈希计算&#xff0c;将相同哈希值的数据发送到同一个Reducer中。特点&#xff1a;实现简单&#xff0c;适用于数据分布均匀的场景。但在数据分布不均匀时&#xff0c;容易导致某些Reducer处理的数据量过大&#xff0c;产…...

力扣-快乐数

1.题目要求 2.题目链接 202. 快乐数 - 力扣&#xff08;LeetCode&#xff09; 3.题目分析 首先,因为需要频繁地用到数字变为各个位上的平方的过程,我们可以将"对于一个正整数,每一次将该数替换为它每个位置的数字的平方和"这一操作抽象出来&#xff0c;定义成一个…...

每日算法刷题Day10 5.19:leetcode不定长滑动窗口求最长/最大4道题,结束定长滑动窗口,用时1h

不定长滑动窗口 不定长滑动窗口主要分为三类&#xff1a;求最长子数组&#xff0c;求最短子数组&#xff0c;以及求子数组个数。 注&#xff1a;滑动窗口相当于在维护一个队列。右指针的移动可以视作入队&#xff0c;左指针的移动可以视作出队。 滑动窗口【基础算法精讲 03】…...

FreeSWITCH 纯内网配置

纯内网&#xff0c;且同一个网段&#xff0c;Fs 可简化配置&#xff0c;要点是: 1. 不需要事先配置 directory&#xff0c;任意号码都可以注册&#xff0c;且无挑战 2. 呼叫无挑战 不需要考虑那么多安全问题 配置如下&#xff1a; 1. 全局变量 <X-PRE-PROCESS cmd"…...

STL中list的模拟

这里写目录标题 list 的节点 —— ListNodelist 的 “导览员” —— ListIteratorlist 的核心 —— list 类构造函数迭代器相关操作容量相关操作 结尾 在 C 的 STL&#xff08;标准模板库&#xff09;中&#xff0c;list 是一个十分重要的容器&#xff0c;它就像一个灵活的弹簧…...

【iOS】类结构分析

前言 之前我们已经探索得出对象的本质就是一个带有isa指针的结构体&#xff0c;这篇文章来分析一下类的结构以及类的底层原理。 类的本质 类的本质 我们在main函数中写入以上代码&#xff0c;然后利用clang对其进行反编译&#xff0c;可以得到c文件 可以看到底层使用Class接…...

Android 万能AI证件照 v1.3.2

在日常的生活和工作场景里&#xff0c;证件照的身影随处可见。找工作投简历时&#xff0c;它是展现你形象的 “第一张名片”&#xff1b;办理各类证件&#xff0c;缺了它可不行&#xff1b;参加各种考试报名&#xff0c;同样需要它。可以说&#xff0c;证件照虽小&#xff0c;却…...

【Java】封装在 Java 中是怎样实现的?

包 关于包有两个关键字 package : 声明当前类属于哪个包 和 import : 允许当前类使用其他类或接口时不使用全限定名 , 也就是导包 . IDEA 的普通项目文件包括 src : 包含源码和资源文件 和 out : 包含编译产物字节码文件 . 在 IDEA 开发环境建包会在 src 源码目录中生成 , 可…...

牛客网 NC14736 双拆分数字串 题解

牛客网 NC14736 双拆分数字串 题解 题目分析 解题思路 通过分析&#xff0c;我们可以发现&#xff1a; 当n≤3时&#xff0c;无法构造出双拆分数字串&#xff0c;因为数字位数太少对于n>3的情况&#xff0c;我们可以构造两种特殊形式&#xff1a; 当n为奇数时&#xff0c…...

超长文本注意力机制如何突破传统 O(n²) 瓶颈

介绍了当前在超长文本&#xff08;可达百万级及以上 Token&#xff09;生成与预测中&#xff0c;注意力机制如何突破传统 O(n) 瓶颈&#xff0c;并阐释多种高效注意力算法如何支持 超长上下文处理能力。 概览 当前主流 Transformer 在处理长序列时&#xff0c;由于每个 Token…...

异丙肌苷市场:现状、挑战与未来展望

摘要 本文聚焦异丙肌苷市场&#xff0c;深入分析了其市场规模与增长趋势、应用价值与市场驱动因素、面临的挑战以及竞争格局。异丙肌苷作为一种具有重要应用价值的改性核苷衍生物&#xff0c;在药物研发和治疗领域展现出潜力&#xff0c;但市场发展也面临诸多挑战。文章最后为…...

JAVA面向对象——对象和类的基本语法

JAVA面向对象——对象和类的基本语法 一、面向对象编程基础 1. 程序中的数据存储方式 基本类型&#xff1a;变量&#xff08;如 int max 15;&#xff09;。数据结构&#xff1a;数组&#xff08;一维/二维&#xff09;、对象&#xff08;特殊数据结构&#xff0c;用于存储复…...

【windows】音视频处理工具-FFmpeg(合并/分离)

一、FFmpeg介绍 FFmpeg是一个‌开源的跨平台音视频处理框架。 法国计算机程序员 Fabrice Bellard 于 2000 年创建。 “FF”&#xff08;代表 “Fast Forward”&#xff0c;快进之意&#xff09;与 “mpeg”&#xff08;流行的视频压缩标准 MPEG&#xff0c;即运动图像专家组&am…...

Java并发编程:从基础到高级实战

在现代软件开发中&#xff0c;并发编程已成为不可或缺的核心技能。随着多核处理器的普及和分布式系统的发展&#xff0c;能否编写高效、线程安全的并发程序直接决定了应用程序的性能和可靠性。Java作为一门成熟的企业级编程语言&#xff0c;提供了丰富的并发编程工具和API&…...

在 Excel 中使用东方仙盟软件————仙盟创梦IDE

安装插件 用仙盟创梦编写插件代码 源码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ExcelDna.Integration;namespace 东方仙盟.仙盟创梦IDE_招标系统 {public static class 仙盟创梦_招标专…...

win7无线网络名称显示为编码,连接对应网络不方便【解决办法】

使用多个网络时可能需要切换到打印机的网络来打印东西&#xff0c;但是win7的编码问题导致不知道哪个网络是对应网络&#xff0c;可以使用批处理命令来自动连接道指定网络 将这个代码用文本文件打开后粘贴&#xff0c;然后另存为ansi格式的bat文件 代码中使用两种方式进行连接…...

.NET 10 - 尝试一下Minimal Api的Validation新特性

1.简单介绍 2025年11月微软将会发布.NET10&#xff0c;这是LTS(Long Term Support)版本。当前.NET10已经处于Preview4版本&#xff0c;微软对Runtime, Library, SDK, C#, Asp.NET Core, MAUI等都做了很多enhancement。近些年微软对Minimal Api一直在持续地更新。在.NET8中, Mi…...

C# Task 与 SynchronizationContext

示例代码 using System; using System.Collections.Concurrent; using System.Threading; using System.Threading.Tasks;namespace Test {internal class Program{static void Main(string[] args){_mainThreadSynchronizationContext new ThreadSynchronizationContext(&qu…...

iOS Runtime与RunLoop的对比和使用

Runtime 机制 核心概念 Objective-C 的动态特性&#xff1a;Objective-C 是一门动态语言&#xff0c;很多工作都是在运行时而非编译时决定的消息传递机制&#xff1a;方法调用实际上是发送消息 objc_msgSend(receiver, selector, ...)方法决议机制&#xff1a;动态方法解析、…...

JavaSenderMail发送邮件(QQ及OFFICE365)

前言 这是今天处理的公司安排的一个任务&#xff1a;客户系统发送offices365邮件报错535 之前没怎么解除邮件业务&#xff0c;于是先搭个简单的QQ邮件Demo熟悉一下吧&#xff0c;没有啥公网内网的麻烦&#xff08;之前听说有内网限制&#xff0c;我还处理了一些环境上的问题&…...

八股文--JVM(2)

⭐️⭐️6.类加载 类加载器 JVM只会运行二进制文件&#xff0c;类加载器的作用就是将字节码加载到JVM中&#xff0c;从而让程序启动 1.启动类加载器 ----JAVA_HOME/jre/libC编写加载的是JAVA_HOME/jre/lib 2.拓展类加载器 ----JAVA_HOME/jre/lib/ext 3.应用类加载器 ----C…...

【HTML-3】HTML 中的水平线与换行:基础元素详解

在网页设计中&#xff0c;合理的布局和内容分隔对于提升用户体验至关重要。HTML 提供了两个简单但强大的元素来实现这些功能&#xff1a;水平线 (<hr>) 和换行 (<br>)。本文将深入探讨这两个元素的用法、最佳实践以及现代替代方案。 1. 水平线 <hr> 元素 1…...

绿色云计算:数字化转型与可持续发展的完美融合

目录 引言 绿色云计算的概念与定义 云计算的环境影响与绿色云计算的重要性 绿色云计算的技术实践与策略 绿色云计算的案例研究与最佳实践 绿色云计算的挑战与限制 绿色云计算的未来趋势与预测 结论与展望 引言 随着云计算技术的迅猛发展和广泛应用&#xff0c;其环境影…...

AMO——下层RL与上层模仿相结合的自适应运动优化:让人形行走操作(loco-manipulation)兼顾可行性和动力学约束

前言 自从去年24年Q4&#xff0c;我司侧重具身智能的场景落地与定制开发之后 去年Q4&#xff0c;每个月都会进来新的具身需求今年Q1&#xff0c;则每周都会进来新的具身需求Q2的本月起&#xff0c;一周不止一个需求 特别是本周&#xff0c;几乎每天都有国企、名企通过我司找到…...

大模型——多模态检索的RAG系统架构设计

文章目录 1. 系统架构设计核心组件 2. 跨模态向量空间对齐方案方法一&#xff1a;预训练对齐模型&#xff08;如CLIP&#xff09;方法二&#xff1a;跨模态投影网络方法三&#xff1a;联合微调 3. 混合检索策略4. 关键问题解决Q: 如何解决模态间向量尺度不一致&#xff1f;Q: 如…...

BUUCTF——Kookie

BUUCTF——Kookie 进入靶场 一个登录页面 左上角提示让以admin身份登录 找到了cookie 应该与cookie相关 测试了一下admin admin没登上 We found the account cookie / monster 回头看了一下 这个是不是账号密码 测试一下 成功登入 但是没有flag 应该还是跟cookie相关 …...

代码随想录算法训练营

力扣684.冗余连接【medium】 力扣.冗余连接Ⅱ【hard】 一、力扣684.冗余连接【medium】 题目链接&#xff1a;力扣684.冗余连接 left x300 视频链接&#xff1a;代码随想录 题解链接&#xff1a;灵茶山艾府 1、思路 可以从前向后遍历每一条边&#xff08;因为优先让前面的边连上…...

服务器磁盘不同格式挂载区别

在Linux系统中&#xff0c;磁盘不同格式挂载的核心区别主要体现在‌文件系统类型‌和‌挂载方式‌两个方面&#xff0c;以下为具体差异分析&#xff1a; 一、文件系统类型区别 磁盘格式即文件系统类型的选择直接影响挂载后的性能和功能&#xff1a; ‌常见文件系统比较‌ ‌e…...

AI智能分析网关V4人员摔倒检测打造医院/工厂等多场景智能安全防护体系

一、方案背景​ 随着全球老龄化加剧&#xff0c;我国老年人口占比持续攀升&#xff0c;老年人摔倒伤亡事件频发&#xff0c;居家、养老机构等场景的摔倒防控成为社会焦点。同时&#xff0c;工厂、医院、学校等人员密集场所也易发生意外摔倒安全事故。传统人工监控存在视觉疲劳…...

window 显示驱动开发-准备 DMA 缓冲区

显示微型端口驱动程序必须及时准备 DMA 缓冲区。 当 GPU 处理 DMA 缓冲区时&#xff0c;通常调用显示微型端口驱动程序来准备下一个 DMA 缓冲区&#xff0c;以便提交到 GPU。 若要防止 GPU 耗尽&#xff0c;显示微型端口驱动程序在准备和提交后续 DMA 缓冲区时所花费的时间必须…...

程序设计实践--排序(1)

&#xff11;、插入排序&#xff08;一个数组&#xff09; #include<bits/stdc.h> using namespace std; const int N1e35; int a[N]; int n; int main(){cin>>n;for(int i1;i<n;i){cin>>a[i];}for(int i1;i<n;i){int va[i];int ji-1;while(j>1&am…...

window 显示驱动开发-GDI 硬件加速

Windows 7 引入的 GDI 硬件加速功能在图形处理单元 (GPU) 上提供加速的核心图形设备接口 (GDI) 操作。 若要指示 GPU 和驱动程序支持此功能&#xff0c;显示微型端口驱动程序必须将DXGKDDI_INTERFACE_VERSION设置为 > DXGKDDI_INTERFACE_VERSION_WIN7。 显示微型端口驱动程…...

驱动开发硬核特训 · Day 31:理解 I2C 子系统的驱动模型与实例剖析

&#x1f4da; 训练目标&#xff1a; 从驱动模型出发&#xff0c;掌握 I2C 子系统的核心结构&#xff1b;分析控制器与从设备的注册流程&#xff1b;结合 AT24 EEPROM 驱动源码与设备树实例&#xff0c;理解 i2c_client 与 i2c_driver 的交互&#xff1b;配套高质量练习题巩固理…...

网络安全之网络攻击spring临时文件利用

0x00 传统攻击流程 我们之前传统的攻击流程由以下几个步骤来完成 攻击者找到可以控制目标JDBC连接fakeServer的地方目标向fakeServer发起连接请求fakeServer向目标下发恶意数据包目标解析恶意数据包并完成指定攻击行为&#xff08;文件读取、反序列化&#xff09;&#xff0c…...

统一端点管理(UEM):定义、优势与重要性

统一终端管理&#xff08;UEM&#xff09;​​是一种通过单一平台集中管理、监控和保护企业所有终端设备&#xff08;如笔记本电脑、移动设备、服务器、物联网设备等&#xff09;的综合性策略。其核心在于跨操作系统&#xff08;Windows、macOS、iOS、Android等&#xff09;实现…...

什么是Rootfs

Rootfs (Root Filesystem) 详解 buildroot工具构建了一个名为"rootfs.tar"的根文件系统压缩包。 什么是rootfs Rootfs&#xff08;Root Filesystem&#xff0c;根文件系统&#xff09;是操作系统启动后挂载的第一个文件系统&#xff0c;它包含系统正常运行所需的基…...

黑马Java基础笔记-13常用查找算法

查找算法 基本查找(也叫顺序查找&#xff0c;线性查找) 二分查找&#xff08;需要有序数据&#xff09; public static int binarySearch(int[] arr, int number){//1.定义两个变量记录要查找的范围int min 0;int max arr.length - 1;//2.利用循环不断的去找要查找的数据wh…...

#渗透测试#批量漏洞挖掘#LiveBos UploadFile(CVE-2021-77663-2336) 任意文件上传漏洞

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…...