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

计算机毕业设计 基于Django的在线考试系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥
🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。
🍊心愿:点赞 👍 收藏 ⭐评论 📝
🍅 文末获取源码联系

👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~
Java毕业设计项目~热门选题推荐《1000套》

Python毕业设计精品项目《1000套》

微信小程序毕业设计精品项目《1000套》

大数据/机器学习毕业设计精品项目《1000套》

目录

1.技术选型

2.开发工具

3.功能

3.1【角色】

3.2【前台功能模块】

3.3【后台功能模块】

4.项目演示截图

4.1 首页

4.2 课程信息

4.3 试卷

4.4 注册

4.5 考试

4.6 系统首页

4.7 课程成绩管理

4.8 试题库管理

4.9 课程信息管理

5.核心代码

5.1 Settings.py

5.2 Urls.py

5.3 Users_v.py

5.4 Auth.py

6.LW文档大纲参考


背景意义介绍:

基于Python的在线考试系统是一种利用现代信息技术来提升教育质量和效率的工具。随着互联网技术的发展和教育信息化的推进,传统的线下考试模式已经无法满足教育的多样化需求。在线考试系统以其高效、便捷的特点,为学生提供了灵活的学习方式,为教师提供了便捷的考试管理工具。

该系统通常包括用户管理、题库管理、考试管理、成绩管理等多个功能模块。它能够实现考试流程的自动化,减轻教师的工作负担,提高考试效率,同时通过技术手段确保考试的公平性和安全性。此外,系统还能够根据学生的学习情况提供个性化的学习建议,有助于提升教学质量。

1.技术选型

Python、Django、vue、elementui、html、css、js、mysql

2.开发工具

pycharm、navicat

3.功能

3.1【角色】

管理员、用户

3.2【前台功能模块】

  • 登录
  • 注册
  • 首页
  • 课程信息
  • 试卷
  • 公告
  • 个人中心(个人中心、修改密码、课程成绩、考试记录、错题本、我的收藏)

3.3【后台功能模块】

  • 登录
  • 系统首页(报表统计)
  • 教师管理
  • 学生管理
  • 课程分类管理
  • 课程成绩管理
  • 班级管理
  • 课程信息管理
  • 试卷管理
  • 试题管理
  • 系统管理
  • 考试管理
  • 用户信息
     

4.项目演示截图

4.1 首页

4.2 课程信息

4.3 试卷

4.4 注册

4.5 考试

4.6 系统首页

4.7 课程成绩管理

4.8 试题库管理

4.9 课程信息管理

5.核心代码

5.1 Settings.py

