风之语

KC网络电话,中国最优秀的网络电话
posts(194) comments(178) trackbacks(1)
  • BlogJava
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

News

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • ajax(1)
  • AppFuse(1)
  • BIRT(1)
  • iText(1)
  • JSF(8)
  • kettle(1)
  • linux(3)
  • mac(1)
  • maven(1)
  • MSTR(3)
  • Open XML(1)
  • Oracle(20)
  • RCP
  • Struts(2)
  • Struts2(2)
  • SybaseIQ(6)
  • tapestry
  • tomcat(2)
  • webservice(1)
  • weka(1)
  • 云计算(1)
  • 收藏(31)
  • 数据仓库(11)
  • 架构设计(3)
  • 生活(2)
  • 项目管理(6)

随笔档案

  • 2011年8月 (1)
  • 2011年7月 (1)
  • 2011年3月 (1)
  • 2010年12月 (2)
  • 2010年11月 (4)
  • 2010年10月 (3)
  • 2010年9月 (5)
  • 2010年8月 (1)
  • 2010年7月 (4)
  • 2010年3月 (1)
  • 2010年2月 (3)
  • 2009年12月 (3)
  • 2009年11月 (4)
  • 2009年9月 (3)
  • 2009年6月 (5)
  • 2009年5月 (3)
  • 2009年4月 (2)
  • 2009年3月 (5)
  • 2009年2月 (4)
  • 2009年1月 (2)
  • 2008年11月 (2)
  • 2008年9月 (1)
  • 2008年7月 (2)
  • 2008年6月 (4)
  • 2008年5月 (6)
  • 2008年4月 (1)
  • 2008年3月 (1)
  • 2007年12月 (2)
  • 2007年11月 (5)
  • 2007年10月 (2)
  • 2007年9月 (3)
  • 2007年8月 (3)
  • 2007年4月 (1)
  • 2007年3月 (2)
  • 2007年2月 (2)
  • 2007年1月 (2)
  • 2006年12月 (3)
  • 2006年8月 (2)
  • 2006年7月 (2)
  • 2006年6月 (2)
  • 2006年4月 (2)
  • 2006年3月 (1)
  • 2006年2月 (3)
  • 2006年1月 (6)
  • 2005年12月 (6)
  • 2005年11月 (4)
  • 2005年10月 (17)
  • 2005年9月 (26)
  • 2005年8月 (16)
  • 2005年7月 (8)

相册

  • 技术图片

收藏夹

  • java

link

My wife

  • My wife's blog

最新随笔

  • 1. LoginAny 使用笔记
  • 2. MyEclipse 无响应的几种解决办法
  • 3. java.sql.SQLException: No more data to read from socket
  • 4. 无需刻录DMG光盘,教你在VMWare下安装MAC OS X Snow Leopard 10.6
  • 5. RIA
  • 6. MyEclipse极速优化
  • 7. 如何准备一个成功的软件项目验收会
  • 8. Oracle进程导致CPU 100%的具体解决步骤
  • 9. 资源管理器搜索包含文字的文件找不到的解决方法
  • 10. Redhat Linux AS4(AS5)下oracle10g自启动脚本设置

搜索

  •  

积分与排名

  • 积分 - 244166
  • 排名 - 75

最新评论

  • 1. MSTR web应用的部署[未登录]
  • 请问,如何用oracle Application Server服务器部署mstr web应用?
  • --rocky
  • 2. re: 资源管理器搜索包含文字的文件找不到的解决方法
  • 好的。谢谢
  • --三生中国
  • 3. re: 关于JFreechart柱状图 柱上不能显示数值的问题[未登录]
  • 厉害
  • --liu
  • 4. re: MSTR实现单点登陆
  • @emmy
    已解决。谢谢!!
  • --emmy
  • 5. re: MSTR实现单点登陆
  • 请教下:mstr部署后,如何实现匿名访问呢?谢谢!!
    emmy_lee@126.com
  • --emmy

阅读排行榜

评论排行榜

2011年8月22日

LoginAny 使用笔记

LoginAny 使用笔记
 
想实现在家办公,当公司有急事的时候,可以在家就处理掉;不必在家里和公司之间copy文件,免去劳苦奔波之苦。于是开始用远程软件。
 
1. VNN. 免费,主要面向游戏平台。
申请2个用户,互相加为密友,能够2台机器互访,但是只有vnnc302201-winall.zip版本能用(密友功能),且不能升级,一旦升级之后,将没有了密友功能。
用了一段时间,很不错。但不久之后,本地域内3389端口封了。理解,因为远程桌面的3389是个不安全的端口。

其实,把被控机器的Terminal Service 3389端口改掉, 理论上也是可行的,但是还是比较麻烦。
 
2. Hamachi,  很好用的的软件。推荐,IP局域网穿透。 3389端口还是不能连接,道理同上。
 
3. 改用LoginAny. 免费版每月只能远程桌面20分钟,文件传输3次。速度超快。 远程桌面是LoginAny开发的,所以不再用3389端口。

自己研究下能否逆向工程下…

———先看文件传输功能———–
打开eXeScope分析资源,首先查看文字:"文件传输已经达到最大使用次数!",String Id: 484
得知Dialog: 1218是提示对话框, Dialog: 1219是文件传输Form.

