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

C语言--基础面试真题

1、局部变量和静态变量的区别

  • 普通局部变量和静态局部变量区别

    • 存储位置:

      • 普通局部变量存储在栈上

      • 静态局部变量存储在静态存储区

    • 生命周期:

      • 当函数执行完毕时,普通局部变量会被销毁

      • 静态局部变量的生命周期则是整个程序运行期间,即使函数调用结束,静态局部变量的值也会被保留

    • 初始值:

      • 普通局部变量在每次函数调用时都会被初始化,它们的初始值是不确定的,除非显式地进行初始化

      • 静态局部变量在第一次函数调用时会被初始化,然后保持其值不变,直到程序结束

  • #include <stdio.h>
    ​
    void normal_func() {int i = 0;i++;printf("局部变量 i = %d\n", i);
    }
    ​
    void static_func() {static int j = 0;j++;printf("static局部变量 j = %d\n", j);
    }
    ​
    int main() {// 调用3次normal_func()normal_func();normal_func();normal_func();
    ​// 调用3次static_func()static_func();static_func();static_func();
    ​return 0;
    }
  • 运行结果:

  • 局部变量 i = 1
    局部变量 i = 1
    局部变量 i = 1
    static局部变量 j = 1
    static局部变量 j = 2
    static局部变量 j = 3

2、预处理

  • C语言对源程序处理的四个步骤:预处理、编译、汇编、链接。

    • 预处理

      • 宏定义展开、头文件展开、条件编译,这里并不会检查语法

    • 编译

      • 检查语法,将预处理后文件编译生成汇编文件

    • 汇编

      • 将汇编文件生成目标文件(二进制文件)

    • 链接

      • 将目标文件链接为可执行程序

    gcc -E hello.c -o hello.i //处理文件包含,宏和注释 
    gcc -S hello.i -o hello.s //编译为汇编文件 
    gcc -c hello.s -o hello.o //经汇编后为二进制的机器指令
    gcc hello.o -o hello      //链接所用的到库
    ​
    1 预处理:预处理相当于根据预处理命令组装成新的 C 程序,不过常以 i 为扩展 名。 
    2 编 译:将得到的 i 文件翻译成汇编代码 .s 文件。 
    3 汇 编:将汇编文件翻译成机器指令,并打包成可重定位目标程序的 O 文件。 该文件是二进制文件,字节编码是机器指令。 
    4 链 接:将引用的其他 O 文件并入到我们程序所在的 o 文件中,处理得到最终 的可执行文件

  • C编译器提供的预处理功能主要包括:

    • 文件包含 #include

    • 宏定义 #define

    • 条件编译 #if #endif ……

3、文件包含处理

  • 文件包含处理

    • 指一个源文件可以将另外一个文件的全部内容包含进来

    • C语言提供了#include命令用来实现文件包含的操作

  • #include< > 与 #include ""的区别

    • <> 表示系统直接按系统指定的目录检索

    • "" 表示系统先在 "" 指定的路径(没写路径代表当前路径)查找头文件,如果找不到,再按系统指定的目录检索

4、宏定义

  • 在预编译时将宏名替换成字符串的过程称为"宏展开"(也叫宏替换)。

    • 宏名一般用大写,以便于与变量区别

    • 宏定义不作语法检查,只有在编译被宏展开后的源程序才会报错

    • 宏定不要不要行末加分号

#define PI 3.14
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define FUNC(a)  func(a)
​
void func(int a) {int b = a;
}
​
int main() {double a = PI;int temp = MAX(1, 2+3);FUNC(10);
​return 0;
}

5、条件编译

一般情况下,源程序中所有的行都参加编译。但有时希望对部分源程序行只在满足一定条件时才编译,即对这部分源程序行指定编译条件。

防止头文件被重复包含
#ifndef _SOMEFILE_H
#define _SOMEFILE_H
​
//需要声明的变量、函数
//宏定义
//结构体
​
#endif
软件裁剪

同样的C源代码,条件选项不同可以编译出不同的可执行程序:

#include <stdio.h>
​
// #define A 有注释,没有注释,观察运行结果
#define A
​
int main() {
#ifdef Aprintf("这是大写操作\n");
#elseprintf("这是小写操作\n");
#endif
​return 0;
}

6、递归

  • 函数递归调用:

    • 函数可以调用函数本身(不要用main()调用main(),不是不能这么做,而是不建议,往往得不到你想要的结果)。

  • 递归的优点

    • 递归给某些编程问题提供了最简单的方法。

  • 递归的缺点

    • 一个有缺陷的递归会很快耗尽计算机的资源,递归的程序难以理解和维护

 

