21.高速清空表中的数据。
有个ip库的表。数据量几十万。
想在开发阶段,清空。
通过mysql-front和mysql控制台。都删除失败。
反应很慢。还有诸如lock失败的错误。
解决的方法:复制表的创建结构,比方
CREATE TABLE `ip_info` (
`ipbegin` varchar(20) DEFAULT NULL,
`ipend` varchar(20) DEFAULT NULL,
`zone` varchar(50) DEFAULT NULL,
`company` varchar(200) DEFAULT NULL,
`ipbeginInt` bigint(20) DEFAULT NULL,
`ipendInt` bigint(20) DEFAULT NULL,
`province` varchar(50) DEFAULT NULL,
KEY `ipbegin_int` (`ipbeginInt`),
KEY `ipend_int` (`ipendInt`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
直接删除这个表,drop table ip_info。很迅速。
然后再又一次建立这个表。运行上面的“create table ip_info”语句。
22.Putty设置默认用户和默认编码。
每次登录,都须要输入username,烦死了。
输入password,还能够理解。
每次打开文件,都是乱码,还得手动在transaction下,改动编码为“utf-8”,烦死了。
解决的方法:
putty是个很好的连接linux的client工具。可是用putty时,时常出现乱码问题,这时候须要在Translation中设置一下。
可是每次连接都要设就很麻烦了。这时候,能够在保存session的时候,先设好,以后从保存list中进入。这样就不须要手动设编码了。
默认username。也是这样,Connection-Data-Auto login username。
(仅仅有设置编码是參考的这个,发现和设置默认username是一个道理,之前在别处看到过设置默认username)
23.Windows下的bat和Linux上的sh。
在Linux上运行命令的时候,按tab提示 catalish. 会卡住,由于有2个选项“catalish.sh”和“catalish.bat”。
比較好的办法是,把Linux上的“catalish.bat”删掉,把Windows上的“catalish.sh”删掉。
startup.bat,shutdown.bat,catalish.bat等“*.bat”都干掉。
24.Linux下的Tomcat的catalish配置JVM參数。
在第235行,加相似的配置:
JAVA_OPTS="$JAVA_OPTS -Dp2p.config_path=/var/tomcat/config/ -Dlog4jOutputPath=/var/tomcat/logs -Xms256m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m"
在这个几行凝视的以下。
# Uncomment the following line to make the umask available when using the
233 # org.apache.catalina.security.SecurityListener
234 #JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
尝试放在前一行,貌似不行呀。
25.跨域一点问题。
项目中解决Less的訪问,大致了解了下,不想用Less。所以也不须要配置乱七八糟的Filter。
做个记录,今后说不定用得上。
CORS介绍
它在维基百科上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Webserver定义了一种方式,同意网页从不同的域訪问其资源。
而这样的訪问是被同源策略所禁止的。
CORS系统定义了一种浏览器和server交互的方式来确定是否同意跨域请求。
它是一个妥协,有更大的灵活性,但比起简单地同意全部这些的要求来说更加安全。
而W3C的官方文档眼下还是工作草案。可是正在朝着W3C推荐的方向前进。
简言之,CORS就是为了让AJAX能够实现可控的跨域訪问而生的。
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, POST, HEAD, PUT, DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>Set-Cookie</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
网上找了个相似的资料:http://www.verydemo.com/demo_c199_i15317.html。
26.MySQL 按指定字段自己定义列表排序
SELECT * FROM bank
ORDER BY FIELD(`id`,20, 22, 21) desc,
id desc,FIELD('status',21,1)
要注意的是, FIELD 后面是没有空格的.
因此, 完整的 SQL 为:
SELECT * FROM `MyTable`
WHERE `id` IN (1, 7, 3, 5)
ORDER BY FIELD(`id`, 5, 3, 7, 1)
常见应用
SELECT * FROM `MyTable`
WHERE `name` IN ('张三', '李四', '王五', '孙六')
ORDER BY FIELD(`name`, '李四', '孙六', '张三', '王五')
27.Jquery选择器语法。
$("#"+parentId+">a :first").addClass("tab-high");
超链接a后。不应该有空格。
28.SiteMesh就是一个废材。
感觉没啥多大用处,不灵活。
直接用include更好。
29.依据參数类型,运行不同的构造函数,感觉easy出错。
/**
* 分
*/
public Money(Long cent) {
this.cent = cent;
}
/**
* 元
*/
public Money(Double amount) {
if (amount != null) {
Double d = DoubleUtil.mul(amount, 100);
this.cent = d.longValue();
}
}
可能存在这样的需求,前端要求元必须是整数Integer,后端用Integer接收,再构造。就出错了。
30.SpringMVC拦截404。
第1种方式:Tomcat直接处理
web.xml
<error-page>
<error-code>404</error-code>
<location>/error/404.htm</location>
</error-page>
这样的仅仅能展示纯静态的页面,很不灵活。
第2种方式:利用Spring MVC的最精确匹配
@Controller
public class UrlNotFoundController {
@RequestMapping("*")
public String test404(){
//TODO
return "404Page";
}
}
在网上找到这样的方法,利用SpringMVC的精确匹配,从而在其他Controller找不到相应请求的时候。来处理404。
可是,这样的方式也有问题。仅仅能拦截一部分。
比方,假设有这个一个Controller
@Controller("/home")
public class HomeController{
@RequestMapping("a")
public String a(){
//
}
}
直接訪问: http://localhost:8080/b.html,会被UrlNotFoundController处理。
可是http://localhost:8080/home/b.html,就不会被UrlNotFoundController处理。
这说明,通过精准匹配也是有局限性的。
第3种方式:自己定义org.springframework.web.servlet.DispatcherServlet,重载noHandlerFound方法。
<servlet>
<servlet-name>theDispatcher</servlet-name>
<servlet-class>base.web.MyDispatchServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc-servlet.xml</param-value>
</init-param>
<init-param>
<param-name>fileNotFondUrl</param-name>
<param-value>/error/404</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>theDispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
public class MyDispatchServlet extends DispatcherServlet {
private static final long serialVersionUID = 1L;
private static final UrlPathHelper urlPathHelper = new UrlPathHelper();
private String fileNotFondUrl = "/error/404.html";
public void noHandlerFound(HttpServletRequest request, HttpServletResponse response) throws Exception {
if (pageNotFoundLogger.isWarnEnabled()) {
String requestUri = urlPathHelper.getRequestUri(request);
pageNotFoundLogger.warn("No mapping found for HTTP request with URI [" + requestUri +
"] in DispatcherServlet with name '" + getServletName() + "'");
}
response.sendRedirect(request.getContextPath() + fileNotFondUrl);
}
public String getFileNotFondUrl() {
return fileNotFondUrl;
}
public void setFileNotFondUrl(String fileNotFondUrl) {
this.fileNotFondUrl = fileNotFondUrl;
}
}
默认的DispatchServlet的noHandlerFound方法。
protected void noHandlerFound(HttpServletRequest request, HttpServletResponse response) throws Exception {
if (pageNotFoundLogger.isWarnEnabled()) {
String requestUri = urlPathHelper.getRequestUri(request);
pageNotFoundLogger.warn("No mapping found for HTTP request with URI [" + requestUri +
"] in DispatcherServlet with name '" + getServletName() + "'");
}
response.sendError(HttpServletResponse.SC_NOT_FOUND);
}
直接返回HTTP404。
特别须要说明的是:
自己定义之后。不能再使用
<!-- <mvc:default-servlet-handler /> -->
通常情况下。使用这个配置。能够让SpringMVC相应js、css等静态页面,在合适的路径,自己主动去找。
凝视之后,就仅仅能手动响应静态资源等请求了。
2种方式:
第1种:Tomcat处理。
配置
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
第2种:SpringMVC处理
<mvc:resources mapping="/kindeditor/upload/image/**"
location="file:${kindeditorImagePath}/kindeditor/upload/image/**" />
假设使用了“<mvc:default-servlet-handler />”
// Determine handler for the current request.
mappedHandler = getHandler(processedRequest, false);
if (mappedHandler == null || mappedHandler.getHandler() == null) {
noHandlerFound(processedRequest, response);
return;
}
DispatchServlet上述代码的mappedHandler就不为空了。因此无法进入noHandlerFound方法。