自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【读书笔记】架构整洁之道 P6 实现细节

文章摘要 本文探讨了系统架构中的几个关键实现细节,包括数据库、Web技术和应用程序框架。作者强调这些技术本质上只是实现手段,不应主导系统架构设计。数据库被视为存储数据的"大桶",Web技术并未改变软件本质,而框架应被谨慎使用,避免侵入业务逻辑。通过一个视频销售网站的案例分析,展示了如何基于角色和用例设计组件架构,并合理管理依赖关系。文章最后指出,传统分层架构虽然常见,但可能不是最佳实践,提示读者思考更合理的架构方式。

2025-09-26 17:50:07 914

原创 【读书笔记】架构整洁之道 P5-2 软件架构

文章摘要: 本文探讨了软件架构设计的核心原则和实践方法。首先强调架构设计应围绕业务用例展开,而非基于技术框架(第21章)。良好的架构应独立于框架、数据库等外部因素,支持延迟技术决策。随后介绍了"整洁架构"概念(第22章),提出以业务实体、用例、接口适配器和框架驱动四个层次构建系统,遵循依赖关系规则(源码依赖向内层)。文章还详细阐述了"展示器和谦卑对象"模式(第23章),建议将难以测试的视图逻辑与可测试的展示器逻辑分离,通过视图模型来传递格式化数据。这种分层设计能有效提

2025-09-26 17:49:13 845

原创 【读书笔记】架构整洁之道 P5-1 软件架构

文章摘要:软件架构的核心原则 软件架构的本质在于规划系统组件的划分、排列和通信方式,其核心目标是支持系统的全生命周期。良好的架构设计应具备以下特点: 保留灵活性:尽可能长时间地保留最多可选项,推迟无关紧要的细节决策(如数据库选择、框架引入),将策略(业务逻辑)与实现细节分离。 支持关键维度: 开发:清晰的组件划分支持团队协作 部署:实现一键部署,降低运营成本 运行:架构应直观反映系统运行时需求 维护:通过组件隔离降低修改风险 独立性设计:采用分层解耦(如UI与业务逻辑分离)、单一职责原则,使变更原因不同的部

2025-09-26 17:47:50 757

原创 【读书笔记】架构整洁之道 P4 组件构建原则

稳定抽象原则(SAP)为组件的稳定性与它的抽象化程度建立了一种关联。一方面,该原则要求稳定的组件同时应该是抽象的,这样它的稳定性就不会影响到扩展性。另一方面,该原则也要求一个不稳定的组件应该包含具体的实现代码,这样它的不稳定性就可以通过具体的代码被轻易修改。因此,如果一个组件想要成为稳定组件,那么它就应该由接口和抽象类组成,以便将来做扩展。如此,这些既稳定又便于扩展的组件可以被组合成既灵活又不会受到过度限制的架构。将SAP与SDP这两个原则结合起来,就等于组件层次上的DIP。

2025-09-26 17:45:51 1023

原创 【读书笔记】架构整洁之道 P2~3 编程范式&设计原则

不过,这里的“用户”和“系统利益相关者”在用词上也并不完全准确,它们很有可能指的是一个或多个用户和利益相关者,只要这些人希望对系统进行的变更是相似的,就可以归为一类——一个或多个有共同需求的人。1988年,Barbara Liskov在描述如何定义子类型时写下了这样一段话:这里需要的是一种可替换性:如果对于每个类型是S的对象o1都存在一个类型为T的对象o2,能使操作T类型的程序P在用o2替换o1时行为保持不变,我们就可以将S称为T的子类型。通常来说,要想构建一个好的软件系统,应该从写整洁的代码开始做起。

2025-09-26 17:42:51 982

原创 【读书笔记】深入理解JVM C13 线程安全与锁优化

本文探讨了Java中的线程安全与锁优化。首先分析了Java语言中的线程安全分类:绝对线程安全(难以实现)、相对线程安全(需保证单次操作安全)、线程兼容(需外部同步)和线程对立(无法并发使用)。然后详细介绍了线程安全的实现方法,包括互斥同步(synchronized和ReentrantLock)和非阻塞同步(如CAS)。特别指出synchronized虽然简单但存在性能问题,而ReentrantLock提供了更灵活的功能(可中断、公平锁、多条件绑定)。最后强调非阻塞同步依赖硬件指令实现原子操作,是更高效的并发

2025-09-26 17:39:48 982

