C++ 中 auto & decltype

C++11 的一个重要特性就是自动类型推导(auto type dedection),通过引入 auto 和 decltype 关键字实现了类型推导,不仅能够方便的获取复杂类型,还能够简化书写,提高编码效率。



C++ lambda 函数

本篇主要描述 lambda 函数以及跟仿函数的关联,最后介绍 lambda 的使用陷阱。


C++ 智能指针

本篇主要描述C++的几种常用智能指针。


STL容器的区间成员函数

STL 中容器的插入、删除、赋值都有相应的区间成员函数,相比于单元素的成员函数而言,使用区间成员函数使得代码更加清晰,更加高效。


Linux的动态链接

本篇将详细讲述 Linux 中动态链接的过程,并且分析动态链接库装载时的重定位方法。


Linux的静态链接

本篇将详细讲述 Linux 中静态链接的过程,即链接器如何为目标文件分配在输出文件中的空间和地址,如何进行外部符号的解析与重定位。


Linux的进程虚拟地址空间

本篇将详细讲述Linux中ELF文件的装载过程,介绍进程虚拟地址空间的分布,以及虚拟地址空间载入物理内存的方式。


Linux的系统调用

系统调用是应用程序与操作系统内核之间的接口。本篇主要剖析 Linux 中系统调用的原理,详述系统调用从用户态到内核态的流程。


美国之行

去年11月份因公出差去了趟美国的丹佛市,在美国的一周时间里,亲身经历了这个发达国家人民的生活、工作状态,有一些感悟在这里分享给大家。


目标文件的那些事

本篇主要探讨目标文件(Linux中的ELF)的内部结构,并对神秘目标文件一探究竟。


笔记法总结

职场五六年,对如何做笔记也有自己的一点心得体会,这里总结对自己有帮忙的方法。


宝宝出生记

宝宝出生也将近一周岁了,我也在适应着作为父亲的这个角色。老婆也早已经做完月子,开始了正常的上班生活,还跟我调侃说早就忘记了生娃时所受的痛苦了。

这么重要的人生阶段我想很有必要记录一段,以后也能时常回忆。


基于redis的分布式锁的实现方案

在不同进程需要互斥的访问共享资源时,分布式锁是一种常用的技术手段。目前主要有几种解决方法,一种是借助于DB的事务来实现,另一种是借助于分布式键值存储系统(例如etcd, zookeeper等)实现。本篇主要介绍如何通过redis实现分布式锁。


创建基于proxy的HTTP(s)连接

最近遇到了几次HTTP(s)如何通过代理访问内网的问题,本篇讲述基于proxy发送/接收HTTP(s)请求的客户端实现方法。


golang中context包

在阅读一些标准库(net、net/http、os/exec)时,经常会遇到context包,大致知道是当做关闭事件触发用的。阅读完GoTeam的文章Go Concurrency Patterns: Context,才更深刻的了解了其设计意图。



Liunx性能检测常用命令(一)

作为后端研发人员,了解Linux服务器的性能状态是非常必要的,Linux设计的性能检测命令也很多,如何在最短时间内定位到影响服务器性能的瓶颈,这也是每个研发人员的必备的技能之一。


分布式存储之Raft协议应用详解

最近研究Raft协议,也阅读了go-raft的实现代码,虽然已经不维护了,但etcd, InfluxDB等项目前期都是使用的该库,还是很有工程上的参考价值。本篇针对论文与实现过程作简要的分析, 并分析了Raft的容错处理。




《一个人的朝圣》- 思想的旅程

最近用零零碎碎的时间看完了英国作家的小说《一个人的朝圣》,英文名称《The unlikely pilgrimage of Harold Fry》,英文翻译应该是哈罗德•弗莱不可能的朝圣之旅。


分布式存储之2PC协议

两阶段提交是很常用的解决分布式事务问题的方式,它可以保证分布式事务的原子性(要么所有参与进程都提交事务、要么都取消事务)。在数据一致性环境下,其代表的含义是:要么所有备份数据同时更改某个数值,要么都不更改,以此来达到数据的强一致性


分布式存储之CAP原则

深入理解分布式环境需要理解几个基本的概念CAP、BASE、ACID等。本篇以下记录了这几个基本概念及其关系。


