
java知识库
文章平均质量分 91
java基础知识与进阶
阿华田512
小红书 搜索阿华田512 即可获取所有专栏博客内容
展开
-
缓存更新策略中级总结
看到好些人在写更新缓存数据代码时,,而后续的操作会把数据再装载的缓存中。。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。我不知道为什么这么多人用的都是这个逻辑,当我在微博上发了这个贴以后,我发现好些人给了好多非常复杂和诡异的方案,所以,我想写这篇文章说一下几个缓存更新的Design Pattern(让我们多一些套路吧)原创 2024-06-10 07:23:41 · 1152 阅读 · 0 评论 -
用一次就会爱上的Google Guava 类库
Google Guava 类库简介 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 对集合Collection、缓存Cache、原生数据类型支持、并发库、通用注解、字符串处理和IO工具,都提供了高效的支持.这些...原创 2021-04-10 17:34:18 · 328 阅读 · 0 评论 -
java集合终极总结
泛型,即“参数化类型”1. 泛型只在编译阶段有效2.不能对确切的泛型类型使用instanceof操作。如下面的操作是非法的,编译时会出错if(ex_num instanceof Generic<Number>){ } 3.在集合和泛型的世界最好不要使用基本类型,尽量使用基本类的包装类,不易出现问题。1、用泛型: List<T> list=newA...原创 2018-03-03 13:24:46 · 1021 阅读 · 2 评论 -
Java版cityHash64 与cityHash128算法的实现
简介 cityhash系列字符串散列算法是由著名的搜索引擎公司Google 发布的 (http://www.cityhash.org.uk/)。Google发布的有两种算法:cityhash64 与 cityhash128。它们分别根据字串计算 64 和 128 位的散列值。这些算法不适用于加密,但适合用在散列表等处。目前cityHash算法只有C++和python的实现,java目前还没有开源的cityHash算法,下面通过java代码实现java版的cityHash64 与...原创 2020-08-07 17:39:47 · 3465 阅读 · 0 评论 -
java实战--GC终极总结
GC简介java的最大好处是自动垃圾回收,这样就无需我们手动的释放对象空间了,但是也产生了相应的负效果,gc是需要时间和资源的,不好的gc会严重影响系统的系能,因此良好的gc是JVM的高性能的保证。JVM堆分为新生代,旧生代和年老代,新生代可用的gc方式有:串行gc(Serial Copying),并行回收gc(Parellel Scavenge),并行gc(ParNew),旧生代和年老代可...原创 2019-11-18 15:37:46 · 2067 阅读 · 0 评论 -
java实战--JVM终极总结
CPU和内存的交互了解jvm内存模型前,了解下cpu和计算机内存的交互情况。【因为Java虚拟机内存模型定义的访问操作与计算机十分相似】有篇很棒的文章,从cpu讲到内存模型:什么是java内存模型在计算机中,cpu和内存的交互最为频繁,相比内存,磁盘读写太慢,内存相当于高速的缓冲区。但是随着cpu的发展,内存的读写速度也远远赶不上cpu。因此cpu厂商在每颗cpu上加上高速缓存,用于缓解这种...原创 2019-11-18 15:44:15 · 429 阅读 · 0 评论 -
JSON解析保证字段顺序终极总结
简介 在日常开发中不免会遇到解析JSON数据的问题,有些需求需要保证解析后json字段的顺序不变,接下来给大家总结一些实用的保证Json字段顺序的解析方法。Json字段顺序解析方法1、解析时增加参数不调整顺序(fastjson)JSONObject respondeBodyJson = JSONObject.parseObject(jsonStr, Featur...原创 2019-07-11 15:02:27 · 22150 阅读 · 0 评论 -
java并发与异步操作终极总结
目录1.并发编程三要素2. 线程的五大状态3.悲观锁与乐观锁4.线程之间的协作valitate 关键字定义原理作用异步计算AtomicReferenceAtomicReference介绍AtomicReference使用场景AtomicReference和volatile的区别FutureFuture 接口的局限性cancel方法...原创 2018-10-31 18:47:31 · 2479 阅读 · 2 评论 -
java内存模型和volatile关键字
一 理解java内存模型之前的知识补充计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高...原创 2018-04-13 21:15:34 · 331 阅读 · 0 评论 -
java基础终极总结(二)
备注:本文篇幅较大 开头是目录 按住ctrl 点击蓝色的标题即可查看相关内容方法的重载与重写 2数组 5Arrays常用方法 7空引用异常 8数组常用的方法 8二维数组 10构造方法 11单例模式 12代码块 13静态代码块 13静态代码块什么时候执行 14.Class.forName() 14 16继承中的代码块和构造方法的执行顺序探索 16类与对象 18Java对象创建内存模型 18参数传...原创 2018-04-01 14:32:13 · 1075 阅读 · 0 评论 -
java 反射机制和动态代理深入理解与运用
一 反射机制的引入在介绍反射机制之前,我们来看一看java程序运行的过程:Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode) 2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行也就是 a.java经过编译编程 a.class,然后通过类加载器(ClassLoader)加载到JVM中去执行。从上面的过程可以看出...原创 2018-03-03 13:43:23 · 482 阅读 · 0 评论 -
java基础终极总结(一)
Java各种码的转化... 1进制... 2名规则四大类:... 2和字符串做运算:... 3讨论this&super这两个关键字的意义和用法。... 4Java命名规则... 4Java中有关Null的9件事... 4int和Integer有什么区别?. 5Chacter常用方法... 7解释内存中的栈(stack)、堆(heap)和静态区(stati...原创 2018-02-07 20:20:06 · 1574 阅读 · 1 评论 -
java正则表达式终极总结(简单又好用)
一.介绍:正则表达式在java.util.regex里面,具体的各种用法可以查找api手册二. 常用格式其中:^表示以此正则表达式开始 $是以此正则表达式结尾1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-原创 2018-02-07 20:16:28 · 1768 阅读 · 0 评论 -
String,StringBuffer,StringBulilder终极总结
String,StringBuffer,StringBuilder的区别是什么?String为什么是不可变的?String是字符串常量,StringBuffer和StringBuilder是字符串变量。StringBuffer是线程安全的,StringBuilder是非线程安全的。具体来说String是一个不可变的对象,每次修改String对象实际上是创新新对象,并将引用指向新对象。效率很低。原创 2018-01-23 20:24:43 · 2545 阅读 · 0 评论