• 每个程序员都该知道的五大定理

    Posted by : lon.y@qq.com on 2017年9月16日

    定律-或称法则,可以指导我们并让我们在同伴的错误中学习。这篇文章中,我将介绍我每次设计或实现软件时出现在我脑海的五大定律。其中有些和开发有关,有些和系统组织有关。它们可以帮助你成为合格的软件工程师。 墨菲定律 “凡事可能出错,就一定出错。” 这条定律来源于 Edward Murphy —— 一名航天工程师在 50 年代初对火箭测试失败的回应。这条定律给我们的启示是永远在系统关键地方使用防御性设计,因为系统某些地方总会出错! 这条定律很容易引入软件工程领域。

    阅读全文...

  • MySQL 索引设计概要

    Posted by : lon.y@qq.com on 2017年9月15日

    在关系型数据库中设计索引其实并不是复杂的事情,很多开发者都觉得设计索引能够提升数据库的性能,相关的知识一定非常复杂。 然而这种想法是不正确的,索引其实并不是一个多么高深莫测的东西,只要我们掌握一定的方法,理解索引的实现就能在不需要 DBA 的情况下设计出高效的索引。 本文会介绍 数据库索引设计与优化 中设计索引的一些方法,让各位读者能够快速的在现有的工程中设计出合适的索引。 磁盘 IO 一个数据库必须保证其中存储的所有数据都是可以随时读写的,同时因为 My

    阅读全文...

  • 漫谈传统的 Linux 初始化系统的运行级别

    Posted by : lon.y@qq.com on 2017年9月15日

    了解运行级别是如何配置的,如何改变系统运行级别以及修改对应状态下运行的服务。 在 Linux 系统中,运行级别run level是指运维的级别,用于描述一种表明什么服务是可用的系统运行状态。 运行级别 1 是严格限制的,仅仅用于系统维护;该级别下,网络连接将不可操作,但是管理员可以通过控制台连接登录系统。 其他运行级别的系统允许任何人登录和使用,但是不同级别中可使用的服务不同。本文将探索如何配置运行级别,如何交互式改变系统运行级别以及修改该状态下可用的服务

    阅读全文...

  • 为提高用户体验,Yelp 是如何无损压缩图片的

    Posted by : lon.y@qq.com on 2017年9月13日

    Yelp 拥有超过 1 亿张由用户生成的照片,这些照片从晚餐、理发,到我们最新的功能之一:yelfies。这些图像占据了用户 APP 和网站的大部分带宽,这意味着存储和传输的巨大成本。为了向用户提供最好的体验,我们努力优化这些图片并将其平均大小缩小了 30%。这样节省了用户的时间和带宽,并降低了为这些图像提供服务的成本。哦,我们这样做都没有降低图像的质量呢! 背景 Yelp 已经帮用户存储上传的照片超过 12 年了。我们那些将无损格式的图片(PNG,GIF

    阅读全文...

  • 数据异构的武器-BINLOG+MQ

    Posted by : lon.y@qq.com on 2017年9月13日

    1、定义 何谓数据异构,上周交易部门商品的同事过来做分享,又看到这个词,他的PPT里面是 数据库异构。其实我们以前做的事情,也是可以成为数据异构。比如我们将DB里面的数据持久化到REDIS里面去,就是一种数据异构的方式。如果要下个定义的话:把数据按需(数据结构、存取方式、存取形式)异地构建存储。 2、常见应用场景 分库分表中有一个最为常见的场景,为了提升数据库的查询能力,我们都会对数据库做分库分表操作。比如订单库,开始的时候我们是按照订单ID维度去分库分表

    阅读全文...

  • MySQL 8.0.3 RC 版即将发布,看看有哪些变化

    Posted by : lon.y@qq.com on 2017年9月12日

    MySQL 8.0.3 即将发布,一起看看有什么新变化吧 MySQL 8.0.3 即将发布 RC 版本,这预示着 8.0 版本离 GA 越来越近了。 下面分享一下 8.0.3 版本的一些重要新特性、新变化: 直接废除 query cache(应该只是关闭入口,自行编译源码的话,还能再次启用) 查询优化器支持直接在 SQL 中利用 SET_VAR 这个 HINT 语法修改某些会话级的选项,比如:- SELECT /*+ SET_VAR(sort_buffer

    阅读全文...

  • 技术面试中常被问到是否参与开源,那如何清晰展示 GitHub 项目呢?

    Posted by : lon.y@qq.com on 2017年9月11日

    你面试的公司找你要 GitHub 链接,猎头找你要 GitHub 链接。“你参与过开源项目么?”是目前 IT 技术面试中的常见问题之一。 既然他们要 GitHub,你就得给。本文将阐述如何在面试中展示你在 GitHub 上的项目。 以下的建议有两个用途:应聘者可以学习怎么写软件的简介(不一定非要是GitHub);招聘者(程序员)可以学习可以从哪些关键点来评价一个程序员的水平和软件的质量。 When having a GitHub is mandatory,

    阅读全文...

  • 100:10:1方法 : 我是这样参与开源的

    Posted by : lon.y@qq.com on 2017年9月9日

    【导读】:据本文作者 Michael Fogus 博客上的简介,他是一位 Clojure 开发者和狂热用户,并且是 Clojure 的贡献者(Clojure 本身也是一个开源项目)。平常在 Clojure 和 ClojureScript 花费时间很多。他喜欢棒球、象棋、哲学、恐怖电影、阅读和写作。出过两本书《Functional JavaScript》和《The joy of Clojure》。 许多年里我一直全心投入于开源运动,不过那时候我很少在空闲时写

    阅读全文...

  • Linux 系统开机启动项清理

    Posted by : lon.y@qq.com on 2017年9月8日

    一般情况下,常规用途的 Linux 发行版在开机启动时拉起各种相关服务进程,包括许多你可能无需使用的服务,例如蓝牙bluetooth、Avahi、 调制解调管理器ModemManager、ppp-dns(LCTT 译注:此处作者笔误 ppp-dns 应该为 pppd-dns) 等服务进程,这些都是什么东西?用于哪里,有何功能? Systemd 提供了许多很好的工具用于查看系统启动情况,也可以控制在系统启动时运行什么。在这篇文章中,我将说明在 Systemd

    阅读全文...

  • 基于 Redis 实现分布式应用限流

    Posted by : lon.y@qq.com on 2017年9月8日

    限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务。 前几天在DD的公众号,看了一篇关于使用 瓜娃 实现单应用限流的方案,参考《redis in action》 实现了一个jedis版本的,都属于业务层次限制。 实际场景中常用的限流策略: Nginx接入层限流 按照一定的规则如帐号、IP、系统调用逻辑等在Nginx层面做限流 业务应用系统限流 通过业务代码控制流量这个流量可以被称为信号量,可

    阅读全文...