lily's blog

Thinking will not overcome fear but action will.

题解: 打印池在系统中只能存在唯一的一个对象,成为一个线程安全的资源,所以单例模式正确 一个系统只允许存在一个打印池对象,打印池是管理多台打印机的作用,看到池就想享元是不对的。 题解: 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如...

介绍一下数据库设计的三范式 第一范式:表不可再分 第二范式:消除了非主属性对主属性的部分函数依赖 第三范式:消除了非主属性对主属性的传递函数依赖 数据库设计的三范式是数据规范化的一种方法,是针对关系数据库设计的理论。第一范式要求每个列的值都是不可再分的原子值;第二范式要求所有非主键属性必须完全依赖于整个主键,而不是依赖于主键的某一部分;第三范式要求非主键属性之间不能存在传递依赖关系,即所有数...

文件类型和权限由开头的 10 个字符表示,第一位表示文件的类型,有如下几种: 普通文件类型 d 目录文件 b 块设备文件 c 字符设备文件 s 套接字文件 p 管道文件 l 链接文件 所以D是符号链接文件。 知识点:Linux nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续...

秒杀三阶段 通常,从秒杀开始到结束,往往会经历三个阶段: 准备阶段:这个阶段也叫作系统预热阶段,此时会提前预热秒杀系统的业务数据,往往这个时候,用户会不断刷新秒杀页面,来查看秒杀活动是否已经开始。在一定程度上,通过用户不断刷新页面的操作,可以将一些数据存储到Redis中进行预热。 秒杀阶段:这个阶段主要是秒杀活动的过程,会产生瞬时的高并发流量,对系统资源会造成巨大的冲击,所以,...

本文基于Feed流架构参考,记录从学习到实现一个可以承载小流量的仿微博Feed流系统的过程。 Feed流 参考文章: 掘金: 使用redis实现feed流 即刻:自主实现了一个feed流系统 微博feed流系统架构 Feed流系统架构理论 IM开发技术学习:揭秘微信朋友圈这种信息推流背后的系统设计 什么是 feed 流 信息推流(以下简称“Feed流”...

类加载器有哪些 用户自定义类加载器:用户可以自定义类加载器用于加载网络类库等 应用程序类加载器:加载在用户指定的类路径(ClassPath)下的自定义类或是第三方类库(com.example.MyClass, com.hutool.*) 扩展类加载器:加载的是扩展类库,例如javax.swing.*, java.util.zip.*,这些类库位于java扩展目录下(jar/l...

作为一个程序员,假设你有 A、B 两个服务,A 服务发出消息后,不想让 B 服务立马处理到。而是要过半小时才让 B 服务处理到,该怎么实现? 这类延迟处理消息的场景非常常见,举个例子,比如我每天早上到公司后都会点个外卖,我希望外卖能在中午送过来,而不是立马送过来,这就需要将外卖消息经过延时后,再投递到商家侧。 那么问题就来了,有没有优雅的解决方案?当然有,没有什么是加一层中间层不能解...

大家在日常开发中,是否处理过大批量消息积压的问题呢? 它一般由于代码bug(比如消费逻辑处理有误)、或者生产者的生产速度大于消费者的消费速度(如大促、抢购等活动期间导致消息数量激增,或者消费者处理速度极慢),就可能导致生产环境出现百万、甚至千万的消息积压。 那么,假设发生kafka百万消息堆积,如何解决呢? 先排查是不是bug,如果是,要快速修复 优化消费者代码逻辑 ...

Kafka为什么这么快 顺序读写 零拷贝 消息压缩 分批发送 顺序读取 零拷贝原理 把磁盘中的某个文件内容发送到远程服务器上 那么它必须要经过几个拷贝的过程: 从磁盘中读取目标文件内容拷贝到内核缓冲区Read Buffer中。 CPU控制器再把内核缓冲区的数据赋值到用户空间的缓冲区中 接着在应用程序中,调用write()方法,把用户空间缓冲区中的数...

数据结构 字典树是一种特殊的多叉树,它虽然是树形结构但是设计出来却是为了方便查找存储的字符串类型的。 字典树的数据结构跟一般的多叉树不同,它的子节点的指针是存放在26个字母表长度的数组中的. TrieNode中保存了下一个字符可能出现的所有字符的链接,我们可以通过当前节点预知所有子节点的值。 struct TrieNode { bool isEnd; // 该结点是否是一个串的结束 ...