- 博客(19)
- 收藏
- 关注
原创 单例与多例
1)单例与多例 所谓单例就是所有的请求都由一个对象来处理,比如service和dao就是单例的。之所以用单例是因为,没必要为每一个请求都创建一个实例对象,浪费内存 所谓多例就是所有的请求都由不同的对象来处理,比如Struts的action。之所以用多例是因为,每一个请求都会改变对象的状态,若是再用该对象去处理其他请求容易造成BUG。 ...
2018-07-20 16:05:34
196
转载 java单列模式
1)饿汉式 所谓懒汉式就是在第一次加载的时候就创建对象实例,而不管实际需不需要 public Class Singleleton{ private static Singleton singleleton= new Singleton(); public Singleleton{}; public Singleleton getSingleton() { ...
2018-07-20 15:13:11
369
转载 分库分表
1)使用场景 对于Mysql主从复制实现读写分离来说,可以解决读的扩展性问题。但是写的话,面对庞大的数据量还是集中在Master上,并且Master挂载的slave不可能无限制多,因为slave依赖于Master的能力和负载的限制。因此需要对Master进行扩展来实现海量数据的需要。 2)分表 对于访问极为频繁,数据量又极大的表来说,最直接做的就是减少数据量的总条数,以便减少数据查询所需要的...
2018-07-19 16:26:39
3585
1
转载 MySql主从复制
1)主从复制原理 MySql主从复制实际上是基于二进制日志BinaryLog,可以分为四个步骤:a)主库对所有的DDL(insert、update、delete)和DML(create)写进二进制文件;b)主库生成一个log dump线程,用来给从库IO读取二进制文件;c)从库的IO thread读取二进制文件,并将读取的二进制文件写入relay log中;d)从库的SQL Thread读取r...
2018-07-19 14:31:14
125
翻译 java 类加载机制与双亲委派模型
一、类的加载过程 类的加载过程主要分为三个步骤:1)装载load、2)链接link、3)初始化Initial 1)装载(load):查找并加载类的二进制数据 2)链接(link):主要分为三个步骤 验证:确保被加载的类的二进制数据是合法正确的。由编译器生成的class文件肯定是符合JVM字节码格式的。也有可能黑客自己生...
2018-07-19 10:08:42
164
原创 java学习的主要流程
多线程模型 - > 各种状态之间转换 -> jdk常见的并发类 -> 如何保证线程安全 -> volatile实现原理 -> 线程池与队列 -> 调优 spring 特点 -> AOP原理 -> 代理种类 -> 实现细节 -> CGLib局限 -> 性能如何 JVM组成 -> 内存模型 -> 垃圾收集算法 ->
2018-07-18 21:16:32
999
翻译 spring&spring IOC
1)spring容器俯瞰 图片来自网络 spring启动时,先加载bean的配置信息,读取到spring容器的Bean定义注册表中,然后根据Bean注册表实例化Bean,装配好Bean之间的依赖关系,再然后将Bean放到spring容器中,最后由应用程序读取使用。 容器加载Bean的原理 Bea...
2018-07-18 15:05:51
121
翻译 spring aop
1)AOP 产生的背景 定义一个student接口,有增删改三个方法需要实现。 public interface IStudent{ public void add(); public void delete(); public void update(); } public class StudentImpl implements Istudent...
2018-07-18 14:10:04
93
翻译 基本数据类型与常量池
1)基本数据类型的大小 int:32位 4个字节; short:16位 2个字节; float:32位; double:64位; long:64位; char:16位; byte:8位;最小值是-128,最大值是127 boolean:1位 2)自动拆箱和自动装箱 自动拆箱:当计算数值时,integer会自动转为int型进行计算 自动装箱:当int型传给integer类型时,...
2018-07-17 21:49:30
3549
1
翻译 java多线程全局变量共享问题
先看下面问题:多个线程访问全局变量x,然后将x与i累加,启动10个线程,想让每个线程的输出结果都是一样的55,但是实际不是的。 package ThreadTest; public class Counter { private int x =0; // 计数方法 public void count() { for(int i=0;i<=10;i++)...
2018-07-17 20:14:09
16001
2
翻译 java多线程
1)概念:什么是线程安全:代码在多线程执行下和在单线程执行下获得的结果是一样的,就认为是线程安全的。 2)线程安全级别: 不可变对象:如String、Integer、Float、Double等包装类都是final类型的类,任何一个线程都改变不了他们的值,除非新创建一个,这样的对象不用使用任何同步手段就可以直接在多线程环境下使用。不可变对象保证了内存的可见性,对不可变对象的读取不需要...
2018-07-17 08:59:06
112
翻译 Comparable&Comparator
1)Comparable位于java.lang下;Comparator位于java.util下; 2)Comaparable是一个对象本身就已经支持自比较所需实现的接口(如String ,Integer自己就可以完成比较操作,已经实现了Camparable接口);自定义的类,要在容器如list中实现排序,可以实现Camparable接口。 package test; import java...
2018-07-16 21:33:00
103
原创 集合使用举例
1.需求:给定一个字符串中字符的使用次数?如bbbssdffsahdh 用map实现。 import java.util.Map; import java.util.TreeMap; public class Maptest { public static Map<Character,Integer> countChar(Map<Character,Intege...
2018-07-16 17:32:52
1101
翻译 java集合
一:摘要1).在理解集合之前,先回顾下数组:数组是大小固定的,且只能存放同一数据类型,如引用类型和基本数据类型。2).java集合是可以存储和操作数目不固定的一组数据,java集合只能存放引用类型的数据,不能存放基本数据类型的数据。3).java集合类是一种工具类,所有的java集合都位于java.util包中。可以存储数量不等的多个对象,可以实现基本的数据机构,如栈,队列等,除此之外还可以保存具...
2018-07-16 17:01:48
108
转载 集合常见问题
1.为什么Map接口不继承Collection 接口?Set是无序集合,并且不允许重复的元素List是有序的集合,并且允许重复的元素而Map是键值对它被视为是键的set和值的set的组合Map被设计为键值对的集合,所以不需要继承Collection 接口2.HashMap和Hashtable之间的区别?同步或线程安全Null键和Null值迭代值默认容量大小3.comparable 和 compar...
2018-07-16 15:52:04
683
转载 HashMap常见问题
hashmap什么时候需要增加容量呢?因为效率问题,JDK采用预处理法,这时前面说的loadFactor就派上了用场,当size > initialCapacity * loadFactor,hashmap内部resize方法就被调用,使得重新扩充hash桶的数量,在目前的实现中,是增加一倍,这样就保证当你真正想put新的元素时效率不会明显下降。所以一般情况下HashMap并不存在键值放满的...
2018-07-16 15:07:25
982
翻译 HashMap
1.摘要 HashMap,用于映射处理的键值对处理类型,允许null的key和null的value。JDK1.8对底层实现了优化,引入了红黑树的数据结构和扩容的优化。2.Map接口介绍 java为数据结构的映射定义了一个接口:java.util.Map。此接口主要有四个常用的实现类HashMap、TreeMap、HashTable、LinkedHashMap。 由Abstract...
2018-07-16 15:05:37
158
原创 索引
1.为什么需要索引 假设要在student表查询一个student:select * from student where name='sandy' 如果没有索引,执行该查询时,需要执行全表扫描:数据库不得不在student中查询每一行并确定该名字是不是sandy。在确定一个结果之后,不能停止查询,因为还有可能有其他值,一直执行查询到最后一条,这就是全表扫描2.索引的作用 索引的...
2018-07-08 23:26:06
84
原创 java RMI 和RPC的区别
一.RPC: 概念:Remote Procedure Call Protocol 远程过程调用协议。通过网络从计算机上请求某种调用服务。 一次RPC的调用过程大概可以分为10个步骤: 1.执行客户端调用语句,传送参数 2.调用本地系统发生网络消息 3.消息传送到远程主机 4.服务器得到消息并取得参数 ...
2018-07-08 22:41:30
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人