首页
学习
活动
专区
圈层
工具
发布

用Java写一个简单的缓存操作类

前言 使用缓存已经是开发中老生常谈的一件事了,常用专门处理缓存的工具比如Redis、MemCache等,但是有些时候可能需要一些简单的缓存处理,没必要用上这种专门的缓存工具,那么自己写一个缓存类最合适不过了...一、分析 首先分析一下缓存类该如何设计,这里我以一种非常简单的方式来实现一个缓存类,这也是我一直以来使用的设计方案。...为了明确功能,首先定义一个接口类CacheInt,然后是缓存实现的工具类CacheUtil。...首先是类定义和其属性定义,其中本类实例对象用volatile进行修饰提高可见性,初始化缓存容量用于初始化ConcurrentHashMap缓存容器的大小,此大小根据实际应用场景进行优化。 ?...四、拓展 该类只是简单的实现了缓存的过程,但是在实际应用中不见得能很好地表现,首先它的容量肯定有限,不能存太多缓存,因为使用的是JVM堆内的内存,其次其功能也较为简单,比如不支持LRU淘汰等,这个可以用双链表

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java是怎么加载类的

    庖丁解牛--Java的类加载机制 Java的类加载机制是最容易被忽略的知识,不管是基础,还是往高级开发进阶,都需要了解类的加载机制。...当然最简单的就是当前项目路径下没有这个类。 那么Java是怎么查找项目路径下的类的呢,看看下面这段代码 ?...眼尖的同学应该会留意到System.out这句日志方法没有报错,说明Java找到了这个类。可是我们没有import,也没有在目录下有这个类,它是系统类,不过Java是怎么找到它的还是得说明一下。...我们可以用这个代码看看当前类是哪个ClassLoader加载的 public class Ming { public static void main(String[] args) { System.out.println...具体怎么实现呢? 明天我们会接着讲。

    1.1K10

    用java写一个死锁

    此时如果把sleep()换成wait()会出现 线程1锁o1 Exception in thread "Thread-0" 线程2锁o2 线程2锁o1 java.lang.IllegalMonitorStateException...查看API发现 java.lang.IllegalMonitorStateException抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程...Java中用到的线程调度算法是抢占式。一个线程用完CPU之后,操作系统会根据线程优先级、线程饥饿情况等数据算出一个总的优先级并分配下一个时间片给某个线程执行。...由于Java采用抢占式的线程调度算法,因此可能会出现某条线程常常获取到CPU控制权的情况,为了让某些优先级比较低的线程也能获取到CPU控制权,可以使用Thread.sleep(0)手动触发一次操作系统分配时间片的操作

    2.5K20

    写不好规范Java代码怎么去大厂

    构造器参数太多怎么办 解决办法 :引入Builder模式 场景:当构造器有5个或者以上的构造参数时或者目前参数不多但是以后会不断增多的时候。...不需要实例化的类构造器要私有化 经常用到的Utils类,比如Java自带的java.util.Arrays 这样的类,工具类都尽量不要实例化。...否则都应该用复合,包装类不仅比子类更加健壮,而且功能也更加强大。Effective Java 8.接口优于抽象类 简而言之,Java只允许单继承但是允许实现多个接口。...Effective Java给我们的建议是:假设调用可变参数的方法中,有95%只是调用参数个数小于4,那么就可以将个数小于4的方法,用普通方法定义;剩余的5%,调用可变参数方法。...this.age = age 23.一定记得写注释 代码写的再好也要记得写类跟方法的大概注释,不然接收你工作的人绝对分分钟化身祖安玩家!

    2.1K20

    怎么用super调用超类构造函数?

    既然封装是面向对象的基本属性,Java提供了该问题的解决方案是不值得奇怪的。任何时候一个子类需要引用它直接的超类,它可以用关键字super来实现。super有两种通用形式。第一种调用超类的构造函数。...使用super调用超类构造函数 子类可以调用超类中定义的构造函数方法,用super的下面形式:java复制代码super(parameter-list); 这里,parameter-list定义了超类中构造函数所用到的所有参数...既然构造函数可以被重载,可以用超类定义的任何形式调用super( ),执行的构造函数将是与所传参数相匹配的那一个。...在每种情况下,用适当的参数调用super( )。注意width, height, and depth在Box是私有的。...当一个子类调用super( ),它调用它的直接超类的构造函数。这样,super( )总是引用调用类直接的超类。这甚至在多层次结构中也是成立的。

    1.1K10

    写算法,用 C++ 还是用 Java ,差别大吗?

    因为这篇文章非常详细的讲述了用两门语言在写算法时候的优劣势,非常值得一读。 如果你刚好在学习算法,那么文末也贴心的为你准备了王晓华的算法课程,算法真的很好玩! 全文大约3000字。...一些棋盘类游戏通常喜欢用一维数组存储二维的逻辑棋盘结构,好在 Java 也可以这么做,转换起来也没什么难度。...将其翻译成 Java,是这个样子的: ? 上述代码示例中,C++ 和 Java 的输入分隔符都是空格或回车,如果希望输入带空格的一整行内容怎么办?...类和封装 首先说说 C++ 的 struct,Java 没有与之对应的相似物的,但是完全可以用 class 来替换这个概念。为什么这么说呢?...C++ 的类成员访问控制采用分节控制,用 public: 或 protected: 作为分节的标志,如果没有分节标志的类成员,则是默认的 private: 控制。

    3.5K20

    怎么用IDEA快速查看类图关系?

    做Java开发的,现在普遍都用上idea了。可以说,idea是当之无愧的Java开发神器。如果,你现在还没用idea,那肯定是你还没有感受过它的强大。...好了,话不多说,今天的主题主要是教大家怎么通过idea快速的查看一个类的类图关系,即一个类继承了哪些类,实现了哪些接口,以及接口有哪些子接口和实现类。...2)进到类里,在类名上面右键单击,选择 Diagrams -> Show Diagram 。(当然也可以选择第二个Popup,不过是以弹窗的形式展现的类图) ?...类图就变成以下这个样子。 ? 此外,还有一种方式可以查看接口的所有实现类。在图中的某个类上边单击一下,然后 Ctrl + H,调出类层级关系。如图,选择这个按钮,显示所有子接口和实现类。...然后,可以选择多个子类和实现类,看他们的类图关系。比如,图中我选中了四个。 Diagrams -> Show Diagram ? 再选择第一个Java Class Diagrams , ?

    5.9K10

    用IntelliJ IDEA看Java类图

    看代码的遇见子类或者接口的实现时,如果有个类图工具就能让我们层次和关系一目了然,如果您的IDE是IntelliJ IDEA,推荐使用其自带的类图功能; 工具版本 社区版不带类图功能,所以请使用完整版,以下是我用的版本信息...: 使用类图功能 以Spring源码的工程为例,假设我已经打开了ApplicationContext.java,在这个类的大括号内的区域点击右键,选择Diagrams -> Show Diagram...,即可打开类图,如下图红框所示: 打开的效果如下图所示: ApplicationContext.java的继承关系一目了然; 调整布局 在类图上点击右键,选择"Layout",在子菜单中可以调整排列效果...,如下图: 您可以选择一种适合自己的排列布局,例如“Orthogonal Layout”的效果如下图: 查看更多信息 如下图,点击红框中的按钮,可以看到类或者接口的方法信息,另外绿框中的按钮也比较实用...,如下图: 如果想看类图中某个类的源码,点击该类后按下“F4”键即可; 以上就是类图工具的简单用法,希望能帮你更直观的了解源码的结构和关系;

    99430
    领券