- 博客(96)
- 资源 (2)
- 收藏
- 关注

原创 欢迎关注我的公众号《魔笛手CTO》,感谢大家的支持
欢迎关注我的微信公众号"《魔笛手CTO》,感谢大家支持和鼓励!我将在微信公众号写一些更系统、更有深度的文章,当前的优快云也会保持更新,但两者内容不会完全一致。扫描如下二维码即可关注我的公众号:...
2020-09-27 13:59:55
233
原创 手写一个JSON反序列化程序
上一篇文章《JSON是什么》给大家介绍了JSON的标准规范,今天就自己动手写一个JSON的反序列化程序,并命名它为 zjson。0开始之前本篇文章的目的是学习实践,所以我们选择相对简单的P...
2021-06-10 07:58:18
567
3
原创 JSON是什么
提起 JSON,作为如今最受欢迎的数据交换格式,可以说是无人不知、无人不晓了。JSON 全称 JavaScript Object Notation( JS 对象简谱),自诞生之初的小目标就...
2021-06-08 08:29:37
723
原创 想要小姐姐味(封)道(面)?Fiddler三步搞定
一天的五一假期过去之后,只剩下我凭调班换来的调休。在这枯燥的日子里,我听说了一件事:如图喔~,没想到啊,没想到,早就关注“小姐姐味道”公众号的我,被打上了“互联网精英”的标签。想到自己作为...
2021-05-03 17:46:38
183
1
原创 通过WSL本地启动Nacos
Nacos是Spring Cloud Alibaba的重要一环,扮演着分布式配置中心和服务注册、服务发现的核心角色。但是Nacos在Windows的运行貌似并不如Linux平台稳定,对于...
2021-01-04 08:08:00
1239
原创 用LeetCode官方推荐的动画解《买卖股票的最佳时机》
最近看到 LeetCode 官方公众号推送了一条《5 分钟轻松制作力扣题解动画》,用 PPT 做解题的 GIF 动画,感觉很有意思。老张手痒痒,自己找了一个动态规划的题目《121. 买卖...
2020-11-03 08:48:34
228
原创 没有HTTP连接池,空谈什么持久连接
目录为什么需要HTTP连接池urllib3 如何实现 HTTP 连接池从文档入手PoolManagerRecentlyUsedContainerHTTPConnectionPoolLifoQueueHTTPConnection总结为什么需要HTTP连接池上世纪90年代初,因为即用即走的“请求—响应”模型,HTTP 协议得以广泛流行。但是简单并不等同于高效,随着 HTTP 的流行,越来越多的开发者开始抱怨HTTP的性能问题。在这种背景下,HTTP ...
2020-10-24 13:21:18
998
原创 Python内置库——http.client源码刨析
看过了http.client的文档,趁热打铁,今天继续研究一下http.client的源码。(一)你会怎么实现开始之前先让我们回忆一下一个HTTP调用的完整流程:看到这张图,不妨先来思考...
2020-09-28 21:54:38
2282
1
原创 http.client源码刨析
看过了http.client的文档,趁热打铁,今天继续研究一下http.client的源码。(一)你会怎么实现开始之前先让我们回忆一下一个HTTP调用的完整流程:看到这张图,不妨先来思考一下如果要你来实现http.client,你会怎样做?(二)http.client是怎么设计的现在,复习一下上篇文章关于http.client里面官方给出的一个示例:>>>importhttp...
2020-09-28 21:54:38
215
翻译 【译】Python官方文档——http.client
本模块实现了HTTP和HTTPS协议的客户端功能。通常本模块不会被直接使用,而是被urllib.request调用,来处理HTTP和HTTPS相关的URL。备注:HTTPS只有在支持SS...
2020-09-25 23:40:42
2464
原创 【译】http.client
本模块实现了HTTP和HTTPS协议的客户端功能。通常本模块不会被直接使用,而是被urllib.request调用,来处理HTTP和HTTPS相关的URL。备注:HTTPS只有在支持SSL(带有ssl模块)的Python编译器里面才是可用的。(一)模块提供的类classhttp.client.HTTPConnection(host,port=None,[timeout,]source_ad...
2020-09-25 23:40:42
172
原创 【译】urllib.parse文档--这里有关于URL的一切
本模块定义了一个标准接口,既可以把统一资源定位符(URL)解析为若干部分(通信协议,网络地址和路径等),也可以把各个部分重新组合成URL,还可以利用“基本URL”把相对路径转化为绝对路径。本模块设计之初就考虑到要兼容一系列和URL相关的RFC标准。目前能够支持的URL协议包括:file, ftp, gopher, hdl,http, https, imap, mailto, mms, nntp, prospero, rsync, rtsp, rtspu, sftp, shttp, sip, sips..
2020-06-14 10:51:12
461
原创 【干货】万字长文教你对抗邪恶的爬虫
或许是竞争对手在窥探商业机密。或许是某个学生为了论文而做的数据采集。又或许只是码农的一个恶作剧。无论如何,一个行为不受控制的爬虫都会对我们的数据安全有着或多或少的威胁,它迫使着我们行动起...
2020-05-18 08:08:00
709
原创 刨析HTTP
是什么让HTTP成为互联网的流量担当?简单高效!是什么让HTTP/1.1二十多年依旧活力四射?简单高效!但恰恰是因为HTTP简单高效,导致很多开发者对其视而不见。老张之所以把HTTP报文...
2020-04-29 08:08:00
217
原创 常见则不疑:URL
要是说哪个Web开发者不知道URL,可以说是天方夜谭了。但是要是问哪位详细的了解过URL,可能真就剩下寥寥数人了。老张实际工作中发现有些同事真的从来没有去主动了解过URL。URL历史悠久,URL应用广泛,URL形式多样且标准宽泛,URL熟悉且陌生。今天老张把URL的讲解放在《Web开发进阶》系列的第一篇,给大家介绍一下URL。URI:URL和URN我们常说的URL(Un...
2020-04-28 22:39:19
399
原创 nohup · VS · screen
说到在Linux系统上后台运行任务,可能很多人的第一反应是nohup命令,可能还会有人提到screen命令。今天老张就给大家介绍这两个命令,相信看完老张的介绍,大家可以根据实际情况灵活选择使用二者。01 nohup先来看一下nohup的帮助文档:root@ubuntu:~# nohup --helpUsage: nohup COMMAND [ARG]......
2020-04-28 22:34:48
885
原创 一个网课开发者复工后的一个月
0x01—参与历史 2020年3月2日,周一,早上7点,天已经亮了有一会儿了,我关掉了台灯。又是熬了一夜,好在终于上线完成了安徽省第一天的网课,我瘫在椅子上,打算刷会儿手机缓一下再...
2020-03-16 08:05:00
230
原创 【译】Python3.8官方Logging文档(完整版)
注:文章很长,约一万字左右,可以先收藏慢慢看哟01、基础部分日志是用来的记录程序运行事件的工具。当程序员可以通过添加日志打印的代码来记录程序运行过程中发生的某些事件时。这些事件包含了诸如变量数据在内的描述信息,当然也包括开发人员认为重要的诸如日志级别等信息。什么时候使用Loggin包针对简单的场景,Loggin包提供了一系列方便的函数。其中包括debug()、info()...
2020-02-18 00:18:40
3787
1
原创 【译】Python3.8官方Logging文档--高级部分
在《后端问题如何快速定位?》中老张强调了日志的重要性,也提到了使用日志需要的注意的一些问题。但是并没有提到实践方式,其实掌握一个工具最快的方法就是阅读官方文档,老张试着翻译了Python...
2020-02-11 08:00:00
344
原创 经验之谈:后端问题如何快速定位?
定位问题没有银弹!定位问题没有银弹!定位问题没有银弹!老张结合自己的工作经验,谈谈问题为什么会产生,已经定位后端问题的一些经验总结。01、Bug是如何产生的?计算机是精确的,而人是非理性的。这是Bug之所以会产生,且一直烧之不尽的本质原因。如果将编程比喻成施咒,一个字符、一个停顿,没有与正确的形式一致,咒语就不会生效。另外还有一个次要原因:开发目标、所需资...
2020-01-18 21:23:02
1168
原创 ICMP是个啥?一分钟介绍ICMP协议
提起TCP/IP,好像大家都能说上几句。从OSI七层模型到TCP三次握手,如果不知道这些面试都不好意跟人打招呼,甚至最近几天老张在开发者头条看到有人在争论TCP到底会不会走向灭亡。但是,如果问到ICMP是啥又有多少人知道呢?今天老张带大家一分钟了解重要但是被忽略的ICMP协议。ICMP是啥?ICMP,全称为Internet Control Message Protocol,即为因...
2020-01-18 21:18:15
5560
原创 ICMP是个啥?
提起TCP/IP,好像大家都能说上几句。从OSI七层模型到TCP三次握手,如果不知道这些面试都不好意跟人打招呼,甚至最近几天老张在开发者头条看到有人在争论TCP到底会不会走向灭亡。但是,...
2020-01-18 00:27:05
443
原创 后端问题如何快速定位?
定位问题没有银弹!定位问题没有银弹!定位问题没有银弹!老张结合自己的工作经验,谈谈问题为什么会产生,已经定位后端问题的一些经验总结。01—Bug是如何产生的?计算机是精确的,而人是非理性...
2020-01-15 19:21:00
375
原创 什么?文件读写还有缓冲!
有没有同学遇到过DEBUG的时候日志死活不写入文件,必须关闭程序才能拿到想要的日志文件?一头雾水的你是否想起文件缓冲这个冷知识?操作系统提供的文件的io操作的缓冲行为分为:全缓冲:往往同...
2020-01-06 14:55:00
260
原创 窥探FTP通信细节
前几天,老张写了两篇关于FTP的文章: 《吃透FTP》 《200行代码实现玩具版FTP服务》 给大家介绍了FTP的通信机制,然后又带大家写了一个玩具版的FTP服务端代码。今天继续给大家带来FTP系列的第三篇《窥探FTP通信细节》,通过抓包FTP的通信,将FTP的扒的底裤都不剩。环境准备: FTP客户端测试脚本:依然选择Python自带的Ftplib来...
2020-01-03 20:08:53
234
原创 200行代码实现玩具版FTP服务
上个周,老张写了一篇文章《吃透FTP》(没看过的同学可以先点击浏览一下)。文章主要介绍了FTP的工作原理,写完之后觉得不过瘾,自己动手实现了一个玩具版的FTP服务。当然,如果实现一个完整稳定的FTP服务,工作量还是相当庞大的。所以老张选择了利用Python实现一个玩具版来过过瘾,写完发现仅有200行代码。所谓玩具版,就是说: 用户登录。使用预制的账号root,并没有使用系...
2019-12-31 21:37:09
276
原创 【絮叨.2】PRD才是高级语言,程序员就是产品的编译器
最近随手翻看《编码》,看到一句话形容高级语言:尽管除了汇编语言以外的其他程序设计语言都可以称为“高级语言”,但是它们之间还是有高低之分的,一些语言通常被认为比别的语言更高级。如果你是一家...
2019-12-28 08:51:55
177
原创 吃透FTP
FTP,即文件传输协议(File Transfer Protocol),作为仍然活跃的客户端--服务端之间的传输协议,其历史可以追溯到上世纪70年代。今天老张给大家全方位的讲讲FTP,如果你之前很少接触FTP或者对FTP一知半解,老张保证大家看完本篇文章之后,可以在实际当中得心应手的应用与处理FTP相关工作。1.FTP的工作模式FTP有两种工作模式,分别是主动模式和被动...
2019-12-27 21:39:06
323
原创 Nginx之父被抓,《硅谷》剧情走进现实
前不久一条“Nginx 之父被抓”的新闻吸引了老张的关注。新闻提到:2000年前后Nginx之父在Rambler 集团工作期间开发了Nginx,所以Rambler 集团在2019年生成拥...
2019-12-23 13:50:00
283
原创 业务越来越复杂,组件越来越多,技术人该何去何从?
公告:文章会第一时间发在微信公众号《魔笛手CTO》,欢迎关注可能很多开发人员都遇到过类似的场景:随着业务的发现,越来越多的技术组件被引入到系统架构中来。开发人员要去了解每个组件的功能和特性,解决组件之间交互产生的问题,最关键的是每个组件都在不停更新新的特性。很快开发人员的精力就会被耗尽,这时候往往会做出一些匪夷所思的行为。有人曾在某项目的GitHub下留言:“求不要更新了,老子学不...
2019-12-19 20:49:12
334
原创 同时在写四门编程语言是怎样一种体验?
公告:文章会第一时间发在微信公众号《魔笛手CTO》,欢迎关注魔笛手在发展初期并没有具体限制程序员使用哪一种编程语言,除了主流的Python,还有Node.JS、Go、Lua、C#、PHP等,加之目前公司正在使用Java重构原服务,光老张自己现在就要同时维护四门语言。 老张从入行就开始写Python,对于Python可以说是精通了,虽然之前也使用过其他语言,但是突然之间要写J...
2019-12-11 20:41:19
410
原创 生命游戏
公告:文章会第一时间发在微信公众号《魔笛手CTO》,欢迎关注生命游戏,很有《三体》那种宏观但是冷酷的哲学风格,就像《道德经》里的那句“天地不仁,以万物为刍狗”。脉冲星:图形变换有着固定的周期第一次听过这个游戏我就被他吸引了,偶尔也会盯着屏幕发呆,看着一个个小格子在跳动,会感觉到整个人都放松下来了。简单介绍一下游戏规则,一个方格表示一个生命,绿色表示生,灰色表示死...
2019-12-11 20:33:49
428
原创 【絮叨.1】同时在写四门语言是怎样一种体验?
魔笛手在发展初期并没有具体限制程序员使用哪一种编程语言,除了主流的Python,还有Node.JS、Go、Lua、C#、PHP等,加之目前公司正在使用Java重构原服务,光老张自...
2019-12-09 13:30:00
136
原创 面试官:如何用redis实现全局锁
公告:文章会第一时间发在微信公众号《魔笛手CTO》,欢迎关注WEB服务,尤其是分布式的WEB服务,通常会面临需要实现安全高效的全局锁的服务场景。而redis的诸多特性,使得借助其实现的全局锁显得如此简单。本篇文章借助小明应聘魔笛手研发岗位的面试,层层递进的来介绍一下如何通过redis实现全局锁。面试官老张:看你简历上说,之前的项目中使用了redis,你知道redis为什么是单线程的吗...
2019-11-20 16:37:58
890
原创 Java语言史
除少数年份外,java一直占据TIOBE排行榜第一Java,一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程等特性,广泛应用于企业级Web应用开发和移动应用开发,是国内最主流...
2019-11-09 09:30:00
145
原创 从摩斯密码到UTF-8
公告:文章会第一时间发在微信公众号《魔笛手CTO》,欢迎关注在电影《无间道》中,经常会出现摩斯密码的身影。摩斯密码本身的传奇性,为电影增色不少。其实摩斯密码一点也不复杂,反而很简单,透过摩斯密码,我们可以一窥计算机如何表示字符串的奥秘。摩斯密码通过"."(点)和"-"(横)的排列组合来表示相应的字符。下面是26个字母的摩斯密码表示。一眼看上去,似乎很难发...
2019-10-23 23:05:28
2753
原创 byte[]与String互转不一致引起的bug
公告:文章会第一时间发在微信公众号《魔笛手CTO》,欢迎关注String s = "HelloWorld";byte[] b = s.getBytes();System.out.println(new String(b));看到上面的代码,可能有同学会问了,这不就是JAVA的基本操作吗,你老张有什么好讲的?既然这样,老张要考考大家,猜一下下面的代码执行之后会输出怎样的结...
2019-10-15 22:20:35
2449
原创 byte[]与String互转引发的血案
String s = "HelloWorld";byte[] b = s.getBytes();System.out.println(new String(b));...
2019-10-14 23:25:09
411
原创 用数据告诉你程序员都在看什么
开发者头条是一个技术文章的聚合网站,在程序员圈子里有较高的评价。网站每天会精选出若干精彩文章,用户在浏览时可以对自己认为写得好的文章点赞和收藏,最终每日的文章会按照点赞数排名显示。因为老张平时也会浏览开发者头条,今天突发奇想,想要看一下到底程序员每天都对什么样的技术文章感兴趣。说干就干,写了个爬虫抓取了最近100天(2019.06.25--2019.10.02)的精选文章,使用点...
2019-10-04 21:10:41
290
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人