Memory

几个有趣的网站

这两年收藏的好玩的网站

Python可视化网站——pythontutor 这个网站是我当年学Python的时候最喜欢的一个网站,把Python代码的运行过程用图形表示出来,非常方便初学者理解Python代码的运行过程。 Git可视化网站——learngitbranching 这个网站则是把Git操作的过程可视化,我在上面知道了不少之前不知道的操作,git rebase也是在上面理解的。 算法可视化网站——v...

Git暂存区的意义

我理解的stage

思考 git add的命令会把当前工作区里的文件提到暂存区,那么暂存区有什么意义,为什么非要存在呢? 个人理解 试想一个场景:如果现在你修改了十个文件,本次提交你需要提交里面的六个。 如果没暂存区而直接进行提交的话,那么提交完你可能发现漏了一个文件,那这个时候你就得再产生一次新的提交,把这个漏掉的文件补上,导致一次提交变两次。 而且,漏了文件算是很好的情况了,你还有可能提交了多余的...

如果HTTP不基于TCP

TCP和UDP之争

前言 前两天在公司的书柜里翻了一本关于HTTP 2的书,里面有一章很有意思,讨论了一下HTTP究竟是基于TCP好呢还是基于UDP好呢 讨论 TCP有些众所周知的概念:连接,可靠性、拥塞控制,这些因素保证了TCP是一种可靠的协议,建立TCP上面的层次也能享受到这种可靠性。而UDP则没有这些因素,所以无法保证可靠,也无法适应不同的网络条件。 这样的话,如果UDP要成为新一代Web构建的基...

Git如何只合并部分提交

Git的cherry-pick命令

前言 如果现在有两个分支,pre-production和master,然后master分支有add api和fix issue两次新的提交,但是我不想用merge把master这两次commit都并到pre-production上,只想要fix issue这一个提交,那么就可以用cherry-pick这个命令。 -----* pre-product...

关于TCP四次挥手的疑惑

记一次wireshark抓包

前言 最近一段在读《TCP/IP详解》,在第18章讲了TCP的连接和断开,其中有提到四次挥手过程,尽管之前就知道有四次挥手这个东西,但是也是一知半解,这次我用Wireshark抓了一下包,却发现了一个问题。 问题的来历 wireshark的截图如下: 这就是wireshark抓到的四次挥手过程,可是这明明就三次挥手好不好,跟平常大家说的和书上讲的有所出入,难道说当接受端没有数据要发送...

TCP通信的可靠性

如何确定包已被对方接受

建立连接 TCP建立连接的方式就是三次握手,而三次握手的意义主要就在于通信双方确定一个初始的同步序列号(Seq),过程表示出来大概是: SYN=1 Seq=client_isn -------------------------------------------> SYN=1 ACK=1 Seq=server_isn Ack=client_isn+1 <----------...

谈谈 Python 闭包

闭包有什么好处

举个栗子 现在有个需求,要打印信的抬头,比方说打印 Mr Jack Miss Emily, 看看这两种实现方式 : 方法一: def title(gender, name): print("{gender} {name}".format(gender=gender, name=name)) >>> title("Mr", "Jack") Mr Jack >&g...

Python的私有变量

私有变量该如何访问

私有变量 先定义一个类: class User: def __init__(self, name, age): self.name = name self.__age = age 然后实例化并取属性: >>> u1 = User("Alen", 12) >>> u1.name 'Alen' >>> u1.__age -...

从ORM说Python的元类

探究ORM里面元类的作用何在

ORM ORM就是 Object-relational mapping 的缩写,翻译过来就是 对象-关系 映射,其实就是把数据库的那一套在代码层面给定义封装一下,这样就直接操作代码即可,不用再去写那些SQL语句了,会比较方便。python比较出名的ORM有两个:django 和 SQLAlchemy ,另外最近还发现有个小的 ORM peewee,没事可以研究一下 ORM实现 参考...

RPC的意义

微服务中的RPC和平常HTTP区别在哪

RPC(Remote Procedure Call,远程过程调用)是一种协议,需要关注的特点有这么几种: 这种协议可以让一个程序在不关注网络细节的情况下(这也是有别于HTTP的地方)请求位于另一个机器上的程序。过程调用有时候也可以认为是函数调用或者子程序调用。 RPC使用client-server架构,请求的那一方就是client,提供服务供请求使用的那...