自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Redis--Bitmap有序集合的语法和使用场景举例

Redis除了常见的五种数据类型之外,其实还有一些少见的数据结构,如Geo,HyperLogLog,Bitmap等。虽然它们少见,但是作用却不容小觑。本文将介绍Bitmap数据类型的语法和使用场景。下文将介绍bitmap的使用指令,以及其应用场景。在开发中,我们常常需要存放一些布尔类型的数据,比如我们的上班打卡记录,游戏签到记录等等。

2024-01-23 23:31:50 1250

原创 Java--业务场景:敏感词过滤代码实现(Fastjson配置全局序列化 @JSONField注解的serializeUsing属性)

【代码】Java--业务场景:敏感词过滤代码实现(Fastjson配置全局序列化 @JSONField注解的serializeUsing属性)

2024-01-22 09:57:32 1446

原创 排序算法--桶排序的原理及案例(Java)

桶排序,又叫箱排序,是一种比较常见的排序算法。其主要思想是分治思想,将大问题化成小问题。是将数组里的数据分配成几个区间中,然后再对区间里的数据分别排序,最后依次把各个区间中的记录列出来即可得到有序序列。

2024-01-21 18:43:13 1067

原创 Redis--HyperLogLog的指令语法与使用场景举例(UV统计)

Redis除了常见的五种数据类型之外,其实还有一些少见的数据结构,如Geo,HyperLogLog等。虽然它们少见,但是作用却不容小觑。本文将介绍HyperLogLog指令的语法和使用场景。HyperLogLog是Redis提供的一种不准确(标准误差为0.81%)的去重计数方案。

2024-01-20 02:41:14 1329

原创 Redis--Zset使用场景举例(滑动窗口实现限流)

在一文中,提及了redis数据结构zset的指令语法和一些使用场景,今天我们使用zset来实现滑动窗口限流,详见下文。滑动窗口是一种流量控制策略,用于控制一定时间内请求的访问数量。其原理是:将时间划分成规定的时间片段,每个片段有固定的时间间隔,如1s,1min,1h,然后定义一个时间窗口,比如5s,5min等,该窗口会随着时间向右移动。此外还需要计数器计算窗口内的请求数。当窗口移动时,会把已经走过的时间片段的请求数删掉。

2024-01-19 00:19:38 1555

原创 Redis--Geo指令的语法和使用场景举例(附近的人功能)

Redis除了常见的五种数据类型之外,其实还有一些少见的数据结构,如Geo,HyperLogLog等。虽然它们少见,但是作用却不容小觑。本文将介绍Geo指令的语法和使用场景。Geo是"geolocation"的缩写,即地理定位器,顾名思义就是记录地理位置信息,用来进行地址位置排序的数据结构。所以它场景的应用场景便是寻找附近的人最佳路线推荐等等。说到地址位置排序,不得不提地理位置距离排序算法GeoHash算法,Redis也使用了这个算法。

2024-01-18 00:32:30 1306

原创 Redis--Zset有序集合的语法和使用场景举例(朋友圈点赞,排行榜)

Redis有五种常用的数据结构,string,hash,list,set,zset。其中zset 类似于java中SortedSet和HashMap的结合体,一方面它是个set,保证了内部value的唯一性,另一方面它可以给每个value赋予一个score,代表了这个value的排序权重,用于排序。zset的主要使用场景有:粉丝列表(score是关注时间),考生成绩表,排行榜等。下文将介绍zset的使用指令,以及其两个应用场景。zset添加数据 :zadd key score value。

2024-01-17 09:48:35 1269

原创 效率工具--使用飞书妙记生成视频的文字记录

在日常工作中,经常需要参与各种线上会议,会后对会议内容时常需要整理相关的文字记录。为了提高这一过程的效率,我们可以考虑使用飞书妙记用来生成会议记录,飞书妙记这款产品是字节跳动下飞书的一块功能,可以快捷地将视频内容中语音转为的文字记录。本文介绍如何使用飞书妙记将视频内容转为文字,以B站视频为例哈。

2024-01-16 00:04:45 607

原创 使用Github + PicGo搭建个人图床,并使用CDN加速

