Java多线程:Java多线程同步与synchronized

2015-09-30
阅读 7 分钟
11.9k
为什么需要同步多线程?线程的同步是指让多个运行的线程在一起良好地协作,达到让多线程按要求合理地占用释放资源。我们采用Java中的同步代码块和同步方法达到这样的目的。比如这样的解决多线程无固定序执行的问题:

Java多线程:Java多线程执行框架

2015-09-30
阅读 5 分钟
7k
为什么需要执行框架呢?使用一般的new方法来创建线程有什么问题呢?一般的new线程的方式一般要给出一个实现了Runnable接口的执行类,在其中重写run()方法,然后再在将这个执行类的对象传给线程以完成初始化,这个过程中线程的定义和执行过程其实是杂糅在一起了,而且每次new一个新的线程出来在资源上很有可能会产生不必...

Java多线程:Java多线程基础

2015-09-30
阅读 5 分钟
4.2k
也就是说,进程从系统那里获取到了一定的CPU占用时间片、内存单元和IO等等资源,然后线程将这些资源利用起来执行程序,线程执行程序是什么意思呢?就是把程序记录的那些命令逐条依序一步步在CPU上运作,数据在内存、IO上流转,将命令执行完。这个层级的概念存在于OS上,OS的调度抽象层级并不是那么直观,如果我们在说明...

再读一次《黑客与画家》

2015-09-19
阅读 7 分钟
4.7k
这本书的风格很奇怪,因为你很难相信一个人可以把有些稀松平常的事看得如此透彻而且富有深层的意义,那些小事在我们平常人看来可能不值一提,然而在作者笔下你可以跟随他的指引接近一些独特的视角,把这些隐秘挖掘出来,得出一些令人惊奇的结论。

Mac环境变量小记

2015-08-09
阅读 2 分钟
4.6k
计算机系统本身就有很多内部命令,比如cd、ls这样的shell命令,本质上这些命令都是一些存放在系统特定目录下的程序文件,系统找到这些文件后去执行这些程序,那么在shell中使用这些命令时系统如何去寻找这些命令的位置呢 ?系统也不是神,它必须得知道哪些地方是它需要去搜索寻找这些shell命令程序文件的地方,所以有一...

C语言的内存分配

2015-04-26
阅读 4 分钟
2.9k
前一段代码打印出来是字符串,而后一段代码打印出来就是乱码。记得学C语言的时候讲到,字符串是被当做字符数组来处理的。所以字符数组名就相当于指向首地址的指针。那么 1. char *s = "abcdefghijkl"; 2. char s[] = "abcdefghijkl"; 这两种表达式似乎是一样的,可是为什么程序结果会不一样呢?原因就是没有对内存分配了...

工厂模式和“万能”工厂类

2015-04-07
阅读 4 分钟
4.4k
但是如果随着这个对象被创建的同时还必须进行其他相对复杂的操作,那么在新建构造一个对象代码就显得非常复杂,这个复杂的代码通常还需要每一次都复写,大大增加了冗余。

继承、装饰和动态代理修改对象既有方法

2015-04-05
阅读 3 分钟
4.4k
InhDog继承Dog后生成的dog对象拥有Dog的类型却具有InhDog的方法,调用其bark()方法时会调用子类复写的方法,这个过程也是Java多态性的体现。

局部变量申请栈空间时的入栈顺序

2015-03-29
阅读 3 分钟
5.9k
运行环境:ubuntu 14.04(32bit) 编译环境:gcc {代码...} - 第一组对比:在栈溢出保护机制下的编译和没有溢出保护机制下的编译的入栈顺序的对比: 局部变量在源代码中是: char buffer_one[8], buffer_two[8]; int value = 5; 栈溢出保护机制下的编译: {代码...} 可以看出来为变量创建创建的栈顺序依次是:buffer_two,b...

Java 数据结构实现(DataStructure)2

2014-12-08
阅读 5 分钟
2.6k
可以看成是有特定规则为的线性表,特定规则就是先进后出,后进先出,可以看成是我们List的先insertFromHead的要后deleteFromHead,所以利用这一点可以通过继承或组合的方式来构建堆栈。

Java 数据结构实现(DataStructure)1

2014-12-05
阅读 5 分钟
2.7k
单向链表利用了类的自引用,实现了类似指针的效果。 双向链表的实现,必须注意双向链表的head和back两个指针的正确指向,以及插入和删除过程中指向操作增减的有序性。

Java 内部类(InnerClass)

2014-12-04
阅读 2 分钟
2.4k
内部类定义在外部类内部,外部类成为一个有类作对象的特殊类。 当内部类是Static时,访问内部类的属性或方法并不需要建立一个特定的内部类类型的对象,直接采用访问静态类属性或方法就可以了。 当内部类不是Static时,就需要在类定义中创建内部类类型的对象,访问该对象的属性或方法,OuterClass有权访问InnerClass的pri...

Java 继承(Inherits)

2014-12-03
阅读 2 分钟
3.3k
在继承中,子类完全继承了父类的属性和方法,同时可能又增加了自己的属性和方法(扩充Extends),同时又可能对父类的方法进行了重写或覆盖(Override,完全一样的方法和参数),或者进行了重载(Overload,完全一样的方法名,不一样的参数)。

Java 多态(polymorphism)

2014-12-03
阅读 4 分钟
3.3k
子类对象为什么不能被定义成父类类型呢?因为子类继承于父类,因此子类拥有的方法很可能比父类多,因为除了继承自父类的全部属性和方法外,子类有可能定义了其他的方法,所以大体上看子类的量级要比父类大,所以父类对象可以定义成子类对象,因为多出来的方法可以直接使用子类的,而反过来的话就不行了,因为子类对象不...