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

(CQUPT 的某数据结构homework)

CQUPT 的某数据结构homework

  • 基于线性表的图书信息管理
    • 基于栈的算术表达式求值
    • 基于字符串模式匹配算法的病毒感染检测问题
  • 基于哈夫曼树的数据压缩算法
  • 基于二叉树的表达式求值算法
  • 基于 Dijsktra 算法的最短路
  • 基于广度优先搜索的六度空间
  • 排序算法的实现与分析

基于线性表的图书信息管理

首先,因为我们要输入输出汉语,所以需要更改编码成为utf-8
我使用的是devcpp
所以其他版本编译器更改编码的就请自己去查询更改方式。
工具:
编译选项:
编译时加入以下命令,打勾,下面粘上此代码
-std=c++11 -finput-charset=utf-8

/*
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
typedef  pair<int,int> pi ;
#define if1(x) for(int i =1 ;i<=x;i++)
#define if0(x) for(int i = 0;i<x;i++)
#define jf0(x) for(int j = 0;j<x;j++)
#define jf1(x) for(int j = 1;j<=x;j++)
struct node_book
{string name_book;string  id_book;float price_book;//int myid;};
unordered_map<string ,int>mmp;//去重用
list<node_book>  books;
vector<node_book>  high_books;
double evrage;
int books_num,idx;
void output(){for(auto j:books){cout<<j.id_book<<" "<<j.name_book<<" ";printf("%.2f\n",j.price_book);}
}
void add(string id,float price, string name){node_book new_book;new_book.id_book = id;new_book.name_book = name;new_book.price_book = price;books.push_back(new_book);books_num++;evrage+= price;
}
void init(){books_num = 0;float price;string name,id;while(1){cin>>id>>name>>price;if(id=="0"&&name=="0"&&price==0)break;add(id,price,name);mmp[id]++;// evrage += price;}
}
void func1(){init();cout<<books_num<<endl;output();
}
void func2(){init();evrage /= books_num;for(auto& j:books){float te = j.price_book;if(te < evrage)  j.price_book*=1.2;else   j.price_book*=1.1;}printf("%.2f\n",evrage);cout<<books_num<<endl;output();
}
void func3(){init();high_books.clear();high_books.push_back(*books.begin());float high_price = high_books[0].price_book;for(auto j:books){if(j.price_book>high_price){high_books.clear();high_books.push_back(j);high_price = j.price_book;}else if(high_price==j.price_book){high_books.push_back(j);}}cout<<high_books.size()<<endl;for(auto j: high_books){cout<<j.id_book<<" "<<j.name_book<<" ";printf("%.02f\n",j.price_book);}
}
void func4(){init();float price;string name,id;int place,idx = 1;cin>>place;cin>>id>>name>>price;node_book new_book;new_book.id_book = id;new_book.name_book = name;new_book.price_book = price;list<node_book>::iterator pos ;pos = books.begin();for(auto j:books){idx++;pos++;if(idx==place){books.insert(pos,new_book);books_num++;cout<<books_num<<endl;output();return;}}cout<<"抱歉,入库位置非法!\n";}
void func5(){init();float price;string name,id;int place,idx = 1;cin>>place;list<node_book>::iterator pos ;pos = books.begin();for(auto j:books){idx++;pos++;if(idx==place){books.erase(pos);books_num--;}}cout<<books_num<<endl;output();
}
void func6(){init();int place;list<node_book>::iterator pos ;vector<list<node_book>::iterator> dela;pos = books.begin();for(auto j:books){//cout<<mmp[j.id_book]<<endl;if(mmp[j.id_book]>1){mmp[j.id_book]--;dela.push_back(pos);books_num--;}pos++;}for(auto it:dela){books.erase(it);}cout<<books_num<<endl;output();
}
void tishi(){printf("\n输入1测试:基于顺序(链式)存储结构的图书信息表的创建和输出\n");cout<<"输入2测试:基于顺序(链式)存储结构的图书信息表的修改\n";cout<<"输入3测试:基于顺序(链式)存储结构的图书信息表的最贵图书的查找\n";cout<<"输入4测试:基于顺序(链式)存储结构的图书信息表的新图书的入库\n";cout<<"输入5测试:基于顺序(链式)存储结构的图书信息表的旧图书的出库\n";cout<<"输入6测试:基于顺序(链式)存储结构的图书信息表的图书去重\n";cout<<"输入-1,退出程序\n";
}
int main(){int op =1;while(op!=0){tishi();cin>>op;if(op== 1)func1();else if(op==2)func2();else if(op==3)func3();else if(op==4)func4();else if(op==5)func5();else if(op==6)func6();books.clear();}return 0;
}

基于栈的算术表达式求值

普通应用即可

#include<bits/stdc++.h>
using namespace std;
#define MAXSIZE 100
#define N 10
string S;
//运算符栈 
unordered_map<char,int>mmp;
void init0(){mmp['('] = mmp[')']=3;mmp['*'] = mmp['/'] = 2;mmp['+'] = mmp['-'] = 1;
}stack<char> sta_op;
stack<int> sta_num;
int verify(char ch)
{//cout<<ch<<endl;if(ch=='+')return 0;else if(ch=='-')return 1;else if(ch=='*')return 2;else if(ch=='/')return 3;else if(ch=='(')return 4;else if(ch==')')return 5;else{return 100;}}
void push_num(int& idx){int j = idx;int temp = 0;while(S[j]>='0'&&S[j]<='9'){temp*=10;temp+=S[j]-'0';j++;}sta_num.push(temp);idx = j-1;
}
int judge(int a,char e,int b)
{//cout<<e<<endl;if(e=='+')return a+b;else if(e=='-')return a-b;else if(e=='*')return a*b;else if(e=='/')return a/b;else{cout<<"error!"<<endl;return -1;}}
void func1(int& idx){char ch = S[idx];if(ch=='('||ch=='+'||ch=='-')sta_op.push(ch);//of course +-不需要考虑运算顺序else if(ch == '*'||ch=='/'){if(S[idx+1]>='0'&&S[idx+1]<='9'){//*/在后面跟上的是数字的情况下,一定是可以直接进行运算的//那么不妨在这种情况下面直接开算int j = idx+1;int temp = 0;while(S[j]>='0'&&S[j]<='9'){temp*=10;temp+=S[j]-'0';j++;}sta_num.push(temp);idx = j-1;//int la = sta_num.top();sta_num.pop();int pre = sta_num.top();sta_num.pop();int ans = judge(pre,ch,la);sta_num.push(ans);}else{sta_op.push(ch);//只能等后面在来运算辣//就是等下一个左括号运算完成并出栈的时候来运算此符号}}else if(ch==')'){while(sta_op.top()!='('){int la = sta_num.top();sta_num.pop();int pre = sta_num.top();sta_num.pop();int ans = judge(pre,sta_op.top(),la);sta_op.pop();sta_num.push(ans);}sta_op.pop();if(sta_op.top()=='*'||sta_op.top()=='/'){////这个时候就要运算89行处的*/法辣int la = sta_num.top();sta_num.pop();int pre = sta_num.top();sta_num.pop();int ans = judge(pre,sta_op.top(),la);sta_op.pop();sta_num.push(ans);}}}
int func(){cin>>S;if(S=="=")return 0;for(int i=0;S[i]!='\0';i++){if(S[i]>='0'&&S[i]<='9')push_num(i);elsefunc1(i);}//*/法已经算完辣,+-法没有顺序可言,但是为了减少代码量就不优化辣。while(!sta_op.empty()){int la = sta_num.top();sta_num.pop();int pre = sta_num.top();sta_num.pop();int ans = judge(pre,sta_op.top(),la);sta_op.pop();sta_num.push(ans);} cout<<sta_num.top()<<endl;sta_num.pop();return 1;
}
int main()
{int ti=1;while(ti){cout<<"\n请输入中缀表达式的算数表达式\n仅输入一个 = 时结束程序\n";if(!func())break;}return 0;
}