打开OllyICE,反编译后,
- 搜索4C2(1218), 找提示对话框的代码,自己标注附近的代码,这是一个功能函数。
搜索4C3(1219), 找文件传输Form相关代码。
搜索1E4(484), 找"文件传输已经达到最大使用次数!"的相关代码。
004938D0  /$  55            push    ebp
004938D1  |.  8BEC          mov     ebp, esp
004938D3  |.  6A FF         push    -1
004938D5  |.  68 87C25B00   push    005BC287                                           ;  SE 处理程序安装
004938DA  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]
004938E0  |.  50            push    eax
004938E1  |.  64:8925 00000>mov     dword ptr fs:[0], esp
004938E8  |.  81EC BC000000 sub     esp, 0BC
004938EE  |.  A1 BCEB6200   mov     eax, dword ptr [62EBBC]
004938F3  |.  33C5          xor     eax, ebp
004938F5  |.  8945 EC       mov     dword ptr [ebp-14], eax
004938F8  |.  898D 40FFFFFF mov     dword ptr [ebp-C0], ecx
004938FE  |.  C785 4CFFFFFF>mov     dword ptr [ebp-B4], 1
00493908  |.  6A 01         push    1
0049390A  |.  8B85 4CFFFFFF mov     eax, dword ptr [ebp-B4]
00493910  |.  50            push    eax
00493911  |.  8B8D 40FFFFFF mov     ecx, dword ptr [ebp-C0]
00493917  |.  E8 D4EFFFFF   call    004928F0                                           ;  关键Call !!!!
0049391C  |.  85C0          test    eax, eax
0049391E  |.  75 05         jnz     short 00493925
00493920  |.  E9 F8000000   jmp     00493A1D
00493925  |>  C785 48FFFFFF>mov     dword ptr [ebp-B8], 0
0049392F  |.  8D4D F0       lea     ecx, dword ptr [ebp-10]
00493932  |.  FF15 28B95C00 call    dword ptr [<&MFC71.#310_ATL::CStringT<char,StrTrai>;  MFC71.7C173199
00493938  |.  C745 FC 00000>mov     dword ptr [ebp-4], 0
0049393F  |.  6A 00         push    0
00493941  |.  8D8D 54FFFFFF lea     ecx, dword ptr [ebp-AC]
00493947  |.  E8 64D30800   call    00520CB0
0049394C  |.  C645 FC 01    mov     byte ptr [ebp-4], 1
00493950  |.  8B8D 4CFFFFFF mov     ecx, dword ptr [ebp-B4]
00493956  |.  51            push    ecx
00493957  |.  68 DD000000   push    0DD
0049395C  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
0049395F  |.  52            push    edx
00493960  |.  8D85 54FFFFFF lea     eax, dword ptr [ebp-AC]
00493966  |.  50            push    eax
00493967  |.  8D8D 48FFFFFF lea     ecx, dword ptr [ebp-B8]
0049396D  |.  51            push    ecx
0049396E  |.  8B8D 40FFFFFF mov     ecx, dword ptr [ebp-C0]
00493974  |.  E8 A7190000   call    00495320                                           ;  MessageBox ….
00493979  |.  85C0          test    eax, eax
0049397B  |.  75 21         jnz     short 0049399E
0049397D  |.  C645 FC 00    mov     byte ptr [ebp-4], 0
00493981  |.  8D8D 54FFFFFF lea     ecx, dword ptr [ebp-AC]
00493987  |.  E8 24D40800   call    00520DB0
0049398C  |.  C745 FC FFFFF>mov     dword ptr [ebp-4], -1
00493993  |.  8D4D F0       lea     ecx, dword ptr [ebp-10]
00493996  |.  FF15 68B95C00 call    dword ptr [<&MFC71.#578_ATL::CStringT<char,StrTrai>;  MFC71.7C1771B1
0049399C  |.  EB 7F         jmp     short 00493A1D
0049399E  |>  8B95 48FFFFFF mov     edx, dword ptr [ebp-B8]
004939A4  |.  52            push    edx
004939A5  |.  68 2CF16200   push    0062F12C
004939AA  |.  51            push    ecx
004939AB  |.  8BCC          mov     ecx, esp
004939AD  |.  89A5 44FFFFFF mov     dword ptr [ebp-BC], esp
004939B3  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
004939B6  |.  50            push    eax
004939B7  |.  FF15 38B95C00 call    dword ptr [<&MFC71.#297_ATL::CStringT<char,StrTrai>;  MFC71.7C14E575
004939BD  |.  8985 3CFFFFFF mov     dword ptr [ebp-C4], eax
004939C3  |.  8D8D 54FFFFFF lea     ecx, dword ptr [ebp-AC]
004939C9  |.  51            push    ecx
004939CA  |.  B9 E4F26200   mov     ecx, 0062F2E4
004939CF  |.  E8 ECDAFCFF   call    004614C0                                           ;  调用打开文件传输Form
004939D4  |.  8985 38FFFFFF mov     dword ptr [ebp-C8], eax
004939DA  |.  8B95 38FFFFFF mov     edx, dword ptr [ebp-C8]
004939E0  |.  8995 50FFFFFF mov     dword ptr [ebp-B0], edx
004939E6  |.  6A 05         push    5
004939E8  |.  8B8D 50FFFFFF mov     ecx, dword ptr [ebp-B0]
004939EE  |.  E8 6DCC1100   call    <jmp.&MFC71.#6090_CWnd::ShowWindow>
004939F3  |.  8B8D 50FFFFFF mov     ecx, dword ptr [ebp-B0]
004939F9  |.  E8 12D8FAFF   call    00441210
004939FE  |.  C645 FC 00    mov     byte ptr [ebp-4], 0
00493A02  |.  8D8D 54FFFFFF lea     ecx, dword ptr [ebp-AC]
00493A08  |.  E8 A3D30800   call    00520DB0
00493A0D  |.  C745 FC FFFFF>mov     dword ptr [ebp-4], -1
00493A14  |.  8D4D F0       lea     ecx, dword ptr [ebp-10]
00493A17  |.  FF15 68B95C00 call    dword ptr [<&MFC71.#578_ATL::CStringT<char,StrTrai>;  MFC71.7C1771B1
00493A1D  |>  8B4D F4       mov     ecx, dword ptr [ebp-C]
00493A20  |.  64:890D 00000>mov     dword ptr fs:[0], ecx
00493A27  |.  8B4D EC       mov     ecx, dword ptr [ebp-14]
00493A2A  |.  33CD          xor     ecx, ebp
00493A2C  |.  E8 5ADE1100   call    005B188B
00493A31  |.  8BE5          mov     esp, ebp
00493A33  |.  5D            pop     ebp
00493A34  \.  C3            retn
 
在0049 3917发现关键Call.
决定修改其后的跳转,
00493920  |.  E9 F8000000   jmp     00493A1D  这一行是跳过调用打开文件传输Form的代码。
把它改为:
00493920  |.  90 90909090   Nop               什么也不做
经试验,文件传输功能可以超过3次的使用了。

 

 

———远程桌面的功能———-


远程桌面的功能只能连接20分钟。 解决办法还是老一套:
打开eXeScope分析资源,找到对话框:远程桌面,ID=1306.

打开OllyICE,搜索常量1306,很快定位下面代码:

00493670  /$  55            push    ebp
00493671  |.  8BEC          mov     ebp, esp
00493673  |.  6A FF         push    -1
00493675  |.  68 69C25B00   push    005BC269                                           ;  SE 处理程序安装
0049367A  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]
00493680  |.  50            push    eax
00493681  |.  64:8925 00000>mov     dword ptr fs:[0], esp
00493688  |.  81EC D4000000 sub     esp, 0D4
0049368E  |.  A1 BCEB6200   mov     eax, dword ptr [62EBBC]
00493693  |.  33C5          xor     eax, ebp
00493695  |.  8945 EC       mov     dword ptr [ebp-14], eax
00493698  |.  898D 30FFFFFF mov     dword ptr [ebp-D0], ecx
0049369E  |.  C785 50FFFFFF>mov     dword ptr [ebp-B0], 0
004936A8  |.  6A 01         push    1
004936AA  |.  8B85 50FFFFFF mov     eax, dword ptr [ebp-B0]
004936B0  |.  50            push    eax
004936B1  |.  8B8D 30FFFFFF mov     ecx, dword ptr [ebp-D0]
004936B7  |.  E8 34F2FFFF   call    004928F0                                           ;  关键Call–remote desk.
004936BC  |.  85C0          test    eax, eax
004936BE  |.  75 05         jnz     short 004936C5
004936C0  |.  E9 F0010000   jmp     004938B5
004936C5  |>  C785 4CFFFFFF>mov     dword ptr [ebp-B4], 0
004936CF  |.  6A 00         push    0
004936D1  |.  8D8D 54FFFFFF lea     ecx, dword ptr [ebp-AC]
004936D7  |.  E8 D4D50800   call    00520CB0
004936DC  |.  C745 FC 00000>mov     dword ptr [ebp-4], 0
004936E3  |.  8D4D F0       lea     ecx, dword ptr [ebp-10]
004936E6  |.  FF15 28B95C00 call    dword ptr [<&MFC71.#310_ATL::CStringT<char,StrTrai>;  MFC71.7C173199
004936EC  |.  C645 FC 01    mov     byte ptr [ebp-4], 1
004936F0  |.  8B8D 50FFFFFF mov     ecx, dword ptr [ebp-B0]
004936F6  |.  51            push    ecx
004936F7  |.  68 19010000   push    119
004936FC  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
004936FF  |.  52            push    edx
00493700  |.  8D85 54FFFFFF lea     eax, dword ptr [ebp-AC]
00493706  |.  50            push    eax
00493707  |.  8D8D 4CFFFFFF lea     ecx, dword ptr [ebp-B4]
0049370D  |.  51            push    ecx
0049370E  |.  8B8D 30FFFFFF mov     ecx, dword ptr [ebp-D0]
00493714  |.  E8 071C0000   call    00495320                                           ;  消息处理
00493719  |.  85C0          test    eax, eax
0049371B  |.  75 24         jnz     short 00493741
0049371D  |.  C645 FC 00    mov     byte ptr [ebp-4], 0
00493721  |.  8D4D F0       lea     ecx, dword ptr [ebp-10]
00493724  |.  FF15 68B95C00 call    dword ptr [<&MFC71.#578_ATL::CStringT<char,StrTrai>;  MFC71.7C1771B1
0049372A  |.  C745 FC FFFFF>mov     dword ptr [ebp-4], -1
00493731  |.  8D8D 54FFFFFF lea     ecx, dword ptr [ebp-AC]
00493737  |.  E8 74D60800   call    00520DB0                                           ;  字符处理
0049373C  |.  E9 74010000   jmp     004938B5
00493741  |>  817D A4 01030>cmp     dword ptr [ebp-5C], 90301
00493748  |.  0F83 E8000000 jnb     00493836
0049374E  |.  8B95 4CFFFFFF mov     edx, dword ptr [ebp-B4]
00493754  |.  52            push    edx
00493755  |.  6A 00         push    0
00493757  |.  51            push    ecx
00493758  |.  8BCC          mov     ecx, esp
0049375A  |.  89A5 38FFFFFF mov     dword ptr [ebp-C8], esp
00493760  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
00493763  |.  50            push    eax
00493764  |.  FF15 38B95C00 call    dword ptr [<&MFC71.#297_ATL::CStringT<char,StrTrai>;  MFC71.7C14E575
0049376A  |.  8985 2CFFFFFF mov     dword ptr [ebp-D4], eax
00493770  |.  8D8D 54FFFFFF lea     ecx, dword ptr [ebp-AC]
00493776  |.  51            push    ecx
00493777  |.  B9 E4F26200   mov     ecx, 0062F2E4
0049377C  |.  E8 BFD7FCFF   call    00460F40                                           ;  ???? XX new opeator
00493781  |.  8985 28FFFFFF mov     dword ptr [ebp-D8], eax
00493787  |.  8B95 28FFFFFF mov     edx, dword ptr [ebp-D8]
0049378D  |.  8995 48FFFFFF mov     dword ptr [ebp-B8], edx
00493793  |.  83BD 48FFFFFF>cmp     dword ptr [ebp-B8], 0
0049379A  |.  0F85 94000000 jnz     00493834
004937A0  |.  8D8D 40FFFFFF lea     ecx, dword ptr [ebp-C0]
004937A6  |.  FF15 28B95C00 call    dword ptr [<&MFC71.#310_ATL::CStringT<char,StrTrai>;  MFC71.7C173199
004937AC  |.  C645 FC 02    mov     byte ptr [ebp-4], 2
004937B0  |.  8D8D 44FFFFFF lea     ecx, dword ptr [ebp-BC]
004937B6  |.  FF15 28B95C00 call    dword ptr [<&MFC71.#310_ATL::CStringT<char,StrTrai>;  MFC71.7C173199
004937BC  |.  C645 FC 03    mov     byte ptr [ebp-4], 3
004937C0  |.  FF15 90AA5C00 call    dword ptr [<&KERNEL32.GetLastError>]               ; [GetLastError
004937C6  |.  50            push    eax
004937C7  |.  68 42010000   push    142
004937CC  |.  8D85 44FFFFFF lea     eax, dword ptr [ebp-BC]
004937D2  |.  50            push    eax
004937D3  |.  FF15 3CB95C00 call    dword ptr [<&MFC71.#2321_ATL::CStringT<char,StrTra>;  MFC71.7C18B260
004937D9  |.  83C4 0C       add     esp, 0C
004937DC  |.  68 00E00000   push    0E000
004937E1  |.  8D8D 40FFFFFF lea     ecx, dword ptr [ebp-C0]
004937E7  |.  FF15 2CB95C00 call    dword ptr [<&MFC71.#4035_ATL::CStringT<char,StrTra>;  MFC71.7C153789
004937ED  |.  6A 40         push    40
004937EF  |.  8D8D 40FFFFFF lea     ecx, dword ptr [ebp-C0]
004937F5  |.  FF15 30B95C00 call    dword ptr [<&MFC71.#876_ATL::CSimpleStringT<char,1>;  MFC71.7C158BCD
004937FB  |.  50            push    eax
004937FC  |.  8D8D 44FFFFFF lea     ecx, dword ptr [ebp-BC]
00493802  |.  FF15 30B95C00 call    dword ptr [<&MFC71.#876_ATL::CSimpleStringT<char,1>;  MFC71.7C158BCD
00493808  |.  50            push    eax
00493809  |.  8B8D 30FFFFFF mov     ecx, dword ptr [ebp-D0]
0049380F  |.  E8 5ECE1100   call    <jmp.&MFC71.#4104_CWnd::MessageBoxA>
00493814  |.  C645 FC 02    mov     byte ptr [ebp-4], 2
00493818  |.  8D8D 44FFFFFF lea     ecx, dword ptr [ebp-BC]
0049381E  |.  FF15 68B95C00 call    dword ptr [<&MFC71.#578_ATL::CStringT<char,StrTrai>;  MFC71.7C1771B1
00493824  |.  C645 FC 01    mov     byte ptr [ebp-4], 1
00493828  |.  8D8D 40FFFFFF lea     ecx, dword ptr [ebp-C0]
0049382E  |.  FF15 68B95C00 call    dword ptr [<&MFC71.#578_ATL::CStringT<char,StrTrai>;  MFC71.7C1771B1
00493834  |>  EB 60         jmp     short 00493896                                     ;  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
00493836  |>  8B8D 4CFFFFFF mov     ecx, dword ptr [ebp-B4]
0049383C  |.  51            push    ecx
0049383D  |.  68 2CF16200   push    0062F12C
00493842  |.  51            push    ecx
00493843  |.  8BCC          mov     ecx, esp
00493845  |.  89A5 34FFFFFF mov     dword ptr [ebp-CC], esp
0049384B  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
0049384E  |.  52            push    edx
0049384F  |.  FF15 38B95C00 call    dword ptr [<&MFC71.#297_ATL::CStringT<char,StrTrai>;  MFC71.7C14E575
00493855  |.  8985 24FFFFFF mov     dword ptr [ebp-DC], eax
0049385B  |.  8D85 54FFFFFF lea     eax, dword ptr [ebp-AC]
00493861  |.  50            push    eax
00493862  |.  B9 E4F26200   mov     ecx, 0062F2E4
00493867  |.  E8 74D9FCFF   call    004611E0                                           ;  调用1:远程桌面的Form
0049386C  |.  8985 20FFFFFF mov     dword ptr [ebp-E0], eax
00493872  |.  8B8D 20FFFFFF mov     ecx, dword ptr [ebp-E0]
00493878  |.  898D 3CFFFFFF mov     dword ptr [ebp-C4], ecx
0049387E  |.  6A 05         push    5
00493880  |.  8B8D 3CFFFFFF mov     ecx, dword ptr [ebp-C4]
00493886  |.  E8 D5CD1100   call    <jmp.&MFC71.#6090_CWnd::ShowWindow>
0049388B  |.  8B8D 3CFFFFFF mov     ecx, dword ptr [ebp-C4]
00493891  |.  E8 1A72F9FF   call    0042AAB0
00493896  |>  C645 FC 00    mov     byte ptr [ebp-4], 0
0049389A  |.  8D4D F0       lea     ecx, dword ptr [ebp-10]
0049389D  |.  FF15 68B95C00 call    dword ptr [<&MFC71.#578_ATL::CStringT<char,StrTrai>;  MFC71.7C1771B1
004938A3  |.  C745 FC FFFFF>mov     dword ptr [ebp-4], -1
004938AA  |.  8D8D 54FFFFFF lea     ecx, dword ptr [ebp-AC]
004938B0  |.  E8 FBD40800   call    00520DB0
004938B5  |>  8B4D F4       mov     ecx, dword ptr [ebp-C]
004938B8  |.  64:890D 00000>mov     dword ptr fs:[0], ecx
004938BF  |.  8B4D EC       mov     ecx, dword ptr [ebp-14]
004938C2  |.  33CD          xor     ecx, ebp
004938C4  |.  E8 C2DF1100   call    005B188B
004938C9  |.  8BE5          mov     esp, ebp
004938CB  |.  5D            pop     ebp
004938CC  \.  C3            retn

找到关键Call.
004936B7  |.  E8 34F2FFFF   call    004928F0    ;  关键Call–remote desk.

修改关键call之后的跳转:

004936C0  |.  E9 F0010000   jmp     004938B5
修改为什么都不作。免得它影响后面的代码。
用9090909090 填充。

经试验,远程桌面功能可以超过20分钟的使用了。

实际摸索中还是走了不少弯路,总结经验为:在OllyDbg中,看过的弄明白的函数,要自己加上注释。 在看其他相关的代码的时候,极有可能就碰到了自己曾经注释过的代码,这样一下子就全通了。

posted @ 2011-08-22 22:52 风 阅读(107) | 评论 (0) | 编辑 收藏

2011年7月17日

MyEclipse 无响应的几种解决办法

Eclipse MyEclipse 没有响应 JVM terminated. Exit code=1073807364 错误 卡住 等怪问题怪现象[解决办法]


问题描述:


                     Eclipse的WTP和MyEclipse都会的怪毛病

                     在WTP或者MyEclipse下 在JSP页面中<% 和 %>之间写代码(即写:scriptlet代码)

                     只要输入.号 整个IDE就卡住了 比如: out. 这个后面要出来要卡好一会

                      强行关闭出现以下提示:

                     JVM terminated. Exit code=1073807364
                     c:\WINDOWS\system32\javaw.exe
                     -Xms40m
                     -Xmx256m
                     -jar F:\eclipse\startup.jar
                     -os win32
                     -ws win32
                     -arch x86
                     -launcher F:\eclipse\eclipse.exe
                     -name Eclipse
                     -showsplash 600
                     -exitdata f24_7c
                     -vm c:\WINDOWS\system32\javaw.exe
                     -vmargs
                     -Xms40m
                     -Xmx256m
                     -jar F:\eclipse\startup.jar

这个问题 让我郁闷了好几天 虽然在JSP中scriptlet的脚本是禁忌 但是有时候为了方便测试代码效果 还是会偶尔用用

经过这次 总结了一下

解决办法:
(感谢Matrix论坛几位朋友的帮助)

1:    ①:
                在Eclipse——Window——Preferences——Java——Installed JREs下
                添加你机子上的1.5+的JDK路径 添加好后把旧版本的Remove 这样下次新建工程就不用改了 一劳永逸!

          或者:

          ②:
                请将新建WEB工程的JRE 1.42的包remove掉,自己新建一个你机子上的1.5+的JDK目录下的jre的包
                要导入的jre路径包括:
                D:\Program Files\Java\jdk1.5.0_06\jre\lib下的 *.jar;以及
                D:\Program Files\Java\jdk1.5.0_06\jre\lib\ext下的*.jar.
                (这个问题其实只这一步就能解决了,谢谢yiqingxiao的提醒)

2: 在eclipse的安装目录下用EditPlus编辑eclipse.ini文件,将其中的参数改成:

         -vm=D:\Program Files\Java\jdk1.5.0_06\bin\javaw.exe #这个看你自己JDK路径而定
         -vmargs                 #下面参数视大家内存大小 自己选择合适的大小
         -Xms128m
         -Xmx512m
         -XX:PermSize=64M
         -XX:MaxPermSize=128M

3: 装过orcale的人 最好把环境变量重新设置一下:set path=D:\Program Files\Java\jdk1.5.0_06\bin

4: eclipse是3.3的,单独运行没什么问题,装上myeclipse6之后编写jsp代码时联想输入的时候就会出现eclipse无响应的情况,大概1分钟左右才能恢复,搜了半天也没有个好答案。自己琢磨,用了下面这个办法,好了,不知为什么。菜单-->myeclipse-->myeclipse-->files and editors-->html-->visual designer

        取消mozilla/firefox和sarari还有show warning......(Linux only)这三个选项。就好了,你们实验看看。


posted @ 2011-07-17 10:03 风 阅读(219) | 评论 (0) | 编辑 收藏

2011年3月12日

java.sql.SQLException: No more data to read from socket

1- java.sql.SQLException: ソケットから読み込むデータはこれ以上ありません(java.sql.SQLException: No more data to read from socket)
           Driver Version: 9i.*    or 10g.*

           该异常通常是因为使用了连接池,当从连接池取得的connection失效或者超时的时候,使用这个连接来进行数据库操作就会抛出以上异常。
           解决方法就是让数据库连接池在给你返回connection之前,检查该connnection是否超时或者失效,如果是,则evict这个connection,并返回一个可用的connection。
           以DBCP为例,做如下配置即可解决问题:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="url">
   <value>${jdbc.url}</value>
  </property>
  <property name="driverClassName">
   <value>${jdbc.driver}</value>
  </property>
  <property name="username">
   <value>${jdbc.username}</value>
  </property>
  <property name="password">
   <value>${jdbc.password}</value>
  </property>
  <property name="testOnBorrow">
   <value>true</value>
  </property>
  <property name="testOnReturn">
   <value>true</value>
  </property>
  <property name="testWhileIdle">
   <value>true</value>
  </property>
  <property name="minEvictableIdleTimeMillis">
   <value>180000</value>
  </property>
  <property name="timeBetweenEvictionRunsMillis">
   <value>360000</value>
  </property>
  <property name="validationQuery">
   <value>SELECT 1 FROM SYS.DUAL</value>
  </property>
  <property name="maxActive">
   <value>100</value>
  </property>
</bean>
          另外,你也可以参考这里:http://www.websina.com/bugzero/errors/oracle-SQLException.html
          转贴: Oracle SQLException: No more data to read from socket
java.sql.SQLException: No more data to read from socket at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:1160)
at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java:963)
at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java:893)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:375)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1894)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1094)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2132)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2015)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2877)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:608)

This error most likely occurs in applications that use a database connections pool. When the application checked out a connection that has been timed out or has been staled, and used it to connect to the database, this error occurs.
You may need start your Oracle database server as well as your Java application. In a better designed system, however, the staled connection should be cleared out and a new connection should be establised automatically.
--------------------------------------------------
          2-ORA-17004: Invalid column type  (java.sql.SQLException: 列の型が無効です。)         Driver Version: 9i.*

          该异常初次出现在使用spring+iBatis的程序中,后来通过检查出现错误的字段和SQLMAP的参考文档,才发现问题之所在。
          如果你使用iBatis,那从他的SqlMap参考文档中应该找到以下文字,当你看到他们的时候,你就发现了通向成功之门的钥匙,呵呵
          Note! Most drivers only need the type specified for nullable columns.  Therefore, for such drivers you only
need to specify the type for the columns that are nullable. 
          Note! When using an Oracle driver, you will get an “Invalid column type” error if you attempt to set a null
value to a column without specifying its type. 
          也就是说,当某个column允许为空,而你传的参数对应该column的值也为null的时候,对于oracle的驱动来说,这个异常是铁定的了。

          解决方法,可以通过iBatis的parameterMap,指定parameter元素的jdbcType和nullValue来解决;如果你没有使用iBatis,那你可以通过检查参数,如果他对应的列为可以为空,而当前值恰好就是空的时候,为他设置一个不是空的值即可。
--------------------------------------------------
           3-java.sql.SQLException: OALL8矛盾した状態にあります;(java.sql.SQLException: OALL8 is in an inconsistent state.)

           该异常在我们的程序中通常是在第一个异常出现之后出现,但也不尽然,该异常搜遍网上也找不到合理的解释,只有以下信息可能会有用一些(from   http://forums.oracle.com/forums/thread.jspa?messageID=1275383):
This is known to occur under when you are using too big an array size. How big your array can be depends on the length of each record and the Driver/Database combination. If you exceed the maximum size you will get the "OALL8" SQLException and your connection object may become unusable.

This message is also created if you are using the following:

9.0.1 Database
10.1.0 JDBC Driver
Generated Code that passes in an ARRAY or VARRAY of VARCHAR2 as a Parameter

            或者(from http://opensource.atlassian.com/projects/spring/browse/SPR-1545?decorator=none&view=rss):
[SPR-1545] Oracle error 17447 should result in a DataAccessResourceFailureException
Oracle error 17447 is currently an unmapped exception but it should be a DataAccessResourceFailureException.  This error occurs when a JDBC connection has become corrupted, usually because of failure to properly close a connection before returning the connection to the connection pool.  Here is the error message:

SQL state [null]; error code [17447]; OALL8 is in an inconsistent state; nested exception is java.sql.SQLException: OALL8 is in an inconsistent state
    java.sql.SQLException: OALL8 is in an inconsistent state

This is a kind of "oh crap, something bad happened and it's not really your fault" exception in Oracle.  A few causes of this message are suggested in my searches on Google, including (see http://forums.oracle.com/forums/thread.jspa?threadID=274018&tstart=0):
- use of Oracle 10g JDBC drivers to connect to Oracle 9 databases
- using too big an array size (9.0.1 Database, 10.1.0 JDBC Driver and Generated Code that passes in an ARRAY or VARRAY of VARCHAR2 as a Parameter )

In any case, after this exception is thrown the connection is corrupted and unusable, hence why I advocate this exception be mapped to a DataAccessResourceFailureException

            解决方法,我也不知道,呵呵,反正调整了第一个问题之后,这个异常再没有在我们的程序中出现。

posted @ 2011-03-12 16:21 风 阅读(1015) | 评论 (0) | 编辑 收藏

2010年12月18日

无需刻录DMG光盘,教你在VMWare下安装MAC OS X Snow Leopard 10.6

说明:这是转载自远景论坛ycjcn 的帖子,大家可以点这查看原文无需刻录DMG光盘,教你在VMWare下安装MAC OS X Snow Leopard 10.6


补充:1、本文内容已经在Windows Vista + VMware Workstation 7.0 + MAC OS X Snow Leopard 10.6 环境下安装成功!

   2、当你在虚拟机里浏览镜像文件时看不到DMG文件,需要点Browse,将文件类型CD-ROM images(*.iso)改为All files (*.*)。

   3、请仔细阅读文中由粗体字标出的部分,忽略这些部分将导致安装失败。


在PC机上安装MAC OS X系统有两种方法,一是在硬盘上分区,专门安装MAC OS X;二是在现有Windows系统上使用VMWare等虚拟机软件安装。两种安装方法在网上都有介绍,但第二种方法一般都需要将苹果系统的DMG光盘镜像文件刻录到D9光盘上,不仅让没有刻录条件的同学为难,连我有刻录条件的人也觉的麻烦。今天我就在这里补充介绍一下使用VMWare安装MAC OS X时,无需刻录D9光盘,无转换成ISO格式,直接使用MAC OS X的DMG镜像文件进行安装的方法。

安装必备:
  硬件:一台拥有支持虚拟技术的64位双核处理器和2GB以上内存的PC。
软件:VMWare Workstation 7.0
DMG光盘镜像文件:苹果操作系统 - 雪豹 10.6
darwin300 darwin300.rar (52 K) 下载次数:29142 或者Rebel EFI Rebel EFI.rar (55 K) 下载次数:19897 引导光盘ISO镜像文件
首先安装好VMWare Workstation 7.0。使用File->New->Virtual Machine创建一个虚拟机,在选择操作系统时选择Other->FreeBSD 64-bit。


CPU设置1核可以,2核也可以,如果你是双核CPU,建议你分配1个核;内存建议设置为1024MB,如果你的物理内存够大也可以多给些;硬盘最少分配15GB,太小则无法进行安装,如果你还想多装些软件,建议多分配一些。最后一步可以在Customize Hardware选项里把软驱删除,因为这个用不上。



  创建好之后,需要你在刚建立的虚拟机目录下找到一个扩展名为.vmx的文件,用记事本打开,找到guestOS = "freebsd-64"一行,将引号里的freebsd-64改为darwin10,改完是guestOS = "darwin10",保存修改后的文件。



  做了这一步,在这个虚拟机的Options->General选项下就可以看到操作系统版本显示为:MAC OS X Server 10.6,如下图所示。仍显示为FreeBSD 64-bit的需要重启一下VMWare。



如果运行不了后面介绍的MAC OS X安装程序,很可能是忽略了这步或者修改错了。


  接下来我们就要开始安装了。安装的第一步是用Darwin.iso或者Rebel EFI.iso镜像进行引导。先装载镜像文件:在刚才建立的虚拟机Settings->Hardware中,选择CD/DVD(IDE)设备,选择右侧的Use ISO image file,点Browse加载Darwin.iso或者Rebel EFI.iso。


装载完镜像文件后,现在启动虚拟机。
  先演示使用Rebel EFI镜像启动,引导完成后就能看到如下图的界面:


按照屏幕提示等待10秒或者按'1'键,选择当前光盘驱动器。此时会出现如下图所示的界面:


这里提示请插入MAC OS X的DVD光盘。



  此时我们再次打开这个虚拟机的Settings->Hardware,找到CD/DVD(IDE)设备(你可以双击VMWare窗口右下角的光盘图标来快速打开,如图: ),将刚才的Rebel EFI镜像替换为苹果系统的DMG镜像;点Browse,将文件类型CD-ROM images(*.iso)改为All files (*.*)就能浏览到DMG文件了。



  这里有一个关键地方:选择DMG镜像文件后,将下图所示Device status里的Connected前打上勾(否则不能进入安装界面),然后确定。



此时,我们便进入了MAC OS X的安装程序准备阶段。


有的同学使用Rebel EFI引导可能会出现禁止符号,无法安装,如下图所示:


遇到这个问题可以使用Darwin镜像替换Rebel EFI,并重新启动虚拟机。在出现下图所示界面后,在CD/DVD(IDE)设备里将Darwin镜像改为苹果的DMG镜像即可,同样记得给“Connected”选项打勾。



经过一阵准备阶段就进入了苹果系统的安装过程,如下图所示:


在这里特别提一下,有的同学在进行到选择安装盘的步骤时看不到硬盘选项,不要着急,在屏幕上方的菜单中找到“实用工具”->“磁盘工具”,如图所示:


对你的虚拟硬盘执行“抹掉”操作,如图所示:

=700) window.open('http://images.weiphone.com/attachments/Day_091117/102_35614_dd83da0369b2aa5.png');" border=0 src="http://images.weiphone.com/attachments/Day_091117/102_35614_dd83da0369b2aa5.png" width=700 onload="if(this.width>'700')this.width='700';if(this.height>'700')this.height='700';">

操作完成后关闭“磁盘工具”窗口就OK了,如图所示:


根据你的电脑配置不同,大概进行几十分钟的安装,你就可以用上苹果操作系统了。


看到下图的界面,表示你的系统已经安装完成,需要重新启动。


重新启动前你要特别注意,先要去掉安装时在CD/DVD(IDE)设备上加载的苹果DMG镜像,换上Darwin或者Rebel EFI引导镜像,否则你将不能成功引导安装好的MAC OS X系统。



  如果使用一种引导失败,可以试着使用其他的引导镜像。

还有需要在VMWare里的MAC系统上安装声卡、显卡等驱动的同学,可以在网上寻找相关文章和驱动,或参考 《号外!折腾无限!VMware Workstation 7.0 虚拟机安装雪豹snow leopard 10.6》

我终于知道怎么安装了,开始我也是找不到这个东西,后来在网上看到张图片,才找到的。
其实它就在MAC启动用的 drawin300.iso 里。
在MAC运行的时候用虚拟机把光盘插进去,MAC桌面上就会出来个光盘的图标,安装程序就在里面
 第八步:安装VMware Tools

 草根教程网友详解索尼本本装雪豹过程

    安装VMware Tools后,可以设定屏幕分辨率,可以主机共享文件等功能。

 草根教程网友详解索尼本本装雪豹过程
加载darwin.ISO后,进行安装

 草根教程网友详解索尼本本装雪豹过程
安装后,有多个分辨率选择,而且可以使用主机共享

    第九步:与主机共享文件并安装声卡驱动

    为了让主机和虚拟苹果文件共享,请进行下面的设置。

 草根教程网友详解索尼本本装雪豹过程
添加主机与虚拟系统共享目录

 草根教程网友详解索尼本本装雪豹过程
共享文件夹路径与名称

 草根教程网友详解索尼本本装雪豹过程
确定安装共享设置

 草根教程网友详解索尼本本装雪豹过程


这里要注意下:VMWare 插这个iso光盘的时候要把 直接连接 复选框选中,然后再点确定。
进入系统后,会在桌面上显示这个共享文件夹为一个新磁盘。

将EnsoniqAudioPCI 2.mpkg.RAR(声卡驱动)在主机上解压放到共享文件夹目录中。
并在Mac系统中安装后,就有声音了。



posted @ 2010-12-18 23:19 风 阅读(781) | 评论 (0) | 编辑 收藏

2010年12月2日

RIA

RIA(Rich Internet Applications)富互联网应用,具有高度互动性、丰富用户体验以及功能强大的客户端。

RIA的优势

特点

  RIA 具有的桌面应用程序的特点包括:在消息确认和格式编排方面提供互动用户界面;在无刷新页面之下提供快捷的界面响应时间;提供通用的用户界面特性如拖放式(drag and drop)以及在线和离线操作能力。RIA具有的Web应用程序的特点包括如:立即部署、跨平台、采用逐步下载来检索内容和数据以及可以充分利用被广泛采纳的互联网标准。RIA具有通信的特点则包括实时互动的声音和图像。
  客户机在RIA中的作用不仅是展示页面,它可以在幕后与用户请求异步地进行计算、传送和检索数据、显示集成的用户界面和综合使用声音和图像,这一切都可以在不依靠客户机连接的服务器或后端的情况下进行。

部署RIA的好处

  对于企业来说,部署RIA的好处在于:
  1)RIA可以继续使用现有的应用程序模型(包括J2EE和.NET),因而无需大规模替换现有的Web应用程序。通过Rich Client技术,可以轻松构建更为直观、易于使用、反应更迅速并且可以脱机使用的应用程序。
  2)RIA可以帮助企业提供多元化的重要业务效益,包括提高销量、提高品牌忠诚度、延长网站逗留时间、较频繁的重复访问、减少带宽成本、减少支持求助以及增强客户关系等。

发展态势

  在过去的两到三年中,Web开发人员一直是想构建一种比传统HTML更丰富的客户端:这是一个用户接口,它比用HTML能实现的接口更加健壮、反应更加灵敏和更具有令人感兴趣的可视化特性。RIA技术的出现允许我们在因特网上以一种像使用Web一样简单的方式来部署富客户端程序。无论将来RIA是否能够如人们所猜测的那样完全代替HTML应用系统,对于那些采用C/S架构的胖客户端技术运行复杂应用系统的机构和采用基于B/S架构的瘦客户端技术部署Web应用系统地机构来说,RIA确实提供了一种廉价的选择。下面介绍一下目前出现的几种比较有实力或者有特点的RIA客户端开发技术:

1) Adobe Flash/Flex

  Flash 从6.0开始Flash就逐步具备建立窗体风格的应用程序的功能。据Adobe称已经有98%以上的桌面系统的浏览器都安装了 Adobe Flash Player。这使得以Adobe Flash Player为客户端的RIA可以支持种类广泛的平台和设备。
  Flex是为满足希望开发 RIA的企业级程序员的需求而推出的表示服务器和应用程序框架,它可以运行于J2EE和.NET平台。Flex表示服务器提供基于标准的、声明性的编程方法和流程,并提供运行时服务,用于开发和部署丰富客户端应用程序的表示层。Flex开发者使用直观的基于XML的MXML来定义丰富的用户界面。该语言由 Flex服务器翻译成SWF格式的客户端应用程序,在Flash Player中运行。

2) Laszlo

  Laszlo 是一个开源的RIA开发环境。使用Laszlo平台时,开发者只需编写名为LZX的描述语言(其中整合了XML和Javascript),运行在J2EE 应用服务器上的Laszlo平台会将其编译成SWF格式的文件并传输给客户端展示。从这点上来说,Laszlo的本质和Flex是一样的。Flash是任何浏览器都支持的展示形式,从而一举解决了浏览器之间的移植问题。而且,在未来的计划中,Laszlo还可以将LZX编译成Java或.NET本地代码,从而大大提高运行效率。

3) Avalon

  Microsoft的Avalon是下一版本的 Windows(代号"Longhorn")的一部分,是一个图形和展示引擎,主要由新加到.NET框架中的一组类集合而成。Avalon定义了一个在 Longhorn中使用的新标记语言,其代号为"XAML"(可扩展应用程序标记语言)。可以使用XAML来定义文本、图像和控件的布局,程序代码可以直接嵌入到XAML中,也可以将它保留在一个单独的文件内。这与Flex中的MXML或者Laszlo中的LZX非常相似。不同的是:基于 Avalon的应用程序必须运行在Longhorn环境中,而Flex和Laszlo是不依赖于平台的,仅仅需要装有Flash播放器的浏览器即可。

4) Java SWT

  Java 已经出现几年了,并且完全支持创建基于窗体的用户界面。除了Java基础类(JFC/Swing)中的用户界面组件之外,开发人员还可以使用来自于 Eclipse Project的SWT工具箱和许多第三方工具箱进行开发。对于图形来说,可以采用Java 2D API:一个非常完整且非常复杂的图形API。你可以通过一个Web浏览器使用Java插件软件,或使用Java运行时环境中较新的Java Web Start技术来部署应用程序。使用Java建立Rich Client的主要缺陷是它的复杂性(即使对简单的窗体和图形也要求编写非常烦琐的代码)和Java浏览器插件的低市场占有率。

5) XUL

  XUL (念作"zool")是一种基于XML的用户界面语言,它来自于Mozilla的开放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在 Mozilla浏览器上运行,而且也可以运行在其他描述引擎上,如Zulu(一个Flash MX组件)和Thinleys(一个Java实现)。XUL描述引擎都非常小(100K以下),它可以使用XML数据也可以生成XML数据。XUL的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。XUL最大的优点在于它与Gecko引擎的集成(打开了通向大量Web标准的大门),以及与大多数其它XML用户界面描述语言相比它是一种非常具有表达力和简洁的语言。

6) Bindows

  Bindow 是用Javascript和DHTML开发的Web窗体框架。Javascript用于客户端界面的显示和处理,XML HTTP用于客户端与服务器的信息传输。Javascript在客户端的表现力不容置疑,利用Javascript几乎可以实现Windows应用程序所能干的大部分事情,XMLHTTP 一直以来常被用于实现"无刷新"的Web页面,它和 Javascript配合,可以完成数据从服务器和客户端的传输。Bindows的一个主要的缺点是它采用一次全部载入的方式来实现脚本库,在窗口的加载期,需要一个漫长的等待过程,甚至浏览器的进程会产生无响应的情况。这点Bindows根本没有遵循"用多少去多少"的准则。另外,内部大量利用了IE6 的技术,没有考虑到非IE的浏览器,限制了Bindows的流行。

7)JavaFX

  2008年12月05日 Sun微系统公司今天正式发布了基于Java语言的平台JavaFX 1。0,这个平台建立在其广泛应用的Java编程语言的基础上,旨在建立大量可在电脑和手机上运行的网络程序。 Java一直以来就是编程语言,但是随着JavaFX的发布,Sun公司开始允许将编程内容创新这一任务转移到以设计艺术为重点而非编程科学为重点的设计人员身上。
  “我们的目标群体是叫做创造者的人群”,Sun公司Java平台组的高级副主任 OctavianTanase对 说,“随着1.0版的发布,我们将目标锁定在网页开发人员,这群可能拓展Java界面体验的人。到2011年,主要的目标是大量使用诸如Adobe系统等设计工具的设计人员”。
  当然,通向这个以设计为导向的工具还需要一些时间。Sun公司最后打算提供自己的程序给设计人员来建立RIAS,但是直到如今,这些设计人员还得使用程序员所使用的Netbeans或Eclipse集成开发环境(IDE)。新工具将在来年夏天面市。

