简单毛概刷题网页制作 3.0(拖欠近一年版)

news2024/11/15 11:09:59

原因是大概一年之前学校的毛概期末刷题网站突然崩了,但是一直没有修复。当时眼看着复习时间逐渐被压缩,自己啥也做不了,遂自学前端完成毛概刷题网页一枚。

最早的毛概刷题网站仅仅是 1.0 版本(传送门),功能非常不齐全,只有最基本的选择判断题顺序做题的功能,自己用着也不是很爽。

当时就做出来了后来的 2.0,3.0 版本,包含其他功能,当时说是要更新的。

但是

期末嘛

忙嘛

忘记发了

看到有读者在文末评论才反应过来,忘记更新了,现在补上

做了 2.0 版本(传送门),主要功能是针对记忆和备考的,含有实时更新的准确率监测面板。

但是后来有同学反应这个不能很好地模拟考试,只适合最基础的记忆,故出了一版能模考的

文章目录

  • 效果图
  • 代码
    • 目录
    • Q_data.js
    • TF_data.js
    • get_exam.js
    • get_Q_2.0.js
    • jquery.js
    • style.css
    • get_TF_2.0.js
    • 铖铖的公主.html
  • project文件分享(可直接食用)

效果图

话不多说效果图奉上~

功能主要有:

顺序选择判断

在这里插入图片描述

平平无奇的功能,只是把选择判断分开记忆了,方便刷题罢了

判断题死记

当然,除了顺序刷题,判断题还有特殊要求。考虑到很多判断题会在选择题的选项里出现,而且判断题之间也具有迷惑性,所以我直接单拎出来正确的判断题用于记忆。效果还OK吧~

在这里插入图片描述

模拟考试功能

随机抽取试题,根据考试的选择判断比例生成试卷,模拟考试,增加趣味性。这样刷题刷着不累

在这里插入图片描述

考得确实不咋地

代码

目录

命名方式奇奇怪怪,不是啥好习惯~

在这里插入图片描述
Q_data.js为选择题数据,json格式。=>直接写死成这样,就不用 Ajax 了,直接点开 html 文件就能看。

TF_data.js为判断题数据,json格式。=>直接写死成这样,就不用 Ajax 了,直接点开 html 文件就能看。

get_exam.js遍历数据集生成测试题目。

get_Q_2.0.js顺序模式下生成题目。

get_TF_2.0.js判断ABCD是不是选对了,包括判断单选是否正确的代码等。

jquery.js为开源的 jquery 代码,网上一抓一大把就不放了。

style.css为布局文件,毛概题库的布局信息都在这里。

铖铖的公主.html唯一的 html 文件,有点像C里面的 main 函数

Q_data.js

这个是数据集,也不放正文占篇幅了,可以去文末的网盘文件里拿。

TF_data.js

这个是数据集,也不放正文占篇幅了,可以去文末的网盘文件里拿。

get_exam.js

包括随机抽取函数、初始化函数、考试判断函数等等

console.log(Q_data, TF_data);

function randArray(len, min, max) {
    id = Array.from({length:len}, v=> Math.floor(Math.random()*(max-min))+min);
    id = Array.from(new Set(id));
    if(len > max-min)alert("元素个数不够");
    if(id.length < len){ //取出重复的就删除然后顺序补足
        addnum = len-id.length;
        for(var i=min; i<max; i++){
            num = Math.floor(Math.random()*(max-min))+min
            if(id.length == len)break;
            if(id.includes(num))continue;
            else{
                id.push(num);
            }
        }
    }
	return id 
}