基于字符串模式匹配算法的病毒感染检测问题

kmp即可

#include<bits/stdc++.h>
using namespace std;
#define ll long longtypedef  pair<int,int> pi ;
#define if1(x) for(int i =1 ;i<=x;i++)
#define if0(x) for(int i = 0;i<x;i++)
#define jf0(x) for(int j = 0;j<x;j++)
#define jf1(x) for(int j = 1;j<=x;j++)
const int mod = 1e9+7;
const int inf = 0x3f3f3f3f;
const int N = 1e5 + 10, M = 1e6 + 10;
char p[N], s[M];
int n, m;
int ne[N];void tishi(){cout<<"请输入病毒的ONA序列和人的NDNA序列,用空格隔开\n";cout<<"当输入的两个DNA序列为 0 0 时退出程序!\n";
}
bool solve(){string x,y;cin>>x>>y;n = y.size();m = x.size();if0(n){s[i+1]= y[i];}if0(m) p[i+1] = x[i];if(x=="0"&&y=="0")return 0;memset(ne,0,sizeof(ne));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 = 0, j = -1; i <= n; i ++ ){while (j && s[i] != p[j + 1]) j = ne[j];if (s[i] == p[j + 1]) j ++ ;if(j==m){cout<<"YES\n";return 1;}if (j == m){j = ne[j];// 匹配成功后的逻辑}
}
cout<<"NO\n";
return 1;}
int main(){int t=1;while (t){tishi();if(!solve()) {break;}}// getchar();return 0;
}

