Redis与Guava本地缓存组合

Redis与Guava本地缓存组合

Redis与本地缓存组合
Redis与本地缓存组合

前言

  • 我们开发中经常用到Redis作为缓存,将高频数据放在Redis中能够提高业务性能,降低MySQL等关系型数据库压力,甚至一些系统使用Redis进行数据持久化,Redis松散的文档结构非常适合业务系统开发,在精确查询,数据统计业务有着很大的优势。但是高频数据流处理系统中,Redis的压力也会很大,同时I/0开销才是耗时的主要原因,这时候为了降低Redis读写压力我们可以用到本地缓存,Guava为我们提供了优秀的本地缓存API,包含了过期策略等等,编码难度低,个人非常推荐。

xlc520JavaJavaRedisGuava大约 6 分钟
SpringBoot + MDC 实现全链路调用日志跟踪

SpringBoot + MDC 实现全链路调用日志跟踪

MDC 介绍

简介

MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。对于一个 Web 应用来说,通常是在请求被处理的最开始保存这些数据。


xlc520JavaJavaSpringBoot大约 6 分钟
学会 IDEA 这 30 个神技,撸码效率直接起飞

学会 IDEA 这 30 个神技,撸码效率直接起飞

IDEA 作为Java开发工具的后起之秀,几乎以碾压之势把其他对手甩在了身后,主要原因还是归功于:好用;虽然有点重,但依旧瑕不掩瑜,内置了非常多的功能,大大提高了日常的开发效率,下面汇总了常用的30个使用小技巧,学会之后,让你的撸码效率直接起飞...

  1. 查看代码历史版本
  2. 调整idea的虚拟内存:
  3. idea设置成eclipse的快捷键
  4. 设置提示词忽略大小写
  5. 关闭代码检查
  6. 设置文档注释模板
  7. 显示方法分隔符
  8. 设置多行tab
  9. 快速匹配方法的大括号位置
  10. 代码结尾补全
  11. 模糊搜索方法
  12. 预览某个类的代码
  13. 查看方法在哪里被调用
  14. 代码模板(代码快捷键)
  15. 自动导包、自动移除没用的包
  16. codota插件:可以优先显示使用频率较高的类、方法
  17. 快速查看类、字段的注释
  18. 括号颜色区分
  19. 微服务项目中 将不同项目添加到同一个启动窗口
  20. idea全局设置 (打开新窗口的设置)
  21. java mapper层代码文件和mapper.xml文件相互跳转
  22. 设置idea背景图片
  23. maven tree (查看maven jar包依赖关系)
  24. 快捷键切换回上一个点击开的tab
  25. idea自带的ssh连接工具
  26. 代码调用链路图插件
  27. 获取当前线程dump
  28. idea同个项目不同端口多开

xlc520JavaJava大约 10 分钟
本地缓存Caffeine

本地缓存Caffeine

结论:Caffeine 是目前性能最好的本地缓存,因此,在考虑使用本地缓存时,直接选择 Caffeine 即可。

先看一个小例子,明白如何创建一个 Caffeine 缓存实例。

Caffeine caffeine = Caffeine.newBuilder()
        .initialCapacity(3)
        .maximumSize(4);
Cache cache = caffeine.build();
cache.put("aa", 13);
System.out.println(cache.getIfPresent("aa"));

xlc520JavaJava大约 13 分钟
jreble安装及破解方法

jreble安装及破解方法

在项目开发的过程中我们经常要重启项目进行代码的重新加载,在大项目开发的过程中这种不断的重新启动项目会浪费很多时间,在IDEA中我们可以使用ctrl+F9的方式进行热加载,但是这种方式对方法名的修改,和新加方法不能很好的支持。本章我们讲解一下功能强大的jrebel热加载工具,可以在不重启的情况下对新加的类、方法的修改都有很多好的支持,可以在实际项目开发中节省大量的时间,下面我们就一步一步开始进行安装设置。

一、安装插件

img
img

xlc520JavaJava大约 2 分钟
Guava中Map的骚操作

Guava中Map的骚操作

Guava是google公司开发的一款Java类库扩展工具包,内含了丰富的API,涵盖了集合、缓存、并发、I/O等多个方面。使用这些API一方面可以简化我们代码,使代码更为优雅,另一方面它补充了很多jdk中没有的功能,能让我们开发中更为高效。

今天Hydra要给大家分享的就是Guava中封装的一些关于Map的骚操作,在使用了这些功能后,不得不说一句真香。先引入依赖坐标,然后开始我们的正式体验吧~

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>30.1.1-jre</version>
</dependency>


xlc520JavaJavaMap大约 10 分钟
RocketMQ笔记:应用实践

RocketMQ笔记:应用实践

普通消息

消息发送分类

Producer对于消息的发送方式也有多种选择,不同的方式会产生不同的系统效果。

同步发送消息

同步发送消息是指,Producer发出⼀条消息后,会在收到MQ返回的ACK之后才发下⼀条消息。该方式的消息可靠性最高,但消息发送效率太低。

RocketMQ
RocketMQ

xlc520JavaJavaRocketMQMQ大约 36 分钟
SpringBoot 整合 Socket 实战案例

SpringBoot 整合 Socket 实战案例

功能场景点:

  1. 群发,所有人都能收到
  2. 局部群发,部分人群都能收到
  3. 单点推送, 指定某个人的页面

惯例,先看看本次实战示例项目结构:

SpringBoot整合Socket
SpringBoot整合Socket

xlc520JavaJavaSpringBoot大约 7 分钟
SpringBoot超大文件上传

SpringBoot超大文件上传

一. 秒传

1、什么是秒传

通俗的说,你把要上传的东西上传,服务器会先做MD5校验,如果服务器上有一样的东西,它就直接给你个新地址,其实你下载的都是服务器上的同一个文件,想要不秒传,其实只要让MD5改变,就是对文件本身做一下修改(改名字不行),例如一个文本文件,你多加几个字,MD5就变了,就不会秒传了。

2、本文实现的秒传核心逻辑

  • 利用redis的set方法存放文件上传状态,其中key为文件上传的md5,value为是否上传完成的标志位。
  • 当标志位true为上传已经完成,此时如果有相同文件上传,则进入秒传逻辑。如果标志位为false,则说明还没上传完成,此时需要在调用set的方法,保存块号文件记录的路径,其中key为上传文件md5加一个固定前缀,value为块号文件记录路径

xlc520JavaJava大约 7 分钟
Java 8 Stream 之 collect()

Java 8 Stream 之 collect()

前言

本身我是一个比较偏向少使用Stream的人,因为调试比较不方便。

但是, 不得不说,stream确实会给我们编码带来便捷。

所以还是忍不住想分享一些奇技淫巧。

正文

Stream流 其实操作分三大块 :

创建 处理 收集

我今天想分享的是 收集 这part的玩法。

img
img

xlc520JavaJava大约 2 分钟
2
3
4
5
...
10