function init_data(){
    dic = {}
    exam_Q_data = [];
    exam_TF_data = [];
    
    random_id_Q = randArray(40, 0, 667);
    random_id_TF = randArray(16, 0, 208);
    exam_Q_data = [];
    exam_TF_data = [];
    
    for(var i=0; i<random_id_Q.length; i++){
        exam_Q_data.push(Q_data[random_id_Q[i]]);
        s = eval(Q_data[random_id_Q[i]].answer)
        dic[Q_data[random_id_Q[i]].no] = [s, s, true];
    }
    for(var i=0; i<random_id_TF.length; i++){
        exam_TF_data.push(TF_data[random_id_TF[i]]);
        s = eval(TF_data[random_id_TF[i]].answer)
        dic[TF_data[random_id_TF[i]].no] = [s, s, true];
    }
    return [dic, exam_Q_data, exam_TF_data];    
}

init_data_array = init_data();
dic = init_data_array[0];
exam_Q_data = init_data_array[1];
exam_TF_data = init_data_array[2];
console.log(dic);
console.log(exam_Q_data);
console.log(exam_TF_data);
exam_final = 0;

function get_exam(data_Q, data_TF){

    if(data_Q.length>0){   //项目列表
        var listInfo="";
        $.each(data_Q,function(){
            listInfo+=
            '<div class="question" id="s'+this.no+'">'+
                '<p class="wen">'+
                    this.number+'&emsp;'+this.question+
                '</p>'+
                '<div class="answer">'+
                    '<button type="button" id="'+'c0k'+this.answer+'s'+this.no+ '"class="exam_A">' + this.A + '</button>' +
                    '<button type="button" id="'+'c1k'+this.answer+'s'+this.no+ '"class="exam_B">' + this.B + '</button>' +
                    '<button type="button" id="'+'c2k'+this.answer+'s'+this.no+ '"class="exam_C">' + this.C + '</button>' +
                    '<button type="button" id="'+'c3k'+this.answer+'s'+this.no+ '"class="exam_D">' + this.D + '</button>' +
                '</div>'+
            '</div>';
        });
        if(data_TF.length>0){   //项目列表
            $.each(data_TF,function(){
                listInfo+=
                '<div class="question" id="s'+this.no+'">'+
                    '<p class="wen">'+
                        this.number+'&emsp;'+this.question+
                    '</p>'+
                    '<div class="answer">'+
                        '<button type="button" id="'+'c0k'+this.answer+'s'+this.no+ '"class="exam_A">' + this.T + '</button>' +
                        '<button type="button" id="'+'c1k'+this.answer+'s'+this.no+ '"class="exam_B">' + this.F + '</button>' +
                    '</div>'+
                '</div>';
            });
        $("#Select")[0].innerHTML=listInfo;	
    }
  }
}



//绑定考试事件
$(document).on("click",".exam_A",function(){ //通过document绑定对应的事件
    id = $(this).attr('id')
    no = id.substr(5);
    key = id.substr(3,1);
    c = id.substr(1,1);
    console.log(id, no, key, c);
    for (i = 0; i < 4; i++) { 
        $('#c'+i+'k'+key+'s'+no).removeClass('choosed');

    }
    $("#"+id).addClass('choosed');
    $("#s"+no).addClass('done');
    dic[no] = [eval(c), eval(key), c==key];
    console.log(dic);
});

$(document).on("click",".exam_B",function(){ //通过document绑定对应的事件
    id = $(this).attr('id')
    no = id.substr(5);
    key = id.substr(3,1);
    c = id.substr(1,1);
    console.log(id, no, key, c);
    for (i = 0; i < 4; i++) { 
        $('#c'+i+'k'+key+'s'+no).removeClass('choosed');

    }
    $("#"+id).addClass('choosed');
    $("#s"+no).addClass('done');
    dic[no] = [eval(c), eval(key), c==key];
    console.log(dic);
});


$(document).on("click",".exam_C",function(){ //通过document绑定对应的事件
    id = $(this).attr('id')
    no = id.substr(5);
    key = id.substr(3,1);
    c = id.substr(1,1);
    for (i = 0; i < 4; i++) { 
        $('#c'+i+'k'+key+'s'+no).removeClass('choosed');

    }
    $("#"+id).addClass('choosed');
    $("#s"+no).addClass('done');
    dic[no] = [eval(c), eval(key), c==key];
    console.log(dic);
});


