当我们追求不可替代时

昨天,angela zhu在她的公众号“嘀嗒嘀嗒”,发表了一篇职场文章,怎样让自己成为不可替代的程序员。突然,我发现我在职场上难有前进的弱点和问题被暴露无遗。因为一直以来,我追寻的目标,都是可替代。其实我没有在任何公司从事过哪怕一天的职业运维工作,但很有意思,在我职场的最后几年,运维工程师很多工作方式和策略都是我来手把手教的。并不是因为我懂得多少技术,而是我非常清楚运维的至高目标,系统架构应竭力避免单点隐患,什么是单点隐患,就是这个节点崩溃了,系统整个就崩溃了。如何避免?就是任何一个节点,一个设备,一个硬件,或一个服务,崩溃了,系统都有自动检测,利用冗余机制快速恢复,哪怕是降级恢复的策略,保证系统的可用性,不会因为这个故障而全盘崩溃。当然,实话说,这个只是目标,在实践中并不是能做到完全的可靠,但至少,我们所有运维策略,架构设计,以及系统的扩展性分析,都是以这个目标为导向的,那么,为什么罗嗦... Read More

我是如何成为一名更优秀的程序员的

译者注:本文作者 James Long,前 Mozilla 工程师,NodeJS, ReactJS 社区活跃开发者。NodeJS 著名模板引擎 Nunjucks 作者,JavaScript 格式化工具 Prettier 作者。在 Mozilla 工作 6 年后离开,年仅 32 岁自己创业开公司。其人生经历值得大部分程序员学习。在React Conf上有几位朋友咨询我如何成为一名更优秀的程序员。由于某种原因,人们认为我是一个值得倾听的高级程序员。所以我想有必要把我这些年编程路上的『心路历程』写下来。关于我的一些详细信息:我现年32岁,有10年以上扎实的工作经验。直到最近几年我才对自己所做的工作充满信心。即使是现在,我也在不断质疑自己。问题在于,这种质疑并不会消失,所以你要做的就是无视它,不断的解决问题,不断的积累经验。首先我要说明的是以下提到的只是一些帮你提升技能的小贴士。最终你还是需要找到... Read More

Golang并发编程中的同步(sync)与通信(channel)

