c++ primer中文版第五版作业第十七章

news/2024/7/27 11:02:06/文章来源:https://blog.csdn.net/fuluoyide312/article/details/136571779

仓库地址

文章目录

      • 17.1
      • 17.2
      • 17.3
      • 17.4
      • 17.5
      • 17.6
      • 17.7
      • 17.8
      • 17.9
      • 17.10
      • 17.11
      • 17.12
      • 17.13
      • 17.14
      • 17.15
      • 17.16
      • 17.17
      • 17.18
      • 17.19
      • 17.20
      • 17.21
      • 17.22
      • 17.23
      • 17.24
      • 17.25
      • 17.26
      • 17.27
      • 17.28
      • 17.29
      • 17.30
      • 17.31
      • 17.32
      • 17.33
      • 17.34
      • 17.35
      • 17.36
      • 17.37
      • 17.38
      • 17.39

17.1

tuple<int,int,int> it(10,20,30)

17.2

tuple<string,vector<string>,pair<string,int>> someval("hello",{"hi","hello"},{"hi",10})

17.3

TextQuery.h

#ifndef TEXT_QUERY_H
#define TEXT_QUERY_H
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <memory>
#include <fstream>
#include <tuple>
class TextQuery
{
public:using line_no=std::vector<std::string>::size_type;TextQuery(std::ifstream &);std::tuple<std::string,std::shared_ptr<std::set<std::vector<std::string>::size_type>>,std::shared_ptr<std::vector<std::string>>> query(const std::string &) const;
private:std::shared_ptr<std::vector<std::string>> file;std::map<std::string,std::shared_ptr<std::set<line_no>>> wm;
};
inline std::string make_plural(std::size_t count,const std::string &word,const std::string &ending)
{return (count>1)?word+ending:word;
}
std::ostream &print(std::ostream &,const std::tuple<std::string,std::shared_ptr<std::set<std::vector<std::string>::size_type>>,std::shared_ptr<std::vector<std::string>>> &);
#endif

TextQuery.cpp

#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
#include <set>
#include <string>
#include <memory>
#include "TextQuery.h"
using namespace std;
TextQuery::TextQuery(ifstream &infile):file(new vector<string>)
{string text;while(getline(infile,text)){file->push_back(text);size_t line_number=file->size()-1;istringstream line(text);string word;while(line>>word){shared_ptr<set<line_no>> &lines=wm[word];if(!lines)lines.reset(new set<line_no>);lines->insert(line_number);}}
}
std::tuple<std::string,std::shared_ptr<std::set<std::vector<std::string>::size_type>>,std::shared_ptr<std::vector<std::string>>> TextQuery::query(const string &sought) const
{static shared_ptr<set<line_no>> nodata(new set<line_no>);map<string,shared_ptr<set<line_no>>>::const_iterator map_it=wm.find(sought);if(map_it==wm.end())return tuple(sought,nodata,file);elsereturn tuple(sought,map_it->second,file);
}
std::ostream &print(std::ostream &os,const std::tuple<std::string,std::shared_ptr<std::set<std::vector<std::string>::size_type>>,std::shared_ptr<std::vector<std::string>>> &tp)
{os<<std::get<0>(tp)<<" occurs "<<std::get<1>(tp)->size()<<" "<<make_plural(std::get<1>(tp)->size(),"time","s")<<std::endl;for(auto num:*(get<1>(tp)))os<<"\t(line "<<num+1<<")"<<*(get<2>(tp)->begin()+num)<<std::endl;return os;
}

17-3.cpp

#include <iostream>
#include <fstream>
#include "TextQuery.h"
using namespace std;
void runQueries(ifstream &infile)
{TextQuery tq(infile);while(true){cout<<"enter word to look for, or q to quit:";string s;if(!(cin>>s)||s=="q")break;print(cout,tq.query(s))<<endl;}
}
int main(int argc,char *argv[])
{ifstream infile(argv[1]);runQueries(infile);return 0;
}

使用tuple更便捷。

17.4