$(document).on("click",".exam_D",function(){ //通过document绑定对应的事件
    id = $(this).attr('id')
    no = id.substr(5);
    key = id.substr(3,1);
    c = id.substr(1,1);
    for (i = 0; i < 4; i++) { 
        $('#c'+i+'k'+key+'s'+no).removeClass('choosed');
    }
    $("#"+id).addClass('choosed');
    $("#s"+no).addClass('done');
    dic[no] = [eval(c), eval(key), c==key];
    console.log(dic);
});


function check(data_Q, data_TF, dic){	
    sum1 = 0;
    if(data_Q.length>0){   //项目列表
        var listInfo="";
        $.each(data_Q,function(){
            a = "";
            b = "";
            c = "";
            d = "";
            choice = [a, b, c, d];
            choice[dic[eval(this.no)][1]] = "true1";
            if(dic[eval(this.no)][2] == false)choice[dic[eval(this.no)][0]] = "false1";
            else sum1 += 1;
            listInfo+=
            '<div class="question" id="s'+this.no+'">'+
                '<p class="wen">'+
                    this.number+'&emsp;'+this.question+
                '</p>'+
                '<div class="answer">'+
                    '<button type="button" id="'+'c0k'+this.answer+'s'+this.no+ '"class="exam_A '+choice[0]+'">' + this.A + '</button>' +
                    '<button type="button" id="'+'c1k'+this.answer+'s'+this.no+ '"class="exam_B '+choice[1]+'">' + this.B + '</button>' +
                    '<button type="button" id="'+'c2k'+this.answer+'s'+this.no+ '"class="exam_C '+choice[2]+'">' + this.C + '</button>' +
                    '<button type="button" id="'+'c3k'+this.answer+'s'+this.no+ '"class="exam_D '+choice[3]+'">' + this.D + '</button>' +
                '</div>'+
            '</div>';
        });
        if(data_TF.length>0){   //项目列表
            sum2 = 0;

            $.each(data_TF,function(){
                a = "";
                b = "";
                choice = [a, b];
                choice[dic[eval(this.no)][1]] = "true1";
                if(dic[eval(this.no)][2] == false)choice[dic[eval(this.no)][0]] = "false1";
                else sum2 += 1;
                listInfo+=
                '<div class="question" id="s'+this.no+'">'+
                    '<p class="wen">'+
                        this.number+'&emsp;'+this.question+
                    '</p>'+
                    '<div class="answer">'+
                        '<button type="button" id="'+'c0k'+this.answer+'s'+this.no+ '"class="exam_A '+choice[0]+'">' + this.T + '</button>' +
                        '<button type="button" id="'+'c1k'+this.answer+'s'+this.no+ '"class="exam_B '+choice[1]+'">' + this.F + '</button>' +
                    '</div>'+
                '</div>';
            });
        $("#Select")[0].innerHTML=listInfo;	
    }
  }
  alert("共"+data_Q.length+"道单选题,"+data_TF.length+"道判断题,答对了"+sum1+"道单选题,达对了"+sum2+"道判断题,准确率高达"+(sum1+sum2)/(data_Q.length+data_TF.length)*100+"%太牛了吧!!")
}

get_Q_2.0.js

主要是几个可能会用到的函数

  • get_Q:生成选择题问题
  • get_TF:生成判断题问题
  • get_T:生成判断题中答案为正确的问题

