4 底层劳动人民

尚未进行身份认证

暂无相关简介

等级
TA的排名 46w+

Java-观察者模式简单例子

一、自定义观察者模式需要subject类 (一)以及Observer类(多)subject 主要功能是接收数据以及通知变更观察者(Observer)。observer 主要功能是接收变更后的数据,一定实现update接口。核心:subject管理所有观察者,当数据变更时通知所用观察者(就是调用update)subject接口类:public interface ISubject { ...

2020-02-04 12:05:46

多重if判断简单优化

一、最笨重的维护看起来很难受public class Test { private static String getPrice(String fruit) { if ("梨".equals(fruit)) { return "梨价格"; } else if ("苹果".equals(fruit)) { ...

2020-01-20 16:48:57

设计模式收录

参考文献:http://c.biancheng.net/design_pattern/

2020-01-20 14:27:25

redis 持久化机制+缓存雪崩、击穿、穿透

目前redis作为比较流行的缓存框架,为开发这提供高效稳定快速的数据缓存方案,但是redis不能无限制的将数据放到内存中,遇到服务器宕机,那么缓存中的所有数据将丢失,那么为了避免这种情况redis提供了两种方式做持久化将数据存储到硬盘,一种是RDB 一种是AOF。RDB也称为快照,就是当达到一定的条件时将内存中的整个数据全部写到磁盘存储,整个过程redis服务器内部需要将缓存的数据进行格式化处理...

2020-01-19 09:59:38

Redis与数据库的数据一致性解决方案

我们该如何保证Redis与数据库的一致性呢?更新的时候,先更新数据库,然后再删除缓存。读的时候,先读缓存;如果没有的话,就读数据库,同时将数据放入缓存,并返回响应。乍一看,一致性问题貌似很好的得到了解决。但仔细一想,你会发现还是有问题:如果先更新了数据库,删除缓存的时候失败了怎么办?那么数据库中是新数据,缓存中是老数据,数据出现不一致了。改进方案:先删除缓存,后更新数据库。因为即使后面更...

2020-01-16 17:15:42

互斥锁(包括其中的自旋锁)、读写锁的介绍

读写锁特点:读写锁有三种状态:读加锁状态、写加锁状态和不加锁状态只有一个线程可以占有写状态的锁,但可以有多个线程同时占有读状态锁,这也是它可以实现高并发的原因。当其处于写状态锁下,任何想要尝试获得锁的线程都会被阻塞,直到写状态锁被释放;如果是处于读状态锁下,允许其它线程获得它的读状态锁,但是不允许获得它的写状态锁,直到所有线程的读状态锁被释放;为了避免想要尝试写操作的线程一直得不到写状态锁,当...

2020-01-16 16:34:35

乐观锁悲观锁 随行笔记

悲观锁和乐观锁是一种思想悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLo...

2020-01-16 15:55:23

GC清理机制 随行笔记

1.标记-清除:当堆中的有效内存空间被耗尽的时候,就会停止整个程序,然后进行两项工作,第一项是标记,第二项是清除。标记:遍历所有的GC Roots,然后将GC Roots可达的对象标记为存活的对象。清除:清除的过程将遍历对中所有的对象,将没有标记的对象全部清除掉。缺点:效率不高,标记和清除的效率都很低;会产生大量不连续的内存碎片,导致以后程序在分配较大的对象时,由于没有充足的连续内存而提...

2020-01-16 15:36:33

JVM内存模型 随行笔记

JVM内存模型:堆、方法区、本地方法区、虚拟机栈、程序计数器堆:线程共享区域,是jvm管理的最大一块内存,几乎所有的对象实例都在heap中分配方法区:线程共享区域,用来存储已被虚拟机加载的类信息、常量、静态变量、编译后的代码,运行时常量池等数据。平时通过反射获取到的类型、方法名、字段名称、访问修饰符等信息就是从方法区获取到的虚拟机栈**:虚拟机栈是线程独享的,存储每个线程中运行的各个方法...

2020-01-15 22:38:44

LocalDateTime 随行笔记

public class Subject {private static DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”);public static void main(String[] args) {LocalDateTime currentDateTime = LocalDa...

2020-01-15 10:57:07
勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。