??xml version="1.0" encoding="utf-8" standalone="yes"?>8v天堂国产在线一区二区,欧美美乳视频网站在线观看,三级av在线播放http://www.aygfsteel.com/jlin/category/54582.htmlzh-cnThu, 13 Dec 2018 20:57:37 GMTThu, 13 Dec 2018 20:57:37 GMT60记录一ơkafka-manager1.3.3.18 Consumers is not display with kafka2.1.0 versionhttp://www.aygfsteel.com/jlin/archive/2018/12/13/433545.htmlflyflyThu, 13 Dec 2018 07:36:00 GMThttp://www.aygfsteel.com/jlin/archive/2018/12/13/433545.htmlhttp://www.aygfsteel.com/jlin/comments/433545.htmlhttp://www.aygfsteel.com/jlin/archive/2018/12/13/433545.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/433545.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/433545.html阅读全文

fly 2018-12-13 15:36 发表评论
]]>
@RequestParam与@PathVariable的区别(转)http://www.aygfsteel.com/jlin/archive/2018/08/22/433344.htmlflyflyWed, 22 Aug 2018 03:05:00 GMThttp://www.aygfsteel.com/jlin/archive/2018/08/22/433344.htmlhttp://www.aygfsteel.com/jlin/comments/433344.htmlhttp://www.aygfsteel.com/jlin/archive/2018/08/22/433344.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/433344.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/433344.html?a title="Java EE知识? target="_blank" style="margin: 0px; padding: 0px; color: #000000;">spring MVC中,两者的作用都是request里的参数的值绑定到contorl里的Ҏ参数里的Q区别在于,URL写法不同?/p>

使用@RequestParamӞURL是这LQhttp://host:port/path?参数?参数?br style="margin: 0px; padding: 0px;" />

使用@PathVariableӞURL是这LQhttp://host:port/path/参数?br style="margin: 0px; padding: 0px;" />

例如Q?/p>

 

[java] view plain copy
 
  1. @RequestMapping(value="/user",method = RequestMethod.GET)  
  2.    public @ResponseBody  
  3.    User printUser(@RequestParam(value = "id", required = false, defaultValue = "0")  
  4.    int id) {  
  5.     User user = new User();  
  6.        user = userService.getUserById(id);  
  7.        return user;  
  8.    }  
  9.      
  10.    @RequestMapping(value="/user/{id}",method = RequestMethod.GET)  
  11.    public @ResponseBody  
  12.    User printUser2(@PathVariable int id) {  
  13.        User user = new User();  
  14.        user = userService.getUserById(id);  
  15.        return user;  
  16.    }  


 

 

上面两个ҎQ访问\径分别如下:

 




