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

C语言——函数

C语言——函数

函数的概念

  • 函数:也叫子程序。C语言中的函数就是一个完成某项特定任务的一小段代码
  • C语言函数分类:
    按照用户使用:库函数,自定义函数
    按照参数的形式:无参函数,有参函数
    按照是否有返回值的角度:有返回值函数,无返回值函数
    按照调用的角度:主调函数,被调函数

库函数

标准库和头文件

  • 库函数:C语言国际标准ANSI C归档了一些常用的函数的标准,就被叫做标准库,不同编译器给出一系列函数的实现,这些函数叫库函数,例如:printf,scanf等。
    库函数相关头文件:https://zh.cppreference.com/w/c/header
  • 库函数的使用
    1.进入官网学习和查看,里面有例子
    2.举例:
#include<math.h>
int main
{double r=sqrt(16);printf("%lf\n",r);return 0;
}

运行结果就为4.0
3.库函数文档的一般格式
(1)函数原型
(2)函数功能格式
(3)参数和返回类型说明
(4)代码举例
(5)代码输出
(6)相关知识链接

自定义函数

  • 函数的语法形式
ret_type_fun_name(形式参数)
{
}
//把函数想象成一个小工厂,工厂得输入原材料,才能生产产品,函数一样也需要输入一些值,经过函数内的计算得出结果
//ret_type表示函数计算结果的类型,有时候返回类型为void,表示什么都不返回。
//fun_name是为了方便使用函数,给起了一个名字
//函数的参数相当于工厂中送进去的原材料,函数的参数也可以是void,明确表示函数没有参数,如果有参数,要交代清楚参数的类型和名字,以及参数个数
//{}括起来的是函数体

形参和实参

int Add(int x,int y)//形式参数,简称形参(即如果只定义不调用,这俩参数就只是形式上的参数)
{return x+y;//计算x+y后返回的是结果
}
int main()
{int a=0;int b=0;scanf("%d %d",&a,&b);int c=Add(a,b);//调用Add函数//真实传递给函数的参数,a,b是实际参数,简称实参printf("c=%d\n",c);return 0;
}
  • 形参的实例化:形式参数只有在函数被调用的过程中为了存放实参传递过来的值,才向内存申请空间,这个过程就是形参的实例化
  • 形参和实参的关系:形参和实参各自有独立的空间;
    形参的修改不会影响实参;
    形参是实参的一份临时拷贝;
    实参和形参的名字可以相同,但依然是不同的空间。

return语句

  • return后边可以是一个数值,也可以是一个表达式,如果是表达式则先执行表达式,在返回表达式的结果
  • return后边也可以什么都没有,直接写return;这种写法适合函数返回类型是void的情况
  • return语句执行后,函数就彻底返回,后边的代码不再执行
  • return返回的值和函数返回类型不一致,系统就会自动将返回的值隐式转换为函数的返回类型,例:
int test()
{return 3.5;//这样写就牛头不对马尾
}
int main()
{int r=test();printf("%d\n",r);//此时打印结果就为3,3.5被强制转换成了int类型return 0;
}
  • 如果函数中存在if等分支语句,则要保证每种情况下都有return返回,否则会出现编译错误(必须考虑全面,每一种情况都有返回值)
  • 函数的返回类型如果不写,编译器会默认函数的返回类型是int;
    尽量有明确的返回类型,就直接写清楚,如果不需要返回就写void
  • 函数写了返回类型,但是函数中没有使用return返回值,那么函数的返回值是未知的

数组做函数参数

一维数组的传参

//将数组内容全变成-1并打印
#include<stdio.h>
void set_arr(int arr[],int sz)
{int i=0;for(i=0;i<sz;i++){arr[i]=-1;}
}
//写一个函数,打印arr数组的所有内容
void print_arr(int arr[],int sz)
{	int i=0;for(i=0;i<sz;i++){printf("%d",arr[i]);}printf("\n");
}
int main()
{int arr[]={1,2,3,4,5,6,7,8,9,10};int sz=sizeof(arr)/sizeof(arr[0]);set_arr(arr,sz);//函数的调用print_arr(arr,sz);//数组传参的时候,实参应该写数组名return 0;
}

