自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (1)
  • 收藏
  • 关注

原创 一篇文章搞定:docker安装redis,集群,扩容,缩容

即key落到服务器上的规则,即将要存储的数据key进行hash计算(hash(key)),然后沿环顺时针“行走”,遇到的第一台服务器就是该key定位到的服务器,并将该键值存储到该服务器上。例如:在hash环上有4个服务器,需要保存键值数据kv,经过key的hash计算,发现匹配第一台到第二台服务器中间,则顺时针找到第二台服务器,并将kv保存到该服务器上。,即需要移动多少个槽点。有扩容,当然也有缩容,高峰期过后,我们需要将4主4从,改回3主3从,将添加的6383进行删除,下面我们来看看,redis的缩容。

2024-07-17 10:00:53 526

原创 【Redis】redis高阶-使用zset实现延时队列

Hi,大家好,我是抢老婆酸奶的小肥仔。最近在使用redis时,就想能不能用其实现消息队列?也在网上看了下其他小伙伴写的实现,结合自身业务实现了如下消息队列,希望对大家有用。废话不多说,直接开撸。

2024-06-03 16:41:26 626

原创 ThreadLocal:熟悉的陌生词,你应该要知道的。

ThreadLocal采用了多线程隔离机制,在多线程下线程将共享变量复制一个副本,线程各自只能使用线程本身的副本变量,为提供了访问变量的安全性。同时采用了空间换时间的思想,通过ThreadLocalMap来管理线程成员变量信息。

2024-05-29 14:49:23 801

原创 SpringBoot+Spring WebFlux响应式开发,实现打字效果

Spring WebFlux是实现响应式编程,基于Servlet3.x之后异步响应处理所提供的更简化的实现模式,该组件是一个重新构建的且基于Reactive Streams标准实现的异步非阻塞Web开发框架,以Reactive开发框架为基础,可以更加容易的实现高并发访问下的请求处理模式。在SpringBoot 2.x版本中你那个提供了“Spring-webflux”依赖模块,该模块有两种编程模式实现:一种基于功能性端点方式,一种基于SpringMVC注解方式。

2024-05-17 17:21:54 991

原创 旧手机-基于Termux配置服务器(不用拿去换钢盆了)

Hi,大家好,我是抢老婆酸奶的小肥仔。大家用手机这么多年了,手上或多或少都有一两个被替换下来的旧手机,也不用拿去换啥钢盆了,使用Termux可以将旧手机改造成一个服务器。不多说,直接开干。

2024-05-14 15:59:23 648 2

原创 一文搞懂反射,还有谁不懂,直接甩给他

Hi,大家好,我是抢老婆酸奶的小肥仔。反射,在我们日常开发中无时无刻,被大量运用在框架代码和工具代码中,反射可以通俗点讲就是一个类的自我剖析,通过反射可以获取到这个类所有信息,包括:属性,属性值,方法等等。我们今天来初探下java中的反射,希望对大家有所帮助,开撸!

2024-05-11 14:05:33 1212 1

原创 定时任务还可以这么玩--基于SpringBoot中的ThreadPoolTaskScheduler实现动态定时任务

ThreadPoolTaskScheduler实现定时任务主要是通过对线程的管理来进行操作,添加任务时即创建一个线程,删除时即将该线程删除。因此在创建定时任务只需要创建线程就可以,在创建线程时,通过反射来获取对应的方法及传递参数。上述就是使用SprngBoot中的ThreadPoolTaskScheduler来实现定时任务,我们只要使用前端连接相应的接口就可以实现管理人员管理定时任务的功能。

2024-05-08 09:36:50 913 4

原创 Jackson-自定义注解及实现数据脱敏、枚举转换

在Jackson中使用来标注当前定义的注解为jackson注解。我们通过一个简单例子来看下。/****/上述注解实现了序列化时排列的顺序,以及不显示数值为null的字段。结合@JsonSerialize在数据进行序列化时,进行数据的脱敏。需求:用户信息在返回到前端时,对用户名,身份证号,手机号等进行数据脱敏。用户名:如果两个字时,只保留姓,后面为*,例如:张三,脱敏后:张*,超过三个字时,则保留前后两个字,中间使用*,例如:张小四,脱敏后:张*四身份证号:前后各保留四位,中间用四个。