fly 2018-08-22 11:05 发表评论
]]>
Spring3中js/css/jpg/gif{静态资源无法找刎ͼNo mapping found for HTTP request with URIQ问?/title><link>http://www.aygfsteel.com/jlin/archive/2018/01/30/433031.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Tue, 30 Jan 2018 08:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/jlin/archive/2018/01/30/433031.html</guid><wfw:comment>http://www.aygfsteel.com/jlin/comments/433031.html</wfw:comment><comments>http://www.aygfsteel.com/jlin/archive/2018/01/30/433031.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jlin/comments/commentRss/433031.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jlin/services/trackbacks/433031.html</trackback:ping><description><![CDATA[<p style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial;">我们在用spring3的时候,如果使用了注解的话,我们会发玎ͼ有时候我们界面的js/css/jpg/gif{文件会出现找不到的情况Q然而检查引用\径,发现无论是绝对\径还是相对\径,都没错。这下我们就U结了,到底是什么问题呢Q?/span></p><p style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial;">g我也是苦思良久,不经意间看到了后台的日志Q才发现是spring搞的鬹{?/span></p><p style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial;"><br style="box-sizing: border-box;" /></span></p><p style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial;">报错信息Q?span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #ff0000;"><No mapping found for HTTP request with URI [/sandDemo001/images/1.jpg] in DispatcherServlet with name 'spring'></span></span></p><p style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #ff0000;"><br style="box-sizing: border-box;" /></span></span></p><p style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial;"><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #330033;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #ff0000; font-size: 18px;"><strong style="box-sizing: border-box;">解决Ҏ1</strong></span>Q?span style="box-sizing: border-box; margin: 0px; padding: 0px; font-size: 14px;"><strong style="box-sizing: border-box;">在spring的配|修?/strong></span></span><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #330033;">web.xml<span style="box-sizing: border-box; margin: 0px; padding: 0px; font-size: 14px;"><strong style="box-sizing: border-box;">下对</strong></span>spring<span style="box-sizing: border-box; margin: 0px; padding: 0px; font-size: 14px;"><strong style="box-sizing: border-box;">?/strong></span>DispatcherServlet<span style="box-sizing: border-box; margin: 0px; padding: 0px; font-size: 14px;"><strong style="box-sizing: border-box;">h</strong></span>url<span style="box-sizing: border-box; margin: 0px; padding: 0px; font-size: 14px;"><strong style="box-sizing: border-box;">映射的配|,先来看看原配|?/strong></span>Q?/span><br style="box-sizing: border-box;" /></span></span></span></p><div bg_html"="" style="box-sizing: border-box; position: relative; overflow-y: hidden; width: 851.391px; color: #454545;"><div style="box-sizing: border-box; margin: 0px;"><div style="box-sizing: border-box; margin: 0px; border-right: 1px solid #e7e5dc;"><strong style="box-sizing: border-box;">[html]</strong> <a title="view plain" style="box-sizing: border-box; background-image: url("../images/ico_plain.gif"); background-position: left top; background-repeat: no-repeat; padding: 1px; outline: 0px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px;">view plain</a><span data-mod="popu_168" style="box-sizing: border-box; margin: 0px; padding: 0px;"> <a title="copy" style="box-sizing: border-box; background-image: url("../images/ico_copy.gif"); background-position: left top; background-repeat: no-repeat; padding: 1px; outline: 0px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px;">copy</a><div style="box-sizing: border-box; margin: 0px; position: absolute; left: 259px; top: 453px; width: 16px; height: 16px; z-index: 99;"></div></span></div></div><ol start="1" style="box-sizing: border-box; border-right: 1px solid #e7e5dc;"><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">    <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">spring</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">    <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-class</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">org.springframework.web.servlet.DispatcherServlet</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-class</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">    <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">load-on-startup</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">1</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">load-on-startup</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"> <span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"> <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-mapping</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">        <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">spring</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">        <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">url-pattern</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">/</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">url-pattern</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"> <span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-mapping</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li></ol></div><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #330033;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial;"><servlet-mapping></span><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial;">?/span><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial;"><url-pattern>/</url-pattern></span></span><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #330033;">把所有的h都交lspringd理了Q而所有available的请求url都是在Constroller里用类似@RequestMapping(value = "/login/{user}", method = RequestMethod.GET)q样的注解配|的Q这L话对js/css/jpg/gif{静态资源的讉K׃得不到。所以,?span style="box-sizing: border-box; margin: 0px; padding: 0px;">web.xml里添加如下的配置可以解册问题了?/span></span></span></span><p style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"></p><p style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial;"><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #330033;"></span></span></span></span></span></span></p><div bg_html"="" style="box-sizing: border-box; position: relative; overflow-y: hidden; width: 851.391px; color: #454545;"><div style="box-sizing: border-box; margin: 0px;"><div style="box-sizing: border-box; margin: 0px; border-right: 1px solid #e7e5dc;"><strong style="box-sizing: border-box;">[html]</strong> <a title="view plain" style="box-sizing: border-box; background-image: url("../images/ico_plain.gif"); background-position: left top; background-repeat: no-repeat; padding: 1px; outline: 0px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px;">view plain</a><span data-mod="popu_168" style="box-sizing: border-box; margin: 0px; padding: 0px;"> <a title="copy" style="box-sizing: border-box; background-image: url("../images/ico_copy.gif"); background-position: left top; background-repeat: no-repeat; padding: 1px; outline: 0px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px;">copy</a><div style="box-sizing: border-box; margin: 0px; position: absolute; left: 259px; top: 754px; width: 16px; height: 16px; z-index: 99;"></div></span></div></div><ol start="1" style="box-sizing: border-box; border-right: 1px solid #e7e5dc;"><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-mapping</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">     <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">default</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">     <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">url-pattern</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">*.css</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">url-pattern</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-mapping</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">   </span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"><span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-mapping</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">    <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">default</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">    <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">url-pattern</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">*.gif</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">url-pattern</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">  </span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"> <span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-mapping</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">      </span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"> <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-mapping</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">     <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">default</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">     <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">url-pattern</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">*.jpg</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">url-pattern</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"> <span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-mapping</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">      </span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"> <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-mapping</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">     <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">default</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-name</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;">     <span style="box-sizing: border-box; font-weight: 700; color: #993300;"><</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">url-pattern</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">*.js</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">url-pattern</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li><li style="box-sizing: border-box; line-height: 18px;"><span style="box-sizing: border-box;"> <span style="box-sizing: border-box; font-weight: 700; color: #993300;"></</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">servlet-mapping</span><span style="box-sizing: border-box; font-weight: 700; color: #993300;">></span><span style="box-sizing: border-box;">  </span></span></li></ol></div><p style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"></p><p style="box-sizing: border-box; margin: 10px 0px; padding: 0px; color: #454545; background-color: #ffffff; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px;"><strong style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-weight: 400; font-family: Arial; color: #ff0000; font-size: 18px;">解决Ҏ2Q?span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #000000; font-size: 14px;">在spring的配|文件中d如下一行:</span></span></strong></strong></p><p style="box-sizing: border-box; margin: 10px 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"><strong style="box-sizing: border-box;"></strong><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #660000; font-size: 14px;"><strong style="box-sizing: border-box;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-weight: 400; color: #006699;"><mvc:default-servlet-handler/></span></strong></span></p><p style="box-sizing: border-box; margin: 10px 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #660000; font-size: 14px;">注意Q需要是spring3.0.5以上版本</span></p><br style="box-sizing: border-box; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;" /><span style="box-sizing: border-box; margin: 0px; padding: 0px; background-color: #ffffff; color: #ff0000; font-family: Arial; font-size: 18px;"><strong style="box-sizing: border-box;">解决Ҏ3Q?/strong></span><span style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; background-color: #ffffff; font-family: Arial;"><strong style="box-sizing: border-box;">在spring的配|文件中d如下一行:</strong></span><br style="box-sizing: border-box; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;" /><p style="box-sizing: border-box; margin: 0px; padding: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff;"><span style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: Arial; color: #330033;"></span></p><div style="box-sizing: border-box; margin: 0px; color: #454545; font-family: "PingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun; font-size: 16px; background-color: #ffffff; overflow: hidden;"><!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --><br style="box-sizing: border-box;" /> <br style="box-sizing: border-box;" /> <mvc:resources mapping="/resources/**" location="/resources/" /> <br style="box-sizing: border-box;" />  <br style="box-sizing: border-box;" />q个配置告诉spring 静态资源的处理方式<br /><br />转: <span style="font-family: verdana, "courier new"; font-size: 14px;">http://blog.csdn.net/miss_kun/article/details/52047381</span></div><div></div><img src ="http://www.aygfsteel.com/jlin/aggbug/433031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jlin/" target="_blank">fly</a> 2018-01-30 16:16 <a href="http://www.aygfsteel.com/jlin/archive/2018/01/30/433031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一致性hash法(JAVA)-?/title><link>http://www.aygfsteel.com/jlin/archive/2017/09/26/432831.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Mon, 25 Sep 2017 16:20:00 GMT</pubDate><guid>http://www.aygfsteel.com/jlin/archive/2017/09/26/432831.html</guid><wfw:comment>http://www.aygfsteel.com/jlin/comments/432831.html</wfw:comment><comments>http://www.aygfsteel.com/jlin/archive/2017/09/26/432831.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jlin/comments/commentRss/432831.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jlin/services/trackbacks/432831.html</trackback:ping><description><![CDATA[<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 />-->Java代码 <br /><span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> ConsistentHash<T> {  <br />  <br />       <span style="color: #0000FF; ">private</span> <span style="color: #0000FF; ">final</span> HashFunction hashFunction;  <br />       <span style="color: #0000FF; ">private</span> <span style="color: #0000FF; ">final</span> <span style="color: #0000FF; ">int</span> numberOfReplicas;  <br />       <span style="color: #0000FF; ">private</span> <span style="color: #0000FF; ">final</span> SortedMap<Integer, T> circle = <span style="color: #0000FF; ">new</span> TreeMap<Integer, T>();  <br />  <br />       <span style="color: #0000FF; ">public</span> ConsistentHash(HashFunction hashFunction, <span style="color: #0000FF; ">int</span> numberOfReplicas, Collection<T> nodes) {  <br />             <span style="color: #0000FF; ">this</span> .hashFunction = hashFunction;  <br />             <span style="color: #0000FF; ">this</span> .numberOfReplicas = numberOfReplicas;  <br />  <br />             <span style="color: #0000FF; ">for</span> (T node : nodes) {  <br />                  add(node);  <br />            }  <br />      }  <br />  <br />       <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> add(T node) {  <br />             <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">int</span> i = 0; i < numberOfReplicas; i++) {  <br />                   circle .put(hashFunction .hash(node.toString() + i), node);  <br />            }  <br />      }  <br />  <br />       <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">void</span> remove(T node) {  <br />             <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">int</span> i = 0; i < numberOfReplicas; i++) {  <br />                   circle .remove(hashFunction .hash(node.toString() + i));  <br />            }  <br />      }  <br />  <br />       <span style="color: #0000FF; ">public</span> T get(Object key) {  <br />             <span style="color: #0000FF; ">if</span> (circle .isEmpty()) {  <br />                   <span style="color: #0000FF; ">return</span> <span style="color: #0000FF; ">null</span> ;  <br />            }  <br />             <span style="color: #0000FF; ">int</span> hash = hashFunction .hash(key);  <br />             <span style="color: #008000; ">//</span><span style="color: #008000; "> System.out.println("hash---: " + hash);  </span><span style="color: #008000; "><br /></span>             <span style="color: #0000FF; ">if</span> (!circle .containsKey(hash)) {  <br />                  SortedMap<Integer, T> tailMap = circle .tailMap(hash);  <br />                  hash = tailMap.isEmpty() ? circle .firstKey() : tailMap.firstKey();  <br />            }  <br />             <span style="color: #008000; ">//</span><span style="color: #008000; "> System.out.println("hash---: " + hash);  </span><span style="color: #008000; "><br /></span>             <span style="color: #0000FF; ">return</span> circle .get(hash);  <br />      }  <br />  <br />       <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">class</span> HashFunction {  <br />             <span style="color: #0000FF; ">int</span> hash(Object key) {<br />                   <span style="color: #008000; ">//</span><span style="color: #008000; ">md5加密后,hashcode</span><span style="color: #008000; "><br /></span>                   <span style="color: #0000FF; ">return</span> Md5Encrypt.md5(key.toString()).hashCode();  <br />            }  <br />      }  <br />  <br />       <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">void</span> main(String [] args) {  <br />            HashSet< String> set = <span style="color: #0000FF; ">new</span> HashSet< String>();  <br />            set.add( "A" );  <br />            set.add( "B" );  <br />            set.add( "C" );  <br />            set.add( "D" );  <br />  <br />            Map< String, Integer> map = <span style="color: #0000FF; ">new</span> HashMap< String, Integer>();  <br />  <br />            ConsistentHash< String> consistentHash = <span style="color: #0000FF; ">new</span> ConsistentHash<String>( <span style="color: #0000FF; ">new</span> HashFunction(), 1000, set);  <br />  <br />             <span style="color: #0000FF; ">int</span> count = 10000;  <br />  <br />             <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">int</span> i = 0; i < count; i++) {  <br />                   String key = consistentHash.get(i);  <br />                   <span style="color: #0000FF; ">if</span> (map.containsKey(key)) {  <br />                        map.put(consistentHash.get(i), map.get(key) + 1);  <br />                  } <span style="color: #0000FF; ">else</span> {  <br />                        map.put(consistentHash.get(i), 1);  <br />                  }  <br />                   <span style="color: #008000; ">//</span><span style="color: #008000; "> System.out.println(key);  </span><span style="color: #008000; "><br /></span>            }  <br />  <br />             showServer(map);  <br />            map.clear();  <br />            consistentHash.remove( "A" );  <br />  <br />            System. out .println("------- remove A" );  <br />  <br />             <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">int</span> i = 0; i < count; i++) {  <br />                   String key = consistentHash.get(i);  <br />                   <span style="color: #0000FF; ">if</span> (map.containsKey(key)) {  <br />                        map.put(consistentHash.get(i), map.get(key) + 1);  <br />                  } <span style="color: #0000FF; ">else</span> {  <br />                        map.put(consistentHash.get(i), 1);  <br />                  }  <br />                   <span style="color: #008000; ">//</span><span style="color: #008000; "> System.out.println(key);  </span><span style="color: #008000; "><br /></span>            }  <br />  <br />             showServer(map);  <br />            map.clear();  <br />            consistentHash.add( "E" );  <br />            System. out .println("------- add E" );  <br />  <br />             <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">int</span> i = 0; i < count; i++) {  <br />                   String key = consistentHash.get(i);  <br />                   <span style="color: #0000FF; ">if</span> (map.containsKey(key)) {  <br />                        map.put(consistentHash.get(i), map.get(key) + 1);  <br />                  } <span style="color: #0000FF; ">else</span> {  <br />                        map.put(consistentHash.get(i), 1);  <br />                  }  <br />                   <span style="color: #008000; ">//</span><span style="color: #008000; "> System.out.println(key);  </span><span style="color: #008000; "><br /></span>            }  <br />  <br />             showServer(map);  <br />            map.clear();  <br />  <br />            consistentHash.add( "F" );  <br />            System. out .println("------- add F服务?nbsp; 业务量加? );  <br />            count = count * 2;  <br />             <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">int</span> i = 0; i < count; i++) {  <br />                  String key = consistentHash.get(i);  <br />                   <span style="color: #0000FF; ">if</span> (map.containsKey(key)) {  <br />                        map.put(consistentHash.get(i), map.get(key) + 1);  <br />                  } <span style="color: #0000FF; ">else</span> {  <br />                        map.put(consistentHash.get(i), 1);  <br />                  }  <br />                   <span style="color: #008000; ">//</span><span style="color: #008000; "> System.out.println(key);  </span><span style="color: #008000; "><br /></span>            }  <br />  <br />             showServer(map);  <br />  <br />      }  <br />  <br />       <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">void</span> showServer(Map<String , Integer> map) {  <br />             <span style="color: #0000FF; ">for</span> (Entry<String, Integer> m : map.entrySet()) {  <br />                  System. out .println("服务?nbsp;" + m.getKey() + "----" + m.getValue() + "? );  <br />            }  <br />      }  <br />  <br />} </div><img src ="http://www.aygfsteel.com/jlin/aggbug/432831.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jlin/" target="_blank">fly</a> 2017-09-26 00:20 <a href="http://www.aygfsteel.com/jlin/archive/2017/09/26/432831.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]FastDFSQ?Q:Centos7 安装FastDFS+nginx module(?http://www.aygfsteel.com/jlin/archive/2015/12/15/428661.htmlflyflyTue, 15 Dec 2015 06:22:00 GMThttp://www.aygfsteel.com/jlin/archive/2015/12/15/428661.htmlhttp://www.aygfsteel.com/jlin/comments/428661.htmlhttp://www.aygfsteel.com/jlin/archive/2015/12/15/428661.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/428661.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/428661.html本文原文q接: http://blog.csdn.net/freewebsys/article/details/45150941 转蝲h明出处!

1Q关于FastDFS

摘自Q?a style="text-decoration: none; color: #000000;">http://www.oschina.net/p/fastdfs 
FastDFS是一个开源的分布式文件系l,她对文gq行理Q功能包括:文g存储、文件同步、文件访问(文g上传、文件下载){,解决了大定w存储和负载均衡的问题。特别适合以文件ؓ载体的在U服务,如相册网站、视频网站等{?/p>

FastDFS服务端有两个角色Q跟t器QtrackerQ和存储节点QstorageQ。跟t器主要做调度工作,在访问上赯载均衡的作用?/p>

存储节点存储文gQ完成文件管理的所有功能:存储、同步和提供存取接口QFastDFS同时Ҏ件的meta dataq行理。所谓文件的meta data是文g的相兛_性,以键值对Qkey value pairQ方式表C,如:width=1024Q其中的key为widthQvalue?024。文件meta data是文件属性列表,可以包含多个键值对?/p>

GitHubQ?a style="text-decoration: none; color: #000000;">https://github.com/happyfish100/fastdfs 
一个写的不错的博客Q?a style="text-decoration: none; color: #000000;">http://tech.uc.cn/?p=221

2Q安装FastDFS

参考文档: 
https://github.com/happyfish100/fastdfs/blob/master/INSTALL

2.1Q安装编译工?/h4>
yum -y groupinstall 'Development Tools'  yum -y install wget 

2.2Q安装libfastcommoncd

必须先按照这个,否则报错Q?/p>

cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O -DDEBUG_FLAG -DOS_LINUX -DIOEVENT_USE_EPOLL -c -o ../common/fdfs_global.o ../common/fdfs_global.c  -I../common -I/usr/include/fastcommon ../common/fdfs_global.c:20:20: fatal error: logger.h: No such file or directory  #include "logger.h"                     ^ compilation terminated. ........

直接下蝲安装卛_Q?/p>

wget https://github.com/happyfish100/libfastcommon/archive/master.zip unzip master.zip cd libfastcommon-master ./make.sh ./make.sh install

2.3Q安装FastDFS

wget  https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz tar -zxvf V5.05.tar.gz  cd fastdfs-5.05/ ./make.sh ./make.sh install 

2.4Q启动FastDFS

安装之后配置文g在目?etc/fdfs?/p>

mv storage.conf.sample  storage.conf mv tracker.conf.sample tracker.conf

首先修改配置文gQ?nbsp;
/etc/fdfs/tracker.confQ修改\径到/data/fdfs目录?/p>

# the base path to store data and log files base_path=/data/fdfs

启动Q?nbsp;
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

修改配置文gQ?nbsp;
/etc/fdfs/storage.confQ修改\径到/data/fdfs目录Q同旉|tracker_server地址?/p>

# the base path to store data and log files base_path=/data/fdfs # tracker_server can ocur more than once, and tracker_server format is #  "host:port", host can be hostname or ip address tracker_server=192.168.1.36:22122 # store_path#, based 0, if store_path0 not exists, it's value is base_path # the paths must be exist store_path0=/data/fdfs #store_path1=/home/yuqing/fastdfs2

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

启动的时候,看日志没有错误就说明启动成功?nbsp;
查看fdfsq程Q?/p>

#ps -ef | grep fdfs root     19880     1  0 21:42 ?        00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start root     20050     1  0 22:08 ?        00:00:00 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start root     20060 19915  0 22:08 pts/1    00:00:00 grep --color=auto fdfs

2.5 安装nginx + lua + fastdfs module 
下蝲fastdfs-nginx-module模块 
https://github.com/happyfish100/fastdfs-nginx-module 
下蝲openresty nginx +lua?/p>

wget https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip unzip fastdfs-nginx-module-master.zip wget http://openresty.org/download/ngx_openresty-1.7.10.1.tar.gz tar -zxvf ngx_openresty-1.7.10.1.tar.gz

~译安装Q这里注意下Q需要增加参数?nbsp;
一个是stub_statusl计模块Q一个是realip模块?nbsp;
参考地址Q?nbsp;
http://blog.danielss.com/?p=80 
http://wiki.nginx.org/HttpRealipModuleChs

yum -y install pcre-devel openssl openssl-devel cd ngx_openresty-1.7.10.1 ./configure --with-luajit --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=/root/fastdfs-nginx-module-master/src  gmake gmake install

nginx +lua安装路径Q?/p>

  nginx path prefix: "/usr/local/openresty/nginx"   nginx binary file: "/usr/local/openresty/nginx/sbin/nginx"   nginx configuration prefix: "/usr/local/openresty/nginx/conf"   nginx configuration file: "/usr/local/openresty/nginx/conf/nginx.conf"   nginx pid file: "/usr/local/openresty/nginx/logs/nginx.pid"   nginx error log file: "/usr/local/openresty/nginx/logs/error.log"   nginx http access log file: "/usr/local/openresty/nginx/logs/access.log"

启动Q重启nginx

#启动 /usr/local/openresty/nginx/sbin/nginx #重启  /usr/local/openresty/nginx/sbin/nginx -s restart

3Q测试FastDFS

配置服务Q?/p>

cd /etc/fdfs mv client.conf.sample client.conf

修改配置Q?/p>

# the base path to store log files base_path=/data/fdfs  # tracker_server can ocur more than once, and tracker_server format is #  "host:port", host can be hostname or ip address tracker_server=192.168.1.36:22122

配置nginxQ?/p>

cp /root/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/ mkdir /data/ngx

修改mod_fastdfs.conf配置文gQ修改tracker端口Q否则nginx启动不了。\径也必须修改Q否则找不到文g?/p>

# the base path to store log files base_path=/data/ngx # FastDFS tracker_server can ocur more than once, and tracker_server format is #  "host:port", host can be hostname or ip address # valid only when load_fdfs_parameters_from_tracker is true tracker_server=192.168.1.36:22122 # store_path#, based 0, if store_path0 not exists, it's value is base_path # the paths must be exist # must same as storage.conf store_path0=/data/fdfs

拯配置文gQ否则nginx启动不了Q报错:

[2015-04-28 11:30:14] ERROR - file: ini_file_reader.c, line: 315, include file "http.conf" not exists, line: "#include http.conf" [2015-04-28 11:30:14] ERROR - file: /root/fastdfs-nginx-module-master/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2 2015/04/28 11:30:14 [alert] 19969#0: worker process 2753 exited with fatal code 2 and cannot be respawned 

解决办法Q?/p>

cp /root/fastdfs-master/conf/http.conf /root/fastdfs-master/conf/mime.types  /etc/fdfs

nginx配置修改vi /usr/local/openresty/nginx/conf/nginx.conf

    server {         listen       80;         server_name  localhost;          charset utf8;          location /M00 {                 alias /data/fdfs/data;                 ngx_fastdfs_module;         }    ......

创徏q接

ln -s /data/fdfs/data /data/fdfs/data/M00

重启nginx?nbsp;
试命oQ?/p>

echo "test fastdfs" > test.html  /usr/bin/fdfs_test /etc/fdfs/client.conf upload test.html

上传成功Q执行结果:

 This is FastDFS client test program v5.05  Copyright (C) 2008, Happy Fish / YuQing  FastDFS may be copied only under the terms of the GNU General Public License V3, which may be found in the FastDFS source kit. Please visit the FastDFS Home Page http://www.csource.org/ for more detail.  [2015-04-25 18:06:09] DEBUG - base_path=/data/fdfs, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0  tracker_query_storage_store_list_without_group:         server 1. group_name=, ip_addr=192.168.1.36, port=23000  group_name=group1, ip_addr=192.168.1.36, port=23000 storage_upload_by_filename group_name=group1, remote_filename=M00/00/00/wKgC1FU7ZxGAF19vAAAADcvBslg01.html source ip address: 192.168.1.36 file timestamp=2015-04-25 18:06:09 file size=13 file crc32=3418468952 example file url: http://192.168.1.36/group1/M00/00/00/wKgC1FU7ZxGAF19vAAAADcvBslg01.html storage_upload_slave_by_filename group_name=group1, remote_filename=M00/00/00/wKgC1FU7ZxGAF19vAAAADcvBslg01_big.html source ip address: 192.168.1.36 file timestamp=2015-04-25 18:06:09 file size=13 file crc32=3418468952 example file url: http://192.168.1.36/group1/M00/00/00/wKgC1FU7ZxGAF19vAAAADcvBslg01_big.html

试讉KQ?/p>

curl http://192.168.1.36/M00/00/00/wKgC1FU7ZxGAF19vAAAADcvBslg01_big.html

如果q回“test fastdfs”说明配置成功。上面的每一步修攚w要正才可以?/p>

查看nginx错误日志Q?nbsp;
tail -f /usr/local/openresty/nginx/logs/error.log

4Qȝ

FastDFS非常好的分布式文件系l。配|简单,可以多机器部|Ԍ同时官方l了一个Nginx模块Q可以直接用nginx讉KQ非常方ѝ这样减了中间的tomcat层,效率高?nbsp;
接下来l研Ilua的图片压~。直接在nginx层进行图片压~。效率更高,同时囄dFastDFS的文件?/p>

fly 2015-12-15 14:22 发表评论
]]>
proxool详细配置http://www.aygfsteel.com/jlin/archive/2015/01/28/422501.htmlflyflyWed, 28 Jan 2015 03:30:00 GMThttp://www.aygfsteel.com/jlin/archive/2015/01/28/422501.htmlhttp://www.aygfsteel.com/jlin/comments/422501.htmlhttp://www.aygfsteel.com/jlin/archive/2015/01/28/422501.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/422501.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/422501.html阅读全文

fly 2015-01-28 11:30 发表评论
]]>
Transaction has been rolled back because it has been marked as rollback(?http://www.aygfsteel.com/jlin/archive/2014/12/20/421587.htmlflyflySat, 20 Dec 2014 06:23:00 GMThttp://www.aygfsteel.com/jlin/archive/2014/12/20/421587.htmlhttp://www.aygfsteel.com/jlin/comments/421587.htmlhttp://www.aygfsteel.com/jlin/archive/2014/12/20/421587.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/421587.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/421587.html框架采用的是spring理声明式事务,q几天业务开发时遇到了点ȝQ记录下备忘?/p>

 

 场景Q在ServicecM使用子事?saveponit)Ӟ当子事务抛出异常后,此异常处理掉不l往外抛Qspring在提交主事务时会抛出

