https://leetcode-cn.com/problems/valid-parentheses/
思路:
栈这个思路可行,最终可以满足顺序和匹配性。实现过程中要注意栈可能为空的情况。
实现完以后,是否可以再优化呢?
研究以后发现,符号分两类:启始类“{”、“[”,结束类“}”、“]”。结束类,如果遇到不匹配,可以提前结束;遇到匹配,也可以弹栈,减少栈空间。启始类直接压栈就好。
https://docs.djangoproject.com/en/2.1/ref/csrf/
Django CSRF 文档
技术点:
django.middleware.csrf.CsrfViewMiddleware
实现。
{% csrf_token %}
自动渲染。
csrftoken
获取到,提交时放在自定义 header 头X-CSRFToken
里。
其中我的关注点,AJAX 方式需要设置CSRF_COOKIE_HTTPONLY=False
使 JS 可以直接读到 token。那么如何防止token被篡改,或者被他人利用呢?
主要参考:https://docs.djangoproject.com/en/2.1/ref/csrf/#how-it-works
具体的实现,参考源码django.middleware.csrf.CsrfViewMiddleware
。看看一个token是何时产生,如何存储,如何检查的。
Python 修饰器,不光是可以作用于函数,也可以加在类上。
修饰器加在类上的作用,可以修改类的属性,或者替换成其他类。
群聊比单聊,为什么复杂这么多? https://mp.weixin.qq.com/s/so7F88S7-3Wmq9x_rrYAoA
引导读者一步一步更深入地理解需求,将大功能拆分成多个模块设计。