JavaScript 中有用的 Array 和 Object 方法 (www.css88.com)
我收听了一个很棒的语法FM播客,它总结了有用的JavaScript 数组和对象方法。这些方法可以帮助开发人员编写干净而且可读性高的代码。许多这样的方法可以减少像Lodash这样的实用程序库的依赖。

本文中的所有方法都是可链式调用的,这意味着它们可以相互结合使用,而且它们也不会发生数据突变,这在使用React时尤其重要。 使用所有这些数组和对象的方法,你将发现再也不需要再进行 for 或 while 循环来达到目的了。
by @技术头条 2018-06-28 12:06 查看详情
Guava 源码分析之Cache的实现原理 (ifeve.com)
Google 出的 Guava 是 Java 核心增强的库,应用非常广泛。

我平时用的也挺频繁,这次就借助日常使用的 Cache 组件来看看 Google 大牛们是如何设计的。

本次主要讨论缓存。缓存在日常开发中举足轻重,如果你的应用对某类数据有着较高的读取频次,并且改动较小时那就非常适合利用缓存来提高性能。

缓存之所以可以提高性能是因为它的读取效率很高,就像是 CPU 的 L1、L2、L3 缓存一样,级别越高相应的读取速度也会越快。

但也不是什么好处都占,读取速度快了但是它的内存更小资源更宝贵,所以我们应当缓存真正需要的数据。其实也就是典型的空间换时间。下面谈谈 Java 中所用到的缓存。
by @技术头条 2018-06-28 12:05 查看详情
Java 使用 happen-before 规则实现共享变量的同步操作 (ifeve.com)
熟悉 Java 并发编程的都知道,JMM(Java 内存模型) 中的 happen-before(简称 hb)规则,该规则定义了 Java 多线程操作的有序性和可见性,防止了编译器重排序对程序结果的影响。按照官方的说法:

当一个变量被多个线程读取并且至少被一个线程写入时,如果读操作和写操作没有 HB 关系,则会产生数据竞争问题。 要想保证操作 B 的线程看到操作 A 的结果(无论 A 和 B 是否在一个线程),那么在 A 和 B 之间必须满足 HB 原则,如果没有,将有可能导致重排序。 当缺少 HB 关系时,就可能出现重排序问题。
by @技术头条 2018-06-28 12:05 查看详情
如何在 Linux 中使用 history 命令 (linux.cn)
用强大的 history 命令使你的命令行提示符更有效率。

随着我在终端中花费越来越多的时间,我感觉就像在不断地寻找新的命令,以使我的日常任务更加高效。GNU 的 history 命令是一个真正改变我日常工作的命令。

GNU history 命令保存了从该终端会话运行的所有其他命令的列表,然后允许你重放或者重用这些命令,而不用重新输入它们。如果你是一个老玩家,你知道 history 的力量,但对于我们这些半吊子或新手系统管理员来说, history 是一个立竿见影的生产力增益。
by @技术头条 2018-06-27 11:01 查看详情
如何使用树莓派制作一个数字针孔摄像头 (linux.cn)
学习如何使用一个树莓派 Zero、高清网络摄像头和一个空的粉盒来搭建一个简单的相机。


