
Java
java必要基础知识
城溪羡鱼
写博客少说废话
展开
-
maven小总结
settings.xmlsettings.xml位置/Users/yicheng/.m2/settings.xml也可从idea的maven settings里找#maven-deploy传递依赖包给远程的私服-Dmaven.test.skip=true //跳过编译、测试-Dfile=/a/b/xx.jar //jar包文件地址,绝对路径-DgroupId=com.m原创 2021-11-17 19:30:13 · 102 阅读 · 0 评论 -
java七大原则
1 单一原则不管是类、接口、方法,职责要单一,降低耦合2 开闭原则开是指可以新增代码,闭是指新增代码不能涉及到修改原有的代码3 替换原则子类可以替换他的父类,也就是子类(尽量)不需要重写父类的方法4 依赖倒置高层模块底层模块依赖于抽象,而不是高层模块依赖底层模块细节依赖于抽象5 接口隔离原则一个类对另一个类存在依赖关系,应该使用最小接口来隔离使用6 迪米特法则一个对象对其他对象,保持知道其他对象最少的信息7 合成复用原则一个类使用另一个类的代码,尽量不适原创 2021-08-02 21:39:50 · 1974 阅读 · 0 评论 -
Integer有坑
package StudyDemo.cyc_javase;public class cyc_integer { public static void main(String[] args) { Integer i1=new Integer(12);// Integer i2=new Integer(12); System.out.println(i1==i2);//“false” Integer i3=126;//自动装箱原创 2021-07-25 10:03:44 · 192 阅读 · 1 评论 -
ThreadLocal扫盲
ThreadLocal是每个线程独有的存储类,存储的对象是在线程之间天然隔离的。(1)threadlocals是当前线程的内部类,也就是说每new一个线程就有一个map,也即是意味着一个线程就有独有的一个map(2)map里面的entry是继承于弱引用,构建的时候会创建一个弱引用,指向那个key(3)为什么是弱引用,反证法,如果是强引用,那么销毁的时候设置key为空,但是因为存在强引用则无法清理。除非map不用了。但是map一般存活长。(4)当不使用,设置key为空,当key为空的时候,value原创 2021-06-25 22:05:18 · 88 阅读 · 0 评论 -
Arrays.sort()和Collections.sort()的源码分析
Arrays.sort()public static <T> void sort(T[] a, Comparator<? super T> c) {//<? super T>表示都是类型T的父类,包括T自己(特别注意) if (c == null) { sort(a); } else { if (LegacyMergeSort.userRequested)原创 2020-11-07 10:24:04 · 120 阅读 · 0 评论 -
正确遍历删除集合元素
正确遍历删除集合元素(1)for循环遍历(2)for-each遍历(3)Iterator遍历(1)for循环遍历假设想删除集合里面所有的“b”,用普通For循环会失败,这是因为size是变化的,当删除第一个b之后,元素会往前移且size从4变成了3,此时下一次遍历会看到的是c而不是第二个b。因此,没有删除干净。package blog;import java.util.ArrayList;import java.util.List;public class HowIteReEm {publ原创 2020-10-13 14:31:37 · 1348 阅读 · 0 评论 -
ArrayList的扩容机制
转载: https://juejin.im/post/6844903777544175623初始容量ArrayList有多个不同的构造函数,不同的构造函数的初始容量是不同的。快速看一下ArrayList源码里关于元素存放的几个私有属性:// 默认容量是10private static final int DEFAULT_CAPACITY = 10;// 如果容量为0的时候,就返回这个数组private static final Object[] EMPTY_ELEMENTDATA = {};.转载 2020-09-26 19:21:23 · 900 阅读 · 0 评论 -
【3w1h1p】ArrayList的插入删除真的比LinkedList慢吗?
嗯…ArrayList的插入删除真的比LinkedList慢吗?代码验证直接上代码验证:package ShuJUandSuanFa;import java.util.ArrayList;import java.util.LinkedList;public class ArrayTest1 { public static void main(String[] args) { LinkedList<Integer> linked =new LinkedLis原创 2020-07-30 17:02:16 · 504 阅读 · 0 评论 -
【3w1h1p】了解HashMap!
首先上图懵逼~,谷歌一搜,斯。。。Java源码分析:HashMap 1.8 相对于1.7 到底更新了什么?美团面试题:Hashmap的结构,1.7和1.8有哪些区别,史上最深入的分析Java中Map接口HashMap与HashTable的区别及HashMap深入理解JDK之HashMap原理解析...原创 2020-07-28 21:51:54 · 191 阅读 · 0 评论 -
【3w1h1p】TCP三次握手和四次挥手
三次握手网络上进行连接通信的机制核心思想:是让客户端和服务端互相知道双方是可接受和发送的,从而保证双方能够正常通信。举个例子,在聊天软件上1、A:在吗?我有事想和你说 2、 B:好,现在我有空,你说吧3、A:这个bug我改不了过程1、客户端发送请求给服务端,服务端接收。这个时候服务端知道这个客户端的发送是正常的,服务端B对这个客户端A的接受也是正常的2、服务端响应客户端的请求,客户端接收。这个时候客户端知道自己的发送和接受是正常的,也知道服务端的发送和接收是正常的。3、客户端发送自己的需原创 2020-07-13 11:45:53 · 201 阅读 · 0 评论 -
【3w1h1p】String类做一些总结
@String类String源码String特性1)String类被final关键字修饰,意味着String类不能被继承,并且它的成员方法都默认为final方法;字符串一旦创建就不能再修改。2)String类实现了Serializable(序列化)、CharSequence(字符串规范)、 Comparable(整体排序)接口。3)String实例的值是通过字符数组实现字符串存储的。如何构建对象String str = “aa”;直接将字符串常量复制给str(字符串常量池)String st原创 2020-06-14 13:03:09 · 252 阅读 · 0 评论 -
【3w1h1p】Java堆内存和栈内存搭配创建对象解释
Java堆内存和栈内存堆内存:在程序创建一个对象时,这个对象将被保存到堆内存中,不仅是因为为了方便反复利用,而且因为对象的创建成本较大,这个时候运行的数据区就是堆内存。栈内存:每个方法都有一个自己的栈内存,在这个方法内定义的变量会随着方法执行而压栈(入栈)随着方法结束而销毁。在Java中,声明的对象是先在栈内存中为其分配地址空间,再对其进行实例化后则在堆内存中为其分配地址。栈区->...原创 2020-03-01 17:04:14 · 231 阅读 · 0 评论