Java基础
csdn_9527666
这个作者很懒,什么都没留下…
展开
-
为什么HashMap负载因子达到0.75 就要扩容?
为什么选择了0.75作为HashMap的加载因子呢?这个跟一个统计学里很重要的原理——泊松分布有关。描述单位时间内随机事件发生的次数的概率分布。P 表示概率,N表示某种函数关系,t 表示时间,n 表示数量,λ 表示事件的频率。随机哈希码,在扩容阈值(加载因子)为0.75的情况下,节点出现在频率在Hash桶(表)中遵循参数平均为0.5的泊松分布。忽略方差 则 lambda * t = 0.5 此时*0:0.60653066*1:0.30326533*2...原创 2020-07-27 00:48:04 · 1258 阅读 · 0 评论 -
hash冲突解决
1 开放寻址法如冲突则根据指定步长向后寻找直到找到空位或没有位置步长算法:1.1 线性探查 步长为1 如threadlocalkey1:hash(key)+0key2:hash(key)+1key3:hash(key)+21.2 平方探测法 计算下一次的步长key1:hash(key)+0key2:hash(key)+1^2key3:hash(key)+2^21.3 随机探测法 步长为随机生成的数 疑问:查询时如何查?如遍历查询有何意义?缺点:查找性...原创 2020-07-26 23:29:42 · 123 阅读 · 0 评论 -
内部类
什么是 内部类 外部类?外部类:只能定义一个类名与文件名完全 致的公开类,使用public class 关键字来修饰。内部类:任何一个类都可以在内部定义另外一个或多个类内部类本身就是 类的一个属性属性字段 private static String str由访问控制符、是否静态、类型、变量名内部类 private static class Inner{},...原创 2020-03-31 12:44:26 · 367 阅读 · 0 评论 -
类内方法
除构造方法外,类中还可以有三类方法实例方法、.class 字节码文件加载之后,实例方法并不会被分配方法人口地址 , 只有在对象创建之后才会被分配方法人口地址实例方法可以调用静态变量和静态方法 应尽量使用 类名名.静态方法”来调用静态方法:类方法( 1 )静态为法中不能使用实例成员变量和实例方法。( 2 )静态为法不能使用 super 和 this 关键字 , 这两个关键...原创 2020-03-31 12:43:43 · 412 阅读 · 0 评论 -
封装 继承 多态 抽象 拷贝
面向对象“四大特性 ” :封装、继承、多态、“抽象 ”封装功能内聚 降低耦合度以什么样的方式暴露哪些信息对属性、数据、部分内部敏感行为实现隐藏设计模式七大原则之一的迪米特法则就是对于封装的具体要求,即 A 模块使用B 模块的某个接口行为,对 B 模块中除此行为之外的其他信息知道得尽可能少。在不知道什么样的访问控制权限合适的时候,优先推荐使用 private控制...原创 2020-03-31 12:41:16 · 140 阅读 · 0 评论 -
Class
类的定义由访问级别、public和无访问控制符类型、class、 interface、 enum类名、是否抽象、是否静态、泛型标识、继承或实现关键字、父类或接口名称等组成。类的组成:成员和方法成员变量、public protect private 方法 getset方法定义类的过程就是抽象和封装的过程接口与抽象类则是对实体类进...原创 2020-03-31 12:40:37 · 134 阅读 · 0 评论 -
反射的使用
Class对象虚拟机在class文件的加载阶段,把类信息保存在方法区数据结构中,并在Java堆中生成一个Class对象,作为类信息的入口。获取Class对象一般有三种方式: 通过实例变量方式 代码块 Check check = new Check(); Class<? extends Check> clazz = che...原创 2020-03-31 11:03:37 · 130 阅读 · 0 评论 -
反射
Java 反射效率低主要原因是:1 Method#invoke 方法会对参数做封装和解封操作2 需要检查方法可见性3 需要校验参数4 反射方法难以内联5 JIT 无法优化代码块public class Reflect { public static void main(String[] args) throws Exception { P...转载 2020-03-30 12:03:07 · 484 阅读 · 0 评论 -
Queue
public interface Queue<E> extends Collection<E> { // 队列中增加元素 boolean add(E e); // 队列中增加元素 returns false if full boolean offer(E e); // 删除队列头结点 E remove();...原创 2020-03-29 23:21:35 · 109 阅读 · 0 评论 -
Collection
public interface Collection<E> extends Iterable<E> { // 查询操作 // 当前集合元素数目 int size(); // 集合是否为空 boolean isEmpty(); // 集合是否包含某个元素 boolean contains(Object o); ...原创 2020-03-29 23:20:51 · 154 阅读 · 0 评论 -
BlockingQueue
public interface BlockingQueue<E> extends Queue<E> { boolean add(E e); boolean offer(E e); // 如队列空间不足 进行无限期等待 void put(E e) throws InterruptedException; // 如队列空间...原创 2020-03-29 23:19:58 · 80 阅读 · 0 评论 -
AbstractQueue
public abstract class AbstractQueue<E> extends AbstractCollection<E> implements Queue<E> { // 可被子类/ 同包/ 内部 使用的构造函数 protected AbstractQueue() { } // 队列中增加一个...原创 2020-03-27 15:31:17 · 276 阅读 · 0 评论 -
AbstractCollection
public abstract class AbstractCollection<E> implements Collection<E> { protected AbstractCollection() { } // Query Operations // 获得迭代器对象 public abstract Iterator...原创 2020-03-27 15:30:38 · 160 阅读 · 0 评论 -
正负数 原码 补码 反码 位运算基础
负数的表示 最高位 表示正负号 0正 1负对于8位 有符号存储01111111 表示+12710000000 表示-128正数 原码、补码、反码 都一样负数的补码 是对应正数二进制表示 取反 +1 的结果用补码进行运算使减法 也可以使用加法器实现|| && 可触发短路功能^ 在哈希算法中用于离散哈希值...原创 2020-03-27 15:19:29 · 313 阅读 · 0 评论 -
TreeMap
SortedMap接口表示它的 Key是有序、不可重复的TreeMap 依靠 Comparable 或Comparator 来实现 Key 的去重HashMap 是 使用 hashCode 和 equals 实现去重 /** * Compares two keys using the correct comparison method for this TreeMap...原创 2020-03-27 15:16:39 · 150 阅读 · 0 评论 -
HashMap
1 成员变量 /////// 类属性 // 默认初始化容量大小 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 // 默认最大容量大小 超过此值的容量 均设为此容量 static final int MAXIMUM_CAPACITY = 1 << 30; ...原创 2020-03-27 14:58:41 · 152 阅读 · 0 评论 -
日志
原创 2019-12-22 18:55:52 · 152 阅读 · 0 评论 -
异常
原创 2019-12-22 14:55:21 · 133 阅读 · 0 评论 -
Java定义二维数组
float[][] numthree; //定义一个float类型的2维数组numthree=new float[5][5]; //为它分配5行5列的空间大小numthree[0][0]=1.1f; //通过下标索引去访问 1行1列=1.1numthree[1][0]=1.2f;转载 2017-09-09 16:16:56 · 605 阅读 · 0 评论 -
String.charAt()
描述java.lang.String.charAt() 方法返回指定索引处的char值。索引范围是从0到length() - 1。对于数组索引,序列的第一个char值是在索引为0,索引1,依此类推,声明以下是声明java.lang.String.charAt()方法public char charAt(int index)参数index -- 这是该指数的c转载 2017-09-09 17:12:44 · 12968 阅读 · 0 评论 -
sc.next() 和 sc.nextLine 的区别
区别: next()读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。 nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符转载 2017-09-09 18:49:36 · 27029 阅读 · 4 评论 -
浅析Java中的final关键字
浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正。 请尊重作者劳动转载 2017-09-20 09:45:05 · 312 阅读 · 0 评论 -
Java垃圾回收机制与典型的垃圾回收算法
说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚拟机中,有哪些典型的垃圾收集转载 2017-10-10 09:08:04 · 729 阅读 · 0 评论 -
CLASSLOADER详解
一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在转载 2017-10-10 18:40:09 · 316 阅读 · 0 评论 -
Java优先队列 学后杂记
//本人菜鸟 如有错误求指出实现优先队列 首先需要解决存储问题 链式存储结构?顺序存储结构? 由于优先队列默认使用最小堆实现 即 根结点值小于其叶子节点值 。也是一种完全二叉树 在顺序存储时 其根结点 与其对应的孩子节点有特定的 下标关系 采用数组存储数据 当父结点下标(从0开始)为 i时 其左孩子下标为2*i+1 右孩子为2*i+2。这样解决了优先队列数据存储问题。接原创 2018-01-15 13:42:33 · 456 阅读 · 0 评论 -
order by 原理和优化
转载于https://blog.csdn.net/u013308135/article/details/76796770/原理利用索引的有序性获取有序数据利用内存/磁盘文件排序获取结果 1) 双路排序:是首先根据相应的条件取出相应的排序字段和可以直接定位行数据的行指针信息,然后在sort buffer 中进行排序。 2)单路排序:是一次性取出满足条件行的所有字段,然后在sort buffer中进行...转载 2018-06-24 16:58:55 · 4504 阅读 · 0 评论 -
join优化
转自 https://www.cnblogs.com/zhengyun_ustc/p/slowquery1.html写在前面的话: 不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程; 不要求每个人一定知道线上(现在或未来)哪张表数据量大,哪张表数据量小; 但把mysql客户端(如SQLyog,如HeidiSQL)放在桌面上...转载 2018-06-25 10:58:19 · 170 阅读 · 0 评论 -
DDD
domain drive design 中的模式语言是相互关联的软件模式的集合,任何模式都会引用并依赖于其他模式。领域:一个组织所做的事情以及其中所包含的一切。在ddd中 一个领域被分为多个子域。例子:在线商超系统:在整个领域中,零售商向买家展示不同的产品,允许买家下单、付款,并安排物流。在整个领域中,划分为四个主要的子域:1产品目录,2订单,3发票,4物流。如果不采用DDD,将会导致少...原创 2019-05-11 23:27:17 · 374 阅读 · 0 评论 -
innodb索引
为什么用索引:1 大大减少服务器扫描的数据量2 索引帮助服务器避免排序和临时表3 顺序读耗时远远小于随机IO耗时索引仅仅适用于中到大型的表,起到很好的效果对于小表,全表扫描更高效对于极大的表,建立索引的代价显著上升,采用分区技术更好的解决问题。进行分库分表。b+树的中间节点不保存数据,所以磁盘页能容纳更多节点元素,更“矮胖”(提高磁盘效率);b+树查询必须查找...原创 2019-05-25 19:53:24 · 225 阅读 · 0 评论 -
数组、List和ArrayList的区别
有些知识点可能平时一直在使用,不过实际开发中我们可能只是知其然不知其所以然,所以经常的总结会对我们的提高和进步有很大的帮助,这里记录自己在工作之余的问题,持续更新,欢迎高手斧正. 数组、List和ArrayList的区别 数组在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改元素也很简单,比如:string[] s=new string[3];//赋值转载 2017-09-15 08:40:50 · 211 阅读 · 0 评论