
Java
文章平均质量分 80
猫狗行
这个作者很懒,什么都没留下…
展开
-
JVM的学习
一、什么是虚拟机平时我们使用的电脑主机、服务器,都是传统意义上的物理机,通过具体的CPU,内存等硬件实现。虚拟机的定义:“虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。"虚拟机分为系统虚拟机和程序虚拟机。系统虚拟机是对物理机的仿真,它可以提供一个可运行完整操作系统的软件平台。例如常用的VMWare,我们在使用VM创建一个linux系统时,常常要我们为系统分配内存,CPU。由此可见系统虚拟...............原创 2022-05-19 19:02:59 · 940 阅读 · 0 评论 -
Redis的学习
Redis线程模型多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO多路复用程序会监听多个 socket,会将产生事件的 socket 放入队列中排队,事件分派器每次从队列中取出一个 socket,根据 socket 的事件类型交给对应的事件处理器进行处理。建立连接首先,redis 服务端进程初始化的时候,会将 server socket 的 AE_READABLE 事件与连接应答处理器关联。客户端 socket01 ...原创 2022-02-15 20:04:42 · 650 阅读 · 0 评论 -
多线程的深入学习
进程与线程 进程操作系统进行资源分配和调度的基本单位。进程之间的内存相互独立,难以进行资源共享,一个进程崩溃不会影响其他进程。但是进程的开销大,进程之间的切换慢。 线程cpu调度的最小单位。线程在进程之中,线程之间共享进程的内存和资源,线程挂掉会导致进程崩溃,线程开销小,多线程之间切换快。并行与并发 并行 重点在于同一个时间点,多个处理器在同时做不同的任务。从宏观和微观上都是真正的并行。 ...原创 2021-10-19 15:14:56 · 180 阅读 · 0 评论 -
Java GC机制
为什么会有GC(垃圾回收)机制因为在日常工作学习中,我们需要频繁创建对象,当对象没有被使用,处于一个被废弃的状态时,如果不对这些废弃对象进行管理清除,那么可能会造成内存溢出,内存泄漏等问题,所以就需要一个垃圾回收机制来管理这些对象,释放掉废弃对象占据的内存。判断对象可以被回收引用计数算法给对象设立一个计数器,对象被引用一次+1,没有被引用了-1,如果计数器为0了,就表示该对象没有被任何地方引用,可以回收。效率很高,但是解决不了循环依赖的问题。可达性分析算法这是Ja...原创 2021-10-12 16:14:18 · 176 阅读 · 0 评论 -
Hashtatble、HashMap、ConcurrentHashMap区别
Hashtable和HashMap的区别命名Hashtable命名没有遵循驼峰命名,HashMap命名遵循了驼峰命名。继承类Hashtable继承的是Dictionary类,HashMap继承的是AbstractMap类。线程Hashtable在多线程的情况下是线程安全的,因为Hashtable在数据操作的方法上都加上了synchronized关键字。 //Hashtable的put方法public synchronized V put(K key, V value) H原创 2021-10-11 16:43:18 · 214 阅读 · 0 评论 -
hashMap如何解决hash冲突的
如果我们在代码中创建一个对象,直接使用hashCode方法,这个hashCode方法是object类的,目的是返回一个对象的哈希码,但是会出现一个问题,不同的对象也可能会得到相同的哈希码,这就出现了哈希冲突。 hashMap源码中决定将元素要放进桶的哪个下标位置的代码如下p = tab[i = (n - 1) & hash] 有一种情况,两个哈希吗低位相同,高位不同,但是高位在&运算下并没有太大意义,所以还是得到了相同的下标。那...原创 2021-10-09 10:56:03 · 367 阅读 · 0 评论 -
静态代理与动态代理
如果在游戏登录的过程中,登录的业务代码是欢迎玩家进入游戏。//学生类public class Student { String name; int age; public Student(String name,int age){ this.name=name; this.age=age; }}//业务类public class LoginImpl implements Login{ @Override p原创 2021-09-26 17:06:49 · 113 阅读 · 0 评论 -
设计模式之工厂模式
简单工厂模式 抽象对象:把要生产的对象共同点抽离出来做成一个接口或者抽象类。 具体对象:继承实现抽象对象,更具体化。 简单工厂:判断要生产哪个对象,就调用哪个方法进行生产。//抽象对象角色abstract class Car{ String name; long price; public String toString(){ return "Car n...原创 2021-09-02 16:36:20 · 109 阅读 · 0 评论 -
类加载机制
一、触发初始化的条件 1.实例化创建对象 2.访问静态变量或为静态变量赋值 3.调用静态方法 4.使用java.lang.reflect包下的方法对类进行反射调用方法 5.子类进行初始化,如果父类没有被初始化,那么父类会进行初始化 6.指定一个含有main方法的启动主类时,会先初始化主类二、Java类的生命周期装载---------->...原创 2021-08-24 17:00:14 · 118 阅读 · 0 评论 -
抽象类和接口的区别详解
一、变量 1. 接口只能是static final 修饰的静态常量,抽象类可以有一般的成员的变量。二、构造方法 1.接口没有构造方法,抽象类可以有构造方法。三、普通方法 1.接口中的普通方法只是能抽象方法,不能够实现。 抽象类中可以有实现了的普通方法,也可以有没实现的抽象方法。 ...原创 2021-08-24 10:48:39 · 152 阅读 · 0 评论 -
ArrayList扩容机制(源代码分析)
首先分析ArrayList的变量,最主要的是以下五个。 private static final int DEFAULT_CAPACITY = 10;//默认容量 private static final Object[] EMPTY_ELEMENTDATA = {};//空数组 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};//默认空数组 ...原创 2021-08-20 15:08:20 · 350 阅读 · 1 评论