17-4.cpp

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <tuple>
#include <algorithm>
#include <numeric>
#include "Sales_data.h"
using namespace std;
typedef tuple<vector<Sales_data>::size_type,vector<Sales_data>::const_iterator,vector<Sales_data>::const_iterator> matches;
vector<matches> findBook(const vector<vector<Sales_data>> &files,const string &book)
{vector<matches> ret;for(auto it=files.cbegin();it!=files.cend();++it){auto found=equal_range(it->cbegin(),it->cend(),book,compareIsbn);if(found.first!=found.second)ret.push_back(make_tuple(it-files.cbegin(),found.first,found.second));}return ret;
}
void reportResults(istream &in,ostream &os,vector<vector<Sales_data>> &files)
{string s;while(in>>s){auto trans=findBook(files,s);if(trans.empty()){cout<<s<<" not found in any stores"<<endl;continue;}for(auto const &store:trans){os<<"store "<<get<0>(store)<<" sales: "<<accumulate(get<1>(store),get<2>(store),Sales_data(s))<<endl;}}
}
int main(void)
{vector<vector<Sales_data>> files;Sales_data tmp;ifstream in;string basename="text",line;for(size_t index=0;index!=3;++index){in.open(basename+to_string(index));vector<Sales_data> file;while(in>>tmp)file.push_back(tmp);in.close();files.push_back(file);}reportResults(cin,cout,files);return 0;
}

17.5

#include <iostream>
#include <fstream>
#include <string>
#include <utility>
#include <vector>
#include <algorithm>
#include <numeric>
#include "Sales_data.h"
using namespace std;
typedef pair<vector<Sales_data>::size_type,pair<vector<Sales_data>::const_iterator,vector<Sales_data>::const_iterator>> matches;
vector<matches> findBook(const vector<vector<Sales_data>> &files,const string &book)
{vector<matches> ret;for(auto it=files.cbegin();it!=files.cend();++it){auto found=equal_range(it->cbegin(),it->cend(),book,compareIsbn);if(found.first!=found.second)ret.push_back(make_pair(it-files.cbegin(),found));}return ret;
}
void reportResults(istream &in,ostream &os,vector<vector<Sales_data>> &files)
{string s;while(in>>s){auto trans=findBook(files,s);if(trans.empty()){cout<<s<<" not found in any stores"<<endl;continue;}for(auto const &store:trans){os<<"store "<<store.first<<" sales: "<<accumulate(store.second.first,store.second.second,Sales_data(s))<<endl;}}
}int main(void)
{vector<vector<Sales_data>> files;Sales_data tmp;ifstream in;string basename="text",line;for(size_t index=0;index!=3;++index){in.open(basename+to_string(index));vector<Sales_data> file;while(in>>tmp)file.push_back(tmp);in.close();files.push_back(file);}reportResults(cin,cout,files);return 0;
}

17.6

#include <iostream>
#include <fstream>
#include <string>
#include <utility>
#include <vector>
#include <algorithm>
#include <numeric>
#include "Sales_data.h"
using namespace std;
struct matches
{vector<Sales_data>::size_type index;vector<Sales_data>::const_iterator bg;vector<Sales_data>::const_iterator ed;
};
vector<matches> findBook(const vector<vector<Sales_data>> &files,const string &book)
{vector<matches> ret;matches tmp;for(auto it=files.cbegin();it!=files.cend();++it){auto found=equal_range(it->cbegin(),it->cend(),book,compareIsbn);if(found.first!=found.second){tmp={it-files.cbegin(),found.first,found.second};ret.push_back(tmp);}}return ret;
}
void reportResults(istream &in,ostream &os,vector<vector<Sales_data>> &files)
{string s;while(in>>s){auto trans=findBook(files,s);if(trans.empty()){cout<<s<<" not found in any stores"<<endl;continue;}for(auto const &store:trans){os<<"store "<<store.index<<" sales: "<<accumulate(store.bg,store.ed,Sales_data(s))<<endl;}}
}int main(void)
{vector<vector<Sales_data>> files;Sales_data tmp;ifstream in;string basename="text",line;for(size_t index=0;index!=3;++index){in.open(basename+to_string(index));vector<Sales_data> file;while(in>>tmp)file.push_back(tmp);in.close();files.push_back(file);}reportResults(cin,cout,files);return 0;
}

17.7

 使用tuple版本更便捷,使用pair版本稍微复杂一点,自己定义一个类的版本更自由。

17.8

 主要看类的默认构造函数和operator+是如何定义的,在我这里会得到错误的isbn。

17.9

  1. 64位的位集,低位为100000,其余高位为0.
  2. 32位的位集,低位为11110110100110110101,其余高位为0.
  3. 如果bstr包含0或1之外的其他字符,构造函数会抛出invalid_argument的异常。否则如果bstr长于8,位集将由bstr的前八位构成,如果bstr长度小于8,那么位集的低位将由bstr构成,而高位被置为0.

