摘要:
常量池、perm(持久代)、方法区、栈 常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。 除了包含代码中所定义的各种基本类型(如:int、long等等)和对象型(如String及数组)的常量值(final)还包含一些以文本形式出现的符号引用,比如: #类和接口的全限定名 阅读全文
摘要:
在Java的实现中,new出来的String对象一般是放在堆中的。 如果是 String s ="xxx"; 这种,那就是放在常量池中. JDK6将常量池放在方法区中。 方法区此时也是持久代。 但是从JDK7开始, 常量池的实现 已经从方法区中移出来放到 堆内存里面了。 阅读全文
摘要:
举例说明:老师收学生作业,相当于应用层调用I/O操作。 1、老师逐个收学生作业,学生没有做完,只能阻塞等待,收了之后,再去收下一个学生的作业。这显然存在性能问题。 2、怎么解决上面的问题? 老师找个班长,班长负责收作业,班长的做法是:遍历问学生作业写好了吗,写好的,收起来交给老师。休息一会,再去遍历 阅读全文
摘要:
1、程序执行过程中,CPU在做事情,什么时候CPU空闲呢? CPU等待 用户输入,或者 等待 某件事发生, 或者 线程Sleep的时候, CPU空闲,无事可做。 2、对于一个线程,Sleep5秒钟 与 做事5秒钟是一样的,都会 阻塞线程, 当前线程 不会往下走,也不能 及时相应。 区别是,CPU的使 阅读全文
摘要:
1、首先确定一点:同步安全,异步不安全。 2、结合实例,针对下面的使用场景:妈妈做蛋糕给儿子吃。 3、需求分析: (a)蛋糕的数量是共享数据,应该放入临界区。 (b)妈妈做蛋糕的时候,儿子不能吃;儿子吃蛋糕的时候,妈妈不能做。 (c)假设儿子很饿,妈妈做一个,儿子吃一个,妈妈做好一个后,等待儿子去吃 阅读全文
摘要:
举例来说:程序员为女儿做蛋糕。 1、程序员需要食谱,食谱上写出了需要哪些原料,如何做。食谱就是程序,原料就是数据,程序员就是CPU。程序员按照食谱、对原料进行加工,做蛋糕的过程就相当于CPU执行代码、操作数据的过程。做蛋糕的过程就是进程。 2、做蛋糕可以分为几个小的步骤,这些步骤共同加工原料。每个小 阅读全文
摘要:
\r:回车符,返回到这一行的开头,return的意思。 \n:换行符,到下一行的同一位置,纵坐标相同,new line的意思。 \t:制表符,为了在不使用表格的情况下,上下对齐,table的意思。 Enter 相当于\n\r,所以Enter的标识为 往下,再往前。当然,\n\r等价于\r\n。 \r 阅读全文