2024-04-30 11:13:42 802 1

原创 Jackson-你可能错过的最好用Json工具

jackson是一个简单且功能强大的基于java的应用库,它可以便捷的完成Java对象和Json对象的转换。高性能且稳定:Jackson低内存占用,对Json和对象的解析都很优秀流行度高:Jackson的社区活跃,有很多程序员在使用,同时Jackson是Spring中默认的JSON/XML解析器便于使用:在Jackso中提供大量的注解,例如我们常用的时间格式化注解@JsonFormat干净的json:创建JSON时干净、紧凑、体积小等特点。

2024-04-28 15:15:34 1075 1

原创 mysql:一些好用的函数,开发中或许用的到呢?

最近在与同事一起讨论一些业务,实现业务,发现原来MySql有很多函数自己并没有掌握,因此,干脆总结一番,当一个查询手册,以后用到可以直接进行查询。废话不多说,开干!

2024-04-22 17:30:45 844

原创 SpringBoot+ThreadLocal+AbstractRoutingDataSource实现动态切换数据源

上述提到了ThreadLocal和AbstractRoutingDataSource,我们来对其进行简单介绍下。:想必大家必不会陌生,全称:thread local variable。主要是为解决多线程时由于并发而产生数据不一致问题。ThreadLocal为每个线程提供变量副本,确保每个线程在某一时间访问到的不是同一个对象,这样做到了隔离性,增加了内存,但大大减少了线程同步时的性能消耗,减少了线程并发控制的复杂程度。ThreadLocal作用:在一个线程中共享,不同线程间隔离。

2024-04-18 17:36:40 616 1

原创 SpringBoot + validator优雅参数校验,消除if-else

Hibernate Validate是Bean Validation实现的,内置了JSR303/JSR380中所有的constraint的实现,同时也额外提供了很多自定义的constraint。Bean Validation为JavaBean的验证提供了很多相关的元数据模型和API。/****/@Data@NotNull(message = "userId不能为空",groups = Update.class)@NotBlank(message = "用户名不能为空")

2024-04-16 15:14:14 627 1

原创 SpringBoot+Druid你还只是用做数据库连接池吗?要不咱这么用用?

自定义一个回调类继承DruidPasswordCallback,并重写setProperties这个方法,该方法就是解析密码,设置密码的方法。/****/@Slf4j//构造方法,传入resourceLoader,用于读取RSA公私钥文件内容@Overridelog.error("Druid密码回调报错:" + e.getMessage());我是自定义了RSA的加解密,所以将公私钥放在了rsa_keys.txt文件,基于hutool定义了一个RSA加解密的方法。

2024-04-10 10:34:22 665 1

原创 idea Ultimate自带Database客户端,丝滑使用,YYDS

Hi,大家好,我是抢老婆酸奶的小肥仔。说到数据库连接工具,Navicat一定是没法绕过的。它小巧方便,操作简洁,满足我们日常对数据库的操作,然而贫穷限制了我的使用,即使破解了,在公司使用时,也会因为一封邮件不得不卸载。既然没有Navicat,那就使用其他的工具,比如:DBerver,HeidiSQL等工具,是的,这些工具不说不好,就比如说DBerver免费的,也能满足我们需求,但是个人使用是真不习惯,特别是之前从Navicat导出数据,使用DBerver导入时居然导入不进去,因此弃了。

2024-04-08 11:40:38 1010

原创 SpringBoot通过ip获取归属地,你应该知道的几种方式。

Hi,大家好,我是抢老婆酸奶的小肥仔。在日常我们逛网站的时候会发现我们登录后会出现归属地信息,例如:我在广州登录会显示广东广州,有些更加精确的会显示到区县。那么我们来看看有哪些方式来获取归属地信息?今天我们来聊一聊。

2024-04-03 13:57:52 1183 1

原创 SpringBoot通过手机号获取归属地,你应该知道的几种方式。