基于哈夫曼树的数据压缩算法

这个还是比较有趣,可以自己试试

/*
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long longtypedef  pair<int,int> pi ;
#define if1(x) for(int i =1 ;i<=x;i++)
#define if0(x) for(int i = 0;i<x;i++)
#define jf0(x) for(int j = 0;j<x;j++)
#define jf1(x) for(int j = 1;j<=x;j++)
const int mod = 1e9+7;
const int inf = 0x3f3f3f3f;
string s;
string ans[1000];
unordered_map<char,int> mmp;
vector<tuple<int,int,int,int>>tre;//重,fa,l,r
bool cmp(pair<char,int> a,pair<char,int> b)
{return a.first>b.first;
}
void dfs(int x,string temp){if(temp!="\0")ans[x] =temp ;int w1,w2,f1,f2,l1,l2,r1,r2,id1,id2;auto te1 = tre[x];tie(w1,f1,l1,r1) = te1;if(l1!=-1)dfs(l1,temp+'0');if(r1!=-1)dfs(r1,temp+'1');}
void solve(){int m,n,idx = 0;tre.clear();memset(ans,'\0',sizeof(ans));priority_queue<pi,vector<pi>,greater<pi>>mq;mmp.clear();for(auto j:s)mmp[j]++;vector<pair<int,int> > ss;for(auto j:mmp){ss.push_back({j.first,j.second});}sort(ss.begin(),ss.end());for(auto j:ss){char ch = j.first;printf("%c:%d ",ch,j.second);mq.push({j.second,idx++});//建树tre.push_back({j.second,-1,-1,-1});}cout<<endl;//建立合成节点的树while(mq.size()>1){auto t1 = mq.top();mq.pop();auto t2 = mq.top();mq.pop();int w1,w2,f1,f2,l1,l2,r1,r2,id1,id2;tie(w1,id1) = t1;tie(w2,id2)  =t2;mq.push({w1+w2,idx++});tre.push_back({w1+w2,-1,id1,id2});//以后要牢记tuple一般用于无修改的操作//不是说内容一旦过长就用tuple;auto te1 = tre[id1],te2 = tre[id2];tie(w1,f1,l1,r1) = te1;tie(w2,f2,l2,r2) = te2;tre[id1] = {w1,idx-1,l1,r1};tre[id2] = {w2,idx-1,l2,r2};}//输出树jf0(idx){int w1,w2,f1,f2,l1,l2,r1,r2,id1,id2;auto te1 = tre[j];tie(w1,f1,l1,r1) = te1;cout<<j+1<<" "<<w1<<" "<<f1+1<<" "<<l1+1<<" "<<r1+1<<endl;}//dfs编码树dfs(idx-1,"\0");if0(ss.size()){char ch = ss[i].first;cout<<ch<<":"<<ans[i]<<" ";}cout<<endl;string res;if0(ss.size()){jf0(ss[i].second){res+=ans[i];}}cout<<res<<endl;//解码,感觉会比较复杂//奥!,dfs编码,那么我也应该是dfs解码,聪明like meint now = idx-1;for(auto j:res){int w1,w2,f1,f2,l1,l2,r1,r2,id1,id2;auto te1 = tre[now];tie(w1,f1,l1,r1) = te1;if(l1==-1){//走到尽头辣,我们就可以输出当前节点的val,并且回溯到根节点char ch = ss[now].first;cout<<ch;now = idx-1;auto te1 = tre[now];tie(w1,f1,l1,r1) = te1;}if(j=='0'){//向左边走、now = l1;}else now = r1;}char ch = ss[now].first;cout<<ch;now = idx-1;cout<<endl;
}
int main(){//ios::sync_with_stdio(false);//cin.tie(nullptr);//cout.tie(nullptr); while (1){cin>>s;if(s=="0")break;solve();}// getchar();return 0;
}```

基于二叉树的表达式求值算法

最傻逼的作业

#include<bits/stdc++.h>
using namespace std;
#define MAXSIZE 100
#define N 10
string S;
//运算符栈 
unordered_map<char,int>mmp;
void init0(){mmp['('] = mmp[')']=3;mmp['*'] = mmp['/'] = 2;mmp['+'] = mmp['-'] = 1;
}
struct node{bool isnum;int val;char op;node* L;node* R;
};
stack<char> sta_op;
stack<node*> sta_num;
int verify(char ch)
{//cout<<ch<<endl;if(ch=='+')return 0;else if(ch=='-')return 1;else if(ch=='*')return 2;else if(ch=='/')return 3;else if(ch=='(')return 4;else if(ch==')')return 5;else{return 100;}}
void push_num(int& idx){int j = idx;int temp = 0;while(S[j]>='0'&&S[j]<='9'){temp*=10;temp+=S[j]-'0';j++;}node* te = new(node);te->isnum=1;te->val=temp;sta_num.push(te);idx = j-1;
}
int judge(int a,char e,int b)
{//cout<<e<<endl;if(e=='+')return a+b;else if(e=='-')return a-b;else if(e=='*')return a*b;else if(e=='/')return a/b;else{cout<<"error!"<<endl;return -1;}}
void func1(int& idx){char ch = S[idx];if(ch=='('||ch=='+'||ch=='-')sta_op.push(ch);//of course +-不需要考虑运算顺序else if(ch == '*'||ch=='/'){if(S[idx+1]>='0'&&S[idx+1]<='9'){//*/在后面跟上的是数字的情况下,一定是可以直接进行运算的//那么不妨在这种情况下面直接开算int j = idx+1;int temp = 0;while(S[j]>='0'&&S[j]<='9'){temp*=10;temp+=S[j]-'0';j++;}node* te = new(node);te->isnum=1;te->val=temp;sta_num.push(te);idx = j-1;//node* re = sta_num.top();sta_num.pop();node* la = sta_num.top();sta_num.pop();node* fa =new(node);fa->isnum=0;fa->op = ch;fa->L=la;fa->R = re;sta_num.push(fa);}else{sta_op.push(ch);//只能等后面在来运算辣//就是等下一个左括号运算完成并出栈的时候来运算此符号}}else if(ch==')'){while(sta_op.top()!='('){node* re = sta_num.top();sta_num.pop();node* la = sta_num.top();sta_num.pop();node* fa =new(node);fa->isnum=0;fa->op = sta_op.top();fa->L=la;fa->R = re;sta_num.push(fa);sta_op.pop();}sta_op.pop();if(sta_op.top()=='*'||sta_op.top()=='/'){////这个时候就要运算109行处的*/法辣node* re = sta_num.top();sta_num.pop();node* la = sta_num.top();sta_num.pop();node* fa =new(node);fa->isnum=0;fa->op = sta_op.top();fa->L=la;fa->R = re;sta_num.push(fa);sta_op.pop();}}}
int dfs(node* root){if(root->isnum) return root->val;int l = dfs(root->L),r=dfs(root->R);return judge(l,root->op,r);
}
int func(){cin>>S;if(S=="=")return 0;for(int i=0;S[i]!='\0';i++){if(S[i]>='0'&&S[i]<='9')push_num(i);elsefunc1(i);}//*/法已经算完辣,+-法没有顺序可言,但是为了减少代码量就不优化辣。while(!sta_op.empty()){node* re = sta_num.top();sta_num.pop();node* la = sta_num.top();sta_num.pop();node* fa =new(node);fa->isnum=0;fa->op = sta_op.top();fa->L=la;fa->R = re;sta_num.push(fa);sta_op.pop();} node* root = sta_num.top();cout<<dfs(root)<<endl;sta_num.pop();return 1;
}
int main()
{int ti=1;while(ti){cout<<"\n请输入中缀表达式的算数表达式\n仅输入一个 = 时结束程序\n";if(!func())break;}return 0;
}

