自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 当你在浏览其中输入一个网址回车后,发生了什么?

在上文中,我们讲述了访问网站的原理,即当我们解析到域名的IP地址时,需要与服务器建立连接。那么我们是如何根据 IP 找到这个服务器呢?为了更好地解释这个问题,我们先从最简单的问题分析,将需要通信的设备简化为两台,只需用网线连接它们,这样就形成了最简单的网络。如下图所示:设备A 和 设备B 进行了连接,他们就可以通信了。但是,如果现在我再加入一个设备C,整体的结构就变成了如下所示:当设备A想要向设备B发送消息时,由于不知道目标端口,所以只能将消息发送到每个网口。这意味着设备C也会收到设备A的消息。那么设备C如

2024-03-30 20:10:10 625 1

原创 从 0-1 聊聊网络的演进

在上文中,我们讲述了访问网站的原理,即当我们解析到域名的IP地址时,需要与服务器建立连接。那么我们是如何根据 IP 找到这个服务器呢?为了更好地解释这个问题,我们先从最简单的问题分析,将需要通信的设备简化为两台,只需用网线连接它们,这样就形成了最简单的网络。如下图所示:设备A 和 设备B 进行了连接,他们就可以通信了。但是,如果现在我再加入一个设备C,整体的结构就变成了如下所示:当设备A想要向设备B发送消息时,由于不知道目标端口,所以只能将消息发送到每个网口。这意味着设备C也会收到设备A的消息。那么设备C如

2024-03-30 20:04:53 1080 1

原创 MySQL 在RR隔离级别下会产生幻读吗?

事务A进行一次查询,之后事务B插入一条数据,事务A进行第二次查询,如果两次查询到的数量不同,就是发生了幻读。举个例子,假设有一张表user,表中有字段age,没有索引。事务A事务B1beginbegin234commit56commit如果2和5两次查出的条数不等,则说明发生了幻读。

2024-01-28 23:25:09 1047 1

原创 用 redis bitmap 实现 12306 余票模型

希望大家多多关注火车票的售卖模式和正常的商品不同,其他商品的库存比较单一,而 12306 库存基于车次中的城市到城市。举个例子来说:G1 车次从北京到上海虹桥,中间经过站有济南和南京南:在售票时意味着可以购买以下几种组合而且相邻的方案,如果有公共的站,还会存在库存的依赖关系。比如:南京南–上海虹桥的票已经售完,那就意味着所有到上海虹桥的方案都是无票,但是我们可以买其他几个方案。

2024-01-07 09:50:45 443 1

原创 如何实现毫秒级别的抽奖系统

抽奖系统的设计与优化是一个常见的挑战,特别是在处理大量数据时。为了实现毫秒级别的抽奖系统,我们可以结合使用数据库和数据结构来达到高效的目标。

2024-01-02 21:28:47 354

原创 从redis原理的角度认知Set命令的执行过程

本篇文章主要讲解 ,同样会附带了解下面几个问题为了了解redis请求流程,首先先了解下redis的网络模型。redis 支持 4中网络模式, select、poll、epoll、kqueue ,其中epoll 模型我个人认为是应用最广泛的模型,所以本篇文章以epoll 模型为 demo 进行讲解。

2024-01-01 17:27:18 850

原创 高并发环境缓存不一致的问题解决思路

在仅考虑这个过程时,似乎没有问题。然而,当数据发生修改时,我们需要看看可能出现的问题。

2024-01-01 17:24:30 443

原创 一行代码引发的性能暴跌 10 倍

栈上分配是 Java 虚拟机提供的一项优化技术,将线程私有的对象打散分配在栈上,栈上分配的对象回收直接 POP 出站,不需要垃圾回收器的介入,效率很高。由于对象一般分配在堆上,而堆是线程共用的,因此可能会有多个线程在堆上申请空间,而每一次的对象分配都必须线程同步,会使分配的效率下降。通过上面的分析,可以剖析出原因了,在使用打印的时候导致了 user 对象的逃逸,所以导致在栈上分配条件不满足,只能在堆上分配,这样就会导致频繁的 GC,效率低下。上面的一个简单的代码是测试 Java 创建对象的性能,如果没有。

2023-09-11 10:05:14 63

原创 领域驱动设计(DDD):DDD落地问题和一些解决方法

本文介绍了在实际应用领域驱动设计(DDD)时可能遇到的一些常见问题以及解决方案。首先,讨论了在采用充血模型时,如何在Spring框架中进行依赖注入的问题,提供了两种解决方法,其中一种是使用Spring的接口,另一种是将依赖作为参数传递,以确保领域对象可以访问所需的服务和组件。其次,探讨了大聚合根的加载性能问题,特别是当一个聚合根包含大量关联实体或值对象时,可能导致性能下降的情况。为了解决这个问题,建议采用按需加载、分页加载、缓存和事件驱动架构等策略,以提高大聚合根的加载和操作性能。