8)Curl

  Curl诞生于1995年的美国,Curl是由美国国防部高级研究项目代理资助,马萨诸塞州科技学院的David A. Kranz开发的Web开发语言, HTML语言的创建者Tim Berners-Lee也参与其中,并扮演了重要的角色。
  该语言的目标是用一种统一的面向对象的语言代替HTML、Cascading Style Sheets、JavaScript等;仅使用Curl便可开发出Web应用的各种软件;Curl程序在浏览器中运行,并且因为它以类似JRE的形式提供了客户端运行环境Surge RTE,能够轻松开发出日益流行的Rich Client应用程序。
  Curl是为了实现富客户端(rich client)应运而生的Web开发语言, 仅仅从其外观的丰富性上就能体现其富客户端理念。
  为了实现真正有益的富客户端,它能有效地实现各种复杂处理,具备提供高信赖、高扩展性、高维护性的应用程序所应拥有的各种编码能力。其拥有在Web环境上便利的分配、管理以及低廉的维护费以及在C/S环境上的用户便利性、迅速的应答,华丽的图像显示等重多优点于一身。
  Curl语言于2002年在美国正式开始商业化,在美国和日本拥有重多的客户和合作伙伴,现已进军北美及韩国市场,发展势头迅猛。

9)SilverLight

  微软在Mix07上发布一些重大通告,其中最值得关注的就是SilverLight的发布,SilverLight的前身就是WPF/E技术。
  这是一种新的Web 呈现技术的名称,创建该技术的目的是使其能够在各种平台上运行。该技术支持创建丰富的、具有绚丽视觉效果的交互式体验,并且可以随处实现:无论是在浏览器内、在多个设备上还是在桌面操作系统(如 Apple Macintosh)中。可扩展应用程序标记语言 (XAML) 遵循 Windows 演示基础 (WPF),前者是”WPF/E”呈现功能的基础。XAML 是 Microsoft .NET Framework 3.0(Windows 编程基础结构)中的呈现技术。