二维数组的传参

void print_arr2(int arr[][5],int r,int c)//行可省,列不可省
{int i=0;for(i=0;i<r;i++){int j=0;for(j=0;j<c;j++){printf("%d ",arr[i][j]);}printf("\n");	}
}
int main()
{int arr[3][5]={{1,2,3},{2,3,4,5},{3,4,5,6,7}};print_arr2(arr,3,5);return 0;
}

数组传参时需要注意

  • 函数的形参要和函数的实参个数匹配
  • 函数的实参是数组,形参也可以是写成数组形式的
  • 形参如果是一维数组,数组大小可以省略不写
  • 形参如果是二维数组,行可以省略,但是列不能省略
  • 数组传参,形参是不会创建新的数组的
  • 形参操作的数组和实参的数组是同一个数组

嵌套调用和链式访问

嵌套调用:函数之间的互相调用,例:

//使用函数的方式实现某年某月有多少天
#include<stdio.h>
#include<stdbool.h>
bool is_leap_year(int y)
{if(((y%4==0)&&(y%100!=0))||(y%400==0))return true;else return false;
}
int get_days_of_month(int y,int m)
{int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};//来一个判断闰年的函数功能int d=days[m];if(is_leap_year(y)&&m==2)//嵌套调用{d+=1;}return d;
}int main()
{int year=0;int month=0;scanf("%d %d",&year,&month);int day=get_days_of_month(year,month);printf("%d\n",day);return 0;
}

链式访问:链式访问就是将一个函数的返回值作为另一个函数的参数,像链条一样将函数穿起来就是函数的链式访问,例:

int main()
{printf("%zd\n",strlen("abcdef"));//链式访问,将函数的参数作为返回值
}
int main()
{printf("%d",printf("%d",printf("%d",43)));//链式访问
//printf参数的返回值是打印在屏幕上字符的个数
}

打印结果是4321

函数的声明和定义

单个文件

函数的声明就是告诉编译器 ,有一个函数:名字是什么 ,参数是什么,返回类型是什么

int is_leap_year(int y);//函数的声明
//int is_leap_year(int);//函数的声明中形式参数的名字可以省略
int main()
{int year=0;scanf("%d",&year);if(is_leap_year(year))//函数的调用printf("闰年\n");elseprintf("非闰年\n");return 0;
}
//函数的定义,如果把函数的定义放在最下面函数调用的后面会有问题,除非你先声明一下
int is_leap_year(int y){if((y%4==0)&&(y%100!=0)||(y%400==0))return 1;elsereturn 0;}

多个文件

  • 头文件中放声明函数
    在这里插入图片描述
  • 函数定义
    在这里插入图片描述
  • 包含头文件,然后调用函数
    在这里插入图片描述
    ——这是可以运行的
    在这里插入图片描述
    如果不写头文件也是可以的,只需要在int main()前加入
extern int Add(int x,int y);//相当于声明

extern这个关键字是用来声明外部符号的
以上写法,函数的定义和声明是分离的,这样写方便模块化的编程,也方便协作

static和extern(都是C语言中的关键字)

  • 作用域:一段程序代码中所用到的名字并不总是有效的,而限定这个名字的可用性的代码范围就是这个名字的作用域
    1.局部变量的作用域是变量所在的局部范围;
    2.全局变量的作用域是整个项目。
  • 生命周期:是指变量的创建(申请内存)到变量的销毁 (收回内存)之间的一个时间段
    1.局部变量的生命周期:进入作用域变量创建,生命周期开始,出作用域生命周期结束;
    2.全局变量的生命周期:整个程序的生命周期
  • static
    1.修饰局部变量;在这里插入图片描述

运行结果为23456,若没有static修饰,运行结果为22222
static修饰了局部变量n,使其的生命周期变长了(本质是改变了变量的存储类型,本来是一个局部变量存储在内存的栈区,但被static修饰后到了静态区。存储在静态区的变量和全局变量是一样的,生命周期就和程序的生命周期一样了,只有程序结束 ,变量才销毁,内存才回收。但是作用域不变)

