<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Thinkry的Blog专栏]]></title><description><![CDATA[山川在眼  经纬归心]]></description><link>https://blog.youkuaiyun.com/Thinkry</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Thinkry]]></copyright><item><title><![CDATA[技术管理从入门到提高：RRR技术管理框架]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/54020808</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/54020808</guid><author>Thinkry</author><pubDate>Wed, 04 Jan 2017 16:35:13 +0800</pubDate><description><![CDATA[技术管理如何实践落地，如何从入门到提高？RRR技术管理框架结合角色、例行工作、管理认知，提出一套框架工具，帮你管理落地！]]></description><category></category></item><item><title><![CDATA[主程的晋升攻略(9)：数据层的演进(下)]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/43759887</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/43759887</guid><author>Thinkry</author><pubDate>Thu, 12 Feb 2015 10:57:09 +0800</pubDate><description><![CDATA[为什么memcached的性能比mysql高？

首要因素是memcached的数据都是位于内存中，mysql的数据可能是位于磁盘里。从IO速度来说，内存IO比磁盘IO会快几个数量级，memcached也就比mysql性能更高。架构和性能优化做到后面，会发现最终限制性能的是硬件瓶颈。例如nginx做静态webserver时，出口流量往往能达到网卡的最大值或出口带宽的最大值。mysql是个性能还]]></description><category></category></item><item><title><![CDATA[主程的晋升攻略(8)：数据层的演进(上)]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/42106013</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/42106013</guid><author>Thinkry</author><pubDate>Tue, 23 Dec 2014 18:22:46 +0800</pubDate><description><![CDATA[我们用一个做手游的故事来聊聊数据层不断优化提升的演进过程。

10：简单设计
有一天，老板突然说做个山寨版的糖果传奇手游，你接到任务后，分析出游戏的交互频率不大，都是点查询，用mysql能简单搞定。对游戏来说，你很少有机会用orcale这种上流货，mysql是物美价廉的选择。建个表，设好主键和索引，你轻松搞定数据库设计，惬意的泡了杯茶边喝边敲代码。

这里说的“点查询”，是指基于指定主键]]></description><category></category></item><item><title><![CDATA[主程的晋升攻略(7)：服务器模型谈]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/41446341</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/41446341</guid><author>Thinkry</author><pubDate>Mon, 24 Nov 2014 15:58:21 +0800</pubDate><description><![CDATA[在上一篇《主程的晋升攻略(6)：CGI和FastCGI》中，讲到Web服务器和CGI/FastCGI能动态输出内容，从而提供更强大的业务处理能力。Web服务器这种架构，我称之为Web模式，与之相对的是Svr模式。Web模式和Svr模式是互联网项目的后台最常见的两种模式。先介绍几个概念。

同步通讯 vs 异步通讯
同步通讯是指在一个连接中，一个请求的应答没回来前，不能发送下一个请求，整个通讯]]></description><category></category></item><item><title><![CDATA[主程的晋升攻略(6)：CGI和FastCGI]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/41346131</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/41346131</guid><author>Thinkry</author><pubDate>Fri, 21 Nov 2014 11:24:43 +0800</pubDate><description><![CDATA[消息经过网络传输，到达了服务器端，最常见的服务器是Web服务器，做PHP的同学都知道FastCGI模式的PHP比普通PHP更高效，这篇就聊聊其中的原理。

古老但常见的CGI
Web服务器能解析HTTP请求，返回静态资源（HTML页、图片等），但要输出动态内容，必须得PHP/C#/Ruby/Java/Python/C/C++这些外部程序来实现。

早期有个技术叫CGI（Common Ga]]></description><category></category></item><item><title><![CDATA[主程的晋升攻略(5)：HTTP协议和二进制协议的对比]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/41345881</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/41345881</guid><author>Thinkry</author><pubDate>Fri, 21 Nov 2014 11:15:41 +0800</pubDate><description><![CDATA[在上一篇《主程序员的练成：TCP、消息分包和协议设计》中谈了协议设计的一些话题，这里补充聊聊HTTP协议和二进制协议的对比。

HTTP协议是一种文本协议，也是一种Name-Based协议，就从这两方面来说。

文本协议 vs 二进制协议
文本协议的特点：
    便于人
    易于阅读、理解、调试、构造
    解析复杂、冗余多
    需要考虑字符转义

二进制协议的特]]></description><category></category></item><item><title><![CDATA[主程的晋升攻略(4)：TCP、消息分包和协议设计]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/41207307</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/41207307</guid><author>Thinkry</author><pubDate>Mon, 17 Nov 2014 12:47:26 +0800</pubDate><description><![CDATA[在《主程的晋升攻略(3)：IP、DNS和CDN》中，一次网络请求经过DNS解析知道了目的IP，现在就要发出网络包，这里我们说一说TCP的相关话题。

TCP是一种流式协议
讲网络编程的教科书一般都会对TCP的可靠传输，api用法做详细说明，但对于TCP是一种流式协议讲解的不多，但这背后隐藏着很重要的一个知识点。先做个名词定义方便交流，这里的“消息”是指应用层的一个完整的协议包。

流式协议的特]]></description><category></category></item><item><title><![CDATA[主程的晋升攻略(3)：IP、DNS和CDN]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/41075027</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/41075027</guid><author>Thinkry</author><pubDate>Thu, 13 Nov 2014 10:38:42 +0800</pubDate><description><![CDATA[有段时间我面试程序员时，喜欢问这个问题：局域网IP有哪些IP段？由这个问题再追问NAT（网络地址转换）。

为什么不是每个设备一个公网IP？
先说个关于QQ的小故事，最早开发QQ时，小马哥他们也没想到QQ会发展成中国互联网基础设施，就用4字节整形表示QQ号了。早期内部的一些项目有用int表示QQ号，能表示的最大值是2^31-1，即21亿多。在QQ号发放近20亿时，腾讯内部搞了个22亿QQ号测]]></description><category></category></item><item><title><![CDATA[主程的晋升攻略(2)：技术篇概要]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/41044011</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/41044011</guid><author>Thinkry</author><pubDate>Wed, 12 Nov 2014 15:10:53 +0800</pubDate><description><![CDATA[技术是程序员安身立命的家伙，主程的技术不强，向下难以服众，向上有负重托。

或许有人会问：技术深度上该挖多深才能做好主程？程序员至少有两个高阶成长方向：
1、技术型专家非常热爱技术本身，往往会钻研得非常深，甚至可以不承担管理职责（你心目中的榜样是谁？）；
2、项目型专家着力于更好更快的实现项目，主导项目的团队组建、技术选型、架构设计、项目进度和质量管理等等，技术深度上不像技术型专家那么深，]]></description><category></category></item><item><title><![CDATA[主程的晋升攻略(1)：重要的引言]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/41039679</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/41039679</guid><author>Thinkry</author><pubDate>Wed, 12 Nov 2014 10:24:50 +0800</pubDate><description><![CDATA[虽然是引言，但也很重要。

程序员如何成长？这个话题百度有大约170万个相关结果，介绍了不少从菜鸟到老鸟的经验，但如何成长为主程序员（以下简称主程），网上的“帮助文档”不完善，也缺少实践指南。本系列文章主题就是说说主程如何练成。为什么用“练”这个字，因为主程的很多技能光知道怎么做远远不够，还需要在实践中不断“训练”才能运用好。只有不断训练才能从知到行，从“知道”成长为“做到”。

团队在任]]></description><category></category></item><item><title><![CDATA[Web后台开发的问题分析方法]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/5343051</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/5343051</guid><author>Thinkry</author><pubDate>Wed, 03 Mar 2010 17:48:00 +0800</pubDate><description><![CDATA[ Web后台开发中遇到的问题五花八门，分析问题涉及到的方方面面挺多的，不容易下手。本文分享工作中遇到的一些解决问题的方法仅供参考。如果您有好方法和案例，欢迎分享。 1一些系统知识ulimit -a里的各种限制，特别是open files和core file size共享内存大小受/proc/sys/kernel/shmmax控制32位OS下默认写文件超过2G会cored]]></description><category></category></item><item><title><![CDATA[高性能动态Web服务器的一些探讨]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/5338552</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/5338552</guid><author>Thinkry</author><pubDate>Tue, 02 Mar 2010 13:18:00 +0800</pubDate><description><![CDATA[现在设计高性能Web网站时，一般都把动态和静态分开处理。静态资源(html/image/js/css/swf)一般使用nginx/lighttpd这类Web服务器，把静态资源缓存到内存或用sendfile，CPU和磁盘IO一般不是瓶颈，性能很高，直接用就行，本文不讨论。 至于动态部分，我们一般使用Apache，用C++编写CGI/FastCGI。FastCGI因为比CGI少了fork和初始]]></description><category></category></item><item><title><![CDATA[统一完成端口Iocp和Epoll]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/1296473</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/1296473</guid><author>Thinkry</author><pubDate>Wed, 27 Sep 2006 19:11:00 +0800</pubDate><description><![CDATA[ 在《完成端口Iocp与Epoll的区别》中说了两者的重要区别是Iocp是动作完成后的通知，Epoll是告知动作可以做，类似select。 ENP中如何支持Linux和Windows，统一Iocp和Epoll呢？ENP开始编写的是Epoll部分，增加Iocp部分时发现继续采用Epoll的逻辑设计是行不通的。后来灵光突现，既然Iocp不能采用Epoll的逻辑设计，那么采用Iocp的逻辑设]]></description><category></category></item><item><title><![CDATA[完成端口Iocp与Epoll的区别]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/1296466</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/1296466</guid><author>Thinkry</author><pubDate>Wed, 27 Sep 2006 19:09:00 +0800</pubDate><description><![CDATA[Windows下高并发的高性能服务器一般会采用完成端口IOCP技术，Linux下则会采用Epoll。最近写enp时发现Iocp和Epoll的一个根本区别是Epoll是返回多个socket中有事件发生的socket，类似select，不过性能更高；Iocp则是在动作完成后返回通知（完成端口中的“完成”就是这个意思）。两者都能够把socket和一个4字节Key字段绑定在一起，Epoll中是]]></description><category></category></item><item><title><![CDATA[服务器编程中的日志]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/1296456</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/1296456</guid><author>Thinkry</author><pubDate>Wed, 27 Sep 2006 19:07:00 +0800</pubDate><description><![CDATA[ 今天leader提了一份服务器编程的规范，其中一个是日志问题。一般的，日志级别分为Fatal、Error、Warning、Info、Debug和Trace，输出哪些级别的日志要能动态配置，但Fatal、Error和Info是必须要输出的，而且Debug/Trace日志要能反映程序运行的情况，为在线调试提供足够的信息，这就要求编码时就要考虑可能出错调试的情况：编码时多写点，出bug时就少些烦劳]]></description><category></category></item><item><title><![CDATA[现代人如何减压——《心灵太极：现代工作革命》]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/579992</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/579992</guid><author>Thinkry</author><pubDate>Sun, 15 Jan 2006 15:09:00 +0800</pubDate><description><![CDATA[《心灵太极：现代工作革命》柯云路著很多职场人士拼命工作累得疾病缠身，有人说他们“只会工作不会休息”。我们说他们不是“不会休息”，而是没有余力休息。这一切的根源，恰恰因为他们“不会工作”。所以今天我们要完成“工作革命”。心灵太极告诉我们如何做一个超常成功又健康自在的现代人。本书研究的是现代人在生存压力下如何自我调节状态，应对生存危机的问题。它可以说是面向所有认真而忙碌的现代人的。腾讯读书上有]]></description><category></category></item><item><title><![CDATA[源代码管理软件CodeHelp发布2.0版本]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/248463</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/248463</guid><author>Thinkry</author><pubDate>Tue, 11 Jan 2005 13:50:00 +0800</pubDate><description><![CDATA[软件主页：http://www.nulldo.com/codehelp下载地址：http://www.nulldo.com/codehelp/codehelp2.0.rar界面预览：主要功能★ CodeHelp是专门为我们程序员设计的一款源代码管理软件。它能方便的管理您在编程和学习中有用的源代码，减少经常到处查找资料的劳动，节省您在开发中的时间和精力。★ 知识管理越来越被大家所重视]]></description><category></category></item><item><title><![CDATA[在Access中创建表及如何指定字段类型]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/203155</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/203155</guid><author>Thinkry</author><pubDate>Fri, 03 Dec 2004 11:52:00 +0800</pubDate><description><![CDATA[在Access中创建表一般是用ADO来执行SQL语句来创建表。Access中的字段类型在SQL语句中是什么呢？在MSDN中有篇文章介绍得很详细：http://msdn.microsoft.com/office/understanding/access/codesamples/default.aspx?pull=/library/en-us/dnacc2k/html/acintsql.asp下面是我]]></description><category></category></item><item><title><![CDATA[[VC]得到/设置DropDown ComboBox的文字]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/127741</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/127741</guid><author>Thinkry</author><pubDate>Fri, 08 Oct 2004 10:54:00 +0800</pubDate><description><![CDATA[在使用DropDown类型的ComboBox时，如果使用者输入非ComboBox中列出的值，那么ComboBox的GetCurSel()的值是CB_ERR，相关的GetLBText()和GetLBTextLen()因为没有index也就无法工作。在DDX时，可以把ComboBox和CString对应起来，采用它的原理，就可以自己来得到或设置DropDown ComboBox的文字了。//得到Com]]></description><category></category></item><item><title><![CDATA[用JScript实现MembersTable]]></title><link>https://blog.youkuaiyun.com/Thinkry/article/details/95424</link><guid>https://blog.youkuaiyun.com/Thinkry/article/details/95424</guid><author>Thinkry</author><pubDate>Mon, 06 Sep 2004 00:58:00 +0800</pubDate><description><![CDATA[在msdn online上讲解某个类的属性、方法、事件时，用到了一个MembersTable的表格。类似下图：笔者研究其中的代码，经过简化也实现了这种效果，提供类似如下的 TABLE，通过JScript，能够自动生成类似上图的MembersTable：        属性                            属性          说明                      ]]></description><category></category></item></channel></rss>