- 博客(41)
- 收藏
- 关注
原创 Java 与 面向对象编程(OOP)
尽管存在原始类型和静态成员等例外,但这些设计旨在平衡效率与语言纯粹性,并不影响其面向对象的本质。对于开发者而言,Java 的 OOP 特性强制代码结构清晰、模块化,适用于中大型企业级应用的开发。,其设计严格遵循面向对象(OOP)的核心原则。)对象化,且自动装箱机制(Autoboxing)缩小了差异。静态方法或字段属于类而非对象,但 Java 的设计者通过。支持单继承(类)和多继承(接口),通过。),避免强制实例化无意义的对象。是(强制类化所有代码)所有代码必须写在类(否(支持函数和脚本)
2025-05-16 18:39:36
634
原创 分析主流编程语言中哪些为支持面向对象的语言
组织代码的编程范式。它通过模拟现实世界的实体和交互来构建软件系统,是现代软件开发中最广泛使用的范式之一。今天我们来分析一下受众比较大的主流编程语言,哪些是支持面向对象的语言?支持 OOP 但允许混合其他范式(如过程式、函数式)。通过其他机制(如结构体+接口)实现 OOP 核心目标。无类继承,通过结构体+接口+组合实现封装与多态。这类语言强制以对象为中心设计程序,单继承(类)+ 多继承(接口)封装、抽象、继承、多态。结构体 + Trait。
2025-05-16 18:03:25
874
原创 一文讲透面向对象编程OOP特点及应用场景
面向对象编程(Object-Oriented Programming, OOP)是一种以为核心、通过组织代码的编程范式。它通过模拟现实世界的实体和交互来构建软件系统,是现代软件开发中最广泛使用的范式之一。
2025-05-16 17:33:55
785
原创 一文讲透编写高质量代码的八大设计原则(下)
YAGNI 原则的英文全称是:You Ain’t Gonna Need It。直译就是:你不会需要它。这条原则的核心思想是:不要做过度设计。不要去设计当前用不到的功能;不要去编写当前用不到的代码。DRY 原则它的英文描述为:Don’t Repeat Yourself。中文直译为:不要重复自己。不要写重复的代码。代码复用性(Code Reusability)、代码复用(Code Resue)和 DRY 原则。代码复用表示一种行为:我们在开发新功能的时候,尽量复用已经存在的代码。代码的可复用性。
2025-05-15 15:59:39
816
原创 一文讲透编写高质量代码的八大设计原则(上)
单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP。这个原则的英文描述是这样的:A class or module should have a single responsibility。如果我们把它翻译成中文,那就是:一个类或者模块只负责完成一个职责(或者功能)。开闭原则的英文全称是 Open Closed Principle,简写为 OCP。
2025-05-15 15:47:57
962
原创 面向对象编程 接口vs抽象类的区别?
越抽象、越顶层、越脱离具体某一实现的设计,越能提高代码的灵活性、扩展性、可维护性。3.“基于接口而非实现编程”这条原则,不仅仅可以指导非常细节的编程开发,还能指导更加上层的架构设计、系统设计等。在实际的项目开发中,我们还是要根据具体的情况,来选择该用继承还是组合。2. 我们在定义接口的时候,一方面,命名要足够通用,不能包含跟具体实现相关的字眼;继承是面向对象的四大特性之一,用来表示类之间的 is-a 关系,可以解决代码复用的问题。如果类之间的继承结构稳定,层次比较浅,关系不复杂,我们就可以大胆地使用继承。
2025-05-15 12:03:46
291
原创 面向对象编程VS 面向过程编程
对于这两种类的设计,我们尽量能做到职责单一,定义一些细化的小类,比如 RedisConstants、FileUtils,而不是定义一个大而全的 Constants 类、Utils 类。除此之外,如果能将这些类中的属性和方法,划分归并到其他业务类中,那是最好不过的了,能极大地提高类的内聚性和代码的可复用性。除此之外,尽管 getter 方法相对 setter 方法要安全些,但是如果返回的是集合容器,那也要防范集合内部数据被修改的风险。
2025-05-12 18:15:31
208
原创 面向对象编程四大特性
封装主要讲如何隐藏信息、保护数据,那抽象就是讲如何隐藏方法的具体实现,让使用者只需要关心方法提供了哪些功能,不需要知道这些功能是如何实现的。抽象存在的意义,一方面是提高代码的可扩展性、维护性,修改实现不需要改变定义,减少代码的改动范围;单继承表示一个子类只继承一个父类,多继承表示一个子类可以继承多个父类。继承主要是用来解决代码复用的问题。多态是指子类可以替换父类,在实际的代码运行过程中,调用子类的方法实现。多态这种特性也需要编程语言提供特殊的语法机制来实现,比如继承、接口类、duck-typing。
2025-05-12 16:53:28
180
原创 面向对象编程基本概念介绍
面向对象编程的英文缩写是OOP,全称是 Object Oriented Programming。面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石。面向对象编程语言的英文缩写是OOPL,全称是 Object Oriented Programming Language。面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。
2025-05-12 16:08:21
264
原创 好书推荐之重构宝典
今天就为大家推荐一些有关代码重构的经典书籍。希望这些书籍可以对大家面临的重构问题有所启发和帮助。也希望可以帮助大家做好大重构和小重构的抉择,从而快速实现项目的脱胎换骨。当项目发展到一定阶段,往往会面临“重构”问题。如何平衡新需求研发与为适应未来发展迫在眉睫的老项目重构一直是一个争论不休却不得面临的难题。购买电子版/纸质版。部分资源(如《重构》第2版示例代码)可在 GitHub 找到开源项目。重构不仅是技术,更是一种思维方式,愿你的代码历久弥新!需要电子书的也可评论区留言获取~
2025-05-12 15:23:46
936
原创 好书推荐之提升编码规范
大部分书籍可在 Amazon、豆瓣读书 或 图灵社区 找到。部分开源规范(如PEP8、C++ Core Guidelines)可直接在线阅读或下载。希望这些书助你写出更优雅的代码!
2025-05-12 11:53:08
560
原创 git如何从多个源拉取最新代码
背景描述:今年超级火的深度思考,以及非常流行的deepSeek 本地化,我也跟风搞了一个,利用的就是开源项目 open-webui ,因为展示风格不是我的style ,还在此基础上做了二开。在大家火热的积极投入中 open-webui 的更新也是非常快的,一段时间之后已经出了好多新版本,那么接下来就面临着如何把open-webui的最新代码merge 到我的自建仓库地址。今天这篇文章就是专门来讲述多源代码merge 的,大家的小本本可以准备好啦~
2025-04-28 11:32:48
477
原创 Python 包管理工具pip 使用指南
在Python 项目中有个经常用到的命令,那就是pip , 本文将详细的讲解pip 的使用指南,内容涵盖安装、使用技巧、虚拟环境管理及常见问题解决。 2. 卸载包3. 更新包4. 列出已安装包5. 查看包信息三、依赖管理1. 导出项目依赖2. 根据 requirements.txt 安装依赖3. 依赖文件示例四、虚拟环境(隔离开发环境)1. 创建虚拟环境(Python 内置)2. 结合 pip 使用五、高级功能
2025-04-27 18:51:31
696
原创 Conda 使用指南,涵盖环境管理、包管理 、常用命令及最佳实践
本文是一篇conda 完整使用指南,涵盖环境管理、包管理 、常用命令及最佳实践等等各方面。2. 激活/停用环境3. 列出所有环境4. 克隆环境5. 删除环境三、包管理1. 安装包2. 卸载包3. 更新包4. 搜索包四、环境导出与共享1. 导出环境配置2. 通过 YAML 文件创建环境3. 导出精简环境配置(仅明确安装的包)五、Conda 与 Pip 协同使用1. 优先级原则
2025-04-27 18:37:34
715
原创 ASGI 服务器Uvicorn介绍
2. 安装性能优化版(推荐)包含 和 依赖:三、快速启动 FastAPI 应用2. 启动命令 参数解析: : 文件中的 实例。 :允许所有 IP 访问。 :监听端口号。 :代码修改后自动重启(仅用于开发环境)。 四、常用命令行参数 参数说明绑定主机地址(默认)监听端口(默认)工作进程数(多进程模式,需关闭)开发模式下自动重载代码日志级别(////)保持连接超时时间(秒,默认)SSL 私钥文件路径(启用 HTTPS
2025-04-27 11:45:39
782
原创 Python中可实现流式下发的 StreamingResponse 和 EventSourceResponse 异同对比,及各自适用场景
逐块发送二进制数据(如文件下载)或自定义文本流。
2025-04-23 19:14:01
1068
原创 Python 异步函数调用遇到了不使用await 关键词还生效的特殊情况,快来看看吧
场景是否生效原因直接调用异步函数不加await❌ 通常不生效返回协程对象,未提交到事件循环异步生成器传给✅ 生效框架隐式通过async for驱动异步生成器,自动处理await和事件循环调度。
2025-04-23 15:42:02
675
原创 Python 中有哪些特殊场景调用异步函数不能使用await 关键词?
通过上篇文章,我们了解到,在python 异步函数调用过程中是存在特殊场景,不需要使用await 关键词的,现在我们来总结一下,这样的特殊场景一共有多少。在 FastAPI 中,大多数情况下异步函数需要通过 await。调用以确保非阻塞执行,但在特定场景中,,此时无需显式使用 await。以下是不能(或无需)使用。异步生成器由框架隐式迭代。异步生成器由框架逐次驱动。返回协程,需显式触发。同步接口调用异步依赖。✅ 必须(无法实现)后台任务添加异步函数。
2025-04-23 15:39:57
417
原创 Python异步函数调用必须使用await 关键字吗?如果不使用会怎样?
必须通过事件循环调度:直接调用异步函数不会执行代码。await是同步点:会阻塞当前协程,但释放线程去执行其他协程。实现并发:适合不关心结果的后台任务。性能取舍使用await:顺序执行,逻辑简单,但可能降低并发性。使用:最大化并发,但需管理任务生命周期。正确选择取决于是否需要等待结果以及是否希望任务并发执行。异步编程的核心是通过合理调度任务,在 I/O 等待期间执行其他操作,从而提升吞吐量。
2025-04-23 13:52:53
800
原创 更改git默认分支为master
从 2020 年 10 月 1 日开始,GitHub 上的所有新库都将用中性词「main」命名,取代原来的「master」,因为后者是一个容易让人联想到奴隶制的术语。到 GitHub 的仓库设置中选择 master 为默认分支。(2)将变更从本地同步到远端。删除原来的 main 分支。4、其他clone 同步。
2023-04-18 18:20:37
5645
原创 Composer 安装与使用
1. 进入系统的 cd /usr/local/bin 目录4. 修改composer权限 输入命令:5. 输入composer,回车,会看到相关版本信息,出现如下页面,说明安装成功。
2023-04-08 18:18:16
7187
原创 微服务框架需要考虑哪些治理环节?
系统层监控:物理机、虚拟机、OS,cpu,memory,network,disk等。应用层监控:url,service,sql,cache可用率,响应时间,qps;端用户体验监控:性能、返回码、城市、地区、运营商、版本、系统等。基础设施监控:网路、交换机、网路流量、丢包、错包、连接数等。业务监控: 核心指标监控、登录注册、下单、支付等;后台服务集成 DB、MQ、Cache。二、微服务监控系统分层和监控架构?序列化xml/json/二进制。Java/Net客户端支持。三、微服务调用链监控。
2023-03-15 12:37:41
196
原创 RPC VS REST
一般HTTP客户端可访问,可自动生成强类型客户端,多语言。二进制thrift、protobuf、AVRO。文章参考:杨波老师的微服务架构核心20讲。对外一般需要转换成REST/文本协议。客户端比较方便,但二进制消息不可读。文本消息开发者可度,浏览器就可访问。强类型客户端、一般自动生成多语言。文本XML,json。
2023-03-15 11:39:45
93
原创 Redolog和binlog区别
redolog是InnoDB存储引擎特有的日志,用于记录事务的操作,包括对数据的修改、插入和删除等。redolog是在内存中缓存的,当事务提交时,会将redolog写入磁盘中的redo log文件中,以保证数据的持久性。binlog是MySQL服务器的日志,用于记录所有的数据库操作,包括对数据的修改、插入和删除等。binlog是在磁盘上的文件,可以用于数据备份、恢复和复制等操作。MySQL的redolog和binlog都是用来记录数据库操作的日志,但是它们的作用和使用场景是不同的。
2023-03-14 22:38:32
231
原创 Mysql:count(*) VS count(1)
结论: count(1)> count(name) == count(*)> count(id)
2023-03-11 19:38:17
133
转载 MySQL 索引结构
这个对于当前磁盘比买菜还便宜的硬件大通货时代其实算不上问题,但是要注意的是如果当前 MySQL 服务所在的机器有很多的大表,并且还创建了每一种可能的组合的索引,那么索引文件提及的增长可能超乎你的想象。索引最大长度是 768 字节,当字符串过长时,MySQL 会做一个类似做前缀索引的处理,将前半部分的字符串提取出来做索引。其实这 SQL 在前面a,b的查询中是会走联合索引的,但是在经历了d的查询之后,到了c就不会使用索引了,因为d的查询已经将索引的顺序打乱了,从 d 条件过后就没有办法直接使用联合索引。
2023-03-10 17:21:05
171
转载 构建高性能索引(策略篇)
1、正确理解和计算索引字段的区分度,文中有计算规则,区分度高的索引,可以快速得定位数据,区分度太低,无法有效的利用索引,可能需要扫描大量数据页,和不使用索引没什么差别。2、正确理解和计算前缀索引的字段长度,文中有判断规则,合适的长度要保证高的区分度和最恰当的索引存储容量,只有达到最佳状态,才是保证高效率的索引。3、联合索引注意最左匹配原则:必须按照从左到右的顺序匹配,MySQL会一直向右匹配索引直到遇到范围查询(>、
2023-03-10 15:11:42
341
转载 Mysql 索引的介绍和原理分析
但是如果有了索引,而且保险柜能够以物理分区的方式存在在对应的区域,同时你可以根据钥匙上的编号(A1003-10-17),找到保险柜所在 A1003的存放房间,找到存放室保险柜的第10排,再找到第17个位置,找到属于你的保险柜,这个定位就快很多了。下面的两张图片,左边是AVL树,它的任何节点的两个子树的高度差
2023-03-09 18:35:47
122
转载 MySQL索引有哪些分类,你真的清楚吗?
按数据结构分类可分为:B+tree索引、Hash索引、Full-text索引。按物理存储分类可分为:聚簇索引、二级索引(辅助索引)。按字段特性分类可分为:主键索引、普通索引、前缀索引。按字段个数分类可分为:单列索引、联合索引(复合索引、组合索引)。
2023-03-08 18:00:16
4348
原创 MySQL 索引结构分为4类:B-Tree、R-Tree、Hash、全文索引
MySQL 索引结构分为4类:B-Tree、R-Tree、Hash、全文索引按物理存储方式分类分为:聚簇索引、非聚簇索引
2023-03-08 17:29:11
949
原创 依赖注入与控制反转
但是,反过来就不成立,参数传递不一定是依赖注入,可能是普通的参数,而非某个类。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。如果类A要使用别人提供的一个功能,若为了使用这功能,需要在自己的类中增加额外的代码,这就是侵入性。接口注入中,接口的名字、函数的名字都不重要,只要保证函数的参数是要注入的对象类型即可。当解决过度依赖,对具体类进行抽象的时候,便产生了Ioc,之后依赖注入的是抽象类。PHP依赖注入的3种方式:构造注入,接口注入,setter注入。
2023-02-20 13:26:28
3380
原创 基础的PHP面试题
401 : (Unauthorized/未授权),表示客户端在授权头信息中没有有效的身份信息时访问受到密码保护的页面。例如,客户端执行了如PUT这样的服务器并不支持的命令。301 : 永久性重定向,会在 Location 中附上新地址,客户端可以根据这个地址进行新的请求,通常用于 HEAD 和 POST 请求。这个状态时临时性的。502 (Bad Gateway/错误的网关) 该状态指接收服务器接收到远端服务器的错误响应。404 : (Not Found/未找到) 请求失败,请求的数据在服务器上未发现。
2023-02-19 20:48:02
207
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人