response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "POST,GET");
response.addHeader("Access-Control-Allow-Credentials", "true");
后来准备再包装一下,自己再提供http接口,在http接口中用httpclient去取数据,但发现springMVC的返回乱码问题搞了我好久,怎么搞都弄不好,网上的各种方法也都不行,最后在stackoverflow上面看到了一个解决方案可行,此为链接地址:http://stackoverflow.com/questions/3616359/who-sets-response-content-type-in-spring-mvc-responsebody
首先,这个问题在stackoverflow上是三年前提问的,所以有一些方法已经过期废弃了,所以上面可以用的解决方式只有一种,在RequestMapping上添加属性produces:
@RequestMapping(value = "/getAllCategory", method = { RequestMethod.GET,
RequestMethod.POST }, produces = "application/json;charset=UTF-8")
@ResponseBody
public String getAllCategory(HttpServletRequest request,
HttpServletResponse response) {
return GYHttpClient.post(GET_PRODUCT_CATEGORY_LIST_URL);
}
它的官网:http://www.s-shot.ru/
http://mini.s-shot.ru/?http://www.iabe.cn
调用格式 http://mini.site-shot.com/分辨率/宽度/格式/?网址
http://mini.site-shot.com/1024×768/600/jpg/?www.xiumu.org
https://mini.site-shot.com/640×800/320/png/?www.xiumu.org
http://mozshot.nemui.org/shot?http://www.iabe.cn
http://get.thumbshots.ru/?lang=en&size=s&url=www.qibdy.com
http://www.myip.cn/webthumb.php?q=qeeshang.com
首先,搞清楚商品与单品的区别。例如,iphone是一个单品,但是在淘宝上当很多商家同时出售这个产品的时候,iphone就是一个商品了。
商品:淘宝叫item,京东叫product,商品特指与商家有关的商品,每个商品有一个商家编码,每个商品下面有多个颜色,款式,可以有多个SKU。
SPU = Standard Product Unit (标准化产品单元)
SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。
例如,iphone4就是一个SPU,N97也是一个SPU,这个与商家无关,与颜色、款式、套餐也无关。以化妆品为例,下图是拍拍商城给出的SPU信息:
注意上面的是原来的https协议,下载不了。
下面的可以下载:
http://download.sonatype.com/nexus/oss/nexus-2.11.1-01-bundle.tar.gz
百度网盘地址:
http://pan.baidu.com/s/1mgznhd2
http://pan.baidu.com/s/1skBd281
1、打开电脑,在出现开机画面时,按F1键进入bios设置窗口
2、使用键盘上的左右方向键将光标移至“security”栏目,再使用上下方向键将光标移至“secure boot”选项,按回车键执行。
3、进入secure boot菜单界面后,将光标移至“secure boot”选项,按回车键确认。
4、此时,会弹出一个选择窗口,将光标移至“disabled”选项,按回车键确认。
5、完成上面的操作后,secure boot的属性就修改为“disabled”,然后按esc键返回上一步。
6、接着使用左右方向键将光标移至“startup”栏目,再使用上下方向键将光标移至“uefi/legacy boot”选项,按回车键,在弹出的选择窗口中,使用上下方向键将光标移至“both”选项,按回车键确认。
7、然后再使用上下方向键将光标移至“uefi/legacy boot priority”选项,按回车键确认,此时会弹出一个选择窗口,将光标移至“uefi first”选项,按回车键确认。
当然有可能是U盘不兼容导致的。你换其他U口试一下。如果其他U口也不行,建议你进入BIOS--Config--USB--里面有个USB3.0mode,你改成Disabled再试一下。
安装系统时提示:
Windows无法安装到这个磁盘。选中的磁盘采用GPT分区形式。
将磁盘格式由GPT转换成MBR。操作步骤:
进入PE,Windows+R,
当然也可在安装选择语言界面按FN+SHIFT+F10 ,打开命令提示符,别的电脑只按SHIFT+F10就行了,thinkpad的都要加上FN。
输入:Diskpart,回车;
输入:list disk,查看磁盘信息(注意容量);
输入:select disk 0(如果要更改的磁盘编码是1则改为1);
输入:Clean;
输入:convert mbr;
操作完成关闭命令提示符窗口,正常重启安装win7即可。
环境:linux,mysql5.5.21
错误:Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
原因:
同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;
解决方法:
1、提高允许的max_connection_errors数量(治标不治本):
① 进入Mysql数据库查看max_connection_errors: show variables like '%max_connection_errors%';
② 修改max_connection_errors的数量为1000: set global max_connect_errors = 1000;
③ 查看是否修改成功:show variables like '%max_connection_errors%';
2、使用mysqladmin flush-hosts 命令清理一下hosts文件(不知道mysqladmin在哪个目录下可以使用命令查找:whereis mysqladmin);
① 在查找到的目录下使用命令修改:/usr/bin/mysqladmin flush-hosts -h192.168.1.1 -P3308 -uroot -prootpwd;
备注:
其中端口号,用户名,密码都可以根据需要来添加和修改;
配置有master/slave主从数据库的要把主库和从库都修改一遍的(我就吃了这个亏明明很容易的几条命令结果折腾了大半天);
第二步也可以在数据库中进行,命令如下:flush hosts;
URL 参数解析方法:
httpclient org.apache.http.client.utils.URLEncodedUtils
URLEncodedUtils.parse(query, Charset.forName("UTF-8"));
jettyUtil org.eclipse.jetty.util.UrlEncoded
MultiMap
UrlEncoded.decodeTo(query, values, "UTF-8", 1000);
tomcat org.apache.catalina.util.RequestUtil
Map
RequestUtil.parseParameters(values, query, "UTF-8");
regex 正则表达式
String u = URLDecoder.decode(url, "UTF-8");
for (String s : parameters) {
Pattern p = Pattern.compile(s + "=([^&]*)(&|$)");
Matcher m = p.matcher(u);
if (m.find()) {
m.group(1);
}
}
split 使用String 的split 方法对 URL 进行分割,然后用equals 匹配对应的 参数
String u = URLDecoder.decode(url, "UTF-8");
for (String s : parameters) {
String[] a = new String[100];
if (u.indexOf(s) != -1) {
a = (u.substring(u.indexOf(s))).split("&");
a[0].split("=");
}
}
前三者是 httpclient, jetty, tomcat 使用的 URL 解析工具。Split 方法是最简单 也是最直观的解析方法,regex 则使用了正则表达式去匹配参数。
1、Spring MVC 和 Spring 整合的时候,SpringMVC的spring-servlet.xml文件中 配置扫描包,不要包含 service的注解,Spring的applicationContext.xml文件中 配置扫描包时,不要包含controller的注解,如下所示:
SpringMVC的spring-servlet.xmll配置:
<context:component-scan base-package="tk.hecks">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
Spring MVC启动时的配置文件,包含组件扫描、url映射以及设置freemarker参数,让spring不扫描带有@Service注解的类。
为什么要这样设置?因为spring-servlet.xmll与applicationContext.xml不是同时加载,如果不进行这样的设置,那么,spring就会将所有带@Service注解的类都扫描到容器中,等到加载applicationContext.xml的时候,会因为容器已经存在Service类,使得cglib将不对Service进行代理,直接导致的结果就是在applicationContext 中的事务配置不起作用,发生异常时,无法对数据进行回滚。以上就是原因所在。
同样的在Spring的xml配置如下:
<context:component-scan base-package="tk.hecks">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
扫描包路径,不扫描带有@Controller注解的类。因为这些类已经随容器启动时,在spring-servlet.xml中扫描过一遍了。







