面试记-(1)

1. Object对象有哪些方法:

  toString: 返回ClassName+@+hashcode;

  hashcode: 返回内存地址的整数形式.

  equals: 对比2个引用是否相等.

  clone();

  wait();

  notify();

  notifyAll();

  finalize();

2. java 堆的了解:

  java内存是分为java堆和java栈.

  Java 堆是虚拟机管理的内存中最大的一块. 此内存的唯一目的就是存放对象实例. 从内存回收的角度, 由于现在采用的收集器是分代收集算法, java堆可以分成 新生代和老年代. 新生代可以分成Eden, from survivor, to survivor空间等.  如果从内存分配的角度看, 线程共享的java堆中可能划分出多个线程私有的分配缓冲区空间(TLAB). 进一步的划分为了更好的回收内存, 更快的分配内存.

  java堆可以处于物理上不连续的内存空间中, 只要逻辑上是连续的即可. 如果在堆中没有内存完成实例分配, 并且堆也没有办法再扩展, 就会抛出outOfMemoryError的异常.

ThreadLocal的了解:

  不是一个线程的本地实现版本, 它不是一个线程, 而是线程局部变量, 为每一个使用该变量的线程提供一个变量值的副本, 是java中一种较为特殊的线程绑定机制, 是每一个线程可以独立改变自己的副本, 而不会和其他线程的副本冲突.

  同步机制采用"以时间换空间"的方式, 而threadLocal采用了以空间换时间的方式.前程提供一份变量, 让不同的线程排队访问, 而后者为每一个线程提供一份变量, 因此可以同时访问互不影响.

  主要API:

  T get(): 返回此线程局部变量的当前线程副本中的值, 如果是线程第一次调用该方法, 则创建并初始化此副本.

  void set(T value): 将此线程局部变量的当前线程副本中的值设置为指定值.

  void remove(): 移除此线程局部变量的值。这可能有助于减少线程局部变量的存储需求。如果再次访问此线程局部变量,那么在默认情况下它将拥有其 initialValue。

  ThreadLocal.set(T value) 方法中, 得到当前线程thread t, 然后可以属于该线程的threadLocalMap, 然后使用ThreadLocal的hashcode作为索引值, 把value放入threadLocalMap的table[] 数组中.

(个人理解,望指正:为什么需要threadLocal实例?   比如2个工程, 如果没有threadLocal的实例, 因为Thread.currentThread是jvm系统方法,得到的是当前线程的引用, 用当前线程的hashcode去作为键值, 可能就一个工程覆盖另一个工程, 如果2个工程各有各的threadLocal, 用这个threadLocal的hash作为map里table的索引,那就能区分出各个工程所要保存的值.)

mysql优化:

方法主要有优化查询, 优化数据库结构, 优化mysql服务器.

  优化查询可以通过建立索引来加速. 如果使用了索引,查询语句只会查询索引字段。这样就减少查询的记录数,达到提高查询效率的目的。

索引举例: CREATE INDEX index_name ON student(name);

  优化数据库结构有几种方法. 1将字段很多的表分成多个表. 2增加中间表 3增加冗余字段 4优化插入记录的速度, 可以一次插入多条记录, 而不是多次插入insert语句. 在增加前不实用索引, 插入后再使用索引.

  优化mysql服务器: MySQL参数的优化:内存中会为MySQL保留部分的缓冲区。这些缓冲区可以提高MySQL的速度。缓冲区的大小都是在MySQL的配置文件中进行设置的。

  • key_buffer_size:表示索引缓存的大小。这个值越大,使用索引进行查询的速度就越快
  • table_cache:表示同时打开的表的个数。这个值越大,能同时打开的表的个数就越多。这个值不是越大越好,因为同时打开的表过多会影响操作系统的性能。
  • query_cache_size:表示查询缓冲区的大小。使用查询缓存区可以提高查询的速度。这个方式只使用与修改操作少且经常执行相同的查询操作的情况;默认值是0.
  • Query_cache_type:表示查询缓存区的开启状态。0表示关闭,1表示开启。
  • Max_connections:表示数据库的最大连接数。这个连接数不是越大越好,因为连接会浪费内存的资源。

 

posted @ 2013-07-02 14:19  叶子盛忆  阅读(195)  评论(0编辑  收藏  举报