《格鲁夫 给经理人的第一课》

这本书是英特尔的创始人安迪格鲁夫根据他在英特尔的20年管理经验写成的,大部分内容是面对中层管理者的,虽然年代以及实际生产环境跟现在的互联网企业有所不同,但其中大部分的内容还是能给我们带来很大的启发。这篇文章主要是我自己站在互联网企业游戏开发部门负责人的角度来理解书本提到的管理概念的一些记录。

首先这本书提出了要梳理生产流水线。重新审视流水线上每一个环节,找出制约环节,设定生产中每个环节的指标,提早安排测试,合理计划生产量等等关于具体生产线的工作原则。貌似与互联网企业的开发部门关系不大,但其实基于这些理念我们也能重新审视我们自己的团队。因为我们团队里的每一个工程师,其实就是生产流水线上的每一个环节。梳理生产流水线其实就是梳理我们团队的开发情况,一样会有薄弱的模块或者人,对于每个模块或者人也同样可以设法提高成产力,设定更具体的指标,提前安排测试验收,从而保证整体的产出及质量。

Continue reading

计算机网络——传输层:TCP与UDP

传输层与网络层一齐构建成了网络协议层次的核心。网络层解决的是计算机与计算机之间的通信问题,而传输层解决的是进程与进程之间的通信问题。传输层架构在网络层提供的服务之上,把数据传递服务从两台计算机之间拓展到两台计算机上的进程之间。因此,在传输层通信除了IP之外还需要有端口号来确认是与目标计算机上那个进程通信。与网络层类似的,传输层也提供了两种服务类型。一是面向连接的TCP传输,另外一种是无连接的UDP服务。所以要了解传输层的细节,就是要了解清楚TCP与UDP的细节。

UDP:用户数据报协议(User Datagram Protocol)为应用程序提供一种无需建立连接就可以发送封装的IP数据报的方法。UDP传输模型可以类比为邮递方式,发送方在发送之前无需建立连接,只需要知道接收方的地址(IP和Port),然后把数据报发送出去后,由网络自行路由,最终能否到达目的地,什么时候到达,发送方是不会得到反馈的。UDP除了提供发送数据包功能之外,几乎没有做任何事情,使用UDP传输的时候应用程序应该自己组织策略应对丢包、乱序和数据出错的情况。

TCP:传输控制协议(Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。TCP传输模型可以类比为打电话,通信双方在通信之前必须先建立连接(IP和Port),然后在这个连接上收发数据,通信结束后要释放连接。TCP采用的是全双工连接,表示可以在两个方向上同时传输数据。为了提供可靠的端到端字节流传输,TCP在内部实现了丢包重传、乱序重排、校验数据的功能。此外TCP还实现了一个重要功能——拥塞控制,会通过一些数据来得知当前网络情况,在网络情况不好时降低发送速度,在网络情况优良时提高发送速度,从而让整个网络达到一个高效状态。正因为TCP实现了上述这么多的功能,所以TCP是Internet的主力军,大部分网络应用采用TCP传输数据。

想要真正了解TCP协议,就必须了解TCP应对网络不可靠情况做的策略。而要真正用好UDP,也要在一定程度上自己组织策略应对网络不可靠的情况。所以要了解传输层,用好TCP/UDP的核心就是了解要面对的情况及一些相应的处理方案。 Continue reading

计算机网络——总览

计算机网络这个标题实在是太广泛了,当中涉及太多的方面与相关知识,这篇博客作为总览尝试从几个不同的角度出发大致对计算机网络有一个基础的认识,后面再通过另外的博客来深入了解其中某些具体的技术。

说起计算机网络,普通人的第一印象可能就是因特网(Internet),但其实世界上存在着许许多多的网络,他们使用不同的技术、不同的规范标准以及不同的硬件和软件。所有能够相互互联通讯的网络都叫互联网(internet),而全球范围的互联网用大写Internet表示,称为因特网。

如果要深入学习计算机网络,首先要对计算机网络这么庞大的主题进行划分,如果从网络尺度上考虑,按照物理尺寸大致可以将计算机网络划分为以下多个系统:

个域网PAN:Personal Area Network,允许设备围绕一个人进行通信。例如蓝牙(bluetooth),采用主-从操作模式。还有使用射频识别技术RFID(Radio Frequency IDentification)构建的近场通信NFC(Near Field Communication)。

局域网LAN:Local Area Network,一般在一座建筑内,比如家庭或办公室。有线局域网使用IEEE802.3(俗称以太网)标准构建,使用一台交换机与局域网内的计算机通过点到点链路连接。交换机有多个端口,每个端口连接一台计算机,交换机的工作是中继与之连接的计算机的数据包,根据每个数据包中的地址来确定这个数据包要发往哪台计算机。无线局域网使用IEEE802.11(俗称WiFi)标准构建,使用一个无线接入点(AP, AccessPoint)中继无线设备之间的数据包,还负责中继无线设备与Internet之间的数据包。 Continue reading

《高性能MySQL》

        之前我对于MySQL的认识只是停留在会用的层面,虽然上一个游戏用的数据库就是MySQL,但也只是满足了使用需求,没怎么深入了解。这段时间读了《高性能MySQL》这本书,深入了解了MySQL并且学习到了如何更好的运用数据库。这本书的阅读基础是建立在读者对数据库有一定的使用经验上的。全书一直围绕着如何用好MySQL的这一主题来展开各个模块的内容,其中包括MySQL的底层机制、如何结合需求建表、各种数据类型的特性、索引的使用、查询语句优化、如何测试数据库、如何备份还原数据库以及各种工具的使用等等。下面会列一些比较重要的知识点作为记录,供大家参考。

Continue reading

漫谈设计模式

最近有空又重新看了一遍《Head First 设计模式》,孔子曰“温故而知新”,诚不欺我也。虽然在大学时已经看过这本书,但工作两三年后重新看回来还是获益良多。不仅弄明白了很多以前一知半解的东西,而且对于很多模式都能够在项目工程中找到实例,了解了其设计意图以及优缺点,很有拨云见日的感觉。

现有的设计模式很多,最经典的有24个,他们有的很相似,有的南辕北辙,各有各的优缺点,各有各的适用范围。通过三篇文章来把他们归类、梳理并逐一介绍:

(一)漫谈设计模式 —— 创建行为的封装

(二)漫谈设计模式 —— 结构的封装

(三)漫谈设计模式 —— 职责的封装

通过以上的文章我们看了那么多的模式,我们肯定会有所思考。设计模式到底是什么?设计模式用来干什么的?

Continue reading