RIA未来的发展预测

  就目前RIA的使用情况来说,离"RIA时代"还有很远的一段距离。今后几年时间内传统的Web应用程序和RIA将会共存。笔者认为真正具有实力担当起普及丰富客户端应用重任的只有基于Flash Player的Flash/Flex应用程序和Microsoft的基于Avalon的应用程序。短期时间内(估计2-3年时间)可能是 Flash/Flex应用程序在新兴的网络应用程序市场上占有主导地位。
  目前Microsoft还在推广一种叫做Smart Client(智能客户端)的客户端程序技术,Microsoft称Smart Client是比Rich Client更优秀的客户端,因而采用Smart Client的应用程序算不算RIA目前我个人还无法作答。这里我们之所以提及Smart Client,是因为Smart Client的特性跟我们谈的Rich Client有太多的相似之处。Smart Client拥有自动更新、离线状态下的数据处理和可以使用本地资源等特征,其中的可使用本地资源这一项无疑是一大卖点,因为浏览器中的 Flash/Flex应用程序目前还无法操作本地的一些资源,比如Flash/Flex应用程序无法将网上的文件保存到本地或者修改本地文件。虽然 Macromedia的Central1.5已经可以对本地文件进行简单的操作,并且flex1.5开发的RIA也能够运行于Central上,但是如何使Central能够得到大范围推广还是个问题。相对于轻量级的Rich Client,Smart Client更接近C/S架构中的客户端程序。Rich Client和Smart Client的定位还是有所区别的:Rich Client更适合作为轻量级的基于浏览器的网络应用程序客户端;Smart Client更适合作为Windows桌面应用程序的智能客户端。
  不管我们今天称之为的RIA今后会不会成为主流应用程序,人们对开发具有高度互动性、丰富用户体验以及功能强大的客户端的追求是不变的。有理由相信,拥有成熟技术和极高市场占有率的Flash客户端将会在RIA道路上越走越远。Microsoft未来的重量级武器:Avalon和Smart Client能否后来者居上让我们拭目以待。

