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

C语言的灵魂——指针(1)

指针是C语言的灵魂,有了指针C语言才能完成一些复杂的程序;没了指针就相当于C语言最精髓的部分被去掉了,可见指针是多么重要。废话不多讲我们直接开始。

指针

  • 一,内存和地址
  • 二,编址
  • 三,指针变量和地址
    • 1,&(取地址)操作符
    • 2,指针变量
    • 3,解引用操作符
    • 4,指针变量的大小
  • 四,指针类型的意义
  • 五,偏移量
  • 六,指针的运算

一,内存和地址

谈到指针我们首先就会想到地址,因为指针就是地址。为什么这么会认为指针它就是地址呢?指针与地址有什么关联呢?想要回答上面两个问题那我们就先来探究一下内存和地址的关系。

我们举一个生活中的例子你就知道了,我们生活中所看见的学校的宿舍楼其实就是内存,比如一栋一栋的宿舍喽在建造之初就规定好了有多少个房间,房间里能住几个人。这可以说是宿舍楼的内存;而计算机也一样,计算机就是将一个大内存分成若干个小的内存单元,每个内存单元占一个字节,这里就相当于一栋宿舍楼有若干间数;而每一字节占8个比特位,就相当于一间能住8个人。 这里给出一些常见的内存单位

在这里插入图片描述

了解完内存我们来说说地址,地址就相当于门牌号,平时在购物时买东西填的地址填的可不就是家里的门牌号嘛,所以通过门牌号(地址)快递员才能找对地方给我们派件;对应计算机也是一样的,地址为每一个内存进行编号。比如上面所说的宿舍楼每一间都有不同的门牌号,只不过C语言给地址取了一个新的名字叫指针我们给出一张图来让你更直观和清晰的了解内存和地址的关系。

在这里插入图片描述
了解完了内存和地址接下来我们来了解一下编址。

二,编址

谈到编址就不得不谈到一些硬件上的知识了,要了解编址首先必须理解,计算机内是有很多的硬件单元,而硬件单元是要互相协同工作的。所谓的协同,至少相互之间要能够进行数据传递。但是硬件与硬件之间是互相独立的,那么如何通信呢?

答案很简单,用"线"连起来。 而CPU和内存之间也是有大量的数据交互的,所以,两者必须也用线连起来。 不过,我们今天关心一组线,叫做地址总线。
我们画图来让大家更好的理解:
在这里插入图片描述

搞清楚上图的原理我们来说说为什么要编址?

CPU访问内存中的某个字节空间,必须知道这个 字节空间在内存的什么位置,而因为内存中字节很多,所以需要给内存进⾏编址(就如同宿舍很多,需要给宿舍编号⼀样)。但是计算机中的编址,并不是把每个字节的地址记录下来,而是通过硬件设计完成的。

上面说到什么地址总线,数据总线,控制总线那大家是不是很好奇,为什么电路板上会有这么多的线呢?

在硬件电路中只有高电平和低电平这两种状态,这两种状态分别代表0和1,但是你想想既然一根能表示两种状态,那么2根能表示3种,以此类推以2的n次方呈现指数式增长,而线越多能表示的东西也越多,比如我们现在用的64位机器就可以表示2^64这么多种含义而每一种含义都代表一个地址;地址信息被下达给内存,在内存上,就可以找到 该地址对应的数据,将数据在通过数据总线传入CPU内寄存器。

三,指针变量和地址

1,&(取地址)操作符

既然指针与地址关系那么密切那我们就有必要来学习一下&(取地址)操作符,我们给出一段代码:

#include<stdio.h>
int main()
{int a = 10;printf("%p",&a);//%p是专门用来打印地址的占位符 注意是&a 
}

在这里插入图片描述
我们也可以调试起来让大家来看:
在这里插入图片描述
但有一点需要特别注意取地址取出来的是较小的地址,因为我们知道数据类型占几个字节又知道较小的地址剩下的顺藤摸瓜直接往后推算即可。

我们来看看在内存中是怎么样存储的:
在这里插入图片描述

2,指针变量

我们已经了解了&操作符,并且已经拿到了变量的地址,那么这时就会有人问了:我们已经拿到了变量的地址,怎么去存放它呢?答案是使用指针变量。

#include<stdio.h>
int main()
{int a = 10;char b = 'b';char * ch = &b;int * p = &a;
}

