
Java
Java的基础知识学习
G0o0o0o
这个作者很懒,什么都没留下…
展开
-
品抽象类和接口
抽象类和接口1. 介绍抽象类何为抽象类:在Java中使用abstract修饰的类为抽象类。如何给抽象类下定义:百度给出的定义是:抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。抽象类是不完整的,它只能作为基类。Java官方给出的定义是:如果一个类没有包含足够的信息来描述一个具体的对象,这样的类称之为抽象类。用开...原创 2020-02-19 13:33:26 · 113 阅读 · 0 评论 -
CMS垃圾收集器
CMS垃圾收集器文章目录CMS垃圾收集器1. 触发条件:2. 收集步骤:3. 步骤详解3.1. 初始标记3.2. 并发标记3.3. 预清除3.4. 可被中止的预清除3.5. 重新标记3.6. 并发清除3.7. 并发置4. CMS需要注意的问题:4.1. 减少remark阶段停顿4.2. 内存碎片问题4.3. 处理器资源敏感4.4. 浮动垃圾5. 参考 CMS是老年代垃圾收集器,在收集过程中可以与用户线程并发操作。它可以与Serial收集器和Parallel New收集器搭配使用。CMS牺牲了系统的吞原创 2020-10-19 10:13:18 · 525 阅读 · 1 评论 -
BigDecimal精度和比较问题
BigDecimal精度和比较问题public class BigDecimalTest { public static void main(String[] args) { BigDecimal b1 = new BigDecimal("300000.00000"); BigDecimal b2 = new BigDecimal("300000.000"); System.out.println("b1 = " + b1.toString() +原创 2021-02-23 14:31:43 · 1052 阅读 · 0 评论 -
Git命令学习笔记
Git命令学习笔记git# 当前目录初始化git init # 初始化文件夹git init "project-name"# 从url上克隆下来git clone "url"# 查看工作目录和暂存目录的状态git status# 查看版本历史git log# 显示每次更新的修改文件的统计信息,每个提交都列出了修改过的文件,以及其中添加和移除的行数,并在最后列出所有增减行数小计git log --statgit config# 配置全局变量git config --globa原创 2021-01-05 23:22:51 · 108 阅读 · 0 评论 -
图论 ——buildGraph、DFS、BFS、Kruskal、Prim、TopologicalSort、dijkstra
图论 ——buildGraph、DFS、BFS、Kruskal、Prim、TopologicalSort、dijkstra文章目录图论 ——buildGraph、DFS、BFS、Kruskal、Prim、TopologicalSort、dijkstra1. buildGraph2. DFS3. BFS4. Kruskal5. Prim6. TopologicalSort7. dijkstra8. 完整code抛开冗余的知识点,通过代码了解 buildGraph、DFS、BFS、Kruskal、Prim、原创 2020-08-22 10:05:03 · 373 阅读 · 1 评论 -
Java序列化——Serializable和Externalizable
Java序列化——Serializable和Externalizable1. 继承Serializable接口import java.io.Serializable;/** * @author gyh * @csdn https://blog.youkuaiyun.com/qq_40788718 * @date 2020/8/12 22:51 */public class User implements Serializable { private static final long s原创 2020-08-13 00:08:26 · 214 阅读 · 0 评论 -
equals和hashCode的约定(重写equals必须重写hashCode)
为什么重写equals必须重写hashCode1. Object中equals、hashCodepublic native int hashCode();public boolean equals(Object obj) { return (this == obj);}首先看一下equals方法,Object中默认比较两个对象的地址。也就是说如果一个类默认的equals,就比较地址。而反观hashCode方法,我们先来看一下hashCode注释 /** * Retu原创 2020-08-08 14:05:44 · 1455 阅读 · 3 评论 -
java.lang包下的类
java.lang包下的类1. Objectobject是所有类的超类,所有对象都实现了这个类的方法。所有的方法都是native方法,其中最常用的equals、toString、getClass、hashCode。2. Number抽象类Number是表示数字值可转换为基本数据类型平台类的超类.可以看出byteValue和shortValue不是抽象方法 public byte byteValue() { return (byte)intValue(); }原创 2020-07-20 21:46:43 · 1969 阅读 · 0 评论 -
StringBuffer源码分析
StringBuffer源码分析1. String、StringBuilder、SpringBuffer关系1. StringString类是java.lang包下的类,也是Java程序员最熟悉的类,它代表着字符串。同时String被final关键字修饰,说明它是不可被继承的类,内部的所有成员方法都是final方法。String内部是使用一个char数组来维持着一个字符串。2. StringBuilderString对象不能被更改,也就是说字符串是不可以被改变的。那如果想要改变一个字符串就要用到S原创 2020-05-08 22:44:04 · 277 阅读 · 0 评论 -
剖析Iterator原理
Iterator迭代器文章目录Iterator迭代器1. 集合的遍历方法2. Iterator和Iterable的区别3. Iterator循环原理4. foreach循环原理1. 集合的遍历方法 List<Integer> list = new ArrayList<>() ; //1.索引遍历 for (int i=0 ; i&l...原创 2020-04-27 16:27:27 · 623 阅读 · 0 评论 -
TCP和UDP
TCP和UDP1. TCPTCP,真名是传输控制协议,是一个可靠的,面向连接的,基于字节流的传输层协议。TCP保证数据的到达,并且是按照顺序的。1.1 为什么TCP可靠首先是TCP在建立连接时会进行三次握手,断开连接时会进行四次挥手。确认应答机制:TCP将每个字节的数据都进行编号,也就是序列号,接收端会进行确认,给发送端返回一个确认序列号,如果有数据丢失,就会进行重发。超时重传机制:...原创 2020-04-17 14:45:57 · 170 阅读 · 0 评论 -
HTTP和HTTPS
HTTP和HTTPS文章目录**HTTP和HTTPS**1. HTTP协议1.1 HTTP是如何传输数据的1.2 Socket1.3 基于HTTP的组件系统1.4 POST和GET区别2. HTTPS协议2.1 密码学基础2.2 对称加密和非对称加密2.2.1 对称加密2.2.2 非对称加密2.2.3 认证2.2.4 优缺点比较2.3 SSL/TLS2.3.1 SSL2.3.2 TLS1. H...原创 2020-04-17 14:02:10 · 266 阅读 · 0 评论 -
Thread源码分析
Thread源码分析1. Thread 介绍Thread 是程序中执行的线程。Java虚拟机允许应用程序同时执行多个执行线程。每个线程都有优先权。 具有较高优先级的线程优先于优先级较低的线程执行。 每个线程可能也可能不会被标记为守护程序。 当在某个线程中运行的代码创建一个新的Thread对象时,新线程的优先级最初设置为等于创建线程的优先级,并且当且仅当创建线程是守护进程时才是守护线程...原创 2020-04-16 17:20:20 · 270 阅读 · 0 评论 -
手写HashMap(数组+链表;可扩容;指定table最大长度)
手写HashMap(数组+链表;可扩容;指定table最大长度)看过HashMap后,心血来潮,凭感觉写了这个“青春版”HashMap。虽然只有数组+链表,但是有那么个形状了。简单测试已经是没什么问题,后续会改进。import org.apache.commons.lang.NullArgumentException;import java.io.Serializable;impo...原创 2020-03-29 20:53:33 · 548 阅读 · 0 评论 -
小白分析一波ConcurrentHashMap
ConcurrentHashMap 1.8源码分析目录ConcurrentHashMap 1.8源码分析1. Overview2. 历史演变3.属性4. Node类1. Node2. TreeBin3. TreeNode4. ForwardingNode5. 插入操作——putVal6. 初始化table——sizeCtl7. 获取Map大小——size和mappingCount8. size+...原创 2020-03-23 10:28:47 · 522 阅读 · 0 评论 -
HashMap源码分析和面试问题
HashMap源码分析作为小白,呕心沥血了两天,仔细分析了HashMap的一些源码,特意作此笔记,日后也算是证明自己曾经来过吧!文章目录HashMap源码分析1. HashMap介绍2. HashMap继承的接口3. HashMap属性4. 内部类5. 构造方法6. 重要方法1. resize2. hash3. put4. get5. remove6. contains7. replace7....原创 2020-03-04 12:56:06 · 193 阅读 · 0 评论 -
细说Java内部类
细说Java内部类1. 内部类内部类是指一个外部类在其内部再定义一个类,内部类是作为外部类的一个成员,并且依附于外部类而存在。内部类主要分为:成员内部类、局部内部类、匿名内部类。内部类存在有何意义内部类之所以存在,是为了更好的解决Java中单继承的缺陷,因为内部类可以独立继承某个类或是接口,外部类的继承对于内部类没有任何影响。2. 成员内部类1. 非静态成员内部类public ...原创 2020-02-24 20:31:26 · 304 阅读 · 0 评论 -
JVM理解
JVM1. java文件编译成class文件对.java文件编译成.class文件过程的猜想:首先是拿到文件词法分析语法分析语法树字节码生成器生成JVM所认识的class文件一次编译,到处运行2. 类加载机制1. 装载查找class文件将字节流所代表的静态存储结构转化为方法区的运行时数据结构->堆生成一个代表此类的class对象(反射),作为该类数据访问的入口...原创 2019-12-28 17:17:15 · 281 阅读 · 0 评论 -
HttpSession使用和源码分析
HttpSession源码HttpSession接口位于javax.servlet.http包下,和cookie位于同一个包源码如下:public interface HttpSession { //返回session创建时间 public long getCreationTime(); //返回sessionId,Id由服务器自动创建,不会重复 public Str...原创 2019-12-19 10:51:06 · 763 阅读 · 0 评论 -
Cookie使用和分析源码
Cookie常用属性javax.servlet.http 下 private static final long serialVersionUID = 1L; //cookie名称,final修饰,一旦创建,不得修改。 private final String name; //cookie的值 private String value; //...原创 2019-12-18 23:49:31 · 324 阅读 · 0 评论 -
JVM运行时数据区里有什么
来自《深入了解Java虚拟机》1. 线程共享的数据区1.1 方法区又叫Non-Heap,属于各个线程所共有的,存储已经被加载的类信息,常量,静态变量,即时编译后的代码,还有运行时常量池。JDK1.2~JDK1.6 Hotspot使用永久代实现方法区。JDK1.7开始移除永久代,符号表被移动到 Native Heap中,字符串常量和类引用被移动到 Java Heap中。JDK1.8用...原创 2019-11-20 23:07:23 · 145 阅读 · 0 评论 -
Request页面跳转和Response重定向
Response重定向response.sendRedirect("地址");浏览器主动转向该地址,URL会改变,浏览器会重新向服务器发送Request。优点:Response可以进行跨域。缺点:Request的数据会失去,只能进行页面的跳转。Request页面跳转RequestDispatcher dispatcher = request.getRequestDispatcher(...原创 2019-11-11 10:21:38 · 1830 阅读 · 0 评论 -
Java之优先队列—PriorityQueue
PriorityQueuepriorityQueue是Java封装的优先无界队列,它基于的是优先级堆。对于基本数据类型默认小顶堆,对于引用类型基于的是Comparator接口。如果引用类型没有基于Comparator接口的外比较器,则会报错。构造方法 public PriorityQueue() { //调用的是有参构造方法 //优先队列初始化大小为11,比较器为空 ...原创 2019-10-21 11:51:59 · 861 阅读 · 0 评论 -
Java常量池
常量池常量池分为两种,静态常量池和动态常量池(运行时常量池)。静态常量池静态常量池位于Class文件,每一个编译后的类都一个属于自己的静态常量池,用于存放编译期生成的各种字面量和符号引用。当类加载时,这部分内容将进入动态常量池存放。动态常量池(运行时常量池)运行时常量池是方法区的一部分,自然受到方法区内存的限制,当运行时常量池无法再申请到内存时会抛出OutOfMemoryError异常。...原创 2019-08-18 14:29:45 · 246 阅读 · 0 评论 -
Java虚拟机栈
Java虚拟机栈Java虚拟机栈和他所属线程的生命周期是相同的,即和线程一起创建,也一起销毁。Java虚拟机栈是Java方法执行的内存模型。与对象内存分配关系最紧密的是堆和栈,而其中的栈就是Java虚拟机栈。栈帧每个方法执行时会创建一个相对应的栈帧,用来存储方法的局部变量表,操作数栈,方法出口,动态链接等。方法从开始到执行完毕,就标志着栈帧的入栈和出栈。类似于每个方法的一个唯一标记。...原创 2019-08-17 16:24:15 · 122 阅读 · 0 评论 -
微信小程序常用到的方法(持续更新)
一、request方法 wx.request({ //URL 请求地址 url: 'https://localhost:8888/login/get/code', //请求方式 method: 'post', // header: { 'content-type': 'application/x-ww...原创 2019-08-09 15:09:24 · 424 阅读 · 0 评论 -
LinkedList知识点
LinkedList知识点LinkedList类继承了AbstractSequentialList抽象类,同时继承了List,Deque,Cloneable,Serializable接口。LinkedList采用的双向链表进行存储,结点用静态内部类Node。LinkedList有两个构造方法:一 构造方法public LinkedList() {}无参构造方法publi...原创 2019-07-31 21:24:49 · 393 阅读 · 0 评论