自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java序列化

这就产生了一个问题,如果User是单例的,即它的构造函数被私有化,同时为了防止构造函数通过反射的方式被调用,会在构造函数中抛一个异常。java序列化,不光要存对象属于哪个类、哪一个包下、对象的属性,还。,相当于这个类的身份证,类不一样,就无法反序列化回来。我们加上断点,再次反序列化,发现进到了这个函数中。那么我们如何保护单例的类,不被反序列化破坏呢?java序列化,是有一套规则的,但是你可以。用jdk的序列化,序列化user。这个方法就是一个反序列化协议,我们发现,反序列化的时候。本质:把对象变成字节。

2025-05-21 20:19:35 136

原创 非对称加密

A 想要向 B 分享一个重要文件,他使用 对称加密(Symmetric Encryption) 进行加密。但送达后,B 不知道加密时的密码,无法解密文件(没有钥匙,打不开锁)。此时面临一个关键问题:如何安全传递密钥?➜ 通过邮件发送密码?存在被截获的风险这正是 非对称加密(Asymmetric Encryption) 需要解决的核心问题。

2025-05-11 22:30:27 312

原创 json unmarshal 到 interface{} 的精度陷阱

要将jsonStr转换成map[string]interface{}:用JSON序列化一下,再反序列化成mapid变长的时候,我们发现此时结果并不正确为什么int变成了float呢?

2025-05-10 22:06:10 314

原创 Go基础学习

/声明slice1是一个切片,并且初始化,默认值是1,2,3,长度len是3//声明slice1是一个切片,但是并没有分配空间 此时 slice2[0] = 1 这样赋值会报错//开辟空间//声明slice3是一个切片,同时分配3个空间,初始值是0fmt.Println("slice2是一个空切片")} else {fmt.Println("slice2是有空间的")//第一种声明方式//key:int value:string 但仅仅这样声明的话,这个map是无法使用的。

2025-05-09 15:31:16 868

原创 AQS简介

Semaphore等等 都与AQS有关。

2025-05-09 15:27:06 716

原创 jdk21虚拟线程

当一个线程的时间片用完后,操作系统会暂停该线程的执行,保存其当前状态(包括寄存器内容、程序计数器等),然后切换到另一个线程,恢复其之前的状态并继续执行。:每次切换线程时,操作系统需要保存当前线程的状态并恢复下一个线程的状态,这个过程称为上下文切换。因为不同的线程可能访问不同的内存区域,当切换到另一个线程时,新的线程可能需要重新加载数据到缓存中,导致缓存命中率下降,增加了内存访问延迟。线程切换会打破流水线中的指令序列,导致流水线需要重新填充,这会降低CPU的执行效率。,但虚拟线程和线程不是,

2025-05-08 11:33:42 243

原创 Netty组件与编码

把ServerSocketChannel的accept事件注册给selector进行监听accept事件就表示有一个客户端要向服务端进行连接Selector.select()是一个阻塞函数,一直等待他监听的事件,这个函数触发代表着有一个SocketChannel要连接,然后我们把这个SocketChannel的read和write事件注册到selector上,此时selector就监听了三个事件。

2025-05-05 15:50:33 806

原创 BIO NIO

启动server和client:上面代码存在什么问题呢?socket.accept()只调用了一次,说明我们的服务器只能接收一次客户端的连接服务端加个while(true),客户端让两个线程来连接控制台:我们发现,tom线程在连接服务器的时候,jerry线程是不能向服务器中发送数据的tom断开连接之后,服务器一次性读取了jerry线程里面所有的内容那么如果tom线程不断开连接,服务器就一直在等待。在这种模式下,,这就是传统的BIO模型。

2025-05-03 18:11:52 397

原创 手写HashMap

主要实现三个函数 put get remove根据jdk对map的定义,put有返回值,是一个value,如果map里已经有了key对应的value,就用新的value覆盖掉旧的value,并且返回旧value;如果map没有key对应的value,返回nullremove也有返回值,如果map中有key对应的value,就返回value,否则返回null关联key和value -> node创建一个容器,把node装起来。

2025-04-25 13:02:49 581

原创 基于Flink与Kafka实现通用数据处理流程

比如说,上游系统接收到的订单和数据,以什么方式通知给下游系统呢。进行异构系统数据传递和开发的时候。

2025-04-15 20:33:56 439

原创 缓存一致性