在写博客的时候,常常需要为博客配图,于是一个好用稳定的图床的重要性不言而喻。本文主要介绍如何使用GitHub + PicGo的方式快速搭建一个个人使用的图床。该方式方便快捷,还免费hh,唯一的不足是图片存放在GitHub公有仓库中,但是应该不会有人在图床里上传私密的图片吧,不会吧。所以这种方法已经满足大部分人的需求了,以下是配置步骤。

2024-01-15 08:17:39 1739

原创 Java--RSA非对称加密的实现(使用java.security.KeyPair)

非对称加密是指使用不同的两个密钥进行加密和解密的一种加密算法,调用方用使用服务方提供的公钥进行加密,服务方使用自己的私钥进行解密。RSA算法是目前使用最广泛的公钥密码算法。Java提供了KeyPairGenerator类要生成公钥和私钥密钥对(KeyPair),本文将提供两个接口,模拟公钥加密字符串和私钥解密字符串的过程。

2024-01-14 00:25:00 981

原创 MySQL--InnoDB的一次更新事务实现流程与二阶段提交

注意:在BinLog和RedoLog写入的时候,是分了两个阶段,以二阶段提交的方式来保证一致性。

2024-01-13 00:27:00 1101

原创 Java--ListUtil工具类,实现将一个大列表,拆分成指定长度的子列表

在项目中有时会出现列表很大,无法一次性批量操作,我们需要将列表分成指定大小的几个子列表,一份一份进行操作,本文提供这样的工具类实现这个需求。

2024-01-12 09:05:56 539

原创 Java--Spring项目生成雪花算法数字(Twitter SnowFlake)

分布式系统常需要全局唯一的数字作为id,且该id要求有序,twitter的SnowFlake解决了这种需求,生成了符合条件的这种数字,本文将提供一个接口获取雪花算法数字。以下为代码。

2024-01-11 00:13:28 1049

原创 Java--业务场景:在Spring项目启动时加载Java枚举类到Redis中(补充)

通过Java–业务场景:在Spring项目启动时加载Java枚举类到Redis中一文,我们成功将Java项目里的枚举类加载到Redis中了,接下来我们只需要写接口获取需要的枚举值数据就可以了,下面一起来编写这个接口吧。

2024-01-10 08:02:28 1248 1

原创 Java--业务场景:在Spring项目启动时加载Java枚举类到Redis中

项目具有很多的枚举类,而这些枚举类在前端页面中需要作为下拉框选项等组件被前端获取。为了后续获取枚举值更加方便快捷,我们在项目启动的时候将所有Java枚举类用一个hash存入Redis中,在提供一个接口,使得前端可以从Redis获取自己想要的枚举值。下文将讲解实现步骤。

2024-01-09 14:10:39 2265 2

原创 Java--业务场景:SpringBoot 通过Redis进行IP封禁实现接口防刷

在实际项目中,有些攻击者会使用自动化工具来频繁刷新接口,造成系统的瞬时吞吐量提高,给系统带来很大的压力。要保障服务的安全性,需要防止重要的接口被恶意刷新,接口防刷的方式可以通过设置验证码,IP封禁,安全参数校验等方法。本文主要采用Redis将同一时间内频繁访问同一接口的IP封禁一段时间的方式来防止接口被恶意刷新。

2024-01-08 14:03:07 1294

原创 Java--业务场景:获取请求的ip属地信息

很多时候,项目里需要展示用户的IP属地信息,所以这篇文章就记录一下如何在Java Spring boot项目里获取请求的IP属地。

2024-01-05 17:46:19 457

原创 Java--项目引入Swagger、knife4j文档,Swagger配置类设置,Swagger注解介绍

【代码】Java--项目引入Swagger、knife4j文档,Swagger配置类设置,Swagger注解介绍。

2023-12-14 17:58:02 174

原创 MySQL--查出某个特定值在哪些表的哪些字段中出现,并将结果存入新表

【代码】MySQL--查出某个特定值在哪个表的哪个字段中出现,并将结果存入新表。

2023-12-14 11:03:05 293

原创 MySQL--存储过程与存储函数的创建与调用示例

