平时犯的错

1、javascript的 for var v in arr中v取到的是属于下标,和freemarker不太一样,原因在于JavaScript中数组也是对象,是键为数字的对象,for遍历的是键,而不是值。

不要太频繁读写数据库,尽量放内存中.

从数据库查数据,尽量要分页,否则可能导致内存溢出

2、java split分割时,如果需要用.做分隔符,则需要写\.,因为split接受的是正则表达式,.在正则表达式中通配任意字符

3、spring中关于自动装载:

当一个类有多个子类,且多个子类都作为bean使用时,每个bean都被实例化一次,所以每个bean中的数据并不是共享的。

比如Father类,作为一个Bean实例,其中会初始化Bean中的一个Map。

子类Son类,也作为一个Bean实例,在Son中调用super.Map取到的则为空值。

所以要使多个Bean共享数据,则在一个Bean中引用另一个Bean。

4、任意一个构造方法中都会有super,若没有则相当于super(),这也就是为什么super一定要在第一句。

之前已经总结过一次了,今天果然又忘了。看来记得还不够牢固。

5、JQuery的主动触发事件,比如说$("#id").click(),仅仅触发该标签的onclick事件,而不触发其他事件。比如说a标签的点击跳转,并不会触发。

而跳转点击是有特殊方法的,调用的是window.location.href="url"。

但是当把jQuery对象转为DOM对象后就可以主动触发DOM的click,DOM的click是会进行跳转的。如:

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("#blink").click();
});
});
</script>
</head>
//这样是不行的,因为jQuery对象只触发onclick方法。
<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button type="button">Click me</button>
<a id="blink" href="http://www.baidu.com" target="_blank" onclick="alert(1);return true;">test</a>
</body>
</html> 

用jQuery对象[i]或者jQuery对象.get(i)转换为DOM对象

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("#blink")[0].click();
});
});
</script>
</head>
//触发dom的click即可。
<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button type="button">Click me</button>
<a id="blink" href="http://www.baidu.com" target="_blank" onclick="alert(1);return true;">test</a>
</body>
</html> 

 jQuery对象.eq(i)为取第i个jQuery对象,返回jQuery对象。取到后可以再用[0]转为DOM对象。innerHTML不带括号。

Anchor对象即<a>标签有个特殊的方法为click(),相当于用鼠标点击了a标签。

6、jQuery的文档操作类的方法

用$("选择器")取到jQuery对象后,如果使用$("选择器").append(jQuery对象)方法把对象append到其他元素下,则原位置的元素会被jQuery删掉,新增到后面的元素中。也就是位置的移动,所以新增的话最好使用clone()克隆原元素。

7、用margin: auto居中对齐时,生效的是auto内部的元素,还要设置外部的宽度

8、form不能互相嵌套

9、ajaxFileUpload版本过老,必须添加

handleError: function( s, xhr, status, e )         
    {
        // If a local callback was specified, fire it
        if ( s.error ) {
            s.error.call( s.context || s, xhr, status, e );
        }

        // Fire the global callback
        if ( s.global ) {
            (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
        }
    },

才可以正常使用

10、使用ajax的xhr.responseText时,若后台使用responseBody注解,则返回的数据会被添加上pre标签,需要啊先去除pre才可以解析数据。

11、new String("abc")会创建两个对象,一个是jvm创建的"abc"字符串对象,第一个是new String的对象,把"abc"字符串对象赋值给new String的value成员变量。

  基本类型包装类在进行直接计算(如加和减)时,会创建一个新对象,并把该新对象的引用赋给原对象,所以这个时候如果用基本类型包装类进行线程锁,可能就会导致IllegalMonitorStateException异常

当前的线程不是此对象监视器的所有者。也就是要在当前线程锁定对象,才能用锁定的对象此行这些方法,需要用到synchronized ,锁定什么对象就用什么对象来执行。锁对象锁的是原始对象,而不是引用。

12、Collection转为数组时,如果用自带的toArray()转出来的是Object[],如果要转为泛型类型的数组,则可以toArray(obj[]变量)就可以转为泛型规定的类型数组了。

    数组自身也是可以用子类转为父类的,只要实例确实是子类实例即可。

  数组其实和集合框架差不多,区别就在于数组类有子类,即String[]是Object[]的子类,所以可以使用(String[])进行强制转换,但是数组内对象的类型和数组类型在转换时是没关系的。比如

Object[] o = new String[]{"1","2","3","4","5"};
        String[] s = new String[o.length];
        s = (String[]) o;
这样可以
Object[] o = new Object[]{"1","2","3","4","5"};
        String[] s = new String[o.length];
        s = (String[]) o;
这样报错

下面那个虽然数组中存的对象是String类,但是因为数组对象整体并不是String[],所以转换的时候就出问题了,这种情况下只能遍历数组进行转换。

13、接口中的方法只能为public abstract ,变量只能为public static。

  1.接口必须要具体类实现才有意义,所以必须是public
  2. 接口中的数据对所有实现类只有一份,所以是static
  3.要使实现类为了向上转型成功,所以必须是final的.这个举例子很好理解.比如接口A,A有变量value.实现类A1,A2,可以向上转型.假如代码中有一句:
  A a=null;
    a=....(2)实际实现类
  System.out.println(a.value);
  
  利用向上转型,可以得到接口a的值,在第2步中,我不关你是实现类A1,还是new A2(),通过转型,我们可以得到正确的值.要是类中可以更改,我们得不到一个统一的值,接口也没有了意义

且接口的实现类中,方法的访问权限不能低于接口,也就是说必须为public。

14、option标签在网页中是并没有直接显示的,而是作为下拉框的选项内容之一,其样式是由当前浏览器决定的,所以option标签之间只会有文本内容,而不会有其他样式与其他标签之类的元素。

15、网页中,为js变量赋值,var a = 一个元素id,则元素id可直接代表该dom元素,很神奇。就是把id作为变量名,dom为变量值。

16、关于泛型类没有限定泛型引起的后果:越过了java的类型检查(在一个框架中发现的)

今天调试代码发现一个奇怪的现象,一个List<String>的list中的对象,竟然都是非String型。如图:

这里竟然越过了类型检查,就算是Object类型也说不过去,到底是什么引发了这个奇怪的现象呢?看一下getAllPhones()方法,调用了queryForBean()方法,但是queryForBean方法的返回类型为List,并没有泛型限定,没有泛型限定时,java的警告信息如下

也就是说,在不加泛型的情况下,jvm并不会去检查这个list中储存的类型与引用处的泛型是否一致,类型检查没有发挥的地方,所以导致了这种List<String>中可以存其他对象的bug,这一点一定要注意。

17、java中,任意构造方法,如果没有写super,则在构造时都会默认调用父类的默认构造方法,如果父类没有默认构造方法,则会报错(比如说父类重写了有参构造方法,就会把jvm自动生成的默认构造方法覆盖)

18、数据库中null与任何东西做比较都为null,且null做任何运算后结果仍然为null

19、JavaScript中,若一个click事件绑定了一个方法,在这个方法中return false是阻止默认事件,并停止事件冒泡,并不能阻止该元素上绑定的其他click事件。要想阻止该元素上绑定的其他事件,可以调用event对象的event.stopImmediatePropagation();

这个可以阻止默认事件,阻止事件冒泡,并阻止之后任何在该对象上的相同事件。这里注意一下,如果是直接onclick方法中return false,则不能阻止事件冒泡,只能阻止默认事件。

原文地址:https://www.cnblogs.com/guangshan/p/4451457.html