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

数据结构(1~10)

(1)双栈

#include <iostream>
#include <algorithm>
using namespace std;
// 定义栈元素的类型
typedef int SElemType;// 定义双栈数据结构
typedef struct {int top[2];int bot[2];SElemType *V;int m;
} DblStack;// 初始化双栈
void InitDblStack(DblStack *S, int maxSize) {S->m = maxSize;S->V = new SElemType[maxSize]; // 使用 new 替代 mallocS->bot[0] = -1;S->top[0] = -1; // 0号栈为空S->bot[1] = maxSize;S->top[1] = maxSize; // 1号栈为空
}// 判断0号栈是否为空
bool StackEmpty0(DblStack *S) {return S->top[0] == -1;
}// 判断1号栈是否为空
bool StackEmpty1(DblStack *S) {return S->top[1] == S->m;
}// 判断双栈是否已满
bool StackFull(DblStack *S) {return S->top[0] + 1 == S->top[1];
}// 0号栈进栈操作
bool Push0(DblStack *S, SElemType e) {if (StackFull(S)) {std::cout << "栈溢出!" <<endl;return false;}S->V[++(S->top[0])] = e;return true;
}// 1号栈进栈操作
bool Push1(DblStack *S, SElemType e) {if (StackFull(S)) {cout << "栈溢出!" << endl;return false;}S->V[--(S->top[1])] = e;return true;
}// 0号栈出栈操作
bool Pop0(DblStack *S, SElemType *e) {if (StackEmpty0(S)) {cout << "栈下溢!" << endl;return false;}*e = S->V[(S->top[0])--];return true;
}// 1号栈出栈操作
bool Pop1(DblStack *S, SElemType *e) {if (StackEmpty1(S)) {cout << "栈下溢!" << endl;return false;}*e = S->V[(S->top[1])--];return true;
}// 打印栈数组
void PrintStack(DblStack *S) {cout << "栈数组: ";for (int i = 0; i < S->m; i++) {std::cout << S->V[i] << " ";}cout << "\n栈顶索引: 0: " << S->top[0] << ", 1: " << S->top[1] << endl;
}int main() {DblStack S;int maxSize = 10;InitDblStack(&S, maxSize);// 测试0号栈Push0(&S, 1);Push0(&S, 2);Push0(&S, 3);int e;Pop0(&S, &e);cout << "从0号栈弹出: " << e << endl;// 测试1号栈Push1(&S, 7);Push1(&S, 8);Push1(&S, 9);Pop1(&S, &e);cout << "从1号栈弹出: " << e << endl;// 打印栈数组PrintStack(&S);// 释放内存delete[] S.V; return 0;
}

(2)回文数

#include <iostream>
#include<string> 
#include<algorithm>
using namespace std;
int main() 
{string s;cin >> s;string oris = s;reverse(s.begin(),s.end());if(oris == s)cout <<"YES"<< endl;elsecout << "NO" << endl; return 0;
}

(3)设从键盘输入一整数的序列:a1,a2,a3,...,an,用栈结构存储输入的整数,当ai不等于-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>const int  MAX_SIZE = 100 ;typedef struct {int data[MAX_SIZE]; // 存储栈中元素的数组int top; // 栈顶位置
} Stack;// 初始化栈
void initStack(Stack *s) {s->top = -1; // 栈顶位置初始化为-1,表示栈为空
}// 判断栈是否为空
bool isEmpty(Stack *s) {return s->top == -1;
}// 判断栈是否满
bool isFull(Stack *s) {return s->top == MAX_SIZE - 1;
}// 压栈操作
bool push(Stack *s, int value) {if (isFull(s)) {printf("栈满,无法压栈!\n");return false;}s->data[++(s->top)] = value; // 先增加栈顶位置,再赋值return true;
}// 弹栈操作
bool pop(Stack *s, int *value) {if (isEmpty(s)) {printf("栈空,无法弹栈!\n");return false;}*value = s->data[(s->top)--]; return true;
}// 获取栈顶元素
bool top(Stack *s, int *value) {if (isEmpty(s)) {printf("栈空,无法获取栈顶元素!\n");return false;}*value = s->data[s->top];return true;
}int main() {Stack s;initStack(&s);int input;printf("请输入一整数的序列,以-1表示输出栈顶并出栈:\n");while (scanf("%d", &input) != EOF) {if (input != -1) {if (!push(&s, input)) {break; }} else {int value;if (top(&s, &value) && pop(&s, &value)) {printf("栈顶整数:%d\n", value);}}}return 0;
}