RIA

  放射免疫测定/放射免疫分析(Radio immunoassay,RIA)
  基本原理:
  在放射免疫分析的实验中,加入超量的标记抗原*Ag与未标记抗原Ag(即:待测抗原)与较少量的抗体(Ab)竞争性结合。
  如果实验结果所计量到的结合物(*Ag-Ab)放射活性较高,表示待测物的浓度较低。
  如果所计量到的结合物放射活性较低,则表示待测物的浓度较高。 藉由标准 曲线图的分析,可以推算出待测物的浓度。
扩展阅读:
  • 1

    http://baike.baidu.com/view/951173.htm JavaFX词条

  • 2

    http://www.java2000.com.cn/f450 JAVA世纪网JavaFX板块

  • 3

    http://www.k-zone.cn/zblog 一个关于RIA技术的博客

  • 4

    http://www.tzuchi.com.tw/file/TP/DivIntro/TzuChiNM/b4_RIAbasic.pdf 放射免疫分析概述

posted @ 2010-12-02 12:31 风 阅读(65) | 评论 (0) | 编辑 收藏

2010年11月28日

MyEclipse极速优化

相信大家在启动MyEclipse的时候都很慢,很烦有没有让他更快更舒服些呢?

现在就介绍一些优化方法,很管用,对电脑配置较低的朋友相信有很大的帮助,希望大家能仔细的看完,并按以下每步设置。

