C++数据结构学习(顺序表)
文章目录
- 顺序表
- 杭州电子科技大学在线评测
- 2008 数值统计
- 使用顺序表实现
- 2014 青年歌手大奖赛_评委会打分
- Leetcode题目
- [LCP 01. 猜数字](https://leetcode.cn/problems/guess-numbers/description/)
- [LCP 06. 拿硬币](https://leetcode.cn/problems/na-ying-bi/description/)
- [2057. 值相等的最小索引](https://leetcode.cn/problems/smallest-index-with-equal-value/description/)
- [485. 最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/description/)
- 2006.差的绝对值为K的数对题目
- [1464. 数组中两元素的最大乘积](https://leetcode.cn/problems/maximum-product-of-two-elements-in-an-array/description/)
- [2535. 数组元素和与数字和的绝对差](https://leetcode.cn/problems/difference-between-element-sum-and-digit-sum-of-an-array/description/)
- [2656. K 个元素的最大和](https://leetcode.cn/problems/maximum-sum-with-exactly-k-elements/description/)
- [2367. 算术三元组的数目](https://leetcode.cn/problems/number-of-arithmetic-triplets/description/)
- [27. 移除元素](https://leetcode.cn/problems/remove-element/description/)
- [1920. 基于排列构建数组](https://leetcode.cn/problems/build-array-from-permutation/description/)
- [1929. 数组串联](https://leetcode.cn/problems/concatenation-of-array/description/)
- [1431. 拥有最多糖果的孩子](https://leetcode.cn/problems/kids-with-the-greatest-number-of-candies/description/)
- [1991. 找到数组的中间位置](https://leetcode.cn/problems/find-the-middle-index-in-array/description/)
- [540. 有序数组中的单一元素](https://leetcode.cn/problems/single-element-in-a-sorted-array/description/)
- [119. 杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/description/)
- [3065. 超过阈值的最少操作数 I](https://leetcode.cn/problems/minimum-operations-to-exceed-threshold-value-i/description/)
- [2951. 找出峰值](https://leetcode.cn/problems/find-the-peaks/description/)
- [2960. 统计已测试设备](https://leetcode.cn/problems/count-tested-devices-after-test-operations/description/)
- [2824. 统计和小于目标的下标对数目](https://leetcode.cn/problems/count-pairs-whose-sum-is-less-than-target/description/)
- [2859. 计算 K 置位下标对应元素的和](https://leetcode.cn/problems/sum-of-values-at-indices-with-k-set-bits/description/)
- [2341. 数组能形成多少数对](https://leetcode.cn/problems/maximum-number-of-pairs-in-array/description/)
- [3158. 求出出现两次数字的 XOR 值](https://leetcode.cn/problems/find-the-xor-of-numbers-which-appear-twice/description/)
顺序表
杭州电子科技大学在线评测
杭州电子科技大学在线评测官网
2008 数值统计
#include <iostream>
using namespace std;int main()
{int n;while (cin >> n) {if (n == 0) {break;}int negative = 0;int zero = 0;int positive = 0;for (int i = 1; i <= n; i++) {double num;cin >> num;if (num < 0) {negative++;}if (num == 0) {zero++;}if (num > 0) {positive++;}}cout << negative << ' ' << zero << ' ' << positive << endl;}
}
使用顺序表实现
#include <iostream>
using namespace std;// 顺序表模板
#define eleType doublestruct SequentialList {eleType *elements;int size;int capacity;
};// 初始化顺序表
void initializeList(SequentialList* list, int capacity) {list->elements = new eleType[capacity];list->size = 0;list->capacity = capacity;
}// 销毁顺序表
void destroyList(SequentialList* list) {delete[] list->elements;
}// 获取顺序表的大小
eleType size(SequentialList* list) {return list->size;
}// 判断顺序表是否为空
eleType isEmpty(SequentialList* list) {return list->size == 0;
}// 顺序表的元素插入
eleType insert(SequentialList* list, int index, eleType element) {if (index < 0 || index > list->size) {throw std::invalid_argument("Invalid index");}if (list->size == list->capacity) {int newCapacity = list->capacity * 2;eleType* newElements = new eleType[newCapacity];for (int i = 0; i < list->size; ++i) {newElements[i] = list->elements[i];}delete[] list->elements;list->elements = newElements;list->capacity = newCapacity;}for (int i = list->size; i > index; i--) {list->elements[i] = list->elements[i - 1];}list->elements[index] = element;list->size++;
}// 顺序表的元素删除
void deleteElement(SequentialList* list, int index) {if (index < 0 || index >= list->size) {throw std::invalid_argument("Invalid index");}for (int i = index; i < list->size - 1; ++i) {list->elements[i] = list->elements[i + 1];}list->size--;
}// 顺序表寻找元素是否存在
eleType findElement(SequentialList* list, eleType element) {for (int i = 0; i < list->size; ++i) {if (list->elements[i] == element) {return i;}}return -1;
}// 获取元素
eleType getElement(SequentialList* list, int index) {if (index < 0 || index >= list->size) {throw std::invalid_argument("Invalid index");}return list->elements[index];
}// 修改元素
void updateElement(SequentialList* list, int index, eleType value) {if (index < 0 || index >= list->size) {throw std::invalid_argument("Invalid index");}list->elements[index] = value;
}int main()
{int n;while (cin >> n && n) {SequentialList s;initializeList(&s, 1);for (int i = 0; i < n; i++) {eleType x;cin >> x;insert(&s, i, x);}int pcnt = 0, zcnt = 0, ncnt = 0;for (int i = 0; i < size(&s); i++) {eleType element = getElement(&s, i);if (element > 1e-8) {pcnt++;}else if (element < -1e-8) {ncnt++;}else {zcnt++;}}cout << ncnt << ' ' << zcnt << ' ' << pcnt << endl;}
}
2014 青年歌手大奖赛_评委会打分
#include <iostream>
using namespace std;// 顺序表模板
#define eleType doublestruct SequentialList {eleType* elements;int size;int capacity;
};// 初始化顺序表
void initializeList(SequentialList* list, int capacity) {list->elements = new eleType[capacity];list->size = 0;list->capacity = capacity;
}// 销毁顺序表
void destroyList(SequentialList* list) {delete[] list->elements;
}// 获取顺序表的大小
int size(SequentialList* list) {return list->size;
}// 判断顺序表是否为空
eleType isEmpty(SequentialList* list) {return list->size == 0;
}// 顺序表的元素插入
void insert(SequentialList* list, int index, eleType element) {if (index < 0 || index > list->size) {throw std::invalid_argument("Invalid index");}if (list->size == list->capacity) {int newCapacity = list->capacity * 2;eleType* newElements = new eleType[newCapacity];for (int i = 0; i < list->size; ++i) {newElements[i] = list->elements[i];}delete[] list->elements;list->elements = newElements;list->capacity = newCapacity;}for (int i = list->size; i > index; i--) {list->elements[i] = list->elements[i - 1];}list->elements[index] = element;list->size++;
}// 顺序表的元素删除
void deleteElement(SequentialList* list, int index) {if (index < 0 || index >= list->size) {throw std::invalid_argument("Invalid index");}for (int i = index; i < list->size - 1; ++i) {list->elements[i] = list->elements[i + 1];}list->size--;
}// 顺序表寻找元素是否存在
eleType findElement(SequentialList* list, eleType element) {for (int i = 0; i < list->size; ++i) {if (list->elements[i] == element) {return i;}}return -1;
}// 获取元素
eleType getElement(SequentialList* list, int index) {if (index < 0 || index >= list->size) {throw std::invalid_argument("Invalid index");}return list->elements[index];
}// 修改元素
void updateElement(SequentialList* list, int index, eleType value) {if (index < 0 || index >= list->size) {throw std::invalid_argument("Invalid index");}list->elements[index] = value;
}int main()
{int n;while (cin >> n) {SequentialList s;initializeList(&s, n);eleType max_score = -100000000;eleType min_score = 100000000;eleType sum = 0;for (int i = 0; i < n; i++) {eleType num;cin >> num;insert(&s, i, num);}for (int i = 0; i < size(&s); i++) {if (getElement(&s, i) > max_score) {max_score = getElement(&s, i);}if (getElement(&s, i) < min_score) {min_score = getElement(&s, i);}sum += getElement(&s, i);}sum -= max_score;sum -= min_score;printf("%.2f\n", sum / (n - 2));}
}
Leetcode题目
LCP 01. 猜数字
class Solution {
public:int game(vector<int>& guess, vector<int>& answer) {int count = 0;for(int i = 0; i < 3; i++) {if(guess[i] == answer[i]) {count++;}}return count;}
};
LCP 06. 拿硬币
class Solution {
public:int minCount(vector<int>& coins) {int count = 0;for(int i = 0; i < coins.size(); i++) {count += (coins[i] + 1)/2;}return count;}
};
2057. 值相等的最小索引
class Solution {
public:int smallestEqual(vector<int>& nums) {for(int i = 0; i < nums.size(); i++) {if(i % 10 == nums[i]) {return i;}}return -1;}
};
485. 最大连续 1 的个数
class Solution {
public:int findMaxConsecutiveOnes(vector<int>& nums) {int count = 0;int end = 0;for(int i = 0; i < nums.size(); i++) {if(nums[i] == 1) {count = count + 1;if(count > end) {end = count;}} else {count = 0;}}return end;}
};
2006.差的绝对值为K的数对题目
class Solution {
public:int countKDifference(vector<int>& nums, int k) {int count = 0;for(int i = 0; i < nums.size(); i++) {for(int j = i + 1; j < nums.size(); j++) {if(abs(nums[i] - nums[j]) == k) {count++;}}}return count;}
};
1464. 数组中两元素的最大乘积
class Solution {
public:int maxProduct(vector<int>& nums) {int maxIndex = 0;for(int i = 0; i < nums.size(); i++) {if(nums[i] > nums[maxIndex]) {maxIndex = i;}}int secMaxIndex = -1;for(int i = 0; i < nums.size(); i++) {if(i != maxIndex) {if(secMaxIndex == -1 || nums[i] > nums[secMaxIndex]) {secMaxIndex = i;}}}return (nums[maxIndex] - 1) * (nums[secMaxIndex] - 1);}
};
2535. 数组元素和与数字和的绝对差
class Solution {
public:int differenceOfSum(vector<int>& nums) {int x = 0, y = 0;for(int i = 0; i < nums.size(); i++) {x += nums[i];while(nums[i]) {y += nums[i] % 10;nums[i] = nums[i] / 10;}}return abs(x - y);}
};
2656. K 个元素的最大和
class Solution {
public:int maximizeSum(vector<int>& nums, int k) {int count = 0;while(k--) {int maxIndex = 0;for(int i = 0; i < nums.size(); i++) {if(nums[i] > nums[maxIndex]) {maxIndex = i;}}count += nums[maxIndex];nums[maxIndex] += 1;}return count;}
};
2367. 算术三元组的数目
class Solution {
public:int arithmeticTriplets(vector<int>& nums, int diff) {int count = 0;for(int i = 0; i < nums.size(); i++) {for(int j = i + 1; j < nums.size(); j++) {if(nums[j] - nums[i] == diff) {for(int k = j + 1; k < nums.size(); k++) {if(nums[k] - nums[j] == diff) {count++;}}}}}return count;}
};
27. 移除元素
class Solution {
public:int removeElement(vector<int>& nums, int val) {int l = 0;int r = nums.size() - 1;while(l <= r) {if (nums[l] == val) {int temp = nums[l];nums[l] = nums[r];nums[r] = temp;r--;} else {l++;}}return r + 1;}
};
1920. 基于排列构建数组
class Solution {
public:vector<int> buildArray(vector<int>& nums) {vector<int> result;for(int i = 0; i < nums.size(); i++) {int ans = nums[nums[i]];result.push_back(ans);}return result;}
};
1929. 数组串联
class Solution {
public:vector<int> getConcatenation(vector<int>& nums) {vector<int> result;for(int i = 0; i < nums.size(); i++) {result.push_back(nums[i]);}for(int i = 0; i < nums.size(); i++) {result.push_back(nums[i]);}return result;}
};
1431. 拥有最多糖果的孩子
class Solution {
public:vector<bool> kidsWithCandies(vector<int>& candies, int extraCandies) {vector<bool> result;for(int i = 0; i < candies.size(); i++) {int maxIndex = 0;candies[i] += extraCandies;for(int j = 0; j < candies.size(); j++) {if(candies[j] > candies[maxIndex]) {maxIndex = j;}}if(candies[i] == candies[maxIndex]) {result.push_back(true);} else {result.push_back(false);}candies[i] -= extraCandies;}return result;}
};
1991. 找到数组的中间位置
class Solution {
public:int findMiddleIndex(vector<int>& nums) {for(int i = 0; i < nums.size(); i++) {int l = 0;int r = 0;for(int j = 0; j < i; j++) {l += nums[j];}for(int j = i + 1; j < nums.size(); j++) {r += nums[j];}if (l == r) {return i;}}return -1;}
};
540. 有序数组中的单一元素
class Solution {
public:int singleNonDuplicate(vector<int>& nums) {for(int i = 0; i < nums.size(); i++) {if(i == 0) {if(nums.size() == 1 || nums[i] != nums[i + 1]) {return nums[i];}} else if(i == nums.size() - 1) {if(nums[i] != nums[i - 1]) {return nums[i];}} else {if(nums[i - 1] != nums[i] && nums[i] != nums[i + 1]) {return nums[i];}}}return 0;}
};
119. 杨辉三角 II
class Solution {
public:vector<int> getRow(int rowIndex) {int nums[34][34];for(int i = 0; i <= rowIndex; i++) {for(int j = 0; j <= i; j++) {if(j == 0 || i == j) {nums[i][j] = 1;} else {nums[i][j] = nums[i-1][j] + nums[i-1][j-1];}}}vector<int> result;for(int j = 0; j <= rowIndex; j++) {result.push_back(nums[rowIndex][j]);}return result;}
};
3065. 超过阈值的最少操作数 I
class Solution {
public:int minOperations(vector<int>& nums, int k) {int count = 0;for(int i = 0; i < nums.size(); i++) {if(nums[i] < k) {count++;}}return count;}
};
2951. 找出峰值
class Solution {
public:vector<int> findPeaks(vector<int>& mountain) {vector<int> result;for(int i = 1; i < mountain.size() - 1; i++) {if((mountain[i] > mountain[i - 1]) && (mountain[i] > mountain[i + 1])) {result.push_back(i);}}return result;}
};
2960. 统计已测试设备
class Solution {
public:int countTestedDevices(vector<int>& batteryPercentages) {int count = 0;for(int i = 0; i < batteryPercentages.size(); i++) {if(batteryPercentages[i] > 0) {count++;for(int j = i + 1; j < batteryPercentages.size(); j++) {batteryPercentages[j] = max(0, batteryPercentages[j] - 1);}}}return count;}
};
2824. 统计和小于目标的下标对数目
class Solution {
public:int countPairs(vector<int>& nums, int target) {int count = 0;for(int i = 0; i < nums.size(); i++) {for(int j = i + 1; j < nums.size(); j++) {if(nums[i] + nums[j] < target) {count++;}}}return count;}
};
2859. 计算 K 置位下标对应元素的和
class Solution {
public:int sumIndicesWithKSetBits(vector<int>& nums, int k) {int sum = 0;for(int i = 0; i < nums.size(); i++) {int num = i;int count = 0;while(num) {if(num & 1) {count++;}num >>= 1;}if(count == k) {sum += nums[i];}}return sum;}
};
2341. 数组能形成多少数对
class Solution {
public:vector<int> numberOfPairs(vector<int>& nums) {int count = 0;bool judge[100] = {0};for(int i = 0; i < nums.size(); i++) {for(int j = 0; j < i; j++) {if(judge[j] == true) {continue;}if(nums[i] == nums[j]) {judge[i] = judge[j] = true;count++;break;}}}return {count, (int)nums.size() - 2 * count};}
};
3158. 求出出现两次数字的 XOR 值
class Solution {
public:int duplicateNumbersXOR(vector<int>& nums) {int count = 0;long visited = 0;for(int i = 0; i < nums.size(); i++) {int x = nums[i];if(visited & ((long)1<<x)) {count ^= x;} else {visited |= ((long)1<<x);}}return count;}
};
相关文章:
C++数据结构学习(顺序表)
文章目录 顺序表杭州电子科技大学在线评测2008 数值统计使用顺序表实现 2014 青年歌手大奖赛_评委会打分 Leetcode题目[LCP 01. 猜数字](https://leetcode.cn/problems/guess-numbers/description/)[LCP 06. 拿硬币](https://leetcode.cn/problems/na-ying-bi/description/)[20…...
springboot宠物用品商城系统-前端-计算机毕业设计源码74346
摘要 基于微信小程序的宠物用品商城系统是一个集商品展示、在线购物、支付结算、用户管理等功能于一体的综合性电商平台。该系统充分利用微信小程序的便捷性和用户基础,为宠物爱好者提供了一个方便、快捷的购物体验。 同时,该系统还具备完善的用户管理功…...
【vue预览PDF文件的几种方法】
vue展示PDF文件的几种方法 使用Vue插件 你需要安装vue-pdf-embed: npm install vue-pdf-embed<template><div class"pdf-container"><VuePdfEmbed :src"pdfUrl" /></div> </template><script setup lang"ts"…...
学习安卓开发遇到的问题(未解决版,有没有人帮我看看,大哭,感谢)
问题1:学习禁用与恢复按钮中: java代码报错:报错代码是 R.id.btn_enable;case R.id.btn_disable;case R.id.btn_test: 代码如下:(实现功能在代码后面) package com.example.apptest;import static java.…...
C++必修:STL之vector的模拟实现
✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C学习 贝蒂的主页:Betty’s blog 为了让我们更加深入理解vector,接下来我们将模拟实现一个简易版的vect…...
Unity Camera
课程目标 1. 了解摄像机(camera)不同视角的设计与实现;2. 感受在不同摄像机视角下观察虚拟场景。 喜欢玩游戏或者看3D动漫的朋友可以回忆在虚拟场景中摄像头的运动变化带来的视觉感受,例如:摄像头给场景中的主角来个…...
CSS雷达光波效果(前端雷达光波效果)
前言 CSS雷达光波效果是一种视觉动画效果,常用于模仿雷达扫描或检测的视觉反馈。这种效果通常涉及到动态的圆形或弧形图案,它们从一个中心点向外扩散,类似于水面上的涟漪或雷达扫描线。以下是创建CSS雷达光波效果的一些关键技术和步骤&#…...
【C语言】【数据结构】冒泡排序及优化
一、算法思想 冒泡排序是一种简单的排序算法。一次从前往后地走访待排序的元素序列被称为一趟,每一趟都会把相邻的两个元素的错误顺序交换,将当前趟次中最大或者最小的元素像“冒泡泡”一样冒到最后面,反复地走访元素序列,直到所有…...
3种 Ajax 方式:原生、jQuery、axios
毋庸多言,Ajax 技术在网页中是划时代的进步。学会它,可以说掌握了一招半式,不再是门外汉了。 这里将 3 种 Ajax 方式一并呈上。 感谢 https://run.uv.cc/ 平台,以及 /api 接口 https://andi.cn/page/621639.html https://andi…...
Node.js 根据表结构动态生成目标代码
文章目录 前言项目背景使用的技术栈步骤一:设置 Node.js 项目步骤二:连接 SQL Server 数据库步骤三:查询数据库表结构步骤四:生成模板代码步骤五:整合所有功能总结 前言 在现代的前端开发中,使用 Vue3 搭配…...
渗透测试实战—云渗透(AK/SK泄露)
免责声明:文章来源于真实渗透测试,已获得授权,且关键信息已经打码处理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本…...
【机器学习】机器学习与医疗健康在疾病预测中的融合应用与性能优化新探索
文章目录 引言第一章:机器学习在医疗健康中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 特征工程 1.2 模型选择1.2.1 逻辑回归1.2.2 决策树1.2.3 随机森林1.2.4 支持向量机1.2.5 神经网络 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Adam优化…...
MySQL(8.0)数据库安装和初始化以及管理
1.MySQL下载安装和初始化 1.下载安装包 下载地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2.解压…...
C# Web控件与数据感应之 TreeView 类
目录 关于 TreeView 一些区别 准备数据源 范例运行环境 一些实用方法 获取数据进行呈现 根据ID设置节点 获取所有结点的索引 小结 关于 TreeView 数据感应也即数据捆绑,是一种动态的,Web控件与数据源之间的交互,本文将继续介绍与…...
java使用责任链模式进行优化代码
1.什么是责任链 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。每个收到请求的对象要么处理该请求,要么将它传递给链中…...
【人工智能】边缘计算与 AI:实时智能的未来
💎 我的主页:2的n次方_ 💎1. 引言 随着物联网设备数量的爆炸性增长和对实时处理需求的增加,边缘计算与人工智能(Edge AI)成为一个热门话题。Edge AI 通过在本地设备上运行 AI 算法,减少对云计…...
Day12--Servlet实现前后端交互(案例:学生信息管理系统登录页面)
(在一个完整的项目架构中,servlet的角色和位置) Servlet、GenericServlet和HttpServlet三者之间的关系是Java Web开发中的一个重要概念,它们共同构成了基于Java的服务器端程序的基础。以下是具体分析: 1. Servlet接口…...
Android 安装应用-准备阶段
安装应用的准备阶段是在PackageManagerService类中的preparePackageLI(InstallArgs args, PackageInstalledInfo res),代码有些长,分段阅读。 分段一 分段一: GuardedBy("mInstallLock")private PrepareResult preparePackageLI(I…...
【JKI SMO】框架讲解(九)
本节内容将演示如何向SMO框架添加启动画面。 1.打开LabVIEW新建一个空白项目,并保存。 2.找到工具,打开SMO Editor。 3.新建一个SMO,选择SMO.UI.Splash。 4. 打开LabVIEW项目,可以看到项目里多了一个SystemSplash类。 打开Process…...
Linux通过Docker安装Microsoft Office+RDP远程控制
之前根据B站教程《在linux上安装微软office》:在linux上安装微软office_哔哩哔哩_bilibili 写过一篇使用KVM虚拟机安装Microsoft OfficeRDP远程控制的文章,根据B站的教程安装后,发现有远程控制延迟的问题,比如拖动Office窗口时会…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...