Hi,大家好,我是抢老婆酸奶的小肥仔。最近在做公司需求时,甲方一会提出根据IP获取所在地,一会又提出根据手机号获取手机号归属地。真的是:需求时时变,累死程序猿。甲方才是爸爸。之前已经实现过根据IP获取所在地的几种方式,大家可以参考我之前写的文章下:《SpringBoot通过ip获取归属地的几种方式》https://juejin.cn/post/7280745727176245307。那么今天我们来看看根据手机号有哪些方式可以获取归属地呢?废话不多说,开撸!libphonenumber:是谷歌提供的一款用于解

2024-04-02 09:21:48 1137 1

原创 拿来即用:SpringBoot+Minio+vue-uploader实现分片上传

Minio:一种分布式文件存储,具有高性能,轻量级,速度快,容错率高等特点,兼容亚马逊S3云存储服务接口,并可以作为一个独立的存储后端。minio提供了纠删码策略,即将数据进行切分,同时计算校验块,采用Reed-Solomon code将对象拆分成N/2数据和N/2奇偶校验块,假如有8块盘,数据则被分成4个数据块,4个奇偶校验块。即使这个对象丢了4块盘,数据依然可以进行恢复,因此即使我们一不小心删除了一些盘,也不用担心数据会丢失。

2024-03-27 17:08:05 1505 5

原创 SpringBoot+EasyExcel+Mybatis-plus实现通用Excel数据批量导入

基于java实现的快捷、简洁、解决大文件内存溢出(即OOM)不用考虑性能、内存等因素情况下,快速完成Excel的读、写等功能。从简介中,知道使用EasyExcel操作Excel时,我们只需要关注业务本身即可。

2024-03-26 16:44:01 1261 1

原创 java Stream,让集合操作更丝滑

Stream:流,可以对集合进行操作,比如:顾虑,合并等,是一种高效且易于使用处理数据的方法。在Stream操作中分为三个步骤:1、创建Stream流:比如:Stream.of()等2、中间操作:即处理Stream流,比如:filter,map等3、终止操作:即结束Stream流,返回操作结果,比如:collect(Collectors.toList())在操作Stream时,Stream自己不会存储元素,不会改变原来对象,会延迟执行,只会在需要结果时才执行。

2023-05-04 14:14:28 456

原创 java -Function、Predicate、Supplier、Consumer及自定义实现

也就是jdk提供声明该接口是函数式编程接口。我们来实现一个自定义函数式编程接口,不需要返回值也不需要传入任何参数。

2023-04-27 09:30:56 2003 1

原创 SpringBoot-读取配置文件

在ideal中可以直接设置自定义配置文件目录。如图:编辑启动项,在【Environment variables】中添加【spring.config.location=classpath:/】或【】或【spring.config.name=java】,在【resources】下创建目录并添加配置文件。:表示自己重新定义配置文件的位置,项目启动时就按照定义的位置去查找配置文件,这种定义方式会覆盖掉默认的四个位置:表示在四个位置的基础上,再添加几个位置,新添加的位置的优先级大于原本的位置.

2023-04-26 09:38:38 1490

原创 SpringBoot之@ConditionalOnProperty注解

在平时业务中,我们需要在配置文件中配置某个属性来决定是否需要将某些类进行注入,让Spring进行管理,而@ConditionalOnProperty能够实现该功能。@ConditionalOnProperty:根据属性值来控制类或某个方法是否需要加载。它既可以放在类上也可以放在方法上。

2023-04-24 15:29:03 3918

原创 问题:oss上传图片,new OSSClient报错

小伙伴们,有没有遇到阿里oss上传图片,报com.aliyun.oss.ClientException: Unknown 的。查了下帮助文档看不懂:网络打满是什么意思。

2018-09-15 11:45:55 6253 7

原创 【java】Optional,沉浸式开发

在没有optional之前,我们很多时候都是使用if-else-if来进行条件判断,然后根据条件来获取对应数据。例如:获取赵一所在的职位名称。使用optional就会优雅很多,也会尽量的避免NPE。上述代码对比中,我们可以清晰感觉到使用optional代码比较优雅,也没有大量代码判空,即使数据不存在也没报NPE。Optional是JDK1.8后引入的一个新特性,通常被认为是用于缓解java中NPE问题。Optional作为容器,可以保存类型T的值,也可以直接保存null。

2023-05-08 17:30:36 101

原创 java transient关键字

1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。

2023-04-25 10:56:54 95 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除