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

音视频开发系列(7)——Opengl常用Api介绍part1

GLES20.glTexParameteri

GLES20.glTexParameteri是OpenGL ES 2.0用于设置纹理过滤器和纹理包装模式的函数。它有三个参数:

target参数

target参数指定要设置纹理参数的纹理目标,根据不同的target值,glTexParameteri函数的行为也会有所不同。下面是几种常见的target类型及其应用场景:
GLES20.GL_TEXTURE_2D:二维纹理目标。适用于大多数的纹理贴图,例如游戏中的角色、地图、天空等。

GLES20.GL_TEXTURE_CUBE_MAP:立方体纹理目标。适用于渲染立方体贴图,例如游戏中的天空盒、反射贴图等。

GLES20.GL_TEXTURE_EXTERNAL_OES:用于外部纹理目标,一般用于媒体流、相机等场景。可以使用SurfaceTexture将纹理输出到屏幕或其他纹理中。

GLES20.GL_TEXTURE_3D:三维纹理目标。适用于体积渲染,例如医学影像、地质勘探等。

GLES31.GL_TEXTURE_BUFFER:缓冲区纹理目标。适用于从缓冲区中读取数据并渲染。

GLES31.GL_TEXTURE_RECTANGLE:矩形纹理目标。可以用于需要快速绘制2D图形的场景,例如UI渲染、HUD显示等。

GLES30.GL_TEXTURE_2D_ARRAY:二维数组纹理目标。适用于渲染大量的重叠或不同分辨率的纹理,例如地图瓦片、卫星图像等。

GLES31.GL_TEXTURE_CUBE_MAP_ARRAY:立方体贴图数组目标。适用于同时渲染多个立方体贴图,例如游戏中的动态天空、多视角渲染等。

总之,不同的纹理目标适用于不同的场景,开发者需要根据具体的需求选择合适的目标类型,以达到最佳的渲染效果和性能。

pname

参数指定了要设置的纹理参数的名称,可以是以下值之一:
GL_TEXTURE_MIN_FILTER: 指定当纹理被缩小时如何过滤纹理像素,可以是GL_NEAREST(最近邻过滤)、GL_LINEAR(线性过滤)、GL_NEAREST_MIPMAP_NEAREST(使用最近邻过滤的Mipmap纹理)、GL_NEAREST_MIPMAP_LINEAR(使用线性过滤的Mipmap纹理)、GL_LINEAR_MIPMAP_NEAREST(使用最近邻过滤的Mipmap纹理)或GL_LINEAR_MIPMAP_LINEAR(使用线性过滤的Mipmap纹理)。

GL_TEXTURE_MAG_FILTER: 指定当纹理被放大时如何过滤纹理像素,可以是GL_NEAREST(最近邻过滤)或GL_LINEAR(线性过滤)。

GL_TEXTURE_WRAP_S和GL_TEXTURE_WRAP_T: 指定纹理坐标超出范围时应如何处理,可以是GL_CLAMP_TO_EDGE(纹理坐标会被截断为范围内的最大/最小值)、GL_REPEAT(纹理坐标将被重复)或GL_MIRRORED_REPEAT(纹理坐标将被重复,但是在每次重复时都会镜像翻转)。

param

参数指定了纹理参数的值,根据设置的参数不同可以有不同的取值,例如:
GL_NEAREST:使用最近邻过滤。

GL_LINEAR:使用线性过滤。

GL_CLAMP_TO_EDGE:纹理坐标会被截断为范围内的最大/最小值。

GL_REPEAT:纹理坐标将被重复。

GL_MIRRORED_REPEAT:纹理坐标将被重复,但是在每次重复时都会镜像翻转。

总之,GLES20.glTexParameteri函数可以用来控制纹理如何被过滤和包装,以及如何在纹理坐标超出范围时进行处理。

    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR)GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR)GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE)GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE)

Matrix.setIdentityM

Matrix.setIdentityM() 是 Android 的一个矩阵操作方法,它用于将一个矩阵设置为单位矩阵。单位矩阵是一个主对角线上所有元素都为1,其余元素都为0的方阵。

该方法的完整签名如下:

public static void setIdentityM(float[] sm, int smOffset)

