2023.2.14
2023.2.24
用VS调试数据结构C语言代码,执行输入语句时,出现错误:
经查找后发现错误:
格式出现错误,应该为”%d",不能带空格。
2023.4.17
1.使用pip安装flask时报以下错误:
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1122)'))': /simple/flask/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None))
after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1122)'))': /simple/flask/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None))
after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1122)'))': /simple/flask/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None))
after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1122)'))': /simple/flask/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None))
after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1122)'))': /simple/flask/
Could not fetch URL Links for flask: There was a problem confirming the s
sl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded wit
h url: /simple/flask/ (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1122)'))) - skipping
ERROR: Could not find a version that satisfies the requirement flask (from versions: none)
ERROR: No matching distribution found for flask
后来发现是开着代理(VPN)下的,网络不通畅。
2.后端账户密码验证的知识:
使用哈希和盐是一种常见的密码存储和验证方式,可以增加密码破解的难度和安全性。哈希是一种将任意长度的消息压缩成固定长度输出的函数,而盐是一个随机字符串,可以增加破解密码的难度。下面是一个使用哈希和盐来存储和验证用户密码的示例代码:
```python
import hashlib
import os
# 生成盐,可以使用随机字符串或者其他随机值
salt = os.urandom(16)
# 生成密码哈希,将密码和盐拼接后进行哈希运算
password = "mypassword"
salted_password = password.encode() + salt
hashed_password = hashlib.sha256(salted_password).hexdigest()
# 存储哈希和盐,通常可以将它们保存在数据库中
stored_hashed_password = hashed_password
stored_salt = salt
# 验证用户密码,将用户输入的密码和盐拼接后进行哈希运算,然后和存储的密码哈希进行比较
user_password = input("请输入密码:")
salted_user_password = user_password.encode() + stored_salt
hashed_user_password = hashlib.sha256(salted_user_password).hexdigest()
if hashed_user_password == stored_hashed_password:
print("密码正确!")
else:
print("密码错误!")
```
在上面的代码中,我们首先生成一个随机盐,然后将用户密码和盐拼接在一起,使用哈希函数对它们进行哈希运算。存储时,我们将密码哈希和盐分别保存在数据库中。当用户输入密码时,我们将输入的密码和存储的盐拼接在一起,使用相同的哈希函数对它们进行哈希运算,然后将它们与存储的密码哈希进行比较。如果它们相同,则密码正确,否则密码错误。
请注意,此代码仅用于演示目的,实际应用中需要更加严格的安全措施和验证,例如使用更强的哈希函数和更长的盐值,以及使用加盐哈希函数来防止彩虹表攻击等。
2023.4.18
运行flask应用程序报错:
Traceback (most recent call last):
File "D:\pycharm\project\register.py", line 66, in <module>
app.run(host='localhost')
File "D:\python\lib\site-packages\flask\app.py", line 1191, in run
run_simple(t.cast(str, host), port, self, **options)
File "D:\python\lib\site-packages\werkzeug\serving.py", line 1037, in run_simple
srv = make_server(
File "D:\python\lib\site-packages\werkzeug\serving.py", line 877, in make_server
return ThreadedWSGIServer(
File "D:\python\lib\site-packages\werkzeug\serving.py", line 710, in __init__
self.server_bind()
File "D:\python\lib\http\server.py", line 140, in server_bind
self.server_name = socket.getfqdn(host)
File "D:\python\lib\socket.py", line 791, in getfqdn
hostname, aliases, ipaddrs = gethostbyaddr(name)
UnicodeDecodeError: 'utf-89 in position 0: invalid continuation byte' codec can't decode byte 0xc
根据chatgpt的解释,是编码格式有问题:
这段错误信息看起来是一个Unicode解码错误,可能是因为某些字符串包含了非UTF-8编码的字符。
根据错误信息中的提示,错误发生在执行
socket.getfqdn(host)
时,这个函数返回主机的全限定域名(Fully Qualified Domain Name,FQDN),用于在HTTP服务器的响应头中设置Server
字段。解决这个问题的方法是在启动Flask开发服务器时,指定一个有效的主机名。例如,您可以将
app.run()
改为以下代码:app.run(host='localhost')
这会将主机名设置为
localhost
,并且应该可以避免Unicode解码错误。如果您需要通过网络访问您的应用程序,则需要将
host
参数设置为您计算机的IP地址或公共域名。例如:app.run(host='0.0.0.0')
这将允许通过计算机的IP地址或公共域名访问应用程序。请注意,这可能会带来一些安全风险,并且应该仅在开发和测试环境中使用。在生产环境中,应该使用一个可靠的Web服务器(如Apache或Nginx)来部署您的应用程序。
但是修改后并没有起到作用,我关注到报错中的最后一句话:
UnicodeDecodeError: 'utf-89 in position 0: invalid continuation byte' codec can't decode byte 0xc
进行检索之后,找到这篇文章:
原因:在python下lib文件夹里的socket.py文件中的name=gethostname()代码执行获取本机电脑名称时,遇到中文导致乱码报错。
我的主机名称确实是中文名称,修改过后重启,问题解决。
2023.6.15
超参数的概念:
在机器学习中,超参数(Hyperparameters)是指那些在训练模型之前需要手动设置的参数,它们不是模型的可训练参数(即权重和偏置),而是控制模型训练过程的参数。超参数的值会影响模型的性能和训练速度,因此需要通过试验和调整来找到最佳的超参数组合。
2023.6.22
pycharm报错:
raise NotSupportedError(
django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.40).
原因是mysql版本太低与Django不兼容,但是mysql用的云服务器中的,不能修改,只能降低Django版本。
在终端下载相匹配的Django版本之后,发现还报错,也是这个错误,后来找到原因:
去setting里面修改,在setting的左侧面板找到project,去里面找到:
选择对应的解释器,package就会加载出来,看一看Django版本是不是你想要的,如果不是,下载兼容版本的包。