Hexi Blog

About Lifestyle

rust asynchronous io

从 mio 到 coroutine

Table of Contents 引言 异步 IO 的基石 - mio 异步网络 IO 容错性原则 Poll Option Still Block 自定义事件 Callback is evil coroutine generator 自引用 ...

Efficient Scraper

高效地提取网页数据

前几个月打算开个爬虫的坑,然后开出了一坨新坑。 其实最早的坑很容易: 拿到 HTML -> 解析 HTML,但总觉得前人的做法过于原始,要糊一堆模板代码。于是我构思了一下,我只要能做到这两件事,就能高效地完成我的工作。 高效地拿到 HTML 高效地解析 HTML 目前来看,最接近我第一个需求的项目就是 retrofit,而能满足第二个需求的好像并找不到。 找不到就只...

unhtml: HTML 到结构体的映射

An efficient HTML unmarshaler for golang

最近要用 golang 写一个需要解析 HTML 的项目,到网上找了一个库叫 goquery。虽然它的 API 挺不错,css selector 基本上也全支持了,但写这种代码果然还是有点无聊,于是我就想,为什么不能跟 go 的 json 库和 xml 库一样,直接 Unmarshal(HTML) 呢? 然后我花了两天时间撸出了 unhtml -> Github 样例 & ...

Animal Sniffer: JVM 上的 API 检查器

For Compatibility and Stability

起因 最近给 retrofit 写一个子项目 retrofit-processors时遇到了一个问题:我在父项目根目录下执行 mvn compile 非常正常,然后 mvn test 炸了,报的错是 1 Undefined reference: boolean javax.lang.model.element.ExecutableElement.isDefault() Undefin...

编码:字符串和二进制

Encoding: String and Binary

Introduction 计算机是如何储存数据的? 毫无疑问,对现代计算机来说,数据的基本单元是位(bit),即一位二进制数,值为 0 或 1。那用枯燥的二进制如何描述出文字、图片、视频等丰富多彩的内容呢? 我最初了解计算机相关知识时,这是最吸引我的问题,而它最简洁的答案就是编码。 编码是计算机的基石,其内容十分庞大,本篇文章不可能涉及太多,仅仅介绍字符编码的相关内容。 字符集 ...

Welcome to Hexi Blog

"Hello World, Hello Blog"