• 面试记-(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:表示数据库的最大连接数。这个连接数不是越大越好,因为连接会浪费内存的资源。
  • 相关阅读:
    HTML特殊字符编码对照表
    前端研究CSS之文字与特殊符号元素结合的浏览器兼容性总结
    前端研究CSS之内联元素块级化/区域大小/文字和图标的位置
    鼠标滚动事件onscroll在firefox/chrome/Ie中执行次数的问题处理
    Js把对象数组列表转换成数组
    Windows 10简体中文最新预览版Build 9926
    常州陪购师一小时收费300元 1年穿坏20双高跟鞋
    [2015.01.23]办公工具类....不定时添加
    [2015.01.21]数据恢复类....不定时添加
    2015年高速免费通行时间确定 共计免费20天
  • 原文地址:https://www.cnblogs.com/chenyao/p/3166894.html
Copyright © 2020-2023  润新知