上面我们定义了两个指针变量分别为ch和p来储存a和b的地址,这样我们就可以通过访问指针变量来间接访问a和b。我们如何来看待指针变量呢?

这里p左边写的是 int , * 是在说明p是指针变量,而前面的 int 是在说明pa指向的是整型(int) 类型的对象。
ch左边写的是 char , * 是在说明ch是指针变量,而前面的 char 是在说明pa指向的是整型(int) 类型的对象。

画一个图你就明白了:
在这里插入图片描述
当我们了解了如何存储地址后肯定会想这如何去使用它,这就引出了我们的解引用操作符。

3,解引用操作符

在现实生活中,我们使用地址要找到⼀个房间,在房间里可以拿去或者存放物品。 C语言中其实也是⼀样的,我们只要拿到了地址(指针),就可以通过地址(指针)找到地址(指针) 指向的对象,这里必须学习⼀个操作符叫解引用操作符(*)。
举个例子:

#include<stdio.h>
itn main()
{int a = 100;printf("a=%d\n",a);int * p = &a;*p=0;//*p拿到了p所指向的对象 a 对*p操作即是对a操作 这里就是间接访问printf("a=%d",*p);//这里注意打印的一定是*p而不是preturn 0;
}

在这里插入图片描述

从运行结果来看我们看到,通过 * 这个解引用操作可以间接来改变a的值。 * p实际上就是通过通过pa中存放的地址,找到指向的空间所以 * p本质上就是a变量了。
在这里插入图片描述

另外值得注意的是一定要分清 * p和p 前者是对p这个指针变量进行解引用操作;后者则是指针变量其存储的是p所指向对象(a)的地址。
说完了解引用我们来看看指针变量的大小。

4,指针变量的大小

32位机器假设有32根地址总线,每根地址线出来的电信号转换成数字信号后是1或者0,那我们把32根地址线产⽣的2进制序列当做⼀个地址,那么⼀个地址就是32个bit位,需要4 个字节才能存储。
如果指针变量是⽤来存放地址的,那么指针变量的大小就得是4个字节的空间才可以。
同理64位机器,假设有64根地址线,⼀个地址就是64个⼆进制位组成的⼆进制序列,存储起来就需要 8个字节的空间,指针变量的大小就是8个字节。

#include <stdio.h> 
//指针变量的⼤⼩取决于地址的⼤⼩ 
//32位平台下地址是32个bit位(即4个字节) 
//64位平台下地址是64个bit位(即8个字节) 
int main() 
{ //zd是专门用来打印sizeof的返回值的printf("%zd\n", sizeof(char *)); printf("%zd\n", sizeof(short *)); printf("%zd\n", sizeof(int *)); printf("%zd\n", sizeof(double *)); return 0;
}

我们分别让它在32位和64位平台下运行看看会有什么结果:

在这里插入图片描述

在这里插入图片描述
我么可以看到在不同平台下的结果是不同的所以我们可以知道:
• 32位平台下地址是32个bit位,指针变量大小是4个字节
• 64位平台下地址是64个bit位,指针变量大小是8个字节
• 注意指针变量的大小和类型是无关的,只要指针类型的变量,在相同的平台下,大小都是相同的。

在这里插入图片描述
既然指针变量的大小和类型无关,只要是指针变量,在同⼀个平台下,大小都是⼀样的,为什么还要有各种各样的指针类型呢?接下来我们就来探究一下指针类型的意义。

四,指针类型的意义

我们先来看两段代码:

#include <stdio.h> 
int main() 
{ int n = 0x11223344; int *pi = &n; *pi = 0; return 0;
}

我们来看调试结果:
在这里插入图片描述

#include <stdio.h> 
int main() 
{int n = 0x11223344; char *pc = (char *)&n; //强制转换为char*的地址 赋给字符指针变量pc*pc = 0; return 0;
}

我们直接看调试结果:
在这里插入图片描述
对比这两次调试结果不知各位读者有没有发现第一次*pi变成0结果整个n的值(4个字节)都变为了0。

而第二次*pc变成零只有前面一个字节变成了0。

由此我们得出结论:指针的类型决定了,对指针解引⽤的时候有多⼤的权限(⼀次能操作指针所指对象的几个字节)。 比如: char* 的指针解引⽤就只能访问⼀个字节,而int* 的指针的解引⽤就能访问四个字节。 操作的一定是指针所指对象的空间!