原创 【读书笔记】深入理解JVM C12 内存模型与线程

本文摘要: Java内存模型(JMM)通过定义主内存与工作内存的交互协议,解决了多线程环境下的内存一致性问题。主内存存储所有变量,每个线程拥有独立的工作内存副本,通过8种原子操作(read/load/use/assign/store/write/lock/unlock)实现数据同步。volatile变量保证可见性但不保证原子性,其修改会立即刷新到主内存。此外,处理器缓存一致性协议和指令重排序优化也被类比到JMM中,为Java程序提供跨平台的一致性内存访问保证。模型明确了变量访问规则,同时允许JVM进行性能优

2025-09-26 17:39:01 994

原创 【读书笔记】深入理解JVM C10~11 程序编译与代码优化

本文主要介绍了Java程序编译过程中的前端编译与优化技术。首先区分了三种编译过程:前端编译器(如Javac)、即时编译器(如HotSpot的C1/C2)和提前编译器(如Jaotc)。随后重点讲解了Javac编译器的工作流程,包括解析与填充符号表(词法语法分析构建抽象语法树)、注解处理器(可修改语法树的插件机制)以及语义分析与字节码生成(类型检查、语法糖还原等)。特别分析了Java泛型的实现机制——类型擦除式泛型,指出其与C#具现化泛型的本质区别,并列举了由此带来的编码限制和性能影响。通过对比不同语言的实现方

2025-09-26 17:38:15 611

原创 【读书笔记】深入理解JVM C6-9 虚拟机执行子系统

Java虚拟机通过Class文件实现平台和语言无关性。Class文件采用紧凑的二进制格式存储,包含魔数、版本号、常量池等严格结构化的数据项。常量池是最复杂的部分,存放字面量和符号引用,支持动态连接。访问标志和继承关系索引(类、父类、接口)描述了类的基本信息。Class文件结构稳定确保了Java的向后兼容性,其严格定义的字节序和数据项顺序不允许任何改变。这种设计使得JVM可以运行多种语言编译的Class文件,实现了语言中立性。

2025-09-26 17:36:28 858

原创 【读书笔记】深入理解JVM C4~5

本文介绍了JDK提供的虚拟机性能监控和故障处理工具集,包括jps、jstat、jinfo、jmap、jhat和jstack等命令行工具。这些工具主要用于监控Java虚拟机运行状态、诊断性能问题和分析内存快照等。其中jps用于查看虚拟机进程,jstat监视运行时数据,jinfo查看和调整配置参数,jmap生成堆转储快照,jhat分析堆转储文件,jstack生成线程快照。文章还展示了通过Thread.getAllStackTraces()方法获取线程堆栈信息的示例代码,并指出在生产环境中通常使用更专业的分析工具

2025-09-26 17:35:44 637

原创 【读书笔记】深入理解JVM C1~3

Java技术体系的自动内存管理,最根本的目标是自动化地解决两个问题:自动给对象分配内存以 及自动回收分配给对象的内存。关于回收内存这方面,笔者已经使用了大量篇幅去介绍虚拟机中的垃 圾收集器体系以及运作原理,现在我们来探讨一下关于给对象分配内存的那些事儿。接下来的几小节内容,笔者将会讲解若干最基本的内存分配原则,并通过代码去验证这些原则。本节出现的代码如无特别说明,均使用HotSpot虚拟机,以客户端模式运行。

2025-09-26 17:34:46 715

原创 【读书笔记】重构:改善既有代码的设计(第二版)

《重构:改善既有代码的设计(第二版)》读书笔记

2025-03-22 19:54:14 680

原创 【读书笔记】Java编程思想 - Thinking In Java

Thinking In Java 读书笔记

2025-03-02 10:45:56 659

原创 【读书笔记/源码】How Tomcat Works 笔记- c11~c13

how tomcat works 读书笔记 c11-c13

2025-01-05 15:55:35 1098

原创 【读书笔记/源码】How Tomcat Works 笔记 - c1~c10

how tomcat works读书笔记 c1-c10 附部分源码结构

2025-01-05 15:54:04 1386

原创 【读书笔记】代码整洁之道

代码整洁之道笔记

2024-10-07 23:11:44 1015

原创 【笔记】DDD领域驱动设计

领域驱动设计 原书第二部分

2024-10-05 19:36:07 1188

原创 【刷题】C++ 版刷题指南

刷LeetCode时收集的一些C++刷题用法

