文档章节

2013年工作中遇到的20个问题:141-160

FansUnion
 FansUnion
发布于 2015/05/03 01:28
字数 2008
阅读 3
收藏 0

141.Tomcat启动时,提示没有找到某个类NoClassDefFoundError.
Eclipse源文件中,确实存在。

解决方案:选中Tomcat,右键-Clean,清除(Clean)Tomcat下的资源。

142.写js的时候,经常遇到兼容性问题。
今天在使用一个公司内部人士写的组件时,IE下又遇到问题了。
请他来帮忙解决,IE下调试快捷键是F12。有了提示,解决就方便多了。
IE不允许直接修改button的type属性。

143.Spring发邮件
Spring3.1.1 不需要配置spring-context-support

Spring3.2.3必须手动配置

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>3.2.3.RELEASE</version>
        </dependency>

144.Mybatis中 #{name}表示字符串
   $原样输出 order by
   
   String in ="1,2,3";
   
   select * from User where id in(${in})
   --- select * from User where id in(1,2,3),即使是字符串,也不加引号
   select * from User where name = #{name}
   ---select * from User where name = 'FansUnion'
   select * from User where id = #{id}
   ---select * from User where id = 20
    
   我的理解是:$一定是原样输出,而#会自动去判断,如果是字符串就加'',int就不加''。

145.内网与外网提交代码的技巧
公司内部SVN地址是:Ip形式的,192.168.1.126
外网SVN地址是:域名形式的,如miaozhen.com

在外网提交代码的技巧是,配置host,让miaozhen.com解析到,192.168.1.126。
这样,SVN提交代码的地址就不用切换了。

我是听1个同事说的,还没有尝试过哦。


146.做网站时,顶层菜单一般是一致的。
最开始学习时,使用的是<jsp:include page="header.jsp"/>
后来,使用了Sitemesh。

我的理解是在每一个页面,手动使用jsp:include导入菜单,
而Sitemesh是动态拦截每个需要的页面,导入菜单。

除了导入菜单,也可以在<head></head>中导入js、css等。

147.表名大小写
Windows下MySQL表名不区分大小写的。
Linux下MySQL表明是区分大小写的。

(根本原因应该是WIndows操作系统的文件名不区分大小写,Linux文件名区分。)

148.Tomcat部署的项目访问路径
项目名:FansUnion
Eclipse工程中的文件夹 Servers->Tomcat4FansUnion at localhost-config->Server.xml中有如下配置,
<Context docBase="CMS1.0" path="/FansUnion" reloadable="true" source="org.eclipse.jst.jee.server:FansUnion"/></Host>

访问路径为:http://localhost:8080/FansUnion

如果把path改为"/",则访问路径变为:http://localhost:8080/

(FansUnion项目部署在Webapps/FansUnion或类似的目录下,并非在webapps/ROOT目录下)


修改path的另外一种方式是:选中项目名-右键-Properties-Web Project Settings,修改Context Root的值,
“/”或者"/FansUnion"等。

(记得要手动清除已经部署的项目,以免出现问题。)


访问路径,不带项目名称的另外一种方式是,把项目部署到Tomcat-webapps-ROOT目录下。

149.导入css、js等经常遇到路径问题,找不到。
一种解决方案是 使用Spring等框架的标签,如
<script src="<s:url value='/js/tabColor.js'/>" type="text/javascript"> </script>

我觉得这种办法之所以有效,是因为使用了绝对路径,而非相对路径。

150.Maven工程,JUnit单元测试时的classpath问题。
Maven项目结构
src/main/java
src/main/resource

src/test/java
src/test/resouce

src/test/java 文件夹下的程序指定classpath,首先在src/test/java和src/test/resouce下寻找资源文件,
如果没有找到,再去src/main/java和src/main/resource下寻找资源文件。

而src/main/java下的程序指定classpath,只会去src/main/java和src/main/resource下寻找资源文件。

即main和test下的classpath,所包含的路径是不同的。