其中,参数 sm 表示一个float类型的一维数组,它是要被设置为单位矩阵的目标矩阵。参数 smOffset 表示要设置的目标矩阵的起始位置。

该方法将目标矩阵从起始位置开始的元素设置为单位矩阵。由于Java中的数组下标从0开始,因此第一个元素的索引是 smOffset,而不是1。

以下是该方法的实现示例:

public static void setIdentityM(float[] sm, int smOffset) {for (int i = 0; i < 16; i++) {sm[smOffset + i] = ((i % 5 == 0) ? 1.0f : 0.0f);}
}

该实现通过一个循环遍历了矩阵的所有元素。对于每个元素,如果它在主对角线上,则将其设置为1,否则设置为0。

使用该方法可以方便地将一个矩阵设置为单位矩阵,从而方便后续的矩阵操作。

Matrix.setIdentityM(stMatrix, 0);

将矩阵 stMatrix 设置为单位矩阵。单位矩阵是一种特殊的矩阵,它不改变顶点的位置或方向。

为什么要调用setIdentityM设置为单位矩阵?
在 OpenGL 中,变换矩阵是用来对 3D 场景中的顶点进行变换的。每个变换操作(例如平移、旋转、缩放等)都可以表示为一个矩阵,这些矩阵可以组合使用来实现复杂的变换效果。

在进行变换矩阵的组合时,必须确保在最初的状态下,即没有进行任何变换时,变换矩阵的值是正确的。如果不是这样,那么组合变换操作时可能会导致意外的结果。

因此,在设置任何其他的变换操作之前,通常需要先将变换矩阵初始化为一个单位矩阵。单位矩阵是一种特殊的矩阵,它可以确保在组合变换操作时不会对顶点进行任何意外的变换。

因此,首先调用 Matrix.setIdentityM(stMatrix, 0) 方法将 stMatrix 矩阵设置为单位矩阵,以确保在应用任何其他变换之前,矩阵的值是正确的。

每次执行矩阵操作之前都需要调用setIdentityM吗?
在大多数情况下,不需要在每次执行变换矩阵操作之前都调用 setIdentityM 方法。通常情况下,只需要在创建变换矩阵时调用一次 setIdentityM 方法来初始化矩阵即可。

在接下来的变换操作中,可以直接对这个矩阵进行修改。例如,如果需要对一个顶点进行平移和旋转,可以先创建一个矩阵,然后使用 translateM 方法对其进行平移操作,使用 rotateM 方法对其进行旋转操作。在进行每个操作之前,不需要再调用 setIdentityM 方法。

但是,如果在多个变换操作之间需要重新开始,例如在处理多个对象时,可能需要将变换矩阵重置为单位矩阵,然后重新开始应用变换操作。在这种情况下,可以再次使用 setIdentityM 方法来将矩阵重置为单位矩阵。

Matrix.scaleM

用于将一个缩放矩阵应用于给定的矩阵。它的参数如下:

public static void scaleM(float[] m, int mOffset, float x, float y, float z)

m:要被缩放的矩阵,表示为一个长度为 16 的浮点数数组。
mOffset:矩阵中第一个元素的偏移量。
x:x 轴的缩放因子。
y:y 轴的缩放因子。
z:z 轴的缩放因子。

这些参数的含义如下:
m:这是一个长度为 16 的浮点数数组,表示要进行缩放操作的矩阵。缩放矩阵会将矩阵的每个元素乘以一个缩放因子,从而使得矩阵中的每个向量在对应的轴上被缩放。矩阵中的元素按照以下方式排列:

m[0]  m[4]  m[8]   m[12]
m[1]  m[5]  m[9]   m[13]
m[2]  m[6]  m[10]  m[14]
m[3]  m[7]  m[11]  m[15]

