炮打TCP – 关于一而再再而三的粘包拆包问题的大字报 (www.ideawu.net)
TCP 所谓的粘包和拆包问题,是技术圈里最奇葩的问题之一!

一而再,再而三,就跟傻逼的中国球迷支持中国足球队一样,前赴后继。有时候同一个人多次在犯同一个错误,有时候是前脚一个犯错了后脚又来一个还犯同样的错。即使是最优秀的程序员,也会在这个问题上面栽跟头,思维甚至很难转过弯,很久才能意识到自己的错误。而低水平的程序员就更不用说了,很多人到死都没有理解这个错误并解决掉,只是逃掉了而已。

我们固然可以认为原因是某些人学艺不精,但那么多的人,其中包括无数的优秀程序员在 TCP 粘包和拆包问题在犯错误,难道我们不能说,这其实是 TCP 自身的原因吗?

在我看来,这个问题的出现,原因就在于 TCP 协议是有原罪的 -- 也就是 TCP 协议所谓的“流式”协议。所以,我要炮轰 TCP!

经过几十年的验证,除了几数几个网络协议会用到 TCP 所谓的流式特性之外,没有任何应用协议使用流式特性。我们必须承认,
by @技术头条 2018-06-28 12:19 分享 查看详情
Stratis 从 ZFS、Btrfs 和 LVM 学到哪些 (linux.cn)
深入了解这个强大而不繁琐的 Linux 存储管理系统。

在本系列第一部分中提到,Stratis 是一个卷管理文件系统volume-managing filesystem(VMF),功能特性类似于 ZFS 和 Btrfs。在设计 Stratis 过程中,我们研究了已有解决方案开发者做出的取舍。
by @技术头条 2018-06-28 12:19 分享 查看详情
尾调用、优化和 ES6 (linux.cn)
在探秘“栈”的倒数第二篇文章中,我们提到了尾调用tail call、编译优化、以及新发布的 JavaScript 上合理尾调用proper tail call。

当一个函数 F 调用另一个函数作为它的结束动作时,就发生了一个尾调用。在那个时间点,函数 F 绝对不会有多余的工作:函数 F 将“球”传给被它调用的任意函数之后,它自己就“消失”了。这就是关键点,因为它打开了尾调用优化的“可能之门”:我们可以简单地重用函数 F 的栈帧,而不是为函数调用 创建一个新的栈帧,因此节省了栈空间并且避免了新建一个栈帧所需要的工作量。下面是一个用 C 写的简单示例,然后使用 mild 优化 来编译它的结果。
by @技术头条 2018-06-28 12:18 分享 查看详情
JavaScript 实现密码可见性切换(显示和隐藏) (www.css88.com)
介绍前端密码可见性切换(显示和隐藏)效果的实现。
by @技术头条 2018-06-28 12:18 分享 查看详情
Linux vi/vim编辑器常用命令 (www.css88.com)
最近做区块链路由器矿机项目,需要用到一些Linux vi/vim编辑器常用命令,以前不怎么用不熟悉所以网上的资料整理了一下。

Linux发行版系统上都会默认内置vi编辑器,非常通用。很多软件的编辑接口都会默认调用vi;vi具有程序编辑的能力;vi程序简单,编辑速度相当快速。
by @技术头条 2018-06-28 12:18 分享 查看详情
底层 Linux 容器运行时之发展史 (linux.cn)
在 Red Hat,我们乐意这么说,“容器即 Linux,Linux 即容器”。下面解释一下这种说法。传统的容器是操作系统中的进程,通常具有如下 3 个特性:资源限制、 安全性配置、 虚拟隔离。
by @技术头条 2018-06-28 12:17 分享 查看详情
使用数据库悲观锁实现不可重入的分布式锁 (ifeve.com)
在同一个jvm进程中时,可以使用JUC提供的一些锁来解决多个线程竞争同一个共享资源时候的线程安全问题,但是当多个不同机器上的不同jvm进程共同竞争同一个共享资源时候,juc包的锁就无能无力了,这时候就需要分布式锁了。常见的有使用zk的最小版本,redis的set函数,数据库锁来实现,本节我们谈谈使用数据库悲观锁机制来实现一个分布式锁。
by @技术头条 2018-06-28 12:16 分享 查看详情
HTTP请求方法:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE 说明 (www.css88.com)
超文本传输协议(HTTP, HyperText Transfer Protocol)是一种无状态的协议,它位于OSI七层模型的传输层。HTTP客户端会根据需要构建合适的HTTP请求方法,而HTTP服务器会根据不同的HTTP请求方法做出不同的响应。
by @技术头条 2018-06-28 12:13 分享 查看详情
如何在 Linux 中不安装软测试一个软件包 (linux.cn)
出于某种原因,你可能需要在将软件包安装到你的 Linux 系统之前对其进行测试。如果是这样,你很幸运!今天,我将向你展示如何在 Linux 中使用 Nix 包管理器来实现。Nix 包管理器的一个显著特性是它允许用户测试软件包而无需先安装它们。当你想要临时使用特定的程序时,这会很有帮助。
by @技术头条 2018-06-28 12:13 分享 查看详情
使用 Stratis 从命令行管理 Linux 存储 (linux.cn)
通过从命令行运行它,得到这个易于使用的 Linux 存储工具的主要用途。

