01 2020 档案
摘要:package com.gaopeng.interview; public class StudentHasComp implements Comparable<StudentHasComp> { private String name; private Integer age; private I
阅读全文
posted @ 2020-01-30 20:53
gaopengpy
摘要:package com.gaopeng.interview; public class Student { private String name; private int age; private int height; public String getName() { return name;
阅读全文
posted @ 2020-01-30 20:48
gaopengpy
摘要:JDK动态代理: 1、只能代理实现了接口的类。 2、没有实现接口的类不能实现JDK的动态代理。 CGLIB动态代理: 1、针对类来实现代理的,但因为采用的是继承,所以不能对final修饰的类进行代理。 2、对指定目标类产生一个子类,通过方法拦截技术拦截所有父类方法的调用。
阅读全文
posted @ 2020-01-27 14:56
gaopengpy
摘要:package com.gaopeng.multithread; /** * 简单实现一个死锁例子 * * @author gaopeng * */ public class DeadLockTest { // 创建资源 private static Object resourceA = new O
阅读全文
posted @ 2020-01-18 11:15
gaopengpy
摘要:为什么JVM要采用双亲委派机制加载类呢? 任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。 也就是说,判断2个类是否“相等”,只有在这2个类是由同一个类加载器加载的前提下才有意义,否则即使这2个类来源于同一个Class
阅读全文
posted @ 2020-01-16 21:32
gaopengpy
摘要:一、采用对象的wait() notify()方法实现 package com.gaopeng.programming; import java.util.concurrent.TimeUnit; /** * 经典笔试题:交替打印奇偶数 采用对象的wait() notify()方法实现 * * @au
阅读全文
posted @ 2020-01-14 18:47
gaopengpy
摘要:AOF: Append Only File RDB会丢失最后一次备份的rdb文件,但是其实也无所谓,其实也可以忽略不计,毕竟是缓存,丢了就丢了,但是如果追求数据的完整性,那就的考虑使用AOF了。 AOF特点 以日志的形式来记录用户请求的写操作。读操作不会记录,因为写操作才会存存储。 文件以追加的形式
阅读全文
posted @ 2020-01-13 23:25
gaopengpy
摘要:RDB: Redis DataBase 1. 什么是RDB RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动redis后,则会恢复。 2. 备份与恢复 内存备份 --> 磁盘临时文件临时文件 --
阅读全文
posted @ 2020-01-13 23:14
gaopengpy
摘要:redis设置配置文件的maxmemory参数,可以控制其最大可用内存大小(字节)。 那么当所需内存,超过maxmemory怎么办? 这个时候就该配置文件中的maxmemory-policy出场了。 所以,当内存占用满了以后,redis提供了一套缓存淘汰机制:MEMORY MANAGEMENT(内存
阅读全文
posted @ 2020-01-13 22:24
gaopengpy
摘要:一、什么是缓存穿透,如何预防? 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,请求直接打在了数据库上。 对于缓存穿透的话一般来说只需要针对空值缓存就行,过期时间设置5-10分钟,这样就流量就不会打在数据库上导致死机宕机。 二、什么是缓存击穿,如何预防? 缓存击穿,是指一个key非常热点
阅读全文
posted @ 2020-01-12 11:59
gaopengpy
摘要:堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 JVM中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使
阅读全文
posted @ 2020-01-11 17:50
gaopengpy
摘要:备注: 1.超大对象是指对象大小大于Eden+S0 2.新生代采用复制算法进行垃圾回收 3.老年代采用标记压缩算法进行垃圾回收
阅读全文
posted @ 2020-01-11 16:51
gaopengpy
摘要:Redis支持六种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)和基数(HyperLogLog)。 一:String(字符串) string 是 redis 最基本的类型,一个 key 对应一个 value。 stri
阅读全文
posted @ 2020-01-11 12:53
gaopengpy
摘要:查看CPU个数 cat /proc/cpuinfo | grep "physical id" | uniq | wc -l **uniq命令:删除重复行;wc –l命令:统计行数** 查看CPU核数 cat /proc/cpuinfo | grep "cpu cores" | uniqcpu cor
阅读全文
posted @ 2020-01-09 10:33
gaopengpy
摘要:Redis是单线程的,但为什么这么快? 1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)。 2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的。 3、采用单线程,避免了不
阅读全文
posted @ 2020-01-07 12:38
gaopengpy
摘要:Java中的线程的生命周期大体可分为5种状态。 1. 新建(NEW):新创建了一个线程对象。 2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。 3. 运行(RU
阅读全文
posted @ 2020-01-06 13:15
gaopengpy
摘要:JAVA虚拟机加载类是采用双亲委派加载机制加载。 双亲委派模型 模型如下图: 双亲委派模型中除了启动类加载器之外其余都需要有自己的父类加载器。 当一个类收到了类加载请求时: 自己不会首先加载,而是委派给父加载器进行加载,每个层次的加载器都是这样。 所以最终每个加载请求都会经过启动类加载器。只有当父类
阅读全文
posted @ 2020-01-06 11:38
gaopengpy
摘要:MySQL InnoDB事务的隔离级别有四级,默认是“可重复读”(REPEATABLE READ) 1) 读未提交(READ UNCOMMITTED) 另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)(隔离级别最低,并发性能高)。 2) 读已提交(READ
阅读全文
posted @ 2020-01-05 22:41
gaopengpy
摘要:当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略: AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。 这是线程池默认的拒绝策略,在任务不能再提交的时候,抛出异
阅读全文
posted @ 2020-01-04 15:18
gaopengpy
摘要:1 当一个任务通过submit或者execute方法提交到线程池的时候,如果当前池中线程数(包括闲置线程)小于coolPoolSize,则创建一个线程执行该任务。 2 如果当前线程池中线程数已经达到corePoolSize,则将任务放入等待队列。 3 如果任务不能入队,说明等待队列已满,若当前池中线
阅读全文
posted @ 2020-01-04 14:55
gaopengpy
摘要:在并发编程中,使用线程池的好处是减少在创建和销毁线程上所花费的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量线程而导致消耗完内存或者“过度切换”的问题。 JAVA线程池有几个核心的参数,这几个参数的作用是: corePoolSize:核心线程数,当提交一个新的任
阅读全文
posted @ 2020-01-04 14:38
gaopengpy
摘要:常用的JAVA线程池有以下几种类型: 1、newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 这种类型的线程池特点是: 工作线程的创建数量几乎没有限制(其实也有限制的,数目为Interger. MAX_VALUE),
阅读全文
posted @ 2020-01-04 14:32
gaopengpy

浙公网安备 33010602011771号