分布式存储之数据切片

在大数据时代,稍大型企业的数据量已经达到TB甚至PB级别,显然单机无法存储于处理如此规模的数据量。分布式数据的存储必然涉及到数据的分片,本篇分析了几种常用的数据分片模型。


浏览器缓存

当我们通过浏览器打开一个web页面的时候,浏览器需要从web服务器下载各种资源(网页、脚本、样式表等)。但并不是每次请求都需要从web服务器中获取的,浏览器自身可以设置缓存。本篇将会介绍些浏览器的缓存技术。


服务器并发策略

技术是随着需求的发展而不断前进的,正如服务器的并发量。对于单台服务器而言,资源是有限的,采用何种并发策略最大限度的利用服务器的性能,提高其吞吐量也是值得研究的,本篇将详述服务器的几种并发策略。


PHP动态脚本Opcode

本篇较为深入的讲述了PHP的Opcode缓存原理。简要分析了PHP的脚本跟踪与分析技术。


I/O多路复用

I/O多路复用是常用的服务器I/O模型,包括select/poll/epoll等方式。本篇针对这几种方式的优缺点分别做讲解。



服务器的I/O模型

I/O模型的设计是后台服务能否支持高并发的至关因素。好的服务器性能必然需要良好的IO模型作为支撑。本篇重新复习下服务器常用的IO模型。



golang中域名解析问题

在近期的Golang项目中遇到过类似这样的报错信息:lookup www.baidu.com on 10.10.100.1:53 no such host. 本篇就来说说golang中域名解析遇到的问题。


apache配置与性能

本篇将通过apache的配置项,结合实际应用,直观感受这些配置参数对吞吐量的影响。


ApacheBench(ab)压力测试

通常考察服务器性能都离不开高并发、高吞吐率,本文主要描述了一些基本的概念,并通过ab压测分析其中的影响因素。


《功夫小蝇》- 苍蝇复仇记

最近是迷上了印度电影,从早些的《三傻》,到《OMG》、《未知死亡》、《爱无止境》、《我的个神啊》…看了很多。感觉阿三的电影都很有内涵,表达宗教与信仰、人性与冲突,穿插的歌曲也都与故事情节衔接的十分自然。



golang错误处理(一)

Golang中Error作为返回值是很常见的,几乎每个函数返回值都有error的interface。本文翻译自Error Handling In Go, Part I,作者在该篇中对error接口的创建、使用等做了详细描述。


golang参数传递

以前在C/C++中,都知道传参时何时传值、指针、引用。那在Golang中的规则又是怎样的呢?对于参数传递是否有统一的规范呢?本文翻译自Using Pointers In *Go,作者总结出的方法一定让你受益匪浅。


程序猿的自我修养 — 直面问题

程序员是与机器打交道的,机器识别的是二进制,不知道变通。所以,业务上任何逻辑、语法、性能等等问题都是家常便饭。问题可大可小,轻者内心嘀咕几句,自己debug;重者猛砸键盘鼠标,口爆粗语。


理解golang中的切片

Golang的初学者有时会被slice所困扰,不理解其内部原理,使用起来总是担心是否有复制的开销。 本文翻译自Understanding Slices in Go Programming,作者对其内部原理作了深入分析。相信读完将会有不一样的感受。


Linux防火墙

在工作中常常涉及到防火墙的概念,基本网络不通或者服务无法连接首先就会想到是否是防火墙的原因。当然这里所说的防火墙是Linux系统内核继承的IP信息包过滤系统Netfiter/iptables。


简单分布式服务器框架

最近工作中接触到分布式服务器,现针对学到的作简要概述, 分布式服务器之路刚起步。


setopt简介

在阅读别人的代码时,网络部分经常会遇到setopt函数,下面关于几个生疏的选项作简要总结。


非阻塞connect

本文总结了关于非阻塞connect的处理细节,实现细节,作简要总结。


Markdown简介

这段时间才结束Markdown。 想想作为程序员,才接触Markdown,甚是晚哉。 学什么只要其实也没有早晚,只要用心,此理放之四海而皆准。 废话不多说,下面简单记录markdown。