总结20170816

总体分为两类,注重基础技术,注重高并发多线程应用
java基础相关:
1.数据类型:
数据类型
  基本数据类型
    数值型 整数类型bype

byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:32位,最大数据存储容量是2的32次方减1 (-2,147,483,648) ,数据范围是负的2的31次方到正的2的31次方减1 (2,147,483,647)  。
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean:只有true和false两个取值。
char:16位,存储Unicode码,用单引号赋值。
    字符型(char)
    布尔型(boolean)

  引用数据类型
    类
    接口
    数组
Java的参数传递到底是引用传递还是值传递
http://blog.csdn.net/panyongcsd/article/details/52371203

2.JVM的内存空间:
(1). Heap 堆空间:分配对象 new Student()
(2). Stack 栈空间:临时变量 Student stu
(3).Code 代码区 :类的定义,静态资源 Student.class
eg:Student stu = new Student(); //new 在内存的堆空间创建对象
stu.study(); //把对象的地址赋给stu引用变量
上例实现步骤:
  a.JVM加载Student.class 到Code区
  b.new Student()在堆空间分配空间并创建一个Student实例
  c.将此实例的地址赋值给引用stu, 栈空间

3.java8特性
lambda:让行为传入函数,引入Lambda表达式。

4.spring传入controller机制

http://jinnianshilongnian.iteye.com/blog/1594806

5.类库
常用的 Java 核心包 (Java Core Package)
1.       java.lang      Java 编程语言的基本类库
2.       java.applet     创建 applet 需要的所有类
3.       java.awt       创建用户界面以及绘制和管理图形、图像的类
4.       java.io        通过数据流、对象序列以及文件系统实现的系统输入、输出
5.       java.NET       用于实现网络通讯应用的所有类
6.       java.util       集合类、时间处理模式、日期时间工具等各类常用工具包
其它还有
7.       java.sql        访问和处理来自于 Java 标准数据源数据的类
8.       java.test       以一种独立于自然语言的方式处理文本、日期、数字和消息的类和接口
9.       java.security    设计网络安全方案需要的一些类
10.   java.beans     开发 Java Beans 需要的所有类
11.   java.math      简明的整数算术以及十进制算术的基本函数
12.   java.rmi       与远程方法调用相关的所有类
第三方类库更多
jms jedis

6.hashmap源码,有什么样的数据结构

7.mysql会出现脏读吗
可重复读(Repeated Read)默认隔离级别,不会出现,但会出现幻读。

8.spring事务隔离级别,传播行为
https://www.cnblogs.com/yangy608/archive/2011/06/29/2093478.html

服务基础相关
1.zookeeper挂掉,dubbo还好用吗?


高并发多线程
1.线程安全的集合ConcurrentHashMap
HashTable与ConcurrentHashMap的比较?
相同点: Hashtable 和 ConcurrentHashMap都是线程安全的,可以在多线程环境中运行; key跟value都不能是null
区别: 两者主要是性能上的差异,Hashtable的所有操作都会锁住整个对象,虽然能够保证线程安全,但是性能较差; ConcurrentHashMap内部使用Segment数组,每个Segment类似于Hashtable,在“写”线程或者部分特殊的“读”线程中锁住的是某个Segment对象,其它的线程能够并发执行其它的Segment对象。
http://blog.csdn.net/u014482758/article/details/50669483

2.线程锁
http://www.jianshu.com/p/eccb5f350c12

3.线程synchronized
不仅仅是单例模式

下单库存要加锁
前台幂等处理,防止订单重复提交

4.redis主从之间的数据同步是怎么做到的
如果同时有几个slave连接到master上,则master同时只会创建一个进程将内存中数据dump到磁盘上,因此Redis建议如果一台机器上只有一个Redis实例,则设置的最大内存物理内存的一般左右,确保fork新的进程时,不会将物理内存耗光,导致程序崩溃。

  如果客户端修改master上面数据,则master会将命令同步给slave节点,大部分时候slave连接master所有的数据都会重新同步一次,如果master和slave网络断开时间不长,slave重新连接master,slave会首先发送一个上次同步位置的psync命令,master验证psync命令中同步位置有效,则master不会要求slave同步所有数据,而是从slave发送的位置开始同步,psync命令中同步位置一旦无效,master会要求slave同步所有的数据。

5.Java并发之AQS详解
synchronized 偏向锁,之前怎么转换

6.jdk源码,集合类,hashmap和线程 ,java.util.concurrent.ConcurrentMap
hashmap数据结构,hashCode,equals方法

7.hasmap 设定13个容量,实际分配多少容量,是2的n次幂最接近的值

猜你喜欢

转载自572327713.iteye.com/blog/2389759