1、去除不需要加载的模块

一个系统20%的功能往往能够满足80%的需求,MyEclipse也不例外,我们在大多数时候只需要20%的系统功能,所以可以将一些不使用的模块禁止 加载启动。通过Windows - Preferences打开配置窗口,依次选择左侧的General - Startup and Shutdown,这个时候在右侧就显示出了Eclipse启动时加载的模块,可以根据自己的实际情况去除一些模块。
windows–>perferences–>general–>startup and shutdown

关掉没用的启动项:

WTP :一个跟myeclipse差不多的东西,主要差别是 WTP 是免费的,如果使用myeclipse,这个可以取消
Mylyn:组队任务管理工具,类似于 CVS ,以任务为单位管理项目进度,没用到的可以取消
Derby:一种保存成 jar 形式的数据库,我没用到,取消
一大排以 MyEclipse EASIE 打头的启动项:myeclipse 支持的服务器,只选自己用的,其他取消,比如我只选了tomcat6.x

2、取消MyEclipse在启动时自动验证项目配置文件

默认情况下MyEclipse在启动的时候会自动验证每个项目的配置文件,这是一个非常耗时的过程,
可以在Preferences窗口依次选择 MyEclipse Enterprise Workbench - Validation,然后在右侧的Validator列表中只保留 Manual 项就可以了(Manual全部勾选,Bulid项只留下第一项)。
如果需要验证的时候只需要选中文件,然后右键选择 MyEclipse - Run Validation就可以了。

