摘要: 软件工程复杂性http://mperry.github.io/2012/07/26/software-engineering-is-hard.htmlAccidental complexity can be addressed and resolved, e.g. the details of progamming in a lanuage. However, essential complexity is caused by the specification, design and testing of the software abstraction. The construction 阅读全文
posted @ 2014-02-19 13:29 blockcipher 阅读(420) 评论(0) 推荐(0) 编辑
摘要: http://state-threads.sourceforge.net/docs/st.htmlState Threads for Internet ApplicationsIntroductionState Threads is an application library which provides a foundation for writing fast and highly scalable Internet Applications on UNIX-like platforms. It combines the simplicity of the multithreaded p 阅读全文
posted @ 2014-01-22 10:32 blockcipher 阅读(384) 评论(0) 推荐(0) 编辑
摘要: http://oldblog.antirez.com/post/redis-manifesto.htmlRedis ManifestoRedis宣言Many times I don't know what to exactly reply to feature requests, or questions about why things in Redis are done in a specific way. Most of the time the questions make a lot of sense, there is not just a way to make thin 阅读全文
posted @ 2014-01-06 13:21 blockcipher 阅读(230) 评论(0) 推荐(0) 编辑
摘要: Software DevelopmentWhat are the high-level concepts that people think about when they are developing software?Software EngineeringSoftware Engineering is concerned with constructing software systems that are:Correct, meaning they do exactly what it should;Reliable, meaning the don't crash;Robus 阅读全文
posted @ 2014-01-03 09:59 blockcipher 阅读(346) 评论(0) 推荐(0) 编辑
摘要: http://cs.lmu.edu/~rayIntroduction to Distributed ProgrammingDefinitionsDistributed ComputingComputing on a distributed systemDistributed SystemA system of computers communicating via messages over a network so as to cooperate on a task or tasks. There's no physical shared memory in a distribute 阅读全文
posted @ 2014-01-03 09:49 blockcipher 阅读(281) 评论(0) 推荐(0) 编辑
摘要: http://cs.lmu.edu/~ray/Programming ParadigmsThe word paradigm is used a great deal when talking about programming languages. What does it mean?DefinitionAprogramming paradigmis a style or "way" of programming. Some languages make it easy to write in some paradigms but not others.List of Co 阅读全文
posted @ 2014-01-03 09:48 blockcipher 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 1.客户端-服务器结构 客户端-服务器结构的物理部署分为三类: (1)在同一台机器上:理想环境,只要压力不大,分组不会丢失、延迟和乱序,是理想的测试环境,可以用作评估客户端和服务器端程序的原始性能; (2)在同一局域网内:接近理想环境,分组很少丢失、乱序,但是有延迟; (3)在广域网内:分组丢失、重传、重复、乱序比较常见。2.基本套接字API (1)sys/socket.h、winsock2.h:SOCKET socket(int domain, int type, int protocol) 成功时返回套接字,失败时返回-1(linux),INVALID_SOCKET(win... 阅读全文
posted @ 2013-12-14 13:08 blockcipher 阅读(512) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/vamei/archive/2012/12/02/2796988.htmlIPv4与IPv6头部的对比我们已经在IP接力中介绍过,一个IP包分为头部(header)和数据(payload/data)两部分。头部是为了实现IP通信必须的附加信息,数据是IP通信所要传送的信息。黄色区域 (同名区域)我们看到,三个黄色区域跨越了IPv4和IPv6。Version(4位)用来表明IP协议版本,是IPv4还是IPv6(IPv4, Version=0100; IPv6, Version=0110)。Source Adrresss和Destination Add 阅读全文
posted @ 2013-12-10 13:22 blockcipher 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 转自http://xlambda.com/gevent-tutorial/gevent程序员指南由Gevent社区编写gevent是一个基于libev的并发库。它为各种并发和网络相关的任务提供了整洁的API。介绍贡献者核心部分Greenlets同步和异步执行确定性创建GreenletsGreenlet状态程序停止超时猴子补丁(Monkey patching)数据结构事件队列组和池锁和信号量线程局部变量子进程Actors真实世界的应用Gevent ZeroMQ简单serverWSGI Servers流式serverLong PollingWebsockets聊天server介绍本指南假定读者有中 阅读全文
posted @ 2013-11-29 21:47 blockcipher 阅读(646) 评论(0) 推荐(0) 编辑
摘要: 大型网站架构演变和知识体系之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联网行业的同学一点初步的概念,:),文中的不对之处也请各位多给点建议,让本文真正起到抛砖引玉的效果。架构演变第一步:物理分离webserver和数据库最开始,由于某些想法,于是在互 阅读全文
posted @ 2013-11-21 22:30 blockcipher 阅读(227) 评论(0) 推荐(0) 编辑