如果运行test下的单元测试程序,同时src/test/resouce和src/main/resource都有 配置文件,
同名的话,就会以src/main/resource 下的资源文件优先,存在覆盖问题。

151.jsp页面之间传递参数,也可以使用el表达式获得。
 http://localhost:8080?age=24
 ${param.age}显示 24
 
152.Sitemesh

<decorators defaultdir="/decorators">
    <!-- 不需要过滤的页面 -->
    <excludes>
        <pattern>/views/login.jsp</pattern>
        <pattern>/views/addCampaign.jsp</pattern>
        
    </excludes>

    <decorator name="main" page="main.jsp">
        <pattern>/*</pattern>
    </decorator>

</decorators>

http://localhost:8080/views/addCampaign.jsp?id=1仍然会被Sitemesh过滤掉。

需要使用下面这样的配置,在末尾增加通配符*
<pattern>/views/addCampaign.jsp*</pattern>

153.今天需要给textarea限制字数,发现不能像text那样直接使用属性maxlength="4"。
只能单独写js了。


154.JQuery日历(DatePicker)等UI组件比较灵活。

日历组件可以设置,日期的格式、是否显示第几周,也可以支持汉化(需要引入中文js)。

155.今天在360doc上看到了1篇文章,想复制一个词语,结果提示不让复制。操蛋啊!


在网上找到了3个方法:http://hi.baidu.com/sxdbupt/item/49224412dfd932031894ece1

这里只记载1个最有价值的方法吧。

破解方法一:在需要复制的页面处,在地址栏输入如下代码
javascript:document.body.oncopy=null;void(0);

(根源:直接看 360doc的那些javascript,以为有什么高级的函数,费了近15分钟,最后绕回原点,
唉。原来还是直接使用了 document.body.oncopy,浪费了15分钟,三下五除二,搞定。)

156.jquery ui datepicker 插件如何设置只能选择日期?而禁止输入日期?
貌似没这种设置,直接给input框加readonly="readonly" 就行了。

参考资料:http://baike.1688.com/doc/view-d25607286.html

157.保存表单的时候,需要验证某个字段的重名。
$.post("<s:url value='/nameIsExist'/>", {
                    name : name
                }, function(data) {//data(true or false)
                    if(data){
                        alert("The  name  exist.");
                        return false;
                    }else{
                      #ELSE
                    }
                });
    //下面是保存表单的代码
    saveForm();

特别说明:上面的写法是不对的。
    
    $.post是异步的,发送1个请求后,就开始执行saveForm了。无论名字是否存在,都会去保存表单。
    
    应该在上面的 #ELSE 地方写 saveForm();
    
    或者使用下面的方法,把ajax方法的参数async设为false。
    ($.post没有async这个参数)
    
    /*
            增加品牌不再验证是否重名
            var exist = false;
            $.ajax("isBrandExist", {
                type:"post",
                data:"brandName="+brandName,
                async:false,
                success:function(data) {
                    if (data) {
                        alert("品牌已存在!");
                        exist = true;
                    }
                }
                
            });
            
            if(exist){
                return false;
            } */
        
    总之,有2种方法。

158.Java和JavaScript等不同语言的语法和类库问题。

Java中的String有startWith("fans");
而JS中的String没有这个方法。charAt,substring等方法实现。

159.MySQL中的Replace into。
遇到1个功能,同步其它系统的用户列表,用户的id作为主键。
如果通过java代码来实现,应该是先删除所有的数据,再插入数据。
先删除的目的就是为了防止,出现重复的主键id。
(特别说明:同步过来的user,含有id,这个id作为主键)
另外一种方法是,使用MySQL中的Replace into。
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中。
1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。
2. 否则,直接插入新数据。
 
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。


参考资料:http://blog.csdn.net/sahusoft/article/details/4446877

160.Mybatis中的批量插入。
同步用户,量比较大。
如果是使用单条循环插入的话会对数据库造成很大的负荷状态,数据库的连接资源是有限的,循环插入的时候会直接的影响其它的数据库操作。

参考资料:http://hekuilove.iteye.com/blog/1470895

159和160参考代码