17.10

#include <iostream>
#include <bitset>
int main(void)
{std::bitset<22> a("1000000010000100101110");std::cout<<a<<std::endl;std::bitset<22> b;b^=~a;std::cout<<b<<std::endl;return 0;
}

17.11

 如果只记录真假的话,使用一个位即可记录一对真假,10个问题的真假测验的解答用unsigned char或者位字段或者bitset都可以。但是如果包含100道题的话,那么unsigned long long只保证至少64位,所以最好还是使用bitset或者位字段。

17.12

见此处

#include <iostream>
#include <bitset>
using namespace std;
void check(bitset<10> &question,size_t index,bool answ)
{question.set(index,answ);
}
int main(void)
{char ch;bool answ;bitset<10> question,grade,answer("1000100101");for(size_t i=0;i!=question.size();++i){cout<<"Enter the answer of question "<<i<<": ";cin.get(ch);if(ch=='1'||ch=='y'||ch=='Y')answ=1;elseansw=0;check(question,i,answ);}cout<<"question is:"<<question<<endl;grade=~(question^answer);cout<<"grade is:"<<grade<<endl;cout<<"一共得了(分):"<<grade.count()<<endl;return 0;
}

17.13

见17.12

17.14

#include <iostream>
#include <regex>
int main(void)
{try{std::regex r("[[:alnums:]].",std::regex::icase);}catch(std::regex_error e){std::cout<<e.what()<<"\nerror code: "<<e.code()<<std::endl;}try{std::regex r("[[:alnum:]].\\",std::regex::icase);}catch(std::regex_error e){std::cout<<e.what()<<"\nerror code: "<<e.code()<<std::endl;}try{std::regex r("[[:alnum:].",std::regex::icase);}catch(std::regex_error e){std::cout<<e.what()<<"\nerror code: "<<e.code()<<std::endl;}try{std::regex r("[[:alnum:]]\\.(aa|aA$",std::regex::icase);}catch(std::regex_error e){std::cout<<e.what()<<"\nerror code: "<<e.code()<<std::endl;}return 0;
}

17.15

#include <iostream>
#include <string>
#include <regex>
int main(void)
{std::regex r("[[:alpha:]]*[^c]ei[[:alpha:]]*");std::smatch result;std::string tmp;std::cout<<"Enter a word: ";while(std::cin>>tmp){if(regex_match(tmp,result,r))std::cout<<"error word: "<<result.str()<<std::endl;elsestd::cout<<"right word: "<<tmp<<std::endl;std::cout<<"Enter a word: ";}return 0;
}

17.16

 如果使用[^c]ei进行初始化,那么此模式只能匹配首字母不是c的三个字母组成的单词,其余单词都不能匹配。

#include <iostream>
#include <string>
#include <regex>
int main(void)
{std::regex r("[^c]ei");std::smatch result;std::string tmp;std::cout<<"Enter a word: ";while(std::cin>>tmp){if(regex_match(tmp,result,r))std::cout<<"error word: "<<result.str()<<std::endl;elsestd::cout<<"right word: "<<tmp<<std::endl;std::cout<<"Enter a word: ";}return 0;
}

17.17

#include <iostream>
#include <string>
#include <regex>
int main(void)
{std::regex r("[[:alpha:]]*[^c]ei[[:alpha:]]*",std::regex::icase);std::smatch result;std::string tmp,str;std::cout<<"Enter some word(ctrl+D to quit): ";while(std::cin>>tmp){tmp+=" ";str+=tmp;}std::cout<<"all the words wrong: ";for(std::sregex_iterator it(str.begin(),str.end(),r),end_it;it!=end_it;++it){std::cout<<it->str()<<" ";}std::cout<<std::endl;return 0;
}

17.18

 没看懂意思,如果只是单纯要排除某些指定的单词的话,在匹配之后输出之前判断一下这个单词是否是要排除的那些单词之一即可,但这并不是一个好办法。

17.19

 首先调用m[4].str()如果m[4]匹配了会返回一个包含输入中匹配部分的string,如果没有匹配就会返回空string。其次,由于||的短路求值属性,会先行判断m[4].matched==0,当它为false时表示m[4]已经匹配了。

17.20