强一致性场景分布式锁 + 事务消息,但需接受性能损耗(如金融核心链路)。高并发最终一致性场景Cache Aside + 延迟双删为主流方案,平衡性能与一致性。可结合版本号或逻辑时间戳进一步规避乱序问题。容错设计监控报警(缓存与数据库差异检测) + 自动修复脚本。通过分层设计(如读写分离、冷热隔离)与异步化手段(如Binlog订阅更新),可系统性降低缓存不一致风险,同时保障高并发性能。

2025-04-14 17:17:38 408

原创 Redis实现分布式锁解析

在 Redis 主从架构下,分布式锁的实现可能因主节点(master)宕机导致多个客户端同时持有锁,主要原因在于。:实现复杂,性能较低,需部署多个独立 Redis 节点。:性能低于 Redis,适合对一致性要求高的场景。客户端执行业务逻辑(需在锁的过期时间内完成)。客户端通过 Lua 脚本原子性释放锁(校验。:降低主从切换导致的数据不一致风险。Redlock 要求客户端在。命令在主节点设置锁。:无数据不一致问题。

2025-04-11 13:39:36 620

原创 设计模式-门面/外观模式

通过SLF4J,开发者可以在代码中使用统一的日志记录方式,而无需关心底层具体使用的是哪种日志实现。门面模式(Facade Pattern)是一种结构型设计模式,它通过提供一个统一且简化的高级接口,隐藏复杂子系统的内部细节,从而让客户端能够以更简单、更直观的方式与子系统进行交互,而无需深入了解其复杂的实现逻辑。我们在调用loadPlugin方法的时候要传入路径,但是绝对路径是有url不识别的字符的,所以我们把jar包直接粘到demo的根路径中。在实际应用中,门面模式被广泛用于简化复杂系统的操作。

2025-03-15 17:24:30 448

原创 以有涯随无涯,殆已!

学任何东西最大的阻碍就是羞耻感代替了成就感,本来你获得了一个新的知识,这是一件相当值得高兴的事情,但是因为某些环境灌输的概念,例如学海无涯苦作舟、学习如逆水行舟不进则退,这种类似的将知识给无限化、神圣化、武器化的说法,加上与这个领域的某些成就者进行的主动或被动的对比,让大脑错误地把获得这个知识的成就感,替换为了一种“这个领域的知识这么庞大我却只学会这么一丁点,真是丢人”的羞耻感。实际上从无到有的这个过程,不论什么时候,都应该是值得让人为自己感到骄傲的,应该为自己的进步感到开心,认可并强化自己的获得感。

2025-03-08 16:33:59 125

原创 MySQL事务 总结

A原子性(Atomicity):一个事务中的所有操作要么全部执行,要么全部不执行,不会有部分成功和部分失败的情况。C一致性(Consistency):事务执行的结果应该符合数据库的约束条件和逻辑。在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。一个合法状态变成另一个合法状态,这个合法状态是和业务有关的。I隔离性(Isolation):并发执行的多个事务相互独立,不会相互干扰,通过锁和MVCC来保证。每个事务应该只能看到其自身提交之前的数据。

2025-03-01 13:02:19 498

原创 灵神 算法精讲视频题单总结【二分】

A:已知定义蓝色是目标峰顶或其右侧元素 题中说nums[n]可以假设为负无穷 所以nums[n-1]要么是峰顶,要么是峰顶的右侧元素,不可能是峰顶的左侧元素,(nums[n]是负无穷不可能是峰顶)。check函数中初始化sum为piles.length(吃每堆香蕉至少需要一天),后面在计算每堆香蕉需要的天数的时候,循环中累加sum的时候,每次计算出的值为实际值-1。:x在第二段,或者数组只有一段,如果target在第一段||target在第二段,在x左边,满足check。

2025-02-28 17:51:13 668

原创 MySQL索引 总结

索引是一种可以快速查询数据的,有序的数据结构。

2025-02-28 16:01:47 786

原创 MySQL的JSON类型和虚拟列索引

此外,在查询时,可以用 JSON_TABLE,他可以将JSON 数据转换成关系型表格形式,从而更容易与其他 SQL 表操作。这是很常见的多对多的实现方式.但有时,可能一张表有很多个多对多字段,就会带来相当数量的中间表,看着很麻烦.,以及更多层的嵌套.同时,MySQL可以自动判断JSON是否合法:如果不合法会产生错误.JSON就是字面意义上的JSON,几乎可以存放任意类型的数据.比如上文提到的列表。包括(2,3)的所有学生,需要先将JSON序列化,再分别查询.(用于从 JSON 数组中提取值)的功能.

2025-02-26 20:28:16 389

空空如也

空空如也

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

TA关注的人

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