一日一技:使用 Git 在错误的分支上修改了代码怎么办?
我们知道,在使用 Git 的时候,应该要正确使用它的分支(Branch)功能。不同的功能使用不同的分支开发,最后合并进入主分支。但有时候会出现这样一种情况——我代码都已经写完了,才发现我写错分支了。这个时候,怎么把我的修改迁移到目标分支上,并且不修改现在正在使用的分支?
我们知道,在使用 Git 的时候,应该要正确使用它的分支(Branch)功能。不同的功能使用不同的分支开发,最后合并进入主分支。但有时候会出现这样一种情况——我代码都已经写完了,才发现我写错分支了。这个时候,怎么把我的修改迁移到目标分支上,并且不修改现在正在使用的分支?
今天在粉丝交流群里面,有个同学说他发现了Requests
的一个 bug,并修复了它:
聊天记录中对应的图片为:
看到这个同学的截图,我大概知道他遇到了什么问题,以及为什么会误认为这是 Requests 的 bug。
我们知道,HTTP请求的 POST 方式,提交上去的数据有很多种格式。例如JSON
/form-data
/x-www-form-urlencoded
等等。我们在 Postman 的 POST 请求里面,可以看到这些数据格式,如下图所示:
很多人都知道环境变量,很多人也在使用环境变量。但是很多人一说到在 Linux、macOS 中使用环境变量,第一个想到的就是export XXX=yyy
这种形式的环境变量。但实际上,在 Linux 和 macOS 中,定义环境变量有三种方式,他们的效果和作用范围是不相同的。
有一些同学在写爬虫的时候,喜欢在Chrome 开发者工具里面直接复制 XPath,如下图所示:
他们觉得这样复制出来的 XPath 虽然长了点,但是工作一切正常,所以频繁使用。
但我希望大家不要过于依赖这个功能。因为它给出的结果仅作参考,有时候并不能让你提取出数据。我们来看一个例子。
今天在读者交流群里面,有同学提到这样一个问题:
这个同学想实现,在代码第35行,如果进入了 if
判断,那么就退出第40-43行对应的 ac 函数。
能问出这个问题,说明这个同学显然没有认真看我的微信公众号。就在几天前我才发了一篇文章:一日一技:Python多线程的事件监控。使用这篇文章里面讲到的方法,就可以轻易实现他的需求。
在那篇文章中,我们讲到了threading.Event
,这个东西不仅可以在线程之间使用,也可以在主线程和子线程之间使用。
现在阿里云,腾讯云等等云服务商都已经提供对象储存服务,我们可以使用对象储存来存放文件或者图片。通过云服务商提供的 SDK,一行代码就可以把文件或者图片上传到对象储存,并获得文件的地址。
我的博客图片就使用腾讯云的对象储存作为图床,所以如果你查看图片的地址,会发现他们的网址是这样的:
1 | https://kingname-1257411235.file.myqcloud.com/IMG_5551.JPEG |
其中的https://kingname-1257411235.file.myqcloud.com/
就是我的对象储存的域名。
然而,在公司的项目中,虽然我们也是用云服务商提供的对象储存来存放图片,但是我们会额外开发一个图片服务接口。所以,公司项目网站的图片,使用的地址类似于:https://img.kingname.info/xxx.png
。当你访问这个地址的时候,这个图片服务会从域名拿到图片的名字xxx.png
,然后访问对象储存拿到这张图片,最后再把这种图片以数据流的形式返回给你。
你可能会觉得,这不是多此一举吗?为什么不能让用户直接访问对象储存获得图片呢?单独做一个图片接口不仅增加了开发时间,而且还需要服务器单独再发一次请求到对象储存拿数据,白白增加了访问延迟,怎么看都是得不偿失啊。
这是因为,工程上的问题,有时候不仅仅是一个行与不行的问题。它需要考虑很多额外的因素。
一根不起眼的短横线,在 Golang 和 Python 中,都能够让你不输出某些不想要的字符。
Redis 在日常的开发中,会积累大量的 Key,占用不少内存空间。有时候,我们想知道当前 Redis 里面有多少个 Key,是哪个 Key 占用了最大的内存。
但是,我们知道,由于 Redis 是单线程数据库,所以在线上环境是绝对禁止使用keys *
这种命令的,因为它会花费很长时间扫描所有的 Key,在这个过程中,Redis 会卡死,无法处理其他的读写操作。
那么,我们应该怎么知道当前有多少个 Key 呢?有同学说可以使用scan
命令。但这个命令一方面是需要写程序来迭代,另一方面是它给出的结果可能是不准确的。
今天在公众号粉丝群里面,有一位同学提到了 Python 找不到模块的问题:
问题涉及到的代码结构和代码截图如下:
这个问题的解决方法非常简单,就是把start.py
文件从bin
文件夹移出来就好了。
但如果对这个问题进一步分析,可以看到更多问题。