档案日期2011的2

2011年1月10日 - 2011年1月16日

最后更新于 .

最近遇到了几个C++问题,在这里总结一下,希望可以避免其他朋友犯同样的错误。

一.隐式转换引发的血案

我们直接来看一段代码:

#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <map>
using namespace std;

void a(bool input)
{
    cout<<"I amd first"<<endl;
    cout<<input<<endl;
}

void a(const string &input)
{
    cout<<"I amd second"<<endl;
    cout<<input<<endl;
}

int main(int argc,char **argv)
{
    a("str");  // 是调用第二个a函数吗?
    a(string("str"));
    return 0 ...

最后更新于 .

最近花了大力气在做openapi的优化,使其尽量柔性可用,借此也有些想法想和大家分享一下。 柔性服务,google一下,在网上并没有这样一个标准的概念,所以应该是公司自己取的一个名字。但是这种概念,相信大家都应该很容易能明白,即:

最大程度的保证关键服务的可用性

通俗点来说,一个人不能走路了,他起码可以说话,不能说话了,起码可以点头,头都不能点了,起码得能活着,即心脏还在跳动。这就是柔性。 对应互联网服务来说就是要实现两点:

1.要尽可能成功返回关键数据
2.要尽可能正常接收请求,不能堵死

笔者总结了一下,只要CGI满足其中一个或几个特点,就可以考虑使用柔性服务:

1.在整个CGI的执行过程中,存在关键路径和非关键路径
2.CGI中存在循环调用接口,导致执行时间不确定

我们分上面两种特点来看: 对于第一种,我们举一个简单的例子,比如有一个CGI,做了两件事情分别是:

1.验证登录态
2.获取用户信息

很明显可以看出,验证登录态这个接口是关键路径,而获取用户信息这个接口是非关键的。所以按照柔性服务的定义,当获取用户信息接口失败时,起码还应该返回登录成功。 但是这个时候毕竟还是要区分出完全成功和部分成功的,所以我们可以定义返回码如下(目前腾讯社区开放平台的openapi就是如下定义):

ret==0 ...

最后更新于 .

本博之前有写过一篇vim+php.exe检查php语法的文章-在vim中检查php语法格式,这种方式的优点是只依赖php环境本身,但缺点也很明显:检查并不严格,很多错误检查不出来。 所以我们考虑使用另一个语法检查工具-ZendCodeAnalyzer. 博友梧桐之前在博客中咨询该怎么写ZendCodeAnalyzer的errorformat,所以这里放出代码如下:

map <F7> :call CheckPHPSyntax()<CR>
function CheckPHPSyntax()
    let php_check_syntax_cmd='ZendCodeAnalyzer  --disable var-arg-unused'

    let exeFile = expand("%:t")
    let &makeprg = php_check_syntax_cmd
    set errorformat=%f(line\ %l):\ %m
    silent make %
    if len(getqflist())>2
        call setqflist(remove(getqflist(),2,-1))
        copen
    else
        cclose
        normal :
        echohl WarningMsg | echo ...

每日归档

上周

2011年度第 1 周

下周

2011年度第 3 周

归档