【软件设计】常用设计模式--代理模式 与真实对象和代理对象共享相同的接口,以便客户端可以通过代理访问。与之前相同,定义一个公共接口。代理模式在控制对象访问和增强系统功能方面提供了很大的灵活性,且每种变体都有其独特的用处,需要根据需求进行选择和实施。
【软件设计】常用设计模式--观察者模式 观察者模式的变体为不同的应用场景提供了灵活性,从推拉模型到优先级处理和异步通知,它适用于从简单的GUI事件系统到复杂的分布式微服务架构。在选择具体变体时,需要权衡性能、响应速度、解耦程度等多方面因素,以便为系统设计提供最佳的解决方案。
【软件设计】常用设计模式--策略模式 策略模式是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来,并使它们可以互换。策略模式让算法独立于使用它的客户而变化。通过策略模式,我们可以将不同的算法封装到独立的类中,并通过客户端在运行时选择具体的策略类。这种模式的优点是提高了代码的灵活性和可扩展性。
【软件设计】常用设计模式--工厂模式 经过上面的学习,不难发现,从简单工厂模式到工厂模式,再到抽象工厂模式,实际就是对软件架构进一步解耦的过程,提高代码的扩展性,也使得软件架构能够更加的灵活。例如,不同的数据库(如SQL Server、MySQL、Oracle)可以通过工厂模式进行选择,实现不同数据库的连接对象。抽象工厂模式通过为一系列相关或依赖的对象提供一个创建接口,使得客户端可以不必指定具体的类名,就可以创建对象族。在这个变体中,工厂方法接受不同的参数类型,不仅仅是一个标识符字符串,还可以是枚举、配置对象或条件判断等。
【软件设计】常用设计模式--单例模式 在多线程环境中,如果多个线程同时调用获取实例的方法,可能会创建多个实例。为了解决这个问题,我们需要在单例模式中加入线程安全的机制。单例模式的核心目标是确保一个类只有一个实例,并提供一个全局访问点。这意味着无论何时何地,你都可以访问到同一个对象实例。掌握了单例模式的基本原理和实现,可以尝试在实际项目中应用它,或者探索如何将其与其他设计模式组合使用。在不同的编程语言中,单例模式的实现可能略有不同。
【创作纪念日】我的CSDN1024创作纪念 直到考研后专业改变,成为了主要跟软件编程、计算机知识相关的研究后,才逐步开启自己的CSDN博客创作。对于未来,我肯定是要朝着全栈工程师去成长的,当前已经学完了前端的技术路线,后端也在汲取知识种,虽然工作后可能留给自己的学习时间没那么多了,但是不积跬步,无以至千里。自己也从最开始的技术小白,通过一步步努力成为了技术菜鸟(哈哈哈哈哈),其中踩过的坑很多,想着不能白踩,这都是宝贵的经验啊!项目当中遇到的问题、代码当中遇到的bug(XD)、需要学习的新技术等都会经过思考提炼为自己的知识,填充进自己的知识图谱里。
【数据库】高并发场景下的数据库开发注意要点 在高并发项目中,数据库开发需要全面考虑数据查询和存储的优化,从索引、缓存、读写分离到分库分表、分布式数据库、事务管理等多个方面入手。同时,持续的性能监控和调优也是保障数据库稳定高效运行的关键。
【React Router】React Router学习笔记 React Router 是一个基于 React 之上的强大路由库,它可以让你向应用中快速地添加视图和数据流,同时保持页面与 URL 间的同步。
【Linux】Linux远程访问Windows下的MySQL数据库 安装MySQL,这里安装的MySQL 8.0,本来想安装5.7版本,但是arm不支持,amd倒是可以。可以先换一下ubuntu镜像源,我使用的清华源,根据自己的设备情况按需选择Ubuntu ports(ARM)或者ubuntu(aAMD):https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu-ports/Linux需要安装MySQL,我是树莓派安装的ubuntu 22.04,所以mysql需要安装ARM 64位的,电脑应该是AMD 64位。
算法通关村第十五关——从40亿个数中产生一个不存在的数的处理方法 给定一个输入文件,包含40亿个非负整数,请设计一个算法,产生一个不存在该文件中的整数,假设你有1GB的内存来完成这项任务。存储的不是这40亿个数据本身,而是其对应的位置。本题不用写代码,能把方法过程说清楚就可以。
算法通关村第十五关——位运算在查找重复元素中的妙用 大部分算法默认给定的数据量都比较小,只有几个或者几十个元素,但是如果将数据量提高到百万甚至几十亿,那么处理逻辑就会发生很大差异。在海量数据中,普通数据结构都无效了,因为内存空间放不下,常规的递归、排序、回溯、贪心和动态规划等思想也无效了,执行都会超时。81。
算法通关村第十四关——解析堆在数组中找第K大的元素的应用 给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。:按照“找最大用小堆,找最小用大堆,找中间用两个堆”,这道题用最小堆来解决,构造一个大小只有K的最小堆。,比如找第4大的数,先让前四个入堆,之后继续遍历与堆顶元素进行比较,比堆顶元素大才能入堆否则不行。新元素的插入只是替换根元素,然后重新构造最小堆,完成之后的根元素就是第4大的元素。
算法通关村第十四关——原来这就是堆 关于堆的问题总结为口诀:查找:找大用小,大的进;找小用大,小的进。就是找第K大的数,就用小顶堆,后续数据只有比根元素大的时才允许进入堆。如果时找第K小的数,就用大顶堆,后续数据只有比跟元素小才能进堆。排序:升序用小,降序用大。升序用小顶堆,从根节点开始到叶子节点逐渐增大,降序用大顶堆,从根节点开始到叶子节点逐渐减小。
【React】React学习:从初级到高级(四) 如果一个Effect中的逻辑有多个组件用到了,就可以考虑将重复逻辑部分提取出来。Hook的名称必须以’use’开头!自定义Hook共享的是状态逻辑,而不是状态本身。对同一个 Hook 的每个调用是各自完全独立的。使用了useEffect// ...});// ✅ 声明所有依赖首先明白一件事,就是如果你需要写Effect就意味着需要"走出React"和某些外部系统同步,或者需要做一些react中没有对应内置API的事。