﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-java要多思考下-随笔分类-技术研究</title><link>http://www.blogjava.net/iduido/category/50485.html</link><description>成长^_^</description><language>zh-cn</language><lastBuildDate>Fri, 16 Aug 2019 07:20:55 GMT</lastBuildDate><pubDate>Fri, 16 Aug 2019 07:20:55 GMT</pubDate><ttl>60</ttl><item><title>【原】mysql5.7安装过程记录</title><link>http://www.blogjava.net/iduido/archive/2019/08/15/434443.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Thu, 15 Aug 2019 07:44:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2019/08/15/434443.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/434443.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2019/08/15/434443.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/434443.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/434443.html</trackback:ping><description><![CDATA[环境：aws-ec2<br />1、下载<br /><div>&nbsp; &nbsp; wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm</div><div><br />2、查看服务器已安装的版本并卸载<br /><div>&nbsp; &nbsp; yum repolist enabled | grep "mysql.*-community.*"<br />&nbsp; &nbsp; 执行后发现安装了8.0<br /><div>&nbsp; &nbsp; rpm -qa | grep -i mysql&nbsp; &nbsp;查看安装了哪些8.0的依赖<br /><div>&nbsp; &nbsp; yum remove mysql-community-libs-compat-8.0.12-1.el7.x86_64<br />&nbsp; &nbsp; .....<br />&nbsp; &nbsp; yum install mysql57-community-release-el7-10.noarch.rpm</div><div>3、安装<br />&nbsp; &nbsp; yum install mysql-community-server<br />4、启动并修改密码<br />&nbsp; &nbsp; service mysqld start<br />&nbsp; &nbsp;netstat -ntl&nbsp; 查看默认端口3306是否成功启动<br />&nbsp; &nbsp;cat /var/log/mysqld.log |grep password&nbsp; &nbsp;查看默认root密码<br />&nbsp; &nbsp;mysql -u root -p<br />&nbsp; &nbsp;alter user user() identified by "fdsafdasfdas@1311231sfsa";<br /></div></div></div></div><img src ="http://www.blogjava.net/iduido/aggbug/434443.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2019-08-15 15:44 <a href="http://www.blogjava.net/iduido/archive/2019/08/15/434443.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】Centos虚拟机安装与设置要点</title><link>http://www.blogjava.net/iduido/archive/2019/08/05/434362.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Mon, 05 Aug 2019 07:56:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2019/08/05/434362.html</guid><description><![CDATA[<div style="display: inline-block;">1、设置-网络适配器--自定义：特定虚拟网络（VMNET8(NAT)模式）<br /><br />2、编辑-虚拟网络编辑器-VMNET8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(NAT模式）--NAT设置：网关IP（设置为本机ipconfig/all所显示的网关ip所在网段的某个ip）<br />&nbsp; &nbsp; &nbsp; &nbsp; 如：ipconfig/all显示：</div><div>&nbsp; &nbsp;IPv4 地址 . . . . . . . . . . . . : 10.10.10.12(首选)</div><div>&nbsp; &nbsp;子网掩码&nbsp; . . . . . . . . . . . . : 255.255.255.0</div><div>&nbsp; &nbsp;默认网关. . . . . . . . . . . . . : 10.10.10.1</div><div>&nbsp; &nbsp;DNS 服务器&nbsp; . . . . . . . . . . . : 10.10.10.1<br />&nbsp; &nbsp; &nbsp; 则设置为：<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 10.10.10.122或10.10.10.133......<br />&nbsp; &nbsp; &nbsp; 同时，子网IP写为：10.10.10.0&nbsp; &nbsp;子网掩码：255.255.255.0<br /><br />3、vi /etc/sysconfig/network-scripts/ifcfg-ens33<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->TYPE=Ethernet<br />PROXY_METHOD=none<br />BROWSER_ONLY=no<br />BOOTPROTO=<span style="color: #0000FF; ">static</span><br />DEFROUTE=yes<br />IPV4_FAILURE_FATAL=no<br />IPV6INIT=yes<br />IPV6_AUTOCONF=yes<br />IPV6_DEFROUTE=yes<br />IPV6_FAILURE_FATAL=no<br />IPV6_ADDR_GEN_MODE=stable-privacy<br />NAME=ens33<br />UUID=ef96c2f5-354a-4a17-a1ea-e0cee6397619<br />DEVICE=ens33<br />ONBOOT=yes<br />IPADDR=10.10.10.132<br />NETMASK=255.255.255.0<br />GATEWAY=10.10.10.122<br />DNS=10.10.10.1</div><br />4、service network restart<br /><br /><div>5、ping baidu.com&nbsp; 通过<br />6、安装更新必要的包<br />yum update<br />yum install lrzsz zip unzip telnet<br /><div>yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel</div></div><div>rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm</div><div>yum install nginx</div><div>yum install git</div><br />7、安装bitcoin程序<br /><div>git clone https://github.com/bitcoin/bitcoin.git</div>cd bitcoin<br />git tag<br /><div>git checkout v0.18.0<br /><div>./autogen.sh</div><div>yum install -y boost-devel qt-devel protobuf-devel qrencode-devel libevent-devel libtool openssl-devel libdb-devel</div><div>./configure&nbsp; (这里可能会失败）</div><div>wget http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz</div><div>tar xf db-4.8.30.NC.tar.gz</div></div><div>cd db-4.8.30.NC/build_unix</div><div><div>&nbsp;../dist/configure --enable-cxx --disable-shared --with-pic --prefix=/home/download/bitcoin/db4/<br />make&nbsp;<br />make install<br />cd bitcoin<br /><div>./configure LDFLAGS="-L/home/download/bitcoin/db4/lib/" CPPFLAGS="-I/home/download/bitcoin/db4/include/"<br />make<br />make install<br /><br /><br /><div>bitcoind -datadir=/home/data/btc -conf=bitcoin.conf&nbsp; -daemon<br /><div>tail -f /home/data/btc/debug.log</div></div></div></div><div></div></div><br /></div><img src ="http://www.blogjava.net/iduido/aggbug/434362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2019-08-05 15:56 <a href="http://www.blogjava.net/iduido/archive/2019/08/05/434362.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】使用FRP代理内网HTTP/TCP服务，方便公司外部访问</title><link>http://www.blogjava.net/iduido/archive/2018/11/13/433488.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Tue, 13 Nov 2018 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2018/11/13/433488.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/433488.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2018/11/13/433488.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/433488.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/433488.html</trackback:ping><description><![CDATA[由于需要在外使用公司内部网络环境，故采用了FRP做了端口转发，以下是一些配置要点：<br /><br /><strong>1、服务端配置</strong><br />&nbsp; &nbsp; 服务器必须是公网服务器，可以在AWS或ALIYUN开通，得到公网IP。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;服务器配置非常简单，只需要修改frps.ini文件，加入以下配置：&nbsp;<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->[common]<br />bind_port&nbsp;=&nbsp;7777&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #服务器监听地址，配合公司内网机器使用<br />vhost_http_port=80&nbsp; &nbsp; &nbsp; #服务器监听80端口<br />vhost_https_port=443&nbsp; &nbsp;#服务器监听443端口，Https<br /></div>&nbsp;<br /><strong>2、客户端配置<br /></strong>&nbsp; &nbsp; 客户端配置复杂度随着业务的复杂度的增加而变大。<br />&nbsp; &nbsp; 客户端配置，修改frpc.ini文件，配置如下：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->[common]<br />server_addr&nbsp;=&nbsp;xxx.xxx.xxx.xx&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#公网服务器的外网IP地址<br />server_port&nbsp;=&nbsp;7777&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #公网服务器的监听地址，同frps.ini中的bind_port配置<br /><br />[ssh]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#暴露公司内网的ssh服务<br />type&nbsp;=&nbsp;tcp&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#选择tcp类型<br />local_ip&nbsp;=&nbsp;127.0.0.1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#内网机器ip,&nbsp; frp客户端程序所在的内网机器<br />local_port&nbsp;=&nbsp;22&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #内网机器允许的ssh服务登录端口<br />remote_port&nbsp;=&nbsp;7022&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#内网机器监听的外网ssh登录端口， 比如在家里访问公司内网服务器，只需要输入 ssh -p 7022 user@xxx.xxx.xxx.xxx即可&nbsp;<br /><br />[web]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #暴露公司内网的git代码托管服务<br />type&nbsp;=&nbsp;http&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #选择http类型<br />local_port&nbsp;=&nbsp;88&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #gitlab本地监听地址，默认是80，需要修改gitlab配置为88或其他端口，以避免与内网nginx端口占用的冲突<br />custom_domains&nbsp;=&nbsp;git.domain.com&nbsp; &nbsp;#外网域名，该域名可以在dns解析到xxx.xxx.xxx.xxx的外网服务器ip上，这样在外就可以通过域名访问公司内部服务&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br /><br />[web2]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #暴露更多的公司内网测试环境服务<br />type&nbsp;=&nbsp;http<br />local_port&nbsp;=&nbsp;80&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #nginx本地监听地址，外网进来的服务通过nginx匹配各种domain来区分请求，转发<br />custom_domains&nbsp;=&nbsp;test.domain.com<br /><br />[web3]<br />type&nbsp;=&nbsp;http<br />local_port&nbsp;=&nbsp;80<br />custom_domains&nbsp;=&nbsp;test2.domain.com<br /><br />[tcp1]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#暴露公司内网的socket服务<br />type&nbsp;=&nbsp;tcp&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#选择tcp类型<br />local_port&nbsp;=&nbsp;1111&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #本地socket监听端口<br />remote_port&nbsp;=&nbsp;1111&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #外网服务器的接收端口<br /><br />[tcp2]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#暴露更多内网socket服务<br />type&nbsp;=&nbsp;tcp<br />local_port&nbsp;=&nbsp;2222<br />remote_port&nbsp;=&nbsp;2222<br /><br />[mysql]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#暴露内网mysql服务<br />type&nbsp;=&nbsp;tcp&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#选择tcp类型<br />local_port&nbsp;=&nbsp;3306&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #mysql监听端口<br />remote_port&nbsp;=&nbsp;3306</div><br /><strong>3、启动服务</strong><br />&nbsp; &nbsp; ./start.sh&nbsp; client启动脚本如下：(server端类似)<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">!/bin/sh</span><span style="color: #008000; "><br /></span><br />PID=`ps&nbsp;aux|grep&nbsp;frp|grep&nbsp;-v&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">grep</span><span style="color: #800000; ">'</span>|awk&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">{print&nbsp;$2}</span><span style="color: #800000; ">'</span>`<br /><span style="color: #0000FF; ">if</span>&nbsp;[&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$PID</span><span style="color: #800000; ">"</span>&nbsp;=&nbsp;<span style="color: #800000; ">""</span>&nbsp;];&nbsp;then<br />&nbsp;echo&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">start frpc now<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.</span><span style="color: #800000; ">'</span><br />&nbsp;./frpc&nbsp;-c&nbsp;./frpc.ini&nbsp;&gt;&nbsp;c.log&nbsp;&amp;<br />&nbsp;sleep&nbsp;2<br />&nbsp;tail&nbsp;-n&nbsp;20&nbsp;c.log<br />&nbsp;echo&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">start&nbsp;finished</span><span style="color: #800000; ">'</span><br /><span style="color: #0000FF; ">else</span><br />&nbsp;echo&nbsp;$PID&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">stop frpc<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #800000; ">'</span><br />&nbsp;kill&nbsp;-9&nbsp;$PID<br />&nbsp;./frpc&nbsp;-c&nbsp;./frpc.ini&nbsp;&gt;&nbsp;client.log&nbsp;&amp;<br />&nbsp;echo&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">start&nbsp;it&nbsp;now<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #800000; ">'</span><br />&nbsp;sleep&nbsp;2<br />&nbsp;tail&nbsp;-n&nbsp;20&nbsp;client.log<br />&nbsp;echo&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">start&nbsp;finished<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #800000; ">'</span><br />fi</div><br /><strong>4、其他问题</strong><br />&nbsp; &nbsp; 1、如果使用了云服务，如aliyun,aws等，需要在安全组中开通以上端口（remote_port）的访问权限，否则外网到内网的链路无法通过。<br />&nbsp; &nbsp; 2、服务端运行后，客户端运行，随后可以通过外网域名直接访问内网服务<br /><br /><br /><br /><img src ="http://www.blogjava.net/iduido/aggbug/433488.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2018-11-13 15:06 <a href="http://www.blogjava.net/iduido/archive/2018/11/13/433488.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】node环境搭建-解决windows环境下各种moudle not found错误，各种模块依赖错误</title><link>http://www.blogjava.net/iduido/archive/2016/05/27/430690.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Fri, 27 May 2016 13:30:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2016/05/27/430690.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/430690.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2016/05/27/430690.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/430690.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/430690.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/iduido/archive/2016/05/27/430690.html'>阅读全文</a><img src ="http://www.blogjava.net/iduido/aggbug/430690.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2016-05-27 21:30 <a href="http://www.blogjava.net/iduido/archive/2016/05/27/430690.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】ubuntu下使用eclipse+pydev搭建python开发环境（numpy,django）</title><link>http://www.blogjava.net/iduido/archive/2015/09/25/427486.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Fri, 25 Sep 2015 03:04:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2015/09/25/427486.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/427486.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2015/09/25/427486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/427486.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/427486.html</trackback:ping><description><![CDATA[一、准备工作：<br />1、eclipse官网下载 eclipse luna&nbsp;<br />2、python官网下载 python2.7<br />3、zlib官网下载 zlib-1.2.8<br />4、下载setuptools,numpy,django<br /><br />二、安装<br />1、安装好eclipse后启动，在help-&gt;eclipse marketplace下查找pydev进行安装<br />2、安装zlib &nbsp;configure,make,make install<br />3、安装python &nbsp;configure,make,make install<br />4、安装setuptools &nbsp;python setup.py build &nbsp;--&gt; &nbsp;python setup.py install<br />5、安装numpy &nbsp; &nbsp;python setup.py install<br />6、安装django &nbsp; &nbsp;python setup.py install<br /><br />三、使用<br />在eclipse中调出PyDev视窗，新建工程：<br />pydev-&gt;module<br />pydev-&gt;django<br /><br />....<br /><br /><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/iduido/aggbug/427486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2015-09-25 11:04 <a href="http://www.blogjava.net/iduido/archive/2015/09/25/427486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】JAVA时区设置及时区不一致带来的奇葩现象</title><link>http://www.blogjava.net/iduido/archive/2015/09/08/427204.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Tue, 08 Sep 2015 15:03:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2015/09/08/427204.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/427204.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2015/09/08/427204.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/427204.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/427204.html</trackback:ping><description><![CDATA[最近项目中实现了一个课程表的功能，核心功能如下：<br />1、需要记录一周里每天每个时段的课程安排，后台录入<br />2、课程开始前，需要自动给课程关注者以各种提醒<br /><br />于是采用了这样的实现方案：<br />1、录入时间只记录当天的时分秒对应的毫秒数（这样入库的时间实际上是1970-01-01 HH:mm:ss）<br />2、定时任务根据当天所在的周数查询当天的课程安排，并将课程时间换算成当天的时间（2015-09-08 HH:mm:ss），然后执行提醒的业务<br /><br />很简单的一个功能，但是因为时区问题出现了以下奇葩现象：<br /><br />比如1970-01-01 10:00:00被最终换算成了1970-01-01 10:30:00<br />也就是说每一个入库时间取出后都增加了不多不少半个小时<br /><br />于是开始看java.util.Date源码，一探究竟，发现有这样一段：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp; &nbsp; &nbsp; BaseCalendar&nbsp;cal&nbsp;=&nbsp;getCalendarSystem(year);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(tzoffset&nbsp;==&nbsp;-1)&nbsp;&nbsp;{&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;no&nbsp;time&nbsp;zone&nbsp;specified,&nbsp;have&nbsp;to&nbsp;use&nbsp;local</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BaseCalendar.Date&nbsp;ldate&nbsp;=&nbsp;(BaseCalendar.Date)&nbsp;cal.newCalendarDate(TimeZone.getDefaultRef());</div><br />注意到TimeZone.getDefaultRef(),源码如下：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;TimeZone&nbsp;getDefault()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(TimeZone)&nbsp;getDefaultRef().clone();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Returns&nbsp;the&nbsp;reference&nbsp;to&nbsp;the&nbsp;default&nbsp;TimeZone&nbsp;object.&nbsp;This<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;method&nbsp;doesn't&nbsp;create&nbsp;a&nbsp;clone.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;TimeZone&nbsp;getDefaultRef()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;TimeZone&nbsp;defaultZone&nbsp;=&nbsp;defaultZoneTL.get();<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(defaultZone&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defaultZone&nbsp;=&nbsp;defaultTimeZone;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(defaultZone&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Need&nbsp;to&nbsp;initialize&nbsp;the&nbsp;default&nbsp;time&nbsp;zone.</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defaultZone&nbsp;=&nbsp;setDefaultZone();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">assert</span>&nbsp;defaultZone&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Don't&nbsp;clone&nbsp;here.</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;defaultZone;<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div><br />推测很有可能问题出在时区的选择设置上，于是打印出来结果如下：<br /><div>sun.util.calendar.ZoneInfo[id="Asia/Harbin",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]</div><div>果然如此，服务器时区错误，于是指出这个错误，让运维修正的。<br />不过还是担心运维层面带来类似的错误，于是手动设置了时区：<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp; TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info("the&nbsp;default&nbsp;timezone&nbsp;info&nbsp;[{}]",&nbsp;TimeZone.getDefault());</div></div><br /><a href="http://www.myhref.com" target="_blank">技术文章收藏站点</a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/iduido/aggbug/427204.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2015-09-08 23:03 <a href="http://www.blogjava.net/iduido/archive/2015/09/08/427204.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】使用redis缓存的实践总结</title><link>http://www.blogjava.net/iduido/archive/2013/04/19/398105.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Fri, 19 Apr 2013 10:49:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2013/04/19/398105.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/398105.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2013/04/19/398105.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/398105.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/398105.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用场景一：高频率使用但不频繁更新的业务数据。使用场景二：高频率使用更新还算频繁的业务数据。使用场景三：高频率使用高频率更新的业务数据。&nbsp;&nbsp;<a href='http://www.blogjava.net/iduido/archive/2013/04/19/398105.html'>阅读全文</a><img src ="http://www.blogjava.net/iduido/aggbug/398105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2013-04-19 18:49 <a href="http://www.blogjava.net/iduido/archive/2013/04/19/398105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】使用spring quartz的两种配置方式（静态设置与动态设置）</title><link>http://www.blogjava.net/iduido/archive/2012/12/06/392528.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Thu, 06 Dec 2012 02:53:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2012/12/06/392528.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/392528.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2012/12/06/392528.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/392528.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/392528.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 两种简单的配置方式，静态设置，可随项目启动而运行，动态设置，可在运行过程中进行。当然，这里只是demo~&nbsp;&nbsp;<a href='http://www.blogjava.net/iduido/archive/2012/12/06/392528.html'>阅读全文</a><img src ="http://www.blogjava.net/iduido/aggbug/392528.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2012-12-06 10:53 <a href="http://www.blogjava.net/iduido/archive/2012/12/06/392528.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】简述WEB项目前端脚本的一次重构历程,labJs,requireJs实践</title><link>http://www.blogjava.net/iduido/archive/2012/11/28/392163.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Wed, 28 Nov 2012 13:38:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2012/11/28/392163.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/392163.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2012/11/28/392163.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/392163.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/392163.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 简述WEB项目前端脚本的一次重构历程,labJs,requireJs实践，一些小经验分享。&nbsp;&nbsp;<a href='http://www.blogjava.net/iduido/archive/2012/11/28/392163.html'>阅读全文</a><img src ="http://www.blogjava.net/iduido/aggbug/392163.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2012-11-28 21:38 <a href="http://www.blogjava.net/iduido/archive/2012/11/28/392163.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】使用webbench进行压力测试过程中的一些疑惑</title><link>http://www.blogjava.net/iduido/archive/2012/07/14/383086.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Sat, 14 Jul 2012 06:17:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2012/07/14/383086.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/383086.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2012/07/14/383086.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/383086.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/383086.html</trackback:ping><description><![CDATA[<span style="color: #800080;"> 一、测试场景(均在Linux下进行)：</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; 服务器A：安装webbench，在此服务器上运行压力测试工具</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; 服务器B：提供web应用服务，运行时架构为Nginx+tomcat</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; 服务器C：提供web应用服务，运行时架构为Nginx+Netty</span><br />
<br />
<span style="color: #800080;">二、测试步骤</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; 1、对B的测试：</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; a.A服务器上执行 webbench -c 5000 http://www.test.com/</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回结果：</span>
<div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: #800080;">5000 clients, running 30 sec.</span><br />
<br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Speed=28962 pages/min, 9879219 bytes/sec.</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Requests: 14481 susceed, 0 failed. </span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 这样看来，似乎压力测试，并发5000个客户端在30秒内执行成功了14481个请求，无失败请求，测试成功</span><br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: #800080;">b.A服务器上执行 webbench -c 5000 http://www.test.com/</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 同时：B服务器上执行 tail -f access.log |grep WebBench|grep 502 和 </span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tail -f access.log |grep WebBench|grep 499</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; A返回结果：基本同a的情况，显示为成功</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; B的控制台中却出现了意外的日志输出：</span><br />
<div><span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 127.0.0.1 - - [14/Jul/2012:14:00:40 +0800] "GET /index.do HTTP/1.0" 502 165 "-" "WebBench 1.5"</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 127.0.0.1 - - [14/Jul/2012:14:00:40 +0800] "GET /index.do HTTP/1.0" 502 165 "-" "WebBench 1.5"</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 127.0.0.1 - - [14/Jul/2012:14:00:40 +0800] "GET /index.do HTTP/1.0" 502 165 "-" "WebBench 1.5"</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 127.0.0.1 - - [14/Jul/2012:14:00:40 +0800] "GET /index.do HTTP/1.0" 502 165 "-" "WebBench 1.5"</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="color: #ff0000;">疑问：为什么会出现这种情况？webbench 压力测试是成功的，而从Nginx日志输出来看，存在着很多502（Bad gateway）和499（client has closed connection）错误</span></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800080;"> .....</span><br />
<span style="color: #800080;">&nbsp;&nbsp;&nbsp;&nbsp; 未完待续，继续研究中...</span></div>
</div>
<a href="http://www.yogaxm.com" target="_blank"><br /></a><u>&nbsp;</u><img src ="http://www.blogjava.net/iduido/aggbug/383086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2012-07-14 14:17 <a href="http://www.blogjava.net/iduido/archive/2012/07/14/383086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】在使用spring mvc+hessian应用时遇到的一个特殊情况的解决方法</title><link>http://www.blogjava.net/iduido/archive/2012/04/11/373831.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Wed, 11 Apr 2012 10:45:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2012/04/11/373831.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/373831.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2012/04/11/373831.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/373831.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/373831.html</trackback:ping><description><![CDATA[<div><strong><span style="color: #800080;">1、有UserController 代码如下：<br /></span></strong><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #000000; ">@Controller<br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; ">@RequestMapping(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">/</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;UserController&nbsp;{<br /></span><span style="color: #008080; ">4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;@RequestMapping(value&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">{userid}</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;method&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;RequestMethod.GET)<br /></span><span style="color: #008080; ">5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;ModelAndView&nbsp;userIndex(@PathVariable&nbsp;Long&nbsp;userid){<br /></span><span style="color: #008080; ">6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ModelAndView(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">userIndex</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).addObject(userid);<br /></span><span style="color: #008080; ">7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">8</span>&nbsp;<span style="color: #000000; ">}</span></div><div><br /><strong style="color: #800080;">2、web.xml中的两处DispatcherServlet配置：</strong></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">user-servlet</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-class</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">org.springframework.web.servlet.DispatcherServlet</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-class</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">load-on-startup</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">load-on-startup</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-mapping</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">user-servlet</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">*.do</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-mapping</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">hessian-servlet</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-class</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">org.springframework.web.servlet.DispatcherServlet</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-class</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">contextConfigLocation</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classpath:spring/hessian-remoting.xml<br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">load-on-startup</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">2</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">load-on-startup</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-mapping</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">hessian-servlet</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">/hessian/*</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servlet-mapping</span><span style="color: #0000FF; ">&gt;</span></div><br /><div><strong style="color: #800080;">3、hessian-remoting.xml中服务配置：</strong></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="/userHessianService"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="org.springframework.remoting.caucho.HessianServiceExporter"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="service"</span><span style="color: #FF0000; ">&nbsp;ref</span><span style="color: #0000FF; ">="userService"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="serviceInterface"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="com.cd.common.UserService"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">bean</span><span style="color: #0000FF; ">&gt;</span></div><br /><div><strong><span style="color: #800080;">4、我预期的结果是：</span></strong><br /><span style="color: #800080;">&nbsp;&nbsp; &nbsp; 当我在浏览器中直接访问hessian服务&#8220;http://localhost/hessian/userHessianService&#8221;时，应该报错：HTTP Status 405 - HessianServiceExporter only supports POST requests</span><br /><span style="color: #800080;">&nbsp;&nbsp; &nbsp; 虽然报错，但可以表明这个请求被hessian服务接收到了。</span><br /><span style="color: #800080;">&nbsp;&nbsp;&nbsp;&nbsp; 而实际情况是：报错为 HTTP Status 400 - The request sent by the client was syntactically incorrect ()</span><br /><br /><strong style="color: #800080;">5、问题出在哪里？</strong><span style="color: #800080;">把web.xml中的user-servlet注释掉，重新启动并访问，能得到预期结果，加上后就不行。</span><br style="color: #800080;" /><span style="color: #800080;">&nbsp;&nbsp;&nbsp;&nbsp; 可以断定问题出来user-servlet相关的程序里，于是还原注释重启并观察spring mvc日志，注意到有如下一段：</span><br style="color: #800080;" /><span style="color: #800080;">&nbsp;&nbsp;&nbsp;&nbsp; 2012-04-11 18:25:36,446 INFO [org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] - Mapped URL path [/{userid}] onto handler 'UserController'</span><br style="color: #800080;" /><span style="color: #800080;">&nbsp;&nbsp;&nbsp;&nbsp; 2012-04-11 18:25:36,446 INFO [org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] - Mapped URL path [/{userid}.*] onto handler 'UserController'</span><br style="color: #800080;" /><span style="color: #800080;">&nbsp;&nbsp;&nbsp;&nbsp; 2012-04-11 18:25:36,446 INFO [org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] - Mapped URL path [/{userid}/] onto handler 'UserController'</span><br style="color: #800080;" /><br style="color: #800080;" /><strong style="color: #800080;">6、分析：</strong><span style="color: #800080;">user-servlet处理*.do的链接，hessian-servlet处理/hessian/*的请求，而从spring mvc映射的url来看，/{userid}(Long类型参数)很可能去匹配了测试链接</span><br style="color: #800080;" /><br style="color: #800080;" /><strong style="color: #800080;"><span style="color: #800080;">7、尝试解决办法：</span></strong><span style="color: #800080;">让spring mvc只映射.do结尾的链接，修改@RequestMapping(value = "{userid}", method = RequestMethod.GET)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为@RequestMapping(value = "{userid}.do", method = RequestMethod.GET)</span><br style="color: #800080;" /><br style="color: #800080;" /><strong style="color: #800080;"><span style="color: #800080;">8、验证结果</span></strong><span style="color: #800080;">，spring mvc加载：[org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] - Mapped URL path [/{userid}.do] onto handler 'UserController'</span><br style="color: #800080;" /><span style="color: #800080;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 访问http://localhost/hessian/userHessianService</span><br style="color: #800080;" /><span style="color: #800080;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结果HTTP Status 405 - HessianServiceExporter only supports POST requests</span><br style="color: #800080;" /><span style="color: #800080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 得到预期结果，测试结束。</span></div><br /><strong><span style="color: #800080;"><u>&nbsp;</u></span></strong></div><img src ="http://www.blogjava.net/iduido/aggbug/373831.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2012-04-11 18:45 <a href="http://www.blogjava.net/iduido/archive/2012/04/11/373831.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】关于跨域ajax调用带来的系列问题及其解决办法</title><link>http://www.blogjava.net/iduido/archive/2012/01/09/368150.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Mon, 09 Jan 2012 08:26:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2012/01/09/368150.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/368150.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2012/01/09/368150.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/368150.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/368150.html</trackback:ping><description><![CDATA[<strong> </strong><div><strong><span style="color: #800080;">1、跨域ajax调用，使用jQuery的getJSON，带上callback=?</span><br /></strong>&nbsp;&nbsp;&nbsp; <strong style="color: #800080;">如：<br /></strong>&nbsp;&nbsp;&nbsp; <strong style="color: #800080;">客户端代码：<br />&nbsp;&nbsp; </strong><strong style="color: #800080;"><br /></strong><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">var</span><span style="color: #000000; ">&nbsp;url&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">http://www.xxxxxx.com/ajax/add.do?callback=?</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">var</span><span style="color: #000000; ">&nbsp;params</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">"</span><span style="color: #000000; ">content</span><span style="color: #000000; ">"</span><span style="color: #000000; ">:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">xxx</span><span style="color: #000000; ">"</span><span style="color: #000000; ">};<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;$.getJSON(url,&nbsp;params,&nbsp;</span><span style="color: #0000FF; ">function</span><span style="color: #000000; ">(data){<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(data.success)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">成功~</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(data.msg);<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;});</span></div>&nbsp;&nbsp;&nbsp; <strong style="color: #800080;">服务端代码：</strong><strong><br />&nbsp;&nbsp;&nbsp; </strong><strong><br /></strong><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;add(String&nbsp;callback,&nbsp;String&nbsp;content){<br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;json&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;buildJson<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;&nbsp;callback&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;json&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}</span></div><strong style="color: #800080;">2、为防止外站恶意调用，增加权限认证过滤器，对未授权跨域调用的域名就行限制<br /></strong><strong><br />&nbsp;&nbsp; </strong><strong style="color: #800080;">&nbsp;过滤/ajax/**的所有连接，使用request.getHeader("REFERER");获取来源地址，并判断其域名是否已授权跨域访问，and so on..<br /><br />3、针对ie浏览器的隐私设置，跨域写cookie无法实现，需要在写cookie时增加<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp; <strong style="color: #800080;">response.setHeader("P3P","CP=CAO PSA OUR");<br />&nbsp;&nbsp; （当然也可以修改ie的隐私策略，但是我们不可能傻傻的去要求用户也这样做，呵呵）</strong><strong><br /><br /></strong></div><strong><div><strong style="color: #800080;">以上是我在项目中遇到的问题，记录于此，有缘人得之，少走弯路</strong><strong style="color: #800080;"><br /> </strong></div><br /></strong><img src ="http://www.blogjava.net/iduido/aggbug/368150.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2012-01-09 16:26 <a href="http://www.blogjava.net/iduido/archive/2012/01/09/368150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】windiows平台下搭建Node.js运行环境</title><link>http://www.blogjava.net/iduido/archive/2011/12/28/367439.html</link><dc:creator>java要多思考下</dc:creator><author>java要多思考下</author><pubDate>Wed, 28 Dec 2011 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/iduido/archive/2011/12/28/367439.html</guid><wfw:comment>http://www.blogjava.net/iduido/comments/367439.html</wfw:comment><comments>http://www.blogjava.net/iduido/archive/2011/12/28/367439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iduido/comments/commentRss/367439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iduido/services/trackbacks/367439.html</trackback:ping><description><![CDATA[<strong><span style="color: #800080;"> </span></strong><div><strong><span style="color: #800080;">&nbsp;&nbsp;&nbsp; 1、下载node-v0.6.1.msi，地址：http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi</span><br /><span style="color: #800080;">&nbsp;&nbsp; &nbsp;2、安装后配置环境变量，在命令行中能直接访问Node.exe</span><br /><span style="color: #800080;">&nbsp;&nbsp; &nbsp;3、下载http://msysgit.googlecode.com/files/Git-1.7.8-preview20111206.exe</span><br /><span style="color: #800080;">&nbsp;&nbsp; &nbsp;4、运行安装，配置环境变量</span><br /><span style="color: #800080;">&nbsp;&nbsp; &nbsp;5、选一个工作目录，执行git clone --recursive git://github.com/isaacs/npm.git 安装NPM</span><br /><span style="color: #800080;">&nbsp;&nbsp; &nbsp;6、进入生成的npm目录，执行node cli.js install npm -gf </span><br /><span style="color: #800080;">&nbsp;&nbsp; &nbsp;7、最后执行npm install underscore </span></strong></div><img src ="http://www.blogjava.net/iduido/aggbug/367439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iduido/" target="_blank">java要多思考下</a> 2011-12-28 17:32 <a href="http://www.blogjava.net/iduido/archive/2011/12/28/367439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>