- 博客(27)
- 收藏
- 关注
原创 我的创作纪念日
最初成为创作者的初心源于日常工作中的实战项目。在参与一些复杂的技术项目时,积累了不少宝贵的实践经验。我发现很多时候团队内部的知识交流存在一定的局限性,一些实用的技巧和解决方案无法及时、有效地分享给更多有需要的人。于是,我便希望通过创建文章的方式,将自己在项目中遇到的问题、思考过程以及最终解决方案详细记录下来,一方面加深自己对知识的理解和巩固,另一方面也为其他开发者提供一些参考和借鉴,希望能对他们解决类似问题有所帮助。
2025-04-05 16:48:30
353
原创 设计模式(二):结构型设计模式,组合模式,适配器模式,外观模式,桥接模式
抽象部分定义控制逻辑,我要实现什么样的东西,需要依赖于实现部分,但是不需要知道他的具体实现,只需要去依赖一个具体实现不需要关心它怎么实现。对象结构型模式:对象结构型模式关心对象和类之间的组合,在一个类中,应用另一个类的对象,形成更大的结构。类结构型模式:类结构型模式关心类和类之间的组合,通过继承来组合类,形成更大的结构。组合模式的核心思想是将对象构建成树形结构,叶子节点是树形结构的基本元素,没有子节点,组合节点是树形结构中的容器,可以有子节点。复用性:可以复用现有的类,而不需要修改它们的代码。
2025-04-01 09:34:00
884
原创 redis使用快速入门,依赖,测试,序列化配置,客户端选择
在Spring Date Redis的RedisTemplate,能够将任何类型的对象转换成redis能够接收的字节,但是一般默认采用的序列化方式是JDK的序列化方式,这种序列化的缺点是占用空间大,难看懂,一般使用redis需要自己指定序列化方式,key一般是String类型的,value一般是Object类型的,所以key使用的序列化器是StringRedisSerializer,value使用的序列化器是GenericJackson2JsonRedisSerializer。pool有默认值,可以配置。
2025-03-29 15:07:30
1119
原创 redis主从同步,全量同步,增量同步
repl_baklog:循环缓存数组,记录主机写的操作命令,主机和从机进行数据同步,主机将循环数组的数据发送给从机,从机执行同步数据。在主从节点进行第一次数据同步的时候,或者从节点宕机,主机数据覆盖了从机未同步的数据。在第一次同步之后,大部分的同步做增量同步,第一次同步之后,增量同步也是持续的。全量同步生成RDB文件,在将文件通过网络传输到从机,消耗太大。replid:数据集的id,表示是哪一个数据集的。offset:偏移量,记录服务同步数据到哪个地方。同步主节点和从节点之间差异的部分。
2025-03-26 17:58:55
432
原创 linux系统,Redis安装说明,最详细
如果客户端连接不了redis,可能是防火墙没有开,开启端口即可,如果不知道怎么开启,可以参考着篇文章,怎么查看防火墙状态,怎么开启指定端口,怎么删除端口等,都有详细说明。大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包。方式启动,则必须修改Redis配置文件,就在我们之前解压的redis安装包下(Redis的官方网站地址:https://redis.io/在官网下载一个版本的redis的tar包,上传到虚拟机中。,会阻塞整个会话窗口,窗口关闭或者按下。
2025-03-25 22:29:20
698
原创 linux,防火墙,firewall,常用命令
• 安全性考虑 :仅开放必要的端口,并限制访问来源,以减少潜在的安全风险。例如,可以指定允许的 IP 地址或子网访问特定端口。• 检查服务名称 :如果使用服务名称开放端口,确保服务名称正确。如果你需要开放一个端口范围,可以使用 CIDR 表示法。• 说明 :此设置在防火墙重启后会恢复,除非同时进行了永久删除。为了使端口开放设置在防火墙重启后依然有效,需要添加。• 说明 :此设置在防火墙重启后会失效。,但需要确认你的系统中是否已定义该服务。),但不希望重启防火墙,可以使用。
2025-03-25 22:15:01
873
原创 分布式锁,rediss,redisson,看门狗,可重入,可重试
分布式锁是一种锁机制,用户解决同一个共享资源被多个线程并发访问的问题,使用分布式锁可以避免并发安全,数据不一致的情况。
2025-03-24 22:23:08
1453
原创 分布式锁,redisson,redis
分布式锁是一种锁机制,用于在分布式环境下,解决多个线程并发访问同一共享资源的问题,避免了并发冲突和数据不一致的问题。
2025-03-24 10:41:26
332
原创 Session和Cookie
• 定义 :Session 是一种服务器端的机制,用于在服务器上存储用户的状态信息。它通过一个唯一的标识符(Session ID)来区分不同的用户会话。• 特点 :• 数据存储在服务器端。• Session ID 通常通过 Cookie 传递给客户端。• 适合存储敏感信息(如用户登录状态、购物车内容等)。• 生命周期由服务器控制,通常会设置超时时间。特性CookieSession存储位置客户端(浏览器)服务器端安全性较低,容易被窃取或篡改较高,数据存储在服务器端。
2025-03-23 17:42:05
617
原创 设计模式(一):创建型设计模式,工厂模式,建造者模式,单例模式
例如我要配置一台电脑,我有好几个方案,方案一是配置为(4060显卡,32G内存,1T硬盘空间),方案二是配置为(3050显卡,16G内存,512G硬盘空间),我根据我的需要告诉装机师傅,我要按照什么方案配置,按照方案一配置一台性能好的电脑,按照方案二配置一台性能弱一点的电脑,我的电脑就是产品,方案就是具体建造者,师傅就是指挥者,这个过程实现了构建与表示分离,可以根据不同的构建方案出现不同的表示(电脑)。角色·······························
2025-03-23 11:37:20
859
原创 @PathVariable 和 @RequestParam
•用于从 URL 路径中提取变量,适用于标识资源的唯一性,如用户 ID、订单 ID 等。•用于从查询字符串中提取参数,适用于过滤、排序、分页等动态查询条件。• 根据具体的业务需求选择合适的注解,可以使代码更加清晰和易于维护。
2025-03-21 08:30:42
331
原创 Java Stream流,史上最全,玩转Stream流,过滤,分组,规约,集合等
forEach方法用于对流中的每个元素执行指定的操作。这是一个终端操作,意味着在调用forEach后,流的处理将结束,不会再进行后续的操作。方法也用于对流中的每个元素执行指定的操作,但与forEach不同的是,保证按照流的顺序依次处理每个元素。这在并行流中尤其有用,可以确保元素按原始顺序被处理。peek方法用于在流的每个元素上执行某些操作,但不会改变流中的数据。它主要用于调试或记录日志等场景,因为它允许你在流的中间操作中插入副作用操作(如打印),而不影响流的处理。Stream 的执行模型。
2025-03-13 23:09:48
1528
原创 什么是多态,多态的作用
多态是面向对象编程中的一个核心概念,它允许不同的对象对同一消息做出不同的响应。简单来说,多态意味着“多种形态”,通过多态,你可以使用统一的接口来处理不同类型的对象。多态允许你编写通用的代码,这些代码可以处理多种不同类型的对象,只要这些对象实现了相同的接口或继承自相同的父类。这样可以提高代码的可扩展性和可维护性,使代码更加灵活。方法被重载了三次,根据传入参数的不同,会调用不同的。方法时,会根据实际对象的类型调用相应子类的方法。类型的引用可以调用不同形状的。接口,并提供了不同的。
2025-03-04 08:42:50
368
原创 redisson锁重试机制,看门狗机制,Redisson原码
在tryLock方法中,可以有三个参数,一个是重试等待时间(-1,默认是不等待),一个是锁过期时间(-1,默认是30秒),一个是时间的单位(null,默认是毫秒),如果我们的锁过期时间未设置,就会启用看门狗机制,过期时间是30秒,锁获取后,在释放之前,定时任务每十秒更新锁的过期时间成30秒,确保如果我们没有设置过期时间,出现问题未手动释放锁的时候能够(崩溃)能够自己释放锁。如果一个线程获取不到锁不会立即失败而是在一段时间内继续尝试获取锁。在Redisson实现分布式锁,使用开门狗机制更新锁的过期时间。
2025-02-23 00:25:48
202
原创 redisson重入锁的原理
redisson实现了可重入锁,Rlock,实现的大概原理是,采用hash结构用来存储锁,其中大key表示表示这把锁是否存在,用小key表示当前这把锁被哪个线程持有,小key的值记录的同一线程获取锁的次数,同一个线程可以多次获取同一把锁,每次获取计数器加一。在特殊的业务中,一个方法一调用方法二,两个方法调用之前需要获取这一把锁,如果锁获取不到之后需要等待,那么,调用方法一的时候获取这把锁,调用方法二的之后获取不到,这个时候就产生了死锁。一个线程可以多次获取同一把锁。为什么要使用同一把锁?
2025-02-22 17:46:31
150
原创 Redisson,分布式锁
Redisson 是一个基于的开源 Java 客户端工具库,提供了丰富的分布式数据结构和功能,其中是其核心特性之一。它简化了分布式系统中锁的实现,解决了传统基于 Redis 实现分布式锁的复杂性问题。
2025-02-22 15:03:08
334
原创 黑马点评,redisson,秒杀,一人一单,线程安全,10单
在黑马点评课程中实战篇-18.分布式锁-Redisson快速入门,使用了redisson但是还是有线程安全,一个用户下了多个订单,可以把获取锁,判断锁放在带有事务的方法中。
2025-02-21 01:27:43
208
原创 @Autowired和@Resource什么区别
如果项目更强调遵循 Java 标准规范,且希望代码具有更好的可移植性,建议使用@Resource。如果项目是基于 Spring 框架开发,更倾向于使用 Spring 特有的功能和特性,@Autowired是一个不错的选择,并且结合@Qualifier注解可以灵活地控制注入的 Bean。Bean在注册的时候如果使用的方式是@Component及其衍生注解,使用的是类名首字母小写作为Bean的名称,如果使用@Bean注解,使用的是方法名作为Bean的名称。
2025-02-20 23:33:07
581
原创 全局唯一ID,全局唯一ID工具类,reids自增
在特殊情况下,如果使用主键自增,id太过于规律,容易被别人发现额外的信息,我们在设置id的时候需要考虑唯一性,安全性(不规律),可靠性(唯一),递增性(递增有利于创建索引)。生成全局唯一ID的方式有很多种,这里介绍使用redis自增生成全局唯一ID。序列号:32bit,秒内计数器,每秒可以产生2^32次方个不同id。不直接使用redis主键自增,在原来的基础上添加其他的信息。时间戳:31bit,以秒为单位,可以使用69年。符号位:1bit,表示正数永远为0。为什么要自己生成全局唯一ID。
2025-02-18 18:17:51
326
原创 IDEA-Search Everywhere-点击两次shift
在idea编写代码,经常需要涉及到中英文的切换,不小心就会触发Search Everywhere,真的烦。1. 使用快捷键打开设置,crtl+alt+s,打开settings。下面是修改这个快捷键和禁用双修饰做快捷键的方法。2. 打开keymap,添加修改快捷键。之后就可以安心的按shift了。3. 禁用双修饰做快捷键。
2024-10-16 22:18:58
544
2
原创 Charm Bracelet
题目大意:有一个背包的容量是n,现在有m件物品,每一件物品的容量是w,价值是v,在不超过背包容量的请款下,最多能装多少价值。思路:就是套模板,前提是得理解这个模板的意思。这道题就是一道对经典的背包问题。
2023-04-10 20:44:51
159
1
原创 Budget
这道题好狗啊,一看就会,一做就废。一开始总是出现精度丢失的问题,我以为是我的问题,题目写太少,是不是被人能用类似printf("%.2lf);之类的来让他不精度丢失,看着被人都过了,急了,用double精度丢失,用float好一点,前面的精度不会丢失,测试都是对的,交了几次都是WR,一度怀疑自己 ,直到看到了1e18,才感觉不是这么简单。思路:用字符串去记录小数(就不会有精度的丢失),把最后的数a拿出来判断,大于等于5就相当于增加了(10-a),否则的话就是减少了a,差值就是每一组的a的和/1000。
2023-04-06 01:02:06
124
1
原创 G-Traffic
思路:要让每一辆车子通过十字路口的时间不同,就要让南北方向的车子等待一段时间,让通过时间不同,可以用一个数组来记录时间路口在第几秒有汽车通过,因为东西方向的车子不变,先记录,再去记录南北方向的车子,从头开始记录,如果时间冲突,等待时间就增加一秒,知道最后一辆车子通过也没有发生交通事故,输出等待时间。这道题是在打训练赛写的,当时是剩下还不到半个小时看的,看了一小会就有思路,但是还是没有在比赛时间做出来,过了得10分钟才调试出来,有一些细节没考虑当时。下面是当时的代码,还没来得及整理,AC代码。
2023-04-06 00:35:32
275
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人