function get_Q(data){				         
                if(data.length>0){   //项目列表
                    var listInfo="";
                    $.each(data,function(){
                        listInfo+=
                        '<div class="question" id="s'+this.no+'">'+
                            '<p class="wen">'+
                                this.number+'&emsp;'+this.question+
                            '</p>'+
                            '<div class="answer">'+
                                '<button type="button" id="'+'c0k'+this.answer+'s'+this.no+ '"class="A">' + this.A + '</button>' +
                                '<button type="button" id="'+'c1k'+this.answer+'s'+this.no+ '"class="B">' + this.B + '</button>' +
                                '<button type="button" id="'+'c2k'+this.answer+'s'+this.no+ '"class="C">' + this.C + '</button>' +
                                '<button type="button" id="'+'c3k'+this.answer+'s'+this.no+ '"class="D">' + this.D + '</button>' +
                            '</div>'+
                        '</div>';
                    });
                    $("#Select")[0].innerHTML=listInfo;	
                }
            }


function get_TF(data){				         
                if(data.length>0){   //项目列表
                    var listInfo="";
                    $.each(data,function(){
                            listInfo+=
                            '<div class="question" id="s'+this.no+'">'+
                                '<p class="wen">'+
                                    this.number+'&emsp;'+this.question+
                                '</p>'+
                                '<div class="answer">'+
                                    '<button type="button" id="'+'c0k'+this.answer+'s'+this.no+ '"class="A">' + this.T + '</button>' +
                                    '<button type="button" id="'+'c1k'+this.answer+'s'+this.no+ '"class="B">' + this.F + '</button>' +
                                '</div>'+
                            '</div>';

                    });
                    $("#Select")[0].innerHTML=listInfo;
                }
            }


            function get_T(data){				         
                if(data.length>0){   //项目列表
                    var listInfo="";
                    $.each(data,function(){

                        if(this.answer === "0"){
                            listInfo+=
                            '<div class="question" id="s'+this.no+'">'+
                                '<p class="wen">'+
                                    this.number+'&emsp;'+this.question+
                                '</p>'+
                                '<div class="answer">'+
                                    '<button type="button" id="'+'c0k'+this.answer+'s'+this.no+ '"class="A">' + this.T + '</button>' +
                                    '<button type="button" id="'+'c1k'+this.answer+'s'+this.no+ '"class="B">' + this.F + '</button>' +
                                '</div>'+
                            '</div>';
                        }

                    });
                    $("#Select")[0].innerHTML=listInfo;
                }
            }

jquery.js

开源的,网上一抓一大把,不放正文占篇幅了,可以去文末的网盘文件里拿。

style.css

布局文件,包括按钮的样式和动画、选项状态、悬浮状态栏等等


.button {
    color: white;
    padding: 5px 50px;
    position: relative;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 20px;
    font-family: "miaowu";
    margin-left: 10%; 
	margin-top: 20px;
    border-radius: 5px;
    -webkit-transition-duration: 0.4s; /* Safari */
    transition-duration: 0.4s;
    box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2), 0 6px 20px 0 rgba(0,0,0,0.19);
}
.button1{
	background-color: #383838;
}
.button1:hover {
    background-color: #fdcdac;
    color: white;
    box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);
}
.button1:active {
    background-color: #f1e2cc;
    box-shadow: 0 5px #666;
    transform: translateY(1px);
	color: #383838;
}
#Select{
    margin-top: 20px;
    margin-left: 2%;
    margin-right: 2%;
}
#Select .question{
    border: 1px solid #383838;
}
#Select .wen{
    font-size: 20px;
    padding: 2%;
    margin: 0;
}
#Select .A,
#Select .B,
#Select .C,
#Select .D{
    font-size: 18px;
    text-decoration: none;
    color: black;
    width: 100%;
    text-align: center;
}
.true1{
    background-color: rgb(33, 201, 30);
}
.false1{
    background-color: red;
}
.choosed{
    background-color:cornflowerblue;
}
#done{
    left: 0;
	position: fixed;
	bottom: 0;
	width: 100%;
	z-index: 100;
}
/* #Select .ans{
    display: inline;
} */


#Select .exam_A,
#Select .exam_B,
#Select .exam_C,
#Select .exam_D{
    font-size: 18px;
    text-decoration: none;
    color: black;
    width: 100%;
    text-align: center;
}

get_TF_2.0.js

用于判断选项是否正确,写的比较糙,直接暴力判断了。