基于 Dijsktra 算法的最短路

/*
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long longtypedef  pair<int,int> pi ;
#define if1(x) for(int i =1 ;i<=x;i++)
#define if0(x) for(int i = 0;i<x;i++)
#define jf0(x) for(int j = 0;j<x;j++)
#define jf1(x) for(int j = 1;j<=x;j++)
const int mod = 1e9+7;
const int inf = 0x3f3f3f3f;
int e[200],h[200],ne[200],w[200],idx,idx1;
unordered_map<string ,int> mmp;
string xiufu[200];
int dist[200];
int pre[200];
int m,n,c;
void add(int a,int b,int c){e[idx] = b;w[idx] = c;ne[idx] = h[a];h[a] = idx++;}void dijsktra(int x){memset(dist,inf,sizeof(dist));priority_queue<pi> mq;mq.push(make_pair(0,x));dist[x]=0;while(!mq.empty()){int j = mq.top().second;int distance = mq.top().first;mq.pop();for(int p = h[j];~p;p = ne[p]){int q = e[p];//q是终点if(distance+w[p]<dist[q]){dist[q] = distance+w[p];mq.push(make_pair(dist[q],q));pre[q] = j;}}}
}
void solve(){string s;string a,b;idx1 = 1;idx = 0;mmp.clear();if0(n)cin>>s;memset(h,-1,sizeof(h));if0(m){cin>>a>>b>>c;if(mmp[a]==0){xiufu[idx1] = a;mmp[a] = idx1++;}if(mmp[b]==0){xiufu[idx1] = b;mmp[b] = idx1++;}add(mmp[a],mmp[b],c);}cin>>a>>b;memset(pre,-1,sizeof(pre));dijsktra(mmp[a]);stack<string>wedg;int en = mmp[b];while(en!=-1){wedg.push(xiufu[en]);en = pre[en];}cout<<dist[mmp[b]]<<endl;while(!wedg.empty()){cout<<wedg.top()<<" ";wedg.pop();}cout<<endl;}
int main(){//ios::sync_with_stdio(false);//cin.tie(nullptr);//cout.tie(nullptr); while(1){cin>>n>>m;if(m==0&&n==0)break;solve();}return 0;
}

基于广度优先搜索的六度空间

/*
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long longtypedef  pair<int,int> pi ;
#define if1(x) for(int i =1 ;i<=x;i++)
#define if0(x) for(int i = 0;i<x;i++)
#define jf0(x) for(int j = 0;j<x;j++)
#define jf1(x) for(int j = 1;j<=x;j++)
const int mod = 1e9+7;
const int inf = 0x3f3f3f3f;
vector<int> wedg[10005];
bool marked[10005];
int frend;
int m,n;
queue<pi>mq;
void bfs(){while(!mq.empty()){auto j = mq.front();mq.pop();if(marked[j.first]||j.second>6)continue;marked[j.first]=1;frend++;for(auto t:wedg[j.first]){if(!marked[t])mq.push(make_pair(t,j.second+1));}}}
void solve(){if0(m){int a,b;cin>>a>>b;wedg[a].push_back(b);wedg[b].push_back(a);}if1(n){double ans;memset(marked,0,sizeof(marked));frend = 0;mq.push({i,0});bfs();ans = 1.*(frend)/n;printf("%d:%.2f%\n",i,ans*100);}if1(n)wedg[i].clear();
}
int main(){while(1){cin>>n>>m;if(n==0&&m==0)return 0;solve();}// getchar();return 0;
}

排序算法的实现与分析

归并法

/*
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long longtypedef  pair<int,int> pi ;
#define if1(x) for(int i =1 ;i<=x;i++)
#define if0(x) for(int i = 0;i<x;i++)
#define jf0(x) for(int j = 0;j<x;j++)
#define jf1(x) for(int j = 1;j<=x;j++)
const int mod = 1e9+7;
const int inf = 0x3f3f3f3f;
struct node{string name;double grade;
};
bool cmp(node a,node b){return a.grade>b.grade;
}
void hebin(vector<node>& da,int l,int r,int mid){node* temp = new node[r-l+2];int i = l,j = mid+1,k=0;while(i<=mid&&j<=r){if(cmp(da[i],da[j])){temp[k++] = da[i++];}else{temp[k++] = da[j++];}}while(i<=mid)temp[k++] = da[i++];while(j<=r) temp[k++] = da[j++];k=0;for(int i = l; i<=r;)da[i++] = temp[k++];delete []temp;
}
void guibin(int l,int r,vector<node>& da){if(l<r){int mid = l+r>>1;guibin(l,mid,da);guibin(mid+1,r,da);hebin(da,l,r,mid);}
}
int main(){string s;double grade;vector<node> date;while(1){cin>>s>>grade;if(s=="0"&&grade==0)break;node te ;te.grade = grade;te.name = s;date.push_back(te);}guibin(0,date.size()-1,date);if0(date.size()){cout<<date[i].name<<" ";printf("%.2f\n",date[i].grade);}return 0;
}

相关文章:

(CQUPT 的某数据结构homework)

CQUPT 的某数据结构homework 基于线性表的图书信息管理基于栈的算术表达式求值基于字符串模式匹配算法的病毒感染检测问题 基于哈夫曼树的数据压缩算法基于二叉树的表达式求值算法基于 Dijsktra 算法的最短路基于广度优先搜索的六度空间排序算法的实现与分析 基于线性表的图书信…...

Android页面周期、页面跳转

1.什么是Activity&#xff1f; Activity是Android的四大组件之一&#xff0c;它是一种可以包含用户界面的组件&#xff0c;主要用于和用户进行交互。Activity用于显示用户界面&#xff0c;用户通过Activity交互完成相关操作&#xff0c;一个APP允许有多个Activity。 2.Activi…...

腾讯云轻量应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像介绍

腾讯云轻量应用服务器镜像类型分为应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像&#xff0c;腾讯云百科txybk.com来详细说下不同镜像类型说明和详细介绍&#xff1a; 轻量应用服务器镜像类型说明 腾讯云轻量应用服务器 应用镜像&#xff1a;独有的应用镜像除了包…...

YOLOv8芒果独家首发 | 改进新主干:改进版目标检测新范式骨干PPHGNetv2,百度出品,提升YOLOv8检测能力

💡本篇内容:YOLOv8改进新主干:目标检测新范式骨干PPHGNetv2改进版,百度出品,提升YOLOv8检测能力 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,YOLOv8专属,充分结合YOLOv8和 PPHGNetv…...

工作测试点

智能硬件的兼容性测试 通常涉及以下几个方面&#xff1a; 硬件兼容性测试&#xff1a;测试智能硬件是否与不同类型的设备&#xff08;如电脑、手机、平板电脑等&#xff09;硬件兼容。这包括测试设备的接口类型&#xff08;如USB、HDMI、Bluetooth等&#xff09;是否能够正确连…...

智慧医院—互联网医院系统带你体验数字化时代

智慧医疗作为当今医疗领域的新热点&#xff0c;也将在未来中得到充分展现。包括智慧医院、远程医疗、医疗大数据等多个方面&#xff0c;这些智慧医疗新产物和服务将改变传统的医疗模式&#xff0c;提供更加高效、便捷的医疗服务。 1、远程医疗服务&#xff1a;智慧医疗为患者提…...

eclipse Occurrence

eclipse Occurrence Occurrence of initUi2_setData_99 Window->Preferences->General->Editors->Text Editors->Annotations->Occurrences 个人感觉最好用的颜色&#xff1b; 边线&#xff0c;正文都可以看得清楚...

浏览器自动化脚本 Selenium WebDriver(Java)常用 API 汇总

一、Selenium Webdriver 常用的API &#xff08;一&#xff09;引入依赖 <dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency>开始&am…...

学习笔记|两独立样本秩和检验|曼-惠特尼 U数据分布图|规范表达|《小白爱上SPSS》课程:SPSS第十二讲 | 两独立样本秩和检验如何做?

目录 学习目的软件版本原始文档两独立样本秩和检验一、实战案例二、统计策略三、SPSS操作1、正态性检验2、两样本秩和检验 四、结果解读疑问&#xff1a;曼-惠特尼 U数据分布图如何绘制&#xff1f; 五、规范报告1、规范表格2、规范文字 六、划重点 学习目的 SPSS第十二讲 | 两…...

【Python微信机器人】第三篇:使用ctypes调用进程函数和读取内存结构体

目录修整 目前的系列目录(后面会根据实际情况变动): 在windows11上编译python将python注入到其他进程并运行注入Python并使用ctypes主动调用进程内的函数和读取内存结构体使用汇编引擎调用进程内的任意函数利用beaengine反汇编引擎的c接口写一个pyd库&#xff0c;用于实现inl…...

easyExcel按模板填充数据,处理模板列表合并问题等,并导出为html,pdf,png等格式文件demo

1.工具类 /*** excle模板填充并转换html* * @param response 返回* @param order 主体内容* @param goods 配件列表* @param pro 项目列表* @throws IOException*/public static void moudleExcleToHtml(HttpServletResponse response, String moudleUrl, Object o…...

怎么开发小程序?微信小程序开发方式

小程序开发之所以受到欢迎&#xff0c;是因为相比于APP&#xff0c;小程序的开发成本更低。不需要下载和安装&#xff0c;用户可以直接在微信内使用&#xff0c;节省了开发和维护的成本。小程序的开发方式有很多种&#xff0c;常见的有&#xff1a;自己源码开发、模板编辑、购买…...

测试从外包到自研再到大厂,这5年鬼知道我是怎么过来的

18岁那年我背井离乡来到从来没有来过的郑州。在一所普通的二本院校里学网络工程。 很明显&#xff0c;在大学以前只会用电脑开关机打LOL的我恍然间只觉得自己来到了人间天堂&#xff0c;没有人管&#xff0c;也没有任何烦恼无忧无虑的过了三年大学生涯。 直到秋招的开始&…...

Stable Diffusion系列(二):ControlNet基础控件介绍

文章目录 线稿提取类Canny&#xff1a;边缘检测SoftEdge&#xff1a;软边缘检测Lineart&#xff1a;精细线稿提取Scribble/Sketch&#xff1a;涂鸦提取MLSD&#xff1a;建筑领域的线条提取 3D提取类Normal map&#xff1a;法线贴图Depth&#xff1a;深度计算Segmentation&#…...

sql server数据库跟踪——SQL Server Profiler解析

工具&#xff1a; SQL Server Profiler这个工具是SQL Server数据库自带的语句执行跟踪工具&#xff0c;常使用于分析软件修改数据库时所执行的语句&#xff0c;适合用来研究软件运行数据库的原理。 打开方式&#xff1a; 本机安装了SQL server的话&#xff0c;都是自带的。直接…...

多机多卡分布式训练

1. 环境搭建 分布式训练框架&#xff1a;acceleratedeepspeedpdsh(可有可无)基础环境&#xff1a;cuda、显卡驱动、pytorch 1.1 安装相关包 cuda安装&#xff1a;参考官网安装步骤 wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-…...

打字练习软件 Type Fu mac中文版技能介绍

Type Fu mac是一款打字练习和提高打字速度的应用程序。它旨在帮助用户通过练习键盘打字&#xff0c;提高打字准确性和速度。无论您是初学者还是想要提高打字技能的专业人士&#xff0c;Type Fu都是一个很好的选择&#xff01; Type Fu mac采用了一种互动&#xff0c;游戏化的方…...

我的云栖大会之旅:见证云计算创新的15年

云栖大会&#xff0c;曾经是一次不可思议的科技之旅&#xff0c;却如今已见证了我对云计算世界的15年关注和发展。第一次踏上云栖大会之旅&#xff0c;我记得是在2009年。那时的云计算还是一个新生事物&#xff0c;而云栖大会正是其中的奠基石。 我清楚地记得那个炎热的夏天&am…...

一个小技巧,显著提升大模型推理能力!加州大学提出MAF多反馈框架

作者 | 谢年年 最近&#xff0c;多篇文章《GPT-4的推理能力非常有限&#xff0c;有两篇论文为证》、《DeepMind&#xff1a;无法自我纠正推理&#xff0c;除非提前得知正确答案》指出大模型在推理任务中似乎没有自我改进的能力。即在无任何外部反馈的情况下无法通过自我纠正的形…...

测开 (Junit 单元测试框架)

目录 了解 Junit 引入相关依赖 1、Junit注解 Test BeforeEach、BeforeAll AfterEach && AfterAll 2、断言 1、Assertions - assertEquals 方法 2、Assertions - assertNotEquals 方法 3、Assertions - assertTrue && assertFalse方法 4、Assertions…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...