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

笔试面试01 c/c++

基础知识

  1. 什么是数据结构?请简要描述常见的数据结构类型。
    数据结构是组织和存储数据的方式,以便于高效访问和修改。常见的数据结构包括:
    数组:固定大小的线性数据结构,支持随机访问。
    链表:由节点组成的线性数据结构,每个节点包含数据和指向下一个节点的指针。
    :后进先出(LIFO)的数据结构,支持 push 和 pop 操作。
    队列:先进先出(FIFO)的数据结构,支持入队和出队操作。
    哈希表:通过哈希函数将键映射到值的集合,支持快速查找。
    :层次结构的数据结构,常见的有二叉树、二叉搜索树等。
    :由节点和边组成的非线性数据结构,用于表示关系。

  2. 解释时间复杂度和空间复杂度的概念。如何评估算法的效率?
    时间复杂度:表示算法执行所需时间的增长率,通常用大 O 表示法表示(如 O(n)、O(log n))。
    空间复杂度:表示算法所需空间的增长率,也用大 O 表示法表示。
    评估算法的效率通常通过分析其时间复杂度和空间复杂度,比较不同算法在处理相同问题时的性能。

  3. 什么是递归?请给出一个递归的例子。
    递归是指函数直接或间接调用自身的编程技术。递归通常由基本情况和递归情况组成。

例子:计算阶乘的递归函数

