My Blogs
Posts tagged with "Python"
对称加密算法总结
Published 2023年03月10日 01:49 by james
常见的对称加密算法有DES、3DES、AES、RC4和Blowfish等,这些算法在加密速度、加密强度、密钥长度和安全性等方面都有所不同。
以下是这些算法的详细对比:
- DES (Data Encryption Standard):DES是一种古老的对称加密算法,它使用56位密钥和64位分组大小。DES的加密速度相对较慢,而且密钥长度较短,安全性受到了威胁,已经不再被广泛使用。
- 3DES (Triple Data Encryption Standard):3DES是DES的改进版,它使用3个56位的密钥来加密数据,加密强度更高。但是,3DES的加密速度比其他算法慢,因为它需要进行多次加密。
- AES (Advanced Encryption Standard):AES是一种高级对称加密算法,它使用128位、192位或256位的密钥和128位分组大小。AES比DES和3DES更快,安全性更高,目前被广泛使用。
- RC4:RC4是一种流密码算法,它使用变长密钥,可以支持任意长度的密钥。RC4的加密速度很快,但是它的安全性受到了威胁,容易受到攻击,不建议使用。
- Blowfish:Blowfish是一种对称加密算法,它使用变长密钥和64位分组大小。Blowfish的加密速度很快,安全性也很高,但是在一些情况下,可能受到已知明文攻击的威胁。
Algorithm | Key Length | Block Size | Encryption Mode(s) | Padding Mode(s) | Encryption Speed | Security | Hardware … |
---|
Django Best Practices: Models
Published 2022年12月08日 02:05 by james
Properly defining database models is arguably the most important part of a new project, however Django provides us with tremendous flexibility around how we structure our models.
There is an …
Python语言的指导原则
Published 2022年06月30日 17:00 by james
Guido van Rossum发明了Python,并确立了Python的指导原则,他被社区称为仁慈的独裁者(Benevolent Dictator For Life,BDFL)。 Tim Peters把这些原则写成了一段偈语,让我们一句一句来解释。
- 美观优于丑陋。(Beautiful is better than ugly.)这句话的意思是说代码是写给人看的,所以在所有程序中,代码都应该尽可能地好看,表达式语法应该简单,并且语法和风格应前后保持一致。
- 显明胜过隐晦。(Explicit is better than implicit.)绝大多数概念应该都是显式的,就像显式的布尔类型。我们直接用文字true和false表示布尔类型,而不需要用数字1和0表示。当然,Python也支持用数字表示布尔类型。而且非零值都可以作为布尔值。类似地,for循环可以处理任何数据结构,不需要考虑变量类型。一个循环语句既可以遍历元组的每个元素,也可以处理字符串的每个字符。
- 简单优于复杂。(Simple is better than complex.)Python的内存管理方式对用户而言很简单,通过垃圾回收器分配/回收内存,避免复杂操作。另一个范例就是简洁的print语句:不仅打印时可以避免使用文件描述符,而且多个对象用逗号隔开就可以自动转换成可以打印的形式。
- 复杂胜过混乱。(Complex is better than complicated.)科学计算的概念都很复杂,但并非程序结构都会十分混乱。即使产品结构十分复杂,Python的程序结构也不应该杂乱无章。Pythonic方式本质上就是简单、简洁,SciPy和NumPy程序包都是非常好的例子。 …
Django设计理念
Published 2022年04月10日 12:00 by james
TL;DR
- DRY(Don’t repeat yourself): 不重复造轮子
- MVT
- 快速开发
- 灵活易于扩展
- 松耦合
- 显式优于隐式
详情
总体
松耦合
Django
栈的基本目标是低耦合高内聚。框架里的不同层(Layers)不应该知道对方的代码,除非它们确实需要。
例如,模板系统不需要知道用户的Web请求,数据库层不需要了解如果显示数据,而视图并不关心程序员所使用的模板系统。
尽管为了方便Django
带有一个完整的堆栈,但堆栈的各个部分尽可能独立于另一个堆栈。
更少的代码
Django
应用的代码应该尽可能地精简,Django
应该充分利用Python
的动态能力,比如自省机制(introspection
)。 …
梯度下降从放弃到入门
Published 2017年10月22日 23:00 by james
梯度
在向量微积分中,标量场的梯度是一个向量场。标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。
在三维直角坐标系中表示为:
$$ \nabla \varphi = \left( \frac{\partial \varphi}{\partial x}, \frac{\partial \varphi}{\partial y}, \frac{\partial \varphi}{\partial z}\right) = \frac{\partial \varphi}{\partial x}\vec{i} + \frac{\partial \varphi}{\partial y}\vec{j} + \frac{\partial \varphi}{\partial z}\vec{k} $$ …