五,偏移量

偏移量相信大家在物理中都能经常听到,而偏移量在指针中代码什么意思呢?偏移量指的就是指针变量加减整数时的那个数字叫做偏移量。偏移量是为了形象说明不是专有名词哈。
举个例子:

#include<stdio.h>
int main()
{int a=0;char*pc=(char*)&a;int *pi=&a;printf("&a   = %p\n",&a);printf("pc   = %p\n",pc);printf("pc+1 = %p\n",pc+1);printf("pi   = %p\n",pi);printf("pi+1 = %p\n",pi+1);return 0;
}

在这里插入图片描述
从上图我们可以看到:
我们可以看出, char 类型的指针变量+1跳过1个字节, int 类型的指针变量+1跳过了4个字节。 这就是指针变量的类型差异带来的变化。指针+1,其实跳过1个指针指向的元素。指针可以+1,那也可 以-1。偏移的其实就是一个类型的大小比如int类型 +1就偏移4个字节。

结论:指针的类型决定了指针向前或者向后偏移的距离。

了解完了这些基本的知识后我们就来看一些有关指针的的运算

六,指针的运算

指针的基本运算有三种,分别是:
1,指针± 整数
2,指针-指针
3,指针的关系运算
我们依次给出代码大家可以体会一下:

1,指针加整数型

#include<stdio.h>
int main()
{//指针加整数型int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);int* p = arr;for (int i = 0;i < sz;i++){//printf("%d \n", p);//注意这样打印出来的是以%d形式打印的地址//printf("%p \n", p);//这样是打印所有元素的地址printf("%d ", *p);//加上*号是解引用 这样打印的才是所有元素p++;}return 0;
}
#include<stdio.h>
int main()
{ int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);int* p = arr;for (int i = 0;i < sz;i++){printf("%d ", *(p + i));//(p+i)括号指针变量加整数是偏移量的意思即 往后取i个地址并把该地址的内容以%d形式打印出来}return 0;
}

2,指针减指针,及指针的关系运算

#include <stdio.h> 
int my_strlen(char *s) 
{ char *p = s; while(*p != '\0' ) p++; return p-s; 
}
int main() 
{ printf("%d\n", my_strlen("abc")); return 0; 
}

以上就是本章的全部内容啦!
感谢能够看到这里的读者,如果我的文章能够帮到你那我甚是荣幸,文章有任何问题都欢迎指出!制作不易还望给一个免费的三连,你们的支持就是我最大的动力!
在这里插入图片描述

相关文章:

C语言的灵魂——指针(1)

指针是C语言的灵魂&#xff0c;有了指针C语言才能完成一些复杂的程序&#xff1b;没了指针就相当于C语言最精髓的部分被去掉了&#xff0c;可见指针是多么重要。废话不多讲我们直接开始。 指针 一&#xff0c;内存和地址二&#xff0c;编址三&#xff0c;指针变量和地址1&#…...

2000-2020年各省第三产业增加值占GDP比重数据

2000-2020年各省第三产业增加值占GDP比重数据 1、时间&#xff1a;2000-2020年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区名称、年份、第三产业增加值占GDP比重 4、范围&#xff1a;31省 5、指标解释&#xff1a;第三产业增加值占G…...

Linux MySQL离线安装

一、准备工作 1. 下载MySQL安装包 访问MySQL官方网站&#xff0c;选择适合您Linux系统的MySQL版本进行下载。通常推荐下载Generic Linux (glibc 2.12)版本的.tar.gz压缩包&#xff0c;例如mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz。将下载好的安装包拷贝到Linux服务器的某…...

ESP32服务器和PC客户端的Wi-Fi通信

ESP32客户端-服务器Wi-Fi通信 本指南将向您展示如何设置ESP32板作为服务端&#xff0c;PC作为客户端&#xff0c;通过HTTP通信&#xff0c;以通过Wi-Fi&#xff08;无需路由器或互联网连接&#xff09;交换数据。简而言之&#xff0c;您将学习如何使用HTTP请求将一个板的数据发…...

Linux文件权限

目录 1.Linux权限管理 1.1文件访问者的分类 1.2文件的类型和访问权限 1&#xff09;文件类型 2&#xff09;文件访问权限 3&#xff09;chmod指令 4&#xff09;chown指令 ​编辑 5&#xff09;chgrp命令 1.3目录权限 1.4粘滞位 1.5umask&#xff08;权限掩码&…...