<insert id="addList" parameterType="java.util.List"
        useGeneratedKeys="true" keyProperty="id">
        insert into
        Organization(id,nativeName,englishName,aliasName,orgTypeId,status)
            values
        <foreach collection="list" item="organization" index="index"
            separator=",">
        (#{organization.id},#{organization.nativeName},#{organization.englishName},#{organization.aliasName},#{organization.orgTypeId},#{organization.status})
        </foreach>
    </insert>
    
    不能这样写(我为什么要这样写呢?我想的是insert into values(),()这种写法只能在mysql中用,不能跨数据库)
    <insert id="addList" parameterType="java.util.List"
        useGeneratedKeys="true" keyProperty="id">
        
        <foreach collection="list" item="organization" index="index"
            separator=" ">
        insert into
        Organization(id,nativeName,englishName,aliasName,orgTypeId,status)
            values
            (#{organization.id},#{organization.nativeName},#{organization.englishName},#{organization.aliasName},#{organization.orgTypeId},#{organization.status})
        </foreach>
    </insert>

 

相关阅读

工作问题 http://blog.csdn.net/FansUnion/article/category/1334371

原文参见:  http://fansunion.cn/articles/2241

© 著作权归作者所有

FansUnion
粉丝 60
博文 858
码字总数 825464
作品 0
丰台
高级程序员
私信 提问
lodop打印控件打印申通快递单

第一步先引入插件所用到的JS,插件官网http://www.lodop.net/ 放到head里面 <script language="javascript" src="js/LodopFuncs.js"></script> <object id="LODOPOB" classid="clsid:2105C25......

刘显示
2015/08/25
0
0
ssh 怎么调用mysql的存储过程,请相信一些。

这个是存储过程,不知到怎么调用 : DELIMITER $$ DROP PROCEDURE IF EXISTS `sales`.`getClientMesInfo`$$ CREATE DEFINER=`root`@`%` PROCEDURE `getClientMesInfo`() BEGIN DECLARE num ......

土豆-地瓜
2013/05/30
481
0
Analysis on Malicious SSH Login Attempts

Analysis on Malicious SSH Login Attempts Zhipeng Jiang2017-08-106 阅读 loginsshanalysis Last week when I tried to login to a remote test server, SSH timeout exception occured qu......

Zhipeng Jiang
2017/08/10
0
0
DATAGUARD 添加修改REDOLOG大小

DATAGUARD 添加修改REDOLOG大小 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52......

rootliu
2018/07/27
0
0
ceph分布式存储实战(4)——ceph存储配置(映射RBD镜像到客户端)

本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/2058538

科技小能手
2017/11/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

二、Docker

1、Docker - The TLDR(Too Long,Don't Read,Linxu 终端工具 ) Docker是在Linux和Windows上运行的软件。它创建、管理和编排容器。该软件以开源方式开发,在Github上作为Moby开源项目的一部分。...

倪伟伟
28分钟前
2
0
Python猫荐书系列之七:Python入门书籍有哪些?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/ArN-6mLPzPT8Zoq0Na_tsg 最近,猫哥的 Python 技术学习群里进来了几位比较特殊的同学:一...

豌豆花下猫
今天
5
0
Guava RateLimiter限流源码解析和实例应用

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流 缓存 缓存的目的是提升系统访问速度和增大系统处理容量 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高...

算法之名
今天
13
0
国产达梦数据库与MySQL的区别

背景 由于项目上的需要,把项目实现国产化,把底层的MySQL数据库替换为国产的达梦数据库,花了一周的时间研究了国产的数据库-达梦数据库,它和MySQL有一定的区别,SQL的写法也有一些区别。 ...

TSMYK
今天
2
0
老也有错?35岁程序员是一道坎,横亘在每个技术职场人的心中

随着互联网的高速发展变革,大龄恐惧症越来越多地在技术圈被人讨论。很多程序员在工作5-10年以后,都会开始思考5年、10年甚至更久以后的自己,会是怎样一种生活工作状态,以及是否会被时代抛...

我最喜欢三大框架
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部