2024-04-19 17:08:49 1727

原创 【分布式】MIT 6.824 Lab 2C实现细节分析

MIT 6.824 2020版 Lab 2C细节分析(基于Lab2B)

2024-04-08 11:27:36 1276 1

原创 【分布式】MIT 6.824 Lab 2B实现细节分析

MIT 6.824 2020版 Lab 2B 实验实现细节/关键点总结

2023-11-15 22:26:11 1252

原创 【Java小实验】【Java并发】使用线程池按行并发取二维数组最大值

分别使用 Callable和Runnable实现线程池按行并行提取最大值。

2023-08-20 19:42:43 488 1

原创 【TODO】2023年秋招笔试未竞

秋招笔试部分没有A出来的题

2023-08-13 22:29:27 610 1

原创 【面经实录】230526阿里淘天二面

我们一般说,那个线程,它是可以被调度的嘛,是不是?有可能会被调度啊,可能会被中断,是不是它在运行的过程中?他有可能在一个Cpu 上运行,也有可能在另外一个Cpu 上运行,是不是?用到线程一般都会有锁的问题,是不是我们经常可能因为资源是互斥的嘛,在一个进程里面对不对?我感觉啊,就是嗯,算法可能会稍微好好好找,一点点啊。我看了一下你上次一面的代码,你能讲一下C++的Vector的逻辑是什么,有没有了解过?你能挑一个某个地方,你觉得你理解的最好的一个地方给我讲一讲?你认为你和你的同学相比,你的优势在什么地方?

2023-05-27 21:22:16 405

原创 【面经实录】0526阿里淘天(技术线-类目&SPU)一面

怎么来处理一些呃,就是这个,像你说的,也有一些秒杀峰值嘛,比如大促哈双11大促。有特高特,特别高的流量,顺时打入怎么来解决,就是一些呃企业级的解决方案啊。其实也需要到到这个实习岗位上了解,然后呢,这个这个是在学校有一些局限性嘛,这个是避免不了的,但是。好了,就就是说,嗯,因为现在这个网络上的东西,比如B 站啊对吧,然后呃,然后这个。呃,内部的一些机制啊,就是是比较优秀的方面,还多了解一些。你刚才提到的用Redis 吗,那就是一般的呃,在一般的缓存使用情况下,它就是缓存的击穿啊和缓存的穿透是怎么来解决的。

2023-05-26 11:22:16 630

原创 【面经实录】0523饿了么一面(平台技术部)

—没有直接用到,只是秒杀系统用了Mybatis的UpdateWrapper结合事务注解解决基本的超卖问题。——说了一下redis实现分布式锁,其实我当时觉得说实验室的算法项目也没啥用。——说的不是很有条理,说有什么聚簇、非聚簇、联合索引、唯一索引、一级二级索引、全文索引、哈希索引等等。——提了一下实验室的项目,然后介绍了一下秒杀系统。——都有点忘了,就想起来FIFO,优先级和最复杂的多级调度。数据库的范式——寄。——只说了有表锁,然后行锁三个简单说了一下。能将一下网络这边的不同层的协议,你的理解。

2023-05-23 16:46:59 338

原创 【面经实录】阿里云一面(电话面)(疑似kpi面)

你平常是干啥呢,就是说阿里云不有很多的云,产品在卖嘛,像一些S 啊,或者是这种或者是那个I d s 这种卖的话,然后就需要那个。后面就是在持续使用过程中,然后你要对他进行了一个收费嘛,这个就是这个很好理解啊,就是我们这一块,主要就是在做这套这个他售卖下单,还有后面这一块儿持续的。有一些配置型的数据,然后在可能它的数据量可能不会特别大但是就是需要去频繁的去查询它,像这种场景的话,一般你会去怎么设计这个查询的借口?或者是你认为做的不好的点是什么,就下面里面,你可以随便调一个上面,大概就简单说一下。

2023-05-19 22:49:22 531

原创 【面经实录】5.17美团成都到家一面(重捞)

