关于优化
collection接口包括 list接口 set接口
lis接口t包括ArrayList类 LinkedList类 Vector类
set接口包括HashSet类 SortedSet接口
SortedSe接口包括TreeSet类
HashSet类包括HashMap
TreeSet类包括TreeMap(底层是可排序的二叉树)
Map接口包括HashMap类 HashTable类 SortedMap接口
SortedMap接口包括TreeMap类
HashTable类 包括Properties类
HashMap类 底层是散列表或者哈希表
ArrayList底层实现的是数组
优点:查询效率高因为数组是用来存放相同数据类型的数据结构,在内存空间中,数组中元素的地址是连续的每一个元素都对应着一个下标,根据下标可以快速定位数组中元素的位置缺点:增删效率低
LinkedList底层实现是双向链表
优点:增删效率高因为链表中的元素
缺点:查询效率低。因为是不连续的,如果要查询链表中的某一个元素,只能做全链表扫描
list集合特点有序可以重复
set集合特点无序不可重复
Map集合特点:以键值对的方式存放数据其中key无序不可重复
散列表不是一个纯数组也不是一个纯链表,是数组和链表的结合体
Entry是链表上的一个节点
Map map=new HashMap();当执行map.put(key,value)操作的时候的原理
首先调用key部分的hahcode方法,获取key的hash值,这个hash值会根据hash算法,将hash值转换
为对应的数组元素的下标
如果当前数组下表的我只还没有单项链表,那么直接将key和value封装为一个enry对象这就完成了存储
如果当前数组下表的位置已经存在单项链表,并且单项链表上已经存在了许多节点,就调用key的equals方法个单项链表上的节点依次进行比较
如果返回的是false,那么直接将key和value封装为一个enry对象这就完成了存储
如果比较结果有返回的true,放弃添加该元素,新元素devalue会将就元素value替换掉
没有重写hashcode会出现什么情况?
如果没有重写hahscode,那么默认调用的Object类中提供的hashcode方法这个方法的返回值是根据对象的内存地址演变的
Java优化
写缓存用到单例模式(懒汉模式 饿汉模式)
1.首先构造现初始化对象
2.提供一个公开的静态的方法
3.提供一个变量(方法区)
数据库优化:
数据库设计三范式(必须有主键 不能传递依赖 不能产生部分依赖)
使用批量删除
尽量减少嵌套查询
尽量减少group和having子句的应用
js优化 jQuery
确保代码尽量简洁
压缩代码
异步装入跟踪代码
js和jsp区别和联系
javaScript是js的简称 ,是一种脚本语言,嵌套在网页中实现各种功能
jsp是 Java server page(JAVA SERVER PAGE)基于Java服务器的网页技术
中间件优化
调整内存
调整线程数
在运行环境下屏蔽控制台日志的输出
总结很重要哦 方法得当,坚持会有奇迹哦