mOffset:这是矩阵中第一个元素的偏移量。如果要对整个矩阵进行缩放操作,则将 mOffset 设置为 0。如果只想缩放矩阵的一部分,可以将 mOffset 设置为相应的偏移量。
x:这是要应用于 x 轴的缩放因子。这个因子应该是一个浮点数,通常是大于 0 的数。如果该值为 1,则不会对矩阵进行任何缩放。如果该值大于 1,则会使矩阵在 x 轴方向上扩大;如果该值小于 1,则会使矩阵在 x 轴方向上缩小。
y:这是要应用于 y 轴的缩放因子,其含义与 x 轴相同。
z:这是要应用于 z 轴的缩放因子,其含义与 x 轴相同。
使用这些参数,Matrix.scaleM() 方法将计算一个缩放矩阵,并将其应用于给定的矩阵中。

针对于mOffset参数的理解
假设我们有一个 4x4 的矩阵 matrix,它表示了一个对象的变换矩阵,我们只想对这个矩阵的旋转部分进行缩放操作,而不想影响矩阵的平移部分。这时,我们可以将 mOffset 设置为矩阵中旋转部分的起始位置,然后调用 Matrix.scaleM() 方法对旋转部分进行缩放。

例如,假设我们的矩阵中的前三列表示了对象的旋转部分,而最后一列表示了对象的平移部分。我们可以将 mOffset 设置为 0,然后将 x、y、z 缩放因子设置为 1、2、1,以便只对旋转部分进行 y 轴方向上的缩放:

Matrix.scaleM(matrix, 0, 1, 2, 1);

这个方法会将矩阵的前三列中的所有元素乘以 1、2、1,从而对旋转部分进行 y 轴方向上的缩放。由于我们将 mOffset 设置为 0,因此这个操作只会影响前三列的元素,而不会影响最后一列的元素。这样,我们就可以只对矩阵的一部分进行缩放,而不影响其他部分。

glGetUniformLocation

Uniform变量是在着色器之间共享的全局变量,它们可以在多个绘制调用之间保持不变。可以使用glGetUniformLocation函数获取Uniform变量的位置,以便更新它们的值。

glGetUniformLocation函数的定义如下:

GLint glGetUniformLocation(GLuint program, const GLchar* name);

其中,program参数是一个已经连接的着色器程序对象的标识符,name参数是Uniform变量的名称。该函数返回Uniform变量的位置,如果Uniform变量未被找到,则返回-1。

例如,如果我们有以下的顶点着色器:

#version 330uniform mat4 modelViewProjectionMatrix;layout(location = 0) in vec4 position;void main()
{gl_Position = modelViewProjectionMatrix * position;
}

我们可以使用以下代码获取Uniform变量的位置并将其更新为一个新的4x4矩阵:

GLuint program = // 已连接的着色器程序对象
GLint matrixLocation = glGetUniformLocation(program, "modelViewProjectionMatrix");float matrixData[16] = // 新的4x4矩阵数据
glUniformMatrix4fv(matrixLocation, 1, GL_FALSE, matrixData);

在这个例子中,我们首先使用glGetUniformLocation函数获取了Uniform变量的位置。然后,我们使用glUniformMatrix4fv函数将新的4x4矩阵数据传递给该Uniform变量。glUniformMatrix4fv函数指定了Uniform变量的位置、要更新的矩阵数量、是否要转置矩阵数据以及矩阵数据的指针。

总之,glGetUniformLocation是一个很有用的函数,它使得我们能够在OpenGL程序中动态更新Uniform变量。

相关文章:

音视频开发系列(7)——Opengl常用Api介绍part1

GLES20.glTexParameteri GLES20.glTexParameteri是OpenGL ES 2.0用于设置纹理过滤器和纹理包装模式的函数。它有三个参数&#xff1a; target参数 target参数指定要设置纹理参数的纹理目标&#xff0c;根据不同的target值&#xff0c;glTexParameteri函数的行为也会有所不同…...

linux时间的特殊用法

今天介绍linux下Date时间命令相关的特殊用法 date (当前的时间) 修改系统当前时间&#xff1a; date -s "2022-6-20 9:33:50" 昨天的时间是我们比较常用的&#xff1a; date -d "yesterday" %Y%m%d ( 昨天的时间) date -d "1 day ago" %Y%m%d …...

axios 封装,API接口统一管理

分享一个自己封装的 axios 网络请求 主要的功能及其优点&#xff1a; 将所有的接口放在一个文件夹中管理&#xff08;api.js&#xff09;。并且可以支持动态接口&#xff0c;就是 api.js 文件中定义的接口可以使用 :xx 占位&#xff0c;根据需要动态的改变。动态接口用法模仿…...

