BBS項目day02、注冊、登錄(登錄之隨機驗證碼)、修改密碼、退出登錄、密碼加密加鹽

一、注冊

1.注冊之前端頁面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>注冊頁面</title><!--動態引入文件-->{% load static %}<script src="{% static 'js/jquery.min.js' %}"></script><link href="{% static 'bootstrap/css/bootstrap.min.css' %}" rel="stylesheet"><script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script><script src="{% static 'layer/layer.js' %}"></script><style>body {font-family: Arial, sans-serif;margin: 0;padding: 0;background-image: url('https://pegasus.epweike.com/Public/uploads/introduce/55dc0c8c010df.jpg');background-size: cover;background-repeat: no-repeat;background-position: center;min-height: 100vh;display: flex;justify-content: center;align-items: center;}.container {background-color: rgba(255, 255, 255, 0.9);border-radius: 10px;box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);padding: 20px;text-align: center;width: 100%;max-width: 600px;}h1 {margin-top: 0;}.form-group {margin-bottom: 20px;}label {display: block;font-weight: bold;}.form-control {width: 100%;padding: 10px;border: 1px solid #ccc;border-radius: 5px;}.btn {background-color: #007bff;color: #fff;padding: 10px 20px;border: none;border-radius: 5px;cursor: pointer;width: 100%;}.btn:hover {background-color: #0056b3;}</style>
</head>
<body><div class="container"><div class="row"><div class="col-md-8 col-md-offset-2"><h1 class="text-center">注冊頁面</h1><div class="form-group"><label for="username">用戶姓名</label><input type="text" id="username" class="form-control" msg="用戶名必須填寫"></div><div class="form-group"><label for="username">用戶密碼</label><input type="password" id="password" class="form-control" msg="密碼必須填寫"></div><div class="form-group"><label for="username">確認密碼</label><input type="password" id="re_password" class="form-control" msg="確認密碼必須填寫"></div><div class="form-group"><label for="username">郵箱</label><input type="text" id="email" class="form-control" msg="郵箱必須填寫"></div><div class="form-group"><label for="myfile">上傳頭像:<img src="/static/img/default.png" id="myImg" width="100" alt=""></label><input type="file" id="myfile" style="display: none" class="form-control"></div><div class="form-group"><input type="button" value="提交" class="btn btn-primary btn-block"></div></div></div>
</div>{# 綁定點擊事件 #}
<script>// 在頁面顯示圖片$("#myfile").change(function () {// 1.需要借助于文件閱讀器(JavaScript的)let myFileReaderObj = new FileReader();// 2.獲取文件數據,在此處可以將#myfile改為this{#var myFileDataObj = $("#myfile")[0].files[0];#}var myFileDataObj = $(this)[0].files[0];// 3.把獲取到的文件數據提交給閱讀器來獲取圖片myFileReaderObj.readAsDataURL(myFileDataObj);  // 這是異步提交// 4.把它讀取的文件數據放到img的src中// 由于異步提交的緣故,代碼會一直往下走,從而導致圖片不能加載出來,// 故而為了防止此類事件的發生,用onload等待文件或圖片加載完再接著往下執行myFileReaderObj.onload = function () {$("#myImg").attr('src', myFileReaderObj.result);}});$(".btn").click(function () {// 1.獲取表單數據let username = $("#username").val();let password = $("#password").val();let re_password = $("#re_password").val();let email = $("#email").val();// 獲取頭像數據let myImg = $("#myfile")[0].files[0];console.log(myImg)// 2.參數驗證//方式2:在input中寫入 msg="用戶名必須填寫"等,然后循環取值var ids = ['username', 'password', 're_password', 'email'];$.each(ids, function (index, value) {if (!$('#' + value).val()) {layer.msg($("#" + value).attr('msg'));return;}});if (re_password !== password) {layer.msg('兩次密碼不一致');return;}// 由于是文件類型,所以data還要接收forData對象,接收了forData對象,// contentType參數和processData參數則要設置為falselet formData = new FormData();formData.append('username', username);formData.append('password', password);formData.append('re_password', re_password);formData.append('email', email);formData.append('myfile', myImg);formData.append('csrfmiddlewaretoken', '{{ csrf_token }}');// 3.發起Ajax請求$.ajax({url: '',type: 'post',data: formData,contentType: false,processData: false,success: function (res) {if (res.code === 200) {{#layer.msg(res.msg, {'icon': 1}, function () {#}layer.msg(res.msg, {}, function () {location.href = res.url;});} else {layer.msg(res.msg);}},});// 參數驗證方式1:/*if (!username) {layer.msg('用戶名必須填寫');return;}if (!password) {layer.msg('密碼必須填寫');return;}if (!re_password) {layer.msg('確認必須填寫');return;}if (!email) {layer.msg('郵箱必須填寫');return;}*/});
</script></body>
</html>

2.注冊之后臺功能

def register(request):# auth_user表擴展之后auth模塊依然是可以使用的,在這使用最原生的# 判斷是否為Ajax提交# print(request.is_ajax())if request.method == 'POST':# 1.定義返回前端的json數據格式back_dict = {'code': 200, 'msg': '注冊成功', 'data': []}# 2.接收前端提交過來的參數username = request.POST.get('username')password = request.POST.get('password')re_password = request.POST.get('re_password')email = request.POST.get('email')myfile = request.FILES.get('myfile')# 3.驗證參數:盡量是先驗證不合法性,即反著過來驗證,# 正向驗證也可以,只是會嵌套很多的elif語句if not username:# 1xx 2xx 3xx 4xx 5xx等一般是響應狀態碼,而我們下面寫的業務狀態碼(人為規定的)back_dict['code'] = 1001back_dict['msg'] = '用戶名必填'return JsonResponse(back_dict)if not password:back_dict['code'] = 1003back_dict['msg'] = '密碼必填'return JsonResponse(back_dict)if not re_password:back_dict['code'] = 1004back_dict['msg'] = '確認密碼必填'return JsonResponse(back_dict)if password != re_password:back_dict['code'] = 1002back_dict['msg'] = '兩次密碼不一致'return JsonResponse(back_dict)if not email:back_dict['code'] = 1005back_dict['msg'] = '郵箱必填'return JsonResponse(back_dict)# if len(password) >= 6 and len(password) <=20:#     back_dict['code'] = 1000#     back_dict['msg'] = '密碼必須是6-20位的'#     return JsonResponse(back_dict)# 4.開設處理正常的業務邏輯new_pwd = get_md5(password)data_dict = {}data_dict['username'] = usernamedata_dict['password'] = new_pwd[: 16]data_dict['email'] = emailif myfile:data_dict['avatar'] = myfile# models.UserInfo.objects.create(username=username, password=new_pwd, email=email, avatar=myfile)# 改為下述models.UserInfo.objects.create(**data_dict)# 5.返回前端數據back_dict['url'] = '/login/'return JsonResponse(back_dict)return render(request, 'register.html', locals())

3.密碼加密加鹽

# auth模塊自帶的
from django.conf import settings# 密碼加鹽
import hashlibdef get_md5(password):m = hashlib.md5()pwd = password + settings.SECRET_KEYm.update(pwd.encode('utf8'))return m.hexdigest()

二、登錄

1.登錄之前端頁面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>注冊頁面</title><!--動態引入文件-->{% load static %}<script src="{% static 'js/jquery.min.js' %}"></script><link href="{% static 'bootstrap/css/bootstrap.min.css' %}" rel="stylesheet"><script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script><script src="{% static 'layer/layer.js' %}"></script>{#            background: url('https://img0.baidu.com/it/u=741268616,1401664941&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1691859600&t=5c5bee3052ecec363c1ecc2eea9ac3f7') no-repeat; background-size: 100% 130%;#}<style>body {font-family: Arial, sans-serif;margin: 0;padding: 0;background-image: url('https://pegasus.epweike.com/Public/uploads/introduce/55dc0c8c010df.jpg');background-size: cover;background-repeat: no-repeat;background-position: center;min-height: 100vh;display: flex;justify-content: center;align-items: center;}.container {background-color: rgba(255, 255, 255, 0.9);border-radius: 10px;box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);padding: 20px;text-align: center;width: 100%;max-width: 600px;}h1 {margin-top: 0;}.form-group {margin-bottom: 20px;}label {display: block;font-weight: bold;}.form-control {width: 100%;padding: 10px;border: 1px solid #ccc;border-radius: 5px;}.btn {background-color: #007bff;color: #fff;padding: 10px 20px;border: none;border-radius: 5px;cursor: pointer;width: 100%;}.btn:hover {background-color: #0056b3;}</style></head><body><div class="container"><div class="row"><div class="col-md-8 col-md-offset-2"><h1 class="text-center">登錄頁面</h1><div class="form-group"><label for="username">用戶姓名</label><input type="text" id="username" class="form-control" msg="用戶名必須填寫"></div><div class="form-group"><label for="username">用戶密碼</label><input type="password" id="password" class="form-control" msg="密碼必須填寫"></div><div class="form-group"><label for="username">驗證碼</label><div class="row"><div class="col-md-6"><input type="text" id="code" class="form-control" msg="驗證碼必須填寫"></div><div class="col-md-6"><img src="/get_code/" style=" width: 160px; height: 35px;" alt=""></div></div></div><div class="form-group"><input type="button" value="提交" class="btn btn-primary btn-block"></div></div></div>
</div><script>$(".btn").click(function () {// 1.獲取表單數據let username = $("#username").val();let password = $("#password").val();let code = $("#code").val();// 2.參數驗證//方式2:在input中寫入 msg="用戶名必須填寫"等,然后循環取值var ids = ['username', 'password', 'code'];$.each(ids, function (index, value) {if (!$('#' + value).val()) {layer.msg($("#" + value).attr('msg'));return;}});if (code.length !== 5) {layer.msg('驗證碼輸入不正確');return;}// 3.發起Ajax請求$.ajax({url: '',type: 'post',data: {username: username, password: password, code: code, csrfmiddlewaretoken: '{{ csrf_token }}'},success: function (res) {if (res.code === 200) {{#layer.msg(res.msg, {'icon': 1}, function () {#}layer.msg(res.msg, {}, function () {location.href = res.url;});} else {layer.msg(res.msg, {});}},});});
</script></body>
</html>

2.登錄之后端

def login(request):'''驗證碼:一般是圖片驗證碼,短信驗證碼(平臺)滑動驗證碼(平臺)驗證碼的作用:人機識別,防止爬蟲------->一般都需要登錄之后才能訪問:param request::return:'''if request.method == 'POST':# 1.返回json的數據格式back_dict = {'code': 200, 'msg': '登錄成功,3s之后自動跳轉', 'data': []}username = request.POST.get('username')password = request.POST.get('password')code = request.POST.get('code')# 2.驗證參數if not username:back_dict['code'] = 1006back_dict['msg'] = '用戶名必填'return JsonResponse(back_dict)if not password:back_dict['code'] = 1007back_dict['msg'] = '密碼必填'return JsonResponse(back_dict)# 由于驗證碼可能有大小寫組成,所以,需要全部設置為大寫或者小寫if code.upper() != request.session.get('code').upper():back_dict['code'] = 1008back_dict['msg'] = '驗證碼必填'return JsonResponse(back_dict)# 4.業務邏輯處理new_pwd = get_md5(password)user_obj = models.UserInfo.objects.filter(username=username, password=new_pwd[: 16]).first()if not user_obj:back_dict['code'] = 1009back_dict['msg'] = '用戶名或者密碼錯誤'return JsonResponse(back_dict)# 安全相關:密碼加密,sql注入,xss攻擊,csrf,撞庫等# 登錄成功,保存用戶狀態request.session['username'] = user_obj.usernamerequest.session['id'] = user_obj.pkback_dict['url'] = '/home/'return JsonResponse(back_dict)return render(request, 'login.html', locals())

2.登錄之隨機驗證碼

"""
圖片相關的模塊pip3 install pillow
"""
from PIL import Image, ImageDraw, ImageFont"""
Image:生成圖片
ImageDraw:能夠在圖片上亂涂亂畫
ImageFont:控制字體樣式
"""
from io import BytesIO, StringIO"""
內存管理器模塊
BytesIO:臨時幫你存儲數據 返回的時候數據是二進制
StringIO:臨時幫你存儲數據 返回的時候數據是字符串
"""
import randomdef get_random():return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)def get_code(request):# 最終步驟4:寫圖片驗證碼img_obj = Image.new('RGB', (430, 35), get_random())img_draw = ImageDraw.Draw(img_obj)  # 產生一個畫筆對象# 字體地址下載 https://www.zhaozi.cn/s/all/freebusiness/img_font = ImageFont.truetype('static/font/yun.ttf', 30)  # 字體樣式 大小# 隨機驗證碼  五位數的隨機驗證碼  數字 小寫字母 大寫字母code = ''for i in range(5):random_upper = chr(random.randint(65, 90))random_lower = chr(random.randint(97, 122))random_int = str(random.randint(0, 9))# 從上面三個里面隨機選擇一個tmp = random.choice([random_lower, random_upper, random_int])# 將產生的隨機字符串寫入到圖片上"""為什么一個個寫而不是生成好了之后再寫因為一個個寫能夠控制每個字體的間隙 而生成好之后再寫的話間隙就沒法控制了"""img_draw.text((i * 60 + 60, -2), tmp, get_random(), img_font)# 拼接隨機字符串code += tmpprint(code)# 隨機驗證碼在登陸的視圖函數里面需要用到 要比對 所以要找地方存起來并且其他視圖函數也能拿到request.session['code'] = codeio_obj = BytesIO()img_obj.save(io_obj, 'png')return HttpResponse(io_obj.getvalue())

三、首頁

1.首頁之前端(導航條和模態框)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>{% load static %}<script src="{% static 'js/jquery.min.js' %}"></script><link href="{% static 'bootstrap/css/bootstrap.min.css' %}" rel="stylesheet"><script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script><script src="{% static 'layer/layer.js' %}"></script></head>
<body><nav class="navbar navbar-inverse"><div class="container-fluid"><!-- Brand and toggle get grouped for better mobile display --><div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse"data-target="#bs-example-navbar-collapse-1" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a class="navbar-brand" href="#">全球最大的博客網站</a></div><!-- Collect the nav links, forms, and other content for toggling --><div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"><ul class="nav navbar-nav"><li class="active"><a href="#">文章 <span class="sr-only">(current)</span></a></li><li><a href="#">分類</a></li><li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"aria-expanded="false">點我看更多美女哦 <span class="caret"></span></a><ul class="dropdown-menu"><li><a href="#">Action</a></li><li><a href="#">Another action</a></li><li><a href="#">Something else here</a></li><li role="separator" class="divider"></li><li><a href="#">Separated link</a></li><li role="separator" class="divider"></li><li><a href="#">One more separated link</a></li></ul></li></ul><form class="navbar-form navbar-left"><div class="form-group"><input type="text" class="form-control" placeholder="Search"></div><button type="submit" class="btn btn-default">搜索</button></form><!-- 模態框 --><ul class="nav navbar-nav navbar-right">{% if request.session.username %}<li><a href="#">{{ request.session.username }}</a></li><li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"aria-expanded="false">更多操作 <span class="caret"></span></a><ul class="dropdown-menu"><li><a href="#" data-toggle="modal" data-target=".bs-example-modal-lg">修改密碼</a></li><li><a href="#">更改頭像</a></li><li><a href="/logout/">退出登錄</a></li><li><a href="#">后臺管理</a></li></ul></li>{% else %}<li><a href="/login/">登錄</a></li><li><a href="/register/">注冊</a></li>{% endif %}</ul><div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"><div class="modal-dialog modal-lg" role="document"><div class="modal-content"><div class="row"><h1 class="text-center">修改密碼</h1><div class="col-md-8 col-md-offset-2"><div class="form-group">用戶名:<input type="text" readonly value="{{ request.session.username }}" class="form-control"></div><div class="form-group">原密碼:<input type="password" id="old_password" class="form-control" msg="原密碼必須輸入"></div><div class="form-group">新密碼:<input type="password" id="new_password" class="form-control" msg="原密碼必須輸入"></div><div class="form-group">確認密碼:<input type="password" id="re_password" class="form-control" msg="原密碼必須輸入"></div><div class="form-group"><input type="button" value="修改密碼" class="btn btn-primary btn-block"></div></div></div></div></div></div></div><!-- /.navbar-collapse --></div><!-- /.container-fluid -->
</nav><script>$(".btn").click(function () {// 1.獲取參數let old_password = $("#old_password").val();let new_password = $("#new_password").val();let re_password = $("#re_password").val();// 2.參數驗證let ids = ['old_password', 'new_password', 're_password'];$.each(ids, function (index, value) {if (!$('#' + value).val()) {layer.msg($('#' + value).attr('msg'));return;}});// 3.發起Ajax請求$.ajax({url: '/set_password/',type: 'post',data: {old_password:old_password, new_password:new_password, re_password:re_password, csrfmiddlewaretoken:'{{ csrf_token }}'},success: function (res) {if (res.code == 200) {layer.msg(res.msg, {}, function () {location.reload();});} else {layer.msg(res.msg, {});}}});});
</script></body>
</html>

在這里插入圖片描述

2.首頁之后端(修改密碼)

def set_password(request):if request.method == 'POST':# 1.先設定給前端返回的json格式的數據back_dict = {'code': 200, 'msg': '修改密碼成功,3s后自動跳轉', 'data': []}# 2.接收前端提交過來的參數old_password = request.POST.get('old_password')new_password = request.POST.get('new_password')re_password = request.POST.get('re_password')# 3.驗證參數if new_password != re_password:back_dict['code'] = 1200back_dict['msg'] = '兩次密碼輸入不一致'return JsonResponse(back_dict)# 驗證老密碼是否正確old_pwd = get_md5(old_password)user_obj = models.UserInfo.objects.filter(username=request.session.get('username'), password=old_pwd[: 16]).first()if not user_obj:back_dict['code'] = 1201back_dict['msg'] = '原密碼不正確'return JsonResponse(back_dict)# 4.修改新密碼new_pwd = get_md5(new_password)print(new_pwd)models.UserInfo.objects.filter(pk=request.session.get('id')).update(password=new_pwd[: 16])return JsonResponse(back_dict)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38792.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38792.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38792.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【springmvc系】利用RequestBodyAdviceAdapter做接口鑒權

需求 有個簡單的需求&#xff0c;對于第三方接口我們需要做個簡單的鑒權機制&#xff0c;這邊使用的是非對稱性加密的機制。我們提供三方公鑰&#xff0c;他們通過公鑰對接口json報文使用加密后的報文請求&#xff0c;我們通過對接收過來的請求某一個加密報文字段來進行RSA解密…

婚戀交友h5多端小程序開源版開發

婚戀交友h5多端小程序開源版開發 以下是婚戀交友H5多端小程序的功能列表&#xff1a; 用戶注冊和登錄&#xff1a;用戶可以通過手機號碼或第三方賬號注冊和登錄。個人信息填寫&#xff1a;用戶可以填寫個人基本信息&#xff0c;包括姓名、性別、年齡、身高、體重、學歷、職業等…

Java課題筆記~ 數據提交的方式

前四種數據注入的方式&#xff0c;會自動進行類型轉換。但無法自動轉換日期類型。 &#xff08;1&#xff09;單個數據&#xff08;基本數據類型&#xff09;注入 在方法中聲明一個和表單提交的參數名稱相同的參數&#xff0c;由框架按照名稱直接注入。 &#xff08;2&#x…

微信小程序nfc指令異常記錄

小程序nfc相關代碼: readEvent(){wx.getNFCAdapter().startDiscovery({success:(res)>{console.log(--------------start--------)console.log(res);wx.getNFCAdapter().onDiscovered(callback>{console.log(------------onDiscovered----------)console.log(callback)…

問題:【IntelliJ IDEA】解決idea自動聲明變量加finall修飾符問題

問題:【IntelliJ IDEA】解決idea自動聲明變量加finall修飾符問題 場景復現 1 new String() 2 快捷方式生成變量 final修飾的 final String s new String();步驟一&#xff1a;確保settings配置信息 settings-----》Editor------》Code Style--------》java下的這兩個選項不…

echarts 柱狀圖-折線圖-餅圖的基礎使用

上圖示例圖表展示相關配置&#xff1a; var myChart echarts.init(this.$refs.firstMain);myChart.setOption({legend: { // 圖例設置top: "15%",type: "scroll",orient: "vertical",//圖例列表的布局朝向。left: "right",pageIconCo…

安全加密框架圖——Oracle安全開發者

Oracle安全開發者 ACLs 設計 ACLs&#xff08;訪問控制列表&#xff09;時&#xff0c;可以根據以下思路進行設計&#xff1a; 所有者文件權限&#xff1a;確定文件的所有者能夠對文件執行哪些操作&#xff0c;如讀取、寫入、執行等。這可以根據文件的性質和擁有者的職責來決…

k8s集群部署vmalert和prometheusalert實現釘釘告警

先決條件 安裝以下軟件包&#xff1a;git, kubectl, helm, helm-docs&#xff0c;請參閱本教程。 1、安裝 helm wget https://xxx-xx.oss-cn-xxx.aliyuncs.com/helm-v3.8.1-linux-amd64.tar.gz tar xvzf helm-v3.8.1-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin…

12 注冊登錄

12 注冊登錄 整體概述 使用數據庫連接池實現服務器訪問數據庫的功能&#xff0c;使用POST請求完成注冊和登錄的校驗工作。 本文內容 介紹同步實現注冊登錄功能&#xff0c;具體涉及到流程圖、載入數據庫表、提取用戶名和密碼、注冊登錄流程與頁面跳轉的代碼實現。 流程圖&a…

六、Linux系統下,文件操作命令都有哪些?

總括&#xff1a; 創建文件/文件夾&#xff1a;touch&#xff1b; 查看&#xff1a;cat/more&#xff1b; 復制&#xff1a;copy&#xff1b; 移動文件/文件夾&#xff1a;mv&#xff1b; 刪除&#xff1a;rm&#xff1b; 1、創建文件 &#xff08;1&#xff09;語法&#x…

docker私有倉庫

# 有個遠程倉庫 &#xff0c;docker官方提供的 ---》我們可以把我們的鏡像傳上去 # 公司做的鏡像&#xff0c;一般不放在遠程倉庫&#xff0c;公司會自己搭建私有倉庫&#xff08;把公司制作的鏡像傳到私有倉庫&#xff09; 1.鏡像傳到官方倉庫 # 第0步&#xff1a;在遠端創建…

阿里云與中國中醫科學院合作,推動中醫藥行業數字化和智能化發展

據相關媒體消息&#xff0c;阿里云與中國中醫科學院的合作旨在推動中醫藥行業的數字化和智能化發展。隨著互聯網的進步和相關政策的支持&#xff0c;中醫藥產業受到了國家的高度關注。這次合作將以“互聯網 中醫藥”為載體&#xff0c;致力于推進中醫藥文化的傳承和創新發展。…

AIGC繪畫:基于Stable Diffusion進行AI繪圖

文章目錄 AIGC深度學習模型繪畫系統stable diffusion簡介stable diffusion應用現狀在線網站云端部署本地部署Stable Diffusion AIGC深度學習模型繪畫系統 stable diffusion簡介 Stable Diffusion是2022年發布的深度學習文本到圖像生成模型&#xff0c;它主要用于根據文本的描述…

UG NX二次開發(C++)-UI Styler中選擇組件或者實體后設置為工作組件

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 1、前言2、在NX2007中創建一個裝配體實例2.1 裝配體模型2.2 欲實現的功能3、創建對話框文件4、在VS2022中創建一個工程項目4.1 創建項目4.1 在hpp中添加頭文件4.2 在cpp中添加代碼4.3 生成dll5、測…

通俗講解-動量梯度下降法原理與代碼實例

本站原創文章&#xff0c;轉載請說明來自《老餅講解-BP神經網絡》bp.bbbdata.com 目錄 一.動量梯度下降法介紹 1.1 動量梯度下降法簡介與思想 1.2 動量梯度下降法的算法流程 二.動量梯度下降法代碼實例 2.1 動量梯度下降法實例代碼 一.動量梯度下降法介紹…

2023年上半年數學建模競賽題目匯總與難度分析

2023年上半年數學建模競賽題目匯總與難度分析 ?由于近年來國賽ABC題出題方式漂浮不定&#xff0c;沒有太大的定性&#xff0c;目前總體的命題方向為&#xff0c;由之前的單一模型問題變為數據分析評價優化或者預測類題目是B、C題的主要命題方向。為了更好地把握今年命題的主方…

vue3-vuex

一、概念 &#xff08;1&#xff09;Vuex 是一個狀態和數據管理的框架&#xff0c;負責管理項目中多個組件和多個頁面共享的數據。 &#xff08;2&#xff09;在開發項目的時候&#xff0c;我們就會把數據分成兩個部分&#xff0c;一種數據是在某個組件內部使用&#xff0c;我…

【C++】STL案例1-評委打分

0.前言 1.系統自動生成的評委評分代碼&#xff1a; #include <iostream> using namespace std; #include <deque> #include <vector> #include <algorithm> #include <string>//選手類 class Player { public:Player(string name, float score)…

機器學習深度學習——機器翻譯(序列生成策略)

&#x1f468;?&#x1f393;作者簡介&#xff1a;一位即將上大四&#xff0c;正專攻機器學習的保研er &#x1f30c;上期文章&#xff1a;機器學習&&深度學習——seq2seq實現機器翻譯&#xff08;詳細實現與原理推導&#xff09; &#x1f4da;訂閱專欄&#xff1a;機…

ClickHouse常見的DDL語句

1.創建庫 CREATE DATABASE IF NOT EXISTS mytestdb; 2.創建表 CREATE TABLE user_info ( user_id UInt32 comment 用戶標識, name String comment 用戶名, create_date DateTime DEFAULT now() comment 創建時間, sex Enum8(男 1, 女 2) comment 性別, …