windows–>perferences–>myeclipse–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Validator

手工验证方法:

在要验证的文件上,单击鼠标右键–>myeclipse–>run validation

3、去掉拼写检查(如果你觉的有用可以不去)

拼写检查会给我们带来不少的麻烦,我们的方法命名都会是单词的缩写,他也会提示有错,所以最好去掉,没有多大的用处:
windows–>perferences–>general–>validation->editors->Text Editors->spelling

myeclipse 打开 jsp 的默认编辑器不好,会同时打开预览
windows–>perferences–>general–>editors->file associations,

把默认改成 MyEclipse JSP Editor()
原默认的jsp编辑器是 MyEclipse Visual JSP Designer,顾名思义,此编译器是jsp可视化编辑器,对于初学者有很多的帮助,
但修改此项的默认编辑器其实可以提高启动速度)

4、关闭自动更新

如果是myeclipse7.0以上版本:

(1)关掉maven自动更新:

window-preferences-MyEclipse Enterprise Workbench-Maven4MyEclipse-Maven,
关闭所有Download和Update开头的选项,共四项(去掉前面的勾)

(2)关闭更新调度:window –> preferences –> General –> Startup and Shutdown –> Automatic Updates Scheduler(去掉前面的勾)

(3)window –> preferences –>Myeclipse Dashboard,关闭Show……on start

5、加大JVM的非堆内存
打开 myeclipse.ini
-startup
../Common\plugins\org.eclipse.equinox.launcher_1.0.101.R34x_v20081125.jar
--launcher.library
../Common\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731
-clean
-configuration
configuration
-vm
C:\Users\lenovo\AppData\Local\Genuitec\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\bin\client\jvm.dll
-vmargs
-Xmx384m
-XX:MaxPermSize=384m
-XX:ReservedCodeCacheSize=96m

以上是我的myeclipse.ini,需要修改是-Xmx,-XX:MaxPermSize,-XX:ReservedCodeCacheSize,
将这三项的值调大,但并不是越大越好,曾经在相同的条件下做过测试(内存2GB),-Xmx,-XX:MaxPermSize的值为384m时比512m时要快(视具体的计算机而定),
-Xmx,-XX:MaxPermSize的值设为同样大小且两者之和不能超出你的计算机本身的内存大小

6、window-preferences-MyEclipse Enterprise Workbench-Maven4MyEclipse-Maven,将Maven JDK改为电脑上安装的JDK,即不使用myeclipse提高的JDK
登记add按钮,选择你的电脑上的JDK即可(注意:不是JRE,我的值为:Java6.014)

 

7、window-preferences-MyEclipse Enterprise Workbench-Matisse4Myeclipse/Swing,将Design-time information(dt.jar) location 改用电脑安装的JDK的dt.jar
(即不使用myeclipse提供的dt.jar,我的值为:C:\Java6.014\lib\dt.jar)

经过以上的优化,myeclipse的启动时间可以减少2/3,Tomcat的启动速度可以减少1/2(视具体情况而定)。

posted @ 2010-11-28 11:13 风 阅读(155) | 评论 (0) | 编辑 收藏

2010年11月24日

如何准备一个成功的软件项目验收会

项目验收会在项目整个生命周期内是一个非常重要的里程碑。一般来说,客户同意召开验收会,就是对项目已基本认可,需要召集项目相关各方及专家来达成共识。因此,验收会不仅对乙方,而且对甲方来说都非常重要,双方都希望看到一个准备充分,进展顺利的验收会。为了准备好这个会议,项目组需要提前准备很多工作,具体说来,主要包括以下几个方面。

一.文档准备

验收之前,项目组要准备好以下几类文档:

1.开发总结文档
2.需求文档:包括需求规格说明书,需求变更文档等
3.设计文档:包括概要设计,详细设计,数据库设计等
4.测试文档:包括测试方案,内部测试报告,第三方测试报告等
5.实施文档:包括实施,部署方案,用户手册,维护手册等
6.过程文档:包括项目周报,会议纪要等

以上文档可以参考国家标准或行业标准进行准备,需要说明的是,1-5项可以在后期补,第6项在后期补就比较麻烦,因此在项目开发过程中要注意整理这类文档。另外,还要仔细阅读合同及相关采购文件,看其中是否还提到需要其它文档。

这些文档可以装订在一起,为了给客户及专家一个很好的印象,有以下几个装订技巧:

1.如果文档总页数太少,就单面打印,反之可以双面打印,总之要给人一种很厚,很充实的感觉。
2.设计一个漂亮的,彩色封面,彩打出来。
3.做一个总目录,列明这份材料包括以上哪些部分。例如:第1/7部分 项目开发报告 第2/7部分 项目需求规格说明书
4.每个部分之间用硬皮纸或突出的标签分开,如果用突出标签,在标签上注明那部分的标题
5.最好在书脊上印上标题
6.开会前问客户要装订多少份

项目验收会前,还要提前发给客户以下几份材料:

1.我方参加验收会的名单,便于客户宣读
2.验收意见
3.会议议程

另外,在验收会上,还需要带上项目过程中签署的文档备查,例如合同原件,盖单的用户需求规格说明书原件等等。

二.ppt准备

验收时的ppt一般包括以下几个部分:

1.项目背景和简介
2.合同执行情况汇报
3.开发过程:记录项目开发过程中的一些重要事件
4.系统功能
5.建设或应用成果
6.系统演示(在ppt上列明要演示哪些内容,然后一个一个对照演示)

在做系统演示时,注意要以业务流程为演示重点,用流程将功能点串起来。

三.系统准备

开会时需要对系统进行演示,因此开会前要保证系统的稳定和速度。注意事项如下:

1.尽量安装多一套系统在笔记本上,以防不测。
2.根据网络情况看是否需要带无线上网卡等设备。
2.设计好几个演示流程,一般不可能演示系统的全部功能,因此通过这几个典型流程可以全面反映系统的功能。准备这几个流程时要准备好脚本和数据,务必保证演示过程中数据完整,出现的界面没有硬伤,例如出错,图片丢失等等。
3.演示完这几个流程后,再挑一些系统的亮点进行演示。注意这个顺序,不要一上来就演示基础信息管理,客户更关心的是这个系统的核心业务。
4.把这几个流程和亮点写在ppt上,让大家可以看到你正在演示什么内容。

四.演示前准备

1.开会前一天把ppt准备好,自己试讲至少两遍,也可以邀请同事试听并给意见。
2.把系统准备好,重要功能复查几次,确保不出错
3.开会时提前一个小时到开会地点,布置会场及准备演示环境。
4.看情况是否需要带数码相机,移动硬盘,交换机,网线等物品。
5.指定同事做会议记录。

按以上要求准备验收会议,验收成功就离你不远了。验收成功后,高兴之余,不要忘了做以下几件事:

1.带回用户验收意见
2.将打印版和电子版的验收文档拿回公司归档
3.写会议纪要,把后续要继续跟进事项记录好,如果有图片,也一起发上吧

posted @ 2010-11-24 11:01 风 阅读(157) | 评论 (0) | 编辑 收藏

2010年11月19日

Oracle进程导致CPU 100%的具体解决步骤

  1:检查系统

sar -u 5 5

 

  2: 看谁在用CPU

topas
ps -ef |grep ora #检查第四列,C的大小(unit,100 per cpu)

 

  3:检查CPU数量

/usr/sbin/bindprocessor -q
  
lsattr El proc0

 

  4:两种可能:

1: A Background (instance) process
  
2: An oracle (user) process #此种可能最大。

 

  5: 如果是用户进程:那么高CPU的主要原因有:

Large Queries, Procedure compilation or execution,
Space management and Sorting

 

  5.1 查看每个Session的CPU利用情况:

select ss.sid,se.command,ss.value CPU ,se.username,se.program
from v$sesstat ss, v$session se
where ss.statistic# in
(select statistic#
from v$statname
where name = 'CPU used by this session')
and se.sid=ss.sid
and ss.sid>6
order by ss.sid

 

  5.2: 比较上述Session

  比较一下哪个session的CPU使用时间最多,然后查看该Session的具体情况:

