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

【2025小白版】计算复试/保研机试模板(个人总结非GPT生成)附代码

在这里插入图片描述

一、编程语言选择

很多高校在机试中对编程语言都有明确规定,像复旦大学计算机学院就说明可选择 C、C++ 或 Java 语言答题,还支持 C11(gcc5.4),C++14(g++5.4),Java (openjdk1.8)等编译环境。这里强烈建议大家使用 C/C++,因为几乎所有高校都支持,通用性超强👍。

二、准备好模板是至关重要的

一般来说,机试都可以带书和纸质资料进入考场。所以提前把那些函数的用法和算法的模板准备好是很重要的,一方面是增加自己的信心,万一没记住还可以翻开来看一下。另外说不定考到原题或者类似的题,就可以直接秒杀了。
在这里插入图片描述机试模板PDF详细代码自取

常见头文件

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cmath>
cout << abs(a);
memset(a,-1,sizeof(a));  #include <string.h>

int转字符串

string intToString(long long x){string s;while(x){s += (x % 10) + '0';x = x / 10;} 	reverse(s.begin(),s.end());return s;
}

日期模板

int daytab[2][13] = {
{0,31,28,31,30,31,30,31,31,30,31,30,31
},
{0,31,29,31,30,31,30,31,31,30,31,30,31,
}
};bool IsLeapYear(int x){return (x % 4 == 0&& x % 100 != 0) || (x % 400 ==0);
}
=====================================================算天数while(cin >> y >> m >> d){int sum = 0;for(int i = 0;i < m ;i ++){sum += daytab[isLeapYear(y)][i];}sum += d;cout << sum << endl;}
======================================================scanf("%04d%02d%02d",&y1,&m1,&d1);
======================================================
// 第n天后是什么日期cin >> y >> m >> d >> n;n = n + d;d = 0;while(n >= daytab[IsLeapYear(y)][m]){n -= daytab[IsLeapYear(y)][m];if(m == 12){y ++;m = 1;}else{m ++;}}d = d + n;if(d == 0 && m != 1){m --;d = daytab[IsLeapYear(y)][m];}else if(d == 0 && m == 1){m = 12;d = daytab[IsLeapYear(y)][m];}printf("%04d-%02d-%02d\n",y,m,d);}

二分查找(在已经有序的情况下)

bool BinarySearch(int n,int x){int l = 0,r = n - 1;while(l <= r){int m = (r + l) / 2;if(a[m] < x){l = m + 1;}else if(a[m] > x){r = m - 1;}else{return true;}}return false;
}

sort排序,重写CMP函数

bool cmp(Student x,Student y){if(x.score == y.score){return x.num < y.num; }else{return x.score < y.score;}
} stable_sort(&stu[0],&stu[n],cmp); //重点:sort是不稳定排序,stable_sort才是稳定排序 

快速排序

void quick_sort(int q[],int l,int r){if(l >= r)return ;int x = q[(l + r) >> 1], i = l - 1,j = r + 1;while(i < j){do i ++;while(q[i] < x);do j --;while(q[j] > x);if(i < j)swap(q[i],q[j]);} quick_sort(q,l,j);quick_sort(q,j + 1,r);
}

归并排序 + 逆序数对

void merge_sort(int q[],int l,int r){if(l >= r)return ;int mid = (l + r) >> 1;merge_sort(q,l,mid);merge_sort(q,mid + 1,r);int i = l ,j = mid + 1,k = 0;// 左右指针进行比较 while(i <= mid && j <= r){if(q[i] < q[j])temp[k ++] = q[i ++];else temp[k ++] = q[j ++];}// 没有分完的 while(i <= mid)temp[k ++] = q[i ++];while(j <= r)temp[k ++] = q[j ++];for(int i = l,j = 0;i <= r;i ++,j ++)q[i] = temp[j];
}
============================================================
逆序数
while(i <= mid && j <= r){if(q[i] > q[j]){temp[k ++] = q[j ++];sum += mid - i + 1;}else temp[k ++] = q[i ++];}
cout << sum << endl;

字符串处理