正如本系列的第一部分和第二部分中所讨论的,Stratis 是一个具有与 ZFS 和 Btrfs 相似功能的卷管理文件系统。在本文中,我们将介绍如何在命令行上使用 Stratis。
by @技术头条 2018-06-28 12:12 分享 查看详情
什么是 Linux 服务器,你的业务为什么需要它? (linux.cn)
想寻找一个稳定、安全的基础来为您的企业应用程序的未来提供动力?Linux 服务器可能是答案。

IT 组织力求通过提高生产力和提供更快速的服务来提供商业价值,同时保持足够的灵活性,将云、容器和配置自动化等创新融入其中。现代的工作任务,无论是裸机、虚拟机、容器,还是私有云或公共云,都需要是可移植且可扩展的。支持所有的这些需要一个现代且安全的平台。

通往创新最直接的途径并不总是一条直线。随着私有云和公共云、多种体系架构和虚拟化的日益普及,当今的数据中心就像一个球一样,基础设施的选择各不相同,从而带来了维度和深度。就像飞行员依赖空中交通管制员提供持续更新一样,数字化转型之旅应该由像 Linux 这样可信赖的操作系统来指引,以提供持续更新的技术,以及对云、容器和配置自动化等创新的最有效和安全的访问。
by @技术头条 2018-06-28 12:12 分享 查看详情
对可互换通证(ERC-20 系列)的通证 ERC 的比较 (linux.cn)
“对于标准来说,最好的事情莫过于大量的人都去选择使用它。“
—— Andrew S. Tanenbaum


通证标准的现状
在以太坊平台上,通证标准的现状出奇的简单:ERC-20 通证token标准是通证接口中唯一被采用( EIP-20)和接受的通证标准。
它在 2015 年被提出,最终接受是在 2017 年末。
在此期间,提出了许多解决 ERC-20 缺点的以太坊意见征集Ethereum Requests for Comments(ERC),其中的一部分是因为以太坊平台自身变更所导致的,比如,由 EIP-150 修复的重入re-entrancy bug。其它 ERC 提出的对 ERC-20 通证模型的强化。这些强化是通过收集大量的以太坊区块链和 ERC-20 通证标准的使用经验所确定的。ERC-20 通证接口的实际应用产生了新的要求和需
by @技术头条 2018-06-28 12:11 分享 查看详情
值得考虑的 9 个开源 ERP 系统 (linux.cn)
有一些使用灵活、功能丰富而物有所值的开源 ERP 系统,这里有 9 个值得你看看。