2.修饰全局变量;
static修饰全局变量后(外部链接属性变成了内部链接属性),使得这个全局变量只能在本源文件中使用,即使声明了,也不能在其他源文件中使用

3.修饰函数
函数默认是有外部链接属性的,用static修饰后,函数的外部链接属性变成内部连接属性,是的函数只能在自己的.c文件中使用,其他.c文件不能使用

  • extern:用来声明外部符号(外部符号可以是全局变量,函数等)

相关文章:

C语言——函数

C语言——函数 函数的概念 函数&#xff1a;也叫子程序。C语言中的函数就是一个完成某项特定任务的一小段代码。C语言函数分类&#xff1a; 按照用户使用&#xff1a;库函数&#xff0c;自定义函数 按照参数的形式&#xff1a;无参函数&#xff0c;有参函数 按照是否有返回值…...

网络安全 | F5 WAF 黑白名单配置实践指南

关注&#xff1a;CodingTechWork 引言 在现代网络安全架构中&#xff0c;F5 Web Application Firewall (WAF) 是保护 Web 应用免受攻击的重要工具。F5 WAF 提供了强大的黑白名单功能&#xff0c;结合 Data Group 和 iRules&#xff0c;可以实现更灵活、更高效的流量控制策略。…...

黑马 redis面试篇笔记

redis主从 version: "3.2"services:r1:image: rediscontainer_name: r1network_mode: "host"entrypoint: ["redis-server", "--port", "7001"]r2:image: rediscontainer_name: r2network_mode: "host"entrypoint:…...

报错_NoSuchMethodException: cn.mvc.entity.User.<init>()

org.springframework.beans.BeanInstantiationException: Failed to instantiate [cn.mvc.entity.User]: No default constructor found; nested exception is java.lang.NoSuchMethodException: cn.mvc.entity.User.<init>() 添加一个无参的构造器即可&#xff01; pub…...

【无人机】无人机遥控器设置与校准,飞行模式的选择,无线电控制 (RC) 设置

目录 1、遥控器校准 1.1、校准步骤 2、飞行模式选择&#xff0c;遥控器通道映射 2.1、配置步骤 1、遥控器校准 在校准无线电系统之前&#xff0c;必须连接/绑定接收器和发射器。绑定发射器和接收器对的过程是特定于硬件的&#xff08;有关说明&#xff0c;请参阅 RC 手册&…...

基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案

一、核心硬件架构设计‌ ‌高性能算力引擎&#xff08;RK3588 处理器&#xff09;‌ ‌异构计算架构‌&#xff1a;集成 8 核 CPU&#xff08;4Cortex-A762.4GHz 4Cortex-A551.8GHz&#xff09;&#xff0c;支持动态调频与多任务并行处理&#xff0c;单线程性能较传统四核方案…...

上岸率85%+,25西电先进材料与纳米科技学院(考研录取情况)

1、先进材料与纳米科技学院各个方向 2、先进材料与纳米科技学院近三年复试分数线对比 学长、学姐分析 由表可看出&#xff1a; 1、材料科学与工程25年相较于24年上升10分&#xff0c;为290分 2、材料与化工&#xff08;专硕&#xff09;25年相较于24年下降20分&#xff0c;为…...

10天学会嵌入式技术之51单片机-day-7

第十六章 UART通信 16.1 UART 概述 16.1.1 前置基础 想要理解和使用 UART&#xff0c;需要先了解一些通讯领域的术语&#xff0c;如下 。 &#xff08;1&#xff09;串行通讯和并行通讯 串行通讯和并行通讯是数据传输的两种主要方式&#xff0c;两者的区别如下。 &#xff…...

w~视觉~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/12327888 #几个论文 Fast Charging of Energy-dense Lithium-ion Batteries Real-time Short Video Recommendation on Mobile Devices Semantic interpretation for convolutional neural networks: What makes a ca…...