int index = str.find('a');string newstr = str.substr(startIndex,count);

向量vector map queue stack

vector<int> vectore;vectore.push_back('i');
vectore.pop_back();for(int i = 0;i < vectore.size();i ++)// map自带对键排序,进行迭代
map<int,string>::iterator it;
for(it = str.begin();it != str.end();it ++){cout << it->second << endl;
}queue<Animal> cats;
dogs.front().numberstack<int> s;
s.push(i);
s.pop();
s.top();
s.empty();

最大公约数、最小公倍数

int gcd(int a,int b){return b ? gcd(b,a % b):a;
}// 最小公倍数
min =  (a * b) / gcd;

最长子序列和问题 + 最长公共序列

for(int i=1;i<n;i++){a[i]=max(a[i],a[i-1]+a[i]);answer=max(answer,a[i]);}cout<<answer<<endl;for (int i = 1; i <= a.size(); i++) {for (int j = 1; j <= b.size(); j++) {if (a[i - 1] == b[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;}else {dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);}}
}

背包问题

const int N = 1010;
int n,m;//物品数量和背包容积
int v[N],w[N];
int f[N];int main(){cin >> n >> m;for(int i = 1;i <= n;i ++){cin >> v[i] >> w[i];}for(int i = 1;i <= n;i ++){for(int j = m;j >= v[i];j --){//2种情况f[j] = max(f[j],f[j - v[i]] + w[i]);//背包有空间}}cout << f[m] << endl;return 0;
}
// 完全
for(int i = 1;i <= n;i ++){for(int j = v[i];j <= m;j ++){f[j] = max(f[j],f[j - v[i]] + w[i]);}}

进制转化

======================================================================================数比较小
void convert(int n,int b){while(n){a[cnt ++] = n % b;n = n / b;}
}cin >> n >> b;convert(n,b);for(int i = cnt - 1;i >= 0;i --)cout << a[i];
=====================================================================================高精度:s原字符串,m是原进制,b是转换后的进制
string convert(string s, int m, int b) {string ans; while (!s.empty()) {int k = 0; // 余数bool leadingZero = true; // 用于去除前导零string temp;for (int i = 0; i < s.size(); i++) {// 如果是字母字符(用于大于10的进制),则转换为对应的值,如'A' -> 10, 'B' -> 11int digit = (isdigit(s[i]) ? s[i] - '0' : s[i] - 'A' + 10);int t = (k * m + digit) % b;int quotient = (k * m + digit) / b;k = t;if (quotient != 0 || !leadingZero) {temp += (quotient < 10 ? quotient + '0' : quotient - 10 + 'A');leadingZero = false;}}ans += (k < 10 ? k + '0' : k - 10 + 'A');s = temp;}reverse(ans.begin(), ans.end());return ans.empty() ? "0" : ans;
}
====================================================================================16进制到10进制
int CharToInt(char c){if(c >= '0' && c <= '9')    return c - '0';else return c - 'A' + 10;
}
int main() {string str;while (cin >> str) {int x = 0;for(int i = 2; i < str.length(); i ++){x = x * 16 + CharToInt(str[i]);}cout << x << endl;}return 0;
}

单词替换(字符串)

    getline(cin,s);cin >> a >> b;for(int i = 0;i < s.size();i ++){int j = i;string word;// s[j]不为空格时把他加到单词序列中,相当于split while(j < s.size() && s[j] != ' ')word += s[j ++];i = j;if(word == a)cout << b << ' ';else cout << word << ' ';}

结构体应用

// 定义一个结构体 `point`,用来存储字符的相关信息
struct point {int num; // 记录字符在字符串中出现的次数vector<int> AA; // 记录字符在字符串中出现的位置(索引)bool flag = false; // 用来判断是不是该字符第一次被输出
};int main() {string s; // 用来存储输入的字符串map<char, point> mapp; // 定义一个映射,用来存储每个字符及其对应的 `point` 结构体while (cin >> s) { // 逐行读取输入的字符串// 第一次遍历字符串,统计每个字符的出现次数for (int i = 0; i < s.size(); i++) {mapp[s[i]].num++;}// 第二次遍历字符串,记录每个字符的出现位置(如果出现次数大于1)for (int i = 0; i < s.size(); i++) {if (mapp[s[i]].num > 1) {mapp[s[i]].AA.push_back(i);}}// 第三次遍历字符串,输出每个出现次数大于1且还未被输出的字符及其出现的位置for (int i = 0; i < s.size(); i++) {if (mapp[s[i]].num > 1 && mapp[s[i]].flag == false) {for (int j = 0; j < mapp[s[i]].AA.size(); j++) {if (j == 0)printf("%c:%d", s[i], mapp[s[i]].AA[j]);elseprintf(",%c:%d", s[i], mapp[s[i]].AA[j]);}cout << endl;mapp[s[i]].flag = true; // 标记该字符已被输出}}}return 0;
}

约瑟夫环问题

int main() {int n, p, m; // n多少人,p从哪里开始,m经过多少人淘汰 while (cin >> n >> p >> m && (n || p || m)) {queue<int> children;for (int i = 1; i <= n; ++i) {children.push(i);}// 将队列旋转到第p个小孩开始for (int i = 1; i < p; ++i) {children.push(children.front());children.pop();}while (!children.empty()) {// 报数到第m个for (int i = 1; i < m; ++i) {children.push(children.front());children.pop();}// 输出当前出圈的小孩编号cout << children.front();children.pop();if (!children.empty()) {cout << ",";}}cout << endl;}return 0;
}

素数

bool isPrime(int n)
{if(n == 1 || n == 0 || n < 0)return false;  for(int i = 2; i <= sqrt(n); i++) {if(n % i ==0)return false;}return true;
}埃氏筛法
const int maxn = 10000000;
int prime[maxn];
bool IsPrime[maxn] = {0};//0代表都是素数
void Find_Prime(){IsPrime[1] = 1;//1不是素数int pNum = 1;for(int i = 2; i <= maxn; i++){if(!IsPrime[i])prime[pNum++] = i;for(int j = i * i; j <= maxn; j += i){IsPrime[j] = true;}}
}printf("%d\n", prime[k]);

质因数+约数

    int ret = 0;// 从 2 开始尝试每个可能的因数,直到 sqrt(n)for (int i = 2; i <= sqrt(n); i++) {// 如果 i 是 n 的一个因数while (n % i == 0) {ret++;  // 计数器加一n /= i;  // 用 i 除去 n 的这个因数}// 如果 n 已经被完全分解,提前退出循环if (n <= 1) break;}// 如果存在大于 sqrt(n) 的质因数,则它只能是 n 本身if (n > 1) ret++;return ret;
约数
int Counter(int x){int count = 0; int i = 1;for(i = 1;i * i < x;i ++){if(x % i == 0)count += 2;}if(i * i == x) count ++;return count;
}

快速幂

typedef long long LL;
LL a,n;LL ksm(LL a, LL n){LL ans = 1;while(n){if(n & 1)ans *= a;//如果n的最后一位是1 a *= a;n >>= 1; //二进制去掉最后一个1,*2 }return ans;
} int main(){cin >> a >> n;cout << ksm(a,n);

高精度加减乘除

// C = A + B, A >= 0, B >= 0
vector<int> add(vector<int> &A, vector<int> &B)
{if (A.size() < B.size()) return add(B, A);vector<int> C;int t = 0;for (int i = 0; i < A.size(); i ++ ){t += A[i];if (i < B.size()) t += B[i];C.push_back(t % 10);t /= 10;}if (t) C.push_back(t);return C;
}// C = A - B, 满足A >= B, A >= 0, B >= 0
vector<int> sub(vector<int> &A, vector<int> &B)
{vector<int> C;for (int i = 0, t = 0; i < A.size(); i ++ ){t = A[i] - t;if (i < B.size()) t -= B[i];C.push_back((t + 10) % 10);if (t < 0) t = 1;else t = 0;}while (C.size() > 1 && C.back() == 0) C.pop_back();return C;
}// C = A * b, A >= 0, b >= 0
vector<int> mul(vector<int> &A, int b)
{vector<int> C;int t = 0;for (int i = 0; i < A.size() || t; i ++ ){if (i < A.size()) t += A[i] * b;C.push_back(t % 10);t /= 10;}while (C.size() > 1 && C.back() == 0) C.pop_back();return C;
}// A / b = C ... r, A >= 0, b > 0
vector<int> div(vector<int> &A, int b, int &r)
{vector<int> C;r = 0;for (int i = A.size() - 1; i >= 0; i -- ){r = r * 10 + A[i];C.push_back(r / b);r %= b;}reverse(C.begin(), C.end());while (C.size() > 1 && C.back() == 0) C.pop_back();return C;
}

KMP

// s[]是长文本,p[]是模式串,n是s的长度,m是p的长度
求模式串的Next数组:
for (int i = 2, j = 0; i <= m; i ++ )
{while (j && p[i] != p[j + 1]) j = ne[j];if (p[i] == p[j + 1]) j ++ ;ne[i] = j;
}// 匹配
for (int i = 1, j = 0; i <= n; i ++ )
{while (j && s[i] != p[j + 1]) j = ne[j];if (s[i] == p[j + 1]) j ++ ;if (j == m){j = ne[j];// 匹配成功后的逻辑}
}

BFS走迷宫

#include <iostream>
#include <queue>#define x first
#define y secondusing namespace std;typedef pair<int,int> PII;const int N = 1e3 + 10;int n,m;
int g[N][N];
int d[N][N];
int dx[4] = {1,-1,0,0},dy[4] = {0,0,1,-1};void bfs(int u){queue<int> q;q.push({1,1});memset(d,-1,sizeof(d));d[1][1] = 0;while(q.size()){PII t = q.front();q.pop();for(int i = 0;i < 4;i ++){int a = t.x +dx[i];int b = dy[i] + t.y;if(a < 1 || a > n || b < 1 || b > m)continue;if(g[a][b] == 1)continue;if(d[a][b] != -1)continue;d[a][b] = d[t.x][t.y] + 1;q.push({a,b});}}
}int main(){cin >> n >> m;for(int i = 0;i < n;i ++){for(int j = 0;j < n;j ++){cin >> g[i][j];}}bfs();cout << d[n][m] << endl;return 0;
}

N皇后问题DFS

#include <iostream>using namespace std;const int N = 20; // 对角线元素2n-1取20防止越界
int n;
char g[N][N]; // 存储图
bool col[N],dg[N],udg[N]; // udg副对角线 diagonal  
int cnt;void dfs(int x){if(x == n){ // 如果找到方案的话 for(int i = 0;i < n;i ++){puts(g[i]); // puts输出二维数组 输出每一行就会自动换行}puts("");cnt ++;return; // 返回调用函数进行执行 }// x : 行 y : 列for(int y = 0;y < n;y ++){// 按行枚举 因为每一行都需要放皇后 相当于剪枝 // 判断皇后是否放在这格if(!col[y] && !dg[x + y] && !udg[y - x + n]){g[x][y] = 'Q';col[y] = dg[x + y] = udg[y - x + n] = true;dfs(x + 1); // 找下一行// 回溯的时候恢复现场col[y] = dg[x + y] = udg[y - x + n] = false;g[x][y] = '.'; } } 
}
int main(){cin >> n;for(int i = 0;i < n;i ++){for(int j =0;j < n;j ++){g[i][j] = '.';}} dfs(0); // 从第一行开始找[0:下标] return 0;
}

链表类型

链表反转

class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode *cur = head, *pre = nullptr;while(cur != nullptr) {ListNode* tmp = cur->next; // 暂存后继节点 cur.nextcur->next = pre;           // 修改 next 引用指向pre = cur;                 // pre 暂存 curcur = tmp;                 // cur 访问下一节点}return pre;}
};

回文链表

class Solution {
public:bool isPalindrome(ListNode* head) {vector<int> vals;while (head != nullptr) {vals.emplace_back(head->val);head = head->next;}for (int i = 0, j = (int)vals.size() - 1; i < j; ++i, --j) {if (vals[i] != vals[j]) {return false;}}return true;}
};

环形链表

public class Solution {public boolean hasCycle(ListNode head) {Set<ListNode> seen = new HashSet<ListNode>();while (head != null) {if (!seen.add(head)) {return true;}head = head.next;}return false;}
}

排序链表

class Solution {
public:ListNode* sortList(ListNode* head) { return mergeSort(head);}/*** 对给定的链表进行归并排序*/ListNode* mergeSort(ListNode* head){// 如果链表为空或只有一个节点,无需排序直接返回if(!head || !head->next){return head;    }// 获取链表的中间节点,分别对左右子链表进行排序ListNode* mid = getMid(head);ListNode* rightSorted = mergeSort(mid->next);   // 排序右子链表if(mid)mid->next = nullptr;                     // 断开两段子链表ListNode* leftSorted = mergeSort(head);         // 排序左子链表return mergeTwoLists(leftSorted, rightSorted);  // 两个子链表必然有序,合并两个有序的链表}/*** 获取以head为头节点的链表中间节点* 如果链表长度为奇数,返回最中间的那个节点* 如果链表长度为偶数,返回中间靠左的那个节点*/ListNode* getMid(ListNode* head){if(!head)return head;   ListNode* slow = head, *fast = head->next;          // 快慢指针,慢指针初始为while(fast != nullptr && fast->next != nullptr)     {fast = fast->next->next;    // 快指针每次移动两个节点slow = slow->next;          // 慢指针每次移动一个节点}return slow;    // 快指针到达链表尾部时,慢指针即指向中间节点}/*** 合并两个有序链表list1和list2*/ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {ListNode* dummy = new ListNode();   // 伪头节点,用于定位合并链表的头节点ListNode* node = dummy;             // 新链表当前的最后一个节点,初始为伪头节点// 直到两个链表都遍历完了,合并结束while(list1 != nullptr || list2 != nullptr){int val1 = list1 == nullptr ? 50001 : list1 -> val;   // 如果链表1已经遍历完,val1取最大值,保证链表2的节点被选择到       int val2 = list2 == nullptr ? 50001 : list2 -> val;   // 如果链表2已经遍历完,val2取最大值,保证链表1的节点被选择到 if(val1 < val2){// 链表1的节点值更小,加入到合并链表,并更新链表1指向的节点node -> next = list1;list1 = list1 -> next;}else{// 链表2的节点值更小,加入到合并链表,并更新链表2指向的节点node -> next = list2;list2 = list2 -> next;}node = node -> next;    // 更新合并链表当前的最后一个节点指向}return dummy -> next;       // 伪头节点的下一个节点即为合并链表的头节点}
};

合并两个有序链表

class Solution {
public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {if (l1 == nullptr) {return l2;} else if (l2 == nullptr) {return l1;} else if (l1->val < l2->val) {l1->next = mergeTwoLists(l1->next, l2);return l1;} else {l2->next = mergeTwoLists(l1, l2->next);return l2;}}
};

是否含有子链表

struct Link {int data;struct Link *next;
};
#include <stdio.h>
void subList(Link *a,Link *b) {struct Link *la = a ,*pA = la->next, *pB = b->next;while (pA&&pB) {if (pA->data==pB->data) {//相等继续对比下一个pA = pA->next;pB = pB->next;}else {pB = b->next;//pb从头开始与pa对比la = la->next;//失败一次,la往后移动一个节点pA = la->next;//pa从下一个节点又开始}}pB == NULL ? printf("true") : printf("false");//如果pb为NULL,说明已比对完成
}
int main() {struct Link *a, *b;Link *createLink(int);a = createLink(0);b = createLink(0);subList(a,b);return 0;
}

合并链表

    /*有两个循环单链表,链表头指针分别为h1和h2,编写一个函数将链表h2连接到h1之后,要求连接后的链表仍保持循环链表形式。*/struct Link {int data;struct Link *next;};void linkTwoLists(Link *h1,Link *h2) {struct Link *p1 = h1->next, *p2 = h2->next;while (p1->next != h1) p1 = p1->next;//这里要去判断p1->next是否等于h1,进而判断出是否到达尾结点p1->next = p2;while (p2->next != h2) p2 = p2->next;p2->next = h1;free(h2);//释放h2}int main() {struct Link *h1, *h2,*p;Link *createSinLoopLink();h1 = createSinLoopLink();h2 = createSinLoopLink();linkTwoLists(h1,h2);p = h1->next;while (p!=h1) {printf("%d ",p->data);p = p->next;}return 0;}

输出链表倒数第K个结点

ListNode *findKthTail(ListNode *pHead, int K) {ListNode *p1(pHead), *p2(pHead);for(int i=0; i<K; ++i){p1 = p1-> next;if(!p1){return nullptr;}}while(p1){p1 = p1-> next;p2 = p2-> next;}return p2;
}

两数相加

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* first = new ListNode(0);  // 哑结点ListNode* last = first;int carry = 0;while(l1 or l2 or carry){// 相加int bitsum = 0;if(l1){bitsum += l1->val;l1 = l1->next;}if(l2){bitsum += l2->val;l2 = l2->next;}if(carry){bitsum += carry;}// 结果int digit = bitsum % 10;carry = bitsum / 10;// 链表存储ListNode* node = new ListNode(digit);last->next = node;last = node;}last = first->next;delete first;return last;}
};

计算循环链表中环的长度

int getLoopLength(ListNode *pHead) {ListNode *fast(pHead), *slow(pHead);while (fast && fast->next) {fast = fast->next->next;slow = slow->next;if (fast == slow) {break;}}if (!fast || !fast->next) return -1;int length = 1;  // 从1开始while (slow->next != fast) {slow = slow->next;length++;}return length;
}

先序遍历

void preorder(TreeNode *root, vector<int> &res) {if (root == nullptr) {return;}res.push_back(root->val);preorder(root->left, res);preorder(root->right, res);}vector<int> preorderTraversal(TreeNode *root) {vector<int> res;preorder(root, res);return res;}

层序遍历

vector<vector<int>> levelOrder(TreeNode* root) {vector <vector <int>> ret;if (!root) {return ret;}queue <TreeNode*> q;q.push(root);while (!q.empty()) {int currentLevelSize = q.size();ret.push_back(vector <int> ());for (int i = 1; i <= currentLevelSize; ++i) {auto node = q.front(); q.pop();ret.back().push_back(node->val);if (node->left) q.push(node->left);if (node->right) q.push(node->right);}}return ret;

完全二叉树的节点个数

int countNodes(TreeNode* root) {if(!root)return 0;return countNodes(root -> left) + countNodes(root -> right) + 1;}

每个人戴不同帽子的方案数

using LL = long long;class Solution {
private:static constexpr int mod = 1000000007;public:int numberWays(vector<vector<int>>& hats) {int n = hats.size();// 找到帽子编号的最大值,这样我们只需要求出 $f[maxhatid][2^n - 1]$ 作为答案int maxHatId = 0;for (int i = 0; i < n; ++i) {for (int h: hats[i]) {maxHatId = max(maxHatId, h);}}// 对于每一顶帽子 h,hatToPerson[h] 中存储了喜欢这顶帽子的所有人,方便进行动态规划vector<vector<int>> hatToPerson(maxHatId + 1);for (int i = 0; i < n; ++i) {for (int h: hats[i]) {hatToPerson[h].push_back(i);}}vector<vector<int>> f(maxHatId + 1, vector<int>(1 << n));// 边界条件f[0][0] = 1;for (int i = 1; i <= maxHatId; ++i) {for (int mask = 0; mask < (1 << n); ++mask) {f[i][mask] = f[i - 1][mask];for (int j: hatToPerson[i]) {if (mask & (1 << j)) {f[i][mask] += f[i - 1][mask ^ (1 << j)];f[i][mask] %= mod;}}}}return f[maxHatId][(1 << n) - 1];}
};

同构字符串

bool isIsomorphic(string s, string t) {if(s.size() != t.size())return false;unordered_map<char,char> s1;unordered_map<char,char> s2;for(int i = 0;i < s.size();i ++){char x = s[i],y = t[i];if((s1.count(x) && s1[x] != y) || (s2.count(y) && s2[y] != x))return false;s1[x] = y;s2[y] = x;}return true;}

因篇幅受限,如需查看完整版内容,请点击“上述的link”.

相关文章:

【2025小白版】计算复试/保研机试模板(个人总结非GPT生成)附代码

一、编程语言选择 很多高校在机试中对编程语言都有明确规定&#xff0c;像复旦大学计算机学院就说明可选择 C、C 或 Java 语言答题&#xff0c;还支持 C11&#xff08;gcc5.4&#xff09;&#xff0c;C14&#xff08;g5.4&#xff09;&#xff0c;Java (openjdk1.8&#xff09…...

android11使用gpio口控制led状态灯

目录 一、简介 二、解决方法 A、底层驱动 B、上层调用 C、验证 一、简介 1、需求&#xff1a;这里是用2个gpio口来控制LED灯&#xff0c;开机时默认亮蓝灯&#xff0c;按开机键&#xff0c;休眠亮红灯&#xff0c;唤醒亮蓝灯。 原理图&#xff1a; 这里由于主板上电阻R63…...

基于Asp.net的高校一卡通管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

C++蓝桥杯基础篇(七)

片头 嗨~小伙伴们&#xff0c;大家好&#xff01;今天我们来一起学习蓝桥杯基础篇&#xff08;七&#xff09;&#xff0c;学习相关字符串的知识&#xff0c;准备好了吗&#xff1f;咱们开始咯&#xff01; 一、字符与整数的联系——ASCII码 每个常用字符都对应一个-128~127的…...

8.路由原理专题

路由器数据转发原理&#xff0c;路由表、FIB、快速转发表的关系 路由的控制平面与转发平面 控制平面:负责路由计算,维护;路由协议运行在控制平面 转发平面:进行数据包的封装,报文转发,路由表,FIB表,快速转发表等 控制平面与转发平面相互独立又协同工作 路由器检查数据包的目…...

jQuery UI 简介

jQuery UI 简介 引言 随着互联网技术的飞速发展,前端开发已经成为网站和应用程序建设的重要组成部分。jQuery UI 是一个基于 jQuery 的用户界面库,它为开发者提供了丰富的交互组件和视觉效果,使得创建具有吸引力和互动性的网页变得更加简单。本文将为您详细介绍 jQuery UI…...

Web服务器配置

配置虚拟主机 通过虚拟主机&#xff0c;可以实现用自定义的域名来访问&#xff0c;并且可以为不同的域名指定不同的站点目录。 配置IP地址和域名的映射关系 申请真实的域名需要一定的费用&#xff0c;为了方便开发&#xff0c;可以通过修改hosts文件来实现将任意域名解析到本…...

LINUX网络基础 [一] - 初识网络,理解网络协议

目录 前言 一. 计算机网络背景 1.1 发展历程 1.1.1 独立模式 1.1.2 网络互联 1.1.3 局域网LAN 1.1.4 广域网WAN 1.2 总结 二. "协议" 2.1 什么是协议 2.2 网络协议的理解 2.3 网络协议的分层结构 三. OSI七层模型&#xff08;理论标准&#xff09; …...

定制化开发的WooCommerce独立站商城更安全

定制化开发的WooCommerce独立站商城在安全性、交易风险控制以及整体用户体验方面有显著优势。以下是定制化开发在这些方面的具体表现&#xff1a; 1. 安全性更高 定制化开发允许开发者从底层架构开始设计和优化&#xff0c;确保网站的安全性。以下是具体表现&#xff1a; (1…...

Xcode 运行真机失败

错误提示&#xff1a; iPhone xxx is not available because it is unpaired. Pair with the device in the Xcode Devices Window, and respond to any pairing prompts on the device. 处理方法&#xff1a; 把Xcode关闭&#xff0c;手机断开数据线&#xff0c;打开终端&…...

【FFmpeg之如何新增一个硬件解码器】

FFmpeg之如何新增一个硬件解码器 前言一、config配置二、解码器定义1.目录结构2.数据结构 三、解码流程1、初始化mediacodec_decode_init2、帧接收mediacodec_receive_frame2.1 解码上下文MediaCodecH264DecContext2.2 发包AVPacket到解码器 -- ff_mediacodec_dec_send2.3 接收…...

P3385 【模板】负环

P3385 【模板】负环 - 洛谷 题目描述 给定一个 n 个点的有向图&#xff0c;请求出图中是否存在从顶点 1 出发能到达的负环。 负环的定义是&#xff1a;一条边权之和为负数的回路。 输入格式 本题单测试点有多组测试数据。 输入的第一行是一个整数 T&#xff0c;表示测试数…...

破解透明物体抓取难题,地瓜机器人CASIA 推出几何和语义融合的单目抓取方案|ICRA 2025

概述 近日&#xff0c;全球机器人领域顶会ICRA 2025&#xff08;IEEE机器人与自动化国际会议&#xff09;公布论文录用结果&#xff0c;地瓜机器人主导研发的DOSOD开放词汇目标检测算法与MODEST单目透明物体抓取算法成功入选。前者通过动态语义理解框架提升复杂场景识别准确率…...

深度学习编译器(整理某survey)

一、深度学习框架 TensorFlow PyTorch MXNet ONNX:定义了一个统一的表示&#xff0c;DL models的格式方便不同框架之间的转换模型 二、深度学习硬件 通用硬件&#xff08;CPU、GPU&#xff09;&#xff1a;通过硬件和软件优化支持深度学习工作负载 GPU:通过多核架构实现高…...

【计算机网络入门】应用层

目录 1.网络应用模型 1.1 C/S模型&#xff08;客户端服务器模型&#xff09; 1.2 P2P模型&#xff08;对等模型&#xff09; 2. DNS系统 2.1 域名 2.2 域名解析流程 3. FTP文件传输协议 4. 电子邮件系统 4.1 SMTP协议 4.2 pop3协议 4.3 IMAP协议 4.4 基于万维网的电…...

@PostConstruct注解的作用

PostConstruct 注解功能是在一个类的所有依赖被注入完成后&#xff0c;才会被执行的方法。这种方法通常用于类的初始化&#xff0c;初始化过程中可以进行一些资源加载、连接建立、或其他必要的配置工作。PostConstruct 方法仅被调用一次&#xff0c;通常修饰符是public或者prot…...

HTML + CSS 题目

1.说说你对盒子模型的理解? 一、是什么 对一个文档进行布局的时候&#xff0c;浏览器渲染引擎会根据标准之一的css基础盒模型&#xff0c;将所有元素表示为一个个矩形的盒子。 一个盒子由四个部分组成: content&#xff0c;padding&#xff0c;border&#xff0c;margin 下…...

通过多线程获取RV1126的AAC码流

目录 一RV1126多线程获取音频编码AAC码流的流程 1.1AI模块的初始化并使能 1.2AENC模块的初始化 ​​​​​​​1.3绑定AI模块和AENC模块 ​​​​​​​1.4多线程获取每一帧AAC码流 ​​​​​​​1.5每个AAC码流添加ADTSHeader头部 ​​​​​​​1.6写入具体每一帧AAC的…...

sql sqlserver的进程资源查看,杀掉多余进程

主要是由三个表组成 sys.sysprocesses、sys.dm_exec_sessions、sys.dm_exec_requests 后面两个在2008版本后使用&#xff0c;主要使用sys.dm_exec_sessions SELECT spid AS 会话ID, -- 进程&#xff08;会话&#xff09;的ID blocked AS 被阻塞的会话…...

自然语言处理:朴素贝叶斯

介绍 大家好&#xff0c;博主又来和大家分享自然语言处理领域的知识了。按照博主的分享规划&#xff0c;本次分享的核心主题本应是自然语言处理中的文本分类。然而&#xff0c;在对分享内容进行细致梳理时&#xff0c;我察觉到其中包含几个至关重要的知识点&#xff0c;即朴素…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...