c_c++八股(一)
C/C++
-
static
-
静态局部变量(函数内)
-
使局部变量的生命周期延长至整个程序运行期间,但作用域仍限于函数内
-
变量只初始化一次,下次调用函数时保留上次的值
-
void counter() {static int count = 0; // 只初始化一次count++;printf("Count: %d\n", count); }int main() {counter(); // 输出 "Count: 1"counter(); // 输出 "Count: 2"return 0; }
-
限制全局变量或函数的作用域为当前文件,避免与其他文件的同名符号冲突 // file1.c static int hidden_var = 42; // 仅当前文件可见static void hidden_func() { // 仅当前文件可调用printf("Secret function\n"); }// file2.c extern int hidden_var; // 编译错误!无法访问其他文件的static变量
-
类的静态成员变量被所有对象共享,内存仅分配一次 class Widget { public:static int count; // 声明(不分配内存)Widget() { count++; } };int Widget::count = 0; // 必须定义初始化int main() {Widget w1, w2;cout << Widget::count; // 输出 2 }
-
静态成员函数不依赖对象实例,可直接通过类名调用 class MathUtils { public:static int square(int x) { return x * x; } // 静态函数 };int main() {cout << MathUtils::square(5); // 输出 25,无需创建对象 }
-
-
class Singleton { private:static Singleton* instance;Singleton() {} public:static Singleton* getInstance() {if (!instance) instance = new Singleton();return instance;} }; Singleton* Singleton::instance = nullptr;
-
-
strlen 和sizeof
-
strlen计算C风格字符串的长度
-
const char*,以 \0 结尾的字符数组
-
char str[100]; // 没有初始化 size_t len = strlen(str); // ❌ 未定义行为(没有 '\0',会一直找直到崩溃)
-
std::string str; // 空字符串 std::cout << str.length(); // ✅ 输出0,不崩
-
char str[] = "hello"; size_t len = strlen(str); // 返回5std::string str = "hello"; size_t len = str.length(); // 也是返回5std::cout << sizeof(str) << std::endl; // 返回是指针str大小,64位下是str
-
char str[] = "Hello";// sizeof:计算数组总大小(包括'\0') printf("%zu\n", sizeof(str)); // 输出6(5字符 + 1个'\0')// strlen:计算字符串长度(不含'\0') printf("%zu\n", strlen(str)); // 输出5char *ptr = "Hello";// sizeof:返回指针本身的大小(通常4或8字节) printf("%zu\n", sizeof(ptr)); // 输出8(64位系统)// strlen:仍计算字符串长度 printf("%zu\n", strlen(ptr)); // 输出5
-
char str[100] = "abc"; printf("%zu %zu\n", sizeof(str), strlen(str)); // sizeof(str) 输出 100(数组总大小) // strlen(str) 输出 3(实际字符串长度)
-
-
字节序概述
- 字节序是数据在计算机内存储中的顺序方式
- 计算机将数据按字节8位存储,不同的系统可能会有不同的字节存储顺序
- 大端序:数据高位字节存储低地址处,低位字节存储在高地址处
- 小端序:数据低位字节存储在低地址处,高位字节存储在高地址处
- 网络字节序是大端序
-
字节序转换
- htonl(): 主机到网络字节序
- ntohl():网络到主机字节序
- 编译器默认生成函数
- 默认构造函数
- 析构函数
- 拷贝构造函数
- 拷贝赋值函数
- 移动构造函数
- 移动赋值运算符
- const与#define的区别
const
:定义类型安全的常量,占用内存,支持调试符号- #define:宏替换,无类型检查,不占内存,易引发副作用
-
数组与指针
-
数组:连续内存块的名称,存储相同类型的元素。数组名代表整个内存块的首地址,但在sizeof和&操作时表现为整个数组的属性
-
指针:变量,存储内存地址,可指向任意数据类型或内存位置
int arr[5]; // 数组,sizeof(arr) = 5*sizeof(int) int *ptr = arr; // 指针,sizeof(ptr) = 4或8(取决于系统)
-
大多数表达式中,数组名会隐式转换为指向其首元素的指针(如传递给函数、参与指针运算)
void func(int *ptr) {} int main() {int arr[3];func(arr); // 数组名退化为int*,指向arr[0]printf("%zu\n", sizeof(arr)); // 输出12(假设int为4字节) }
-
指针加法以元素大小为步长(如ptr + 1指向下一个元素)
int arr[3] = {1, 2, 3}; int *ptr = arr; printf("%d\n", *(ptr + 1)); // 输出2(等价于arr[1])
-
动态分配数组
// 一维数组 int *arr1D = malloc(5 * sizeof(int));// 二维数组(非连续) int **arr2D = malloc(3 * sizeof(int*)); for (int i = 0; i < 3; i++) arr2D[i] = malloc(4 * sizeof(int));// 二维数组(连续内存) int (*arr2D_cont)[4] = malloc(3 * sizeof(int[4]));
-
多维数组与指针数组的区别
多维数组:内存连续,每行元素紧密排列 指针数组:每个元素为指针,指向独立分配的内存块int arr[3][4] int *arr[3] +---+---+---+---+ +---+ +---+---+---+---+ | 0 | 1 | 2 | 3 | | · | --> | 0 | 1 | 2 | 3 | +---+---+---+---+ +---+ +---+---+---+---+ | 4 | 5 | 6 | 7 | | · | --> | 4 | 5 | 6 | 7 | +---+---+---+---+ +---+ +---+---+---+---+ | 8 | 9 |10 |11 | | · | --> | 8 | 9 |10 |11 | +---+---+---+---+ +---+ +---+---+---+---+
-
字符串的两种表达方式
char str[] = "hello"和char *str = "hello" 1.字符数组:可修改,存储于栈或全局区字符指针:指向常量字符串,不可修改内容(可能存储于只读段)2. char arr[] = "hello"; arr[0] = 'H'; // 合法char *ptr = "hello"; ptr[0] = 'H'; // 运行时错误(未定义行为)
-
指针与数组的常见错误
越界访问:arr[5]访问超出数组长度未初始化指针:int *ptr; *ptr = 5;(野指针)错误的内存释放:free非malloc分配的内存或重复释放
-
函数参数传递数组
数组作为参数传递时退化为指针,需额外传递长度: void printArray(int arr[], int size) { // 等价于int *arrfor (int i = 0; i < size; i++)printf("%d ", arr[i]); }
-
指针与数组的性能差异
数组:内存连续,利于缓存命中,访问速度快指针:灵活性高,但可能因间接寻址增加开销
-
C++
-
new/delete 与 malloc/free 的区别
new
/delete
:调用构造函数/析构函数,类型安全,可重载malloc
/free
:仅分配/释放内存,不调用构造/析构
-
智能指针
unique_ptr
:独占所有权,不可拷贝,可移动shared_ptr
:共享所有权,引用计数weak_ptr
:解决shared_ptr
循环引用问题
-
函数模板与类模板
// 函数模板 template <typename T> T max(T a, T b) { return a > b ? a : b; }// 类模板 template <typename T> class Stack { private:std::vector<T> elements; public:void push(const T& elem) { elements.push_back(elem); } };
-
模板特化与偏特化
-
全特化:针对特定类型完全重写模板
-
偏特化:部分限制模板参数(如指针类型)
-
// 全特化 template <> class Stack<int> { /* 针对int的特殊实现 */ };// 偏特化(指针类型) template <typename T> class Stack<T*> { /* 处理指针类型 */ };
-
-
typename
与class
的区别- 在模板参数声明中二者等价
typename
用于声明嵌套依赖类型(如typename T::iterator
)
-
浅拷贝
class ShallowCopy { public:int* data;ShallowCopy(int val) {data = new int(val);}~ShallowCopy() {delete data; // 析构时释放内存} };int main() {ShallowCopy obj1(42);ShallowCopy obj2 = obj1; // 浅拷贝:obj2.data 与 obj1.data 指向同一内存// obj1和obj2析构时会导致重复释放(崩溃)!return 0; }
-
深拷贝
class DeepCopy { public:int* data;DeepCopy(int val) {data = new int(val);}// 自定义拷贝构造函数(深拷贝)DeepCopy(const DeepCopy& other) {data = new int(*other.data); // 分配新内存并复制值}// 自定义赋值运算符(深拷贝)DeepCopy& operator=(const DeepCopy& other) {if (this != &other) { // 防止自赋值delete data; // 释放旧内存data = new int(*other.data); // 分配新内存并复制值}return *this;}~DeepCopy() {delete data;} };int main() {DeepCopy obj1(42);DeepCopy obj2 = obj1; // 深拷贝:obj2.data 指向新内存// obj1和obj2析构时各自释放内存,无冲突return 0; }
-
简述strcpy,sprintf和memcpy函数的区别
-
#include <string.h>char src[] = "Hello"; char dest[10]; strcpy(dest, src); // dest 变为 "Hello"(含\0)
-
#include <stdio.h>char buffer[50]; int num = 42; sprintf(buffer, "Value: %d", num); // buffer 变为 "Value: 42\0"
-
#include <string.h>int src[5] = {1, 2, 3, 4, 5}; int dest[5]; memcpy(dest, src, 5 * sizeof(int)); // 复制整个数组(二进制拷贝)
-
C语言字符串
-
字符串的基本概念
-
C语言中,字符串是以空字符
'\0'
结尾的字符数组 -
字符数组:显式分配内存,可修改
-
char str[] = "Hello"; // 可修改,存储在栈上 str[0] = 'h'; // 合法
-
// 字符串常量:存储在只读内存段(如.rodata),不可修改 char *ptr = "Hello"; // ptr指向常量区 ptr[0] = 'h'; // 运行时错误(未定义行为)
-
-
字符串的输入与输出
- scanf(“%s”, str):读取到空格/换行停止,不检查缓冲区大小
fgets(str, sizeof(str), stdin)
:安全读取,保留换行符,自动截断- printf(“%s”, str):输出到 ‘\0’ 终止
puts(str)
:自动添加换行符
-
-
字符串函数
-
strlen(str) //返回字符串长度(不含 '\0') strcpy(dest, src) // 复制字符串(含 '\0') strncpy(dest, src, n) // 复制最多 n 个字符 strcat(dest, src) // 安全追加,最多 n 字符 strcmp(s1, s2) // 比较字符串 strstr(haystack, needle) // 查找子串首次出现位置
-
char buf[5]; strcpy(buf, "HelloWorld"); // 缓冲区溢出,导致未定义行为
-
char *str = malloc(20 * sizeof(char)); // 动态分配20字节 if (str != NULL) {strcpy(str, "Dynamic String");// 使用...free(str); // 必须手动释放 }
-
char *p = "Hello"; while (*p != '\0') {printf("%c", *p);p++; }
-
// 指针和数组区别 char arr[] = "Hello"; // 数组名是常量指针 char *ptr = "Hello"; // 指针可重新赋值 ptr = arr; // 合法 // arr = ptr; // 非法(数组名不可修改)
-
// 实现安全的字符串拷贝 void safe_strcpy(char *dest, const char *src, size_t dest_size) {if (dest_size == 0) return;size_t i;for (i = 0; i < dest_size-1 && src[i] != '\0'; i++) {dest[i] = src[i];}dest[i] = '\0'; }
-
相关文章:
c_c++八股(一)
C/C static 静态局部变量(函数内) 使局部变量的生命周期延长至整个程序运行期间,但作用域仍限于函数内 变量只初始化一次,下次调用函数时保留上次的值 void counter() {static int count 0; // 只初始化一次count;printf(&quo…...
通过websocket给服务端发送订单催单提醒消息
controller层 GetMapping("/reminder/{id}")public Result Remainder(PathVariable("id") Long id){orderService.remainder(id);return Result.success();} 实现类 Overridepublic void remainder(Long id) {Orders ordersDB orderMapper.getById(id);…...
【NumPy科学计算引擎:从基础操作到高性能实践】
目录 前言:技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析关键技术模块说明技术选型对比 二、实战演示环境配置核心代码实现运行结果验证 三、性能对比测试方法论量化数据对比结果分析 四、最佳实践推荐方案 ✅常见错误 ❌调试技巧 五、应用…...
day24 学习笔记
文章目录 前言一、OpenCV简介二、计算机中的图像表达1.图像表示2.图像存储 三、基本图像操作1.创建窗口2.读取图像3.显示图像4.保存图像5.创建黑白图像6.图像切片7.图像大小调整 四、读取视频 前言 目前,我开始学习OpenCV的相关概念和操作。通过今天的学习…...
OFDM CP 对解码影响
OFDM符号间会存在ISI,为了解决该问题在符号间插入了循环前缀,可以说这个发明是OFDM能够实用的关键,在多径信道中CP可以有效的解决符号间干扰。3GPP中对于不同SCS 定义了不同的CP长度: 5G Cyclic Prefix (CP) Design -5G Physical …...
Compose笔记(十六)--ExoPlayer
这一节了解一下Compose中的ExoPlayer的使用,我们在开发Android应用时,经常会使用到播放器这个ExoPlayer框架就相对成熟,易上手,现简单总结如下: 1. ExoPlayer 核心类 ExoPlayer 是 ExoPlayer库的核心类,负责管…...
拖拽实现3
import React, { useState, useRef, useEffect } from ‘react’; import ‘./ImageList.css’; const ImageList () > { const images [ ‘https://picsum.photos/300/200?random1’, ‘https://picsum.photos/300/200?random2’, ‘https://picsum.photos/300/200?r…...
OracleLinuxR5U5系统重启后启动数据库oracle23ai
1、切换到oracle用户 [rootOracleLinux-R9-U5 ~]# su oracle2、查看oracle是否配置了ORACLE_SID [oracleOracleLinux-R9-U5 root]$ cd ~ [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile3、输出内容如下: [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile # .ba…...
`offset_mapping` 是什么
offset_mapping 是什么 offset_mapping是 transformers 库中分词器(tokenizer)在进行分词操作时返回的一个重要信息,它用于建立原始文本中的字符位置和分词后标记(tokens)之间的映射关系。借助 offset_mapping&#x…...
数据结构(1)
算法代码如下: #include <iostream> typedef int DataType; void Reverse(DataType a[], int n, DataType b[] ){for(int i 0; i < n; i) {b[i] a[n - 1 - i];} } int main() {const int n 5; DataType a[n] {1, 2, 3, 4, 5}; DataType b[n]; Reverse…...
Linux 第三讲 --- 基础指令(三)
前言: 在前面我们已经讲了有十几个Linux的基础指令,今天我们再补充几个常用的基础指令,为后面的学习做准备 。 目录 前言: 一、两个与时间相关的指令 1.date指令 演示 : 时间戳 设置时间 2、cal指令 演示&#x…...
HotSpot虚拟机中对象的访问定位机制是怎样的?
HotSpot虚拟机中对象的访问定位机制 在HotSpot虚拟机中,对象的访问定位主要通过 直接指针(Direct Pointer) 实现。这种方式以性能优化为核心,结合内存布局和运行时机制,确保高效的对象数据访问。以下是详细分析&#…...
pjsip 呼叫自定义头协议(pjsua)
我们想和远端设备进行信令交互的时候可以进行自定头部协议带上数据,进行解析处理一些特殊功能,这样可以减少我们再用其他信令交互才能处理一些特殊功能。 1.1 SIP消息结构SIP消息由以下几部分组成: 起始行(Start-Line) 头部字段(Header Fields) 空行(CRLF) 消息体(Me…...
黑马点评redis改 part 2
02.商户查询缓存 比如说那么这是因为这种数据读写的能力远远的低于预算能力,所以说计算机性能受到了一个限制。所以为了解决这个问题,人们就在CPU的内部添加了一个缓存,什么意思?就是CPU会把经常需要读写的一些数据放到CPU的缓存…...
C语言复习笔记--指针(5)
在之前的复习中我们已经简单的了解了qsort函数的使用方式,下面我们接着上回的继续复习,来看看qsort函数的模拟实现. qsort函数的模拟实现 这里因为我们刚刚学习了冒泡排序,所以就先用冒泡排序来改装一下qsort函数,让冒泡排序也可以排各种各样类型的元素. #define _CRT_SECURE_…...
设计模式——工厂模式学习总结
假设现在一个场景: 某物流公司,当前有以下业务:汽车运输和轮船运输。客户可以选择任一运输方式进行运输。 此时,应该如何使用代码将这个现实业务进行抽象实现? 在没有学习工厂模式前,我是这样想的&#x…...
《Python星球日记》第27天:Seaborn 可视化
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、Seabor…...
获取1688商品评论接口的实践指南
在电商领域,商品评论是消费者了解产品真实情况的重要依据,对于商家来说,分析商品评论可以帮助他们改进产品、优化服务。1688作为国内知名的B2B电商平台,提供了丰富的商品评论接口,方便开发者获取商品的评论数据。本文将…...
c++中继承方面的知识点
继承的概念及定义 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象 程序设计的层次结…...
青少年编程考试 CCF GESP图形化编程 一级认证真题 2025年3月
图形化编程 一级 2025 年 03 月 一、单选题(共 10 题,每题 3 分,共 30 分) 1、2025 年春节有两件轰动全球的事件,一个是 DeepSeek 横空出世,另一个是贺岁片《哪吒 2》票房惊人,入了全球票房榜。…...
Openlayers:flat样式介绍
在前段时间我在使用WebGL矢量图层时接触到了flat样式,我对其十分的感兴趣,于是我花了几天的时间对其进行了了解,在这篇文章中我将简单的介绍一下flat样式的使用方式以及我对其的一些理解。 一、了解flat样式 1.什么是flat样式? …...
[特殊字符] 第十三讲 | 地统计模拟与空间不确定性评估
📘 专栏:科研统计方法实战分享 | 地学/农学人的数据分析工具箱 ✍️ 作者:平常心0715 🎯 关键词:地统计模拟、随机函数、空间不确定性、条件模拟、SGS、R语言 🧠 核心导语 在现实数据有限、空间异质性强的…...
Vue接口平台学习六——接口列表及部分调试页面
一、实现效果图及界面布局简单梳理 整体布局分左右,左边调试,右边显示接口列表 左侧: 一个输入框按钮;下面展示信息,大部分使用代码编辑器就好了,除了请求体传文件类型需要额外处理。然后再下方显示响应信…...
Spring 中的 @Cacheable 缓存注解
1 什么是缓存 第一个问题,首先要搞明白什么是缓存,缓存的意义是什么。 对于普通业务,如果要查询一个数据,一般直接select数据库进行查找。但是在高流量的情况下,直接查找数据库就会成为性能的瓶颈。因为数据库查找的…...
Context的全面解析:在不同技术应用中的通用作用与差异
Context的全面解析:在不同技术应用中的通用作用与差异 引言: 在软件开发中,“Context”这个概念被广泛使用。它不仅限于某个特定的技术或编程语言,实际上,Context 作为一种抽象的设计模式,贯穿在许多开发领…...
机器学习(2)——逻辑回归
文章目录 1. 什么是逻辑回归?2. 核心思想3. 逻辑回归模型的训练:4. 参数估计(损失函数与优化)4.1. **损失函数:**4.2. 极大似然估计(MLE)4.3. 优化方法 5. 决策边界6. 模型评估指标7 . 假设与适用条件8. 逻…...
Sentinel核心算法解析の滑动窗口算法
文章目录 前言一、回顾:快速失败二、固定窗口算法三、滑动窗口算法三、源码体现3.1、ArrayMetric的初始化3.2、addPass3.2.1、currentWindow3.2.2、wrap.value().addPass 总结 前言 在Sentinel中,流控效果有快速失败、预热和排队等待。其中快速失败的统计…...
ida 使用记录
文章目录 伪代码-汇编hexstring快捷键 伪代码-汇编 流程图界面——F5——伪代码界面——再点Tab——流程图界面——再按空格——汇编界面流程图界面——空格——汇编界面 hex view - open subviews - hex dump string view - open subviews - string快捷键: sh…...
数字统计:
1.题意: 在1~N之间寻找d出现的个数,然后输出即可;例如:d2,N23,那么满足条件的有2,12,21,23,所以是4个 2.思路: 1.暴力枚举(不可能):可以先写出来去找规律 …...
【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第八节:网关-注入攻击与预防
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第八节:网关-注入攻击与预防 SQL注入攻击的原理攻击者获取数据库表结构预防SQL注入的方法 这篇文章我们来看SQL注入。 SQL注入攻击的原理 SQL注入攻击的原理呢?我们来简单说…...
波束形成(BF)从算法仿真到工程源码实现-第五节-线性约束最小方差波束形成算法(LCMV)
一、概述 本节我们讨论线性约束最小方差波束形成算法(Linearly constrained minimum variance,LCMV)波束形成算法,包括原理分析及代码实现。 更多资料和代码可以进入https://t.zsxq.com/qgmoN ,同时欢迎大家提出宝贵的建议,以共同探讨学习。 …...
Java类加载机制原理与应用
前言 Java 中的类加载机制(Class Loading Mechanism)是 JVM 架构中的核心组成部分,它控制着类从编译后的 .class 文件被加载到内存、并最终变成可以被程序使用的对象的全过程。涉及类加载器、双亲委派模型及加载过程。下面我们从原理到实际应…...
android display 笔记(十三)surfcaeflinger的DEQUEUED、QUEUED
BufferQueue 的核心作用 BufferQueue 是 生产者-消费者模型 的核心组件,协调应用(生产者)和 SurfaceFlinger(消费者)之间的图形缓冲区(GraphicBuffer)传递。 生产者:应用࿰…...
数据库预热
介绍 Database Warm-up 🧠 一句话理解 数据库是在应用启动阶段,提前建立数据库连接 或 执行轻量 SQL 操作,从而 加快首个请求的响应速度 的一种优化手段 🎯 为什么需要数据库预热? 当 FastAPI 或其他 Web 服务刚启…...
C语言—程序的编译和链接
1. 翻译环境和运行环境 在ANSI S的任何一种实现中,存在两个不同的环境 第一种是翻译环境,在这个环境中源代码被转换为可执行的机器指令(二进制指令) 第二种是执行环境,它用于实际执行代码 2. 翻译环境 翻译环境是由…...
Neo4j GDS-10-neo4j GDS 库中相似度算法介绍
neo4j apoc 系列 Neo4j APOC-01-图数据库 apoc 插件介绍 Neo4j GDS-01-graph-data-science 图数据科学插件库概览 Neo4j GDS-02-graph-data-science 插件库安装实战笔记 Neo4j GDS-03-graph-data-science 简单聊一聊图数据科学插件库 Neo4j GDS-04-图的中心性分析介绍 Ne…...
Unity 动画
Apply Root Motion 勾选的话就会使用动画片段自带的位移 Update Mode (动画重新计算骨骼位置转向缩放的数值): Normal : 随Update走,每次Update都计算Animate Physics :与 fixed Update() 同步࿰…...
【位运算】只出现一次的数字 II
文章目录 137. 只出现一次的数字 II解题思路一:借用数组的位运算解法二:不使用数组的位运算 137. 只出现一次的数字 II 137. 只出现一次的数字 II 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 **…...
模型开发中的微调是干什么
在模型开发中,微调(Fine-tuning) 是指利用预训练模型(Pre-trained Model)的参数作为初始值,在特定任务或数据集上进一步调整模型参数的过程。它是迁移学习(Transfer Learning)的核心…...
leetcode 204. Count Primes
题目描述 这是道纯数学类问题。 先回忆一下,素数的定义。 质数(英文名:Prime number)又称素数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 质数又称素数。一个大于1的自然数&…...
fastadmin后端添加页面,自主控制弹出框关闭,关闭父页面弹框
Form.api.bindevent($(“form[roleform]”), (data, ret) > { 重写绑定事件,返回false即可 注意:只有返回code1才能拦截,其他值不进行拦截 add: function () {//获取当前search里面的type值var type location.search.split(type)[1];Form.api.bindevent($("form[role…...
LeetCode 255 超通俗讲解:Swift 验证前序是否 BST
文章目录 摘要描述题解答案题解代码分析核心点解释: 示例测试及结果时间复杂度空间复杂度总结未来展望 摘要 在做算法题的时候,树相关的题总是“神神叨叨”的,但其实抓住核心规则,它们也挺有逻辑的。今天这题——LeetCode 255&am…...
Win32++ 使用初探
文章目录 1. 环境要求2. Win32安装3. 项目创建3.1 项目创建(1)直接使用Win32里的示例Sample(2)自行创建项目 最近想用 VC写些 UI,但又不太想用 MFC,正好对界面要求不太高,就使用了一下 Win3…...
求解时间复杂度
1.设 t 法 当求解出现while循环时,设t求解 void fun(int n) {int i 1;while(i < n)i i * 2; } 解法: 1.设循环次数为t; 2.将while循环中的语句展开到循环t次 1 2 3 …… t 2 2^2 2^3 …… 2^t 3.跳出循环 2^t > n …...
深度解析:如何高效识别并定位问题关键词
什么是问题关键词? 问题关键词是人们在搜索引擎中输入以查找信息、答案或解决方案的问题。这些查询以问题指示符开头,例如: who、what、where、when、why、how、which、will、would、should、can、could、is、are、was、were、do、does 或 d…...
c++小做——完全数
今天,我们来写一个完全数的代码 首先是 long long n; cin>>n; (you~输入的数) 然后是 long long b0;//因数的和 long long cnt0;//计数器 接着是 for(long long i2;i<n-1;i) {} 在里面插入 bb-i;再写一个for for(int a1;a&…...
GGML源码逐行调试(下)
目录 前言1. 简述2. 预分配计算图内存2.1 创建图内存分配器2.2 构建最坏情况的计算图2.3 预留计算图内存 3. 分词4. 模型推理与生成4.1 模型推理4.2 采样 结语下载链接参考 前言 学习 UP 主 比飞鸟贵重的多_HKL 的 GGML源码逐行调试 视频,记录下个人学习笔记&#x…...
JavaScript学习教程,从入门到精通, JavaScript 函数全面解析与案例实践(11)
JavaScript 函数全面解析与案例实践 项目导读 JavaScript 函数是编程中的核心概念,是执行特定任务的代码块。本教程将全面讲解函数的定义、参数、返回值及调用方式,并通过实际案例加深理解。 学习目标 掌握 JavaScript 函数的定义与调用方法理解函数…...
音视频之H.265/HEVC编码框架及编码视频格式
一、编码框架: H.265/HEVC采用混合编码框架,包括变换、量化、熵编码、帧内预测、帧预测以及环路滤波等模块。但是,H.265/HEVC几乎在每个模块都引入了新的编码技术。 1、帧内预测: 该模块主要用于去除图像的空间相关性。通过编码后…...
栈与队列:两种经典线性数据结构的深度解析
一、栈:LIFO 特性的完美诠释 (一)核心概念与抽象模型 定义与特性 栈是一种严格遵循后进先出(LIFO)原则的线性数据结构,其操作被限制在栈顶(Top)进行。形象化理解:如同堆…...