摘要: 1、安装nginx和tomcat 我这里是使用docker安装的。安装流程可参照 dockerfile 这里安装了两个tomcat,端口分别是42000和42001。第二个tomcat的首页随便加了些代码区分 2、nginx配置 #这里的域名要和下面proxy_pass的一样 upstream fe 阅读全文
posted @ 2019-03-16 23:00 CaiXinCX 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 自然排序: TreeSet 会调用集合元素的 compareTo(Object obj) 方法来比较元素之间的大小关系,然后将集合元素按升序排列。 Comparable 的典型实现: BigDecimal、BigInteger 以及所有的数值型对应的包装类:按它们对应的数值大小进行比较 Charac 阅读全文
posted @ 2019-03-16 10:31 CaiXinCX 阅读(2755) 评论(0) 推荐(0) 编辑
摘要: 今天项目开发,需要通过两个条件去查询数据库数据,同时只要满足一个条件就可以取出这个对象。所以通过取出的数据肯定会有重复,所以要去掉重复项。 如果用list集合接收两次的返回对象,那么肯定是有重复对象在list集合中,一开始我想到的是TreeSet,但知道TreeSet存放对象,一定要重写compar 阅读全文
posted @ 2019-03-16 10:29 CaiXinCX 阅读(398) 评论(0) 推荐(0) 编辑
摘要: Set中元素不可以重复,是无序的(这里无序是指存入元素的先后顺序与输出元素的先后顺序不一致) HashSet:内部的数据结构是哈希表,是线程不安全的。 HashSet中保证集合中元素是唯一的方法:通过对象的hashCode和equals方法来完成对象唯一性的判断。 如果对象的hashCode值不同, 阅读全文
posted @ 2019-03-16 10:28 CaiXinCX 阅读(12057) 评论(0) 推荐(0) 编辑
摘要: JDK1.7中 使用一个Entry数组来存储数据,用key的hashcode取模来决定key会被放到数组里的位置,如果hashcode相同,或者hashcode取模后的结果相同(hash collision),那么这些key会被定位到Entry数组的同一个格子里,这些key会形成一个链表。 在has 阅读全文
posted @ 2019-03-16 10:27 CaiXinCX 阅读(608) 评论(0) 推荐(0) 编辑
摘要: HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。 1、HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized(同步)的,并可以接受nu 阅读全文
posted @ 2019-03-16 10:26 CaiXinCX 阅读(137) 评论(0) 推荐(0) 编辑
摘要: HashMap 是一个用于存储Key-Value 键值对的集合,每一个键值对也叫做Entry。这些个Entry 分散存储在一个数组当中,这个数组就是HashMap 的主干。 HashMap 数组每一个元素的初始值都是Null。 1. Put 方法的原理 调用Put方法的时候发生了什么呢? 比如调用 阅读全文
posted @ 2019-03-16 10:25 CaiXinCX 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 主要设计上的变化有以下几点: 1、不采用segment而采用node,锁住node来实现减小锁粒度。 2、 设计了MOVED状态 当resize的中过程中 线程2还在put数据,线程2会帮助resize。 3、使用3个CAS操作来确保node的一些操作的原子性,这种方式代替了锁。 4、sizeCtl 阅读全文
posted @ 2019-03-16 10:24 CaiXinCX 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 一、背景: 1、线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 2、效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈 阅读全文
posted @ 2019-03-16 10:23 CaiXinCX 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 1、 Vector、ArrayList都是以数组(是Object类型)的形式存储在内存中,LinkedList则以链表的形式进行存储 2、 如果是jdk6的话,采用Array.of()方法来生成一个新的数组,如果是jdk5.0的话,使用的是System.arraycopy方法(将数组拷贝) 3、 L 阅读全文
posted @ 2019-03-16 10:21 CaiXinCX 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 一、JVM性能调优策略 二、性能调优 1、Java线程池(java.util.concurrent.ThreadPoolExecutor) 大多数JVM6上的应用采用的线程池都是JDK自带的线程池,之所以把成熟的Java线程池进行罗嗦说明,是因为该线程池的行为与我们想象的有点出入。Java线程池有几 阅读全文
posted @ 2019-03-16 10:20 CaiXinCX 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 8位:Byte(字节型) 16位:short(短整型)、char(字符型) 32位:int(整型)、float(单精度型/浮点型) 64位:long(长整型)、double(双精度型) boolean(布尔类型) 1)四种整数类型(byte、short、int、long): byte:8 位,用于表 阅读全文
posted @ 2019-03-16 10:17 CaiXinCX 阅读(109) 评论(0) 推荐(0) 编辑
摘要: Collection List LinkedList 非同步 ArrayList 非同步,实现了可变大小的元素数组 Vector 同步 Stack Set 不允许有相同的元素 Map HashTable 同步,实现一个key--value映射的哈希表 HashMap 非同步, WeakHashMap 阅读全文
posted @ 2019-03-16 10:15 CaiXinCX 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 1)对于==,比较的是值地址是否相等 如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的地址 2)equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同 对于equals方法,注意:equals方法不能作用于基 阅读全文
posted @ 2019-03-16 10:12 CaiXinCX 阅读(318) 评论(0) 推荐(0) 编辑