7、普通函数调用

#include <stdio.h>
​
void fun_b(int b) {printf("b = %d\n", b);
​return;
}
​
void func_a(int a) {fun_b(a - 1);
​printf("a = %d\n", a);
}
​
int main(void) {func_a(2);printf("main\n");
​return 0;
}

运行顺序:

  • 结论:

    • 先调用,后返回(栈结构)

    • 调用谁,返回谁的位置

运行结果:

b = 1
a = 2
main

8、函数递归调用

 

#include <stdio.h>
​
//0的阶乘是1  1的阶乘1    return 1
//n! =(n-1)!*n
//(n-1)! = (n-2)!*(n-1)
//n = 1
​
​
// 递归函数计算阶乘
int factorial(int n) {if (n == 0 || n == 1) {return 1;} else {return n * factorial(n - 1);}
}
​
int main() {int n;printf("请输入一个整数:");scanf("%d", &n);
​// 调用递归函数计算阶乘并输出结果int result = factorial(n);printf("%d 的阶乘是 %d\n", n, result);
​return 0;
}
​

运行顺序:

9、大小端验证

        所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数 据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
​
1)大端模式:
​
低地址 -----------------> 高地址
​
0x12  |  0x34  |  0x56  |  0x78
​
2)小端模式:
​
低地址 ------------------> 高地址
​
0x78  |  0x56  |  0x34  |  0x12