很low的一种写法,用来判断ABCD是不是被click了,并且判断是不是正确答案。

$(document).on("click",".A",function(){ //通过document绑定对应的事件
    id = $(this).attr('id')
    no = id.substr(5);
    key = id.substr(3,1);
    c = id.substr(1,1);
    for (i = 0; i < 4; i++) { 
        $('#c'+i+'k'+key+'s'+no).removeClass('true1');
        $('#c'+i+'k'+key+'s'+no).removeClass('false1');
    }
    if(key==c)
        $("#"+id).addClass('true1');
    else{
        $("#"+id).addClass('false1');
        $('#c'+key+'k'+key+'s'+no).addClass('true1');
    }
    $("#s"+no).addClass('done');
});

$(document).on("click",".B",function(){ //通过document绑定对应的事件
    id = $(this).attr('id')
    no = id.substr(5);
    key = id.substr(3,1);
    c = id.substr(1,1);
    for (i = 0; i < 4; i++) { 
        $('#c'+i+'k'+key+'s'+no).removeClass('true1');
        $('#c'+i+'k'+key+'s'+no).removeClass('false1');
    }
    if(key==c)
        $("#"+id).addClass('true1');
    else{
        $("#"+id).addClass('false1');
        $('#c'+key+'k'+key+'s'+no).addClass('true1');
        console.log('#c'+c+'k'+key+'s'+no)
    }
    $("#s"+no).addClass('done');
});

$(document).on("click",".C",function(){ //通过document绑定对应的事件
    id = $(this).attr('id')
    no = id.substr(5);
    key = id.substr(3,1);
    c = id.substr(1,1);
    for (i = 0; i < 4; i++) { 
        $('#c'+i+'k'+key+'s'+no).removeClass('true1');
        $('#c'+i+'k'+key+'s'+no).removeClass('false1');
    }
    if(key==c)
        $("#"+id).addClass('true1');
    else{
        $("#"+id).addClass('false1');
        $('#c'+key+'k'+key+'s'+no).addClass('true1');
    }
    $("#s"+no).addClass('done');
});

$(document).on("click",".D",function(){ //通过document绑定对应的事件
    id = $(this).attr('id')
    no = id.substr(5);
    key = id.substr(3,1);
    c = id.substr(1,1);
    for (i = 0; i < 4; i++) { 
        $('#c'+i+'k'+key+'s'+no).removeClass('true1');
        $('#c'+i+'k'+key+'s'+no).removeClass('false1');
    }
    if(key==c)
        $("#"+id).addClass('true1');
    else{
        $("#"+id).addClass('false1');
        $('#c'+key+'k'+key+'s'+no).addClass('true1');
    }
    $("#s"+no).addClass('done');
});

铖铖的公主.html

平平无奇 html 文件一枚~

搭建了网页的骨架

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="style.css" rel="stylesheet" type="text/css">
    <script src="./js/jquery.js" type="text/javascript"></script>
    <script src="./data/Q_data.js"></script>
    <script src="./data/TF_data.js"></script>
    <script src="./js/get_Q_2.0.js" type="text/javascript"></script> 
    <script src="./js/get_TF_2.0.js" type="text/javascript"></script> 
    <script src="./js/get_exam.js"></script>
    <title>铖铖的公主</title>
</head>
<body>
    <button class = "button button1" onclick="get_Q(Q_data);">顺序选择</button>
    <button class = "button button1" onclick="get_TF(TF_data);">顺序判断</button>
    <button class = "button button1" onclick="get_T(TF_data);">正确的判断题</button>
    <button class = "button button1" onclick="init_data(); get_exam(exam_Q_data, exam_TF_data);">开始测试</button>
    <div id="Select">
    </div>
    <button class = "button button1" onclick="check(exam_Q_data, exam_TF_data, dic);">提交测试</button>

</body>
</html>

project文件分享(可直接食用)