拥有一定数量员工的企业就需要大量的协调工作,包括制定价格、计划生产、会计和财务、管理支出、管理存货等等。把一套截然不同的工具拼接到一起去处理这些工作,是一种粗制滥造和无价值的做法。
那种方法没有任何弹性。并且那样在各种各样的自组织系统之间高效移动数据是非常困难的。同样,它也很难维护。
因此,大多数成长型企业都转而使用一个 企业资源计划 (ERP)系统。
在这个行业中的大咖有 Oracle、SAP、以及 Microsoft Dynamics。它们都提供了一个综合的系统,但同时也很昂贵。如果你的企业支付不起如此昂贵的大系统,或者你仅需要一个简单的系统,怎么办呢?你可以使用开源的产品来作为替代。
一个 ERP 系统中有什么东西
显然,你希望有一个满足你需要的系统。基于那些需要,更多的功能并不意味着就更好。但
by @技术头条 2018-06-28 12:09 分享 查看详情
IPython学习之魔法命令 (www.biaodianfu.com)
IPython提供了许多魔法命令,使得在IPython环境中的操作更加得心应手。魔法命令都以%或者%%开头,以%开头的成为行命令,%%开头的称为单元命令。行命令只对命令所在的行有效,而单元命令则必须出现在单元的第一行,对整个单元的代码进行处理。
by @技术头条 2018-06-28 12:09 分享 查看详情
学习用 Thonny 写代码: 一个面向初学者的Python IDE (linux.cn)
学习编程很难。即使当你最终怎么正确使用你的冒号和括号,但仍然有很大的可能你的程序不会如果所想的工作。 通常,这意味着你忽略了某些东西或者误解了语言结构,你需要在代码中找到你的期望与现实存在分歧的地方。

程序员通常使用被叫做调试器debugger的工具来处理这种情况,它允许一步一步地运行他们的程序。不幸的是,大多数调试器都针对专业用途进行了优化,并假设用户已经很好地了解了语言结构的语义(例如:函数调用)。

Thonny 是一个适合初学者的 Python IDE,由爱沙尼亚的 Tartu 大学 开发,它采用了不同的方法,因为它的调试器是专为学习和教学编程而设计的。

虽然 Thonny 适用于像小白一样的初学者,但这篇文章面向那些至少具有 Python 或其他命令式语言经验的读者。
by @技术头条 2018-06-28 12:07 分享 查看详情
如何在 Linux 和 Windows 之间共享文件? (linux.cn)
用一些来自 Linux 社区的工具,在 Linux 和 Windows 之间共享文件是超容易的。让我们看看可以做这件事的两种不同方法。

现代很多人都在混合网络上工作,Linux 和 Windows 系统都扮演着重要的结束。在两者之间共享文件有时是非常关键的,并且使用正确的工具非常容易。只需很少的功夫,你就可以将文件从 Windows 复制到 Linux 或从 Linux 到 Windows。在这篇文章中,我们将讨论配置 Linux 和 Windows 系统所需的东西,以允许你轻松地将文件从一个操作系统转移到另一个。
by @技术头条 2018-06-28 12:07 分享 查看详情
CSS CSS3实现3D开门动画效果 (www.zhangxinxu.com)
本文展示了2个自己写的酷酷的3D开门动画效果,然后顺便介绍了3D动画实现的一些相关技巧。本文有demo,有视频效果展示,还有必要的源代码讲解,希望本文的内容能够对您的学习有所帮助。
by @技术头条 2018-06-28 12:06 分享 查看详情
truncate table 无论drop storage还是reuse storage不影响数据恢复 (www.xifenfei.com)
今天有朋友咨询,truncate table有drop storage和reuse storage方式,是否影响后续的数据恢复(在没有其他覆盖的情况下),我做了一个简单的测试证明,这些都不影响truncate table的数据库恢复。
by @技术头条 2018-06-28 12:06 分享 查看详情
分布式事务- 二阶段协议 (ifeve.com)
在单个数据库实例时候,我们可以在一个数据源的事务(本地事务)内做多步数据库操作,在事务内的多个操作要么全部执行生效,要么全部不生效。在多数据实例节点时候,我们对多个实例的数据源进行操作时候就没办法把多个操作放到一个大的事务内来保证原子性了,因为多个实例操作的是不同的数据源,而数据库自带的事务是针对单个数据源来说的。
by @技术头条 2018-06-28 12:06 分享 查看详情
JavaScript 中有用的 Array 和 Object 方法 (www.css88.com)
我收听了一个很棒的语法FM播客,它总结了有用的JavaScript 数组和对象方法。这些方法可以帮助开发人员编写干净而且可读性高的代码。许多这样的方法可以减少像Lodash这样的实用程序库的依赖。

本文中的所有方法都是可链式调用的,这意味着它们可以相互结合使用,而且它们也不会发生数据突变,这在使用React时尤其重要。 使用所有这些数组和对象的方法,你将发现再也不需要再进行 for 或 while 循环来达到目的了。
by @技术头条 2018-06-28 12:06 分享 查看详情