关于咖啡的那些基础知识
全球的咖啡正迈向「后浓缩咖啡时代」(Post-Espresso Era),也就是欧美时兴的第三波咖啡。第三波咖啡人谈论的是产地水土、地域风味、咖啡品种、后制处理、酶作用、梅纳反应、焦糖化、干馏作用、浓度和萃出率等等。
咖啡风味
鉴赏一杯咖啡,至少需要用 嗅觉、味觉和触觉
嗅觉:香气
味觉:水溶性滋味
触觉:顺滑
酸味主要来自咖啡的水溶性绿原酸、奎宁酸、柠檬酸、苹果酸、葡萄酸(酒石酸)、乙酸、甲酸、乳酸、乙醇酸等三十种有机酸,以及无机的磷酸。
有机酸不耐火候,烘焙的时候大部分会被分解,所以深烘豆酸味低于 ...
PC 软件运行时访问的域名分析
背景
在一些网络环境一刀切的企业内网,又想要让某些不得不基于网络的软件应用能够正常使用,于是需要获取该应用运行时访问的服务地址,才可以加入到白名单中。
由于该应用的运行环境为 Windows,以下分析方式,也是基于 Windows 系统。
获取特定进程的 PID
列出当前运行的进程:tasklist
使用 findstr 过滤指定名称:tasklist | findstr "xxxx"
获取进程监听端口
可以使用 netstat 获取进程监听端口:netstat -ano | ...
Redis 地理位置信息功能
Redis 在 3.2 版本就新增了 GEO(地理信息定位)功能,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能。
GEO 功能是 Redis 的另一位作者 Matt Stancliff 借鉴 NoSQL 数据库 Ardb 实现的。
基础 API
增加地理位置信息:geoadd key longitude latitude member [longitude latitude member ...]
longitude、latitude、member 分别是该地理位置的 ...
Redis 的基础数据结构和 API
Redis 提供的基础数据结构有五种:
字符串 string
哈希表 hash
列表 list
集合 set
有序集合 zset
全局命令
查看所有键:keys *
会遍历所有键,时间复杂度为 O(n)
如果保存了大量的键,禁止使用
键总数:dbsize
键是否存在:exists key
删除:del key [key ...]
添加过期时间:expire key seconds
返回剩余时间:ttl
键的数据结构:type key
字符串
Redis 最基础的数据结构,其它的数据结构 ...
Kubernetes 基础原理
Kubernetes 名字源自于希腊语,意为「舵手」或「飞行员」,前身是 Google 内部运行多年的集群管理系统 Borg。2014 年 6 月使用 Go 语言重写并开源。
Kubernetes 的成功与 Docker 的成功并不相同。Docker 靠的是优秀的理念,以一个「好点子」引爆了一个时代。Kubernetes 的成功不仅有 Google 深厚的技术功底作为支撑,而且有领先时代的设计理念,更加关键的是 Kubernetes 的出现符合所有云计算大厂的切身利益,有着业界巨头不遗余力的广泛支持,所以 ...
zsh shell 脚本编程
zsh shell 是由 Paul Falstad 开发的开源 Unix shell,吸取了现有的 Shell 的设计理念,增加了许多独特的特性,是为程序员设计的一款无所不能的高级 Shell。
模块
zmodload 命令是 zsh 模块的管理接口。不加任何参数的 zmodload 命令会显示 zsh shell 中安装的模块:
123456789101112> zmodloadzsh/completezsh/complistzsh/datetimezsh/langinfozsh/mainzsh/p ...
Go 语言实现依赖注入
依赖注入是常见的解耦方式之一。如果系统没有解耦,单元测试就无从谈起。依赖注入指的是显式指定它所需要的功能来执行其任务。早在 1996 年,Robert Martin 就写了一篇文章,名为 The Dependency Inversion Principle 依赖转置原则。
隐式接口实现依赖注入
在 Go 语言中实现依赖注入很容易,不需要额外的库。如果建一个非常的 Web 程序,写一个工具函数,用于日志采集:
123func LogOutput(message string) { fmt.Print ...
分布式共识:Paxos 算法
世界上只有一种共识协议,就是 Paxos,其他所有共识算法都是 Paxos 的退化版本。—— Mike Burrows,Google Chubby 作者
Paxos 是由 Leslie Lamport(就是大名鼎鼎的 LaTeX 中的「La」)提出的一种基于消息传递的协商共识算法,是当今分布式系统最重要的理论基础,几乎就是「共识」二字的代名词。这个极高的评价出自于提出 Raft 算法的论文(《一种可以让人理解的共识算法(In Search of an Understandable Consensus A ...
Windows 批处理脚本语法
Unreal 中用了不少 .bat 脚本,因此学习一下 .bat 语法。好吧,确实属于一个古董玩意,相比于 Python,最大的好处是系统原生的支持,不需要额外配置环境。
下文以 Unreal 的 switchboard.bat 为例学习一下 .bat 语法
批处理
批处理文件(batch file)包含了一系列 DOS 命令,通常用于自动执行重复性任务。用户只需双击批处理文件便可执行任务。
关闭回显
默认情况下,bat 会显示出执行的命令,通常对于最终用户来讲,它并不是特别关心执行了什么。因此,基本上 ...
编程实践中的日期与时间
如果项目需要考虑国际化的时候,时间和日期是代码中必须关注的一个内容。
基础知识
GMT(Greenwich Mean Time):英国格林威治时间(世界标准时间),是 本初子午线 上的地方时,是 0 时区的区时。
本初子午线是指地球上的零度经线。国际上将通过英国伦敦格林尼治天文台原址的那条经线称为 0° 经线,也叫本初子午线
以 太阳 为基础(类似日晷)
UTC:通用协调时 (UTC, Universal Time Coordinated),理论上与 GMT 时间相等(除非出现了 闰秒 ,日常使 ...