在 2015 年底的时候,树莓派基金会发布了一个让大家很惊艳的非常小的 树莓派 Zero。更夸张的是,他们随 MagPi 杂志一起 免费赠送。我看到这个消息后立即冲出去到处找报刊亭,直到我在这一地区的某处找到最后两份。实际上我还没有想好如何去使用它们,但是我知道,因为它们非常小,所以,它们可以做很多全尺寸树莓派没法做的一些项目。
by @技术头条 2018-06-26 15:50 查看详情
系列 - 树莓派外接蓝牙音箱(四) (www.barretlee.com)
花了好几个小时来回折腾,完成了这个实验性的小玩具,生活中我肯定不会用它,因为它过于简陋。这里我还给自己加了一道拓展题,如何识别多次按钮点击,然后根据点击的次数执行不同任务,结果写出来的程序,当按钮按下时,系统总是奔溃,就没有继续了,感兴趣的读者可以尝试下
by @技术头条 2018-06-26 15:50 查看详情
系列 - 认识树莓派 GPIO(三) (www.barretlee.com)
树莓派除了有 USB、网口、HDMI 等常见的接口外,还提供了 GPIO(General Purpose Input/Output)接口,通过这个接口,我们可以很方便的控制电子元器件。本文不去分析 I2C、UART、SPI 这些略复杂的通讯协议,只去看 GPIO 在引脚上的输入和输出,以及高低点位的变化。
by @技术头条 2018-06-26 15:49 查看详情
系列 - 树莓派装机(二) (www.barretlee.com)
本节将给大家介绍,如何从树莓派上进入到自己熟悉的远程开发模式。
by @技术头条 2018-06-26 15:49 查看详情
系列 - 入坑树莓派(一) (www.barretlee.com)
树莓派,是一款基于 Linux 的单板机,配上一些可交互的硬件设备(扩展屏、鼠标、键盘等),也就成了一款配置略低的电脑。
by @技术头条 2018-06-26 15:48 查看详情
png的故事:隔行扫描算法 (www.alloyteam.com)
之前讲解过如何解析一张png图片,然而对于扫描算法里只是说明了逐行扫描的方式。其实png还支持一种隔行扫描技术,即Adam7隔行扫描算法。

使用隔行扫描有什么好处呢?如果大家有去仔细观察的话,会发现网络上有一些png图在加载时可以做到先显示出比较模糊的图片,然后逐渐越来越清晰,最后显示出完整的图片。
by @技术头条 2017-12-24 20:04 查看详情
使用 Go 一年的体验 (linux.cn)
我们公司 Mobile Jazz 从一个内部试验性项目开始使用 Go。如公司名暗示的那样,我们是开发移动应用的。

在发布一个应用给公众后,我们很快意识到我们缺失一个工具来检查用户实际发生的情况以及他们是如何与应用交互的 - 如果有任何问题或者 bug 的报告,这将会相当方便。

现在有几款工具声称能在这个方面帮助开发者,但是没有一个能完全满足要求,因此我们决定自己构建一个。我们开始创建一组基础的脚本,如今它很快进化成了完整的工具,称为 Bugfender!

由于这最初是一个实验,我们决定使用一种新的趋势技术。对学习以及持续教育的热爱是 Mobile Jazz 的核心价值的之一,因此我们决定使用 Go 构建。这是一个由 Google 开发的相对较新的编程语言。它是编程世界的的新玩家,已经有许多受尊敬的开发者对它赞不绝口。
by @技术头条 2017-12-24 20:00 查看详情
Hugo 对比 Jekyll :两大领先的静态页面生成器之间的比较 (linux.cn)
如果你正在建一个新的网站,静态页面生成器或许是个正确的选择。

除非你是像艾米莉·狄金森那样深居简出的人,否则,当做了点事情后,你就会想要与这个世界分享。分享你的作品意味着需要一个网站。当然,你可以只是享受数字时代的便利,使用任何不同的社交网站来将你的作品呈现在观众面前。还有很多选择,不仅仅是传统的社交网站,例如 Artstation、Flickr、Soundcloud、Wattpad,不管你的媒介是什么,总有一款属于你的网站。

实际上,你应该使用这些网站,毕竟,人们都在这些网站上。然而,没有一个地方是真正属于你的。没有一个网站是你能保证不管社交趋势如何,人们都能在该网站上找到你的作品的。
by @技术头条 2017-12-24 19:59 查看详情
【死磕Java并发】—–J.U.C之ConcurrentHashMap红黑树转换分析 (cmsblogs.com)
先看红黑树的基本概念:红黑树是一课特殊的平衡二叉树,主要用它存储有序的数据,提供高效的数据检索,时间复杂度为O(lgn)。红黑树每个节点都有一个标识位表示颜色,红色或黑色,具备五种特性:

每个节点非红即黑
根节点为黑色
每个叶子节点为黑色。叶子节点为NIL节点,即空节点
如果一个节点为红色,那么它的子节点一定是黑色
从一个节点到该节点的子孙节点的所有路径包含相同个数的黑色节点

请牢记这五个特性,它在维护红黑树时选的格外重要
by @技术头条 2017-12-24 19:58 查看详情
给博客的highlight.js添加行号和行号高亮 (xuexb.com)
博客是基于 https://firekylin.org/ 搭建, 使用的markdown写作, 使用marked+highlight.js转换和代码高亮.

