为什么要去学习底层的知识

为什么要去学习底层的知识

我从前有一个大的误区,认为学习一些框架知识,能够实现业务功能就可以了.
完全没有必要去深挖底层.但是这两天,慢慢发现去了解底层知识的重要性.

有些东西,只有在遇到了,被困住很久,最后解决了.印象才会深.
下面,我会记录一些我在平常学习和工作中遇到的有关底层(对于我来讲…)

js中执行顺序

有个同学,在编写js时遇到了,一个问题.他的js代码在执行一个函数时,出现undefined的错误.
下面是一个示例

nihao();
hello();//hello 是无法执行的
function nihao(){
	alert('nihao');
}

var hello = function(){
	alert('hello');
}

这个问题,当时令我很困惑,我有些迷茫,这是为什么?
都是定义的方法,一个可以执行,另一个就不能执行.

后来我才了解到浏览器会先对js代码进行预处理(编译),然后再执行.
后来看了一些资料,才发现了真正的问题.下面是真正执行代码的顺序.

function nihao(){
	alert('nihao');
}
var hello;

nihao();
hello();

var hello = function(){
	alert('hello');
}	

js中的执行顺序

2018-12-13

java中Integer的比较

今天,在看阿里的Java开发手册中,看到一个以前没有注意到的细节
Integer这种包装类在比较大小时,应该使用equal() 不要直接 == 判断.
因为在-128 到 127 区间内的 Integer 值可以直接使用复用已有的对象
而这个区间之外的所有数据,则会在堆上产生,并不会复用已有对象.所以下面会输出 false

Integer num1 = 1200;
Integer num2 = 1200;

System.out.println(num1==num2);

2018-12-14

静态内部类实现单例模式

类加载是有触发条件的,懒加载的感觉.
一般,只有到用到这个类时才会被加载到JVM中

一个类创建实例对象时

  1. 将类装载到JVM中
  2. 执行静态字段的初始化和执行static{}中的代码
  3. 执行父类的构造方法.
  4. 执行构造方法,返回实例

下面的单例模式中,只有当执行到 getInstance() 才会去加载静态内部类.而且类的加载是被上锁的,所以它是线程安全的.

扫描二维码关注公众号,回复: 4623650 查看本文章
package singleton;

public class Singleton {

	private Singleton() {}
	
	private static class LazyHolder{
		private static final Singleton INSTANCE = new Singleton();
	}
	
	public Singleton getInstance() {
		return LazyHolder.INSTANCE;
	}
	
}

2018-12-16

猜你喜欢

转载自blog.csdn.net/qq_34120430/article/details/84992387