2023-09-10 18:03:50 345 1

原创 领域驱动设计(DDD):三层架构到DDD架构演化

通过这些代码组织方式,你能够更好地体现领域的核心业务,降低不同层次之间的耦合度,使代码更加清晰、可维护和可扩展。在三层架构的演化过程中,有时会尝试引入额外的"Manager"层来管理服务层的功能,但这并不是DDD所倡导的概念。Domain层是DDD的核心,它包含了领域对象、值对象、聚合根等,以及领域内的业务逻辑和规则。经过我们的修改,三层架构可以(组合和聚合)演进到右侧架构模式,通过这种方式,我们能够更好地组织和管理代码,实现领域内高内聚低耦合的目标。将相关联的实体和值对象组合成聚合,聚合根是聚合的入口。

2023-08-23 22:11:23 288

原创 领域驱动设计(DDD):如何使用DDD的思想优化你的代码

在这篇文章中,我将带您深入领域驱动设计(DDD)的世界,以通俗易懂的方式解释如何利用DDD来优化您的代码。作为一名从事代码编写多年的程序员,我深刻理解在实际项目中遇到的挑战和困惑。我会避开晦涩难懂的概念,重点关注实际操作和好处。从基础的代码组织开始,逐步展示如何实现"高内聚、低耦合"的目标,解释DDD如何帮助您构建更干净、健壮的代码。通过案例和实际代码,您将了解如何解决第三方接口依赖、数据存储耦合、业务逻辑分散等问题,从而让您的代码更加易读、易维护。让我们一起探索,如何用DDD为您的代码注入新的活力和效率。

2023-08-19 12:20:26 203

原创 CMS 三色标记法

为什么引入三色标记法为了提供 JVM 垃圾回收的性能,从 CMS 垃圾收集器开始,引入了并发标记的概念(此处的并发标记是指与用户线程一起工作)。引入并发标记的过程就会带来一个问题,在业务执行的过程中,会对现有的引用关系链出现改变。具体如下图:当 GC 线程开始标记对象的时候,如果这个时候用户线程修改了 F 和 A 的引用,因为此时 A对象已经被遍历完成了,GC线程就不会再对 A 有新的标记操作,这样 GC 线程就会认为 B,C,D 对象没有被任何对象引用,就会被当成垃圾回收。很明显在并发的情况下,“

2021-06-27 21:00:54 492

原创 排序算法系列--先写一个js动画

写一个排序算法的js动画,目前实现了冒泡和插入排序,后续还在开发。界面如下:体验地址:http://blog.laofu.online/2020/05/05/sorted-bubble/

2020-05-05 22:08:06 151

原创 JVM指令的速记

在学习的JVM的时候,最重要的是认识JVM的指令,JVM指令很多,为了方便记忆,可以根据前缀和功能进行分类:例如:nop指令代表是一个空指令,JVM收到指令后,什么都不用做,等待下一个指令。const把数据推至栈顶const的范围从0x01–0x0f,负责把数据推送到栈顶。例如:iconst_0负责吧整型的0推送到栈顶。 fconst_0负责把float的0推送到栈顶。const可以分为以...

2020-05-04 21:30:00 501 4

原创 图解网络IO模型

IO本质上是对数据缓冲区的读写,主要分为文件IO和网络IO,基本模型有很多,可以从两个方面去认识 同步和异步,阻塞和非阻塞。根据上面分类可以分为下面五类:阻塞I/O(blocking I/O)非阻塞I/O (nonblocking I/O)I/O复用(select 、poll和epoll) (I/O multiplexing)信号驱动I/O (signal driven I/O (SIG...

2020-04-20 23:25:01 240

原创 Java中Integer的详解

在Java中有int和integer两种类型,简单的说Integer是int的引用类型,但是这个引用的类型比较特殊,下面看几个demo:Integer a1 = 140;Integer a2 = 140;System.out.println(a1 == a2);Integer b1 = 120;Integer b2 = 120;...

2018-12-23 00:00:00 1818 1

原创 Tomcat不安全字符的处理

做项目的时候碰到一个问题,就是Tomcat在处理含有|,{,}的字符的Url时候,发现请求没有到达指定的Controller上面,而在Access_log中写入了get null null 400的错误信息,从网上也翻了几个资料最终确定是tomcat的一个问题(个人觉得也是一个缺陷)问题的由来Tomcat根据rfc的规范Url中不能有...

2017-10-25 00:00:00 355

空空如也

空空如也

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

TA关注的人

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