AI在论文评审中的应用与工具推荐

一、AI在论文评审中的核心应用场景 内容质量评估与逻辑校验 • 核心论点识别&#xff1a;AI可快速定位论文核心创新点&#xff0c;并验证其与文献综述、实验数据的逻辑一致性&#xff08;如知网研学的“文献矩阵分析”功能&#xff09;。 • 方法论合理性检测&#xff1a;自动识…...

怎样记忆Precision、Recall?

首先&#xff0c;明确符号&#xff1a; TP(True Posive)&#xff1a;标签为正&#xff0c;预测为正 TN(True Negative)&#xff1a;标签为负&#xff0c;预测为负 FP(False Positive)&#xff1a;标签为负&#xff0c;预测为正 FN(False Negative)&#xff1a;标签为正&#xf…...

【刷题】第三弹——二叉树篇(上)

文章目录 一.相同的树二. 另一棵树的子树三. 翻转二叉树四. 对称二叉树五. 平衡二叉树六. 二叉搜索树七. 二叉树的遍历 一.相同的树 检查两棵树是否相同 思路: 1.先比较结构 结构不一样直接false 2.结构一样,在比较值 public boolean isSameTree(TreeNode p, TreeNode q) {if…...

【Canvas与标志】红黄渐变阴影太极图

【成图】 120*120的png图标 大小图&#xff1a; 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>红黄渐变阴影太极图 Draft1&l…...

express的中间件,全局中间件,路由中间件,静态资源中间件以及使用注意事项 , 获取请求体数据

Express 中间件系统 的详细讲解&#xff0c;包括全局中间件、路由中间件、静态资源中间件、请求体解析中间件&#xff0c;以及使用注意事项&#x1f447; &#x1f310; 一、什么是中间件&#xff08;Middleware&#xff09;&#xff1f; 中间件是 函数&#xff0c;在请求到达…...

大数据去重

实验4 大数据去重 1.实验目的 通过Hadoop数据去重实验&#xff0c;学生可以掌握准备数据、伪分布式文件系统配置方法&#xff0c;以及在集成开发环境Eclipse中实现Hadoop数据去重方法。 2.实验要求 了解基于Hadoop处理平台的大数据去重过程&#xff0c;理解其主要功能&…...

高功率激光输出稳定性不足?OAS 光学软件来攻克

法布里珀罗干涉仪设计案例 简介 法布里珀罗干涉仪作为一种高分辨率光学仪器&#xff0c;基于多光束干涉原理构建。其核心结构由两块高度平行的反射镜组成谐振腔&#xff0c;当光进入该谐振腔后&#xff0c;会在镜面间进行多次反射。在这一过程中&#xff0c;透射光会形成干涉条…...

基于大模型的结肠癌全病程预测与诊疗方案研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、结肠癌概述 2.1 流行病学特征 2.2 发病机制与危险因素 2.3 临床症状与诊断方法 三、大模型技术原理与应用现状 3.1 大模型的基本原理 3.2 在医疗领域的应用情况 3.3 在结肠癌预测中的潜力分析 四、术前…...

【Hive入门】Hive查询语言(DQL)完全指南:从基础查询到高级分析

目录 1 Hive查询执行架构全景 2 SELECT基础查询详解 2.1 基本查询结构 2.2 条件查询流程图 3 聚合函数与GROUP BY实战 3.1 聚合执行模型 3.2 GROUP BY数据流 4 排序操作深度解析 4.1 ORDER BY执行流程 4.2 排序算法对比 5 高级技巧与注意事项 5.1 嵌套查询与CTE 5.…...

【学习笔记】文件包含漏洞--相关习题

第一关 伪协议 用代码执行命令查看目录所含文件&#xff0c;发现flag.php 法一 题目代码含有include&#xff0c;写入文件包含指令&#xff1a; php://filter/readconvert.base64-encode/resourceflag.php 解码即可得到flag。 法二 法三 法二可以用php&#xff1a;//input&…...

蓝桥杯 20. 压缩变换

压缩变换 原题目链接 题目描述 小明最近在研究压缩算法。他知道&#xff0c;压缩时如果能够使数值很小&#xff0c;就能通过熵编码得到较高的压缩比。然而&#xff0c;要使数值变小是一个挑战。 最近&#xff0c;小明需要压缩一些正整数序列&#xff0c;这些序列的特点是&a…...

BY免费空间去掉?i=1

BY免费空间去掉?i1 使用说明 支持域名&#xff1a;tae.dpdns.org 前提绑定主机&#xff0c;申请主机–控制面板选择–子域名&#xff0c;绑定xxx.tae.dpdns.org子域名 默认开启DDoS防御&#xff0c;无防火墙规则&#xff0c;建议用.htaccess来防御 默认去掉访问统计?i1 …...

中篇:深入剖析 L2CAP 与 ATT 协议模块(约5000字)

引言 在 BLE 协议栈中,L2CAP 与 ATT 承担了关键的数据分发、协议复用与属性访问职责。对多协议并存和大数据场景的应用,深入理解这两层协议的分片重组、流控机制、MTU/MTU 协商和 ATT 操作流程,对于提升系统性能与稳定性至关重要。本篇将全面拆解 L2CAP 与 ATT 的原理与实战…...

【C语言】C语言结构体:从基础到高级特性

前言 在C语言的世界里&#xff0c;结构体是一种强大而灵活的自定义数据类型&#xff0c;它能够将不同类型的数据组合在一起&#xff0c;形成一个逻辑上的整体。从简单的数据聚合到复杂的内存对齐优化&#xff0c;再到高效的位段操作&#xff0c;结构体在系统编程、嵌入式开发和…...

电控---JTAG协议

一、物理层架构与信号特性 1. 引脚定义与电气规范 核心引脚&#xff1a; TCK&#xff08;测试时钟&#xff09;&#xff1a;频率范围0.1MHz至50MHz&#xff08;如Xilinx Spartan-6支持25MHz&#xff09;&#xff0c;上升沿采样数据。TMS&#xff08;测试模式选择&#xff09;…...

FreeRTOS【3】任务调度算法

重要概念 在运行的任务&#xff0c;被称为"正在使用处理器"&#xff0c;它处于运行状态。在单处理系统中&#xff0c;任何时间里只能有一个任务处于运行状态。 非运行状态的任务&#xff0c;它处于这 3 中状态之一&#xff1a;阻塞(Blocked)、暂停(Suspended)、就绪…...

高德地图API + three.js + Vue3基础使用与使用 + 标记不显示避坑

three.js小白的学习之路。 最近闲来无事&#xff0c;突然想起来之前好像项目有需求说是要将模型放在地图上。加上在浏览别的大佬写的博客时&#xff0c;也找到了一些大佬写的相关文章。基本上都是使用的高德地图开放平台的JS API。我也随之开启了自己的学习之路。 先简单学习…...

书籍推荐:《价值心法》一姜胡说

书名 &#xff1a;《价值心法》一姜胡说 摘录 每天问问自己&#xff0c;如果今天只做一件事&#xff0c;这件事是什么&#xff1f;找到它。拿出2—3个小时&#xff0c;专门处理这件事。其他所有事全部排在那2—3个小时之外。 集中一段时间用来做最重要的事。这段时…...

Linux GPIO驱动开发实战:Poll与异步通知双机制详解

1. 引言 在嵌入式Linux开发中&#xff0c;GPIO按键驱动是最基础也最典型的案例之一。本文将基于一个支持poll和异步通知双机制的GPIO驱动框架&#xff0c;深入剖析以下核心内容&#xff1a; GPIO中断与防抖处理环形缓冲区设计Poll机制实现异步通知(SIGIO)实现应用层交互方式 …...

x-cmd install | brows - 终端里的 GitHub Releases 浏览器,告别繁琐下载!

目录 核心功能与优势安装适用场景 还在为寻找 GitHub 项目的特定 Release 版本而苦恼吗&#xff1f;还在网页上翻来覆去地查找下载链接吗&#xff1f;现在&#xff0c;有了 brows&#xff0c;一切都将变得简单高效&#xff01; brows 是一款专为终端设计的 GitHub Releases 浏览…...

一天学完Servlet!!!(万字总结)

文章目录 前言Servlet打印Hello ServletServlet生命周期 HttpServletRequest对象常用api方法请求乱码问题请求转发request域对象 HttpServletResponse对象响应数据响应乱码问题请求重定向请求转发与重定向区别 Cookie对象Cookie的创建与获取Cookie设置到期时间Cookie注意点Cook…...

c#-命名和书写规范

文章目录 1. 接口名称以大写 I 开头2. 属性类型以单词 Attribute 结尾3. 枚举类型对非标记使用单数名词,对标记使用复数名词4. 标识符不应包含两个连续下划线(__)字符5. 对变量、方法和类使用有意义的描述性名称6. 将 PascalCase 用于类名和方法名称7. 对方法参数和局部变量…...

【双指针】和为s的两个数字

57. 和为target的两个数字 剑指 Offer 57. 和为s的两个数字 ​ 输入一个递增排序的数组和一个数字target&#xff0c;在数组中查找两个数&#xff0c;使得它们的和正好是target。如果有多对数字的和等于target&#xff0c;则输出任意一对即可。 示例 1&#xff1a; 输入&…...

【Vue】TypeScript与Vue3集成

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Vue 文章目录 1. 前言2. 环境准备与基础搭建2.1. 安装 Node.js 与 npm/yarn/pnpm2.2. 创建 Vue3 TypeScript 项目2.2.1. 使用 Vue CLI2.2.2. 使用 Vite&#xff08;推荐&#xff09;2.2.3. 目录结构简述 3. Vue3 TS 基础语法整…...

win11中wsl在自定义位置安装ubuntu20.04 + ROS Noetic

wsl的安装 环境自定义位置安装指定ubuntu版本VsCodeROS备份与重载备份重新导入 常用命令参考文章 环境 搜索 启用或关闭 Windows 功能 勾选这2个功能&#xff0c;然后重启 自定义位置安装指定ubuntu版本 从网上找到你所需要的相关wsl ubuntu版本的安装包&#xff0c;一般直…...

【数据可视化-29】食物营养成分数据可视化分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

手动实现legend 与 echarts图交互 通过js事件实现图标某项的高亮 显示与隐藏

通过html实现legend的样式 提供调用echarts的api实现与echarts图表交互的效果 实现饼图element实现类似于legend与echartstu表交互效果 效果图 配置代码 <template><div style"height: 400px; width: 500px;background-color: #CCC;"><v-chart:opti…...

C语言编程--16.删除链表的倒数第n个节点

题目&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a…...

centos7使用certbot完成nginx ssl证书续期

没有废话纯干货 yum源配置&#xff08;配置好的可以跳过&#xff09; #到/etc/yum.repos.d/下mkdir bak&#xff0c;将所用东西mv到bak下 cd /etc/yum.repos.d/ mkdir bak mv ./* bak/ wget https://mirrors.aliyun.com/repo/Centos-7.repo 没有安装nginx的话&#xff0c;配…...

ECharts学习之 toolbox 工具栏

toolbox: {show: true,feature: {//数据视图工具&#xff0c;可以展现当前图表所用的数据dataView: {title: "数据视图",readOnly: false, //是否不可编辑&#xff0c;即只读lang:[数据视图,关闭,刷新] //数据视图上有三个话术},magicType: {type: ["line"…...

修改el-select背景颜色

修改el-select背景颜色 /* 修改el-select样式--直接覆盖默认样式&#xff08;推荐&#xff09; */ ::v-deep .el-select .el-input__inner {background-color: #1d2b72 !important; /* 修改输入框背景色 */color: #fff; } ::v-deep .el-select .el-input__wrapper {background-…...

Qt 使用 MySQL 数据库的基本方法

在 Qt 中&#xff0c;使用 MySQL 数据库的基本方法主要是通过 QSqlDatabase、QSqlQuery 等类来进行数据库的连接、查询和数据操作。以下是 Qt 中连接和操作 MySQL 数据库的基本步骤。 1. 安装 MySQL 驱动 首先&#xff0c;确保您的 Qt 环境已经配置了 MySQL 驱动。通常&#…...

BLIP 系列论文(BLIP、BLIP-2、InstructBLIP)

BLIP BLIP 是 Salesforce 团队在多模态领域中的经典工作&#xff0c;影响力巨大&#xff0c;BLIP 系列包括&#xff1a;BLIP、BLIP-2、InstructBLIP。 BLIP 在多模态大模型之前&#xff0c;多模态领域中最流行的是视觉-语言预训练&#xff08;Vision-Language Pre-training,…...

【玩转全栈】—— 无敌前端究极动态组件库--Inspira UI

目录 Inspira UI 介绍 配置环境 使用示例 效果&#xff1a; Inspira UI 学习视频&#xff1a; 华丽优雅 | Inspira UI快速上手_哔哩哔哩_bilibili 官网&#xff1a;https://inspira-ui.com/ Inspira UI 介绍 Inspira UI 是一个设计精美、功能丰富的用户界面库&#xff0c;专为…...

Java24新增特性

Java 24&#xff08;Oracle JDK 24&#xff09;作为Java生态的重要更新&#xff0c;聚焦AI开发支持、后量子安全、性能优化及开发者效率提升&#xff0c;带来20余项新特性和数千项改进。以下是核心特性的分类解析&#xff1a; 一、语言特性增强&#xff1a;简化代码与模式匹配 …...

Git多人协作与企业级开发模型

目录 1.多人协作一 2.多人协作二 3.远程分⽀删除后&#xff0c;本地gitbranch-a依然能看到的解决办法 4.企业级开发模型 4.1.Git的重要性 4.2.系统开发环境 4.3.Git 分⽀设计规范 1.多人协作一 ⽬前&#xff0c;我们所完成的⼯作如下&#xff1a; 基本完成Git的所有本…...

Android学习总结之扩展基础篇(一)

一、IdleHandler工作原理 1. IdleHandler 接口定义 IdleHandler 是 MessageQueue 类中的一个接口&#xff0c;定义如下&#xff1a; public static interface IdleHandler {/*** 当消息队列空闲时会调用此方法。* return 如果返回 true&#xff0c;则该 IdleHandler 会保留在…...

C语言教程(十六): C 语言字符串详解

一、字符串的表示 在C语言中&#xff0c;字符串是由一系列字符组成&#xff0c;并且以空字符 \0 作为结束标志。字符串通常用字符数组来表示。例如&#xff1a; char str[] {H, e, l, l, o, \0};也可以使用字符串字面量来初始化字符数组&#xff1a;char str[] "Hello&…...

Redis LFU 策略参数配置指南

一、基础配置步骤‌ 设置内存上限‌ 在 redis.conf 配置文件中添加以下指令&#xff0c;限制 Redis 最大内存使用量&#xff08;例如设置为 4GB&#xff09;&#xff1a; maxmemory 4gb选择 LFU 淘汰策略‌ 根据键的作用域选择策略&#xff1a; # 所有键参与淘汰 maxmemory-…...

Pikachu靶场-unsafe upfileupload

不安全的文件上传漏洞防御与对抗方式对照表 防御方式 防御实现 攻击者对抗方式 对抗原理 文件类型白名单验证 仅允许指定扩展名&#xff08;如 .jpg, .png&#xff09; if (!in_array($ext, [jpg, png])) { die(); } 伪造文件类型&#xff1a; 1. 修改文件头&#xff08;…...

Python基础语法:查看数据的类型type(),数据类型转换,可变和不可变类型

目录 查看数据类型type() 使用type()语句查看数据的类型 变量无类型而数据有类型 数据类型转换 在字符串&#xff0c;整型&#xff0c;浮点数之间相互转换 可变类型和不可变类型 查看数据类型type() 使用type()语句查看数据的类型 Python中使用type(被查看数据的类型)语…...