记得一键三连噢~~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Microsoft office Word 批注相关问题解决

Microsoft office word 批注相关问题解决 目录 Microsoft office word 批注相关问题解决1.增添并显示批注2.批注显示及取消操作3.更改批注者姓名4.将Microsoft office Word文档中已批注的名字以及缩写修改为自己需要的4.1将Microsoft office Word文档中已批注的名字修改为自己需…

STM32开发(十八)STM32F103 片内资源 —— 窗口看门狗 WWDG 详解

文章目录 一、基础知识点二、开发环境三、STM32CubeMX相关配置四、Vscode代码讲解五、结果演示 一、基础知识点 独立看门狗和窗口看门狗的区别&#xff1a; 独立看门狗在系统在待机、停机、睡眠阶段还会起效果&#xff0c;这就会导致在做低功耗的时候&#xff0c;看门狗还是会…

Elasticsearch:定制 Elasticsearch 镜像

在很多时候&#xff0c;我们希望定制我们的 Elasticsearch 镜像&#xff0c;比如&#xff0c;我们需要安装一些额外的插件&#xff0c;或者如果我们想要一个带有同义词文件和自定义配置的 Elasticsearch&#xff1f;或者我们需要一些相应的配置等。我们想在每次的 docker 部署中…

华为实习笔试复盘(1)配送站和客户问题

写在前面 自己玩了很多项目&#xff0c;但是最近准备秋招的过程中&#xff0c;发现自己对于算法和编程语言的基本功夫实在是太欠缺了。 投递了华为的实习岗位&#xff0c;4.26参加机考&#xff0c;一做题就发现了自己很多地方都不会。这里写下笔试后的复盘以警醒自己。 题目 …

服务网关Gateway

前言 API 网关出现的原因是微服务架构的出现&#xff0c;不同的微服务一般会有不同的网络地址&#xff0c;而外部客户端可能需要调用多个服务的接口才能完成一个业务需求&#xff0c;如果让客户端直接与各个微服务通信&#xff0c;会有以下的问题&#xff1a; 破坏了服务无状态…

python毕业设计之django+vue企业员工在线办公OA系统

该系统分用户和管理员。 管理员界面&#xff0c;具有以下功能&#xff1a; &#xff08;1&#xff09;添加用户&#xff1a;管理员添加本系统的用户信息。 &#xff08;2&#xff09;添加部门信息&#xff1a;管理员添加本系统的部门信息。 &#xff08;3&#xff09;添加职位信…

GLM:ChatGLM的基座模型

介绍 ChatGLM-6B&#xff1a;https://github.com/THUDM/ChatGLM-6B &#xff0c;主要是能够让我们基于单卡自己部署。ChatGLM的基座是GLM: General Language Model Pretraining with Autoregressive Blank Infilling论文中提出的模型。 动机 预训练语言吗模型大体可以分为三…

【MySQL约束】数据管理实用指南

1、数据库约束的认识 数据库约束的概念&#xff1a;数据库的约束是关系型数据库的一个重要的功能&#xff0c;它提供了一种“校验数据”合法性的机制&#xff0c;能够保证数据的“完整性”、“准确性”和“正确性” 数据库的约束&#xff1a; not null&#xff1a;不能存储 nul…

最强Http缓存策略之强缓存和协商缓存的详解与应用实例

HTTP缓存是指浏览器或者代理服务器将已经请求过的资源保存到本地&#xff0c;以便下次请求时能够直接从缓存中获取资源&#xff0c;从而减少网络请求次数&#xff0c;提高网页的加载速度和用户体验。缓存分为强缓存和协商缓存两种模式。 一. 强缓存 强缓存是指浏览器直接从本…

javaweb权限管理简单实现_javaweb管理系统项目

最近在做一个网站类型项目&#xff0c;主要负责后台&#xff0c;ui框架选型为jquery easy ui&#xff0c;项目架构为spring mvc spring jdbc&#xff0c;简单易用好上手&#xff01;搭建好框架后开始了第一个任务&#xff0c;设计并实现一套简单的权限管理功能。 一套最基本的…

