计算机毕业设计 基于Python的无人超市管理系统的设计与实现 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 订单管理
5.核心代码
5.1 Settings.py
5.2 Urls.py
5.3 Users_v.py
5.4 Auth.py
6.LW文档大纲参考
背景意义介绍:
基于Python的无人超市管理系统,是利用现代信息技术对传统零售业进行革新的典型应用。随着人工智能、物联网和大数据技术的快速发展,无人超市作为一种新型的零售模式,正在全球范围内迅速发展。这种模式不仅能够提高运营效率、降低人力成本,还能为消费者提供更加便捷、个性化的购物体验。无人超市管理系统通过自动化的购物流程和智能化的商品管理,实现了对超市运营的全面优化。
该系统通过Python进行开发,利用其强大的数据处理能力和丰富的库资源,实现了对超市商品的实时监控、库存管理、订单处理等功能。系统前端采用Vue.js技术,为用户提供了直观、易用的交互界面,后端则基于SpringBoot框架,确保了服务端应用的高效性和稳定性。系统的开发对于推动零售业的数字化转型、提升消费者购物体验、优化资源配置具有重要的战略意义 。
1.技术选型
Python、Django、vue、elementui、html、css、js、mysql、jdk1.8
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 订单管理

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套》
如果大家有任何疑虑,请在下方咨询或评论
相关文章:
计算机毕业设计 基于Python的无人超市管理系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
dockercommit 后的镜像没有数据
docker commit 后的镜像没有数据 docker commit load save mysql背景 工位机环境迁移MySQL时,使用commit》save》MySQL转移》load》run -p,使用数据库连接工具连接成功后,发现没有MySQL中没有库表等数据。 原因分析 直接搜,找…...
基于SD卡的基因(DNA)炫酷LED桌面灯
基于SD卡的基因(DNA)炫酷LED桌面灯 一、介绍一个已知的问题解决办法 二、支持目录材料准备LED灯光文件(我使用的PLA颜色) 三、 打印部件和焊接四、拼装打印的DNA散件五、组合DNA螺旋结构六、执行DNA文件七、程序烧录八、总结及成品…...
【算法系列-链表】设计链表
【算法系列-链表】设计链表 文章目录 【算法系列-链表】设计链表1. 算法分析🛸2. 解题过程🎬2.1 初始化2.1.1 思路分析🎯2.1.2 代码示例🌰 2.2 get(获取第n个节点的值)2.2.1 思路分析🎯2.2.2 代码示例🌰 2.…...
螺狮壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
3 网络及IP规划 3.1 容器连接网络初步规划 规划所有容器与虚拟机的三张网卡以macvlan的方式进行连接(以后根据应用可以更改),在docker下创建nat、wifi、nei、wai四张网卡,他们和虚拟机及宿主机上NIC的相关连接参数如下表所示&am…...
Zookeeper下载、安装配置
一、基础配置 使用zookeeper 需要提前配置安装好zookeeper的环境 端口 默认的2888端 默认的 2888端口主要用于Leader和Follower之间的通信。在ZooKeeper集群中,这个端口用于数据同步、服务器初始化以及会话管理等方面的通信。默认的3888 3888端口则是在选举L…...
【代码记录】多线程示例代码
用多线程处理多gpu模型输入的时候写的,感觉复用性会很不错,用以记录和分享 import threading def multithreadhelper(workfn,alldata:list,number:int):# workfn takes only one argument: a example of alldata# data preparationdef chunk_data(data,…...
【数据结构】什么是平衡二叉搜索树(AVL Tree)?
🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 📌AVL树的概念 📌AVL树的操作 🎏AVL树的插入操作 ↩️右单旋 ↩️↪️右左双旋 ↪️↩️左右双旋 ↪️左单旋 🎏AVL树的删…...
ip的类型有多少种?我想做大数据需要使用哪一种
IP地址主要分为两种类型: IPv4(Internet Protocol version 4): 由32位二进制数组成,通常以四个十进制数表示(例如:192.168.1.1)。每个十进制数的范围是0到255。IPv4地址的总数量约为…...
位运算(6)_只出现一次的数字 II
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 位运算(6)_只出现一次的数字 II 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 …...
C#的Socket编程细节
目录 Socket中的Accept 步骤1:创建并绑定服务端套接字 步骤2:接受连接请求 步骤3:与客户端通信 步骤4:关闭套接字 注意事项 Socket中的Connected 使用Connected属性 客户端检查连接状态 服务端检查连接状态 注意事项 S…...
python三局两胜游戏
分为以下步骤实现这个功能 1、猜拳 2、机器产生数值 3、人去猜数字,定义剪刀石头布 4、控制机器产生,123程序运行的时候可能会出现一点玄学问题,就是,提示n1这一行不符合pep8然后报错,不用管,运行就可以&am…...
java:brew安装rabbitmq以及简单示例
什么是消息队列mq 可以看我之前写的这篇 消息队列MQ rabbitmq简介 RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在…...
基于单片机跑步机控制系统设计
** 文章目录 前言概要功能设计设计思路 软件设计效果图 程序文章目录 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对…...
【架构】efk日志监控
文章目录 一、EFK组件及其功能二、EFK日志监控的工作流程三、EFK日志监控的优势四、EFK日志监控的应用场景 推荐阅读 EFK日志监控是一种高效的日志管理解决方案,由Elasticsearch、Fluentd(或Logstash)和Kibana三个开源工具组成。以下是对EFK日…...
亚信安全发布第34期《勒索家族和勒索事件监控报告》
本周态势快速感知 本周全球共监测到勒索事件91起,近三周勒索事件数量较为稳定。从整体上看,Ransomhub是影响最严重的勒索家族;Play和ElDorado恶意家族也是两个活动频繁的恶意家族,需要注意防范。本周,土耳其公司巴克皮…...
如何在实际应用中使用回溯算法解决问题?
如何在实际应用中使用回溯算法解决问题? 回溯算法是一种强大的问题解决方法,它通过尝试不同的选择并在遇到不可行的情况时回退,以找到满足特定条件的解决方案。在实际应用中,回溯算法可以用于解决各种复杂的问题。本文将介绍如何在实际应用中使用回溯算法,并通过一些案例…...
9. 正则表达式
编程工具和技术是以一种混乱、进化的方式生存和传播的。获胜的并不总是最好或最杰出的工具,而是那些在合适的利基市场中发挥足够好的功能,或者恰好与另一项成功的技术相结合的工具。 在本章中,我将讨论这样一种工具--正则表达式。正则表达式是…...
初始C++模板
1.泛型编程 1.1什么事泛型编程 在学习C语言时,我们时常会有这样的烦恼: 在针对每一种不同的类型变量进行函数传参或者是运算处理时,我们总是编写不同的函数或者是进行不同的处理,才能达到目的,这时,我们…...
建投数据自主研发相关系统获得欧拉操作系统及华为鲲鹏技术认证书
近日,经欧拉生态创新中心和华为技术有限公司测评,建投数据自主研发的投资项目管理系统、全面风险管理信息系统、商业不动产业务系统,完成了基于欧拉操作系统openEuler 22.03、华为鲲鹏Kunpeng 920(Taisha 200)的兼容性…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

