留言板

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: 留言板

各位兄弟姐妹们,流言飞语都来吧, 俺不怕!

Post Footer automatically generated by wp-posturl plugin for wordpress.

  1. zdx3578
    April 25th, 2012 at 18:06 | #1

    handle_cast(retry, State) ->
    NewState = retry(State, ?RETRY_BATCH),
    {noreply, NewState, ?RETRY_INTERVAL};

    NewState = retry(State, ?RETRY_BATCH), 这一句总是不执行 前后我加log后,中间空,无日志,这个函数也有日志,但是也没有任何输出,可否给个思路,大概是哪里的问题? 难道执行这一句没有任何反应,但是我看定义和调用就4处,还是不明白

    [Reply]

    Yu Feng Reply:

    把上下文贴出来吧

    [Reply]

    zdx3578 Reply:

    问题的确是retry漏了日志输出。多谢!

    [Reply]

  2. willzhai
    May 14th, 2012 at 17:09 | #2

    可能是这个bug。http://bugs.mysql.com/bug.php?id=61222
    最近我测试也是遇到这个问题,我的mysql版本5.5.22-rel25.2-log Percona Server with XtraDB (GPL), Release rel25.2, Revision 237

    不知道峰哥对这个版本有研究不?

    [Reply]

  3. June 13th, 2012 at 00:45 | #3

    峰哥:

    麻烦你把贵站【Erlang中国】的域名由bbs.erlangchina.net 换成www.erlangchina.net

    [Reply]

    Yu Feng Reply:

    done

    [Reply]

  4. Vincent
    June 15th, 2012 at 09:55 | #4

    博主 你好。最近遇到一个棘手的问题,不知道如何解决,希望得到您的指点

    最近在win7下erlang 总是出现类似如下的错误
    eheap_alloc:Cannot allocate 43784 bytes of memory(of type “heap”)
    发生这个情况的时候 从产生的erl_crash.dump看=memory
    total: 21789488
    processes: 4496220
    processes_used: 4491852
    system: 17293268
    atom: 437933
    atom_used: 429402
    binary: 391384
    code: 3430903
    ets: 12149036

    机器物理内存还有几个G,在win7下尝试了R14A到最新的64位的R15都有这个问题
    但在xp上从来没出现过这个情况 win7上频繁出现

    [Reply]

    Yu Feng Reply:

    windows我没有经验,但是看到上面的分配的值很小,应该是win7对进程级别的内存分配的限制。

    [Reply]

  5. yuxiao
    June 24th, 2012 at 22:49 | #5

    峰老大,问个问题,RabbitMQ里面rabbit_networking.erl:269行, {ok, _Child, Reader} = supervisor:start_child(rabbit_tcp_client_sup, []), rabbit_tcp_client_sup这个参数从哪里来的,难道是(同文件139行)
    start() ->
    {ok,_} = supervisor2:start_child(
    rabbit_sup,
    {rabbit_tcp_client_sup,
    {rabbit_client_sup, start_link,
    [{local, rabbit_tcp_client_sup},
    {rabbit_connection_sup,start_link,[]}]},
    transient, infinity, supervisor, [rabbit_client_sup]}),
    ok.
    这里已经的rabbit_tcp_client_sup 表示的Tag参数? 和supervisor2有关系吗,我用supervisor模拟了以个例子,好像不能这样用。
    谢谢!!

    [Reply]

    Yu Feng Reply:

    我请我们团队的五藏专门看了下:

    1. 这个参数的确在此处
    2. 和supvisor2没有特别关系, supervisor也可以这么做

    supervisor2:start_child(
    rabbit_sup,
    {rabbit_tcp_client_sup,
    {rabbit_client_sup, start_link,
    [{local, rabbit_tcp_client_sup},
    {rabbit_connection_sup,start_link,[]}]},
    transient, infinity, supervisor, [rabbit_client_sup]}),
    在此处两个rabbit_tcp_client_sup含义不同,第一个表示该child 的Id,是rabbit_sup中的内部标识,而第二表示将rabbit_client_sup/start_link起动的进程注册名为rabbit_tcp_client_sup。
    测试:
    -module(sub_sup). -behaviour(supervisor). -export([start_link/1]). -export([init/1]). -define(SERVER, ?MODULE). start_link(Name) -> supervisor:start_link(Name, ?MODULE, []). init([]) -> {ok, {{one_for_all, 0, 1}, []}}.

    -module(sup). -behaviour(supervisor). -export([start_link/0,test/0]). -export([init/1]). -define(SERVER, ?MODULE). start_link() -> supervisor:start_link({local, ?SERVER}, ?MODULE, []). init([]) -> {ok, {{one_for_all, 1, 1}, []}}. test()-> supervisor:start_child(?MODULE, {sub_sup1, {sub_sup, start_link,[{local, sub_sup1}]}, transient, infinity, supervisor, [sub_sup]}).

    [Reply]

    yuxiao Reply:

    谢谢峰老大,你的例子我明白,可能是我没有表述请求,其实我想问的是:
    {ok, _Child, Reader} = supervisor:start_child(rabbit_tcp_client_sup, []), 中,start_child这个函数的第一个参数一般是supervisor的模块名(我的理解是该子进程的容器sup,不知对不对???), 但整个RabbitMQ中,我就没有找到这个sup的定义(rabbit_tcp_client_sup).
    但我发现这个函数:
    start() ->
    {ok,_} = supervisor2:start_child(
    rabbit_sup,
    {rabbit_tcp_client_sup,
    {rabbit_client_sup, start_link,
    [{local, rabbit_tcp_client_sup},
    {rabbit_connection_sup,start_link,[]}]},
    transient, infinity, supervisor, [rabbit_client_sup]}),
    ok.
    所有才有我的疑问:将rabbit_client_sup/start_link起动的进程注册名为rabbit_tcp_client_sup后,rabbit_tcp_client_sup这个atom是否可作为start_child的第一个参数,起动相同的子进程(也就是rabbit_client_sup/start_link). 如果不行,那上{ok, _Child, Reader} = supervisor:start_child(rabbit_tcp_client_sup, [])的 rabbit_tcp_client_sup怎么样理解,它是从那里来的。
    不然,将您给的例子sup中加上如下一个函数后:

    -module(sup).
    -behaviour(supervisor).
    -export([start_link/0,test/0,test_1/0]).
    -export([init/1]).
    -define(SERVER, ?MODULE).

    start_link() ->
    supervisor:start_link({local, ?SERVER}, ?MODULE, []).

    init([]) ->
    {ok, {{one_for_all, 1, 1}, []}}.

    test()->
    supervisor:start_child(?MODULE,
    {sub_sup1,
    {sub_sup, start_link,[{local, sub_sup1}]},
    transient, infinity, supervisor, [sub_sup]}
    ).
    test_1() ->
    supervisor:start_child(sub_sup1, []).

    我运行的结果:
    Eshell V5.9.1 (abort with ^G)
    1> sup:start_link().
    {ok,}
    2> sup:test().
    {ok,}
    3> sup:test_1().
    {error,{invalid_child_spec,[]}}
    4>

    再次感谢!!!

    [Reply]

    yuxiao Reply:

    刚才根据{error,{invalid_child_spec,[]}}的提示invalid child spec修改如下这样:
    -module(sup).
    -behaviour(supervisor).
    -export([start_link/0,test/0,test_1/0]).
    -export([init/1]).
    -define(SERVER, ?MODULE).

    start_link() ->
    supervisor:start_link({local, ?SERVER}, ?MODULE, []).

    init([]) ->
    {ok, {{one_for_all, 1, 1}, []}}.

    test()->
    supervisor:start_child(?MODULE,
    {sub_sup1,
    {sub_sup, start_link,[{local, sub_sup1}]},
    transient, infinity, supervisor, [sub_sup]}
    ).
    test_1() ->
    X = {xxx, {sub_sup, start_link,[{local, sub_sup2}]},
    transient, infinity, supervisor, [sub_sup]},
    supervisor:start_child(sub_sup1, X).

    竟然能运行, supervisor:start_child(sub_sup1, X).中的sub_sup1怎么理解??:
    Eshell V5.9.1 (abort with ^G)
    1> sup:start_link().
    {ok,}
    2> sup:test().
    {ok,}
    3> sup:test_1().
    {ok,}
    4>

    wuzang Reply:

    当然能运行,因为这里的sub_sup1也是个supvisor啊,在test中child的类型指定为supvisor
    sub_sup.erl的behaviour也是supvisor
    运行sup:test/0后整棵监督树为
    sup->sub_sup1
    在继续运行sup:test_1/0收整棵监督树为
    sup->sub_sup1->sub_sup2
    这里sub_sup1是sup的child,也是sub_sup2的supervisor

    在test中supvisor是sup,child的进程的注册名为sub_sup1,它在自己的supviosor “sup”中的ID为sub_sup1
    在test_1中supvisor是sub_sup1,child进程的注册名为sub_sup2, 他在自己的supvisor “sub_sup1″中的ID为xxx

    wuzang Reply:

    start_child这个函数的第一个参数一般是supervisor的模块名(我的理解是该子进程的容器sup,不知对不对???)
    这句话不对,第一个参数不是模块名,是supvisor的进程名,是它注册的名称,比如在此例中模块为rabbit_client_sup,但注册的进程名为rabbit_tcp_client_sup.

    yuxiao Reply:

    谢谢wuzang, 我明白了。

  6. July 5th, 2012 at 14:14 | #6

    请求交换链接。技术博客 瀚海星空 http://abloz.com. 谢谢!

    [Reply]

    Yu Feng Reply:

    好。

    [Reply]

  7. fan,zhihui
    July 16th, 2012 at 13:07 | #7

    你好。
    最近我们的oracle 的listener 经常hang 住,pstack 看到的结果却仅仅只有一行:
    0000000000000000 ???????? (0, 0, 0, 0, 0, 0)
    我的问题是
    1 在什么情况下 能产生这样的stack?
    2 0000000000000000 是不是说明已经访问了NULL 指针?
    3 出现了这种情况,为什么进程时hang 住而不是死掉呢?

    我的solaris 版本是: 5.10 Generic_144488-04 sun4v sparc sun4v

    还看到了一个类似的pstack, 在http://wesunsolve.net/bugid/id/7129513

    谢谢霸爷!

    [Reply]

    Yu Feng Reply:

    pstack是gdb命令,你可以用gdb相信看下。 这种情况之前碰到过,但也没有去深究什么原因。有空我也研究下。

    [Reply]

    fan,zhihui Reply:

    谢谢老大!

    [Reply]

  8. ThinkingQuest
    September 5th, 2012 at 13:29 | #8

    我是来膜拜高人的。 久慕霸爷之名。

    [Reply]

    Yu Feng Reply:

    呵呵,一起学习!

    [Reply]

  9. September 14th, 2012 at 14:47 | #9

    霸爷你好,我有一组db测试主从环境(192.168.1.11,192.168.1.12),不过我想请教的是关于网络的问题,我在192.168.1.11上执行sudo ethtool eth1以后,输出Speed: 1000Mb/s,我在192.168.1.12上执行也是输出Speed: 1000Mb/s,问题来了,当我换成百兆交换机的时候,在192.168.1.12上执行命令以后输出Speed: 100Mb/s,而在192.168.1.11上执行还是1000Mb/s,请教霸爷影响这个值的可能原因有哪些?

    [Reply]

    Yu Feng Reply:

    用qperf这样的工具测试下真实流量把

    [Reply]

  10. zhangdong
    October 24th, 2012 at 15:51 | #10

    请教大牛一个问题,项目急等应用。是关于服务器异常报错机制方面,希望对某进程的主循环函数做try catch之后,如果捕获到进程中异常后,希望能在代码中主动,产生crash dump文件,以便后续进行分析错误情况,但查过资料一直未能找到相关办法,我想你们应该有相关解决方案的吧,望不吝赐教,谢谢!

    [Reply]

    Yu Feng Reply:

    参看:erts/emulator/beam/break.c
    case ‘A’: /* Halt generating crash dump */
    erl_exit(1, “Crash dump requested by user”);
    想办法在nif里面调用erl_exit就好了。

    [Reply]

    zhangdong Reply:

    绕到nif里去了,汗一个,正在努力攻破一次nif的简单调用,由于在windows环境下,erlang:load_nif所需要的c代码文件是dll,这个dll制作反倒成了难题了,建了个dll工程,写了个简单的给erlang调用的c函数,dll是编译出来了,erlang加载失败,错误信息的乱码,很郁闷啊

    [Reply]

    zhangdong Reply:

    还在挣扎中,我按你的说法,nif调用简单例子测试通过了,但erl_exit函数所在的lib却不知道在哪,编译提示error LNK2019: 无法解析的外部符号 _erl_exit,请问你知道这个函数的lib是在哪个文件里?我应该要显示的#pragma comment ( lib, “xxx.lib” )吗?

    [Reply]

  11. liwooood
    November 3rd, 2012 at 22:30 | #11

    你好,能请教个问题吗?我现在项目里用到了erlang的mnesia,请问你,有没有谁碰到过mnesia在不正常关闭情况下丢数据?

    项目里用到了mnesia保存分库自增长id,mnesia做了cluster,但暂时测试的时候只起来了一个erlang程序,使用函数如下:

    %get_key 通过 key(表id)返回最大的id值
    get_key(Key) when is_atom(Key) ->
    F = fun() ->
    UID =
    case catch mnesia:wread({tab_unique_id, Key}) of
    [{_, Key, UID1}] ->
    UID2 = UID1 + 1,
    % io:format(“U:~p~n”, [UID1]),
    ok = mnesia:write(tab_unique_id, #ls_unique_id{tab_name=Key, uid=UID2}, write),
    UID2;
    _R ->
    UID2 = 1,
    % io:format(“R:~p~n”, [R]),
    ok = mnesia:write(tab_unique_id, #ls_unique_id{tab_name=Key, uid=UID2}, write),
    UID2
    end,
    UID
    end,
    {atomic, UID2} = mnesia:transaction(F),
    UID2.

    结构:
    -record(ls_unique_id, {tab_name, uid}) .

    表:
    {tab_unique_id,
    [{record_name, ls_unique_id},
    {attributes, record_info(fields, ls_unique_id)},
    {disc_copies, [node()]},
    {match, #ls_unique_id{_=’_’}}]}

    问题:
    现在关闭重启多次之后,返回的id会出现重复,导致数据库插入数据失败。
    是函数写错了,还是什么其他问题。

    [Reply]

  12. coding farmer
    November 12th, 2012 at 13:17 | #12

    霸爷,你好, 一直关注你的blog,当然一直也在潜水 🙂

    我一直从事公司内部的数据存储引擎的开发工作,项目做了几年,看上去做的很健全,cs层和sql语法解析都有,都要做成个数据库了,但是底层存储做的很不精细,很多东西做的形似神不似,虽然目前的业务功能基本都能满足,但是一旦业务量增大,性能肯定就是瓶颈。看过一些mysql底层机制,想学着改改,但发现自己能力不够,改不动,它很多东西相互牵连,数据库这块有很多不懂。哎,最近这段时间,开发工作基本处于停滞状态,每天都是完善文档,看书和刷weibo,过的相当不踏实。

    霸爷,你都做C开发做了15年了,肯定也碰到过这种情况吧,我要怎么调理啊。。。

    [Reply]

    Yu Feng Reply:

    这确实是很难的境地。我建议从项目里面跳出来,数据库引擎是个非常精细的活,涉及到系统的方方面面,很难在短时间内有突破。我建议去好好研究下目前的引擎如innodb引擎,狠狠心花个1-2年时间,吃透了一个,再回到你的项目,那时候就豁然开朗了。

    [Reply]

    coding farmer Reply:

    恩,是的,现在感觉就是个半吊子,什么都知道一点,其实什么都做不像样

    [Reply]

    Yu Feng Reply:

    干脆跳出来。。。

    coding farmer Reply:

    跳槽,现在可能还不行,项目就3人,走了没人接

    [Reply]

  13. liufan
    November 28th, 2012 at 23:28 | #13

    余老师,我刚开始着手erlang,拿到ringo的开源代码,按照他的说明却总是不能用,希望余老师能给自己指指路,自己在网上找不到资料。

    [Reply]

  14. liufan
    November 28th, 2012 at 23:38 | #14

    余老师,我是刚刚开始学习erlang,这几天拿到ringo的源码,可是一直出问题:
    ================================================================
    [root@tracvm ringo-master]# ./compile.sh
    [root@tracvm ringo-master]# ./create_node.sh tracvm /data/ringo/
    root@tracvm’s password:
    [root@tracvm ringo-master]# echo “‘trurl’.” > ~/.hosts.erlang
    [root@tracvm ringo-master]# ./start_nodes.sh tracvm /data/ringo/
    RINGO_ROOT is /root/work/ps/ringo-master
    root@tracvm’s password:
    Starting ringo-0b55f22fc1a2e4fec727d2ce1c3657bb
    root@tracvm’s password:
    Launching Ringo node [0b55f22fc1a2e4fec727d2ce1c3657bb]
    ================================================================
    [root@tracvm ringo-master]# cd ringogw/
    [root@tracvm ringogw]# ./start_ringogw.sh
    SCGI mode
    ================================================================
    [root@tracvm ringogw]# curl -d “” http://localhost:15000/mon/data/foobar?create
    “Request timeout”
    [root@tracvm ringogw]#
    ================================================================
    ringogw.log:
    =INFO REPORT==== 28-Nov-2012::22:10:45 ===
    {“Ringo gateway starts (SCGI)”}

    =INFO REPORT==== 28-Nov-2012::22:10:45 ===
    {‘SCGI SERVER STARTS’}

    =INFO REPORT==== 28-Nov-2012::22:11:13 ===
    {“CREATE”,”foobar”,”WITH”,[{nrepl,3},{timeout,10000},{create,true}]}
    ================================================================
    这是我当时操作的步骤和现象,在网上也找不到有关的资料,余老师对这个了解的话,希望可以指导下我。

    [Reply]

    Yu Feng Reply:

    建议一开始玩点简单的如mochiweb这样的web服务器很容易测试和理解。

    [Reply]

    liufan Reply:

    谢谢,刚开始只是看书不知道怎么用erlang这个语言,所以想找个项目看看。谢谢余老师的建议。

    [Reply]

  15. liufan
    November 28th, 2012 at 23:57 | #15

    @liufan
    [root@tracvm ringo-master]# echo “‘trurl’.” > ~/.hosts.erlang
    这里写错了,
    [root@tracvm ringo-master]# echo “‘tracvm’.” > ~/.hosts.erlang
    可还是出现
    “Request timeout”

    [Reply]

  16. scola
    December 2nd, 2012 at 14:11 | #16

    霸爷,我看你在CU采访中提到“余锋认为技术是随着业务量的增加而逐渐成熟起来的,京东和苏宁等电子商业网站正在经历这个过程。”,你真的觉得京东正在经历淘宝N年前的过程吗。现在有个机会去应聘京东云计算中心,但是我觉得京东没有技术基因,不太靠谱,不怕京东起步晚,技术薄弱,就怕京东没有这个做出一番事业的心气。很羡慕淘宝的这种公司,但是无奈不能离开南京。喜欢技术,希望用8到10年的努力,接近霸爷今天这种水平。

    [Reply]

    Yu Feng Reply:

    技术确实需要业务的推到,但是前提是要有很好的态度,以数据说话的态度,和环境。我摘抄下我们核心系统的态度给你,你大概就明白了:

    在回顾的同时,我也希望有更多的创新从核心系统的土壤里成长起来,有更好的技术服务和产品提供给我们的集团业务。为此,我希望大家和我一起:

    一、专注:做基础技术的专家

    我们坚持选拔一流的人才,坚持做一流人才的乐土,坚持我们的技术理念,专注地去做集团最需要我们去做的事情,持续钻研,不断提升我们的技术能力。希望将来,核心系统的每一个人走出去,都能够成为各个领域的资深专家。

    二、服务:做业务问题的解决者

    不能够应用于业务的技术不是好技术。为此,我们必须更加强调我们的服务意识,去贴近和了解业务,学会从业务使用者的角度来考虑技术问题,真正深入到业务之中去,解决好业务问题和需求,会让我们的服务和产品更有竞争力和生命力。这对我们来说非常重要。

    三、创新:做技术创新的领跑者

    技术创新可以创造更大的价值。创新从哪里来?需要从我们做业务问题解决者的敏感嗅觉中来,从我们的专注精神、过硬的技术能力中来。我们要不断挑战自己,做别人做不了的事情,我们一定会是最有技术活力的团队!

    [Reply]

  17. fan,zhihui
    December 18th, 2012 at 14:52 | #17

    再来麻烦一次霸爷~
    最近在看mmap 的时候,man msync 看到 ” Without use of this call there is no guarantee that changes are written back before munmap(2) is called“ 。 kernel 通过哪个进程来不定期的sync mmap 的file ? 也是pdflush 吗?是否也受 vm.dirty_xxx 的价格参数影响?

    另外,如果想用systemtap 来跟踪这种sync( kernel 的 和 自己调用msync 的) 要在哪设置probe?

    [Reply]

    Yu Feng Reply:

    VM有个writeback模块负责回写系统产生的dirty page,这当然包括mmap的页面。 这些probe可以参考tracepoint:
    writeback:writeback_nothread [Tracepoint event]
    writeback:writeback_queue [Tracepoint event]
    writeback:writeback_exec [Tracepoint event]
    writeback:writeback_pages_written [Tracepoint event]
    writeback:writeback_nowork [Tracepoint event]
    writeback:writeback_bdi_register [Tracepoint event]
    writeback:writeback_bdi_unregister [Tracepoint event]
    writeback:writeback_task_start [Tracepoint event]
    writeback:writeback_task_stop [Tracepoint event]
    writeback:wbc_writeback_start [Tracepoint event]
    writeback:wbc_writeback_written [Tracepoint event]
    writeback:wbc_writeback_wait [Tracepoint event]
    writeback:wbc_balance_dirty_start [Tracepoint event]
    writeback:wbc_balance_dirty_written [Tracepoint event]
    writeback:wbc_balance_dirty_wait [Tracepoint event]
    writeback:wbc_writepage [Tracepoint event]

    [Reply]

    fan,zhihui Reply:

    谢谢霸爷,根据您的提示找到了很多好东西。 但还有点问题,
    一般情况下, user process 写了一个数据, 对应的page cache 就会变成dirty block,但并不等待 write 到磁盘才结束, 这样看似乎IO 性能不影响 用户的响应时间。 但这肯定是不对的。真正的原因为什么disk IO performance 差 就影响了 user process 的响应时间 是这样的吗?
    1 pdflush 写dirty block 到disk 的时候, 这些dirty block 会被lock 住,所以不能被更改,所以需要等待。
    2 当dirty block 达到一个百分比, user process 就不能被再更改。也需要等待。 如果是, 这个百分比受谁控制?

    看您的了解IO协议栈,IO request queue 放的是什么? 如果用msync(.., MS_SYNC)去同步dirty block, 会到哪一层完成才算结束?

    [Reply]

  18. December 18th, 2012 at 15:09 | #18

    需要注意的是/*! */ 这种格式,对于MySQL来说不是注释,是能够直接执行的。同时这个格式还支持指定版本号,比如/*!50518 xxxx*/ 表示,若server端版本大于5518,则后续的xxxx作为语句的一部分执行,否则忽略。

    参考他手下的这篇文章:http://dinglin.iteye.com/blog/1749273

    [Reply]

  19. liwenfeng
    February 7th, 2013 at 10:03 | #19

    余老大,最近用fprof测试了一下代码,但发现出来的结果跟文档说的有些不一样,有些地方看不懂,想请教一下。版本是15B
    {[{{gen_server,loop,6}, 19032,241853.009, 82.853}],
    { {gen_server,decode_msg,8}, 19032,241853.009, 82.853}, %
    [{{gen_server,handle_msg,5}, 19032, 0.101, 127.558}]}.
    比如这里是其中一个函数的段,为啥handle_msg的时间花费这么少的,加上82.853远远少于241853.009。
    还有这里,
    {[{undefined, 3808,299958.911, 10.263},
    {{mod_scene_manager,update_player_grid,3}, 3808, 0.003, 10.292},
    {{mod_scene_manager,merge_data_to_slices,3}, 86634, 0.000, 220.628}],
    { {erlang,put,2}, 94250,299958.914, 241.183}, %
    [{{mod_scene_manager,update_player_grid,3}, 0,299948.579, 6.913},
    {garbage_collect, 197, 4.110, 4.110}]}.
    很明显erlang:put 是没有调用过update_player_grid(而是update_player_grid调用了erlang:put), 调用次数也显示了0次,但是却显示erlang:put的时间主要花在update_player_grid上面。搞不懂了!!!!

    [Reply]

  20. fangjie008
    February 25th, 2013 at 17:31 | #20

    余老大,在使用erl_call 的时候遇见erl_call: can’t resolve hostname VM_15_101 这种问题,是什么原因呢,是在虚拟机上,采用节点间切换没有问题,

    [Reply]

    Yu Feng Reply:

    域名VM_15_101 解释不了呀。 ping VM_15_101 看看

    [Reply]

  21. February 27th, 2013 at 13:59 | #21

    霸爷,小弟想请教您一个问题:小弟现在做一个把asp.net的平台转移到apache+mono+mod_mono上,目前遇到之前的网页目录和文件有大小写的问题,将其放在Linux上,这些路径的大小写则会出现问题,我曾尝试着打开check-spelling模块,在配置文件里打开亦无法解决这个问题。求救有更改好的解决方法吗?

    [Reply]

    Yu Feng Reply:

    还是修改大小写吧

    [Reply]

Comment pages
1 2 3 4 5 6 8 65
  1. No trackbacks yet.