UE骨骼模拟物理

此功能可以制作仿动物派对上半身模拟物理效果 Set all bodies below simulate physics 骨骼名称设置为 spine_01 这样上半身所有骨骼都会模拟物理 效果演示...

salesforce中如何获取一个profile的18位id

在 Salesforce 中&#xff0c;要获取一个 Profile 的 18 位 ID&#xff0c;可以通过以下几种方式实现&#xff1a; 方法 1&#xff1a;通过 Developer Console 登录 Salesforce。 点击右上角的 头像 或 设置齿轮&#xff0c;选择 “开发者控制台”&#xff08;Developer Conso…...

为什么机器学习中梯度下降是减去斜率,而不是按照其数学意义减去斜率的倒数

做个简单假设&#xff0c;Loss函数的某一个参数的函数曲线是二次方程&#xff0c;其导数函数为 r 2 ∗ w r 2*w r2∗w 按照斜率意义来看&#xff0c;要减去斜率倒数 降低LOSS需要将w1更新为w2&#xff0c;所以更新公式为 w w − Δ L Δ w w w - \frac{\Delta L}{\Delta w…...

Vue 3 30天精进之旅:Day 04 - 计算属性与侦听器

引言 在前几天的学习中&#xff0c;我们已经了解了Vue实例的基本概念和使用方法。今天&#xff0c;我们将深入探讨两个重要的特性&#xff1a;计算属性&#xff08;computed properties&#xff09;和侦听器&#xff08;watchers&#xff09;。这两个特性使得我们能够更高效地…...

UE学习日志#11GAS--ASC源码简要分析9 AbilitySystemGlobals分析2 初始化相关

1 static UAbilitySystemGlobals& Get() 保证了是单例&#xff0c;IGameplayAbilitiesModule继承了IModuleInterface /** Gets the single instance of the globals object, will create it as necessary */static UAbilitySystemGlobals& Get(){return *IGameplayAbi…...

SQL在DBA手里-改写篇

背景 最近运营需要做月报汇总交易情况&#xff0c;之前一直是他们手工出的数据&#xff0c;他们想做成月初自动发送邮件&#xff0c;从而减轻他们的工作量。于是他们提供SQL我们在邮件服务器配置做定时发送任务。 表介绍&#xff08;表及字段已做脱敏处理&#xff09; trans…...

SQL Server查询计划操作符(7.3)——查询计划相关操作符(5)

7.3. 查询计划相关操作符 38)Flow Distinct:该操作符扫描其输入并对其去重。该操作符从其输入得到每行数据时即将其返回(除非其为重复数据行,此时,该数据行会被抛弃),而Distinct操作符在产生任何输出前将消费所有输入。该操作符为逻辑操作符。该操作符具体如图7.2-38中…...

Autogen_core:Agent and Agent Runtime

目录 1. 代码2. 代码解释第一部分&#xff1a;定义消息类型和代理第二部分&#xff1a;定义助手代理第三部分&#xff1a;注册和运行代理第四部分&#xff1a;发送和停止消息处理总结 3. 类似的例子 1. 代码 from dataclasses import dataclassfrom autogen_core import Agent…...

vue(33) : 安装组件出错解决

1. request to https://registry.npm.taobao.org/semver/download/semver-6.1.1.tgz?cache0&other_urlshttps%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.1.1.tgz failed, reason: certificate has expired 这个错误提示表明你在尝试从https://reg…...

论文阅读(五):乳腺癌中的高斯图模型和扩展网络推理

1.论文链接&#xff1a;Network Inference in Breast Cancer with Gaussian Graphical Models and Extensions 摘要&#xff1a; 具有高相关性的聚类基因将具有接近表达谱的基因分组&#xff0c;确定共表达基因的聚类。然而&#xff0c;这种相关性并没有提供任何关于基因间信息…...

定时器按键tim_key模版

低优先级放在高优先级内势必是程序卡死 把高优先级放到低优先级内&#xff0c;会使程序卡死 可修改 Debuger调试方法 Pwm rcc #include "my_main.h" uint8_t led_sta0x10; char text[30]; void LED_Disp(uint8_t dsLED) {HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPI…...

Effective Objective-C 2.0 读书笔记—— objc_msgSend