(4)从键盘上输入一个后缀表达式,规定:后缀表达式长度不超过一行,以’$'结束操作数之间用空格分割。且操作符只有 + - * / 四种。
后缀表达式:234 34 + 2 *$

#include <iostream>
#include <stack>
#include <sstream>
#include <string>
#include <cctype>using namespace std;// 函数:判断一个字符串是否是有效的操作符
bool isOperator(const string& token) {return token == "+" || token == "-" || token == "*" || token == "/";
}// 函数:将字符串转换为整数
int stringToInt(const string& str) {return stoi(str);
}// 函数:计算两个操作数的结果,根据给定的操作符
int applyOperator(const string& op, int a, int b) {if (op == "+") return a + b;if (op == "-") return a - b;if (op == "*") return a * b;if (op == "/") {if (b == 0) {cerr << "Error: Division by zero!" << endl;exit(EXIT_FAILURE); // 处理除以零的错误情况}return a / b;}return 0; 
}int main() {stack<int> values; // 用于存储操作数的栈string line;getline(cin, line, '$'); // 从键盘读取一行输入,直到遇到'$'字符istringstream iss(line); // 使用输入字符串流来解析输入string token;while (iss >> token) { if (isOperator(token)){ // 如果token是操作符int b = values.top(); values.pop(); int a = values.top(); values.pop(); int result = applyOperator(token, a, b); // 计算结果values.push(result); // 将结果压入栈中}else { values.push(stringToInt(token)); // 将操作数转换为整数并压入栈中}}// 栈中应该只剩下一个元素,即表达式的最终结果if (!values.empty()) {cout << "计算结果: " << values.top() << endl;} else {cerr << "错误:后缀表达式计算结果导致了一个空堆栈! " << endl;}return 0;
}

(5)假设以I和O分别表示入栈和出栈操作。

#include <iostream>
#include <string>using namespace std;//检查给定的IO序列是否为合法序列
bool isValidSequence(const string& sequence) 
{int balance = 0; // 用于跟踪栈的平衡状态for (char ch : sequence) {if (ch == 'I'){balance++; // 入栈操作,增加平衡计数}else if (ch == 'O') {if (balance == 0) {// 出栈操作,但栈为空,因此序列非法return false;}balance--; // 出栈操作,减少平衡计数} else {// 序列中包含非法字符return false;}}return balance == 0;
}int main() {string sequence;cout << "请输入一个由I和O组成的序列:";cin >> sequence;if (isValidSequence(sequence)) {cout << "序列是合法的。" << endl;} else {cout << "序列是非法的。" << endl;}return 0;
}

(6)假设以带头结点的循环链表表示队列

#include <stdio.h>
#include <stdlib.h>// 定义链表结点结构
typedef struct Node {int data;struct Node* next;
} Node;// 定义队列结构,包含一个指向队尾元素的指针
typedef struct {Node* tail; 
} CircularQueue;// 初始化队列
void initQueue(CircularQueue* q) 
{// 创建一个头结点,它同时也是尾结点的前驱q->tail = (Node*)malloc(sizeof(Node));if (q->tail == NULL) {printf("内存分配失败 ");exit(1);}q->tail->data = 0; q->tail->next = q->tail; 
}// 入队列操作
void enqueue(CircularQueue* q, int value) 
{Node* newNode = (Node*)malloc(sizeof(Node));if (newNode == NULL) {printf("内存分配失败 ");exit(1);}newNode->data = value;newNode->next = q->tail->next;q->tail->next = newNode;q->tail = newNode; 
}// 出队列操作,返回队首元素的值,并移除该元素
int dequeue(CircularQueue* q) 
{if (q->tail->next == q->tail) {printf("栈是空的");exit(1); }Node* temp = q->tail->next;int value = temp->data; q->tail->next = temp->next; free(temp); // 释放队首元素的内存return value;
}// 打印队列中的所有元素(用于调试)
void printQueue(CircularQueue* q) {if (q->tail->next == q->tail) {printf("Queue is empty\n");return;}Node* current = q->tail->next;while (current != q->tail) {printf("%d ", current->data);current = current->next;}printf("\n");
}// 主函数用于测试队列操作
int main() {CircularQueue q;initQueue(&q);enqueue(&q, 1);enqueue(&q, 2);enqueue(&q, 3);printQueue(&q); // 输出: 1 2 3printf("队列: %d\n", dequeue(&q)); printQueue(&q); // 输出: 2 3return 0;
}

(7)假设以数组q[m]存放

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>#define M 5 // 队列的最大容量typedef struct {int Q[M]; // 队列元素数组int front; // 队头指针int rear; // 队尾指针int tag; // 队列状态标志,0表示空,1表示满,-1表示初始状态(可选,用于更明确的初始化检查)
} CircularQueue;// 初始化队列
void initQueue(CircularQueue* q) {q->front = 0;q->rear = 0;q->tag = -1; 
}// 判断队列是否为空
bool isEmpty(CircularQueue* q) {return q->tag == 0 && q->front == q->rear;
}// 判断队列是否已满
bool isFull(CircularQueue* q) {return q->tag == 1 || ((q->rear + 1) % M == q->front);
}// 入队列操作
bool enqueue(CircularQueue* q, int value) {if (isFull(q)) {printf("队列已满,无法入队\n");return false;}if (q->tag == -1) {q->tag = 0; // 如果队列处于初始状态,则将其设置为空状态}q->Q[q->rear] = value;q->rear = (q->rear + 1) % M;if (q->rear == q->front) { if (!isEmpty(q)) { q->tag = 1;}}return true;
}// 出队列操作
bool dequeue(CircularQueue* q, int* value) {if (isEmpty(q)) {printf("队列为空,无法出队\n");return false;}*value = q->Q[q->front];q->front = (q->front + 1) % M;if (q->front == q->rear) { // 出队后front追上了rear,队列变为空q->tag = 0;} else {q->tag = -1;}return true;
}int main() {CircularQueue q;initQueue(&q);// 测试入队列操作enqueue(&q, 1);enqueue(&q, 2);enqueue(&q, 3);enqueue(&q, 4);enqueue(&q, 5); // 此时队列应已满// 测试出队列操作int value;dequeue(&q, &value);printf("出队元素: %d\n", value);dequeue(&q, &value);printf("出队元素: %d\n", value);// 再次测试入队列操作,检查队列是否能正确循环enqueue(&q, 6);printf("入队元素: 6\n");// 检查队列状态if (isEmpty(&q)) {printf("队列为空\n");} else if (isFull(&q)) {printf("队列已满\n");} else {printf("队列既不满也不空\n");}return 0;
}

(8)如果允许在循环队列的

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>#define M 5 // 队列的最大容量typedef struct {int Q[M]; // 队列元素数组int front; // 队头指针int rear; // 队尾指针(指向下一个空闲位置)int size; // 队列中当前元素的个数
} CircularQueue;// 初始化队列
void initQueue(CircularQueue* q) {q->front = 0;q->rear = 0;q->size = 0;
}// 判断队列是否为空
bool isEmpty(CircularQueue* q) {return q->size == 0;
}// 判断队列是否已满
bool isFull(CircularQueue* q) {return q->size == M;
}// 从队头插入元素
bool enqueueFront(CircularQueue* q, int value) {if (isFull(q)) {printf("队列已满,无法从队头插入\n");return false;}int newFront = (q->front - 1 + M) % M; // 计算新的队头位置(考虑循环)if (newFront == q->rear) {printf("内部错误:插入位置冲突\n");return false;}q->Q[newFront] = value;q->front = newFront;q->size++;return true;
}// 从队尾删除元素
bool dequeueRear(CircularQueue* q, int* value) {if (isEmpty(q)) {printf("队列为空,无法从队尾删除\n");return false;}*value = q->Q[q->rear - 1]; q->rear = (q->rear - 1 + M) % M; // 更新队尾指针(考虑循环)q->size--;if (q->size == 0) {q->front = 0;q->rear = 0;}return true;
}// 打印队列元素(用于调试)
void printQueue(CircularQueue* q) {if (isEmpty(q)) {printf("队列为空\n");return;}printf("队列元素: ");int i = q->front;for (int count = 0; count < q->size; count++) {printf("%d ", q->Q[i]);i = (i + 1) % M;}printf("\n");
}int main() {CircularQueue q;initQueue(&q);// 测试从队头插入enqueueFront(&q, 10);enqueueFront(&q, 20);enqueueFront(&q, 30);printQueue(&q); // 应打印: 队列元素: 30 20 10// 测试从队尾删除int value;dequeueRear(&q, &value);printf("从队尾删除的元素: %d\n", value); printQueue(&q);return 0;
}

(10)已知f为单链表的

#include <iostream>
#include <climits> // 定义链表节点结构
struct Node {int data;Node* next;// 构造函数Node(int val) : data(val), next(nullptr) {}
};// (1)求链表中的最大整数
int findMaxRecursive(Node* head) {if (head == nullptr) {std::cerr << "Error: head is nullptr" << std::endl;exit(EXIT_FAILURE); }// 只有一个元素时,直接返回该元素if (head->next == nullptr) {return head->data;}// 递归情况:比较当前元素和剩余链表中的最大值int maxInRest = findMaxRecursive(head->next);return (head->data > maxInRest) ? head->data : maxInRest;
}// (2)求链表的节点个数
int countNodesRecursive(Node* head) {// 基本情况:链表为空时,节点个数为0if (head == nullptr) {return 0;}// 递归情况:当前节点加上剩余链表的节点个数return 1 + countNodesRecursive(head->next);
}// (3)求链表中所有元素的平均值(使用辅助函数)
double findAverageHelper(Node* head, int& totalSum, int& totalCount) {if (head == nullptr) {return 0;}totalSum += head->data;totalCount++;return findAverageHelper(head->next, totalSum, totalCount);
}double findAverageRecursive(Node* head) {int totalSum = 0;int totalCount = 0;// 调用辅助函数进行递归计算findAverageHelper(head, totalSum, totalCount);// 返回平均值return (totalCount > 0) ? static_cast<double>(totalSum) / totalCount : 0.0;
}int main() {// 创建链表:1 -> 3 -> 2 -> 5 -> 4Node* first = new Node(1);first->next = new Node(3);first->next->next = new Node(2);first->next->next->next = new Node(5);first->next->next->next->next = new Node(4);// 测试函数std::cout << "最大整数: " << findMaxRecursive(first) << std::endl; // 应输出5std::cout << "节点个数: " << countNodesRecursive(first) << std::endl; // 应输出5std::cout << "所有整数的平均值: " << findAverageRecursive(first) << std::endl; // 应输出3.0return 0;
}

相关文章:

数据结构(1~10)

&#xff08;1&#xff09;双栈 #include <iostream> #include <algorithm> using namespace std; // 定义栈元素的类型 typedef int SElemType;// 定义双栈数据结构 typedef struct {int top[2];int bot[2];SElemType *V;int m; } DblStack;// 初始化双栈 void I…...

Solidity合约编写(一)

Solidity IDE地址&#xff1a;Remix - Ethereum IDE 点击进入后在contract文件夹下创建合约 合约代码如下&#xff1a; // SPDX-License-Identifier: MIT pragma solidity ^0.8.26;contract SimpleStorage{bool hasFavorNumtrue;uint256 favorNum5;string favorNums"fiv…...

基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真&#xff0c;仿真输出燃料电池中氢氧元素含量变化以及生成的H2O变化情况。 2.系统仿真结果 3.核心程序与模型 版本…...

【C/C++】nlohmann::json从文件读取json,并进行解析打印,实例DEMO

使用 json::parse 函数将JSON格式的字符串解析为 nlohmann::json 对象。这个函数支持多种输入源&#xff0c;包括字符串、文件流等。 #include <iostream> #include <nlohmann/json.hpp> #include <fstream>using json nlohmann::json;int main() {// 解析…...

鸿蒙Flutter实战:15-Flutter引擎Impeller鸿蒙化、性能优化与未来

Flutter 技术原理 Flutter 是一个主流的跨平台应用开发框架&#xff0c;基于 Dart 语言开发 UI 界面&#xff0c;它将描述界面的 Dart 代码直接编译成机器码&#xff0c;并使用渲染引擎调用 GPU/CPU 渲染。 渲染引擎的优势 使用自己的渲染引擎&#xff0c;这也是 Flutter 与其…...

华为交换机---自动备份配置到指定ftp/sftp服务器

华为交换机—自动备份配置到指定ftp服务器 需求 交换机配置修改后及时备份相关配置,每次配置变化后需要在1分钟后自动进行保存,并且将配置上传至FTP服务器;每隔30分钟,交换机自动把配置上传到FTP服务器。 1、定时保存新配置的时间间隔为*分钟(1天=1440),默认为30分钟(…...

dns网址和ip是一一对应的吗?

DNS网址和IP地址是一一对应的吗&#xff1f;我们在上网时&#xff0c;为什么总是使用网址而不是一串数字&#xff1f;这些问题其实涉及到互联网的基本运作原理。DNS&#xff08;域名系统&#xff09;是我们日常上网过程中一个不可或缺的部分&#xff0c;它帮助我们将人类易于记…...

Couchbase 和数据湖技术的区别、联系和相关性分析

Couchbase 和数据湖技术&#xff08;如 Delta Lake、Apache Hudi、Apache Iceberg&#xff09;分别是两类不同的数据存储与管理系统&#xff0c;但它们也可以在特定场景中结合使用&#xff0c;以下是它们的区别、联系和相关性分析&#xff1a; 区别&#xff1a; 1. 核心用途&a…...

微信小程序提示 miniprogram-recycle-view 引入失败

npm i --save miniprogram-recycle-view 安装需要使用的页面的json文件中配置 {"usingComponents": {"recycle-view": "miniprogram-recycle-view/recycle-view","recycle-item": "miniprogram-recycle-view/recycle-item"…...

RAG_Techniques合集

Github 專案RAG_Techniques 列出了所有想得到的RAG最佳實踐和技巧&#xff01;以下是完整的目錄&#xff0c;內容豐富到不行&#xff01;&#x1f4a1; Simple RAG &#x1f331;Context Enrichment Techniques &#x1f4dd;Multi-faceted Filtering &#x1f50d;Fusion Ret…...

泊松融合 实例2025

目录 例子1: 实现代码: 原作者代码: 本博客直接给出来最好的效果和源代码 参数说明: 效果不好,不推荐的参数:MONOCHROME_TRANSFER,NORMAL_CLONE 例子1: 目标图: 原图: 效果图: 实现代码: 坐标是要目标图上中心点坐标: import cv2if __na...

反直觉导致卡关-迫击炮谜题

这个谜题&#xff0c;在两周目中先后卡了我至少三个小时&#xff0c;先后缓慢装填并发射迫击炮弹尝试了数百次。 一周目卡了很久&#xff0c;稀里糊涂的过了&#xff0c;想不到二周目还会卡那么久。 研究了很多播主的攻略&#xff0c;但还是一头雾水&#xff0c; 直到分析其…...

Vue2

前几篇和大家分享了Vue2基础篇&#xff0c;现在和大家分享一下Vue2的进阶篇 普通组件的注册: 局部组件&#xff1a;只能在注册的组件内使用 1.创建vue文件 三部分组成 2在使用的组件内部导入并且注册 全局组件&#xff1a;所有组件内部都可以用 组件的三大组成部分 结构&…...

PDF文件提示-文档无法打印-的解决办法

背景信息 下载了几个签名的PDF文件&#xff0c;想要打印纸质版&#xff0c;结果打印时 Adobe Acrobat Reader 提示【文档无法打印】: 解决办法 网上的方案是使用老版本的PDF阅读器&#xff0c; 因为无法打印只是一个标识而已。 PDF文件不能打印的五种解决方案-zhihu 这些方…...

C语言进阶(3)--字符函数和字符串函数

本章重点 重点介绍处理字符和字符串的库函数的使用和注意事项 目录 0.前言 1.函数介绍 1.1 strlen - 计算字符串长度 1.2 strcpy - 复制字符串 1.3 strcat - 追加字符串 1.4 strcmp - 字符串比较 1.5 strncpy - 受限制复制 1.6 strncat - 受限制追加 1.7 strncmp - 受限制比…...

英文词汇解析:“Arguably“ 的用法与含义

中文版 英文词汇解析&#xff1a;“Arguably” 的用法与含义 在英语中&#xff0c;“arguably” 是一个常用的副词&#xff0c;用来表达某种观点可能是正确的&#xff0c;尽管它可能存在争议或需要进一步讨论。它通常用于陈述观点或看法时&#xff0c;给出一种有依据但又留有…...

Win 11 拷贝文件失败,错误0x800704C8: 请求的操作无法在使用用户映射区域打开的文件上执行。

手机拷贝照片到电脑&#xff0c;再把电脑的照片拷贝到移动硬盘的过程报错。 一个意外错误使你无法移动该文件。如果你继续收到此错误&#xff0c;可以使用错误代码来搜索有关此问题的帮助。 错误 0x800704C8: 请求的操作无法在使用用户映射区域打开的文件上执行。 解释&#xf…...

SpringBoot原理分析-1

SpringBoot原理分析 作为一个javaer&#xff0c;和boot打交道是很常见的吧。熟悉boot的人都会知道&#xff0c;启动一个springboot应用&#xff0c;就是用鼠标点一下启动main方法&#xff0c;然后等着就行了。我们来看看这个main里面。 SpringBootApplication public class E…...

我用Ai学Android Jetpack Compose之Button

答案来自 通义千问&#xff0c;代码同样需要到Android Studio里实践&#xff0c;才能学会。 我要学Button&#xff0c;麻烦介绍一下 当然可以&#xff01;Button 是 Jetpack Compose 中用于创建可点击按钮的 Composable 函数。它提供了丰富的配置选项来定制按钮的外观和行为。…...

《量子比特:解锁人工智能并行计算加速的密钥》

在科技飞速发展的今天&#xff0c;量子计算与人工智能的融合正成为一股强大的力量&#xff0c;为诸多领域带来变革性的突破。量子比特作为量子计算的核心要素&#xff0c;其独特的叠加和纠缠特性为人工智能算法实现并行计算加速提供了前所未有的机遇。 量子比特的叠加特性&…...

【SpringBoot】当 @PathVariable 遇到 /,如何处理

1. 问题复现 在解析一个 URL 时&#xff0c;我们经常会使用 PathVariable 这个注解。例如我们会经常见到如下风格的代码&#xff1a; RestController Slf4j public class HelloWorldController {RequestMapping(path "/hi1/{name}", method RequestMethod.GET)publ…...

用QT实现 端口扫描工具1

安装在线QT&#xff0c;尽量是完整地自己进行安装&#xff0c;不然会少包 参考【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境-CSDN博客 临时存储空间不够。 Windows系统通常会使用C盘来存储临时文件。 修改临时文件存储位置 打开系统属性&#xff1a; 右键点击“此电…...

基于单片机的肺功能MVV简单测算

肺功能MVV一般是指肺部每分钟的最大通气量。 MVV本身是最大值的英文缩写&#xff0c;在临床上&#xff0c;肺功能MVV表示肺部每分钟最大通气量&#xff0c;用以衡量气道的通畅度&#xff0c;以及肺部和胸廓的弹性、呼吸肌的力量。 肺部每分钟的最大通气量的参考值男性与女性之…...

入手STM32单片机学习指南

目录 引言 一、基础概念 1.1 STM32单片机简介 1.2 ARM Cortex-M系列处理器 1.3 微控制器的基本组成 二、开发环境搭建 2.1 选择开发板 2.2 安装开发软件 2.3 配置开发环境 三、编程入门 3.1 GPIO编程 3.2 UART编程 3.3 ADC编程 引言 STM32单片机是基于ARM Cortex…...

无法定位软件包cuda

无法定位软件包cuda 如果你在使用 sudo apt install cuda 命令安装 CUDA 时遇到“无法定位软件包cuda”的问题&#xff0c;这可能是由于你的系统没有正确配置 CUDA 的安装源。以下是一些可能的解决方案&#xff1a; 更新 Ubuntu 软件源并升级到最新版本的软件包。你可以选择使…...

GWAS数据和软件下载

这部分主要是数据获取,以及软件配置方法。 一、配套数据和代码 数据和代码目前在不断的更新,最新的教程可以私信,我通过后手动发送最新版的pdf和数据代码。发送的压缩包,有电子版的pdf和数据下载链接,里面是最新的百度网盘的地址,下载到本地即可。然后根据pdf教程,结合配套的…...

SpringBoot3-深入理解自动配置类的原理(尚硅谷SpringBoot3-雷神)

文章目录 目录了解自动配置 一、导入对应场景的Mean依赖&#xff1a;1、引入依赖**找到自动配置类的所有配置都存放在哪里** 二、编写主程序&#xff1a;SpringBootApplication观察源码时所需要知道的几个核心注解&#xff1a;1、观察SpringBootApplication源码都做了什么 三、…...

MOE怎样划分不同专家

MOE怎样划分不同专家 目录 MOE怎样划分不同专家MOE划分不同专家的方法LLM模型拆分的方法**子模块拆分法**:**多头拆分法**:**层间拆分法****基于功能的拆分法**Python代码实现MOE划分不同专家以及LLM模型拆分的方法及举例如下: MOE划分不同专家的方法 ffn前馈神经网络 独立…...

NLP CH3复习

CH3 3.1 几种损失函数 3.2 激活函数性质 3.3 哪几种激活函数会发生梯度消失 3.4 为什么会梯度消失 3.5 如何解决梯度消失和过拟合 3.6 梯度下降的区别 3.6.1 梯度下降&#xff08;GD&#xff09; 全批量&#xff1a;在每次迭代中使用全部数据来计算损失函数的梯度。计算成本…...

Pyecharts SVG 标记使用笔记

Pyecharts SVG 标记使用笔记 在数据可视化中&#xff0c;图表的标记点常常用于突出显示重要数据点。Pyecharts 提供了丰富的标记点配置选项&#xff0c;其中使用 SVG 路径来自定义标记点的样式是一个非常强大的功能。本文将详细介绍如何在 Pyecharts 中使用 SVG 路径来定制标记…...

C++ 文件操作

文件操作 // 文件操作 // 程序运行时产生的数据都属于临时数据&#xff0c;程序结束后临时数据会被操作系统释放 // 通过文件操作可以将数据持久化 // c 中文件操作需要包含头文件 <fstream>// 文件类型分为两种&#xff1a; // 文本文件&#xff1a; 文件以文本的ASCII…...

享元模式详解

享元模式详解 一、定义 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;旨在通过共享对象来尽量减少内存的使用。它通过将重复使用的对象分离成共享和非共享部分&#xff0c;达到复用的目的&#xff0c;从而有效节省内存。具体来说&#x…...

数据库中的并发控制

并发操作带来的数据不一致性 1、并发控制:为了保证事务的隔离性和一致性&#xff0c;数据库管理系统需要对并发操作进行正确调度 并发控制的主要技术有:封锁、时间戳、乐观控制法、多版本并发控制等 并发操作带来的数据不一致性: ① 丟失修改:两个事务 T1 和 T2 读入同一数据…...

【软考网工笔记】计算机基础理论与安全——计算机硬件知识

计算机分级存储体系 计算机分级存储体系目前最常用的是三级存储体系。 CPU——CaChe&#xff08;高速缓存&#xff09;——主存——辅存 其中 Cache 是用于解决存取速度不够快&#xff0c;辅存是用于解决存储容量不够大&#xff0c;二者结合可在容量和速度实现提升的情况下尽可…...

SpringBoot 多种生产打包方式详解

Springboot 多种生产打包方式简介 生产上发布 Spring Boot 项目时&#xff0c;流程颇为繁琐且低效。但凡代码有一丁点改动&#xff0c;就得把整个项目重新打包部署&#xff0c;耗时费力不说&#xff0c;生成的 JAR 包还特别臃肿&#xff0c;体积庞大。每次更新项目&#xff0c…...

WebSocket 安全实践:从认证到加密

在前三篇文章中,我们深入探讨了 WebSocket 的基础原理、服务端开发和客户端实现。今天,让我们把重点放在安全性上,看看如何构建一个安全可靠的 WebSocket 应用。我曾在一个金融项目中,通过实施多层安全机制,成功防御了多次恶意攻击尝试。 安全挑战 WebSocket 应用面临的主要安…...

实现单例模式的五种方式

如何实现一个单例 1、构造器需要私有化 2、提供一个私有的静态变量 3、暴露一个公共的获取单例对象的接口 需要考虑的两个问题 1、是否支持懒加载 2、是否线程安全 1、饿汉式 public class EagerSingleton {private static final EagerSingleton INSTANCE new EagerSi…...

【Go学习】-01-6-数据库泛型新特性

【Go学习】-01-6-数据库泛型新特性 1 数据库操作1.1 操作mysql1.1.1 Insert1.1.2 Select1.1.3 Update1.1.4 Delete1.1.5 sql事务 1.2 go操作Redis 2 泛型2.1 非泛型函数2.2 泛型函数2.3 泛型类型2.3.1 泛型结构体2.3.2 泛型接口 2.4 泛型约束2.5 泛型切片和映射2.5.1 泛型切片2…...

算法学习(22)—— BFS解决最短路问题

关于最短路问题 最短路问题是“图论”里非常重要的一类问题&#xff0c;涉及的内容非常多&#xff0c;在这个专题里&#xff0c;我们主要讲“边权为1的最短路问题”&#xff0c;因为这个比较基础比较简单而关于啥是“边权为1的最短路问题”&#xff0c;我们通过下面的例子来讲…...

【双层模型】考虑供需双侧的综合能源双层优化模型

目录 主要内容 内容研究 1.模型简介 2 程序释义 部分代码 运行结果 下载链接 主要内容 该程序实现一个综合能源系统的优化调度双层模型&#xff0c;上下层分别采用差分进化算法和规划算法进行求解。模型考虑了多种能源设备&#xff0c;包括燃气轮机、燃气锅炉、风电…...

【读书笔记/源码】How Tomcat Works 笔记- c11~c13

chapter11: standardwrapperchapter12: 无程序 第十章 安全性 servlet容器是通过一个名为验证器的阀来支持安全限制的。当servlet容器启动时&#xff0c;验证器阀会被添加到Context容器的管道中。 验证器阀会调用Context容器的领域对象的authenticate()方法&#xff0c;传入…...

Electron快速入门——跨平台桌面端应用开发框架

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…...

Vision Transformer模型详解(附pytorch实现)

写在前面 最近&#xff0c;我在学习Transformer模型在图像领域的应用。图像处理任务一直以来都是深度学习领域的重要研究方向&#xff0c;而传统的卷积神经网络已在许多任务中取得了显著的成绩。然而&#xff0c;近年来&#xff0c;Transformer模型由于其在自然语言处理中的成…...

中国区域创新创业指数IRIEC数据(省级、地市级)1990-2020年-社科数据

中国区域创新创业指数IRIEC数据&#xff08;省级、地市级&#xff09;1990-2020年-社科数据https://download.csdn.net/download/paofuluolijiang/90028728 https://download.csdn.net/download/paofuluolijiang/90028728 中国区域创新创业指数&#xff08;IRIEC&#xff09;…...

Elasticsearch:减少 Elastic 容器镜像中的 CVE(常见的漏洞和暴露)

作者&#xff1a;来自 Elastic Maxime Greau 在这篇博文中&#xff0c;我们将讨论如何通过在 Elastic 产品中切换到最小基础镜像并优化可扩展漏洞管理程序的工作流程来显著减少 Elastic 容器镜像中的常见漏洞和暴露 (Common Vulnerabilities and Exposures - CVEs)。 基于 Chai…...

webpack02

webpack中常用loader postcss-loader 在css-loader之前&#xff0c;对css进行一些操作&#xff0c;&#xff0c;&#xff0c;比如统一加前缀&#xff0c;&#xff0c;或者是重置样式&#xff0c;&#xff0c;&#xff0c; 这个postcss-loader会自己去找 postcss工具&#xff0…...

腾讯云更改用户为root

最近买了台99元一年的2核的云服务器&#xff0c;方便学习一些java开发中间件&#xff0c;以及部署一些项目。 1.设置root用户密码 sudo passwd root 2.修改配置文件 ll /etc | grep ssh cd /etc/ssh/ ls vim sshd_config 输入/PasswordAuthentication 寻找 输入:set nu 再按下…...

Excel导入导出-若依版本

最终效果 1、导出 1、在实体类上加注解 Excel(name “客户类型名称”) ToString AllArgsConstructor NoArgsConstructor public class UserType extends BaseEntity2 implements Serializable {Excel(name "客户类型ID", cellType Excel.ColumnType.NUMERIC…...

【Qt】快速添加对应类所需的头文件包含

快速添加对应类所需的头文件包含 一&#xff0c;简介二&#xff0c;操作步骤 一&#xff0c;简介 本文介绍一下&#xff0c;如何快速添加对应类所需要包含的头文件&#xff0c;可以提高开发效率&#xff0c;供参考。 二&#xff0c;操作步骤 以QTime类为例&#xff1a; 选中…...

基于服务器部署的综合视频安防系统的智慧快消开源了。

智慧快消视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。国产化人工智能“…...