"""
Django settings for dj2 project.Generated by 'django-admin startproject' using Django 2.0.For more information on this file, see
https://docs.djangoproject.com/en/2.0/topics/settings/For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.0/ref/settings/
"""import os
from concurrent.futures.thread import ThreadPoolExecutor
executor = ThreadPoolExecutor(20)
from util.configread import config_read# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'w5yn#0gn2tt7pvu%hvwt0!lt=!$6+eqp4%m8)u3u#gknm@jm)k'# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = TrueALLOWED_HOSTS = ["*"]# Application definitionINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',"main",'corsheaders',
]MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',# 'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','threadlocals.middleware.ThreadLocalMiddleware',"xmiddleware.xparam.Xparam","xmiddleware.xauth.Xauth",'corsheaders.middleware.CorsMiddleware','django.middleware.common.CommonMiddleware',]
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_HEADERS = ('*')SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_COOKIE_NAME  = "sessionid"
SESSION_COOKIE_PATH  = "/"
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_AGE = 1209600
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_SAVE_EVERY_REQUEST = FalseROOT_URLCONF = 'dj2.urls'
TEMPLATES_DIR = os.path.join(BASE_DIR, "templates")
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [TEMPLATES_DIR],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]WSGI_APPLICATION = 'dj2.wsgi.application'EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = False
EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = 'yclw9@qq.com'
EMAIL_HOST_PASSWORD = 'mhbrkuayvkkgbijd'# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }dbtype, host, port, user, passwd, dbName, charset,hasHadoop = config_read("config.ini")
dbName=dbName.replace(" ","").strip()
print(dbtype, host, port, user, passwd, dbName, charset)if dbtype == 'mysql':DATABASES = {'default': {# 'ENGINE': 'django.db.backends.sqlite3',# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),'ENGINE': 'django.db.backends.mysql','OPTIONS': {'sql_mode': 'traditional','init_command': "SET sql_mode='traditional'",  # STRICT_TRANS_TABLES},'NAME': dbName,'USER': user,'PASSWORD': passwd,'HOST': host,'PORT': port,'charset': charset,'TEST': {'CHARSET': charset,'COLLATION': 'utf8_general_ci',},'CONN_MAX_AGE':60},}
else:print("请使用mysql5.5数据库")os._exit(1)# Password validation
# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validatorsAUTH_PASSWORD_VALIDATORS = [{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',},{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',},{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',},{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',},
]# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/LANGUAGE_CODE = 'zh-Hans'# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'USE_I18N = TrueUSE_L10N = True# USE_TZ = True
USE_TZ = False# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/STATIC_URL = '/assets/'
STATICFILES_DIRS =[
os.path.join(BASE_DIR, "templates/front/assets"),
]# media
MEDIA_URL = "/media/"  # 自定义
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')  # 自定义
if os.path.isdir(MEDIA_ROOT) == False:os.mkdir(MEDIA_ROOT)ALIPAY_APP_ID = '9021000132629452'
APP_PRIVATE_KEY_STRING = open('{}/util/alipay_key/app_private_2048.txt'.format(BASE_DIR)).read()
ALIPAY_PUBLIC_KEY_STRING = open('{}/util/alipay_key/alipay_public_2048.txt'.format(BASE_DIR)).read()
ALIPAY_SIGN_TYPE = 'RSA2'

5.2 Urls.py

"""dj2 URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/2.0/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
import os
from django.contrib import admin
from django.urls import path,include,re_path
from django.conf.urls import url
from django.views.static import serve
from django.views.generic import TemplateViewfrom . import views
from dj2.settings import dbName as schemaNameurlpatterns = [path('xadmin/', admin.site.urls),path(r'index/',views.index),path('{}/'.format(schemaName),include('main.urls')),#导入schemaNamere_path(r'admin/lib/(?P<p1>.*)/(?P<p2>.*)$', views.admin_lib2),re_path(r'admin/lib/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$', views.admin_lib3),re_path(r'admin/lib/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$', views.admin_lib4),re_path(r'admin/page/(?P<p1>.*)$', views.admin_page),re_path(r'admin/page/(?P<p1>.*)/(?P<p2>.*)$', views.admin_page2),re_path(r'admin/pages/(?P<p1>.*)$', views.admin_pages),re_path(r'admin/pages/(?P<p1>.*)/(?P<p2>.*)$', views.admin_pages2),re_path(r'front/(?P<p1>.*)$', views.schema_front1),re_path(r'front/(?P<p1>.*)/(?P<p2>.*)$', views.schema_front2),re_path(r'front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$', views.schema_front3),re_path(r'front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$', views.schema_front4),re_path(r'{}/front/(?P<p1>.*)$'.format(schemaName), views.schema_front1),re_path(r'{}/front/(?P<p1>.*)/(?P<p2>.*)$'.format(schemaName), views.schema_front2),re_path(r'{}/front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$'.format(schemaName), views.schema_front3),re_path(r'{}/front/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$'.format(schemaName), views.schema_front4),# re_path(r'assets/(?P<p1>.*)$', views.assets1),# re_path(r'assets/(?P<p1>.*)/(?P<p2>.*)$',  views.assets2),# re_path(r'assets/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$',  views.assets3),# re_path(r'assets/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$',  views.assets4),#re_path(r'admin/(?P<p1>.*)$', views.admin_file1),re_path(r'admin/(?P<p1>.*)/(?P<p2>.*)$', views.admin_file2),re_path(r'admin/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$', views.admin_file3),re_path(r'admin/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$', views.admin_file4),re_path(r'layui/(?P<p1>.*)$', views.layui1),re_path(r'layui/(?P<p1>.*)/(?P<p2>.*)$',  views.layui2),re_path(r'layui/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)$',  views.layui3),re_path(r'layui/(?P<p1>.*)/(?P<p2>.*)/(?P<p3>.*)/(?P<p4>.*)$',  views.layui4),re_path(r'pages/(?P<p1>.*)$', views.front_pages),re_path(r'pages/(?P<p1>.*)/(?P<p2>.*)$',  views.front_pages2),# re_path(r'pages/(?P<p1>.*)$',  views.front_file1),# re_path(r'(?P<p1>css|jss|img|image|iamges|font|fonts)/(?P<p2>.*)$', views.front_file2),re_path(r'modules/(?P<p1>.*)$', views.front_modules),re_path(r'css/(?P<p1>.*)$', views.css1),re_path(r'js/(?P<p1>.*)$', views.js1),re_path(r'img/(?P<p1>.*)$', views.img1),path(r'test/<str:p1>/',views.test),path(r'null',views.null),
]#判断admin使用vue还是jquery
if os.path.isdir(os.path.join(os.getcwd(),"templates/front/admin/dist/")):urlpatterns.extend([path(r'{}/admin/dist/index.html'.format(schemaName),TemplateView.as_view(template_name='front/admin/dist/index.html')),path(r'{}/admin/'.format(schemaName), TemplateView.as_view(template_name='front/admin/dist/index.html')),# 以下是后台admin的url匹配规则path(r'admin/dist/index.html'.format(schemaName),TemplateView.as_view(template_name='front/admin/dist/index.html')),path(r'admin/', TemplateView.as_view(template_name='front/admin/dist/index.html')),])
else:urlpatterns.extend([path(r'{}/admin/index.html'.format(schemaName),TemplateView.as_view(template_name='front/admin/index.html')),path(r'{}/admin/'.format(schemaName), TemplateView.as_view(template_name='front/admin/index.html')),# 以下是后台admin的url匹配规则path(r'admin/index.html'.format(schemaName),TemplateView.as_view(template_name='front/admin/index.html')),path(r'admin/', TemplateView.as_view(template_name='front/admin/index.html')),])if os.path.isfile(os.path.join(os.getcwd(),"templates/front/index.html")):urlpatterns.extend([path(r'index.html', TemplateView.as_view(template_name='front/index.html')),path(r'{}/index.html'.format(schemaName), TemplateView.as_view(template_name='front/index.html')),path(r'{}/front/index.html'.format(schemaName), TemplateView.as_view(template_name='front/index.html')),path(r'', TemplateView.as_view(template_name='front/index.html')),])

5.3 Users_v.py

# coding:utf-8
__author__ = "ila"from django.http import JsonResponsefrom .users_model import users
from util.codes import *
from util.auth import Auth
import util.message as mes
from dj2.settings import host,port,user,passwd,dbName,hasHadoopdef users_login(request):if request.method in ["POST", "GET"]:msg = {'code': normal_code, "msg": mes.normal_code}req_dict = request.session.get("req_dict")if req_dict.get('role')!=None:del req_dict['role']datas = users.getbyparams(users, users, req_dict)if not datas:msg['code'] = password_error_codemsg['msg'] = mes.password_error_codereturn JsonResponse(msg)req_dict['id'] = datas[0].get('id')return Auth.authenticate(Auth, users, req_dict)def users_register(request):if request.method in ["POST", "GET"]:msg = {'code': normal_code, "msg": mes.normal_code}req_dict = request.session.get("req_dict")error = users.createbyreq(users, users, req_dict)if error != None:msg['code'] = crud_error_codemsg['msg'] = errorreturn JsonResponse(msg)def users_session(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code,"msg":mes.normal_code, "data": {}}req_dict = {"id": request.session.get('params').get("id")}msg['data'] = users.getbyparams(users, users, req_dict)[0]return JsonResponse(msg)def users_logout(request):if request.method in ["POST", "GET"]:msg = {"msg": "退出成功","code": 0}return JsonResponse(msg)def users_page(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code,"data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}req_dict = request.session.get("req_dict")tablename = request.session.get("tablename")try:__hasMessage__ = users.__hasMessage__except:__hasMessage__ = Noneif __hasMessage__ and __hasMessage__ != "否":if tablename != "users":req_dict["userid"] = request.session.get("params").get("id")if tablename == "users":msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \msg['data']['pageSize'] = users.page(users, users, req_dict)else:msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \msg['data']['pageSize'] = [],1,0,0,10return JsonResponse(msg)def users_info(request, id_):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}data = users.getbyid(users, users, int(id_))if len(data) > 0:msg['data'] = data[0]# 浏览点击次数try:__browseClick__ = users.__browseClick__except:__browseClick__ = Noneif __browseClick__ and "clicknum" in users.getallcolumn(users, users):click_dict = {"id": int(id_), "clicknum": str(int(data[0].get("clicknum", 0)) + 1)}ret = users.updatebyparams(users, users, click_dict)if ret != None:msg['code'] = crud_error_codemsg['msg'] = retreturn JsonResponse(msg)def users_save(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get("req_dict")req_dict['role'] = '管理员'error = users.createbyreq(users, users, req_dict)if error != None:msg['code'] = crud_error_codemsg['msg'] = errorreturn JsonResponse(msg)def users_update(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get("req_dict")if req_dict.get("mima") and req_dict.get("password"):if "mima" not in users.getallcolumn(users,users):del req_dict["mima"]if "password" not in users.getallcolumn(users,users):del req_dict["password"]try:del req_dict["clicknum"]except:passerror = users.updatebyparams(users, users, req_dict)if error != None:msg['code'] = crud_error_codemsg['msg'] = errorreturn JsonResponse(msg)def users_delete(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get("req_dict")error = users.deletes(users,users,req_dict.get("ids"))if error != None:msg['code'] = crud_error_codemsg['msg'] = errorreturn JsonResponse(msg)

5.4 Auth.py

# coding:utf-8
# author:ila
import base64, copy
from django.http import JsonResponse
from django.apps import appsfrom util.codes import *
from util import message as mesclass Auth(object):def authenticate(self, model, req_dict):"""用户登录,登录成功返回token;登录失败返回失败原因:param username:账号:param password:密码:return: json"""msg = {'code': normal_code, 'msg': mes.normal_code, 'data': {}}tablename = model.__tablename__encode_dict = {"tablename": tablename, "params": req_dict}encode_str = base64.b64encode(str(encode_dict).encode("utf-8"))msg['data']["id"] = req_dict.get("id")msg["id"] = req_dict.get("id")msg['token'] = encode_str.decode('utf-8')return JsonResponse(msg)def identify(self, request):"""用户鉴权:param request:本次请求对象:return: list"""msg = {'code': normal_code, 'msg': mes.normal_code, 'data': {}}# django的header被处理过了token = request.META.get('HTTP_TOKEN')if token  and token !="null":auth_token = copy.deepcopy(token)decode_str = base64.b64decode(auth_token).decode("utf8")decode_str=decode_str.replace('"null"','""').replace('null','""')decode_dict = eval(decode_str)tablename2 = decode_dict.get("tablename")params2 = decode_dict.get("params",{})datas=NoneallModels = apps.get_app_config('main').get_models()for model in allModels:if model.__tablename__ == tablename2:datas = model.getbyparams(model, model, params2)if not datas:msg['code'] = username_error_codemsg['msg'] = '找不到该用户信息'result = msgelse:request.session['tablename'] = tablename2request.session['params'] = params2msg['msg'] = '身份验证通过。'result = msgelse:msg['code'] = 401msg['msg'] = 'headers未包含认证信息。'result = msgreturn result

6.LW文档大纲参考

具体LW如何写法,可以咨询博主,耐心分享! 

你可能还有感兴趣的项目👇🏻👇🏻👇🏻

更多项目推荐:计算机毕业设计项目

Python毕业设计精品项目《1000套》

微信小程序毕业设计精品项目《1000套》

大数据/机器学习毕业设计精品项目《1000套》

如果大家有任何疑虑,请在下方咨询或评论

相关文章:

计算机毕业设计 基于Django的在线考试系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…...

Shell脚本linux登录自动检查

.bashrc 用于设置用户的 Bash shell 环境&#xff0c;在每次打开一个新的终端窗口或启动一个新的 Bash 会话时被执行 代码 login_check.sh #!/bin/bash clear LogFileNamepolling.$(date %F-%T) EchoFormat$(for (( i0; i<30; i )); do echo -n ""; done)# 显示…...

Golang | Leetcode Golang题解之第450题删除二叉搜索树的节点

题目&#xff1a; 题解&#xff1a; func deleteNode(root *TreeNode, key int) *TreeNode {var cur, curParent *TreeNode root, nilfor cur ! nil && cur.Val ! key {curParent curif cur.Val > key {cur cur.Left} else {cur cur.Right}}if cur nil {retur…...

Linux 之 Linux应用编程概念、文件IO、标准IO

Linux应用编程概念、文件IO、标准IO 学习任务&#xff1a; 1、 学习Linux 应用开发概念&#xff0c;什么是系统调用&#xff0c;什么是库函数 2、 学习文件IO&#xff1a;包括 read、write、open、close、lseek 3、 深入文件IO&#xff1a;错误处理、exit 等 4、 学习标准IO&a…...

PDF处理技巧:Windows电脑如何选择合适的 PDF 编辑器

您可以阅读本文以了解用于在 PC 上编辑 PDF 的顶级免费软件&#xff0c;而无需花费任何费用即可轻松进行快速编辑、拆分、合并、注释、转换和共享您的 PDF。 PDF 或可移植文档文件是由 Adobe 创建的一种多功能文件格式。它可以帮助您轻松可靠地交换文档&#xff0c;无论相关方…...

【c++】初步了解类和对象2

1、类的作用域 类定义了一个新的作用域&#xff0c;类的所有成员都在类的作用域中。在类体外定义成员时&#xff0c;需要使用 :: 作用域操作符指明成员属于哪个类域。 如图&#xff0c;此时在类内声明了函数firstUniqChar()&#xff0c;在类外进行了函数体的具体定义。 但是却…...

Python库pandas之四

Python库pandas之四 输入/输出read_json函数应用实列 输入/输出 read_json 函数 词法&#xff1a;pandas.read_json(path_or_buf, *, orientNone, typ‘frame’, dtypeNone, convert_axesNone, convert_datesTrue, keep_default_datesTrue, precise_floatFalse, date_unitNo…...

网络攻防技术--第三次作业

文章目录 第三次作业一、通过搜索引擎搜索自己在因特网上的足迹&#xff0c;并确认是否存在隐私和敏感信息泄露问题。如果有信息泄露&#xff0c;提出解决方法。二、结合实例总结web搜索和挖掘的方法。三、网络扫描有哪几种类型&#xff1f;分别有什么作用&#xff1f;利用一种…...

带隙基准Bandgap电路学习(一)

一、原理图 Bandgap中的运放&#xff08;折叠式Cascode&#xff09;采用P输入对&#xff0c;是因为运放输入端接的PNP三极管发射极端的电位&#xff0c;电压小&#xff0c;为了确保输入对管能够饱和工作&#xff0c;故采用P输入对管。此外&#xff0c;P管作为输入管&#xff0c…...

[前端][easyui]easyui select 默认值

function initRegion(key, val) {$(#Region).combobox({url: path /getTypeVaule.do?itemregion&key key "&value" val,editable: false, //不可编辑状态cache: false,valueField: TEMID,textField: TEMID,loadFilter: function (data) {data.unshift({…...

项目开发--大模型--个人问答知识库--chain控制

背景 1、langchain当中的chain prompt | llm | output_parser这个链能更长吗&#xff1f; 在 LangChain 中&#xff0c;链&#xff08;chain&#xff09;可以根据需要变得非常长&#xff0c;并且可以包含多种不同类型的组件。链的目的是将多个步骤串联起来&#xff0c;以便以…...

STM32—SPI通讯协议

前言 由于I2C开漏外加上拉电阻的电路结构&#xff0c;使得通信线高电平的驱动能力比较弱&#xff0c;这就会号致&#xff0c;通信线由候电平变到高电平的时候&#xff0c;这个上升沿耗时比较长&#xff0c;这会限制I2C的最大通信速度&#xff0c; 所以&#xff0c;I2C的标准模…...

Android 安装过程五 MSG_INSTALL消息的处理 安装

现在马上进入正式的安装流程。   从前面文章 Android 安装过程四 MSG_INSTALL消息的处理 安装之前的验证知道&#xff0c;在验证之后没有什么问题的情况下&#xff0c;会回调onVerificationComplete()方法&#xff0c;它位于PackageInstallerSession类中。 private void onVe…...

大数据开发--1.3 Linux的常用命令大全

目录 一. 终端命令格式 命令格式 说明&#xff1a; 二. 显示文件列表命令 -ls 作用 格式 ls常用选项 案例 三. 目录操作命令 -pwd 作用 格式 案例 四. 目录操作命令 -cd 作用 格式 案例 五. 目录操作命令 -mkdir 作用 格式 案…...

使用PuTTY连接到Amazon Linux实例

PuTTY 是一款免费的 SSH 客户端&#xff0c;广泛用于从 Windows 系统连接到 Linux 实例。如果你使用的是 Windows Server 2019 或更高版本&#xff0c;可以考虑使用内置的 OpenSSH 工具&#xff0c;但 PuTTY 依然是一个非常受欢迎的选择。 一、先决条件 在使用 PuTTY 连接到 …...

Nexus搭建maven私有仓库

内网访问&#xff0c;内网团队使用一个服务缓存节省外网宽带。 微服务开发中加速 Maven 项目构建&#xff0c;加快团队合作&#xff0c;提高工作效率 允许上传和下载私有库&#xff0c;并且不被外部访问&#xff0c;安全 稳定。 方便内部项目服务的依赖引用&#xff0c;而不需要…...

留存率的定义与SQL实现

1.什么是留存率 留存率是指在特定时间段内&#xff0c;仍然继续使用某项产品或服务的用户占用户总数的百分比。 通常&#xff0c;留存率会以日&#xff0c;周&#xff0c;或月为单位进行统计和分析。 2.SQL留存率常见问题 1.计算新用户登录的日期的次日留存率以及3日留存率 …...

Java的锁机制详解

在并发编程中&#xff0c;锁 是用于控制多个线程对共享资源进行访问的工具。Java提供了多种锁机制&#xff0c;从最基础的 synchronized 到高级的 ReentrantLock&#xff0c;这些锁帮助我们确保线程安全&#xff0c;并能有效避免数据竞争和死锁问题。 1. synchronized 关键字…...

用户登录与信息管理:实现小程序登录与用户信息存储

用户登录与信息管理&#xff1a;实现小程序登录与用户信息存储 在现代的移动应用中&#xff0c;用户登录与信息管理是构建个性化用户体验的基础。小程序作为轻量级的应用形式&#xff0c;在简化开发流程的同时&#xff0c;也需要我们妥善管理用户的登录状态与用户信息。本文将…...

Java如何调用构造函数和方法以及使用

调用构造函数的格式 构造函数在创建新对象时被调用。调用格式如下&#xff1a; ClassName objectName new ClassName(parameters); ClassName&#xff1a;你需要创建其实例的类的名称。 objectName&#xff1a;你将创建的对象的名称。 parameters&#xff1a;如果你使用的是…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一&#xff1a;HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二&#xff1a;Floyd 快慢指针法&#xff08;…...

本地部署drawDB结合内网穿透技术实现数据库远程管控方案

文章目录 前言1. Windows本地部署DrawDB2. 安装Cpolar内网穿透3. 实现公网访问DrawDB4. 固定DrawDB公网地址 前言 在数字化浪潮席卷全球的背景下&#xff0c;数据治理能力正日益成为构建现代企业核心竞争力的关键因素。无论是全球500强企业的数据中枢系统&#xff0c;还是初创…...