#include <iostream>
#include <regex>
bool valid(const std::smatch &m)
{if(m[1].matched)return m[3].matched&&(m[4].matched==false ||m[4].str()==" ");elsereturn !m[3].matched && m[4].str()==m[6].str();
}
int main(void)
{std::string line;std::smatch m;std::regex r("(\\()?(\\d{3})(\\))?([-. ])?(\\d{3})([-. ])?(\\d{4})");while(getline(std::cin,line)){for(std::sregex_iterator it(line.begin(),line.end(),r),end_it;it!=end_it;++it){if(valid(*it))std::cout<<"valid: "<<it->str()<<std::endl;elsestd::cout<<"not valid: "<<it->str()<<std::endl;}}return 0;
}

17.21

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <regex>
using namespace std;
bool valid(const string &str);
string format(const string &str);
struct PersonInfo
{string name;vector<string> phones;
};
int main(int argc,char *argv[])
{string line,word;vector<PersonInfo> people;istringstream record;ifstream ifst(argv[1]);ofstream ofst(argv[2]);while(getline(ifst,line)){PersonInfo info;record.clear(record.rdstate()&~record.failbit&~record.eofbit);record.str(line);record>>info.name;while(record>>word)info.phones.push_back(word);people.push_back(info);}for(const auto &pi:people){ostringstream formatted,badnums;for(const auto &ph:pi.phones){if(!valid(ph))badnums<<" "<<ph;elseformatted<<" "<<format(ph);}if(badnums.str().empty())ofst<<pi.name<<" "<<formatted.str()<<endl;elsecerr<<"input error: "<<pi.name<<" invalid numbers "<<badnums.str()<<endl;}return 0;
}
//假设电话号码的格式11111111111或者111-1111-1111
bool valid(const string &str)
{regex r("^(\\d{3})(-)?(\\d{4})(-)?(\\d{4})$");smatch m;if(regex_match(str,m,r)){return m[2].matched==m[4].matched;}return false;
}
string format(const string &str)
{return str;
}

17.22

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <regex>
using namespace std;
bool valid(const smatch &);
string format(const string &str);
struct PersonInfo
{string name;vector<string> phones;
};
int main(int argc,char *argv[])
{regex r("(\\d{3})([[:space:]]*)(\\d{4})([[:space:]]*)(\\d{4})");string line,word;vector<PersonInfo> people;istringstream record;ifstream ifst(argv[1]);ofstream ofst(argv[2]);while(getline(ifst,line)){PersonInfo info;record.clear(record.rdstate()&~record.failbit&~record.eofbit);record.str(line);record>>info.name;getline(record,word);for(sregex_iterator it(word.begin(),word.end(),r),end_it;it!=end_it;++it)info.phones.push_back(it->str());people.push_back(info);}for(const auto &pi:people){ostringstream formatted,badnums;for(const auto &ph:pi.phones){formatted<<" "<<format(ph);}if(badnums.str().empty())ofst<<pi.name<<" "<<formatted.str()<<endl;elsecerr<<"input error: "<<pi.name<<" invalid numbers "<<badnums.str()<<endl;}return 0;
}
//假设电话号码的格式11111111111或者111 1111 1111或者111-1111-1111
string format(const string &str)
{return str;
}

17.23

#include <iostream>
#include <regex>
//格式为11111或者11111-1111或者111111111
int main(void)
{std::regex r("(\\d{5})([-])?(\\d{4})?");std::string line;while(getline(std::cin,line)){for(std::sregex_iterator it(line.begin(),line.end(),r),end_it;it!=end_it;++it){if((*it)[3].matched)std::cout<<it->str(1)<<"-"<<it->str(3)<<std::endl;elsestd::cout<<it->str()<<std::endl;}}return 0;
}

17.24

#include <iostream>
#include <regex>
#include <string>
int main(void)
{std::regex r("(\\()?(\\d{3})(\\))?([-. ])?(\\d{3})([-. ])?(\\d{4})");std::string line;std::string fmt="$2.$5.$7 ";while(getline(std::cin,line)){std::cout<<regex_replace(line,r,fmt,std::regex_constants::format_no_copy)<<std::endl;}return 0;
}

17.25

#include <iostream>
#include <regex>
#include <string>
int main(void)
{std::regex r("(\\()?(\\d{3})(\\))?([-. ])?(\\d{3})([-. ])?(\\d{4})");std::string line;std::string fmt="$2.$5.$7";while(getline(std::cin,line)){std::cout<<regex_replace(line,r,fmt,std::regex_constants::format_no_copy|std::regex_constants::format_first_only)<<std::endl;}return 0;
}