Effective Objective-C 2.0 读书笔记—— objc_msgSend 文章目录 Effective Objective-C 2.0 读书笔记—— objc_msgSend引入——静态绑定和动态绑定OC之中动态绑定的实现方法签名方法列表 其他方法objc_msgSend_stretobjc_msgSend_fpretobjc_msgSendSuper 尾调用优化总结参考文…...

机器学习 vs 深度学习

目录 一、机器学习 1、实现原理 2、实施方法 二、深度学习 1、与机器学习的联系与区别 2、神经网络的历史发展 3、神经网络的基本概念 一、机器学习 1、实现原理 训练&#xff08;归纳&#xff09;和预测&#xff08;演绎&#xff09; 归纳: 从具体案例中抽象一般规律…...

Vue中的动态组件是什么?如何动态切换组件?

什么是动态组件&#xff1f; 动态组件是 Vue.js 中的一项强大功能&#xff0c;它允许开发者根据程序的状态或用户的操作&#xff0c;动态地切换组件。动态组件的优势在于&#xff0c;开发者可以根据具体需求灵活地渲染不同的组件&#xff0c;从而提高应用的通用性和可维护性。…...

Spring IoC DI

目录 一. IoC & DI 入门 1. 重谈Spring 2. 容器 3. IoC ① 传统程序开发 ② IoC 程序开发 ③ IoC 的优势 4. DI 3. IoC & DI 使用 二. IoC & DI 详解 1. Bean的存储 2. Bean的重命名 3. 扫描路径 三. DI 详解 1. 属性注入 2. 构造方法注入 3. Se…...

【Linux】线程、线程控制、地址空间布局

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 1、Linux线程1.1 线程的优缺点1.2 线程异常和用途1.3 线程等待1.3 线程终止1.4 线程分离1.5 线程ID和地址空间布局1.6 线程栈 1、…...

【记录】日常|从零散记录到博客之星Top300的成长之路

文章目录 shandianchengzi 2024 年度盘点概述写作风格简介2024年的创作内容总结 shandianchengzi 2024 年度盘点 概述 2024年及2025年至今我创作了786即84篇文章&#xff0c;加上这篇就是85篇。 很荣幸这次居然能够入选博客之星Top300&#xff0c;这个排名在我之前的所有年份…...

网盘资源查找工具---AI功能

01 软件介绍 这是一款融入了ai技术的网盘搜索神器&#xff0c;可以让你更快&#xff0c;更精准的找到自己需要的文件&#xff0c;不管你是找影视&#xff0c;音乐&#xff0c;还是找软件或者学习资料都可以&#xff0c;欢迎前来使用。 02 功能展示 该软件非常简洁&#xff…...

LWJGL轻量级Java游戏库

LWJGL - Lightweight Java Game Library 基本介绍 LWJGL是一个Java库&#xff0c;它支持跨平台访问流行的本地api&#xff0c;这些api在图形&#xff08;OpenGL, Vulkan&#xff09;、音频&#xff08;OpenAL&#xff09;和并行计算&#xff08;OpenCL&#xff09;应用程序的…...

AI智能日志分析系统

文章目录 1.combinations-intelligent-analysis-starter1.目录结构2.pom.xml3.自动配置1.IntelligentAnalysisAutoConfiguration.java2.spring.factories 2.combinations-intelligent-analysis-starter-demo1.目录结构2.pom.xml3.application.yml4.IntelligentAnalysisApplicat…...

详解三种常用标准化:Batch Norm、Layer Norm和RMSNorm

在深度学习中&#xff0c;标准化技术是提升模型训练速度、稳定性和性能的重要手段。本文将详细介绍三种常用的标准化方法&#xff1a;Batch Normalization&#xff08;批量标准化&#xff09;、Layer Normalization&#xff08;层标准化&#xff09;和 RMS Normalization&#…...

数据压缩算法-差分编码(Delta Encoding)

Delta Encoding&#xff08;差分编码&#xff09;是一种数据压缩技术&#xff0c;其核心思想是存储数据之间的差异&#xff08;delta&#xff09;&#xff0c;而不是原始数据本身。这种方法特别适用于数据序列中相邻元素之间变化较小的情况&#xff0c;可以显著减少存储空间或传…...

Nginx中部署多个前端项目

