常用的Linux命令:帮助命令tldr
常用的linux命令帮助命令tldrdudu -sh ./* | grep “G” | sort du -h –max-depth=1 -I du -ah wgetwget: -c 断点续传 -b 后台下载文件 –limit-rate=100k 限制下载速率 https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/wget.html kill端口占用lsof netstat -tunplp | grep 端口号,命令用于显示tcp,udp的端口和进程等相关情况 使用 lsof -i 命令 lsof -i:<port> lsof -iTCP lsof -iUDP 123456789101112131415- 利用 kill -9 PID 干掉目标进程## curlcurl https://blog.csdn.net/daiyu__zz/article/details/84887211 -x https://127.0.0.1:9991curl https://hungers...
几种常见的加密:学习笔记与要点整理
对称加密体制对称加密体制分为俩种: 对明文的单个位或者字节进行运算(流密码) 使用最广泛的流密码是RC4。 把明文信息划分为不同的组结构,分别对每个分组进行加密和解密(分组密码) 在分组加密算法中,有ECB,CBC,CFB,OFB这几种算法模式。 ECB-电子密码本模式 优点 容易理解,便于实现并行操作,没有误差传递 缺点 不能隐藏明文模式,如果明文重复,对应的密文也会重复,密文内容很容易被篡改 用途 适合加密密匙,随机数等短数据 CBC-秘文链接模式 优点 加密后的密文上下文关联,,明文中重复的信息也不会产生相同的密文,如果密文被篡改,或者破坏,无法完成解密还原。 缺点 不利于并行计算,如果加密过程出错,导致加密失败 用途 加密任何长度的数据;适合计算产生检测数据完整性的消息认证码 CFB-密文反馈模式 优点 隐藏明文,每一个分组的加密结果必受前面所有分组的内容影响,即使出现多次相同的明文,均产生不同的密文,分组密码转换为流模式。 缺点 不利于并行计算 用途 检查明文密文的篡改 OFB-输出反馈模式 优点 隐藏明文,...
Django的部署流程:1. 配置生产环境配置(settings):DE…
django部署流程1. 配置生产环境配置(settings):DEBUG&Secret相关信息必须调整的关键配置: DEBUG – 在生产环境中设置为False(DEBUG=False)。避免在web页面上显示敏感的调试跟踪和变量信息 SECRET_KEY – 这是用于CSRF保护的随机值 生成SECRETKEY python -c ‘from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())’ ALLOWED_HOSTS – 生产环境必须设置允许访问的域名 2. 配置生产环境配置:密钥的存储和管理 外部引用密钥 保存在系统环境变量中 利用KMS系统保存 vault https://github.com/hashicorp/vault https://www.ruoguedu.cn/post/deploy-vault-on-production-environment/ https://hvac.readthedocs....
Django的DRF:前后端分离
前后端分离 Django是很大很全,可以做到前端后端全包,提供了很棒的模版技术,orm操作。但是后来发现这样并不好,前端应该只是来绘制页面,后端只负责数据的部分,二者互不干扰,并行开发。随着前端不断的发展,出现了很多优秀的前端框架。 mvc的缺点 开发者在代码中大量调用相同的DOM API,处理繁琐,操作冗余,使得代码难以维护。 大量的DOM操作使页面渲染性能降低,加载速度变慢,影响用户体验。 当Model频繁发生变化,开发者需要主动更新到View;当用户的操作导致View发生变化,开发者同样需要将变化的数据同步到Model中,这样的工作不仅繁琐,而且很难维护复杂多变的数据状态。 mvvm Model层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑; View代表UI组件,它负责将数据模型转化成UI 展现出来; ViewModel是一个同步View和Model的对象。 在MVVM架构下,View和Model之间并没有直接的联系,而是通过ViewModel进行交互,Model和ViewModel之间的交互是双向的。因此View数据的变化会同步到Model中,而M...
产品开发:学习笔记与要点整理
确认需求 思考需求的功能性,复杂性,可行性,周期性。。。 迭代的思想 快速定位产品的核心功能,去除细枝末节,用最短的时间开发第一代产品 如何定位核心的功能 产品的目标是什么?核心用户是谁?应用的场景? 功能的实现 任务拆解,拆分产品的最小功能 需要解决最短时间可完成的功能 用最快的可扩展性的代码实现基本的功能 对于需要可能频繁变更的功能增加扩展性吗,同样的功能复用性 遵循DRY(Don’t Repeat Yourself)原则 数据库设计 表名称,字段名称清晰易读 每张表独立职责,不存储无关的信息,相关信息放一张表 长文本和短文本存储分离 当前数据和历史数据分离 设置合适的索引 不使用关联查询 如果数据量大的时候,为了扩展,需要分库,这样无法join 删除数据,逻辑删除 技术方案文档编写 系统设计 流程设计 任务调度设计 。。。 代码质量保证 code review 单元测试 自动化测试
Django常用的命令和语句:常见的命令
常见的命令 python manage.py showmigrations,这个命令是显示出Django项目中的所有migrations文件及其状态 [x] 代表已经执行完毕的migrations文件, []表示未执行或执行失败的文件。 django-admin startproject mysite 创建Django项目 python manage.py runserver 启动服务 python manage.py startapp 创建应用 python manage.py createsuperuser 创建后台管理超级用户 python manage.py makemigrations 生出迁移文件 python manage.py migrate 执行迁移文件产生表 python manage.py shell python manage.py inspectdb > models.py python3 manage.py sqlmigrate <迁移文件前面的序号(0001)> 如何查看迁移文件对应的sql语句 pyt...
WebSocket:websocket的介绍
websocket的介绍 WebSocket是一种在单个TCP连接上进行全双工通讯的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 上面是维基百科的介绍.简单的讲,websocket 和http一样,都是一种网络传输协议 WebSocket 和 HTTP 的区别http 协议是用在应用层的协议,他是基于 tcp 协议的,http 协议建立链接也必须要有三次握手才能发送信息。 http 链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息。即每一个 request 对应一个 response。长链接是在一定的期限内保持链接。保持 TCP 连接不断开。客户端与服务器通信,必须要有客户端发起然后服务器返回结果。客户端是主动的,服务器是被动的。 ...
Python的pydantic库:基本的类型
官方文档以及定义https://pydantic-docs.helpmanual.io/ Data validation and settings management using python type annotations. 使用 python 类型注释进行数据验证和设置管理。 pydantic enforces type hints at runtime, and provides user friendly errors when data is invalid. Pydantic 在运行时强制类型提示,并在数据无效时提供用户友好的错误。 Define how data should be in pure, canonical python; validate it with pydantic. 定义纯粹的、规范的 python 中的数据应该是什么样的; 使用 pydantic 验证它。 基本的类型12345678910111213141516171819202122232425262728293031323334from pydantic import BaseMod...
Python3类型注释:学习笔记与要点整理
普通的注释 在声明变量类型时,变量后方紧跟一个冒号,冒号后面跟一个空格,再跟上变量的类型。 在声明方法返回值的时候,箭头左边是方法定义,箭头右边是返回值的类型,箭头左右两边都要留有空格 123name: str = "jack"def greeting(name: str) -> str: return 'Hello ' + name typing模块的使用List 列表,是 list 的泛型 Tuple 元组,是 tuple 的泛型 Dict 字典,是 dict 的泛型 Set 集合,是 set 的泛型 Sequence: Sequence,是 collections.abc.Sequence 的泛型,在某些情况下,我们可能并不需要严格区分一个变量或参数到底是列表 list 类型还是元组 tuple 类型,我们可以使用一个更为泛化的类型,叫做 Sequence 泛型(Generic): 由于无法以通用方式静态推断有关保存在容器中的对象的类型信息,因此抽象基类已扩展为支持订阅以表示容器元素的预期类型。 1234567 f...
Python的dataclass类装饰器
Python3.7 dataclass使用指南 本文将带你走进python3.7的新特性dataclass,通过本文你将学会dataclass的使用并避免踏入某些陷阱。 dataclass简介 dataclass的使用 定义一个dataclass 深入dataclass装饰器 数据类的基石——dataclasses.field 一些常用函数 dataclass继承 总结 dataclass简介dataclass的定义位于PEP-557,根据定义一个dataclass是指“一个带有默认值的可变的namedtuple”,广义的定义就是有一个类,它的属性均可公开访问,可以带有默认值并能被修改,而且类中含有与这些属性相关的类方法,那么这个类就可以称为dataclass,再通俗点讲,dataclass就是一个含有数据及操作数据方法的容器。 乍一看可能会觉得这个概念不就是普通的class么,然而还是有几处不同: 相比普通class,dataclass通常不包含私有属性,数据可以直接访问 dataclass的repr方法通常有固定格式,会打印出类型名以及属性名和它的值 datac...