C语言(指针练习2)
-
编写函数,要求用指针做形参,分别实现以下功能: (1)求一个字符串长度 (2)在一个字符 串中统计大写字母的个数 (3)在一个字符串中统计数字字符的个数
#include <stdio.h>int str1(const char *str) {int length = 0;while (*str != '\0'){length++;str++;}return length; } int str2(const char *str) {int count = 0;while (*str != '\0'){if (*str >= 'A' && *str <= 'Z'){count++;}str++;}return count; } int str3(const char *str) {int count = 0;while (*str != '\0'){if (*str >= '0' && *str <= '9'){count++;}str++;}return count; }int main(int argc, char *argv[]) {char str[] = "Hello,World! 123\n";printf("字符串的长度为:%d\n", str1(str));printf("字符串中大写字母的个数为:%d\n", str2(str));printf("字符串中数字的个数为:%d\n", str3(str));return 0; }
在主函数中,定义了一个字符串str,并调用了str1、str2和str3函数来输出字符串的长度、大写字母的个数和数字的个数。
代码分析如下:
str1函数:通过使用指针遍历字符串的每个字符,每遍历一个字符,就将长度加1,直到遇到字符串的结束符’\0’,返回长度。
str2函数:同样使用指针遍历字符串的每个字符,如果字符是大写字母,则计数器加1,返回计数器的值。
str3函数:同样使用指针遍历字符串的每个字符,如果字符是数字,则计数器加1,返回计数器的值。
主函数中,定义了一个字符串str,并将其作为参数传递给str1、str2和str3函数,分别输出字符串的长度、大写字母的个数和数字的个数。
最后,返回0表示程序执行成功结束。
-
编写函数,要求用指针做形参,实现将二维数组(行列相同)的进行转置(行列数据互换): int (*p)[N]
#include <stdio.h> #define N 3 // 假设二维数组是 3x3 的void trans(int (*p)[N], int size) {for (int i = 0; i < size; i++){for (int j = 1 + i; j < size; j++){int temp = p[i][j];p[i][j] = p[j][i];p[j][i] = temp;}} } void get2(int (*p)[N], int size) {for (int i = 0; i < size; i++){for (int j = 0; j < size; j++){printf("%d ", p[i][j]);}printf("\n");} }int main(int argc, char *argv[]) {int array[N][N] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};printf("转置前的数组:\n");get2(array, 3);trans(array, 3);printf("转置后的数组:\n");get2(array, 3);return 0; }
代码分析如下:
str1函数:通过使用指针遍历字符串的每个字符,每遍历一个字符,就将长度加1,直到遇到字符串的结束符’\0’,返回长度。
str2函数:同样使用指针遍历字符串的每个字符,如果字符是大写字母,则计数器加1,返回计数器的值。
str3函数:同样使用指针遍历字符串的每个字符,如果字符是数字,则计数器加1,返回计数器的值。
主函数中,定义了一个字符串str,并将其作为参数传递给str1、str2和str3函数,分别输出字符串的长度、大写字母的个数和数字的个数。
最后,返回0表示程序执行成功结束。
-
编写函数,要求用指针做形参,实现统计二维数组上三角中的0 的数量:
#include <stdio.h>// 函数声明,统计二维数组上三角中0的数量 int coun(int *matrix, int rows, int cols) {int count = 0;for (int i = 0; i < rows; i++){for (int j = i + 1; j < cols; j++){if (*(matrix + i * cols + j) == 0){count++;}}}return count; }int main() {int matrix[3][3] = {{1, 0, 0},{0, 3, 0},{4, 0, 0}};int rows = 3;int cols = 3;int zeroCount = coun((int *)matrix, rows, cols);printf("上三角中的0的数量: %d\n", zeroCount);return 0; }
这段代码实现了一个函数coun,该函数用于统计二维数组上三角中0的数量。函数接受一个指向二维数组的指针,以及数组的行数和列数作为参数。在函数内部,使用嵌套的循环遍历二维数组的上三角部分,即i < j的元素,如果元素的值为0,则将计数器加1。最后,函数返回计数器的值。
在main函数中,声明一个3x3的二维数组matrix,并初始化值。然后,调用coun函数,传入matrix的指针以及行数和列数作为参数。最后,打印出上三角中0的数量。
代码的输出结果为:上三角中的0的数量: 4
-
编写一个指针函数,返回二维数组中最大元素的地址。
#include <stdio.h>// 函数声明,返回指向二维数组中最大元素的指针 int *find(int *array, int rows, int cols) {int max = array[0];int *maxptr = &array[0];for (int i = 0; i < rows; i++){for (int j = 0; j < cols; j++){int *cur = &array[i * cols + j];if (*cur > max){max = *cur;maxptr = cur;}}}return maxptr; }int main() {int array[3][4] = {{1, 3, 5, 7},{2, 6, 9, 4},{8, 0, 10, 12}};int rows = 3;int cols = 4;// 调用函数并获取最大元素的地址int *maxEle = find((int *)array, rows, cols);// 打印最大元素的值和它的地址printf("最大元素为: %d\n", *maxEle);printf("最大元素的地址为: %p\n", maxEle);return 0; }
在main函数中定义了一个3行4列的二维数组array,然后调用find函数并传入数组的首地址(int *)array,以及数组的行数和列数。
在find函数中,首先定义了一个变量max来保存最大的元素值,以及一个指针变量maxptr来保存最大元素的地址。
然后使用两个嵌套的循环遍历二维数组的每一个元素,通过计算当前元素在一维数组中的索引i * cols + j来访问元素。
在循环中,将当前元素的地址保存在指针变量cur中,然后判断当前元素是否大于max,如果是,则更新max和maxptr的值。
最后,find函数返回maxptr,即最大元素的地址。
在main函数中,通过printf函数打印最大元素的值和它的地址。
整个程序的执行结果将会输出为:
最大元素为: 12 最大元素的地址为: 0x7fffa4d37268
-
面试题
1)定义整形变量i; // int i;
2)p为指向整形变量的指针变量; // int* p = &i;
3)定义整形一维数组p,它有n 个整形元素; // int n = 10, p[n];
4)定义一维指针数组p,它有n个指向整形变量的指针元素; // int *p[n];
5)定义p为指向(含有n个整形元素的一维数组)的指针变量;
6)p为返回整形函数值的函数; // int p(){}
7)p为返回一个指针的函数,该指针指向整形数据; // int* p(){}
8)p为指向函数的指针变量,该函数返回一个整形值; // int (*p)(int);
9)p是一个指向整形指针变量的指针变量; // int** p;
-
动态申请一个具有10个float类型元素的内存空间,从一个已有的数组中拷贝数据,并找出第一次出现 12.35 的下标位置,并输出。
#include <stdio.h> #include <stdlib.h>int main() {// 已有的数组float originalArray[] = {1.1, 2.2, 3.3, 12.35, 4.4, 5.5, 12.35, 6.6, 7.7, 8.8};int originalSize = sizeof(originalArray) / sizeof(originalArray[0]);int copySize = 10; // 我们想要拷贝的元素数量// 动态分配内存float *dynamicArray = (float *)malloc(copySize * sizeof(float));if (dynamicArray == NULL){printf("Memory allocation failed\n");return 1; // 分配失败,返回错误代码}// 拷贝数据for (int i = 0; i < copySize && i < originalSize; i++){dynamicArray[i] = originalArray[i];}// 查找12.35的下标int index = -1; // 初始化下标为-1,表示未找到for (int i = 0; i < copySize; i++){if (dynamicArray[i] == 12.35){index = i; // 找到后更新下标break; // 找到第一个就退出循环}}// 输出结果if (index != -1){printf("The first occurrence of 12.35 is at index %d in the dynamic array.\n", index);}else{printf("12.35 not found in the dynamic array.\n");}// 释放动态分配的内存free(dynamicArray);return 0; }
首先,已经有一个包含一些浮点数的原始数组originalArray。通过sizeof运算符,我们可以得到originalArray的元素数量originalSize。
然后,我们定义了一个变量copySize,表示我们希望拷贝的元素数量。copySize的值被设置为10。
接下来,我们使用malloc函数动态分配了copySize个float类型的内存空间,并将返回的指针赋给dynamicArray。如果内存分配失败(即dynamicArray为NULL),则输出错误消息,并返回1结束程序。
然后,我们使用一个for循环来将originalArray中的元素拷贝到dynamicArray中。仅当拷贝的元素数量小于copySize且小于originalSize时,才进行拷贝。
接下来,我们使用一个for循环在dynamicArray中查找值为12.35的第一个元素的下标。如果找到了,我们将下标赋给变量index,并使用break语句退出循环。如果未找到,index的值保持为-1。
最后,根据index的值,我们输出结果。如果index不等于-1,则表示找到了值为12.35的元素,输出其下标。否则,输出未找到的消息。
最后,我们使用free函数释放动态分配的内存。
总体来说,这段代码可以在动态数组中查找特定值的下标,并输出结果。
-
动态申请一个整型数组,并给每个元素赋值,要求删除第3个元素;
#include <stdio.h> #include <stdlib.h>int main() {int n = 10; // 数组的大小int *array = (int *)malloc(n * sizeof(int)); // 动态分配内存if (array == NULL){printf("Memory allocation failed\n");return 1;}// 给数组元素赋值for (int i = 0; i < n; i++){array[i] = i + 1; // 假设数组元素为1, 2, 3, ..., 10}// 打印原始数组printf("Original array:\n");for (int i = 0; i < n; i++){printf("%d ", array[i]);}printf("\n");// 模拟删除第3个元素(索引为2)int indexToDelete = 2;if (indexToDelete >= 0 && indexToDelete < n - 1){ // 确保索引有效且不是最后一个元素for (int i = indexToDelete; i < n - 1; i++){array[i] = array[i + 1]; // 将后续元素向前移动}n--; // 更新数组的实际大小(注意:这里的n只是用于逻辑上的大小,内存大小仍然是原来的)}else{printf("Invalid index for deletion\n");}printf("Array after simulating deletion of element at index 2:\n");for (int i = 0; i < n; i++){ // 注意:这里使用更新后的nprintf("%d ", array[i]);}printf("\n");// 释放动态分配的内存(注意:即使我们“删除”了一个元素,内存大小仍然是原来的)free(array);return 0; }
-
动态申请一个整型数组,并给每个元素赋值,要求在第4个元素后插入100;
#include <stdio.h> #include <stdlib.h>int main() {int n = 10; // 初始数组的大小int *array = (int *)malloc(n * sizeof(int)); // 动态分配内存if (array == NULL){printf("Memory allocation failed\n");return 1;}// 给数组元素赋值for (int i = 0; i < n; i++){array[i] = i + 1; // 假设数组元素为1, 2, 3, ..., 10}// 打印原始数组printf("Original array:\n");for (int i = 0; i < n; i++){printf("%d ", array[i]);}printf("\n");// 插入新元素的位置(在第4个元素后,即索引为3之后)int insertIndex = 3;// 重新分配内存以容纳新元素int *newArray = (int *)realloc(array, (n + 1) * sizeof(int));if (newArray == NULL){printf("Memory reallocation failed\n");free(array); // 不要忘记释放原始内存return 1;}array = newArray; // 更新指针// 将新元素插入到指定位置for (int i = n; i > insertIndex; i--){array[i] = array[i - 1]; // 将后续元素向后移动}array[insertIndex] = 100; // 插入新元素// 更新数组大小n++;// 打印修改后的数组printf("Array after inserting 100 at index %d:\n", insertIndex);for (int i = 0; i < n; i++){printf("%d ", array[i]);}printf("\n");// 释放动态分配的内存free(array);return 0; }
首先,在程序开始处,使用了函数malloc来动态分配了一个大小为n的整型数组array。如果内存分配失败,会打印"Memory allocation failed"并返回1。
然后,使用循环给数组元素赋值,假设数组元素为1, 2, 3, …, 10。
接下来,打印原始数组。
然后,指定插入新元素的位置,这里是在第4个元素后面。
然后,使用函数realloc重新分配内存,把原始的数组array扩展一个元素的大小。如果内存重新分配失败,会打印"Memory reallocation failed",释放原始内存并返回1。
然后,将newArray赋值给array,更新指针。
然后,使用循环将插入位置之后的元素依次向后移动。
然后,将新元素100插入到指定位置。
然后,更新数组大小。
然后,打印修改后的数组。
最后,使用函数free释放动态分配的内存。
整个程序的功能是在数组的指定位置插入一个新元素,并打印修改后的数组。
-
控制台输入一个n,要求创建一个n行n列的数列,求对角线上元素的和,要求使用指针实现
#include <stdio.h> #include <stdlib.h>// 函数声明 int sumDiagonal(int** matrix, int n);int main() {int n;printf("请输入一个整数 n: ");scanf("%d", &n);// 动态分配内存给二维数组(矩阵)int** matrix = (int**)malloc(n * sizeof(int*));for (int i = 0; i < n; i++) {matrix[i] = (int*)malloc(n * sizeof(int));}// 初始化矩阵元素(这里为了示例简单,将矩阵元素初始化为行号和列号的和)for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {matrix[i][j] = i + j;}}// 打印矩阵printf("矩阵为:\n");for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {printf("%d ", matrix[i][j]);}printf("\n");}// 计算对角线上元素的和int sum = sumDiagonal(matrix, n);printf("对角线上元素的和为: %d\n", sum);// 释放内存for (int i = 0; i < n; i++) {free(matrix[i]);}free(matrix);return 0; }// 计算对角线上元素的和的函数 int sumDiagonal(int** matrix, int n) {int sum = 0;for (int i = 0; i < n; i++) {sum += matrix[i][i]; // 主对角线// sum += matrix[i][n-i-1]; // 如果需要副对角线,取消注释}// 注意:如果包括副对角线,需要确保 n 是奇数或者调整逻辑以避免重复计算中心元素(对于奇数 n)return sum; }
-
.附加题【选做】: 编写⼀个函数,实现 memmove 的功能。
// 实现memmove的功能
void* work15(void* to, const void* from, unsigned long count)
{
for(int i = 0; i < count; i++)
{
*(char*)(to + i) = *(char*)(from + i);
}
return to;
}
相关文章:
C语言(指针练习2)
编写函数,要求用指针做形参,分别实现以下功能: (1)求一个字符串长度 (2)在一个字符 串中统计大写字母的个数 (3)在一个字符串中统计数字字符的个数 #include <stdio.h>int str…...
ES6学习Symbol(五)
这里写目录标题 一、概述二、代码 一、概述 ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。 它是 JavaScript 语言的第七种数据类型,前六种是: undefined 、 null 、布尔值(Boolean)、字符串(St…...
简易分页制作
简易分页功能实现 分页是一种常见的前端功能,特别是在需要展示大量数据时。它通过将数据分割成多个页面,帮助用户更容易浏览并提高页面加载性能。本文将介绍一个简易分页的实现思路及其代码实现,旨在帮助开发者快速理解并实现分页功能。 功…...
概率论得学习和整理27:关于离散的数组 随机变量数组的均值,方差的求法3种公式,思考和细节。
目录 1 例子1:最典型的,最简单的数组的均值,方差的求法 2 例子1的问题:例子1只是1个特例,而不是普遍情况。 2.1 例子1各种默认假设,导致了求均值和方差的特殊性,特别简单。 2.2 我觉得 加权…...
arXiv-2024 | NavAgent:基于多尺度城市街道视图融合的无人机视觉语言导航
作者:Youzhi Liu, Fanglong Yao*, Yuanchang Yue, Guangluan Xu, Xian Sun, Kun Fu 单位:中国科学院大学电子电气与通信工程学院,中国科学院空天信息创新研究院网络信息系统技术重点实验室 原文链接:NavAgent: Multi-scale Urba…...
WPF 布局控件
wpf 布局控件有很多,常用的有:Grid, UniformGrid, Border, StackPanel, WrapPanel, DockPanel。 1. Grid Grid 经常作为控件的 Content 使用,常作为 Windows, UserControl 等 UI 元素的根节点。它用来展示一个 n 行 n 列的排版。 因此就有…...
在Mac电脑上安装adb环境
当你在命令行输入 adb version 或adb devices, 报错:zsh: command not found: adb ,那么说明你的 Mac 上没有安装 ADB(Android Debug Bridge),或者它没有添加到你的路径中。你可以按照以下步骤安装和配置 ADBÿ…...
方正畅享全媒体新闻采编系统 reportCenter.do SQL注入漏洞复现
0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…...
Linux SHELL脚本中的常用命令
一.设置主机名称 1.文件的方式 [rootlocalhost 桌面]# vim /etc/hostname [rootlocalhost 桌面]# cat /etc/hostname shell.aaa.org 修改完毕文件后在当前的shell中是不生效的 如果需要看到效果,关闭当前shell后重新开启新的shell 2.通过命令更改主机名 [rootl…...
Go语言启动独立进程
文章目录 问题解决方案1. **将 npc.exe 启动为独立的进程**2. **修改 exec.Command 函数**示例代码解释为什么这样有效注意 问题 在你当前的代码中,调用 exec.Command("XXX.exe") 启动 XXX.exe 程序时,这个程序是由 Go 程序直接启动的。如果 …...
STM32中ADC模数转换器
一、ADC简介 ADC模拟-数字转换器 ADC可以将引脚连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 12位逐次逼近型ADC,1us转换时间 输入电压范围: 0~3.3V,转换结果范围:0~4095 18个输入…...
为什么要用单例模式?
单例模式是一种创建型设计模式,用于确保某个类只有一个实例,并提供一个全局访问点,使得其他类可以轻松访问该实例。 使用单例模式的主要原因包括以下几点: 确保唯一性:在某些情况下,我们需要确…...
线性表查找:Python 实现与性能分析
引言 在数据处理领域,查找操作是一项基础且关键的任务。线性表作为一种常见的数据结构,其查找算法的效率直接影响程序的性能。本文将深入探讨线性表查找的原理、Python 实现以及性能分析,为你揭示如何在 Python 中高效地进行线性表查找。 一…...
QT3学习之进阶理解信号和槽:如何自定义一个类信号,供其它类调用槽函数
下面是QWidget源码,定义了两个事件 /*!This event handler can be reimplemented in a subclass to receivewidget enter events.An event is sent to the widget when the mouse cursor enters thewidget.\sa leaveEvent(), mouseMoveEvent(), event() */void QWi…...
(Image Signal Processor)ISP简介
文章目录 ISP功能简介ISP的主要功能ISP的主要模块1. **黑电平校正(Black Level Correction, BLC)**2. **噪声去除(Denoise)**3. **色彩校正(Color Correction Matrix, CCM)**4. **自动曝光(Auto…...
upload-labs靶场保姆级攻略
第一关:删除前端js校验 写一个一句话木马,命名为1.php 一句话木马 浏览上传 我们发现不可以上传,右键检查,依次点击 找到return checkFile()删掉,再上传 去看一下是否已经写入进去一句话木马 页面什么也没有ÿ…...
02、10个富士胶片模拟的设置
二色彩 1、色彩的加减控制全局的饱和度增减; 2、色彩效果只提升暖色系饱和度; 3、FX蓝色大幅度提升蓝色系饱和度; 4、三个参数都不改变颜色的色相。 2.1 色彩 色彩调整的是拍摄画面整体的色彩饱和程度 2.2色彩效果 调整的是画面中暖色…...
大模型呼出机器人详解
大模型呼出机器人详解 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 大模型呼出机器人是基于大规模深度学习模型构建的智能化客服系统,它能够处理海量数据并学习其中的规律,从而实现高…...
计算机基础知识——数据结构与算法(三)(山东省大数据职称考试)
大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 数据结构与算法…...
【Unity功能集】TextureShop纹理工坊(三)图层(下)
项目源码:在终章发布 索引 图层渲染绘画区域图层Shader 编辑器编辑模式新建图层设置当前图层上、下移动图层删除图层图层快照 图层 在PS中,图层的概念贯穿始终(了解PS图层),他可以称作PS最基础也是最强大的特性之一。…...
基于 SSM 框架 Vue 电脑测评系统:引领电脑评测新方向
4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…...
Android笔记【19】
具体示例 run: val result someObject.run {// 这里可以使用 thisthis.someMethod() }let: val result someObject?.let {// 这里使用 itit.someMethod() }with: val result with(someObject) {// 这里使用 thissomeMethod() }apply: val obj SomeClass().apply {// 这里使…...
Redis 中 IntSet 底层数据结构
IntSet 底层数据结构 序言: 像字符串 SDS 只是保存了一个变量的值,但是像 Redis 中也是需要保存一些集合元素的,这里就介绍一下其中一种集合 IntSet,由于是 Set 所以也有 Set 的一些特性,不过也多加了一些特性: ● 唯…...
自然语言处理:我的学习心得与笔记
Pytorch 1.Pytorch基本语法 1.1 认识Pytorch 1.2 Pytorch中的autograd 2.Pytorch初步应用 2.1 使用Pytorch构建一个神经网络 2.2 使用Pytorch构建一个分类器 小节总结 学习了什么是Pytorch. 。Pytorch是一个基于Numpy的科学计算包,作为Numpy的替代者,向用户提供使用GPU强大…...
Altair: 轻松创建交互式数据可视化
Altair: 轻松创建交互式数据可视化 Altair 是一个基于 Vega-Lite 的 Python 数据可视化库,它旨在简化数据可视化的创建过程,尤其适用于统计图表的生成。Altair 强调声明式编码方式,通过简单的语法,用户能够快速创建复杂的交互式图…...
【NLP】序列到序列(seq2seq)建模工具fairseq使用详解
文章目录 一、fairseq简介二、安装方式2.1 pip安装2.2 源码安装 三、fairseq命令工具3.1 fairseq-preprocess3.2 fairseq-train3.3 fairseq-generate3.4 fairseq-interactivate3.5 fairseq-score3.6 fairseq-eval-lm 4. 常见报错报错1 参考资料 一、fairseq简介 fairseq 是 Fa…...
[极客大挑战 2019]HardSQL 1
[极客大挑战 2019]HardSQL 1 打开实例,发现是个登陆页面,查看源代码,发现又是GET提交check.php 万能密码尝试 不太行,怀疑字段或者空格被过滤,尝试闭合不加其他东西 确认空格、union、and等都被过滤了,尝试…...
天空分割代码
目录 依赖项: 分割源代码: 依赖项: groundingdino Grounded-Segment-Anything 分割源代码: generate_sky_mask.py import os, syssys.path.append(os.getcwd()) # Change to your folder here sys.path.append(Grounded-Segment-Anything)import argparse import os…...
Leetcode 三角形最小路径和
算法思想与代码详解 这段代码采用的是**动态规划(Dynamic Programming)**的思想,用来解决“120. 三角形最小路径和”问题。动态规划通过将问题分解成更小的子问题,并通过保存子问题的解来避免重复计算,从而提高效率。…...
[Unity]Unity跨平台开发之Android入门
安卓环境配置 安装依赖项 推荐使用Unity Hub进行安装,安装时勾选Android Build Support、Android SDK & NDK Tools、OpenJDK。或者指定已安装的依赖项。(注意:指定的依赖项需要是从UnityHub安装的。比如之前安装Unity2022时勾选了上述依…...
搭建Flume
title: 搭建Flume date: 2024-11-30 23:59:00 categories: - 服务器 tags: - Flume - 大数据搭建Flume 本次实验环境:Centos 7-2009、JDK 8、Flume-1.11.0 开始安装 1. 下载安装文件到服务器 # 使用wget命令下载flume文件(二选一) wget …...
【从零开始入门unity游戏开发之——C#篇10】循环结构——while、do-while、for、foreach的使用
文章目录 一、while 循环1、语法:2、示例: 二、 do-while 循环1、语法:2、示例: 三、for 循环1、语法:2、示例: 四、foreach 循环1、语法:2、示例: 五、总结对比六、注意事项七、使用…...
flask flask-socketio创建一个网页聊天应用
应用所需环境: python 3.11.11 其他 只需要通过这个命令即可 pip install flask3.1.0 Flask-SocketIO5.4.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 最好是用conda创建一个新的虚拟环境来验证 完整的pip list如下 Package Version ----…...
MVCC了解
MVCC(多版本并发控制)学习指南及代码示例 一、学习MVCC前先了解什么 1. MVCC的定义和作用 MVCC是一种并发控制机制,用于解决并发事务访问数据库时可能出现的问题,如脏读、不可重复读和幻读。它通过为每个数据行维护多个版本来实…...
LabVIEW随机扫描成像系统
利用LabVIEW开发了一套随机扫描成像系统,利用硬件时钟实现声光偏转器(AOD)的频率控制与信号采集之间的高速时间同步。系统利用了高精度的时钟同步技术,确保了成像精度和重复性,从而有效提高了成像速度和质量。 项目背景…...
系统移植——Linux 内核顶层 Makefile 详解
一、概述 Linux Kernel网上下载的版本很多NXP等有自己对应的版本。需要从网上直接下载就可以。 二、Linux内核初次编译 编译内核之前需要先在 ubuntu 上安装 lzop 库 sudo apt-get install lzop 在 Ubuntu 中 新 建 名 为 “ alientek_linux ” 的 文 件夹 , …...
【一文了解】C#重点-委托1
本篇文章来学习一下C#的委托,委托是C#中的一个重要概念,它允许将方法作为参数传递给其他方法。C#中的委托类似于C或C中的函数指针,并且类型安全。 委托 1.委托的定义 委托(delegate)是方法的代理/代表,委托…...
LeetCode hot100-87
https://leetcode.cn/problems/longest-increasing-subsequence/?envTypestudy-plan-v2&envIdtop-100-liked 300. 最长递增子序列 已解答 中等 相关标签 相关企业 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列&a…...
项目26:简易在线论坛 --- 《跟着小王学Python·新手》
项目26:简易在线论坛 — 《跟着小王学Python新手》 《跟着小王学Python》 是一套精心设计的Python学习教程,适合各个层次的学习者。本教程从基础语法入手,逐步深入到高级应用,以实例驱动的方式,帮助学习者逐步掌握Pyth…...
知乎 PB 级别 TiDB 数据库集群管控实践
以下文章来源于知乎技术专栏 ,作者代晓磊 导读 在现代企业中,数据库的运维管理至关重要,特别是面对分布式数据库的复杂性和大规模集群的挑战。作为一款兼容 MySQL 协议的分布式关系型数据库,TiDB 在高可用、高扩展性和强一致性方…...
Intel(R) Iris(R) Xe Graphics安装Anaconda、Pytorch(CPU版本)
一、Intel(R) Iris(R) Xe Graphics安装Anaconda 下载网址:https://repo.anaconda.com/archive/ 双击Anaconda3-2024.10-1-Windows-x86_64,一直下一步,选择安装的路径位置,一直下一步就安装完成了。打开Anaconda PowerShell Promp…...
RK3588 , mpp硬编码rgb, 保存MP4视频文件.
RK3588 , mpp硬编码yuv, 保存MP4视频文件. ⚡️ 传送 ➡️ RK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGBRk3588 FFmpeg 拉流 RTSP, 硬解码转RGBUbuntu x64 架构, 交叉编译aarch64 FFmpeg mppCode Init MppMPP_RET init_mpp...
揭开 Choerodon UI 拖拽功能的神秘面纱
01 引言 系统的交互方式主要由点击、选择等组成。为了提升 HZERO 系统的用户体验、减少部分操作步骤,组件库集成了卓越的拖拽功能,让用户可以更高效流畅的操作系统。 例如:表格支持多行拖拽排序、跨表数据调整、个性化调整列顺序࿱…...
常用网络协议简述
网络协议是计算机网络中规定数据交换格式和交换规则的一套标准。以下是一些常用的网络协议及其简要解释: HTTP(HyperText Transfer Protocol,超文本传输协议) 用于从网络传输超文本数据到本地浏览器的传输协议。基于TCP协议&…...
本地电脑使用命令行上传文件至远程服务器
将本地文件上传到远程服务器,在本地电脑中cmd使用该命令: scp C:/Users/"你的用户名"/Desktop/environment.yml ws:~/environment.yml 其中,C:/Users/“你的用户名”/Desktop/environment.yml是本地文件的路径, ~/en…...
笔记day2
文章目录 1 NavigationDuplivated警告错误2 Home模块组件拆分3 三级联动组件完成4 完成其余静态组件5 POSTMAN测试接口6 axios二次封装6.1 为什么需要进行二次封装axios?6.2 在项目中经常API文件夹【axios】6.3 axios基础不好,可以参考git|NPM关于axios文…...
排序算法(3)——归并排序、计数排序
目录 1. 归并排序 1.1 递归实现 1.2 非递归实现 1.3 归并排序特性总结 2. 计数排序 代码实现 3. 总结 1. 归并排序 基本思想: 归并排序(merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法࿰…...
【5】C#期末复习第5套
1.int a[3][2]{2,4,6,8,10.12};则*(a[1]1)的值是8 指向(a[1]的第二个元素) 再* 2.合并字符串库函数strcat 3.比较字符串库函数strcmp 4.执行结果是x3,y3 int x3,y; int *px&x; y*px; (优先级高于*) 5.*p[5]没…...
jquery虚拟键盘插件jqkeyboard
jqKeyboard是一款jquery虚拟键盘插件。该虚拟键盘插件依赖于jquery ui,通过该插件,可以在页面中生成一个扁平风格的虚拟键盘面板。 在线预览 下载 安装 可以通过npm来安装jqKeyboard虚拟键盘插件。 npm install jq keyboard --save 使用方法 在页面…...
IMX6ULL开发板把屏幕刷黑(黑屏)的程序
承接博文 IMX6ULL开发板基础实验:Framebuffer驱动程序的简单应用实例代码详细分析 很容易写出把屏幕刷黑的程序… Ubuntu中的目录/home/book/mycode下新建目录C0003_draw_lcd_black,然后把把博文中的源码/home/book/mycode/C0002_show_pixel复制到目录C0003_draw_l…...