1&#xff0c;准备前端项目 tlias系统的前端资源 外卖项目的前端资源 2&#xff0c;nginx里面的html文件夹中新建&#xff0c;tlias和sky两个文件夹。 切记这是在nginx/html下创建的 mkdir sky mkdir tlias 把tlias和sky的资源都放到对应的文件夹中 3&#xff0c;编辑配置ngi…...

Level DB --- TableBuilder

TableBuilder是Level DB里面重要的类和模块&#xff0c;它描述了数据如何序列化到文件中&#xff0c;以及数据里面的格式逻辑。它里面包含了之前介绍的多个模块和类。 data block、filter block和index block block格式&#xff0c;之前已经介绍过Level DB --- BlockBuilder-…...

JVM堆空间

一、堆空间的核心概述 一个JVM实例只存在一个堆内存&#xff0c;堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建&#xff0c;其空间大小也就确定了。是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。堆可以处于物理上不连续的内存空间中&#xff…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.13 降维打击:扁平化操作的六种武器

1.13 降维打击&#xff1a;扁平化操作的六种武器 目录 #mermaid-svg-bbLxDryjxBbXe3tu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bbLxDryjxBbXe3tu .error-icon{fill:#552222;}#mermaid-svg-bbLxDryjxBbXe3tu…...

Doris Schema Change 常见问题分析

1. 什么是 Schema Change Schema Change 是在数据库中修改表结构的一种操作&#xff0c;例如添加列、删除列、更改列类型等。 ⚠️Schema Change 限制⚠️ 一张表在同一时间只能有一个 Schema Change 作业在运行。分区列和分桶列不能修改。如果聚合表中有 REPLACE 方式聚合的…...

数据结构之堆排序

文章目录 堆排序版本一图文理解 版本二向下调整建堆向上调整建堆 排升/降序升序 堆排序 版本一 基于已有数组建堆取堆顶元素并删除堆顶元素重新建大根堆&#xff0c;完成排序版本。 图文理解 版本二 前提&#xff1a;必须提供有现成的数据结构堆 数组建堆&#xff0c;首尾…...

实现桌面动态壁纸(三)—— 视频播放的策略

关于动态壁纸这边&#xff0c;其实已经不需要再谈什么东西了&#xff0c;现有的各种文章都在介绍相关的技术。可以说现如今要去制作一个桌面动态壁纸应该不是什么难事。我考虑了很久&#xff0c;决定还是开一篇单独谈谈。可能我说的也不全部正确&#xff0c;您有什么建议随时可…...

C语言程序设计十大排序—希尔排序

文章目录 1.概念✅2.希尔排序&#x1f388;3.代码实现✅3.1 直接写✨3.2 函数✨ 4.总结✅ 1.概念✅ 排序是数据处理的基本操作之一&#xff0c;每次算法竞赛都很多题目用到排序。排序算法是计算机科学中基础且常用的算法&#xff0c;排序后的数据更易于处理和查找。在计算机发展…...

2023年版本IDEA复制项目并修改端口号和运行内存

2023年版本IDEA复制项目并修改端口号和运行内存 1 在idea中打开server面板&#xff0c;在server面板中选择需要复制的项目右键&#xff0c;点击弹出来的”复制配置…&#xff08;Edit Configuration…&#xff09;“。如果idea上没有server面板或者有server面板但没有springbo…...

Ubuntu 安装 QGIS LTR 3.34

QGIS官方提供了安装指南&#xff1a;https://qgis.org/resources/installation-guide/#linux。大多数linux发行版将QGIS拆分为几个包&#xff1a;qgis、qgis-python、qgis-grass、qgis-plugin-grass、qgis-server&#xff0c;有的包最初安装时被跳过&#xff0c;可以在需要使用…...

win32汇编环境,对话框程序中使用进度条控件

;运行效果 ;win32汇编环境,对话框程序中使用进度条控件 ;进度条控件主要涉及的是长度单位,每步步长,推进的时间。 ;比如你的长度是1000,步长是100,每秒走1次,则10秒走完全程 ;比如你的长度是1000,步长是10,每秒走1次,则100秒走完全程,但每格格子的长度与上面一样 ;以下…...

从ChatGPT热潮看智算崛起

2025年1月7日&#xff0c;科智咨询发布《2025年IDC产业七大发展趋势》&#xff0c;其中提到“ChatGPT开启生成式AI热潮&#xff0c;智能算力需求暴涨&#xff0c;算力供给结构发生转变”。 【图片来源于网络&#xff0c;侵删】 为何会以ChatGPT发布为节点呢&#xff1f;咱们一起…...