17.26

#include <iostream>
#include <string>
#include <vector>
#include <regex>
int main(void)
{std::vector<std::vector<std::string>> result;std::regex r("(\\()?(\\d{3})(\\))?([-. ])?(\\d{3})([-. ])?(\\d{4})");std::string fmt="$2.$5.$7";std::string line;while(getline(std::cin,line)){std::vector<std::string> tmp;for(std::sregex_iterator it(line.begin(),line.end(),r),end_it;it!=end_it;++it){tmp.push_back(it->format(fmt));}if(!tmp.empty())result.push_back(tmp);}for(const auto &sv:result){if(sv.size()==1)std::cout<<sv[0];else{for(size_t index=1;index!=sv.size();++index)std::cout<<sv[index]<<" ";}std::cout<<std::endl;}return 0;
}

17.27

#include <iostream>
#include <regex>
#include <string>
//我也不知道邮编可能有哪些形式
//假设有111111111和1111-11111和1111 11111和1111.11111这些形式
int main(void)
{std::string line,fmt="$1-$3 ";std::regex r("(\\d{4})([-. ])?(\\d{5})");while(getline(std::cin,line)){line=std::regex_replace(line,r,fmt,std::regex_constants::format_no_copy);if(!line.empty())std::cout<<line<<std::endl;}return 0;
}

17.28

#include <iostream>
#include <random>
unsigned rad()
{static std::default_random_engine e;static std::uniform_int_distribution<unsigned> u;return u(e);
}
int main(void)
{for(size_t i=0;i<100;++i)std::cout<<rad()<<" ";std::cout<<std::endl;return 0;
}

17.29

#include <iostream>
#include <random>
#include <ctime>
unsigned rad(int sd=time(0))
{static std::default_random_engine e(sd);static std::uniform_int_distribution<unsigned> u;return u(e);
}
int main(void)
{for(size_t i=0;i<100;++i)std::cout<<rad()<<" ";std::cout<<std::endl;return 0;
}

17.30

#include <iostream>
#include <random>
#include <ctime>
unsigned rad(unsigned sd=time(0),unsigned min=0,unsigned max=9)
{static std::default_random_engine e(sd);static std::uniform_int_distribution<unsigned> u(min,max);return u(e);
}
int main(void)
{for(size_t i=0;i<100;++i)std::cout<<rad(1,1,10)<<" ";std::cout<<std::endl;return 0;
}

17.31

 如果循环内定义b、e,那么每步循环都会创建一个新引擎及分布对象,从而每步循环都会生成相同的值。

17.32

 如果在循环内定义resp,那么在while条件判断时resp已经不在其作用域。

17.33

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <map>
#include <stdexcept>
#include <random>
#include <vector>
#include <ctime>
using namespace std;
std::default_random_engine e(time(0));
std::uniform_int_distribution<unsigned> d;
map<string,vector<string>> buildMap(ifstream &map_file)
{map<string,vector<string>> trans_map;string key,value;while(map_file>>key&&getline(map_file,value)){if(value.size()>1)trans_map[key].push_back(value.substr(1));elsethrow runtime_error("no rule for "+key);}return trans_map;
}
const string & transform(const string &str,map<string,vector<string>> &m)
{auto map_it=m.find(str);if(map_it==m.end())return str;else{return map_it->second[d(e)%(map_it->second.size())];}
}
void word_transform(ifstream &map_file,ifstream &input)
{auto trans_map=buildMap(map_file);string text;while(getline(input,text)){istringstream stream(text);string word;bool firstword=true;while(stream>>word){if(firstword)firstword=false;elsecout<<" ";cout<<transform(word,trans_map);}cout<<endl;}
}
int main(int argc,char *argv[])//第一个参数是map文件,第二个参数是源文本文件
{ifstream map_file(argv[1]);ifstream input(argv[2]);word_transform(map_file,input);return 0;
}

17.34

#include <iostream>
#include <iomanip>
#include <cmath>
int main(void)
{int i=19;int a=-19;double b=sqrt(2);bool c=true;std::cout<<std::boolalpha<<c<<std::noboolalpha<<std::endl;std::cout<<std::showbase<<std::hex<<i<<std::noshowbase<<std::dec<<std::endl;std::cout<<std::setprecision(12)<<std::scientific<<std::uppercase<<b<<std::endl;std::cout<<std::setw(15)<<std::internal<<a<<std::ends<<'\n';return 0;
}

