设计模式-六大原则
六大原则是设计模式的基石, 是后面所提具体的二十三种设计模式的指导思想 总则: 开放封闭原则 对扩展开放, 对修改封闭 当我们需要添加新的功能时, 可以通过添加新的代码或者模块来实现, 而不需要修改已有的功能模块, 这样可以避免新增的功能影响到原来已经在正常运行的功能 最简单的例子就是函数重载 pu ...阅读全文
六大原则是设计模式的基石, 是后面所提具体的二十三种设计模式的指导思想 总则: 开放封闭原则 对扩展开放, 对修改封闭 当我们需要添加新的功能时, 可以通过添加新的代码或者模块来实现, 而不需要修改已有的功能模块, 这样可以避免新增的功能影响到原来已经在正常运行的功能 最简单的例子就是函数重载 pu ...阅读全文
设计模式是个老生常谈的话题, 不同的人对此有不同的看法 新手可能会觉得设计模式难以理解, 并且也只与编程语言有关, 或者只与前端后端有关, 适用范围很窄 或者就干脆觉得这玩意儿没啥卵用, 写了那么一大坨只是让代码变得复杂难懂, 不如直接复制黏贴删删改改来得方便 老手可能会觉得设计模式就是yyds, ...阅读全文
TCP/IP协议中有两个具有代表性的传输层协议,分别是TCP协议和UDP协议。TCP协议全称传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。UDP协议全称用户数据报协议,是 TCP/IP协议模型传输层的无连接协议,它既不建立连接,也不检查目标计算机是否已准备好接收,该协议只是将数... ...阅读全文
这篇文章主要讨论数据压缩,数据压缩不仅可以节省存储空间,还可以提升网络传输性能,不同的压缩算法有不同的压缩比和压缩耗时,我们需要根据项目需求,选择不同的压缩算法。 ...阅读全文
这篇文章主要描述硬件同步原语,它是由计算机硬件提供的一组原子操作。 我们常见的原语操作有CAS和FAA两种。在某些情景下,我们可以使用它来替代锁,从而更加安全高效的操作数据。 ...阅读全文
这篇文章主要关注分布式锁,包括加锁和解锁的过程,锁的用法,加锁带来的代价,对性能的影响以及如何避免死锁。 ...阅读全文
这篇文章主要聊一下缓存,如何使用缓存来加速你的系统,减少磁盘 IO。按照读写性质,缓存可以分为读写缓存和只读缓存,两种缓存有各自的适用场景。 ...阅读全文
这篇文章主要用来讨论Kafka是如何做到高性能的,包括使用批处理方式处理消息,使用顺序读写的方式使用磁盘,利用PageCache缓存数据并减少IO操作,使用零拷贝技术加速消费流程。 ...阅读全文
三维模型几何纠正方法主要包括以下几种:坐标变换法:通过对三维模型的坐标进行变换,实现几何纠正。常用的坐标变换包括平移、旋转和缩放等。平移和旋转可以通过对模型的平移和旋转矩阵进行计算实现,缩放可以通过对模型的坐标进行缩放系数的计算实现。点云拟合法:将三维模型拟合到点云数据上,通过对拟合误差进行优化,实 ...阅读全文
什么是策略模式? 在Python中,除了上次介绍的工厂模式,还有一种应用广泛的设计模式,即策略模式。策略模式就是一个策略类,它可以用相同的接口来调用不同的策略类,从而实现不同策略下的算法。 策略模式一般由三个部分组成: Context:上下文类,持有具体策略类的实例,并负责调用相关的算法 Strat ...阅读全文
这篇文章主要描述应用程序之间的通信协议,包括进行数据“断句”的两种不同方法,以及在应用协议层面实现高性能的双工通信。 ...阅读全文
这篇文章主要描述异步设计,异步是一种程序设计的思想,使用异步模式设计的程序可以显著减少线程等待,从而在高吞吐量的场景中,极大提升系统的整体性能,降低请求时延。 ...阅读全文
这篇文章主要描述如何解决消息重发的问题,目前主流的消息队列产品都采用了At least once的服务质量,这就导致了很难避免消息重发的情况,我们可以将消费者业务逻辑设计成幂等服务来解决消息重发问题。 ...阅读全文
这篇文章主要描述如何解决消息重发的问题,目前主流的消息队列产品都采用了At least once的服务质量,这就导致了很难避免消息重发的情况,我们可以将消费者业务逻辑设计成幂等服务来解决消息重发问题。 ...阅读全文
这篇文章主要描述如何在使用消息队列时避免丢消息,包括检测消息丢失的方法以及消息从生产到完成消费的过程中,经历的生产、存储和消费这三个阶段是分别如何保证消息可靠传递的。 ...阅读全文
这篇文章主要描述消息队列中的一些基本概念,我们在使用不同的消息队列产品时,会遇到不同的“名词”,今天我们今天来聊聊消息队列发展历史,以及一些相关基本概念。 ...阅读全文
最近公司组织架构调整,整个组换到新部门,需要将原来组内的项目代码,全部迁移到新的 group 中去(公司用的 gitlab 服务器),要求保留所有的提交记录、分支和标签。 我当然知道 Gitlab 本身是支持创建仓库时通过链接导入的,但前提是管理员开启相关功能。我们此处只讲命令迁移方案。 > 本... ...阅读全文
这篇文章主要描述如何进行消息队列产品选型,包括产品选型需要考虑的因素、三种比较流行的消息队列产品的优缺点以及如何根据我们的使用场景选择合适的消息队列产品。 ...阅读全文
访问者模式是一种将算法与对象结构分离的软件设计模式。它可以让你在不修改对象结构的情况下,对对象结构中的元素进行不同的操作。访问者模式的优点是符合单一职责原则,优秀的扩展性和灵活性。缺点是具体元素对访问者公布细节,违反了迪米特原则,而且如果元素类经常变化,会导致访问者类需要频繁修改。 访问者模式适合在 ...阅读全文
数据字典是系统中基本的必不可少的功能,在多种多样的系统中,数据字典表的设计都大同小异。但是使用方式确是多种多样,设计好一套易用的数据字典功能模块,可以使开发事半功倍。 常用的数据字典使用方式: 直接在SQL语句中LEFT JOIN (当然是不推荐这样用的) 查询出原始数据,然后再根据原始数据需要的字 ...阅读全文