深度学习第J8周:Inception v1算法实战与解析

目录 一、Inception v1 1.简介 2. 算法结构 二、pytorch代码复现1.前期准备 2.代码复现 3.训练运行 3.2指定图片进行预测 三、总结 &#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作…

ChatGPT登陆方法及常见问题

Chatgpt现在推出ChatGPT Plus服务&#xff0c;所以对注册账号限制比较大 Plus账号有什么优势&#xff1f; 我们可以看到官方介绍&#xff1a; 优势1 Available even when demand is high 当访问量大时&#xff0c;依旧可以访问 优势2 Faster response speed 更快的回复速度…

无云服务器,Linux本地快速搭建web网站,并内网穿透发布上线

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道&#xff0c;指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 转载自cpolar文章&#xff1a;Linux CentOS本地搭建…

医疗器械的分类与查询

我国根据医疗器械产品安全性对医疗器械进行分类管理。分类目录由国家食品药品监督管理部门依据医疗器械分类规则制定&#xff1a; 第一类是风险程度低&#xff0c;实行常规管理可以保证其安全、有效的医疗器械。如&#xff1a;外科用手术器械&#xff08;刀、剪、钳、镊、钩&a…

RabbitMQ 工作队列模式 Work Queue Demo

工作队列模式,一个消息只能有一个消费者消费 生产者发送20条消息 消费者有两个 第一个消费 睡一秒取一个 第二个睡2秒取 public class WorkConsumerTest1 {public static void main(String[] args) throws IOException, TimeoutException {//1 创建连接工厂ConnectionFactor…

「华熙生物」发来感谢信,企企通赋能生物科技领域数字化采购建设

近日&#xff0c;华熙生物科技股份有限公司&#xff08;以下简称“华熙生物”&#xff09;携手企企通打造的数字化采购管理平台成功上线。为感谢企企通在采购数字化项目上的付出和努力&#xff0c;华熙生物特意发来暖心感谢信。 在感谢信中&#xff0c;华熙生物表示&#xff1a…

【目标检测实验系列】YOLOv5改进实验:结合VariFocal Loss损失函数,减少小目标漏检问题,高效提升模型检测的召回率(超详细改进代码流程)

目录 1. 文章主要内容2. VariFocal Loss损失函数&#xff08;原理&#xff1a;简单介绍&#xff0c;可自行详细研究&#xff09;2.1 VariFocal Loss损失函数2.2 博主数据集实验效果 3. 代码详细改进流程(重要)3.1 新建varifocalLoss.py文件3.2 修改hyp.scratch-low.yaml文件3.3…

【MATLAB图像处理实用案例详解(20)】——利用BP神经网络实现人脸朝向判断

目录 一、问题描述二、算法步骤2.1 读入数据并提取特征2.2 创建神经网络并训练2.3 测试 三、结果分析 一、问题描述 BP神经网络利用输出后的误差来估计输出层的直接前导层的误差&#xff0c;再用这个误差估计更前一层的误差&#xff0c;如此一层一层的反传下去&#xff0c;就获…

4_用dockerfile制作镜像

Docker 镜像原理 思考&#xff1a; Docker 镜像本质是什么&#xff1f; Docker 中一个centos镜像为什么只有200MB&#xff0c;而一个centos操作系统的iso文件要几个个G&#xff1f; Docker 中一个tomcat镜像为什么有500MB&#xff0c;而一个tomcat安装包只有70多MB&#xff…

JavaScript中的Concurrency并发:异步操作下的汉堡制作示例

这篇文章想讲一下JavaScript中同步与异步操作在一个简单的示例中的应用。我们将以制作汉堡为例&#xff0c;展示如何使用同步方法、回调函数&#xff08;callbacks&#xff09;和Promise与async/await来实现该过程。 Let’s imagine we’re trying to make a burger: 1. Get …