SpringBoot使用Redis实现缓存

目录 实现步骤 1. 在 pom.xml 配置文件中添加如下依赖 2. 在 application.properties 中添加如下配置 3. 新建 RedisConfig.class&#xff0c;继承 CachingConfigurerSupport&#xff0c;添加如下方法 4. 新建 RedisService.class 添加如下方法 注意&#xff1a;cacheKey…...

[失业前端恶补算法]JavaScript leetcode刷题top100(三)

专栏声明&#xff1a;只求用最简单的&#xff0c;容易理解的方法通过&#xff0c;不求优化&#xff0c;不喜勿喷 今天更新五个 easy 难度题目&#xff1a; 相交链表 题面 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个…...

Spark RDD的设计与运行原理

一、Spark RDD概念 一个RDD就是一个分布式对象集合&#xff0c;本质上是一个只读的分区记录集合&#xff0c;每个RDD可以分成多个分区&#xff0c;每个分区就是一个数据集片段&#xff0c;并且一个RDD的不同分区可以被保存到集群中不同的节点上&#xff0c;从而可以在集群中的…...

Golang的下载与安装

Windows系统 进入golang官方下载网站:所有版本 - Go 编程语言如图所示 下载后打开您下载的 MSI 文件,然后按照提示安装 Go。 验证是否已安装 Go。...

广州蓝景分享—8大Web前端开发的趋势

2023 年 1 月 11 日&#xff0c;2022 年度 StateOfJS 调查结果正式公布&#xff01;StateOfJS 是前端生态圈中比较有影响力的且规模较大的数据调查。本文就来解读一下 2022 年 StateOfJS 的调查结果&#xff01; JavaScript 发展很快&#xff0c;但似乎 JavaScript 开发人员的…...

Java学习-MySQL-创建数据库表