#include <stdio.h>
#include <stdint.h>
​
int check_endianness() {uint32_t temp = 0x44332211; // 4个字节,32位uint8_t * p = NULL;  // 8位
​p = (uint8_t *)&temp;  // 只取uint8_t的长度printf("%#x\n", *p);printf("%#x\n", p[0]); // *p 和 p[0]等价
​uint16_t * p1 = (uint16_t *)&temp; printf("*p1 = %#x\n", *p1);
​if (*p == 0x11 ) {return 0; // 0是小端} else {return 1; // 大端}
}
​
int main() {int res = check_endianness();if (res == 0) {printf("小端\n");} else {printf("大端\n");}
​return 0;
}

10、大小端转换

#include <stdio.h>
​
int changeBigEndian(int data) {
​return (data >> 24 & 0x000000ff) |(data >> 8 & 0x0000ff00) |(data << 8 & 0x00ff0000) |(data << 24 & 0xff000000);
}
​
int main() {
​
​int mem = 0x44332211;
​printf("%0x\n", changeBigEndian(mem));return 0;
}
​

11、二分查找

#include <stdio.h>
​
// 二分查找函数
int binarySearch(int arr[], int size, int target) {int left = 0;int right = size - 1;while (left <= right) {int mid = left + (right - left) / 2;if (arr[mid] == target) {return mid; // 找到目标元素,返回索引} else if (arr[mid] < target) {left = mid + 1; // 在右半部分继续查找} else {right = mid - 1; // 在左半部分继续查找}}return -1; // 目标元素不存在,返回-1
}
​
int main() {int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};int size = sizeof(arr) / sizeof(arr[0]);int target = 11;int index = binarySearch(arr, size, target);if (index != -1) {printf("目标元素 %d 在数组中的索引为 %d\n", target, index);} else {printf("目标元素 %d 不在数组中\n", target);}return 0;
}
​

12、什么是指针,在什么地方使用的

 指针(Pointer)是一种特殊的变量类型,它用于存储内存地址。指针的实质就是内存“地址”。
使用范围:
动态内存分配:指针常用于动态分配内存,例如使用 malloc()、calloc() 或 new 分配内存,并使用指针来管理和访问分配的内存块。
​
数组和字符串:数组名本身就是指向数组第一个元素的指针,在函数参数传递、数组访问等场景中经常用到指针。
​
函数指针:函数指针是指向函数的指针变量,可以用来在运行时动态确定调用的函数,或者将函数作为参数传递给其他函数。
……

13、函数指针是什么

函数指针是指向函数的指针变量,它存储了函数的地址,可以用来调用该函数。在 C 语言中,函数名可以视为函数在内存中的地址,因此可以将函数名赋值给函数指针变量,从而实现通过函数指针来调用函数。

#include <stdio.h>
​
int getData(int a, int b) {return a + b;
}
​
int main() {
​int(*func)(int, int);
​func = getData;printf("%d\n", func(5, 8));
​return 0;
}
​

复议:指针函数

  • 指针函数是一个返回指针的函数。它的返回值是一个指针,指向某种数据类型的内存地址。

  • 指针函数通常用于动态内存分配、返回数组、返回字符串等场景。

int* create_array(int size) {int* arr = malloc(size * sizeof(int)); // 动态分配内存return arr;
}

14、声明和定义的区别

  • 声明告诉编译器,某个名称(如变量、函数、类等)存在,但不分配内存空间或提供实现细节。

  • 声明通常包括名称和类型信息,以及可能的参数列表。

  • 声明可以出现在函数或变量的定义之前,以便在使用之前提供有关名称的信息。

int add(int a, int b);
  • 定义不仅声明了名称的存在,还为其分配了内存空间或提供了实现细节。

  • 对于变量,定义会分配内存空间;对于函数,定义会提供函数体的实现。

  • 每个定义都是一个声明,但不是每个声明都是一个定义。

// 函数定义
int add(int a, int b) {return a + b;
}

15、extern关键字是干什么用

用来修饰全局变量,全局变量本身是全局可用的,但是由于文件是单个完成编译,并且编译是自上而下的,所以说,对于不是在本范围内定义的全局变量,要想使用必须用 extern 进行声明,如果不加上 extern ,就会造成重定义。

注意,经 extern 声明的变量,不可以再初始化。

16、位运算

#include <stdio.h>
#include <inttypes.h>
​
int main() {// 将变量a的第2位设置为1,其他位保持不变uint8_t a = 0b10110011; // 0xb3;a |= (1 << 2);          // 或者 x = x | (1 << 2);printf("%02x\n", a);    // b7,  10110111
​// 将变量b的第2位、第6位设置为1,其他位保持不变uint8_t b = 0b10110011; // 0xb3;b |= (1 << 2 | 1 << 6);printf("%02x\n", b);    // f7,11110111
​// 将变量c的第5位设置为0,其他位保持不变uint8_t c = 0b10110011;  // 0xb3;c &= ~(1 << 5);printf("%02x\n", c);    // 93,10010011
​// 将变量d的第0~3位设置为0,其他位保持不变uint8_t d = 0b11111111;  // 0xff;d &= ~(1 << 0 | 1 << 1 | 1 << 2 | 1 << 3);printf("%02x\n", d);    // f0,11110000
​// 将变量e的第2位取反,其他位保持不变uint8_t e = 0b10110011;  // 0xb3;e ^= (1 << 2);printf("%02x\n", e);    // b7,  10110111
​return 0;
}

17、说说什么是野指针,怎么产生的,如何避免

野指针是指向"垃圾"内存的指针,也就是说,它的值是不确定的。野指针通常由以下几种情况产生:
​
未初始化的指针:如果你声明了一个指针变量但没有给它赋值,那么它就是一个野指针。例如:int *ptr;。
已删除的指针:如果你使用delete或free删除了一个指针,但没有将它设置为NULL,那么它就成了一个野指针。例如:
超出作用域的指针:如果你返回了一个函数内部的局部变量的地址,那么这个地址在函数返回后就不再有效,因此返回的指针就是一个野指针。
​
​
初始化: ptr = NULL;
​

18、堆和栈有什么区别?

- 栈区(stack)
​
- - 栈是一种先进后出的内存结构,由编译器自动分配释放,存放函数的参数值、返回值、局部变量等。在程序运行过程中实时加载和释放,因此,局部变量的生存周期为申请到释放该段栈空间。
​
- 堆区(heap)
​
- - 堆是一个大容器,它的容量要远远大于栈,但没有栈那样先进后出的顺序。用于动态内存分配。堆在内存中位于BSS区和栈区之间。一般由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。

相关文章:

C语言--基础面试真题

1、局部变量和静态变量的区别 普通局部变量和静态局部变量区别 存储位置&#xff1a; 普通局部变量存储在栈上 静态局部变量存储在静态存储区 生命周期&#xff1a; 当函数执行完毕时&#xff0c;普通局部变量会被销毁 静态局部变量的生命周期则是整个程序运行期间&#…...

C# 异步编程模型(APM)的深入理解

在现代软件开发中&#xff0c;异步编程已经成为了一种不可或缺的技能。特别是在需要处理I/O密集型任务或长时间运行的操作时&#xff0c;异步编程能够显著提高应用程序的性能和用户体验。C# 作为一种流行的编程语言&#xff0c;提供了多种异步编程模型&#xff0c;其中最经典的…...

janus模块介绍-SIP Gateway

模块启动 默认的SIP GateWay也是https协议&#xff0c;端口为8088或者8089 如果需要在自己搭建的测试服务上测试SIP GateWay模块&#xff0c;则也需要修改为wss 具体改动如下: 找到/opt/janus/share/janus/demos/siptest.js var server "wss://" window.location…...

wstunnel (websocket模式ssh)

接上一篇 修改客户端运行参数 ssh -o ProxyCommand"./wstunnel client -L stdio://%h:%p ws://192.168.254.131:8080" 127.0.0.1 其中127.0.0.1为服务端的本地ssh访问&#xff0c;可以修改为通过服务端访问其他设备的ssh服务。例如&#xff1a; ssh -o ProxyComma…...

linux文件相关命令

一、linux文件相关命令 1、cd cd 是 “change directory” 的缩写&#xff0c;用于改变当前工作目录。 cd &#xff1a;不带任何参数时&#xff0c;会切换到用户的主目录&#xff08;通常是 /home/用户名&#xff09;。 cd ~&#xff1a;也会切换到用户的主目录。 cd .&…...

锂电池寿命预测 | Matlab基于GRU门控循环单元的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于GRU门控循环单元的锂电池寿命预测 Matlab基于GRU的锂电池剩余寿命预测 基于GRU的锂电池剩余寿命预测&#xff08;单变量&#xff09; 运行环境Matlab2020及以上 锂电池的剩余寿命预测是…...

通往AGI路上,DPU将如何构建生成式AI时代的坚实算力基石?

4月19日&#xff0c;在以“重构世界 奔赴未来”为主题的2024中国生成式AI大会上&#xff0c;中科驭数作为DPU新型算力基础设施代表&#xff0c;受邀出席了中国智算中心创新论坛&#xff0c;发表了题为《以网络为中心的AI算力底座构建之路》主题演讲&#xff0c;勾勒出在通往AGI…...

无人驾驶 自动驾驶汽车 环境感知 精准定位 决策与规划 控制与执行 高精地图与车联网V2X 深度神经网络学习 深度强化学习 Apollo

无人驾驶 百度apollo课程 1-5 百度apollo课程 6-8 七月在线 无人驾驶系列知识入门到提高 当今,自动驾驶技术已经成为整个汽车产业的最新发展方向。应用自动驾驶技术可以全面提升汽车驾驶的安全性、舒适性,满足更高层次的市场需求等。自动驾驶技术得益于人工智能技术的应用…...

【QEMU系统分析之启动篇(十九)】

系列文章目录 第十九章 QEMU系统仿真的加速器上电后设置分析 文章目录 系列文章目录第十九章 QEMU系统仿真的加速器上电后设置分析 前言一、QEMU是什么&#xff1f;二、QEMU系统仿真的启动分析1.系统仿真的初始化代码2.主循环数据初始化3. os_setup_post()Windows 系统 os_set…...

Jmeter redis连接测试

Jmeter连接redis获取数据&#xff0c;一直连不上报错。最后只能通过java代码连接测试&#xff0c;最后只能自己动手。 import redis.clients.jedis.*;import java.io.IOException; import java.util.HashSet; import java.util.Set;/*** 单机版的Jedis连接池的用法*/ public c…...

使用Uiautomotorviewer无法获取手机页面元素+解决办法

在进行 Android 应用程序开发或测试时&#xff0c;有时会遇到以下错误&#xff1a; Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException这个错误可能会导致开发或测试过程中的一些困扰&#xff0c;但有一个简单的解决方法&#xff1a; 解决方法…...

深度相机(3D相机)

传统的RGB彩色相机称为2D相机&#xff0c; 只能得到2D的图像信息&#xff0c; 无法得到物体与相机的距离信息&#xff0c;也就是深度信息。 顾名思义&#xff0c; 深度相机除了获取2D信息&#xff0c;还能得到深度信息&#xff0c;也叫RGBD相机&#xff0c; 或3D相机。 顺便提…...

了解时间复杂度和空间复杂度

在学习数据结构前&#xff0c;我们需要了解时间复杂度和空间复杂度的概念&#xff0c;这能够帮助我们了解数据结构。 算法效率分为时间效率和空间效率 时间复杂度 一个算法的复杂度与其执行的次数成正比。算法中执行基础操作的次数&#xff0c;为算法的时间复杂度。 我们采…...

[笔试强训]day2

1.牛牛的快递 题目链接&#xff1a;牛牛的快递_牛客题霸_牛客网 思路&#xff1a;分小于1.0kg和大于1.0kg&#xff0c;其中大于1.0kg的要“向上取整” &#xff0c;eg&#xff1a;1.7->2&#xff0c;2.0->2。注意一个点&#xff1a;第二个输入的参数是字符&#xff0c;要…...

android脱壳第二发:grpc-dumpdex加修复

上一篇我写的dex脱壳&#xff0c;写到银行类型的app的dex修复问题&#xff0c;因为dex中被抽取出来的函数的code_item_off 的偏移所在的内存&#xff0c;不在dex文件范围内&#xff0c;所以需要进行一定的修复&#xff0c;然后就停止了。本来不打算接着搞得&#xff0c;但是写了…...

在 TypeScript 中declare module 关键字用法

在 TypeScript 中&#xff0c;declare module 关键字用于声明模块的类型信息&#xff0c;这种声明通常出现在声明文件&#xff08;通常是 .d.ts 文件&#xff09;中。这对于当你需要为现有的 JavaScript 库或模块提供类型信息时非常有用&#xff0c;尤其是对于没有提供自己的类…...

NLP step by step -- 了解Transformer

Transformer模型 Transformer相关历史 首先我们先看一下有关Transformer模型的发展历史&#xff0c;下面的图是基于Transformer架构的一些关键模型节点&#xff1a; 图片来源于Hugging Face 图片来源于Hugging Face Transformer 架构 于 2017 年 6 月推出。原本研究的重点是…...

【Leetcode】vector刷题

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;Leetcode刷题 目录 1.只出现一次的数字2.杨辉三角3.删除有序数组中的重复项4.只出现一次的数字II5.只出现一次的数字III6.电话号码的字母组合 1.只出现一次的数字 题目链接&#xff1a;136.只出现一…...

【图解计算机网络】从浏览器地址输入到网页显示的整个过程

从浏览器地址输入到网页显示的整个过程 整体流程DHCPhttp协议报文组装DNSTCP协议封装与TCP三次握手IP协议封装与路由表MAC地址与ARP协议交换机路由器 整体流程 从往浏览器输入一个地址到网页的显示&#xff0c;要经过很长的一个流程&#xff0c;中间涉及到计算机网络的许多知识…...

liqo学习及安装,k8s,kubernetes多集群互联

先按照官方的教程在虚拟机安装学习 在开始以下教程之前&#xff0c;您应该确保您的系统上安装了以下软件&#xff1a; Docker&#xff0c;容器运行时。Kubectl&#xff0c;Kubernetes 的命令行工具。 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.…...

五种主流数据库:集合运算

关系型数据库中的表与集合理论中的集合类似&#xff0c;表是由行&#xff08;记录&#xff09;组成的集合。因此&#xff0c;SQL 支持基于数据行的各种集合运算&#xff0c;包括并集运算&#xff08;Union&#xff09;、交集运算&#xff08;Intersect&#xff09;和差集运算&a…...

java-springmvc 01

springmvc也是在spring framework中的&#xff0c;不是一个单独的项目 MVC就是和Tomcat有关。 01.MVC启动的第一步&#xff0c;启动Tomcat&#xff08;这个和springboot的run方法启动Tomcat有关&#xff09; 02.SpringMVC中&#xff0c;最为核心的就是DispatcherServlet&…...

SecuPress Pro 专业级WordPress网站安全防护插件优化版

下载地址&#xff1a;SecuPress Pro 专业版.zip SecuPress Pro&#xff1a;专业的WordPress安全解决方案 如果您没有时间进行每周扫描&#xff0c;SecuPress Pro将是您的理想选择。SecuPress Pro提供了所有SecuPress Free的功能&#xff0c;同时还增加了一些高级选项&#xff…...

linux 查看nginx日志

在 Linux 系统中&#xff0c;查看 Nginx 日志通常涉及以下几个步骤&#xff1a; 确定日志文件位置&#xff1a;Nginx 的日志文件通常位于 /etc/nginx/logs 或 /var/log/nginx。具体位置取决于您在安装 Nginx 时的配置。 查看访问日志&#xff1a;Nginx 的访问日志默认命名为 a…...

iOS - 多线程-GCD-队列组

文章目录 iOS - 多线程-GCD-队列组1. 队列组1.1 基本使用步骤 iOS - 多线程-GCD-队列组 开发过程中&#xff0c;有时候想实现这样的效果 多个任务并发执行所有任务执行完成后&#xff0c;进行下一步处理&#xff08;比如回到主线程刷新UI&#xff09; 1. 队列组 可以使用GC…...

1052. 【NOIP2016备赛】方阵操作(square)

1052. 【NOIP2016备赛】方阵操作(square) (Input: square.in, Output: square.out) 时间限制: 1 s 空间限制: 256 MB 题目描述 小 Z 给你一个 n n 的方阵&#xff0c;要求你完成 Q 次操作&#xff1a; 1. 1 i j k&#xff0c;将 ai,j 修改为 k。 2. 2 i j&#xff0c;交…...

Python打怪升级(4)

在计算机领域常常有说"合法"和"非法"指的是:是否合理&#xff0c;是否有效&#xff0c;并不是指触犯了法律。 random.randint(begin,end) 详细讲解一下这个random是指模板&#xff0c;也就是别人写好的代码直接来用&#xff0c;在Python当中&#xff0c;…...

2024年【危险化学品生产单位安全生产管理人员】考试题库及危险化学品生产单位安全生产管理人员考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品生产单位安全生产管理人员考试题库参考答案及危险化学品生产单位安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及危险化学品生产单位安全生产管理人员操作证已考过的学员汇总&#xff0c;…...

动态IP与静态IP的区别,你选对了吗?

在互联网世界中&#xff0c;IP地址是每台设备在网络上的唯一标识。这些地址可以是动态的&#xff0c;也可以是静态的。对于非专业人士来说&#xff0c;理解这两者之间的区别可能会有些困难。本文旨在深入探讨动态IP和静态IP的主要差异&#xff0c;帮助读者根据自己的需求做出明…...

jasypt组件死锁bug案例分享

事故描述 1、上午9.55发布了一个Apollo动态配置参数&#xff1b; 2、片刻后&#xff0c;服务器接口开始出现大量的超时告警&#xff0c;似乎是某资源被耗尽不足分配&#xff1b; 3、正值业务请求高峰的上午十点&#xff08;平台上午10点会有一些活动会拉一波用户流量&#x…...

golang上传文件到ftp服务器

之前有个业务需要把文件上传到ftp服务器&#xff0c;写了一个上传ftp的功能 package ftpimport "context"type Client interface {// UploadFile 上传文件UploadFile(ctx context.Context, opt *UploadFileOpt) error }type UploadFileOpt struct {Data […...

数据治理和数据管理 傻傻分不清楚?

互联网时代&#xff0c;数据&#xff0c;这一无形资产&#xff0c;已成为现代企业的核心竞争力。如何高效地管理和利用数据&#xff0c;成为企业关注的焦点。在这个过程中&#xff0c;数据治理&#xff08;Data Governance&#xff09;和数据管理&#xff08;Data Management&a…...

linux磁盘原理

在linux系统中&#xff0c;对磁盘进行管理与windows系统类似&#xff0c;都要先分区&#xff0c;格式化&#xff0c;创建文件系统&#xff0c;挂载目录&#xff0c;数据写入...

react 使用WEB3.0控件开发包 V3.0接入海康威视摄像头

1、下载官方安装包&#xff1a; 2、安装官方插件 3、引入文件 在public/index 中引入监控依赖&#xff0c;这三个文件可以在下载的官方demo中找到 4、react 中使用 useEffect(() > { const ipInfo :[192.168.xxxx];//初始化摄像头const WebVideoCtrl window.WebVideoCtrl…...

数据可视化———Tableau

基本认识&#xff1a; 维度&#xff1a;定性—字符串文本&#xff0c;日期和日期时间等等 度量&#xff1a;定量—连续值&#xff0c;一般属于数值 数据类型&#xff1a; 数值 日期/日期时间 字符串 布尔值 地理值 运算符 算数运算符&#xff1a;加减乘除,%取余&#xff0c;…...

【黑马头条】-day12项目部署和发布-jenkins

文章目录 1 持续集成2 软件开发模式2.1 瀑布模式2.2 敏捷开发2.2.1 迭代开发2.2.2 增量开发 3 Jenkins3.1 Jenkins安装3.1.1 导入镜像3.1.2 配置3.1.3 初始化设置 3.2 插件安装3.3 服务器环境准备3.3.1 Docker安装配置3.3.2 Git安装配置3.3.3 Maven安装配置 3.4 Jenkins工具配置…...

学习操作系统路线

操作系统 简介 本课程为计算机专业学生量身定制&#xff0c;补足计算机操作系统相关知识&#xff0c;查漏补缺&#xff0c;也可用于考研复习。内容包括&#xff1a;操作统概述、进程管理、内存管理、文件管理、输入/输出管理等章节。内容力求精炼、重点突出、条理清晰、深入浅…...

uniapp微信小程序(商城项目)

最近&#xff0c;闲来无事&#xff0c;打算学一下uniapp小程序 于是在跟着某站上学着做了一个小程序&#xff0c;主要是为了学uniapp和vue。某站黑马优购 完成的功能主要有&#xff1a;首页、搜索、分类和购物车。 有人问了为什么没有登录、和添加订单呢&#xff1f;问的很好…...

Linux的自动化脚本:使用crul命令下载文件,实现断点续传

目录 一、要求 二、解决思路 &#xff08;一&#xff09;curl工具可以进行文件传输&#xff0c;可以实现手动断点续传 1、使用 --range 选项&#xff1a; 2. 使用 --continue-at 选项&#xff1a; &#xff08;二&#xff09;编写shell脚本调用curl命令&#xff0c;实现自…...

Golang | Leetcode Golang题解之第46题全排列

题目&#xff1a; 题解&#xff1a; func permute(nums []int) [][]int {var (n len(nums)dfs func(vals []int) // 已选择数 排列为vals 后续回溯继续选择 直至选完ans [][]int)dfs func(vals []int) {//边界if len(vals) n {ans append(ans, vals)}//转移 枚举选哪个f…...

MySQL数据表记录删操作

删除操作 作用删除表里的记录行&#xff08;都是整行整行的删除的&#xff09; 1.单表的删除 语法&#xff1a; delete from 表名 where 要删除的记录筛选条件; 案例&#xff1a;删除员工编号大于203的员工信息 delete from employees where employee_id>203; 2.多表…...

Python浅谈清朝秋海棠叶版图

1、清朝疆域概述&#xff1a; 清朝是我国最后一个封建王朝&#xff0c;其始于1616年建州女真部努尔哈赤建立后金&#xff0c;此后统一女真各部、东北地区。后又降服漠南蒙古&#xff0c;1644年入关打败农民起义军、灭南明&#xff0c;削三藩&#xff0c;复台湾。后又收外蒙&am…...

Linux之线程管理

目录 第1关&#xff1a;创建线程 任务描述 相关知识 使用pthread_create函数创建线程 编程要求 答案&#xff1a; 第2关&#xff1a;线程挂起 任务描述 相关知识 使用pthread_join挂起线程 编程要求 答案&#xff1a; 第3关&#xff1a;线程终止 任务描述 相关知识 使用pthread…...

.net反射(Reflection)

文章目录 一.概念&#xff1a;二.反射的作用&#xff1a;三.代码案例&#xff1a;四.运行结果&#xff1a; 一.概念&#xff1a; .NET 反射&#xff08;Reflection&#xff09;是指在运行时动态地检查、访问和修改程序集中的类型、成员和对象的能力。通过反射&#xff0c;你可…...

白平衡简介

文章目录 白平衡的概念白平衡的调节常见的白平衡模式 白平衡的概念 白平衡是指摄影、摄像和显示技术中的一项重要概念&#xff0c;用于调节图像中的白色或中性灰色的色彩&#xff0c;使其看起来在不同光源条件下都是准确的白色或灰色。白平衡的主要目的是确保图像的色彩准确性…...

centos7.9下安装SVN服务

一、安装subversion yum install -y subversion #安装svn mkdir -p /data/svnrepos/java #自定义svn仓库位置/data/svnrepos&#xff0c;自定义一个项目叫svn&#xff08;这里新建目录&#xff09; svnadmin create /data/svnrepos/java #创建一…...

iStat Menus for Mac:强大的系统监控工具

iStat Menus for Mac是一款功能强大的系统监控工具&#xff0c;专为Mac用户设计&#xff0c;旨在帮助用户全面了解电脑的运行状态&#xff0c;提高电脑的性能和稳定性。 iStat Menus for Mac v6.73 (1239)中文版下载 该软件可以实时监测CPU使用率、内存占用、网络速度、硬盘活动…...

NumPy 1.26 中文官方指南(四)

附加文件 术语表 原文&#xff1a;numpy.org/doc/1.26/glossary.html (n,) 括号中跟着逗号的数字表示一个具有一个元素的元组。尾随逗号将一个元素元组与括号n区分开。 -1 在维度入口中&#xff0c;指示 NumPy 选择长度&#xff0c;以保持数组元素总数不变。 >>> n…...

Python flask

Flask 是一个用 Python 编写的轻量级 Web 应用框架。它被设计为易于使用和扩展&#xff0c;使其成为构建简单网站到复杂的、动态的 web 应用程序的理想选择。以下是 Flask 的一些基本组件和概念&#xff1a; 主要组件 Flask&#xff1a;框架本身&#xff0c;提供基本的功能来处…...

2-token生成

Token是密码学中的一个概念&#xff0c;可以用作身份验证凭证。在计算机领域中&#xff0c;token可以是一个字符串&#xff0c;用于标识用户的身份和权限。当用户进行身份验证时&#xff0c;他们通常会收到一个token&#xff0c;以便在将来的请求中用作凭证。 在互联网应用程序…...

Nessus 部署实验

一、下载安装https://www.tenable.com/downloads/nessus 安装好之后&#xff0c;Nessus会自动打开浏览器&#xff0c;进入到初始化选择安装界面&#xff0c;这里我们要选择 Managed Scanner 点击继续&#xff0c;下一步选择Tenable.sc 点击继续&#xff0c;设置用户名和密码 等…...

无人直播,不断播,不版权违规,懒人玩法,躺赚收益,一场直播收益2500+

无人直播,不断播,不版权违规,懒人玩法,躺赚收益,一场直播收益2500+ - 百创网-源码交易平台_网站源码_商城源码_小程序源码详情介绍 今天给大家带来的是无人直播最新玩法,不断播,不违规,直播间容易上人,收益高...

【HDFS】 双Buffer数据结构:EditsDoubleBuffer

缓冲(Buffer)机制是对数据持久化的延迟,以减少不必要的IO,从而提高数据落盘的效率。 一般需要使用双缓冲区的地方都是由于“生产者”和“消费者”供需不一致所造成的。 两个缓冲区可以交换,互相变成对方的角色。 HDFS引入双Buffer的背景及带来的收益 每次客户端的RPC请求…...

机器学习-06-聚类算法总结

聚类总结 1.聚类 机器学习 任务 聚类 无label的 分类 label是离散的 回归 label是连续的 2.聚类算法-kmeans 划分聚类 思想&#xff1a; D中选取k个作为初始质心 repeat 计算所有点与质心的距离&#xff0c;分到近的质心簇 更新簇之间的质心 until 质心不改 不足&#xff…...

2.spring security 简单入门

创建springboot 项目&#xff0c;引入spring security坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--spring security坐标--><dependency&g…...

【深度学习】第一门课 神经网络和深度学习 Week 3 浅层神经网络

&#x1f680;Write In Front&#x1f680; &#x1f4dd;个人主页&#xff1a;令夏二十三 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;深度学习 &#x1f4ac;总结&#xff1a;希望你看完之后&#xff0c;能对…...

自己拥有一台服务器,可以做哪些很酷的事情?

前言 知乎上有一个提问&#xff1a;自己拥有一台服务器&#xff0c;可以做哪些很酷的事情&#xff1f; ↓↓↓ 今天&#xff0c;我们就这个话题&#xff0c;一起来做个讨论。 程序员如果想要有一台云服务器&#xff0c;可以蹭厂商(阿里云、腾讯云等)搞活动(比如双十一或618节…...

Prefiquence(双指针,动态规划)

文章目录 题目描述输入格式输出格式样例样例输入 #1样例输出 #1样例输入 #2样例输出 #2样例输入 #3样例输出 #3 提示提交链接解析参考代码 题目描述 给您两个二进制字符串 a a a 和 b b b 。二进制字符串是由字符 0 0 0 和 1 1 1 组成的字符串。 您的任务是确定最大可能的…...

windows系统远程执行脚本部署项目操作手册

windows系统远程执行脚本部署项目操作手册 windows系统远程执行脚本部署项目 如果频繁的需要部署项目到远程的服务器上,每次要手动上传项目,然后停止项目,启动项目,很麻烦,像Linux天生支持远程执行脚本 Windows借助工具也可以做到. 安装WinSCP软件 自行下载软件或关注我的公…...

读源码系列文章--开源项目openjob之alarm告警模块

一、背景 告警模块&#xff0c;作为大多数应用都存在的一个基础功能&#xff0c;今天我们就以开源项目openjob 为例&#xff0c;分析其设计及实现。 首先&#xff0c;我们梳理一下需求&#xff1a; 支持多种告警方式&#xff0c;包括钉钉、飞书、微信和webhook。方便业务模块…...

微信报名活动链接怎么做

在数字营销日新月异的今天&#xff0c;微信作为拥有数亿用户的社交平台&#xff0c;早已成为品牌宣传的重要阵地。而微信报名活动链接&#xff0c;更是品牌吸引用户参与、提升活动影响力的关键工具。今天&#xff0c;就让我们一起探讨如何制作一个引人入胜的微信报名活动链接&a…...

我的板子为什么测不了损耗

高速先生成员--周伟 最近我们珠海高速实验室正式对外开放了&#xff0c;我们也同步推出了关于高速信号测试、高速仪器的一些视频。 大家知道我们有仪器后&#xff0c;很多热心的小伙伴们就以为我们开挂了&#xff0c;什么都能测&#xff0c;然后就会来咨询我们&#xff0c;很多…...