• 没有程序计数器,Java程序中的流程控制将无法得到正确的控制,多线程也无法正确的轮换。 扩展阅读 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机...
  • JUC是java.util.concurrent的缩写,该包参考自EDU.oswego.cs.dl.util.concurrent,是JSR 166标准规范的一个实现。JSR 166是一个关于Java并发编程的规范提案,在JDK中该规范由java...
  • sleep()是Thread类中的静态方法,而wait()是Object类中的成员方法; sleep()可以在任何地方使用,而wait()只能在同步方法或同步代码块中使用; sleep()不会释放锁,而wait()会释放锁,并需要通过notify...
  • 可以使用EXPLAIN语句查看索引是否正在使用。 举例,假设已经创建了book表,并已经在其year_publication字段上建立了普通索引。执行如下语句: EXPLAIN SELECT * FROM book WHERE year_publ...
    • 10月前
  • MySQL支持多种方法在单个或多个列上创建索引: 在创建表的时候创建索引: 使用CREATE TABLE创建表时,除了可以定义列的数据类型,还可以定义主键约束、外键约束或者唯一性约束,而不论创建哪种约束,在定义约束的同时相当于在指定列上创建了一个...
  • get操作: Segment的get操作实现非常简单和高效,先经过一次再散列,然后使用这个散列值通过散列运算定位到 Segment,再通过散列算法定位到元素。get操作的高效之处在于整个get过程都不需要加锁,除非读到空的值才会加锁重读。原因就是...
  • LinkedHashMap继承于HashMap,它在HashMap的基础上,通过维护一条双向链表,解决了HashMap不能随时保持遍历顺序和插入顺序一致的问题。在实现上,LinkedHashMap很多方法直接继承自HashMap,仅为维护双向链表...
  • JVM的启动过程分为如下四个步骤: JVM的装入环境和配置 java.exe负责查找JRE,并且它会按照如下的顺序来选择JRE: 自己目录下的JRE; 父级目录下的JRE; 查注册中注册的JRE。 装载JVM 通过第一步找到JVM的路径后,Jav...
    • 11月前
  • 使用Collections工具类,将线程不安全的Map包装成线程安全的Map; 使用java.util.concurrent包下的Map,如ConcurrentHashMap; 不建议使用Hashtable,虽然Hashtable是线程安全的,但...
  • 内存溢出(out of memory):简单地说内存溢出就是指程序运行过程中申请的内存大于系统能够提供的内存,导致无法申请到足够的内存,于是就发生了内存溢出。 引起内存溢出的原因有很多种,常见的有以下几种: 内存中加载的数据量过于庞大,如一次从数...
    • 11月前