首页
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
14,016 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
11,348 阅读
3
gradle-5.4.1-all.zip下载
9,335 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
8,132 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
6,987 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
Lan
累计撰写
615
篇文章
累计收到
629
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
搜索到
450
篇与
的结果
2022-04-27
Warning: Permanently added 'git.*.cn' (ED25519) to the list of known hosts. git@git.*.cn: Permission denied (publickey). Could not read from remote repository.
报错截图:原因:没有用户认证解决:第1步:建立SSH Key。在windows下查看[c盘->用户->本身的用户名->.ssh]下是否有id_rsa、id_rsa.pub文件,若是没有须要手动生成。ssh-keygen -t rsa -C "git用户名"然后直接回车,这个目录就会生成两个文件打开id_rsa.pub查看公钥,全部复制到git后台。然后就可以了
2022年04月27日
2,707 阅读
0 评论
2 点赞
2022-04-18
python对一个list进行轮询
# 生成一个0-4的list data = list(range(5)) # 轮询10次 for i in range(10): # pop掉第0个,并append到最后一个 data.append(data.pop(0)) # 输出 print(data[0])
2022年04月18日
522 阅读
0 评论
0 点赞
2022-04-16
armbian 常用指令
更新网络和hostnamenmtuihttps://blog.csdn.net/no1xium/article/details/107476401设置中国时区:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shangha> i' > /etc/timezone安装宝塔:wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh forum
2022年04月16日
1,971 阅读
0 评论
1 点赞
2022-04-15
Pycharm无法加载文件 xx\Scripts\Activate.ps1,因为在此系统上禁止运行脚本
问题:& : 无法加载文件 D:\Tools\Python37\Scripts\Activate.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中 的 about_Execution_Policies。 所在位置 行:1 字符: 3 + & D:/Tools/Python37/Scripts/Activate.ps1 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [],PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess解决方案:以管理员身份打开命令行执行:set-ExecutionPolicy RemoteSigned
2022年04月15日
1,053 阅读
1 评论
0 点赞
2022-04-08
哈夫曼树(最优二叉树)的概念以及构造
哈夫曼树产生的背景在实际生活和生产应用中,我们往往会遇到综合比较一系列的离散量的问题;比如说车站根据包裹的重量以及旅途的长短来确定携带行李的价格,或者我们根据一定的重量范围来给一箱铁球进行分类。这一类问题的解决思路是:1、 根据实际需要划分出分类的标准;2、 按一定的顺序(算法)将实际的数据归到相应的类别里。一般情况下,我们所确定的分类标准并不能保证每一类的数据量是平均分配的;也就是说,由于每一类数据出现的概率不同,造成当采用不同的算法时所需的运算次数的不同。当然,在实际生产生活中,我们更希望得到一种最快,最简洁同时也不会产生歧义的算法。在这个背景下,哈夫曼树以及哈夫曼算法应运而生。准备概念森林:森林由n(n>=2)个二叉树组成,它的遍历可以归结为二叉树的遍历,即以其中一棵二叉树的根结点为森林的“根结点”,之后每一个二叉树的根结点都依次相连,由此组成了一个大的二叉树——森林向二叉树的转化。路径和路径的长度:从树中的一个结点到另一个结点之间的分支构成这两个结点之间的路径,路径上的分支数目称作路径长度。对于一个二叉树,其在第n层上的结点到根结点的路径长度为n-1。结点的权:根据应用的需要给树的结点赋的权值。结点的带权路径长度:从根结点到该结点的路径长度与该几点权的乘积。树的带权路径长度(WPL):树中所有叶子的带权路径长度之和。哈夫曼二叉树及其构造有了以上的概念,哈夫曼二叉树的定义就变得水到渠成。所谓哈夫曼二叉树(最优二叉树),就是带权路径长度最小的二叉树(注意这里的带权路径)。因为树的带权路径长度只与所有叶子的带权路径长度有关,所以对于一个哈夫曼树,其真正其作用的数据是存在于叶子上。再回到问题产生的根源。我们说在现实的分类中,每一类数据出现的概率不尽相同;这些数据出现的概率可以被看做哈夫曼树中叶子的权值。为了获取最短的路径,也就是带权路径长度最短的二叉树,我们希望那些权值低的数据拥有相对较长的对根结点的路径长度。根据这一思路,我们可以从一群离散的数据中构造出一颗哈夫曼树,具体的算法如下:根据给定的n个权值{w1 ,w2 ,...,wn }构造n棵二叉树的集合F={T1 ,T2 ,...,Tn },其中每棵二叉树Ti中只有一个带权为wi的根结点,其左右子树均空。在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根 结点的权值为其左、右子树上根结点的权值之 和。在F中删除这两棵树,同时将新得到的二叉树加入F中。重复2和3,直到F中只含一棵树为止。这棵树便是最优二叉树。例如,有权值分别为 5、10、15、20、25、40的结点,根据以上算法构造出一个哈夫曼树。取这六个树中最小的两个树5、10连成一个二叉树,其权值为15;此时森林里的树变为15(5、10)、15、20、25、40。取这五个树中最小的两个树(15(5、10)、15),构成一个新的二叉树30((5、10)、15);此时森立里的树变为20、25、30((5、10)、15)、40。继续上述过程,得到一个新的二叉树45(20、25);此时的森林变为30((5、10)、15)、40、45(20、25)。继续得到二叉树70((5、10)、15)、40);则森林里只剩下两棵树:70((5、10)、15)、40)与45(20、25)。最后将这两棵二叉树合并成为一棵二叉树115(((5、10)、15)、40)、(20、25)),完成了哈夫曼树的构造。计算WPL=(5+10)4+153+402+(20+25)2=275。以上便是哈夫曼树(最优二叉树)的相关概念和构造方法。根据最后二叉树可以解决类似于文章开头提到的一些实际问题。同时还另外引申出了哈夫曼编码——即不等长编码,实现数据总长度的最优化。
2022年04月08日
482 阅读
0 评论
1 点赞
2022-03-16
DRF利用JWT实现用户认证
根据上一篇文章可以知道JWT的原理和意义所以在这里分享一下jwt在drf中的应用auth.py将jwt写出来import datetime import jwt from django.conf import settings from jwt import exceptions from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions import AuthenticationFailed def create_token(payload, exp=30): headers = {'typ': 'jwt', 'alg': 'HS256'} payload['exp'] = datetime.datetime.utcnow() + datetime.timedelta(days=exp) return jwt.encode(payload, settings.SECRET_KEY, "HS256", headers) class JwtAuthentication(BaseAuthentication): def authenticate(self, request): # 获取请求头中Token token = request.META.get('HTTP_TOKEN') try: payload = jwt.decode(token, settings.SECRET_KEY, "HS256") except exceptions.ExpiredSignatureError: raise AuthenticationFailed({'code': 204, 'msg': 'Token已失效'}) except jwt.DecodeError: raise AuthenticationFailed({'code': 204, 'msg': 'Token认证失败'}) except jwt.InvalidTokenError: raise AuthenticationFailed({'code': 204, 'msg': 'Token非法'}) return payload, tokensettings.py在drf的view中全局应用此认证方式REST_FRAMEWORK = { "DEFAULT_AUTHENTICATION_CLASSES": ['utils.auth.JwtAuthentication'] }views.py一个登录的view,将认证方式设为空,另外一个可以直接获取# Create your views here. from rest_framework.views import APIView from utils.auth import create_token from utils.commen import standard_response class LoginView(APIView): authentication_classes = [] @staticmethod def post(request, *args, **kwargs): username = request.data.get('username') password = request.data.get('password') if not username == 'lan' and password == 'password': return standard_response(None, msg='用户名或密码错误') token = create_token({'username': username}) return standard_response(data=token, msg='登陆成功') class IndexView(APIView): @staticmethod def post(request, *args, **kwargs): return standard_response(data='来源网站:www.lanol.cn', msg=f'欢迎您{request.user["username"]}') 登录获取Token验证Token成功Token超时失效这个auth.py不止在drf中可用,其他的web框架,fastapi啥的也是通用的,只要将返回改一下即可
2022年03月16日
736 阅读
8 评论
1 点赞
2022-03-16
JsonWebToken jwt实现过程和原理
jwt生成的Token组成eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c这是一串由jwt生成的token,它分为三部分字符串,由 . 隔开第一段字符串:HEADER:ALGORITHM & TOKEN TYPE{ "alg": "HS256", "typ": "JWT" }HEADER内包含算法和Token类型通过base64url加密而来第二段字符串:PAYLOAD:DATA{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }json转化成字符串,然后做base64url加密第三端字符串:VERIFY SIGNATURE第一步 将第1,2部分密文拼接起来eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ第二步 对前两部分密文进行SHA256加密加盐第三步 对HS256加密后的密文再做base64url加密对Token进行校验先获取Token对Token进行切割对第二部分进行base64url解密,并获取payload信息,检测exp字段是否超时把第1,2端密文拼接,再次执行sha256加密,判断是否相等,如果相等则认证通过
2022年03月16日
362 阅读
0 评论
3 点赞
1
...
13
14
15
...
65