—Spring、Kafka、ES,图数据库相关,大数据相关,hadoop、k8s偏后端开发一些,也做数据相关的一些应用。写题,数组滑动窗口最大值,要求O(n)的空间和时间复杂度,一开始没想出来,提示用双端队列才想起来单调栈,才A了。你能讲一下其他的你在大学期间,比如说做的一些项目吗?你在其中做了一些什么工作,或者解决了一些什么问题呢?redis的主从复制怎么实现的?——bin log(binlog有点忘了,没继续往下说。说一下简历里的秒杀系统,整体架构以及其中的一些难点。——尴尬,其实也就是配了一下。

2023-05-19 22:30:58 131

原创 【面经实录】5.19华为云一面

—本来可以多说点的,可是装饰器模式和适配器模式总是分不清,没敢说。(当时忘了socket,结果他说是四种,可是小林上是六种,不知道他说的是什么)eg. [1, 5, 5, 1, 6, 1] 处理为 [5, 6, 1](问的是数组、堆、树等基本数据结构)Java的抽象类和普通类的区别?java的JRE、JDK、JVM都是什么?细问了实验室的项目。介绍一下自己,经历和做过的项目。阐述一下自己的小论文的创新点。Java相比于其它语言的特点?java是如何管理内存的?java的堆和栈的区别?Spring的特点?

2023-05-19 22:06:27 558

原创 【面经实录】23.04.26美团1面

呃,我这边是美团到家到家分为外卖,配送,闪购啊,这些的。初三班的问题啊,或者是呃用户地址错误,或者是检验点送达呀,或者之类的,就是需要去结合一些呃WIFI,WIFI 蓝牙以及到达感知。这个是框架级的,当然美团当然自己有一些自己的框架级的东西啊,然后同时呢,会用到一些。毛泽楷跟关系层数据库里边有一定的区别,嗯,同时还包括了就是E s 相关的会有一些复杂搜索条件的这种查询呢,会有到E s。每家公司都是差不多的。你自己,对于呃,你在未来,在技术这一块,有没有一些学习上的路径规划,或者是说自己想要从事的领域。

2023-04-26 19:15:29 110

原创 【mmdeploy】windows下使用Qt部署mmdeploy(mmdetection转tensorrt)

windows下使用Qt部署mmdeploy(mmdetection转出的tensorrt模型)

2023-04-24 22:15:17 1118

原创 【mmdeploy】【TODO】使用mmdeploy将mmdetection模型转tensorrt

使用mmdeploy将mmdetection模型转tensorrt

2023-04-24 22:10:21 2591 2

原创 【mmdeploy】mmdeploy安装(linux + windows)

mmdeploy在ubuntu、windows上安装过程。

2023-04-24 22:02:26 3433

原创 【面经实录】23.04.10腾讯2面

现在需要实现一个函数,两个参数,第一个是一个用string表达的条件(eg. “level > 20 || (0 < ip && ip < 20)”),第二个是这个用户的信息,返回bool。——你刚才也说了上一个面试官说要多实现。淦,拉了orz)——最近确实没有那么多时间,我自己还是要先把知识体系串联起来。——最大的不同之处是进程创建是复制了页表,线程是共享了页表,但是task_struct的其它字段的名字没有去记。怎么实现huffman编码——有点忘了,我稍微想一下。——huffman编码。

2023-04-10 21:47:08 106

原创 【面经实录】23.03.31腾讯一面

3个三到6个月吧,3个月是肯定的,然后5、6个月可以争取一下。呃4月末左右吧。或者4月中旬?应该也能争取一下。对。我想了解,就是我当时看那个呃,其实邮件里我还看不到您是哪个部门呢?然后那个是在官网上看到是游戏中台。想问一下是做什么的那这个就是工作地点呢?暂时没有了。【注意,没有提交,只是个可以运行的编辑器,条件给的也不充分,需要现场问】

2023-03-31 23:44:34 161

原创 【目标检测】一张图看RelationNet

RelationNet网络结构

2023-03-09 21:32:06 164

原创 【目标检测】一张图理解DW(A Dual Weighting Label Assignment for Object Detection)

DW(A Dual Weighting Label Assignment for Object Detection)主要代码逻辑

2023-03-09 21:28:09 367 1

原创 【目标检测】一张图理解AutoAssign

AutoAssign结构图

2023-03-09 21:25:57 189

原创 【目标检测】一张图理解Mask R-CNN

Mask R-CNN结构图

2023-03-09 21:21:35 137

原创 【目标检测】一张图理解Faster R-CNN

Faster R-CNN网络结构

2023-03-09 21:21:22 84

原创 【目标检测】一张图理解RetainNet

RetainNet网络结构

2023-03-09 21:17:07 337

代码整洁之道笔记-博客有

代码整洁之道笔记-博客有

2024-10-13

空空如也

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

TA关注的人

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