- 博客(296)
- 收藏
- 关注
原创 【设计模式-备忘录】
在不破坏封装的前提下,捕获对象的内部状态,并在对象之外保存这个状态,以便日后能将对象恢复到原先保存的状态。备忘录模式的优点在于它在保持对象封装性、实现撤销功能、简化状态管理、降低耦合度的同时,支持系统的状态历史保存和事务处理回滚。它特别适用于需要保存和恢复对象状态的应用场景。
2024-09-21 17:39:11 548
原创 【算法-基数排序】
基数排序是一种高效的线性时间排序算法,尤其适合对整数和字符串数据进行排序。尽管它的空间复杂度较高,应用场景较为特定,但在处理大量数据且位数不多的情况下,它是一种优于比较排序的选择。
2024-09-20 20:39:35 815
原创 【算法-堆排序】
堆是一种特殊的完全二叉树,分为最大堆和最小堆最大堆:每个节点的值都大于或等于其子节点的值,堆顶为最大值。最小堆:每个节点的值都小于或等于其子节点的值,堆顶为最小值。在堆排序中,通常使用最大堆来进行升序排序。完全二叉树父节点:(i - 1) / 2左子节点:2 * i + 1右子节点:2 * i + 2堆排序是一种稳定高效的排序算法,时间复杂度为 O(n log n),空间复杂度为 O(1),具有普遍适用的特点。
2024-09-20 20:06:25 354
原创 设计模式七大原则
一个类,应当只有一个引起它变化的原因;即一个类应该只有一个职责。软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。子类对象应该能够替换任何父类对象,而不会影响程序的正确性。客户端不应该被强迫依赖于它不需要的接口。高层模块不应依赖低层模块,二者都应该依赖抽象。抽象不应依赖细节,细节应依赖抽象。尽量使用合成(组合)来实现功能,而不是使用继承。一个对象应该对其他对象有尽可能少的了解。即,一个对象只应与其直接的朋友进行交流,不应与陌生人交流。
2024-09-20 11:11:27 965
原创 【设计模式-享元】
享元模式通过共享对象来减少内存消耗,提高性能,尤其适合需要大量相似对象的场景。它通过合理管理共享和非共享状态,优化资源使用,增强系统的灵活性和性能。尽管引入了额外的复杂性,但在合适的应用场景中,享元模式能够带来显著的好处。
2024-09-19 10:45:02 938
原创 【设计模式-适配】
适配器模式通过引入适配器,将不兼容的接口转换为客户端所期望的接口,从而实现接口的兼容性。这种模式可以使系统更加灵活,减少系统的耦合,提高复用性。适配器模式特别适用于集成不兼容的接口或者引入已有的类库时。
2024-09-19 10:17:12 568
原创 【设计模式-组合】
*Composite Pattern(组合模式)**是一种结构型设计模式,旨在将对象组合成树形结构,以表示“”的层次结构。这种模式允许客户端以统一的方式处理单个对象和对象集合,从而简化了树形结构的处理。
2024-09-18 11:38:42 813
原创 【面向对象】
面向对象编程通过对象和类的概念,将现实世界中的实体及其行为映射到程序中,增强了程序的模块化、灵活性和可维护性。通过封装、继承、多态等特性,面向对象编程使得开发人员可以更加高效地设计复杂系统。随着OOP的普及,Java、C++、Python等语言广泛采用了这种编程范式,推动了软件开发的现代化进程。
2024-09-16 16:08:34 783
原创 【创建谷歌浏览器账号踩坑之路】
找解决方案的时候要耐心点,不要没有经过筛选甄别就去实验,很可能会走很多弯路相信自己一定可以解决,相信一定有更方便快捷的方式,不要灰心,信仰和心态很重要。
2024-09-12 09:38:50 322
原创 可扩展性、可维护性和可复用性
可扩展性指的是系统在面对新增功能或增长需求时,能够方便地扩展、改进而无需大规模修改已有的代码。可维护性指的是软件能够方便地进行修复、改进和优化的能力,通常包括修复错误、优化性能和增强功能等方面。可复用性指的是软件组件(如类、函数、模块等)能够在多个不同场景或项目中被重复使用,而无需进行大量修改。可扩展性:通过接口、继承、组合等方法,实现对新功能的开放而不改变已有系统的设计。可维护性:通过模块化、低耦合、高内聚的设计原则,确保代码容易理解、修改和改进。
2024-09-10 09:31:17 334
原创 【算法-希尔】
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。
2024-08-29 23:02:43 489
原创 【Istio】
服务网格是用于处理服务间通信的基础设施层,通常由一组代理(如 Envoy)组成,这些代理负责捕获和管理微服务之间的网络流量。服务网格的核心思想是将服务间通信的控制逻辑从服务本身抽离出来,交给网格来处理,从而简化开发过程,并增强系统的安全性和可管理性。Istio 是一个功能强大的服务网格平台,特别适用于复杂的微服务架构。通过提供统一的流量管理、安全性和可观测性功能,Istio 帮助开发者和运维人员更好地管理分布式系统,提升系统的可靠性和安全性。
2024-08-29 17:40:53 654
原创 【高性能、高并发、高可用】
高性能、高并发、高可用是构建现代大规模系统的三个关键目标,它们各自解决不同的问题,但在实际系统中往往需要综合考虑,互为补充。例如,高并发可能会带来性能瓶颈,而高可用需要在性能和资源消耗之间找到平衡。通过合理的架构设计和技术选型,可以构建出既能应对大量并发请求,又具有快速响应和高可用性的系统。
2024-08-29 14:07:46 775
原创 【面向对象-基础知识】
面向对象编程(Object-Oriented Programming,简称 OOP)是一种编程范式,它通过将程序组织为对象的集合来建模现实世界中的实体及其行为。面向对象编程强调数据和操作数据的方法封装在一起,从而提高代码的重用性、可维护性和扩展。
2024-08-29 13:03:30 342
原创 【JAVA并发包】
Java 并发包是 Java 标准库中提供的一套用于支持多线程编程的类和接口。这些工具帮助开发者更容易地编写、调试和维护并发程序。Java 并发包位于 java.util.concurrent 及其子包中,包含了用于线程管理、任务调度、同步控制、并发数据结构等多种功能。
2024-08-29 12:53:50 530
原创 【RPC基础知识】
RPC的核心原理在于将复杂的网络通信过程隐藏在调用机制之下,使开发者可以像调用本地函数一样调用远程函数。通过序列化、反序列化、网络传输、代理机制,RPC实现了跨网络的过程调用,从而支持分布式系统和服务的构建。
2024-08-28 12:45:03 1075
原创 【算法-快排】
快速排序在多数情况下都非常高效,特别适合处理大规模数据。它的平均时间复杂度为 O(n log n),但在最差情况下会退化为 O(n²)。为了避免最坏情况,可以随机选择基准或采用“三数取中”法来选择基准元素。
2024-08-27 23:55:08 374
原创 【Dubbo基础知识】
Dubbo 是一款高性能的 RPC 框架,是阿里巴巴公司开源的产品,用于提供高性能的分布式服务框架和面向服务的架构。Dubbo 的主要作用是帮助分布式应用程序进行服务治理,如服务注册、服务发现、负载均衡、容错等。
2024-08-25 22:39:19 304
原创 JAVA IO模型
同步阻塞 I/O: 简单易用,但效率较低,容易造成线程阻塞。同步非阻塞 I/O: 允许线程在 I/O 操作期间执行其他任务,但需要显式轮询。I/O 多路复用: 提高了对多个 I/O 操作的处理能力,适合高并发场景。信号驱动 I/O: 使用信号通知 I/O 状态变化,但在不同操作系统上可移植性较差。异步 I/O: 非常高效,通过回调机制处理 I/O 操作,适合处理大量并发任务。程序员应该这样理解IO如何完成一次IOIO模型知多少10 分钟看懂, Java NIO 底层原理。
2024-08-21 21:48:09 902
原创 JAVA IO之基础知识
Java I/O 是 Java 应用程序处理数据输入和输出的关键机制。掌握字节流和字符流的基本操作,理解文件操作、数据流处理、I/O 性能优化技巧以及 NIO(New I/O)技术,能够帮助开发者更高效地进行文件和数据处理,并提升应用程序的性能和响应速度。
2024-08-21 18:47:48 402
原创 JVM垃圾回收
哪些对象可以作为 GC Roots 呢?虚拟机栈(栈帧中的局部变量表)中引用的对象本地方法栈(Native 方法)中引用的对象方法区中类静态属性引用的对象方法区中常量引用的对象所有被同步锁持有的对象JNI(Java Native Interface)引用的对象对象可以被回收,就代表一定会被回收吗?即使在可达性分析法中不可达的对象,也并非是“非死不可”的,这时候它们暂时处于“缓刑阶段”,要真正宣告一个对象死亡,至少要经历两次标记过程;
2024-08-19 20:57:27 594
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人