org.springframework.transaction.UnexpectedRollbackException: Transaction has been rolled back because it has been marked as rollback

 

 Ҏ调用l构Q?/p>

      假若有A、B、C三个Servicec,其实例对象分别ؓa、b、c,cd别定义如下:

 

            A {

                    Ҏ() {                   //propagation="REQUIRED"

  try{

 

                                b.Ҏ();

   } catch (Exception e) {

           }

                    }      

   }

 

            B{

                     savePointҎ() {  //propagation="NESTED"

   c.Ҏ(); //如果q里边的操作全是普通类Q不是Servicec)操作Q不会有问题?/p>

                     }

             }

 

 

            C{

                      Ҏ() {                 //propagation="REQUIRED"

  throw new Exception("出错");

     }

 

              }

 

 

   通过调试spring源码 

           ......

           Getting transaction for [A.Ҏ] .....

           ......

   Creating nested transaction with name [B.savePointҎ]........

   ......

           Participating in existing transaction

           Getting transaction for [C.Ҏ]

           ........

   Participating transaction failed - marking existing transaction as rollback-only

           //此时Q已把主事务标记成了rollback-only

 

           所以,当在a.Ҏ完成时提交事务时会报Transaction has been rolled back because it has been marked as rollback错误?/p>

 

           认真的您可能会发玎ͼ?org.springframework.transaction.support.AbstractPlatformTransactionManager 中有个叫