Golang中实现并发非常简单,只需在需要并发的函数前面添加关键字"go",但是如何处理go并发机制中不同goroutine之间的同步与通信,golang 中提供了sync包和channel机制来解决这一问题。Synsync 包提供了互斥锁这类的基本的同步原语。除 Once 和 WaitGroup 之外的类型大多用于底层库的例程。更高级的同步操作通过信道与通信进行。[code lang="c"type Confunc NewCond(l Locker) *Confunc (c *Cond) Broadcast(func (c *Cond) Signal(func (c *Cond) Wait(type Locketype Mutefunc (m *Mutex) Lock(func (m *Mutex) Unlock(type Oncfunc (o *Once) Do(f func()... Read More

进程间的通讯(IPC)方式

为什么要进行进程间的通讯(IPC (Inter-process communication)数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。linux常用的进程间的通讯方式(1)、管道(pipe):管道可用于具有亲缘关系的进程间的通信,是一种半双工的方式,数据只能单向流动,允许一个进程和另一个与它有共同祖先的进程之间进行通信。(2)、命名... Read More

Professor Frisby’s Mostly Adequate Guide to Functional Programming

前言同学推荐的书籍,Mark下,有时间阅读About this booThis is a book on the functional paradigm in general. We'll use the world's most popular functional programming language: JavaScript. Some may feel this is a poor choice as it's against the grain of the current culture which, at the moment, feels predominately imperative. However, I believe it is the best way to learn FP for several reasonsYou likely use it ev... Read More

Shell脚本之输出带颜色的字体

shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-格式如下echo -e “\033[字背景颜色;文字颜色m字符串\033[0m”例如echo -e “\033[41;36m something here \033[0m”其中41的位置代表底色, 36的位置是代表字的颜色注  1、字背景颜色和文字颜色之间是英文的”;”2、文字颜色后面有个3、字符串前后可以没有空格,如果有的话,输出也是同样有空格下面是相应的字和背景颜色,可以自己来尝试找出不同颜色搭配例echo -e “\033[31m 红色字 \033[0m”echo -e “\033[34m 黄色字 \033[0m”echo -e “\033[41;33m 红底黄字 \033[0m”echo -e “\033[41;37m 红底白字 \033[0m”字颜色:30—–3echo -e “\033[30m 黑色字 \033[0m”... Read More

2017 WTM(谷歌女性开发者节) 报名

Google 长期致力于在全球范围内搭建更具包容性的工作环境,其中很关键的一点就是给予女性更多机会去实现梦想,并帮助她们创造改变世界的工具。通过提供适宜的环境和政策,女性可以在科学技术上更加快速地成长,获得更高的价值实现。Women Techmakers (WTM,女性开发者大会)项目是由 GDG (谷歌开发者社区) 的 Women Tech Lead 发起并组织,旨在鼓励和促进女性在技术领域的参与,从而使得更多的女性开发者、女性设计师和科技型公司女性企业家成长、提升和成功。和 I/O 一样,WTM 也是全球性活动。今年 WTM 的主题是 Telling Our Story。今年的 WTM 可以预见的将成为天津 GDG 历史上第二大的活动。嘉宾阵容和数量超过去年很多,我们也换了一个更大的场地。4月15日,我们一起见证属于女性的精彩绽放。当然绿叶们还是可以坐在台下的。时间 / 地点活动时间:... Read More

读研究生利弊之我见

嘀嗒你好看了嘀嗒嘀嗒最近的文章,想说的有点多,但留言不能超过600字,就把一部分留言写在这了:看过文章又想到一个老话题—要不要读研。看过几篇文章,都不是很支持,角度大多是“读研不代表有好工作”“时间成本太高”“导师不靠谱”等等,这些都是实际问题,但不经过这样系统的训练,如何能快速得到或着说找到正确路径获得安姐要求的这样的思维能力呢?安姐能写出如此受大家欢迎的文章,想必和在学校里受到的训练是分不开的吧。安姐如果有空,能不能写一篇关于如何获得好的思维能力的文章,世界观和方法论都写写,感激感激!/玫瑰玫瑰你好关于要不要读研的问题,很多人写过文章了。记得我也有提过几次。今天再分享一下我的感受吧。我读硕士和博士的主要专业一个程序语言设计,二是 BioInfomatics。前者加深了我对程序语言的理解,更清楚各种程序语言最基本的设计理念,以及一些在性能和表达上的优缺点。当然,简历上写着“我能写一个... Read More

太一星晨解析七层负载均衡关键技术

负载均衡,英文名称为LoadBalance,其意思就是将负载(工作任务)进行平衡,分摊到多个操作单元上进行执行(例如Web服务器、FTP服务器等),实现多个服务器共同完成工作任务的目标。负载均衡建立在现有网络结构之上,它提升了服务器的性能、提高了带宽利用率,增强了网络的灵活性和可靠性。经过十年的发展,负载均衡已经成为网络应用的重要设备,甚至成为大型网络应用的核心设备,与基础路由、交换设备市场并驾齐驱。十年间,负载均衡的前沿技术层出不穷,令用户眼花缭乱。经常在技术网站、文档中出现的“四层负载均衡”、“七层负载均衡”字眼有什么含义?有什么区别?对客户网络有哪些不同的优化?带着这样的疑问,今天我们就来仔细研究一番。四层负载均衡像银行自助排号机 七层负载均衡像银行大堂经理首先,我们来了解一下什么是四层负载均衡、什么是七层负载均衡。四层负载均衡指的是负载均衡设备通过报文中的目标IP地址和端口负载均衡... Read More

【PHP扩展开发】深入理解PHP7之ZVAL

PHP7已经发布, 如承诺, 我也要开始这个系列的文章的编写, 今天我想先和大家聊聊zval的变化. 在讲zval变化的之前我们先来看看zval在PHP5下面是什么样子版权申明本文是原创作品,包括文字、资料、图片、网页格式,转载时请标注作者与来源。非经允许,不得用于赢利目的。PHPzval回顾在PHP5的时候, zval的定义如下struct _zval_struct union long lval;double dval;struct char *val;int len;} str;HashTable *ht;zend_object_value obj;zend_ast *ast;} value;zend_uint refcount__gc;zend_uchar type;zend_uchar is_ref__gc;};对PHP5内核有了解的同学应该对这个结构比较熟悉, 因为... Read More

浅谈PHP的线程安全与非线程安全版本

Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用多进程 的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP扩展是以 Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是PHP运行的最安全方 式,但CGI模... Read More

为什么有的程序员觉得自己是个打杂的?

先说几句题外话。前几天在小密圈里介绍了几位嘉宾,大部分是我的同事,其中还有一位是我老板。有人发消息问我:“你把同事老板都拉到圈子里,不怕有的话不方便说么?”其实我平时连发朋友圈都几乎不用分组。老板同事都在圈子里盯着,确实,我不能嘚瑟得太厉害,因为就算自己不会不好意思,他们也得替我不好意思。所以啊,这样反而于我有益处了。本来就是分享自己作为工程师的日常,以及一些所思所想。有他们在,我的分享反倒更真实和诚实,也让我时时刻刻警醒着做自己,不要上天。此外,就像最初开公众号的初衷,之所以我有那么多东西可以分享,很大程度因为我身边有很多这样给我启发和帮助的朋友、同事。我的故事,很多时候就是他们的故事。言归正传。好几次收到留言,问:觉得每天都没有进步,做的事情似乎都没有太大的意思,自己很难有提高,怎么办?一觉得每天都做着重复性的工作。数学和计算机科学都有两个境界。一个是具体问题,一个是抽象问题。如果对于... Read More

Tracking the Money — Scaling Financial Reporting at Airbnb

At Airbnb, the Payments team is responsible for everything related to moving money in Airbnb’s global marketplace. We build technology that powers Airbnb’s massive daily transaction volume to collect payments from guests and distribute payouts to hosts. Our goal is to make the payment experience on Airbnb delightful, magical, and intuitive.Historically, the payments team’s focus was to implement n... Read More

PHP Internals Book 中文版 – Zvals – 基础结构

基础结构一个zval(“Zend value”的缩写)代表一个任意类型的PHP变量。所以,它很可能是PHP中最重要的数据结构,同时你将会频繁地使用它。本章节讲述zvals的基础概念及其使用方法。类型和值每一个zval都会存储某个值和其对应的类型。这点非常重要,因为PHP是一门动态类型语言,所以变量的类型只有当运行时才会确定,并不是在编译时就能够确定。此外,zval的类型在其生命周期是可以改变的,所以如果这个zval在最初存储了一个整形,那么在之后的某个时间点他也可能会存储了一个字符串。 类型是存储在一个整形的标签中(一个 unsigned char 类型的变量)。它有8中类型的值,分别对应着PHP中的8中变量类型。这些值可以用诸如IS_TYPE形式的常量来使用。比如:IS_NULL对应null类型,IS_STRING对应字符串类型。真实的值是存储在一个联合体中,如下所示typedef union _zvalue_value ... Read More

PHP Internals Book 中文版 – Zvals

Zval本章节的主题为用来表达PHP变量的zval数据结构。我们将会围绕zvals的概念和如何在扩展开发中使用两方面来进行阐述。目录基础结构类型和值访问宏赋值内存管理值语义和引用语义引用计数和写时复制分配并初始化zval管理引用计数和zval销毁复制zval分离zval类型转换和操作符基础操作符比较类型转换 Read More