17.35

#include <iostream>
#include <iomanip>
#include <cmath>
int main(void)
{std::cout<<std::hexfloat<<std::uppercase<<sqrt(2)<<std::ends<<'\n';return 0;
}

17.36

#include <iostream>
#include <iomanip>
#include <cmath>
int main(void)
{std::cout<<std::setw(16)<<sqrt(2)<<std::endl;std::cout<<std::setw(16)<<sqrt(3)<<std::endl;std::cout<<std::setw(16)<<sqrt(5)<<std::endl;std::cout<<std::setw(16)<<sqrt(7)<<std::endl;std::cout<<std::setw(16)<<sqrt(113)<<std::endl;return 0;
}

17.37

 一行的长度超过传递给getline的字符数组的大小时,会导致输入流的条件状态被置为错误,导致后续读入失败。
见此处

#include <iostream>
#include <fstream>
int main(int argc,char *argv[])
{std::ifstream in(argv[1]);char *str=new char[100];while(in.getline(str,100,'\n')){std::cout.write(str,in.gcount());std::cout<<'\n';}delete [] str;
}

17.38

见17.37

17.39

#include <iostream>
#include <fstream>
int main(int argc,char *argv[])
{int ch=0;size_t cnt=0;std::fstream inout(argv[1],std::fstream::ate|std::fstream::in|std::fstream::out);if(!inout){std::cerr<<"Unable to open the file!"<<std::endl;return EXIT_FAILURE;}std::fstream::pos_type end_mark=inout.tellg();inout.seekp(-1,std::fstream::end);inout<<'\n';inout.seekg(0,std::fstream::beg);while(inout&&inout.tellg()!=end_mark){ch=inout.get();++cnt;if(ch=='\n'){auto mark=inout.tellg();inout.seekp(0,std::fstream::end);inout<<cnt;if(inout.tellg()!=end_mark)inout<<" ";inout.seekg(mark);}}inout.seekp(0,std::fstream::end);inout<<'\n';return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1006542.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网站项目】109网上手机商城

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

第二证券|炒股最好用的6个指标?

炒股存在以下好用的6个目标&#xff1a; 1、kdj目标 当k线从下方往上穿过d线时&#xff0c;构成金叉&#xff0c;是一种买入信号&#xff0c;投资者能够考虑在此刻买入一些个股&#xff0c;其间kdj金叉方位越低&#xff0c;买入信号越强&#xff1b;当k线从上往下穿过d线时&a…

react-面试题

一、组件基础 1. React 事件机制 <div onClick{this.handleClick.bind(this)}>点我</div> React并不是将click事件绑定到了div的真实DOM上&#xff0c;而是在document处监听了所有的事件&#xff0c;当事件发生并且冒泡到document处的时候&#xff0c;React将事…

基于SpringBoot的“逍遥大药房管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“逍遥大药房管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 药品信息界面图 疫情常识界…

数据库备份.....

一.环境准备 数据库备份&#xff0c;数据库为school&#xff0c;素材如下 >create database school; >use school1.创建student和score表CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , bi…

(黑马出品_06)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

&#xff08;黑马出品_06&#xff09;SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术ES搜索和数据分析 今日目标1. 查询文档1.1.DSL查询分类1.2.全文检索查询1.2.1.使用场景1.2.2.基本语法1.2.3.示例 1.3.精准查询1.3.1.term查询1.3.2.ran…

Kafka MQ broker和集群

Kafka MQ broker和集群 broker和集群 一个独立的 Kafka 服务器被称为 broker。broker 接收来自生产者的消息&#xff0c;为消息设置偏移量&#xff0c;并提交消息到磁盘保存。broker 为消费者提供服务&#xff0c;对读取分区的请求作出响应&#xff0c;返回已经提交到磁盘上的…

java组合模式揭秘:如何构建可扩展的树形结构

组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将对象组合成树形结构以表示整体/部分层次结构。组合模式使得客户端可以统一对待单个对象和组合对象&#xff0c;从而使得客户端可以处理更复杂的结构。 组合模式的主要组成部分包括&…

如何正确地设置Outlook SMTP发送电子邮件?

Outlook SMTP发送邮件配置方法&#xff1f;Outlook怎么开启SMTP&#xff1f; 在使用Outlook发送邮件时&#xff0c;正确设置SMTP服务器是确保邮件能够顺利发送的关键步骤。接下来&#xff0c;就让AokSend一起探讨如何正确地设置Outlook SMTP发送电子邮件吧&#xff01; Outlo…

15. jwt认证中间件

在上一篇登录功能的实现中&#xff0c;我们使用了jwt作为鉴权组件&#xff0c;其中登录后会颁发token。前端在访问后续请求时&#xff0c;可以带上这个token。对于一些需要权限校验的请求&#xff0c;我们就需要验证这个token&#xff0c;从token中获取到用户id&#xff08;有了…

C语言黑魔法第三弹——动态内存管理

本文由于排版问题&#xff0c;可能稍显枯燥&#xff0c;但里面知识点非常详细&#xff0c;建议耐心阅读&#xff0c;帮助你更好的理解动态内存管理这一C语言大杀器 进阶C语言中有三个知识点尤为重要&#xff1a;指针、结构体、动态内存管理&#xff0c;这三个知识点决定了我们…

详细讲解Xilinx DDR3 的MIG IP生成步骤及参数含义

前几篇文章讲解了SDRAM到DDR3各自的变化&#xff0c;本文讲解如何使用DDR3&#xff0c;在Altera的Cyclone IV开发板上一般会使用SDRAM作为存储数据的芯片&#xff0c;而Xilinx的S6和7000系列一般使用DDR3作为存储数据的芯片。 从SDRAM芯片内部结构分析其原理&#xff0c;从内部…

springMVC下载文件

目录 &#x1f36d;&#x1f36c;下载页面&#xff08;其实就一个超链接&#xff09; &#x1f36d;&#x1f36c;下载的具体操作 &#x1f36d;&#x1f36c;结果 承接上传文件&#xff0c;接下来看看下载文件的操作及注意事项 下载页面&#xff08;其实就一个超链接&…

Antd中s-table组件某字段进行排序

Antd中s-table组件某字段进行排序 提前说明&#xff0c;s-table组件包含分页等功能 <s-tableref"table":columns"columns":data"loadData"bordered:row-key"(record) > record.id"></s-table>而其中loadData为获取表数…

什么是Ribbon,怎么实现负载均衡?

一. Ribbon 是 Netflix 公司开发的一个负载均衡器&#xff08;Load Balancer&#xff09;工具&#xff0c;主要用于在分布式系统中进行客户端侧的负载均衡。它可以集成到微服务架构中的客户端&#xff0c;通过在客户端实现负载均衡算法&#xff0c;来分发请求到多个服务提供者…

经典卷积神经网络LeNet-5、AlexNet、VGG-16

一、LeNet-5 这里只讲一下C5&#xff0c;卷积核大小是5*5&#xff0c;通道数是120&#xff0c;所以卷积完成之后是1*1*120&#xff0c;这里形成120个卷积结果。每个都与上一层的16个图相连。所以共有(5x5x161)x120 48120个参数&#xff0c;同样有48120个连接。 其他卷积层和池…

脚本.py文件转.exe文件遇见的问题,打开exe文件出现弹窗: No module named ‘xxx‘

目录 1 问题2 问题分析3 解决过程3.1 确保Pillow库存在3.2 迷惑阶段3.3 解决问题 4 希望大佬解答 1 问题 今天做了一个使用Python写的脚本文件.py&#xff0c;打算把它转换成.exe文件。点击生成的exe文件时&#xff0c;出现了如下弹窗。 2 问题分析 根据错误描述&#xff1…

计算机网络(五)

网络层 网络层的主要目的是实现网络互连&#xff0c;进而实现数据包在各网络之间的传输。 要实现网络层&#xff0c;主要解决三个问题&#xff1a; ①网络层向运输层提供怎样的服务&#xff1f;&#xff08;“可靠传输“、”不可靠传输“&#xff09; ②网络层寻址 ③路由选择…

Java websocket在SpringBoot中使用

Java websocket在SpringBoot中使用 导入坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>3.2.3</version> </dependency>配置websocket 新…

springcloud第3季 consul服务发现注册,配置中心2

一 consul的作用 1.1 为何使用注册中心 为何要用注册中心&#xff1f; 1.A服务调用B服务&#xff0c;使用ip和端口&#xff0c;如果B服务的ip或者端口发生变化&#xff0c;服务A需要进行改动&#xff1b; 2.如果在分布式集群中&#xff0c;部署多个服务B&#xff0c;多个服…