int factorial(int n) {if (n == 0) {return 1; // 基本情况}return n * factorial(n - 1); // 递归情况
}
  1. 描述栈和队列的区别,并给出它们的应用场景。
    栈:
    后进先出(LIFO)结构。
    应用场景:函数调用管理、表达式求值、撤销操作。
    队列:
    先进先出(FIFO)结构。
    应用场景:任务调度、消息队列、打印任务管理。

编程题

编写一个函数,反转一个链表。

struct ListNode {int val;struct ListNode *next;
};struct ListNode* reverseList(struct ListNode* head) {struct ListNode *prev = NULL, *current = head, *next = NULL;while (current != NULL) {next = current->next; // 保存下一个节点current->next = prev; // 反转指针prev = current;       // 移动 prev 和 currentcurrent = next;}return prev; // 新的头节点
}

编写一个 C 程序,判断一个字符串是否是回文。

int isPalindrome(char *s) {int left = 0, right = strlen(s) - 1;while (left < right) {if (s[left] != s[right]) {return 0; // 不是回文}left++;right--;}return 1; // 是回文
}

给定一个数组,编写一个函数,找出数组中的最大值和最小值。

void findMaxMin(int arr[], int size, int *max, int *min) {*max = arr[0];*min = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > *max) {*max = arr[i];}if (arr[i] < *min) {*min = arr[i];}}
}

算法题

实现快速排序算法。

void quickSort(int arr[], int low, int high) {if (low < high) {int pivot = partition(arr, low, high);quickSort(arr, low, pivot - 1);quickSort(arr, pivot + 1, high);}
}int partition(int arr[], int low, int high) {int pivot = arr[high];int i = (low - 1);for (int j = low; j < high; j++) {if (arr[j] < pivot) {i++;swap(&arr[i], &arr[j]);}}swap(&arr[i + 1], &arr[high]);return (i + 1);
}void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}

实现二分搜索算法。

int binarySearch(int arr[], int size, int target) {int left = 0, right = size - 1;while (left <= right) {int mid = left + (right - left) / 2;if (arr[mid] == target) {return mid; // 找到目标}if (arr[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return -1; // 未找到目标
}

编写一个函数,找出斐波那契数列的第 n 项。

unsigned long long fibonacci(int n) {if (n <= 1) {return n;}return fibonacci(n - 1) + fibonacci(n - 2);
}

进阶题

给定一个无序数组,编写一个函数找出其中的第 k 大元素。

#include <stdio.h>
#include <stdlib.h>// 交换两个整数
void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}// 分区函数
int partition(int arr[], int left, int right, int pivotIndex) {int pivotValue = arr[pivotIndex];swap(&arr[pivotIndex], &arr[right]); // 将 pivot 移到末尾int storeIndex = left;for (int i = left; i < right; i++) {if (arr[i] > pivotValue) { // 找第 k 大元素,使用大于swap(&arr[storeIndex], &arr[i]);storeIndex++;}}swap(&arr[storeIndex], &arr[right]); // 将 pivot 移回return storeIndex;
}// 快速选择函数
int quickSelect(int arr[], int left, int right, int k) {if (left == right) {return arr[left]; // 只有一个元素}int pivotIndex = left + rand() % (right - left + 1); // 随机选择 pivotpivotIndex = partition(arr, left, right, pivotIndex);// 计算 pivot 的位置if (k == pivotIndex) {return arr[k]; // 找到第 k 大元素} else if (k < pivotIndex) {return quickSelect(arr, left, pivotIndex - 1, k); // 在左侧} else {return quickSelect(arr, pivotIndex + 1, right, k); // 在右侧}
}// 主函数
int findKthLargest(int* nums, int numsSize, int k) {// k 是第 k 大元素,转换为索引return quickSelect(nums, 0, numsSize - 1, k - 1);
}// 测试
int main() {int arr[] = {3, 2, 1, 5, 6, 4};int k = 2; // 找出第 2 大元素int size = sizeof(arr) / sizeof(arr[0]);int result = findKthLargest(arr, size, k);printf("The %dth largest element is %d\n", k, result);return 0;
}

实现一个简单的哈希表。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define TABLE_SIZE 10 // 哈希表大小// 哈希表节点
typedef struct Node {int key;int value;struct Node* next; // 链表中的下一个节点
} Node;// 哈希表结构
typedef struct HashTable {Node** table; // 指向节点指针的数组
} HashTable;// 哈希函数
int hash(int key) {return key % TABLE_SIZE;
}// 创建哈希表
HashTable* createHashTable() {HashTable* ht = malloc(sizeof(HashTable));ht->table = malloc(sizeof(Node*) * TABLE_SIZE);for (int i = 0; i < TABLE_SIZE; i++) {ht->table[i] = NULL; // 初始化为 NULL}return ht;
}// 插入键值对
void insert(HashTable* ht, int key, int value) {int index = hash(key);Node* newNode = malloc(sizeof(Node));newNode->key = key;newNode->value = value;newNode->next = ht->table[index]; // 插入到链表头部ht->table[index] = newNode;
}// 查找值
int search(HashTable* ht, int key) {int index = hash(key);Node* current = ht->table[index];while (current != NULL) {if (current->key == key) {return current->value; // 找到值}current = current->next;}return -1; // 未找到
}// 删除键值对
void delete(HashTable* ht, int key) {int index = hash(key);Node* current = ht->table[index];Node* prev = NULL;while (current != NULL) {if (current->key == key) {if (prev == NULL) {ht->table[index] = current->next; // 删除头节点} else {prev->next = current->next; // 删除中间或尾节点}free(current);return;}prev = current;current = current->next;}
}// 释放哈希表
void freeHashTable(HashTable* ht) {for (int i = 0; i < TABLE_SIZE; i++) {Node* current = ht->table[i];while (current != NULL) {Node* temp = current;current = current->next;free(temp);}}free(ht->table);free(ht);
}// 测试
int main() {HashTable* ht = createHashTable();insert(ht, 1, 100);insert(ht, 2, 200);insert(ht, 12, 300); // 12 会与 2 哈希到同一位置printf("Value for key 1: %d\n", search(ht, 1)); // 输出 100printf("Value for key 2: %d\n", search(ht, 2)); // 输出 200printf("Value for key 12: %d\n", search(ht, 12)); // 输出 300delete(ht, 2);printf("Value for key 2 after deletion: %d\n", search(ht, 2)); // 输出 -1freeHashTable(ht);return 0;
}

设计与应用

设计一个简单的任务调度系统,描述其数据结构和算法。

  1. 数据结构:使用队列来管理任务,使用结构体存储任务信息(如任务 ID、优先级、状态等)。
    任务结构体(Task):
    用于表示一个任务的基本信息。
typedef struct Task {int id;                // 任务 IDchar name[50];        // 任务名称int priority;         // 任务优先级int burst_time;       // 任务所需的 CPU 时间struct Task* next;    // 指向下一个任务的指针
} Task;

任务队列(TaskQueue):
用于存储待调度的任务。

typedef struct TaskQueue {Task* front;          // 队列前端Task* rear;           // 队列后端
} TaskQueue;
  1. 算法: 实现任务的添加、删除和调度算法(如优先级调度)。
    任务添加:
    将新任务添加到任务队列中,按照优先级排序(高优先级在前)。
void enqueue(TaskQueue* queue, Task* newTask) {if (queue->front == NULL) {queue->front = newTask;queue->rear = newTask;newTask->next = NULL;} else {Task* current = queue->front;Task* previous = NULL;// 找到插入位置while (current != NULL && current->priority >= newTask->priority) {previous = current;current = current->next;}if (previous == NULL) {// 插入到队列前端newTask->next = queue->front;queue->front = newTask;} else {// 插入到中间或后端newTask->next = current;previous->next = newTask;}if (current == NULL) {// 更新队列后端queue->rear = newTask;}}
}

任务调度:
从队列中取出优先级最高的任务并执行。

Task* dequeue(TaskQueue* queue) {if (queue->front == NULL) {return NULL; // 队列为空}Task* taskToExecute = queue->front;queue->front = queue->front->next;if (queue->front == NULL) {queue->rear = NULL; // 队列变为空}return taskToExecute;
}

任务执行:
模拟任务的执行过程,输出任务信息。

void executeTask(Task* task) {printf("Executing Task ID: %d, Name: %s, Priority: %d, Burst Time: %d\n",task->id, task->name, task->priority, task->burst_time);// 这里可以添加实际的执行逻辑
}
  1. 主函数示例
int main() {TaskQueue queue = {NULL, NULL}; // 初始化任务队列// 创建一些任务Task task1 = {1, "Task 1", 2, 5, NULL};Task task2 = {2, "Task 2", 1, 3, NULL};Task task3 = {3, "Task 3", 3, 2, NULL};// 添加任务到队列enqueue(&queue, &task1);enqueue(&queue, &task2);enqueue(&queue, &task3);// 执行任务Task* task;while ((task = dequeue(&queue)) != NULL) {executeTask(task);}return 0;
}

给定一个图,编写一个函数实现深度优先搜索(DFS)和广度优先搜索(BFS)。

#include <stdio.h>
#include <stdlib.h>#define MAX 100 // 最大节点数// 图的邻接表节点
typedef struct Node {int vertex;struct Node* next;
} Node;// 图的结构
typedef struct Graph {Node* adjList[MAX];int visited[MAX];int numVertices;
} Graph;// 创建图
Graph* createGraph(int vertices) {Graph* graph = malloc(sizeof(Graph));graph->numVertices = vertices;for (int i = 0; i < vertices; i++) {graph->adjList[i] = NULL;graph->visited[i] = 0; // 初始化访问状态}return graph;
}// 添加边
void addEdge(Graph* graph, int src, int dest) {Node* newNode = malloc(sizeof(Node));newNode->vertex = dest;newNode->next = graph->adjList[src];graph->adjList[src] = newNode;// 如果是无向图,添加反向边newNode = malloc(sizeof(Node));newNode->vertex = src;newNode->next = graph->adjList[dest];graph->adjList[dest] = newNode;
}// 深度优先搜索(DFS)
void DFS(Graph* graph, int vertex) {graph->visited[vertex] = 1; // 标记为已访问printf("%d ", vertex); // 处理节点Node* temp = graph->adjList[vertex];while (temp) {int connectedVertex = temp->vertex;if (!graph->visited[connectedVertex]) {DFS(graph, connectedVertex);}temp = temp->next;}
}// 广度优先搜索(BFS)
void BFS(Graph* graph, int startVertex) {int queue[MAX], front = 0, rear = 0;graph->visited[startVertex] = 1; // 标记为已访问queue[rear++] = startVertex; // 入队while (front < rear) {int currentVertex = queue[front++]; // 出队printf("%d ", currentVertex); // 处理节点Node* temp = graph->adjList[currentVertex];while (temp) {int connectedVertex = temp->vertex;if (!graph->visited[connectedVertex]) {graph->visited[connectedVertex] = 1; // 标记为已访问queue[rear++] = connectedVertex; // 入队}temp = temp->next;}}
}// 主函数
int main() {Graph* graph = createGraph(5); // 创建一个包含 5 个节点的图addEdge(graph, 0, 1);addEdge(graph, 0, 4);addEdge(graph, 1, 2);addEdge(graph, 1, 3);addEdge(graph, 1, 4);addEdge(graph, 2, 3);addEdge(graph, 3, 4);printf("DFS traversal starting from vertex 0:\n");DFS(graph, 0);printf("\n");// 重置访问状态for (int i = 0; i < graph->numVertices; i++) {graph->visited[i] = 0;}printf("BFS traversal starting from vertex 0:\n");BFS(graph, 0);printf("\n");return 0;
}

相关文章:

笔试面试01 c/c++

基础知识 什么是数据结构&#xff1f;请简要描述常见的数据结构类型。 数据结构是组织和存储数据的方式&#xff0c;以便于高效访问和修改。常见的数据结构包括&#xff1a; 数组&#xff1a;固定大小的线性数据结构&#xff0c;支持随机访问。 链表&#xff1a;由节点组成的线…...

2025清华大学:DeepSeek教程全集(PDF+视频精讲,共10份).zip

一、资料列表 第一课&#xff1a;Deepseek基础入门 第二课&#xff1a;DeepSeek赋能职场 第三课&#xff1a;普通人如何抓住DeepSeek红利 第四课&#xff1a;让科研像聊天一样简单 第五课&#xff1a;DeepSeek与AI幻觉 第六课&#xff1a;基于DeepSeek的AI音乐词曲的创造法 第…...

消息队列(Kafka及RocketMQ等对比联系)

目录 消息队列 一、为什么使用消息队列&#xff1f;消息队列有什么优点/缺点&#xff1f;介绍下Kafka、ActiveMQ、RabbitMQ、RocketMQ有什么优点缺点&#xff0c;如何取舍&#xff1f; 1.公司业务场景是什么&#xff0c;这个业务场景有什么挑战&#xff0c;如果不用MQ有什么麻…...

Go 语言 fmt 模块的完整方法详解及示例

以下是 Go 语言 fmt 模块的完整方法详解及示例&#xff0c;涵盖所有核心功能&#xff1a; 一、输出函数 将数据写入标准输出、文件或字符串。 1. Print / Println / Printf 功能 Print: 写入标准输出&#xff0c;不换行。Println: 写入标准输出并换行。Printf: 格式化写入标…...

Centos 7 安装VNC服务

Centos 7 安装VNC服务 1. 安装 TigerVNC2. 设置 VNC 密码3. 创建并配置 x0vncserver 服务4. 启用并启动服务5. 检查服务状态6. 配置防火墙7. 连接 VNC问题1:出现无法安装可能是镜像源导致的。手动配置镜像源清除 YUM 缓存并重新加载 1. 安装 TigerVNC 确保已安装 TigerVNC 服务…...

3.25-3 request断言

一.request断言 if断言 案例&#xff1a; import requests srequests.Session() url1"http://49.233.201.254:8080/cms/manage/loginJump.do" data1{userAccount:admin,loginPwd:123456} h1{"Content-Type":"application/x-www-form-urlencoded&…...

cmakelist中添加opencv

版本选择 qt的msvc&#xff0c;版本2019 opencv版本 4.5.3 配置了环境变量 x64下的v14中的bin 配置头文件 {"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}","d:\\QT\\6.5.3\\msvc20…...

【003安卓开发方案调研】之ReactNative技术开发安卓

基于2025年最新行业动态和搜索资料&#xff0c;以下是针对国内使用React Native&#xff08;RN&#xff09;开发安卓应用的深度分析&#xff1a; 一、技术成熟度评估 1. 核心架构升级 新架构全面普及&#xff1a;2024年起&#xff0c;React Native的 新架构&#xff08;Fabri…...

面试中如何回答性能优化的问题

性能问题和Bug不同,后者的分析和解决思路更清晰,很多时候从应用日志(文中的应用指分布式服务下的单个节点)即可直接找到问题根源,而性能问题,其排查思路更为复杂一些。 对应用进行性能优化,是一个系统性的工程,对工程师的技术广度和技术深度都有所要求。一个简单的应用…...

使用cursor开发java案例——springboot整合elasticsearch

安装elasticsearch 打开cursor&#xff0c;输入如下提示词 使用springboot整合elasticsearch。其中elasticsearch服务器ip&#xff1a;192.168.236.134 管理员用户名elastic 管理员密码 PdQy_xfR2yLhpok*MK_ 监听端口9200点Accept all 使用idea打开生成的项目 &#xff0…...

CCF-CSP认证题目练习及其题解(4

【问题描述】 涛涛最近要负责图书馆的管理工作&#xff0c;需要记录下每天读者的到访情况。每位读者有一个编号&#xff0c;每条记录用读者的编号来表示。给出读者的来访记录&#xff0c;请问每一条记录中的读者是第几次出现。 【输入形式】 输入的第一行包含一个整数n&#x…...

Chrome 134 版本开发者工具(DevTools)更新内容

Chrome 134 版本开发者工具&#xff08;DevTools&#xff09;更新内容 一、隐私与安全面板 旧的 Security 面板已演变为隐私与安全面板&#xff0c;并新增了一个专注于隐私的部分。在该部分中&#xff0c;可以&#xff1a; 在 DevTools 打开时&#xff0c;临时限制第三方 Co…...

12届蓝桥杯—货物摆放

货物摆放 题目描述 小蓝有一个超大的仓库&#xff0c;可以摆放很多货物。 现在&#xff0c;小蓝有 nn 箱货物要摆放在仓库&#xff0c;每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向&#xff0c;每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所…...

oracle查询归档日志使用量

1.统计最近30天的数据 SELECT TRUNC(first_time, DD) "日期", SUM(blocks * block_size) / 1024 / 1024 / 1024 "大小(GB)" FROM v$archived_log WHERE first_time > SYSDATE - 30 -- 统计最近30天的数据 GROUP BY TRUNC(first_time, DD) ORDER BY 1 D…...

Redis 发布订阅

Redis 发布订阅 概述 Redis 发布订阅(Pub/Sub)是一种消息传递模式,允许应用在多个客户端之间进行通信。在Redis中,发布订阅允许客户端订阅一个或多个频道,并在这些频道上发布消息。其他订阅了相同频道的客户端会接收到这些消息。 核心概念 频道(Channels) 频道是发…...

歌曲缓存相关功能

1. 核心组件 MusicCacheManager (音乐缓存管理器) 单例模式&#xff1a;确保全局只有一个实例&#xff0c;方便管理。 private static var instance: MusicCacheManager?static func shared() -> MusicCacheManager {if instance nil {instance MusicCacheManager()}ret…...

MySQL学习之用户管理

MySQL学习之用户管理 一、用户1、用户信息2、创建用户3、修改用户密码4、删除用户 二、数据库权限1、MySQL中的权限2、给用户授权3、回收权限 一、用户 1、用户信息 MySQL用户管理&#xff1a; ①、与Linux操作系统类似&#xff0c;MySQL中也有超级用户和普通用户之分。 ②、如…...

【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】A题解题全流程(持续更新)

【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】A题解题全流程-思路&#xff08;持续更新&#xff09; 写在前面&#xff1a; 1、A题、C题将会持续更新&#xff0c;陆续更新发布文章 2、赛题交流咨询Q群&#xff1a;1037590285 3、全家桶依旧包含&#xff1a; 代码、…...

算法训练营第二十三天 | 贪心算法(一)

文章目录 一、贪心算法理论基础二、Leetcode 455.分发饼干二、Leetcode 376. 摆动序列三、Leetcode 53. 最大子序和 一、贪心算法理论基础 贪心算法是一种在每一步选择中都采取当前状态下的最优决策&#xff0c;从而希望最终达到全局最优解的算法设计技术。 基本思想 贪心算…...

SpringCloud消息总线:Bus事件广播与配置动态刷新

文章目录 引言一、Spring Cloud Bus基本架构二、配置动态刷新实现2.1 基础配置2.2 刷新流程2.3 定向刷新 三、自定义事件广播3.1 定义自定义事件3.2 注册和监听事件3.3 发布事件 四、高级配置与优化4.1 消息持久化4.2 事件追踪4.3 安全控制 总结 引言 在微服务架构中&#xff…...

家庭网络结构之局域网通信

整个互联网非常复杂&#xff0c;涉及到很多知识&#xff0c;学习互联网不能一蹴而就&#xff0c;所以这里从最简单的家庭网络开始学习 家庭网络一般是通过Modem( 作用&#xff1a;进行数字信号和模拟信号的转换 ) 拨号上网&#xff0c;然后通过家庭路由器&#xff0c;将网络连接…...

突破反爬困境:SDK架构设计,为什么选择独立服务模式(四)

声明 本文所讨论的内容及技术均纯属学术交流与技术研究目的&#xff0c;旨在探讨和总结互联网数据流动、前后端技术架构及安全防御中的技术演进。文中提及的各类技术手段和策略均仅供技术人员在合法与合规的前提下进行研究、学习与防御测试之用。 作者不支持亦不鼓励任何未经授…...

java 设置操作系统编码、jvm平台编码和日志文件编码都为UTF-8的操作方式

以下是 Java中设置操作系统编码、JVM平台编码和日志文件编码为UTF-8 的详细步骤和代码示例&#xff1a; 一、设置操作系统编码为UTF-8 1. Windows系统 修改系统区域设置&#xff1a; 进入 控制面板 → 时钟和区域 → 区域。在“管理”选项卡中&#xff0c;点击“更改系统区域…...

SpringBoot:几种常用的接口日期格式化方法

全局时间格式化 通过在配置文件中设置可以实现全局时间格式化。在 Spring Boot 的配置文件 application.properties&#xff08;或 application.yml&#xff09;中添加以下两行配置&#xff1a; #?格式化全局时间字段 spring.jackson.date-formatyyyy-MM-dd?HH:mm:ss #?指…...

解题思路:LeetCode 2711. 对角线上不同值的数量差

解题思路&#xff1a;LeetCode 2711. 对角线上不同值的数量差 在LeetCode的题目2711中&#xff0c;我们需要计算一个矩阵中每个单元格的左上角对角线和右下角对角线上不同值的数量差。这个问题可以通过暴力法解决&#xff0c;但效率较低。本文将介绍一种更高效的解决方案&…...

Jackson实现JSON数据的合并

JSON数据的操作&#xff0c;系列文章&#xff1a; 《Jackson的核心类与API方法&#xff1a;ObjectMapper、JsonNode、ObjectNode、ArrayNode》 《Jackson的使用与创建Jackson工具类》 《Jackson使用ObjectNode对象实现JSON对象数据&#xff08;一&#xff09;&#xff1a;增、删…...

Elasticsearch 倒排索引 和 正排索引

一、倒排索引 倒排索引是 Elasticsearch 实现高效全文搜索的核心技术。它通过将词项与文档 ID 关联&#xff0c;支持快速检索、短语查询、布尔查询和相关性评分。尽管倒排索引在存储和更新方面有一定的开销&#xff0c;但通过词典优化、倒排列表压缩、分片和缓存等技术&#x…...

Cocos Creator Shader入门实战(五):材质的了解、使用和动态构建

引擎&#xff1a;3.8.5 您好&#xff0c;我是鹤九日&#xff01; 回顾 前面的几篇文章&#xff0c;讲述的主要是Cocos引擎对Shader使用的一些固定规则&#xff0c;这里汇总下&#xff1a; 一、Shader实现基础是OpenGL ES可编程渲染管线&#xff0c;开发者只需关注顶点着色器和…...

【Python】pillow库学习笔记1-Image类

《Python语言程序设计基础 》第3版&#xff0c;嵩天 黄天羽 杨雅婷著&#xff0c;P293 1.pillow库概述 Pillow 库是Python图像处理重要的第三方库。 Pillow库是PIL (Python image library) 库的一个扩展&#xff0c;需要通过pip工具安装。安装PIL库需要注意&#xff0c;安装…...

解决 MySQL 的 sql_mode 中包含 only_full_group_by模式导致group by SQL报错

sql 报错&#xff1a; Cause: java.sql.SQLSyntaxErrorException: Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column ev_data_transmission.p.push_type which is not functionally dependent on columns in GROUP BY clause; this…...

【微服务架构】本地负载均衡的实现(基于随机算法)

前言 负载均衡 概念&#xff1a;一种将网络流量或业务请求均匀分配到多个服务器或服务实例上的技术&#xff0c;旨在提高系统的可用性、性能和可伸缩性。作用&#xff1a; 提高性能&#xff1a;通过将请求分散到多个实例上&#xff0c;避免单个实例因请求过多而过载&#xff…...

记一次线上SQL死锁事故

一、 引言 SQL死锁是一个常见且复杂的并发控制问题。当多个事务在数据库中互相等待对方释放锁时&#xff0c;就会形成死锁&#xff0c;从而导致事务无法继续执行&#xff0c;影响系统的性能和可用性。死锁不仅会导致数据库操作的阻塞&#xff0c;增加延迟&#xff0c;还可能对…...

电机控制常见面试问题(十八)

文章目录 一.电机控制高级拓扑结构1.LLC 二.谈谈电压器饱和后果三.电压器绕组连接方式的影响四.有源逆变的条件 一.电机控制高级拓扑结构 1.LLC LLC是什么&#xff1f;—— 一个会"变魔术"的电源盒子 想象你有一个魔法盒子&#xff0c;能把电池的电压变大或变小&…...

数据结构之双链表

目录 1 简介 2 双链表的基本概念 2.1 节点结构 2.2 头插法和尾插法 3 代码实现 4 代码解析&#xff08;部分&#xff09; 4.1 初始化双链表 4.2 添加节点 4.3 删除节点 4.4 获取节点 4.5 插入节点 4.6 反转链表 4.7 打印链表 4.8 核心操作分析 5 总结 1 简介 …...

dell 台式机 电脑 纽扣电池 如何取下?

dell 台式机 电脑 纽扣电池 如何取下&#xff1f; 戴尔-optiplex-3060-塔式机-服务手册...

JSON二次序列化问题分析

正常的JSON应该是: json Apply to VectorServic... { "id": "d471c19c-70eb-4f29-8604-b8284e8a9400", "text": "人为干预, 降低生产成本...", "metadata": { "chunkIndex": 2, …...

WebSocket 传输大量数据好不好?稳定不稳定

使用 WebSocket 传输大量数据 是可行的&#xff0c;但在实际应用中需要注意一些限制和优化策略。以下是关于 WebSocket 传输大量数据的详细分析&#xff1a; 1. WebSocket 传输大量数据的可行性 优点 实时性&#xff1a;WebSocket 是全双工通信协议&#xff0c;适合实时传输数…...

代码随想录刷题day52|(二叉树篇)106.从中序与后序遍历序列构造二叉树(▲

目录 一、二叉树理论知识 二、构造二叉树思路 2.1 构造二叉树流程&#xff08;给定中序后序 2.2 整体步骤 2.3 递归思路 2.4 给定前序和后序 三、相关算法题目 四、易错点 一、二叉树理论知识 详见&#xff1a;代码随想录刷题day34|&#xff08;二叉树篇&#xff09;二…...

无人设备遥控器之调度自动化技术篇

一、技术原理 信息采集与处理&#xff1a; 通过传感器、仪表等设备采集无人设备的各种数据&#xff0c;如位置、速度、状态等。 将采集到的数据传输到调度自动化系统中进行处理和分析&#xff0c;以获取设备的实时状态。 系统建模与优化&#xff1a; 调度自动化系统会根据…...

红宝书第十五讲:详解JavaScript迭代器与生成器:Symbol.iterator与yield

红宝书第十五讲&#xff1a;详解JavaScript迭代器与生成器&#xff1a;Symbol.iterator与yield 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 一、迭代器&#xff08;Iterator&#xff09;的“传送带”模式 迭代…...

【AI】NLP

不定期更新&#xff0c;建议关注收藏点赞。 目录 transformer大语言模型Google Gemma疫情网民情绪识别 整体框架 baseline构建 模型调参、模型优化、其他模型 数据trick、指标优化、magic feature 数据增强、伪标签、迁移学习 模型融合sklearn中TFIDF参数详解 频率阈值可以去掉…...

ENSP学习day10

NAT地址转换技术&#xff08;一&#xff09; NAT&#xff08;Network Address Translation&#xff09;地址转换技术是一种在计算机网络中常用的技术&#xff0c;在数据包从一个网络传输到另一个网络时&#xff0c;会对数据包中的源IP地址和目的IP地址进行修改的过程。这种技术…...

文件上传绕过的小点总结(4)

9.末尾点删除处理缺陷 给出源码&#xff1a; $file_name trim($_FILES[upload_file][name]); $file_name deldot($file_name);//删除文件名末尾的点 $file_ext strrchr($file_name, .); $file_ext strtolower($file_ext); //转换为小写 $file_ext str_ireplace(::$DATA,…...

实战-MySQL5.7升级8.0遇到的四个问题

近期几个项目的MySQL由5.7升级到8.0&#xff0c;升级过程中遇到四个问题&#xff0c;记录下来分享一下&#xff1a; 第一个问题详见之前的文章&#xff1a; MySQL 5.7升级8.0报异常&#xff1a;处理新增关键字 第二个问题详见之前的文章&#xff1a; MySQL 5.7升级8.0报异常…...

卷积神经网络的原理、实现及变体

卷积神经网络convolutional neural network&#xff0c;CNN 是为处理图像数据而生的网络&#xff0c;主要由卷积层&#xff08;填充和步幅&#xff09;、池化层&#xff08;汇聚层&#xff09;、全连接层组成。 卷积 虽然卷积层得名于卷积&#xff08;convolution&#xff09…...

java 线程创建Executors 和 ThreadPoolExecutor 和 CompletableFuture 三者 区别

Executors是一个线程池的工具类&#xff0c;而ThreadPoolExecutor是Executor接口的一个实现&#xff0c;是线程池的核心类。‌ Executors提供了多种快速创建线程池的方法&#xff0c;而ThreadPoolExecutor则提供了更高的自定义和控制能力‌。 Executors是一个工具类&#xff0…...

Redisson 实现分布式锁简单解析

目录 Redisson 实现分布式锁业务方法&#xff1a;加锁逻辑LockUtil 工具类锁余额方法&#xff1a;工具类代码枚举代码 RedisUtil 工具类tryLock 方法及重载【分布式锁具体实现】Supplier 函数式接口调用分析 Redisson 实现分布式锁 业务方法&#xff1a; 如图&#xff0c;简单…...

Python条件处理,新手入门到精通

Python条件处理&#xff0c;新手入门到精通 对话实录 **小白**&#xff1a;&#xff08;崩溃&#xff09;我写了if x 1:&#xff0c;为什么Python会报错&#xff1f; **专家**&#xff1a;&#xff08;推眼镜&#xff09;**是赋值&#xff0c;才是比较**&#xff01;想判断相…...

详细比较StringRedisTemplate和RedisTemplate的区别及使用方法,及解决融合使用方法

前言 感觉StringRedisTemplate和RedisTemplate非常的相识&#xff0c;到底有什么区别和联系呢&#xff1f;点开idea&#xff0c;打开其依赖关系&#xff0c;可以看出只需使用maven依赖包spring-boot-starter-data-redis&#xff0c;然后在service中注入StringRedisTemplate或者…...

开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(五)

一、前言 在上一节中&#xff0c;学习了如何使用vLLM来部署Whisper-large-v3-turbo模型。不过&#xff0c;在实际使用时&#xff0c;模型一次只能处理30秒的音频。今天&#xff0c;将结合实际业务&#xff0c;介绍如何处理一段完整的音频&#xff0c;并生成相应的字幕文件。 相…...