存储过程可以将多个SQL语句写在一起,作为一个集合,类似Java里的方法封装。通过 Call 关键字调用。存储函数和存储过程有些类似,都可以封装多条SQL语句,存储函数可以像MySQL函数一样灵活调用,而不需要采用Call关键字调用,但是相比存储过程,存储函数只能return 一列数据作为结果。

2023-11-29 11:14:20 239

原创 GraphQL -- GraphQL入门,与SpringBoot整合,并用Postman测试接口

GraphQL是一种用于 API 的查询语言,也是一个基于服务端的运行引擎。将GraphQL与Spring boot整合

2023-11-09 16:52:44 366 1

原创 Oracle--查出某个特定值在哪些表的哪些字段中出现,并将结果存入新表

【代码】Oracle--查出某个特定值在哪个表的哪个字段中出现,并将结果存入新表。

2023-06-05 13:51:07 1767

原创 MySQL--聚合函数做窗口函数使用

MySQL--聚合函数做窗口函数使用

2023-04-01 14:35:59 115

原创 MySQL--窗口函数实例详细介绍

MySQL–常见的窗口函数介绍以及使用语法。

2023-03-31 13:17:55 255

原创 MySQL--常见的窗口函数介绍以及使用语法

在解决实际问题的时候,会经常遇到需要对分组数据进行排序或者求和的情况,这种时候在Oracle,SQLserver等大多数数据库使用对应的窗口函数就可以解决,而mysql8.0版本之前是没有窗口函数的。好在mysql在8.0版本之后增加了窗口函数(终于不用写复杂的子查询啦!窗口函数可以对查询中的数据进行分组,这有点类似group by的分组操作,但不同的是,group by的结果会聚合成一条记录,而窗口函数则会将分组的结果置于每一条数据记录之中。此处介绍常见的窗口函数和使用的sql语法。

2023-03-29 21:41:04 439

原创 ThreadLocal原理和使用场景

ThreadLocal,即线程本地变量。其中存放的变量只属于当前线程,被其他线程所隔离。这种变量在线程的生命周期内起作用,减少了同一个线程内多个函数或者组件之间的一些公共变量的传递复杂度,同一个ThreadLocal所包含的对象,在不同的线程中有不同的副本,且其他的线程不可访问,因此不存在多线程之间共享的问题。

2023-03-21 22:16:57 87

原创 Redis--Redis的过期策略和内存淘汰机制

Redis的过期策略是:定期删除+惰性删除。获取当前内存淘汰策略:config get maxmemory-policy获取Redis能使用的最大内存大小:config get maxmemory设置内存淘汰策略:config set maxmemory-policy allkeys-lru设置Redis最大占用内存大小:config maxmemory 100mb 设置内存大小为100mb淘汰算法:最近最少使用算法

2022-12-04 13:57:37 338

原创 Mybatis框架--Mybatis的二级缓存机制

Mybatis框架的二级缓存机制,包括图解。

2022-11-28 21:14:35 420

原创 Mybatis框架--Mybatis中的#{}和${}的区别是什么?

Mybatis框架--Mybatis中的#{}和${}的区别是什么?

2022-11-22 13:14:51 230

原创 Java基础--new String()创建了几个对象,String字符串==比较

java基础,String字符串创建了几个对象,字符串对象的比较。

2022-11-21 10:10:42 285 1

原创 Java基础--static,final关键字作用与区别

java的static和final关键字的区别

2022-11-19 11:33:25 163

原创 Redis--如何保证redis和数据库中数据双写一致性

redis--如何保持redis和数据库中数据双写一致性

2022-11-15 10:05:13 1686 1

原创 Java框架--SpringBoot(核心功能,自动装配)的学习笔记

SpringBoot的核心功能和自动装配原理的学习笔记

2022-11-15 09:31:51 157

原创 Java基础--接口和抽象类的区别(接口中的默认,静态,私有方法)的学习笔记

接口与抽象类的区别,接口中的方法?

2022-11-14 09:53:56 130

原创 计算机网络--TCP与UDP(区别,TCP报文格式)的学习笔记

1. TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,即在收发数据钱 ,都需要与对面建立可靠的链接。2. UDP(User Datagram Protocol)用户数据报协议,传输时不需要建立连接。不保证数据传输的可靠性。

2022-11-05 09:00:00 673

原创 Java框架--SpringMVC(工作原理,常用注解)的学习笔记

Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

2022-11-04 09:15:00 287

转载 计算机网络--IPV4地址详细解释

A:8位网络位,24位主机位组成。最小网络号是:1100 0000 0000 0000 0000 0000=192.0.0。B:16位网络位,16位主机位. 128.0.0.0-191.255.255.255。C:24位网络位,8位主机位。主机号为全0和全1的的地址都不能分配给主机或者路由。A类网络号0和127的不能分配给主机和路由器接口。A类网络号为0和127的都不能分配给主机或路由。A类:网络位为8位,主机位为24位。B类:网络号为16位,主机位为16位。C类:网络位为24位,主机位为8位。

2022-11-03 09:30:00 2556

原创 Java框架--Spring(事务,@Transactional)的学习笔记

事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。最经典的事务例子当属银行转账,A转账给B一百块的流程要经过两个操作,将A账户减少100块,B账户增加100块,若此时银行系统发生崩溃,可能发生A账户金额减少而B账户金额不增加,造成错误。故事务就是要保证这样的操作要么同时完成,要么同时失败。

2022-11-02 12:12:37 274

原创 Java框架--Spring(IOC,AOP)的学习笔记

Spring是JAVA企业级应用的开源开发框架,主要是用来简化JAVA企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。Spring贯穿表现层,业务层,持久层,且还能和其他框架无缝整合。

2022-11-01 14:10:35 318

原创 计算机网络--HTTP与HTTPS(协议,原理,状态码)的学习笔记

超文本传输协议(Hypertext Transfer Protocol,HTTP),是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。没有规矩不成方圆,人类社会需要制定规则来规范人们的行为,互联网世界也是如何。计算机通讯需要共同遵循一定的规则,这些规则就是协议HTTP 正是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。HTTPS基于SSL的HTTP协议。

2022-10-31 16:15:12 486 3

JDK 版本(8 12 14 17)

jdk window x64 版本8 ,12 , 14, 17 什么是jdk:JDK 是 Java Development Kit 的缩写,它是由 Sun 公司开发的用于构建在 Java 平台上的应用程序、applet 和组件的开发环境。JDK 提供了一系列重要的类和接口,这些构成了 Java 平台的基石,使得开发者能够编写和运行符合 Java 语言规范的代码。 JDK 不包含具体开发软件,而是提供了必需的类库和 Java 语言规范,无论开发者使用的是哪种集成开发环境(IDE)。 它包括了 Java 虚拟机(JVM)及其相关的系统类库,以及其他开发者工具,如编译器等。 JDK 是 Java 开发的核心,所有的 Java 改进都会被加入到 JDK 中,并随着后续版本的发布而更新。 JDK 对于想要成为 Java 程序员的人来说是非常基本且重要的工具。

2024-01-25

redis压缩包:redis.7z

redis压缩包,在window系统解压后,双击redis-server.exe即可开启redis服务,双击redis-cli.exe输入redis命令。 适合人群;在window系统学习redis相关命令的开发人员,需要redis完成开发测试任务的开发测试人员

2024-01-18

PicGo:一个用于快速上传图片并获取图片 URL 链接的工具

一个用于快速上传图片并获取图片 URL 链接的工具。可用于使用Gitee,GitHub,阿里云OSS,腾讯云OSS搭建图床时快速上传图片,并获取上传后的URL。

2024-01-14

RedisOperation,Redis操作工具类

内容概要:主要把一些常用的redis操作使用redisTemplate包装为redis命令名的方式,包括redis各种数据类型的插入,获取方法,如,返回有序集key中,指定区间内的成员。且带有score; 返回有序集key中,所有score值介于min和max之间(包括等于min或max)的成员。有序集成员按score值递增(从小到大)次序排列;返回有序集key中,指定区间内的成员, 成员的位置按score值递减(从大到小)来排列;为有序集key的成员member的score值加上增量increment;移除集合key中的一个或多个member元素,不存在的member元素会被忽略;移除有序集key中的一个或多个成员,不存在的成员将被忽略;返回有序集key中,score值在min和max之间(默认包括score值等于min或max)的成员的数量等。 适用人群:具有一定编程经验,对Redis,RedisTemplate有一定的了解的开发人员。 资源功能:项目需要redis操作相关的代码,使用该工具类可以简化开发。

2024-01-09

Java-IpUtil通过请求获取IP信息的工具类

内容概要:要工具类将接口请求解析以获取请求的IP地址信息。内含Ip2regionSearcher工具类的使用方式,可以通过使用Ip2regionSearcher将获取到的IP地址信息,进一步解析得到IP属地信息。 适应人群:有需要获取请求IP地址相关业务需求的开发人员。 资源功能:项目有需要获取接口请求的IP信息的业务功能。

2024-01-08

Java - Redis操作的工具类RedisUtil

内容概要:主要把一些常用的redis操作使用redisTemplate包装为redis命令名的方式,包括redis的各种数据类型的操作方法,如,批量删除key;序列化key;查找匹配的key;将当前数据库的 key 移动到给定的数据库 db 当中;移除 key 的过期时间,key 将持久保持;返回 key 的剩余的过期时间;从当前数据库中随机返回一个 key;仅当 newkey 不存在时,将 oldKey 改名为 newkey;将给定 key 的值设为 value ,并返回 key 的旧值(old value);设置ASCII码, 字符串'a'的ASCII码是97, 转为二进制是'01100001';为哈希表 key 中的指定字段的整数值加上增量 increment;获取列表指定范围内的元素;移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止;获取key集合与多个集合的并/差集;key集合与多个集合的差集存储到destKey中;返回元素在zset的排名,添加分布式锁等等。 资源功能:项目需要redis操作相关的代码,使用该工具类可以简化开发。

2023-12-13

Java - DateUtil 日期时间转换工具类

资源名称:DateUtil 日期时间转换工具类 内容概要:日期时间转换工具类,包括基本的Date类型,String类型,TimeStamp类型,LocalDateTime类型,LocalDate类型之间的互相转换,还提供了许多与时间获取,时间计算有关的方法,如:获取指定日期几天后的日期;获取指定日期几天后的日期;获取指定日期几小时后的日期;将日期转换为中文字符串;将时间新增或减少对应月份;判断两个日期是否是同一个月;返回某月第一天/最后一天;按照给定格式返回某月第一天;智能格式化数据;获取两个时间之间的间隔;在某个时间基础上,往前推或者往后推几个年,返回[年-月-日]格式的日期;判断时间是否在时间段内;获取某年最后一天日期;在原日期的基础上增加/减少小时数;获取年份中的天数;如果当前时间是节假日,返回下一个工作日;获取某天之后的下一个工作日;日期转毫秒数;将时间新增或减少对应日期等等。 资源功能:项目需要编写与时间转换相关的代码,使用该工具类可以简化开发。 适用人群:具有一定编程经验,能够看懂相关Date类,LocalDate类时间类的方法的开发人员。

2023-12-13

RedisOperation,Redis操作工具类

内容概要:主要把一些常用的redis操作使用redisTemplate包装为redis命令名的方式,包括redis各种数据类型的插入,获取方法,如,返回有序集key中,指定区间内的成员。且带有score; 返回有序集key中,所有score值介于min和max之间(包括等于min或max)的成员。有序集成员按score值递增(从小到大)次序排列;返回有序集key中,指定区间内的成员, 成员的位置按score值递减(从大到小)来排列;为有序集key的成员member的score值加上增量increment;移除集合key中的一个或多个member元素,不存在的member元素会被忽略;移除有序集key中的一个或多个成员,不存在的成员将被忽略;返回有序集key中,score值在min和max之间(默认包括score值等于min或max)的成员的数量等。 适用人群:具有一定编程经验,对Redis,RedisTemplate有一定的了解的开发人员。 资源功能:项目需要redis操作相关的代码,使用该工具类可以简化开发。

2023-12-13

空空如也

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

TA关注的人

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