liqiang 的博客.

liqiang 的博客.

XMLHTTPRequest
一看到这标题估计有同学都要吐了,二十多年前的技术了你还跟我说,都 8102 年了,现在都 React、Vue 满天飞的时代了,你还跟我聊最原始的 Ajax?额,道理我都懂,虽然很久没去试水前端了,但是对于这些基本的行业大趋势还是有点小了解的,不可否认,现在前端是基本上没啥人玩原始 JS 了,除了 React 和 Vue 之外,现在也有很多人玩 CoffeeScript(2014-2015) 和 TypeScript(2017-2018),而对于我真正有写过实践过的也就 CoffeeScript 了,也要追述到 2、3 年前了。 扯远了,我为什么要再写一写 XMLHTTPRequest 呢...
Go 语言中的字符串
在 Go 语言中,字符串作为一个内置的类型,被广泛得使用,但是,虽然被用得多,你知道的未必多。在使用字符串的过程中,确实有很多不确定点可能会让代码的编写有一些被动的情况,例如在字符串和其他类型之间转换,如何传递字符串,如何比较字符串和如何切割字符串比较高效等,这些都是需要去考虑的问题。所以,我想一次性将这些问题都解决掉,因此在这篇文章中你都能看到这些问题的解答,以及更多的其他关于 Go 语言中字符串的知识。 string 的内部结构在 Go 语言的官方说明中,强调了 Go 语言的 string 的定义是:a string in effect a read-only slice of by...
Go 语言中的异常处理
在编写 Go 代码的时候,有个东西让我很挫败,那就是 Go 语言中的 panic。可能是因为我对它的认识还不够,因为从以往的代码经验来说,C++、Java、Python 中的异常和错误处理都是比较类似的,可以用 try-catch 逻辑操作,但是 Go 中的 panic 我一开始认为更像 Linux 中的系统函数 exit。随着对 Go 代码的不断读写,对 Go 中的一些常见的错误和异常处理有了一些常识,所以本文我决定尝试对这两个东西做一些不深不浅的介绍。 错误和异常的区别是啥首先,要说一下的就是 Go 语言中的错误和异常和在 Java 中的错误和异常有点一样,在 Java 中,错误一般...
StarUML 自定义用户名和序列号
好吧,虽然标题看上去没啥邪恶的,但是其实这就是个破解 StarUML 的教程,因为看不爽时不时就给我弹出个确认框,虽然我本来是想找个序列号就行了,但是没想到居然有简单可行的处理方式,所以就随手记录一番。根据我的实验,2.5 和 3.0 版本的都可以用,不过不通用,这是两种不同的解决方式,3.0 的麻烦一些,2.5 的简单。 StarUML 2.5 破解 将下面的文件保存为 LicenseManagerDomain.js sudo cp /Applications/StarUML.app/Contents/www/license/node/LicenseManagerDomain.js L...
Systemd Supervisord 肤浅对比
以前我跑应用都是通过 Supervisord 来运行,其实,一直用下来,发现还是很好用的,没啥毛病。随着尝试了一些 Systemd 的功能之后,让我对他们之间的关系有了一些思考,既然这两货对我来说做得事情都差不多,那么究竟差别在哪?所以今天虽然不是很有空,但是我还是决定来闲扯一番。 首先,先来聊聊 Systemd,一开始我以为 Systemd 是一个第三方应用,没有太在意,公司在用这个所以也就愣愣得跟着用了;直到有一天好奇心驱使我认真得去查了一下,不得了啊,居然是钦定的系统管理软件。所谓的钦定系统管理软件的意思就是 systemd 的 PID 是 1,可能你觉得 PID 是 1 没啥了...
定时备份 MongoDB
最近突然想起来,一个线上应用以前因为有代码级别的定时备份机制,每天会定时备份重要数据然后发邮件到我的邮箱。但是,后面因为代码重构觉得恢复数据也比较麻烦就丢弃了,一直没有补回来备份的措施,你看最近某个云的事情搞了一波之后,吓得我赶紧趁着还有点时间,就补救一下。这次我决定不在代码层级搞了,直接简单粗暴一些,使用 Crontab 定时执行脚本的方式,然后远程拷贝的目标主机(这种方式以前搞计算广告的时候也是这么操作的,不过会加上一些保证机制)。 因为这个应用使用的是 MongoDB,所以我就直接使用 mongodump 就好了,统计了一番,数据量也不大,压缩完 100M 左右,也可接受吧。所以下...
肖生克的救赎
最近已经不知道是第几次重温这部电影了,但是,这次重温我决定做点和以前不一样的事情,那就是这一次我要写一篇影评。依稀记得大学选修《电影鉴赏》的时候,老师教过电影鉴赏大体上可以分为两部分,分别是技术上和感情上,所谓的技术上就是考验一个导演的能力方面,例如拍摄角度的选择(当时老师举了个例子:《阳光灿烂的日子》),画面的处理(是不是蒙太奇之类的)还有过渡、音乐的插入和选择等等;另外一方面就是感情上,这更多得是考验编剧的能力,故事选择得怎么样,当然,导演也是需要以响应的技术能力去凸显这种感情。由于个人水平不是很够,所以在技术方面我并不能很好得给予评价,所以这篇影评我是从思想上做一些个人的看法发表。...
作为一个员工该如何准备 One-on-One 对话
本文翻译自: How To Prepare For One-on-One Meeting As an Employee. 不少管理人员表示,他们遇到的最大挫败感来自于员工并没有为一对一会议做好准备。对此我表示很惊讶,并且怀疑这是真的吗? 在过去四年中,我听到为数不少的经理、首席执行官和企业主对我说了类似的话: “在一对一的过程中,我会问一个问题,但是对方给予的却是沉默;或者他们会将一对一用作抱怨的会议,很明显他们没有考虑他们应该提供什么反馈,这样缺乏准备只会让我失望。” 作为一名员工,这听起来似乎令人有点惊讶,当我们没有完全准备好进行一对一的会议时,我们经常低估了这样对经理的痛苦...
随便聊聊 Goroutine 的内部机制
想来接触 Go 也有段时间了,虽然对 Go 语言的语言生态支持还不是太满意,例如库的版本管理,go get 要梯子,基本数据结构都不全(Set 结构还得 Map 来手动)。但是,怎么说,Go 总体上来说还是不错的,例如强类型比写 Python 更规范一些,内存管理没有 C 那么困难,基本上可以做到随便 new 而不考虑 free,同时还有一个比较爽的特性应该就是 Goroutine 了。 其实 Goroutine 一上手心中就有所察觉,这货不就是协程么。但是,人家就是要嘴硬,我这不是协程,你们协程不是抢占式的,得靠自觉,有的人饿死也不给你机会;而且你们协程还是单线程的,一个核累死一个核闲...
Bloom Filter
之前在浏览某个社区的时候,看到有个人为了一个问题,具体帖子忘了是哪个了,不过问题的的意思是给 10W 个关键词,让你给出比较有效的方式来屏蔽关键词。这个问题其实挺有意思的,看上去似乎很简单,但是,细看一下其实也不简单。这里的上下文没有给得很明确,因为你说要屏蔽关键词,没说是在啥场景下?是一个博客社区,还是说某款聊天软件亦或者论坛回复?还是说只是判断一个词是不是关键词? 不过,从后面大家的讨论和回复来说,似乎场景就仅仅局限在给定一个词,判断这个词是不是需要过滤的关键词。这个似乎就比较好办了,我一上来的第一个想法就是这不就是 Hash 吗?但是,再回味一下,似乎 Hash 会有些问题,一个是...
Liqiang Lau
God bless you!