APISIX-API服务网关

一、简介 apisix是一款云原生微服务API网关&#xff0c;可以为API提供终极性能、安全性、开源和可扩展的平台。apisix基于Nginx和etcd实现&#xff0c;与传统API网关相比&#xff0c;apisix具有动态路由和插件热加载&#xff0c;特别适合微服务系统下的API管理。 Apisix 的诞生…...

NR_shell运行流程简析

nr_shell 是一套开源 shell 框架&#xff0c;基于框架可创建终端交互功能。 为了记录终端输入指令&#xff0c;以及进行解析处理&#xff0c;nr_shell 提供了一套 cmd 结构体&#xff0c;具体如下&#xff1a;typedef struct static_cmd_function_struct {char cmd[NR_SHELL_CM…...

leetcode_链表 876.链表的中间节点

876.链表的中间节点 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点。思路&#xff1a;快慢指针&#xff0c;创建两个指针fast和slow&#xff0c;fast指针每次移动两步&#xff0c;slow指针每次移动…...

idea实用设置

一.View 1.配置工具包方便按 二.File->Settings 点开设置然后进行后面的配置 1.这个看个人习惯 2.更新 3.更改菜单字体大小 4.鼠标控制字体大小 5.文件默认字体大小 6. 代码的智能提示功能 7.自动导包 8.编码 9.取消双击shift搜索...

ui-automator定位官网文档下载及使用

一、ui-automator定位官网文档简介及下载 AndroidUiAutomator&#xff1a;移动端特有的定位方式&#xff0c;uiautomator是java实现的&#xff0c;定位类型必须写成java类型 官方地址&#xff1a;https://developer.android.com/training/testing/ui-automator.html#ui-autom…...

Java数据结构方面的面试试题以及答案解析

Java数据结构是在计算机中存储和组织数据的方式&#xff0c;用于高效地处理和管理数据。 以下是一些常见的Java数据结构&#xff1a; 数组&#xff08;Array&#xff09;&#xff1a;一种线性数据结构&#xff0c;允许通过索引快速访问元素。它存储固定大小的相同类型的元素集…...

微信小程序-点餐(美食屋)02开发实践

目录 概要 整体架构流程 &#xff08;一&#xff09;用户注册与登录 &#xff08;二&#xff09;菜品浏览与点餐 &#xff08;三&#xff09;订单管理 &#xff08;四&#xff09;后台管理 部分代码展示 1.index.wxml 2.list.wxml 3.checkout.wxml 4.detail.wxml 小结优点 概要…...

Redis实战(黑马点评)——关于缓存(缓存更新策略、缓存穿透、缓存雪崩、缓存击穿、Redis工具)

redis实现查询缓存的业务逻辑 service层实现 Overridepublic Result queryById(Long id) {String key CACHE_SHOP_KEY id;// 现查询redis内有没有数据String shopJson (String) redisTemplate.opsForValue().get(key);if(StrUtil.isNotBlank(shopJson)){ // 如果redis的数…...

DroneXtract:一款针对无人机的网络安全数字取证工具

关于DroneXtract DroneXtract是一款使用 Golang 开发的适用于DJI无人机的综合数字取证套件&#xff0c;该工具可用于分析无人机传感器值和遥测数据、可视化无人机飞行地图、审计威胁活动以及提取多种文件格式中的相关数据。 功能介绍 DroneXtract 具有四个用于无人机取证和审…...

uniapp使用uni.navigateBack返回页面时携带参数到上个页面

我们平时开发中也经常遇到这种场景&#xff0c;跳转一个页面会进行一些操作&#xff0c;操作完成后再返回上个页面同时要携带着一些参数 其实也很简单&#xff0c;也来记录一下吧 假设从A页面 跳转到 B页面 A页面 直接上完整代码了哈&#xff0c;很简单&#xff1a; <t…...

2025美赛MCM数学建模A题:《石头台阶的“记忆”:如何用数学揭开历史的足迹》(全网最全思路+模型)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ 《石头台阶的“记忆”&#xff1a;如何用数学揭开历史的足迹》 目录 《石头台阶的“记忆”&#xff1a;如何用数学揭开历史的足迹》 ✨摘要✨ ✨引言✨ 1. 引言的结构 2. 撰写步骤 &#xff08;1&#xff09;研究背景 &#…...