- 博客(101)
- 收藏
- 关注
原创 django drf 统一处理操作人和时间字段
如果你的表结构有这些字段:创建人/创建时间/更新人/更新时间/删除人/删除时间,我们可以统一处理这些字段的更新和插入,而不需要额外显示操作。
2024-09-26 11:28:46 513
原创 django drf to_representation
使用场景1.需要对结果的中的某个字段进行进一步的处理;2.模型类中没有的字段,添加到结果中进行响应;
2024-09-26 11:20:35 614
原创 nginx优化--压缩
在服务器带宽有限的情况下,用户访问网站时,从服务器上获取网页所需的各种资源,包括html/css/js/png/php/jsp等等,这些文件资源的大小其实是可以压缩的。通过压缩这些文件资源,减少传输中的带宽消耗,可以达到提高网站访问速度的效果。
2023-11-17 18:30:27 214
原创 nginx-自动获取最新静态文件
前端每次发版完,有部分前端文件是更新了的,但是客户访问却拿不到最新的前端文件,实现让浏览器自己去获取最新的前端文件。
2023-11-17 18:28:40 1200
原创 git rebase同步分支的最新改动
基于临时分支开发的场景,假设临时分支是基于master创建的,在临时分支上开发完后,由于别的同事有提交合并到了master分支,此时master分支的提交记录已经领先于临时分支,于是需要将master分支领先的提交记录合并到临时分支,再做后续操作。以上场景,可以用merge进行解决,将master分支的改动merge到临时分支。执行git log就会看到记录里有merge 的信息,这样其实污染了 commit 记录,想要一份干净的 commit记录,这时候,git rebase 就可以解决。
2023-02-02 17:08:42 1263
原创 把多个不连续的commit合并成一个commit
场景1.多个commit是同一个功能(需求)。2.为了log信息更简洁。3.代码管理更方便。步骤1.查看commit历史2.使用git rebase -i <需要合并的commit中最早的那个commit的前一个commit-ID>,启动rebase操作。3.进入到编辑页面,手动调整提交的顺序,将需要合并的提交放到一起,需要保留的commit前面使用pick,需要合并的commit前面使用s或squash,紧跟在两个要合并的commi...
2021-12-20 23:00:13 6723
原创 python pip安装包出现:Failed building wheel for xxx错误的解决方案
出现原因缺失相应的whl文件。解决方案下载并安装对应的whl文件。具体步骤1.下载whlwhl文件的下载网址:https://www.lfd.uci.edu/~gohlke/pythonlibs以numpy-1.16.6+mkl-cp27-cp27m-win_amd64.whl为例cp27代表python2.7版本win_amd64代表window64位根据自己的需求,下载好whl2.安装whlpipinstallnumpy-1.1..
2021-10-19 00:32:16 2871
原创 我入职了网宿
这一年,看了许多自己曾经记录的点滴,发现某年某月,回过头去看看过去的自己,有点意思。2021年9月13日,我入职了网宿。刚好领到了今年中秋的月饼。2019年6月14日,我入职了我上家公司,为了减少误会,简称A公司吧。两年前刚入职那会,以我当时的想法,我是打算在A公司长期待下去的。因为在今年5月份之前,我职业生涯中遇到的同事、上级领导,都是比较和蔼可亲的。既是同事,也是朋友;既能严谨工作,也能有说有笑。要说我从开A公司离职的理由,其实就是“内斗”导致的。尽管今年特别流行一个词语“内
2021-10-03 15:29:24 264
原创 iptables入门到放弃
iptablesiptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。4表5链iptables包含4个表,5个链。其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度。4个表:filter:一般的过滤功能(默认表是filter,没有指定表的时候就是filter表)。nat:用于nat功能(端口映射,地址映
2021-09-03 11:12:35 247
原创 性能优化实战-逻辑运算and和or优化
逻辑运算and和or优化依据逻辑运算中,and,也就是”与“,代表必须所有条件为真,结果才为真,也可以理解为,只要有一个条件为假,结果就为假。逻辑运算中,or,也就是“或”,代表只要有一个条件为真,结果即为真。利用这两个特性,我们在Python编程中,可以进行时间复杂度优化。如何优化?答案是,将时间复杂度较低的操作,放在逻辑运算符的最左边。原因:只要and表达式第一个结果为假,则后面的操作则略过;只要or表达式第一个结果为真,则后面的操作也略过。来看代
2021-09-02 11:47:10 871
原创 OpenStack之限制磁盘IOPS
OpenStack之限制磁盘IOPSOpenStack可以通过磁盘的卷类型中关联的qos来限制IOPS。Qos中可以指定限制front-end或者backend-end。front-end代表计算节点,即所有的云主机的读写。back-end代表后端存储节点,即存储磁盘的读写。公有云中,比较有效的是限制front-end的IOPS。...
2021-08-31 18:08:49 898
原创 OpenStack之初始化VM的ssh密码
OpenStack之初始化实例的ssh密码OpenStack支持初始化ssh配置,前提是VM镜像中有cloud init程序。ubuntu#!/bin/shpasswd ubuntu<<EOFubuntuubuntuEOFsed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_configservice ssh restartcentos#!/bi
2021-08-31 17:44:23 529
原创 OpenStack之Region、Available Zone、Host Aggregates
OpenStack之Region、Available Zone、Host Aggregates亚马逊AWS是公共云计算的先驱,一些云计算中重要的产品设计和基础概念可以说都是亚马逊引入的。这其中有两个非常重要的概念:地域(Region)和可用区(AZ:Available Zone)。Region很多第一次接触云计算的同学,光看这两个名字的字面意义,虽然也能够猜出大致的意思,但深入的学习了解云计算一段时间之后,才能深刻的体会这两个概念对于云计算的重要影响。包括国内的这些云计算服务商,也是过了
2021-08-31 17:38:44 1899 1
原创 OpenStack之ML2的由来
OpenStack之ML2的由来常见的core plugin有:linux bridge plugin 和 open vswitch plugin背景随着支持的 network provider 数量的增加,开发人员发现了两个突出的问题:1只能在 OpenStack 中使用一种 core plugin,多种 network provider 无法共存。2不同 plugin 之间存在大量重复代码,开发新的 plugin 工作量大。ML2 Core Plugin:Mo
2021-08-31 17:36:52 933
原创 OpenStack之Neutron相关概念
OpenStack之Neutron相关概念Neutron 管理的网络资源包括不仅限于 Network,subnet、port、浮动IP。networknetwork 是一个隔离的二层广播域。Neutron 支持多种类型的 network,包括 local, flat, VLAN, VxLAN 和 GRE。locallocal 网络与其他网络和节点隔离。local 网络中的 instance 只能与位于同一节点上同一网络的 instance 通信,local 网络主要用于单机测
2021-08-31 17:25:17 377
原创 OpenStack之相关概念
OpenStack的一些概念架构相关OpenStack是微服务架构,各个组件提供不同的服务,常见的组件如下。Keystone:认证服务,没它 OpenStack 转不起来,是核心服务。Nova:管理计算资源,是核心服务。Neutron:管理网络资源,是核心服务。Glance:为 VM 提供 OS 镜像,属于存储范畴,是核心服务。Cinder:提供块存储,VM怎么也得需要数据盘吧,是核心服务。Swift:提供对象存储,不是必须的,是可选服务。Ceilometer:监
2021-08-31 17:21:46 712
原创 OpenStack之cinder基于快照恢复磁盘bug解决过程
OpenStack之cinder基于快照恢复磁盘bug解决过程现象OpenStack,使用基于快照恢复磁盘数据的功能,但是恢复不成功。问题的原因最终发现,是ceph的相关配置文件名的命名必须是一字不差才行。我们这就因为改变了ceph的keyring文件名,导致触发了这个bug。解决过程第一件事,打开debug模式,就可以看到更详细的日志:vi /etc/cinder/cinder.confdebug=true查看日志:tail -f /var/log/
2021-08-31 17:04:44 953
原创 git、svn代码review
git、svn代码review场景1.比较同一个分支下,同一个文件的最新版本之间的差异2.比较不同分支下,同一个文件的最新版本之间的差异比较同一个分支下,同一个文件的最新版本之间的差异在review时查看某次提交修改详情:$ git show 0f27a652d以上操作可以拆分为两步:1.获取某次提交的sha-1值、提交者、提交时间、commitLog、变更文件列表$ git show 0f27a65 --name-only --pretty=format:"
2021-08-20 15:22:23 725
原创 白话-三次握手,四次放开
白话-三次握手,四次放开三次握手四次放开握手:1.客户端说:我要连你了2.服务端说:收到了,我也要连你了3.客户端说:收到。。。成功建立了连接放开:1.客户端说:我要断开了2.服务端说:收到3.服务端说:我也要断开了4.客户端说:收到。。。成功断开连接四次放开,为啥要比三步多一步?在四次放开的第三步,我理解的是,服务端要处理完剩余工作,才能告诉客户端可以断开了,而非客户端说要断开了,服务端就立马可以断开。举个生活例子:比如,一个女孩子对一个
2021-08-20 15:21:20 119
原创 git修改commit信息
git修改commit信息主要有以下3种场景1.刚刚commit,还没有push,使用git commit --amend。2.刚刚push,要修改最后一次push的commit信息,使用git commit --amend。3.修改历史中的commit信息,使用git rebase -i HEAD~n【其中的n为记录数】,配合2中的命令。场景1、场景2的处理方法1.首先查看提交日志:$ git log2.修改最后一次提交的commit信息$ git commit
2021-08-18 19:50:57 9873
原创 git标签
git标签相关创建标签git tag -a v0.1.0 -m "commit信息"使用v0.1.0或v1.0.0打标签。其实,这里遵循了一套语义化版本控制规范(Semantic Versioning)。语义化版本控制规范规范的概要如下:版本格式:主版本号.次版本号.修订号。版本号递增规则如下:主版本号:当你做了不兼容的 API 修改,次版本号:当你做了向下兼容的功能性新增,修订号:当你做了向下兼容的问题修正。先行版本号及版本编译信息可以加
2021-08-18 19:48:00 101
原创 git多种撤销
git多种撤销针对工作区撤销工作区中某个文件的修改:格式:git checkout -- <file name>tip:命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令。例如:git checkout -- 1.txt清空untracked file:untracked file是指新建的文件或目录,且还没加入到版本管理。删除 untracked filesgit clean -f连 untracked 的目录也一起删掉
2021-08-18 19:29:56 563
原创 git status查看状态
git status查看状态场景merge/cherry-pick/revert的时候,可以通过git status -s命令查看文件修改状态。$ git status -sUD 1.txtM 6.txtA 7.txtUU 新建文件夹/10.txtA 新建文件夹/11.txt状态标志解释输出标记会有两列,第一列是对暂存区而言,第二列是对工作目录而言。A:新添加的文件M:文件修改过D:文件被删除R:文件被重命名T:文件类型被修改过C:
2021-08-18 19:27:27 766
原创 git log相关
git log相关日志格式常用选项git log --pretty=format常用的选项: %H 提交的完整哈希值 %h 提交的简写哈希值 %T 树的完整哈希值 %t 树的简写哈希值 %P 父提交的完整哈希值 %p 父提交的简写哈希值 .
2021-08-18 19:25:10 296
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人