起初是在 firekylin/firekylin/issues#336 的功能, 并且该 issues Assignees 是我, 那么我得抽空搞定啊, 昨晚到家晚上辗转反侧无法入睡, 满脑子全是行号如何高亮的问题, 于是开干~
by @技术头条 2017-12-24 19:57 查看详情
ps_mem:一个用于精确报告 Linux 核心内存用量的简单 Python 脚本 (linux.cn)
ps_mem是一个可以帮助我们精确获取 Linux 中各个程序核心内存使用情况的简单 python 脚本。虽然在 Linux 上有很多可用于查看内存使用情况的工具,比如 free、vmstat、smem、top 等,但这个工具和其它的区别在于其精确显示核心内存使用情况。

它会分别计算一个程序私有内存总量和共享内存总量,并以更准确的方式给出了总的内存使用量。很明显的,它将帮助大家知道系统中哪个程序正在占用更多的内存。

你可以通过包管理器、pip 、或直接运行 ps_mem.py 脚本等多种方式来安装 ps_mem 工具。需要注意的是:需要有 root 权限。
by @技术头条 2017-12-24 19:56 查看详情
如何以 LaTex 创建文档 (linux.cn)
学习以 LaTex 文本标记语言排版文档

LaTeX(读作 lay-tech )是使用纯文本创建文档的方法,使用与 HTML/CSS 或 Markdown 类似的标记标签进行风格化。 LaTeX 最常用于为学术界(如学术期刊)创建文档。 在 LaTeX 中,作者不必直接对文档进行风格化,就像在 Microsoft Word,LibreOffice Writer 或 Apple Pages 等文字处理程序中一样; 而是用纯文本编写代码,这些代码必须经过编译才能生成 PDF 文档。
by @技术头条 2017-12-24 19:54 查看详情
我是如何实现electron的在线升级热更新功能的? (www.zhangxinxu.com)
通常electron打包出来的文件都很大,有40~50M,如果每次改动升级都要下载个完整版本,实际上是很烦的。

实际上,只要主线程没有发生变化,我们是可以直接在线热更新我们的electron应用的。
by @技术头条 2017-12-24 19:52 查看详情
NTI任务管理之django+python篇celery异步任务使用 (blog.nsfocus.net)
Celery是一个使用Python开发的分布式任务调度模块,是一个简单、灵活、可靠的处理大量消息的分布式系统,他是一个专注于实时处理的任务队列,同时也支持任务调度。因此适合实时异步任务、定时任务等调度场景。
by @技术头条 2017-10-15 10:27 查看详情
JavaScript 检查(Linting)工具的比较 (www.css88.com)
一个检查(linting)工具可以帮助我在编写 JavaScript 时避免一些愚蠢的错误。 尽管我有多年的开发经验,但是我仍然会有键入变量名不正确情况,产生语法错误以及忘记正确处理错误。一个好的检查工具或校验器可以在我浪费时间找BUG之前告诉我存在的问题,更糟糕的是可能会浪费用户的时间。一个好的检查(linting)工具可以确保一个项目遵循编码规范。

有很多可用于 JavaScript 的检查器,但是你如何选择使用哪一个呢? 让我们来看看四种流行替代方案的特性和优缺点:JSLint , JSHint , JSCS 和 ESLint 。
by @技术头条 2017-10-15 10:27 查看详情
pass:一款简单的基于 Linux 命令行的密码管理工具 (linux.cn)
现如今要记住类似 email、银行、社交媒体、在线支付、ftp 等等这么多的密码相信对每一个人来说都是一个巨大的挑战。

由于需求和使用,密码管理器现如今变得非常的流行。在 Linux 中我们可以有很多选择,包括基于 GUI 和基于 CLI 两种。今天我们要讲的是一款基于 CLI 的密码管理器叫做 pass 。

pass是 Linux 上的一个简单的命令行密码管理器,它将密码存储在一个 gpg加密后的文件里。这些加密后的文件很好地组织按目录结构存放。
所有密码都存在于 ~/.password-store 中,它提供了添加、编辑、生成和检索密码等简单命令。

by @技术头条 2017-10-15 10:26 查看详情