isGlobalRollbackOnParticipationFailure的参敎ͼ默认是true.

 

          源码中说明:

 

        Switch this to "false" to let the transaction originator make the rollback decision. If a participating transaction fails with an exception, the caller can still decide to continue with a different path within the transaction. However, note that this will only work as long as all participating resources are capable of continuing towards a transaction commit even after a data access failure: This is generally not the case for a Hibernate Session, for example; neither is it for a sequence of JDBC insert/update/delete operations.

 

          大意是:如果isGlobalRollbackOnParticipationFailure为false,则会让主事务军_回滚Q如果当遇到exception加入事务p|Ӟ调用者能l箋在事务内军_是回滚还是l。然而,要注意是那样做仅仅适用于在数据讉Kp|的情况下且只要所有操作事务能提交?/p>

 

        

    初步解决ҎQ?/p>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> <property name="globalRollbackOnParticipationFailure" value="false" /> <!--指定此参Cؓfalse-->

</bean>

 

 

    l测试,此问题暂时得到解冻I不知道会不会引v其它问题Q至目前还没有发现其它异常。您若通过此方案解决之后出C新的问题L信回复,我们一起交,非常感谢Q?/p>

 



fly 2014-12-20 14:23 发表评论
]]>
jaxb的解析xml和生成xml列子http://www.aygfsteel.com/jlin/archive/2014/12/11/421277.htmlflyflyThu, 11 Dec 2014 06:44:00 GMThttp://www.aygfsteel.com/jlin/archive/2014/12/11/421277.htmlhttp://www.aygfsteel.com/jlin/comments/421277.htmlhttp://www.aygfsteel.com/jlin/archive/2014/12/11/421277.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/421277.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/421277.html
<?xml version="1.0" encoding="UTF-8"?>
<trans>
<tran>
<requestId>111111</requestId>
<orderNo>13141322</orderNo>
<returnCode>000001</returnCode>
<returnInfo>交易p|</returnInfo>
</tran>
<tran>
<requestId>2222222</requestId>
<orderNo>13141323</orderNo>
<returnCode>000000</returnCode>
<returnInfo>交易成功</returnInfo>
</tran>
</trans>
建立对应的JAVA beanc?br />
Trans.javac?/div>
package com.jaxb.test;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "trans")
@XmlAccessorType(XmlAccessType.FIELD)
public class Trans{
@XmlElement(name = "tran")
private List<Tran> data = null;
public List<Tran> getData() {
return data;
}
public void setData(List<Tran> data) {
this.data = data;
}
}
Tran.javac?/div>
package com.jaxb.test;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
@XmlAccessorType(XmlAccessType.FIELD)
public class Tran {
@XmlElement(name = "requestId")
private Long requestId;
@XmlElement(name = "orderNo")
private Long orderNo;
@XmlElement(name = "returnCode")
private String returnCode;
@XmlElement(name = "returnInfo")
private String returnInfo;
public Long getRequestId() {
return requestId;
}
public void setRequestId(Long requestId) {
this.requestId = requestId;
}
public Long getOrderNo() {
return orderNo;
}
public void setOrderNo(Long orderNo) {
this.orderNo = orderNo;
}
public String getReturnCode() {
return returnCode;
}
public void setReturnCode(String returnCode) {
this.returnCode = returnCode;
}
public String getReturnInfo() {
return returnInfo;
}
public void setReturnInfo(String returnInfo) {
this.returnInfo = returnInfo;
}
}
建立试c?br />
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
public class TestJAXB {
public static void main(String[] args) {
try {
//read xml file to Java object
Trans trans = TestJAXB.readString(Trans.class,"input.xml");
List<Tran> datas = trans.getDatas();
for (Tran o : datas) {
System.out.println(o.getReturnCode()+";"+o.getReturnInfo());
}
//write java object to xml
Tran tran = new Tran();
      tran.setOrderNo(11111L);
      tran.setRequestId(22222L);
      tran.setReturnCode("0000");
      tran.setReturnInfo("success");
      Tran tran2 = new Tran();
      tran2.setOrderNo(33333L);
      tran2.setRequestId(44444L);
      tran2.setReturnCode("0001");
      tran2.setReturnInfo("failure");
      Trans trxs = new Trans();
      List<Tran> list = new ArrayList<Tran>(); 
      list.add(tran);
      list.add(tran2);
      trxs.setDatas(list);
File file = new File("D:/output.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Trans.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(trxs, file);
jaxbMarshaller.marshal(trxs, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public static <T> T readString(Class<T> clazz, String context) throws JAXBException {
try {
JAXBContext jc = JAXBContext.newInstance(clazz);
Unmarshaller u = jc.createUnmarshaller();
return (T) u.unmarshal(new File(context));
} catch (JAXBException e) {
throw e;
}
}
}


fly 2014-12-11 14:44 发表评论
]]>Hibernate4之JPA规范配置详解(?http://www.aygfsteel.com/jlin/archive/2014/10/29/419162.htmlflyflyWed, 29 Oct 2014 06:15:00 GMThttp://www.aygfsteel.com/jlin/archive/2014/10/29/419162.htmlhttp://www.aygfsteel.com/jlin/comments/419162.htmlhttp://www.aygfsteel.com/jlin/archive/2014/10/29/419162.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/419162.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/419162.html阅读全文

fly 2014-10-29 14:15 发表评论
]]>
վ֩ģ壺 ݳ| | | ¦| | | | | | | Ž| | ̩| | ƽ| ƽ| | Ͷ| | ̨| | | ֵ| ī񹤿| | | | | | ¦| | | ˮ| ƽ| | Ҵ| ֺ| | | º| ˱|