趣文:C++程序员离职前丧心病狂的报复
分类标签: C++ 程序员
有人先在 Twitter 发了一条推,号称 「C++ 砖家建议」:... 然后随着扩散和转发,越来越多丧心病狂的邪恶建议,最后汇集而成:...阅读全文 »
TCP/UDP网络编程入门教程之十九:TCP应用——构建echo客户端
分类标签: TCP/IP
echo客户端的工作原理也很简单: 1、向服务器端发送一个字符串; 2、接收服务器的返回信息(如果是echo服务器就会返回发送出去的字符串本身)。 3、在标准输出中回显服务器返回的信息。阅读全文 »
还不懂Hadoop分布式文件系统HDFS的工作原理?——快来扫扫盲吧
分类标签: Hadoop
分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。它能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。要理解HDFS的内部工作原理,首先要理解什么是分布式文件系统。阅读全文 »
PHP7新特性与性能提升
分类标签: PHP
有幸参与2015年的PHP技术峰会(PHPCON),听了鸟哥(惠新宸)的关于PHP7的新特性和性能优化的分享,一切都令人感到激动。鸟哥是国内最权威的PHP专家,他的分享有很多非常有价值的东西,我通过整理分享的PPT和收集相关资料,整理为这篇解读性质的技术文章,希望能给做PHP开发的同学一些帮助。 PHP已经走过了20年的历史,直到今天,PHP7都发布了RC版,据说,PHP7正式版应该会在201阅读全文 »
TCP/UDP网络编程入门教程之十八:TCP应用——构建echo服务器
分类标签: TCP/IP
现在,我们用前面所构建的socket类,重新设计第一章中echo的服务器,然后设计客户端程序。 echo服务器的工作原理很简单: 1、接收客户端传来的信息; 2、将接收到的信息原封不动的返回给客户端。 可以看到我们所设计的TCPServerSock类具备了echo服务的所有数据成员,我们只需要添加一个具体的echo方法。因此,我们让设计的echo类从TCPServerSock类中派生出来。阅读全文 »
TCP/UDP网络编程入门教程之十七:TCP原理——TCP连接的关闭
分类标签: TCP/IP
TCP连接一旦建立,服务器端和客户端就成为了对等关系,任何一方都可以发出关闭握手请求,甚至可以同时发出关闭握手请求。TCP的连接建立需要3次握手,而正常关闭则需要4次握手。 1、主动关闭的一方A调用close(),SendQ不再接收send()写入信息,在SendQ队列的最后,向被动关闭的一方发送TCP的IP数据报作为关闭握手的请求。这个数据报中包含着标志FIN,也包含着此刻的字节序号m。阅读全文 »
TCP/UDP网络编程入门教程之十六:TCP原理——字节流的发送与接收
分类标签: TCP/IP
从TCP三次握手的原理我们可以看到,TCP有“保障”的连接实际上可以看做是两个单向的连接:一个通道只负责发送,另外一个只负责接收。并且,传送的信息是以字节为单位保证顺序的。 在socket机制中,应用层的程序以send()函数将数据首先发送到本机系统的发送缓存中,我们称之为SendQ,意指这是一个FIFO(先进先出)的队列。阅读全文 »
什么是函数式编程——函数式编程扫盲贴
分类标签: 程序员 软件工程师
1. 概论 在过去的近十年的时间里,面向对象编程大行其道。以至于在大学的教育里,老师也只会教给我们两种编程模型,面向过程和面向对象。 孰不知,在面向对象产生之前,在面向对象思想产生之前,函数式编程已经有了数十年的历史。 那么,接下来,就让我们回顾这个古老又现代的编程模型,让我们看看究竟是什么魔力将这个概念,将这个古老的概念,在21世纪的今天再次拉入了我们的视野。阅读全文 »
TCP/UDP网络编程入门教程之十五:TCP原理——TCP的三次握手(three-way handshake)
分类标签: TCP/IP
前面3个小节介绍了socket机制对TCP协议三次握手的实现,需要强调的是,与协议独立于实现类似,TCP的三次握手是独立于socket体系的理论。在TCP协议中,三次握手是通过3个TCP格式的IP数据报来实现的。TCP格式的IP数据报中包含着TCP首部,TCP首部信息中包含着对每一个数据报具体内容的描述。阅读全文 »
架构设计之路(五):测试驱动
分类标签: 软件架构
上一章我们提到,单元测试只是测试驱动的一个子集;换言之,测试驱动有着更宽广的概念,他要求以“测试”为驱动力,来推动整个开发活动。这个观点似乎非常具有争议性,相当多的人认为其根本不具有可执行性。但很奇怪的是,当我第一眼接触这个观点,我就觉得,它像一道闪电划破长空,它光华璀璨,价值无以伦比!阅读全文 »
5款游戏教你学编程——终于可以快乐的编程了
分类标签: HTML Javascript
这些WEB游戏非常有趣,可以把你带入迷人的编程世界。 1. CodeCombat CodeCombat 是一个 HTML5 角色扮演游戏(RPG),教你基本的编程概念。 在 CodeCombat 中,你扮演一个英雄通过游戏中不同等级的冒险。第一关是 Kithard Dungeon ,里面涵盖了编程的基本概念。阅读全文 »
架构设计之路(四):单元测试
分类标签: 软件架构
在带队的过程中,性能的问题还比较好解决,最消极的想法,“好啊,多一事不如少一事,你让我不管还不简单?”,但要求写测试代码,那就炸锅了!以我的经历,“测试驱动”是一个最具争议的话题,没有之一。吹捧者和反对者泾渭分明,而且都有大量的论据和证明。记得曾经有一篇文章,大意是:“公司付钱给你不是让你写测试代码的”,下面一片狂赞。阅读全文 »
架构设计之路(三):性能
分类标签: 软件架构
我们在上一篇博客架构设计之路(二):目标中设定了架构的目标,只有一个,就是可维护性。完全没有提性能,这是故意的。 似乎程序员都是急性子,或许是被windows冗长的开机时间折磨够了,有可能是因为提升性能的效果是最显而易见的……总之,我发现,绝大部分程序员对性能的关注和热情是无与伦比的!阅读全文 »
Git使用流程规范——推荐大家这样使用Git
分类标签: Git
团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。 下面是ThoughtBot 的Git使用规范流程。我从中学到了很多,推荐你也这样使用Git。 阅读全文 »
架构设计之路(二):目标
分类标签: 软件架构
标准来源于目标 前文说过,评价架构好坏是一个很主观的东西。既然大家写出来的程序都能跑,凭什么就说你架构好,我的架构就差?拿出来大家评评理,张三说好,李四说不行,王五说将就……究竟谁说了算?现在已经不是一个迷信权威的时代了,所以不管你多少光环加持,你都得说出子丑寅卯来,都得服众才行。阅读全文 »
TCP/UDP网络编程入门教程之十四:TCP原理——设计TCP socket的类(下)
分类标签: TCP/IP
在另外一边的客户端,我们分析一下TCPClientSock的建立过程。... 我们看到TCPClientSock的类与TCPServerSock很类似,构造函数的差别是,TCPClientSock需要提供server端的IP地址和端口号。阅读全文 »
架构设计之路(一):前言
分类标签: 软件架构
我学计算机学开发,目的很明确,就是奔着“架构”来的。当然,最初我不知道这个名词,我以为我就是去学“做网站”的。什么时候能够学会?最开始我以为三个月应该够了,然后延期到六个月,再延期到一年、两年……直到现在。在这个过程中, 我算是深刻的体会到“学无止境”,或者“学得越多越觉无知”是什么意思。阅读全文 »
TCP/UDP网络编程入门教程之十三:TCP原理——设计TCP socket的类(中)
分类标签: TCP/IP
当激活监听的TCPListenSock等待远程client的connect()握手请求的时候,是调用了accept()并且产生阻塞(默认情况下),如果accept()成功返回意味着conect()握手请求请求成功,这时候就通过accept()产生了一个新的sockFD用于TCP通讯。我们把这个新的sockFD构建为TCPServerSock类:...阅读全文 »
Apache 2移植到Arm开发板的过程整理——如何交叉编译Apache 2
分类标签: Apache Linux
话说要在arm开发板的linux系统中运行apache服务器,需要在pc linux系统中交叉编译Apache源码,在网上参考了很多资料都是1.3版本的,最后终于找到apache 2移植到arm开发板的方法,现整理如下文。由于开发板的不同,可能这里出现的问题大家不会都遇到,但相信多数问题都已覆盖。阅读全文 »
TCP/UDP网络编程入门教程之十二:TCP原理——设计TCP socket的类(上)
分类标签: TCP/IP
我们之前讲过,socket是一个int的文件描述符(WinSock中直接是一种抽象的描述符),我们通过对这个描述符发出指令操作socket。这是C语言的思想,在面向对象的思想中,最好socket本身是一种对象,各种方法由对象本身发出。用面向对象的思想封装socket并不困难,而且,对于描述socket的概念可能更加直观,这一节,我们边介绍socket和TCP的概念边对socket进行OO封装。阅读全文 »