Java学习-MySQL-创建数据库表 SHOW DATABASESUSE school CREATE TABLE IF NOT EXISTS student( id INT(10) NOT NULL AUTO_INCREMENT COMMENT 学号, name VARCHAR(30) NOT NULL DEFAULT 匿名 COMMENT 姓名, pws VARCHAR(20) NOT NULL DEFAULT 123456 COMMENT 密码, sex VARCHA…...

Ethercat学习-GD32以太网学习

文章目录1、GD32F4以太网简介2、以太网模框图简介3、以太网主要模块介绍SMI接口RMII接口与MII接口DMA控制器4、以太网配置流程5、其他1、GD32F4以太网简介 GD32F4系列以太网模块包含10/100Mbps以太网MAC&#xff0c;数据的收发都通过DMA进行操作&#xff0c;支持MII&#xff0…...

项目规模估算如何精准 4大注意事项

项目报价&#xff0c;需要首先进行项目规模估算&#xff0c;如何估算更精准&#xff0c;6大注意事项。 1、项目范围规划 在项目估算前&#xff0c;需要对项目范围进行规划&#xff0c;这包括所有活动以及开发可交付产品所需的流程。范围规划是前提&#xff0c;它明确定义了项目…...

低代码:助力乡村振兴事业开启“智慧模式”

伴随着脱贫攻坚目标任务的全面完成&#xff0c;我国“三农”工作重心历史性地转向全面推进乡村振兴&#xff0c;这也标志着我国农业农村工作迈上了一个新台阶。 什么是乡村振兴&#xff1f; 乡村振兴是新时代“三农”工作的总抓手&#xff0c;坚持农业农村优先发展&#xff0c;…...

Flutter——Isolate主线机制

简述 在DartFlutter应用程序启动时&#xff0c;会启动一个主线程其实也就是Root Isolate,在Root Isolate内部运行一个EventLoop事件循环。所以所有的Dart代码都是运行在Isolate之中的&#xff0c;它就像是机器上的一个小空间&#xff0c;具有自己的私有内存块和一个运行事件循…...

提取游戏《Limbus Company》(边狱公司)内素材

授人以鱼&#xff0c;不如授人以渔。 目录 注意事项 寻找音频文件 .bytes转为.fsb 必备工具 步骤 解决乱码 必备工具 步骤 提取.fsb文件 必备工具 可备工具 步骤 注意事项 文章关于出现乱码的处理方法和与编码相关的部分有误&#xff0c;已于2023/3/10更正。 相关…...

学生信息表

目录 一、功能说明 二、核心思想 三、所用知识回顾 四、基本框架 五、js功能实现部分 一、功能说明 &#xff08;1&#xff09;输入对应的信息&#xff0c;点击录入可以为下面的表格添加一条记录&#xff0c;注意当所填信息不完整时不允许进行提交。 &#xff08;2&…...

FOTA在AUTOSAR中的应用

FOTA介绍 FOTA(Firmware Over-The-Air)移动终端的空中下载软件升级,指通过云端升级技术,为具有连网功能的设备:例如手机、平板电脑、便携式媒体播放器、移动互联网设备等提供固件升级服务,用户使用网络以按需、易扩展的方式获取智能终端系统升级包,并通过FOTA进行云端升…...

2023/3/10 Vue核心知识的学习- Vue - v-model双向绑定原理

https://www.jianshu.com/p/2682b5a26869 定义&#xff1a;vue中双向绑定就是指v-model指令&#xff0c;可以绑定一个响应式数据到视图&#xff0c;同时视图中变化能同步改变该值。 通过Object.defineProperty( )对属性设置一个set函数&#xff0c;当数据改变了就会来触发这个…...

面朝大海,春暖花开丨2023年Kaadas凯迪仕全国经销商大会成功召开

3月8日&#xff0c;We——2023年Kaadas凯迪仕全国经销商大会将在中国青岛星光岛会议中心隆重举行&#xff0c;盛会汇聚了超过1000名优秀合作伙伴&#xff0c;规模空前。Kaadas凯迪仕品牌创始人&集团总裁苏志勇先生、集团董事长苏祺云先生以及各高层领导均莅临现场。 大会伊…...

【ubuntu】安装cuda+anaconda的docker环境,并用Vscode远程访问

目录下载英伟达docker配置docker的基本安装环境为vscode安装ssh服务安装anaconda下载英伟达docker docker pull nvidia/cuda配置docker的基本安装环境 apt-get install sudo sudo apt-get update sudo apt-get install wget sudo ps -e|grep ssh为vscode安装ssh服务 sudo ap…...

Python(青铜时代)——容器类的公共方法

内置函数 内置函数&#xff1a;不需要使用 import 导入库&#xff0c;就可以直接使用的函数 函数描述备注len(&#xff09;计算容器中元素个数del( )删除变量max( )返回容器中元素最大值如果是字典&#xff0c;只针对key比较min( )返回容器中元素最小值如果是字典&#xff0c…...

利用canvas给图片添加水印

前言前两天给个人网站添加了一个小功能&#xff0c;就是在文章编辑上传图片的时候自动给图片加上水印。给网页图片添加水印是个常见的功能&#xff0c;也是互联网内容作者保护自己版权的方法之一。本文简单记录一下借助canvas在前端实现图片添加水印的实现方法。canvas元素其实…...

保姆级使用PyTorch训练与评估自己的MobileViT网络教程

文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址&#xff1a;https://github.com/Fafa-DL/Awesome-Backbones 操作教程&#xff1a;https://www.bilibili.co…...

Giscus,由 GitHub Discussions驱动的评论系统

在创建网站或博客时&#xff0c;许多人都希望能够为其内容提供评论功能&#xff0c;以与用户进行交流和互动。然而&#xff0c;实现这一点可能会非常复杂&#xff0c;需要处理许多不同的问题&#xff0c;如身份验证、反垃圾邮件、跨站脚本攻击等。为了帮助解决这些问题&#xf…...

【JSON文件解析】JSON文件

文章目录概要&#xff1a;本期主要介绍Qt解析JSON数据格式文件的方式。一、JSON数据格式1.JSON类似于XML&#xff0c;在JSON文件中&#xff0c;有且只有一个根节点2.JSON有两种主流包含型构造字符&#xff1a;{对象}、[数组]3.JSON的值主要包括&#xff1a;对象、数组、数字、字…...

OpenGL超级宝典学习笔记:纹理

前言 本篇在讲什么 本篇章记录对OpenGL中纹理使用的学习 本篇适合什么 适合初学OpenGL的小白 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理…...

主辅助服务市场出清模型研究【旋转备用】(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…...

不用费劲,这5款效率工具为你解决学习工作烦恼

今天我要向大家推荐5款超级好用的效率软件&#xff0c;无论是在学习还是办公中都能够极大地提高效率。这些软件可以帮助你解决许多问题&#xff0c;而且每个都是真正的神器。 1.键盘仿真鼠标——NeatMouse NeatMouse 是一个小型的工具能够使用鼠标光标控制指针。当你的鼠标不…...

PostgreSQL 数据库大小写规则

PostgreSQL 数据库对大小写的处理规则如下&#xff1a; 严格区分大小写默认把所有 SQL 语句都转换成小写再执行加双引号的 SQL 语句除外 如果想要成功执行名称中带有大写字母的对象&#xff0c;则需要把对象名称加上双引号。 验证如下&#xff1a; 想要创建数据库 IZone&…...

【springmvc】执行流程

SpringMVC执行流程 原理图 1、SpringMVC常用组件 DispatcherServlet&#xff1a;前端控制器&#xff0c;不需要工程师开发&#xff0c;由框架提供 作用&#xff1a;统一处理请求和响应&#xff0c;整个流程控制的中心&#xff0c;由它调用其它组件处理用户的请求 HandlerMa…...

什么是AIGC?

目录前言一、什么是AIGC&#xff1f;1、什么是PGC&#xff1f;2、什么是UGC&#xff1f;3、什么是PUCG&#xff1f;4、什么是AIGC&#xff1f;二、总结前言 很明显&#xff0c;ChatGPT的爆火&#xff0c;带动了AIGC&#xff08;AI-Generated Content&#xff09;概念的火热。 …...

郑州电子商务网站建设/太原企业网站建设

2019独角兽企业重金招聘Python工程师标准>>> 北极星是北方天空的标志。古代天文学家对北极星非常尊崇&#xff0c;认为它固定不动&#xff0c;众星都绕着它转。北极星属于小熊星座&#xff0c;距地球约400光年&#xff0c;是夜空能看到的亮度和位置较稳定的恒星。由…...

十堰高端网站建设/优秀网站

1.准备软件 Powerdesigner PostgreSQL PostgreSQL ODBC驱动程序: psqlODBC&#xff0c;网址&#xff1a;PostgreSQL: File Browser 2. 安装PostgreSQL的ODBC驱动程序 双击运行 3.配置PostgreSQL的ODBC驱动程序 开始-》控制面板-》管理工具-》数据源&#xff08;ODBC&#xff…...

西部数码空间的网站访问统计/品牌推广案例

查看当前的电源管理配置&#xff1a; pmset -g 查看所有电源管理配置&#xff1a; pmset -g custom 修改外接电源供电状态下电源管理配置&#xff1a; sudo pmset -c <option> <value> 修改电池供电状态下电源管理配置&#xff1a; sudo pmset -b <option> …...

网站美编设计怎么做/站长工具中文精品

试试数据库设置排序规则为utf8_unicode_ci&#xff1a; 也可以试试jdbcUrl后添加&#xff1a;useUnicodetrue&characterEncodingUTF-8...

做商城网站需要的功能/做网站排名优化的公司

1.函数的作用&#xff1a;使用调用者自定义的函数&#xff0c;根据键值&#xff0c;返回数组的差集&#xff1b; 2.函数的参数&#xff1a; params array $array1 被比较的数组 params array $array2 比较的数组 params array $array3 比较的数组 ... 3.注意点&#xff1a; 1…...

网站内容被攻击该怎么做/免费发广告的平台

文献&#xff08;电子所&#xff09;文献名[1]&#xff1a;詹学丽, et al., 一种用于合成孔径雷达的数字去斜方法. 雷达学报, 2015. 4(04): p. 474-480文章摘要该文提出了一种用于合成孔径雷达&#xff08;SAR&#xff09;的数字去斜方法&#xff0c;适用于发射信号脉冲宽度能够…...