2015年创业中遇到的技术问题:21-30

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。

參考资料:http://blog.csdn.net/dawnming/article/details/7076637

(仅仅有设置编码是參考的这个,发现和设置默认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`, ‘李四‘, ‘孙六‘, ‘张三‘, ‘王五‘)

參考资料:http://blog.csdn.net/aidenliu/article/details/7554860

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方法。

參考资料:http://blog.csdn.net/u012345283/article/details/39718245

时间: 2024-10-25 10:32:41

2015年创业中遇到的技术问题:21-30的相关文章

2015年创业中遇到的技术问题:71-80

71.微信接入盲点.每次请求,都要校验参数是否正确. 72.Nginx配置,proxy_pass的最后一个"/"加上还是很有必要.server{listen 80;server_name xiaolei.fansunion.cn;location / {proxy_pass http://localhost:9080/AboutXiaoLei/;}}英文分号";"也是必须的额. 73.Putty,XShell,免登录.之前一直用Putty连接远程linux主机,经常

2015年创业中遇到的技术问题:121-130

121.PHP中的.和->有啥区别呢? $this->,调用类的方法用"->". ".",是啥意思呢?(当然,可以表示字符串连接.) 122.Thinkphp判断是否登录了. <if condition="$Think.session.user == 'fansunion'">{$Think.session.user}</if> <present name="$Think.session.

2015年创业中遇到的技术问题:131-140

131.ZendStudio复制文件到远程. 同时复制目录和文件,不起作用. 同时复制普通文件.php和.htaccess,不起作用. 遇到这种情况,只能单个复制了. 132.Thinkphp部署之后,模版文件找不到. 模板不存在:./Application/Home/View/Index/index.html Windows下开发,开启了调试模式. Controller名称:IndexController. 视图文件目录名称:index,文件名称index.html. 部署到Linux上之后,

2015年创业中遇到的技术问题:31-40

31.Linux下启动Mysql有N种方式. service mysql start; service mysqld strat; 上述2种方式是,mysql已经安装作为了服务,有的叫做"mysql",有的叫做"mysqld". 如果没有服务,还得手动启动. 比如,/usr/bin/mysqld start &. 一段时间不搞,记忆已经模糊了. o(︶︿︶)o 唉 32.用户表-索引-类型. user表:uid,name A类用户:1开头,10001 B类用

2015年创业中遇到的技术问题:11-20

11.SpringMVC接收参数,冲突. class LoanBean { private Double amount; } class LoanInfo{ piavate Money amount; } @RequestMapping("/doadd") public void doAdd(LoanInfo loanInfo, LoanBean loanBean); json请求发过来,接收amount就遇到了400错误. 解决办法:变量名称不用同一个. 12.HTML下拉列表框选中

2015年创业中遇到的技术问题:101-110

101.计算机中丢失 msvcr110.dll. 下载一个VS的补丁,http://www.microsoft.com/zh-CN/download/details.aspx?id=30679. 参考资料:http://jingyan.baidu.com/article/4f7d57129fa86e1a201927de.html 102.ecshop安装后出现Strict Standards: Only variables should be passed. 查看对应部分的代码为 $tag_se

2015年创业中遇到的技术问题:1-10(乱码-SpringMVC-jquery-JSON等)

1.数据库表名重构. 之前受PHP等程序的影响,数据库表名喜欢用数据库的名称作为前缀,比如"p2p_account". 在经过大量的实践之后,发现Java程序中,基本没有这个必要. so,从今天开始,数据库表明不再加上多余的前缀了. Java的Dao和Mybatis的xml,大量用到了数据库表名,我当然不笨,想到的是Eclipse的replace替换功能. 把"p2p_"替换成""就可以了. 替换之前,随机抽样,选几个文件,看看是不是有"

2015年创业中遇到的技术问题:91-100

91.PHP日志记录方法.  error_log("error info"); 92.weiphp图灵机器人bug,需要修改3个地方. 问题描述:启用聊天插件后,发现在微信客户端上不管输入什么内容,回复的都是预设好的内容,而无法使用图灵机器人的功能. 问题分析:经过查看源码,发现 Addons\Chat\Model\WeixinAddonModel.class.php 文件有一处 Bug,在 function _tuling($keyword) 中,有一个判断图灵返回值的地方:[mw_

2015年创业中遇到的技术问题:61-70

61.Redis的key要判断null的情况. 如果key为null,报错. public Boolean exists(String key) { if(StringUtils.isBlank(key)){ return false; } return loginRedisTemplate.hasKey(key); } 另外原因分析,看了错误信息,发现是 org.springframework.util.Assert.notNull. 猜测,用Spring Data和redis连接,Sprin