select s.sid, event, wait_time, w.seq#, q.sql_text
from v$session_wait w, v$session s, v$process p, v$sqlarea q
where s.paddr=p.addr and
s.sid=&p and
s.sql_address=q.address;

 

  5.3:查看

  得到上述信息后,查看相应操作是否有hash joins 和 full table scans。如果有hash joins 和 full table scans那么必须创建相应的Index或者检查Index是否有效。

  另外必须检查是否有并行的查询存在和同一时刻有多个用户在执行相同的SQL语句,如果有必须关闭并行的查询和任何类型的并行提示(hints);如果查询使用intermedia数据,那么为了减少总的Index大小,必须限制使用Intermedia的Worldlist。(try restricting the wordlist that intermedia uses to help reduce the total indexsize)。

  6:注意事项

  上述方案只能根据已经运行完成的操作,对于正在执行的长时间操作只能等操作完成后才能检测得到。因此我们可以通过另外一个很好的工具来检测正在运行的长时间操作语句。v$session_longops,这个视图显示那些操作正在被运行,或者已经完成。每个process完成后会刷新本视图的信息。

  7:怎样寻找集中使用CPU的Process:

  很多时候会发现有N个Process在平均分享着CPU的利用率,这种情况唯一的可能性就是这些Process在执行着相同的Package或者Query.

  这种情况:建议通过statspack,在CPU高利用率额时候运行几个快照,然后根据这些快照检查Statspack报告,检查报告中最TOP的Query。然后使用 sql_trace and tkprof 工具去跟踪一下。

  同时检查buffer cache 的命中率是否大雨95%。

  同时在报告中还需要检查一下table scans (long tables),看是否在报告生成期间有存在全表扫描。

  8:参数

  另外还有一些不是特别重要的,但是也必须关心检查的参数可能消耗CPU。

  parallel query 并行查询:

  并行查询最好用于数据仓库的环境下,那种情况任何时候只有几个用户在同时使用。在一个联机事务处理环境中,当同时许多用户去并行查询一个数据库的巨大表时候,会导致CPU的爆满。所以最好在数据库的级别关闭并行查询:设置参数如下:

parallel_min_server = 0  parallel_max_server = 0  
parallel_automatic_tuning = false;

 

  在配置上述参数后,如果SQL语句中使用的并行的提示,那么还是有可能会出现并行查询的情况,所以还需要继续监视相关的SQL语句,如果有可以直接去除提示。

posted @ 2010-11-19 15:57 风 阅读(69) | 评论 (0) | 编辑 收藏

2010年11月4日

资源管理器搜索包含文字的文件找不到的解决方法

今天在修改一些网页代码时用资源管理器搜索包含文字时,明明有文件里包含了这些文字,但XP就是找不到,后来经过摸索找到以下解决方法。
资源管理器的搜索功能,搜索包含某个字符的文件时,为“提高效率”,取消了对所有文件类型中字符的搜索支持,只有部分文件类型中的字符可以被搜索。

解决办法:
运行regedit,编辑注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex
右侧FilterFilesWithUnknownExtensions子键(REG_DEWORD类型)
的键值改为1。

posted @ 2010-11-04 20:24 风 阅读(376) | 评论 (1) | 编辑 收藏

2010年10月27日

Redhat Linux AS4(AS5)下oracle10g自启动脚本设置

以redhat as4和oracle 10g为例。单机在安装过程依照oracle官方的文档一步步下来,只要设置好 参数、安装好必要的包,一般不会出什么问题。安装好了以后系统重启,oracle重启服务,网上很多人建议自己写脚本(其实脚本也很简单),这里讲的是用 oracle本身的脚本实现,当然不可避免最后还要写一点点的。

1、配置dbstart和dbshut

在$ORACLE_HOME/bin 中,有dbstart和dbshut这两个脚本,more dbstart看一下可以看到:

#
# $Id: dbstart.sh.pp 11-may-2005.18:18:07 vikrkuma Exp $
# Copyright (c) 1991, 2005, Oracle. All rights reserved.
#

###################################
#
# usage: dbstart
#
# This script. is used to start ORACLE from /etc/rc(.local).
# It should ONLY be executed as part of the system boot procedure.
#
# This script. will start all databases listed in the oratab file
# whose third field is a "Y". If the third field is set to "Y" and
# there is no ORACLE_SID for an entry (the first field is a *),
# then this script. will ignore that entry.
#
# This script. requires that ASM ORACLE_SID's start with a +, and
# that non-ASM instance ORACLE_SID's do not start with a +.
#
# If ASM instances are to be started with this script, it cannot
# be used inside an rc*.d directory, and should be invoked from
# rc.local only. Otherwise, the CSS service may not be available
# yet, and this script. will block init from completing the boot
# cycle.
#
# Note:
# Use ORACLE_TRACE=T for tracing this script.
#
# The progress log for each instance bringup plus Error and Warning message[s]
# are logged in file $ORACLE_HOME/startup.log. The error messages related to
# instance bringup are also logged to syslog (system log module).
# The Listener log is located at $ORACLE_HOME_LISTNER/listener.log
......

可以看出这个脚本是用来启动oracle服务的,包括listener、instance、asm instances,并且可以放到/etc/rc(.local).,同样dbshut也是起到关闭服务的作用。

配置系统使这个脚本起作 用:

1)、以root编辑/etc/oratab,类似 orcl:/u01/product/10.2.0/db_1:N 这种格式,其中orcl是你的ORACLE_SID,/u01/product/10.2.0/db_1是ORACLE_HOME,这里需要把N改为Y, 即orcl:/u01/product/10.2.0/db_1:Y这样。

2)、以oracle编辑$ORACLE_HOME/bin /dbstart,找到其中第78行:ORACLE_HOME_LISTNER=改为你自己的路径,或者可以改成 ORACLE_HOME_LISTNER=$ORACLE_HOME

保存脚本,以oracle用户运行dbshut和dbstart看是 否能关闭、启动数据库。如 果不能,一般是参数设置,根据报错找到对应位置更改。

2、 把dbstart和dbshut加到redhat启动服务中

经过上一步的配置,可以直接用 dbstart命令启动数据listener、instance、asm instances,但是还没有启动oracle10g的EM,ORACLE利用web页 面管理数据库相当方便,也 是10g的一个特色,所以应该一并启动起该服务来。

$ORACLE_HOME/bin/emctl start dbconsole

因此我们可以用rc.local或者redhat服务都可以实现要求的开机启动。下面分别说一下:

1)、利用 rc.local。直接把dbstart加到rc.local中,实现开机自动启动。这里需要注意的是必须以oracle启动该脚本。

用 root编辑/etc/rc.local,添加下面一行:

su - oracle -c "/u01/product/10.2.0/db_1/bin/dbstart"
su - oracle -c "/u01/product/10.2.0/db_1/bin/emctl start dbconsole"

这里/u01/product/10.2.0/db_1需要替换成实际的ORACLE_HOME

保存并退出后,reboot服务器测试一下,可以看到,当系统启动以后oracle监听、实例 和em都已经起来了

2)、如果我们不用rc.local,也可以加到redhat服务中。在/etc/rc.d /init.d中添加如下脚本文件,命名为oracle:

#!/bin/sh
#chkconfig: 2345 99 01
#description: ORACLE 10g Server

ORACLE_HOME=/u01/product/10.2.0/db_1

if [ ! -f $ORACLE_HOME/bin/dbstart ]
then
echo "ORACLE cannot start"
exit
fi

case "$1" in
'start')
echo "Starting Oracle Database..."
su - oracle -c "$ORACLE_HOME/bin/dbstart"
su - oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
;;
'stop')
echo "Stoping Oracle Database"
su - oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"
su - oracle -c "$ORACLE_HOME/bin/dbshut"
;;
esac

注意其中两行注释,网上很多脚本因为少了这两行不能使服务自启动:

#chkconfig: 2345 99 01
#description: ORACLE 10g Server

其中chkconfig:2345 99 01 是指脚本将为运行级2、3、4、5启动oracle 10g服务,启动优先级为99,关闭优先级为01。

然后以root权限:

# cd /etc/rc2.d
# ln -s /etc/rc.d/init.d/oracle S99oracle
# chkconfig --list oracle
# chkconfig --level 2345 oracle on

重启系统,就可以在启动的过程中看到 Starting oracle,因为我们设置的优先级为99,一般是最后启动。[OK]以后就可以了。因为要启动emctl,可能有点慢,等待的时间要稍微长一点。

启 动以后可以以root执行oracle start或者oracle stop来启动或停止服务。


 

posted @ 2010-10-27 19:46 风 阅读(222) | 评论 (0) | 编辑 收藏

仅列出标题  下一页
 
Powered by:
BlogJava
Copyright © 风