自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FUSIPING的博客

我有10个苹果,我愿意把它分给大家

  • 博客(68)
  • 资源 (6)
  • 收藏
  • 关注

原创 如何写出高质量代码

当我们要实现一个新功能时,发现现有的代码已经抽象出了很多底层可以复用的模块,类代码,我们可以直接拿来用,说明代码写得很灵活。3设计原则中单一职责,DRY基于接口而非实现,里式替换原则,可以让我们写出可复用性,灵活,易扩展,易维护的代码;代码的可扩展性指的是我们添加性功能时,尽量不修改或者少改原有的代码的情况下,直接在扩展点插入新的功能代码。顾名思义指的是尽量复用已有的代码,减少重复代码的编写,比如面向对象的继承,多态特性。代码简洁性,包含代码简单易懂,逻辑清晰,意味着易度,已维护。,接下来容我一一介绍。

2023-06-19 02:02:04 1157 2

原创 12、【装饰器模式】动态地为对象添加新功能

装饰器模式通过创建一个包装类来包装原始类的实例,并在包装类中提供新的功能,从而避免了这些问题。装饰器模式的优点是可以在不改变原始类的基础上,动态地为对象添加新的功能或行为,从而提高系统的扩展性和灵活性。1. 扩展性:如果你的系统需要不断地添加新的功能,而这些功能可能会影响到现有类的结构,那么使用装饰器模式可以避免修改现有类的代码,从而提高系统的扩展性。4. 可维护性:如果你的系统中有一些复杂的功能,例如权限验证、数据加密等,那么使用装饰器模式可以将这些功能封装成装饰器类,从而提高系统的可维护性。

2024-04-23 12:42:03 720

原创 11、【桥接模式】让将抽象和实现分离,使得它们可以独立地变化

然后,我们调用 draw() 方法,实际执行的是 RedImplementation 对象的 getColor() 方法,从而实现了桥接模式的效果。在桥接模式中,抽象类层次结构中的抽象类通过引用或组合的方式与实现类层次结构中的实现类进行关联。在桥接模式中,抽象类层次结构中的抽象类通过引用或组合的方式与实现类层次结构中的实现类进行关联。4. 可复用性:桥接模式将抽象部分和实现部分分离,使得抽象类可以在不同的系统中复用,而实现类可以根据具体需求进行定制。聊聊它的设计思想、应用场景,以及如何使用。

2024-04-20 10:09:57 1071

原创 10、【代理模式】通过引入一个代理对象来控制对原始对象的访问的方式。

动态代理是在运行时动态创建的代理类,它通过使用反射机制在运行时生成代理对象的字节码,并将其加载到 JVM 中。静态代理是在编译时创建的代理类,它通过继承原始对象的类或实现其接口,并在其中重写需要代理的方法来实现。今天我们了解代理模式的原理、静态代理和动态代理的区别、Spring AOP 和动态代理的关系、代理模式的使用场景,以及用 Java 实现一个动态代理示例。静态代理是在编译时创建的代理类,它通过继承原始对象的类或实现其接口,并在其中重写需要代理的方法来实现。

2024-04-15 21:45:10 1041

原创 9【原型模式】复制一个已存在的对象来创建新的对象

浅拷贝只复制对象的引用,而不复制对象的内容,因此在修改原始对象时,复制对象也会受到影响。深拷贝则会复制对象的所有内容,包括嵌套对象,因此在修改原始对象时,复制对象不会受到影响。原型模式是一种创建对象的模式,它通过复制一个已存在的对象来创建新的对象,而不是通过传统的 new 操作符来创建对象。1、浅拷贝只复制对象的引用,而不复制对象的内容,因此在修改原始对象时,复制对象也会受到影响。2、深拷贝则会复制对象的所有内容,包括嵌套对象,因此在修改原始对象时,复制对象不会受到影响。// 获取对象的名称。

2024-04-14 18:20:13 803

原创 8、【构造者模式】适合于需要创建复杂对象的场景

在这些场景中,对象的创建过程可能涉及多个步骤和多个部件,使用建造者模式可以将对象的创建过程分解为多个步骤,并将这些步骤封装在独立的建造者类中,从而提高代码的灵活性和可复用性。1. 类的数量增多:由于将对象的创建过程分解为多个步骤,并将这些步骤封装在独立的建造者类中,因此需要创建多个建造者类,从而增加了类的数量。3. 可复用性强:建造者模式将对象的创建过程分解为多个步骤,可以将这些步骤封装在独立的建造者类中,从而提高了代码的可复用性。.addTopping("香肠", 1);.setDrink("可乐")

2024-04-13 18:41:26 843

原创 7、【工厂模式】让对象的创建和使用分离

根据传入的参数,工厂会返回相应的 phone 对象。总的来说,工厂模式是一种创建对象的设计模式,它将对象的创建和使用分离,客户端不需要知道具体产品类的类名,只需要知道具体产品类所对应的工厂类即可,通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。- 客户端不知道具体产品类的类名,只需要知道具体产品类所对应的工厂类即可,通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。

2024-04-11 18:30:54 528

原创 6、【单例模式】确保了一个类在程序运行期间只有一个实例

1. 数据库连接:在数据库应用中,创建一个单例的数据库连接管理器,确保整个应用程序只有一个连接对象,避免了多次创建和释放连接的开销。2. 耦合性高:单例模式将对象的创建和使用紧密地耦合在一起,可能导致其他模块对单例对象的依赖增加,降低了系统的可维护性和可扩展性。4. 控制对象创建:使用单例模式可以集中管理对象的创建过程,避免了在程序的多个部分随意创建对象,提高了代码的可维护性和可控性。3. 测试困难:在单元测试中,对单例对象的测试可能比较复杂,需要特殊的处理来模拟单例环境,增加了测试的难度。

2024-04-01 20:16:41 1466

原创 4、【设计原则】程序员需要掌握的编码设计理论

这个原则的核心思想是,我们不应该在代码中添加我们当前不需要的功能或代码。1. SOLID 原则:这是由罗伯特·C·马丁(Robert C. Martin)提出的五个设计原则的缩写,分别是SRP(单一职责原则)、OCP(开闭原则)、LSP(里氏替换原则)、ISP(接口隔离原则)和DIP(依赖倒置原则)。这意味着我们应该将重复的代码提取到一个单独的函数或类中,并在需要的地方调用它。软件开发的设计原则是指在软件设计过程中应该遵循的一些基本原则,这些原则可以帮助开发人员设计出高质量、可维护、可扩展的软件系统。

2024-02-29 09:44:13 350

原创 2、【程序员】如何识别代码好坏?如何写出高质量代码?

要写出高质量代码,需要掌握编程语言和开发工具,遵循编码规范,掌握面向对象编程思想,遵循设计原则,合理使用设计模式,代码持续重构等。6. 代码持续重构:掌握代码重构的技能可以帮助开发人员写出更好的代码,提高开发效率和代码质量,并使代码更容易维护和扩展。3. 掌握面向对象编程:通过封装、抽象,继承和多态等特性,使得代码更加模块化、可复用、易维护和扩展。又如何写出高质量代码呢?2. 遵循编码规范:遵循团队或行业的编码规范,保持代码的一致性和可读性。4. 重复代码:代码中存在大量重复的代码片段,缺乏可复用性。

2024-02-25 17:33:50 353

原创 5、【代码重构】让代码更清晰,高效,可维护

代码重构是软件开发过程中不可或缺的一部分,它可以帮助我们提高代码的质量和可读性,同时降低代码的维护成本。4. 团队协作:代码重构应该是一个团队协作的过程,应该与其他开发人员进行充分的沟通和协作,鼓励开发在空余时间,重新审视自己写过的代码,持续重构。2. 提高代码质量:重构可以帮助发现和修复代码中的问题,如重复代码、过长的方法、不合理的变量命名等,从而提高代码的质量。通过重构,可以使代码更易于共享和维护。5. 代码变更频繁:当代码变更频繁时,应该考虑进行代码重构,以减少代码的复杂性和提高代码的可读性。

2024-02-23 15:42:03 875

原创 3、【面向对象编程思想】四大特性,程序员必会

它是一种编程思想,它将数据和对数据的操作封装在一起,形成一个对象。2. 继承(Inheritance):通过继承现有类来创建新类,新类可以继承父类的属性和方法,并可以添加自己的属性和方法。1. 封装(Encapsulation):将数据和对数据的操作封装在一起,形成一个对象。4. 抽象(Abstraction):将具有相同特征的对象抽象成一个类,从而实现对对象的抽象和概括。OOP 的四大特性分别是封装、继承、多态和抽象,它们是 OOP 的核心概念,也是 OOP 编程的基础。请在评论区写下你的答案吧。

2024-02-21 20:55:47 401

原创 1,程序员为什么要学习设计模式?

阅读优秀的开源代码可以帮助程序员学习到很多有用的编程技巧和经验,而设计模式是一种常见的编程思想和方法,它可以帮助程序员更好地设计和实现代码。最后,设计模式可以提高代码的性能。在编写自己的代码时,程序员可以根据具体的问题选择合适的设计模式,从而提高代码的质量和可维护性。因此,写出高质量的代码需要掌握设计模式,这可以帮助程序员提高代码的可读性、可维护性和性能,从而提高软件的质量。因此,阅读优秀的开源代码需要掌握设计模式,这可以帮助程序员更好地理解和分析代码,提高代码的质量和可维护性。请在评论区和我一起讨论吧。

2024-02-20 16:17:04 842 1

原创 设计模式之单例模式的实现形式、弊端以及可替代的解决方案。

1. 饿汉式:在类加载期间,就已经将 instance 静态实例初始化好了,所以 instance 实例的创建是线程安全的。这种实现方式通过 JAVA 枚举类型本身的特性,保证了实例创建的线程安全性也实例的唯一性。这种实现方式,既支持延迟加载,也支持高并发,实现起来也比双重检测简单。3. Spring 的 IOC 容器:提供依赖注入,实现类的全局唯一性,同时支持参数化的构造函数,从根本上解决了单例模式的问题。2. 工厂模式:通过工厂类创建实例,支持参数化的构造函数,解决了单例模式的部分弊端。

2023-07-18 10:12:17 291 2

原创 给你分享,我是如何开发的Excel差异对比工具?

通过 drop_duplicates() 函数,我消除了重复值,最后使用 pandas 的 to_excel() 方法将结果写入一个新的 Excel 文件,从而实现了 Excel 差异对比功能。此外,我还添加了一个 label 标签来显示文件路径,以及一个提交按钮,点击后可跳转到差异对比页面。对于按钮部分,我生成了一个按钮列用于执行差异对比,以及一个全量执行按钮,以便用户选择单个 sheet 对比或全量对比。上周,领导给我分配了一个新任务,要求我开发一个 Excel 对比桌面工具。

2023-07-15 16:59:46 337

原创 程序员如何制作PPT?

上周,领导要求我撰写一份关于 4到6月持续集成运营分析的报告,并通过 PPT 的形式进行汇报。在这次汇报中,领导关心的是集成的延迟原因、每个版本的集成耗时和继承刷包情况,因此我们从这三个维度进行分析。总之,制作 PPT 不是一件简单的事情,但只要我们明确主题、目标受众,优化有道无术,术尚可求也;在完成初稿后,我反复检查和修改 PPT,确保内容准确、清晰,并符合领导的要求。3. 集成耗时问题分析:分析每个版本的集成耗时,并总结耗时原因,如版本赶工、环境镜像制作等。避免使用长篇大论的文字,以免观众阅读困难。

2023-07-14 23:19:01 2487

原创 四、程序员如何高质量重构代码?

大规模重构是对顶层代码设计的重构,包括系统、模块、代码结构、类与类之间的关系等重构,主要手段有分层、模块化、解耦、抽象可复用性组件等。为了保证重构代码不出错,需要熟练掌握各种设计原则、思想、模式,并对重构的业务和代码有足够的了解。重构代码是程序员必备的技能之一,需要有系统的全局认识,包括为什么要重构、重构什么、如何重构等方面。在进行大规模重构前,应制定重构计划,并根据计划逐步完成重构,每个阶段完成一小部分的重构,然后执行单元测试、提交代码,再进行下一阶段的重构,以确保代码一直处于正确、可运行状态。

2023-07-13 09:39:51 288 1

原创 普通人怎么实现财务自由?

其次,要增加总资产。主业是主体的收入,而副业则是主业之外的能够带来收入的事情,应该根据自己的兴趣爱好,在主业的基础上开拓副业,并打造可以无限次复制、无限次销售的产品,例如短视频、写文章、出书等。如果你每个月的日常花销是3000元,一年就是3.6万,而如果总资产年化收益率达到10%,只需要36万就能够实现财务自由,希望以上方法能够为你助力,实现真正的财务自由。最后,提高资产收益率,钱生钱的速度是关键,存银行的利息非常低,可以考虑投资其他高收益的项目,比如股票、基金等,提高总资产收益率,最终实现财务自由。

2023-07-12 01:12:35 171

原创 三、1如何运用设计原则之SOLID原则写出高质量代码?

对输入,输出,异常的约定;也就是添加一个新的功能时,应该在已有的代码基础是扩展新的模块,类,方法等,而不是修改已有代码(模块,类,方法等),所以说代码的扩展性是重点。是一种编程技巧,不通过new()的方式在类内部创建依赖类对象,而是将依赖的类对象在外部创建好之后,通过构造函数,构造参数等方式传递(或注入)给类使用,这样提高了代码的扩展性。我们通过依赖注入框架提供的扩展点,简单配置所需要的类,以及类与类之间依赖关系,就可以实现由框架来自动创建对象,管理对象是生命周期,依赖注入等原本需要程序员来做的事情。

2023-07-03 19:13:53 234

原创 二、2面向对象比面向过程编程有什么优势?

面向过程编程也是一种编程风格,它以过程(可以理解为方法,函数,操作)作为组织代码的基本单元,以数据(可以理解为成员变量,属性)与方法相分离为主要特点。优势1:oop更加能够应对大规模复杂程序的开发开发,能够清晰的,模块化的组织代码。比如我们开发一个电商交易系统,业务逻辑复杂,代码量很大,可能要定义好数百个函数,数百个数据结构,那如何分门别类这些函数和数据结构,才能不至于看起来比较凌乱呢?因为oop具有更加丰富的特性(封装,抽象,继承,多态),利用这些特性编写出来的代码,更加易扩展,易复用,易维护。

2023-07-02 22:41:44 217

原创 http状态码完整篇

HTTP 状态码是服务器和客户端之间进行通信的重要工具,对于 Web 开发人员和网络管理员来说,了解 HTTP 状态码的含义是非常重要的。12. 302:表示服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。13. 303:表示请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。16. 307:表示服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。6. 203:表示服务器成功处理了请求,但返回的信息可能来自另一来源。

2023-07-01 22:54:40 271

原创 二、1什么是面向对象编程?

多态可以提高代码的扩展性和复用性,是很多设计模式,设计原则,编程技巧的代码实现基础。表示类之间的is-a关系,分为两种模式:单继承和多继承,单继承表示一个子类只能继承一个父类,多继承表示一个子类可以继承多个父类。主要是如何隐藏方法的具体实现,让使用者只关心方法提供了哪些功能,抽象通过接口类和抽象类来实现,比如JAVA的interface和abstract关键字语法。它以类或对象作为组织代码的基本单元,并将封装,抽象,继承,多态四个特性,作为代码设计的实现基石。二仅暴露有限的必要接口,提高类的易用性。

2023-07-01 11:50:01 146

原创 一、什么是高质量代码?

指的是当我们要实现一个新功能时,发现现有的代码已经抽象出了很多底层可以复用的模块,类代码,我们可以直接拿来用,说明代码写得很灵活。我觉得应该有7个特征,分别是:可维护性,可读性,可扩展性,灵活性,简洁性,可复用性和可测试性,接下来容我一一介绍。比如,命名不规范,代码结构混乱,高度耦合等。指的是我们添加性功能时,尽量不修改或者少改原有的代码的情况下,直接在扩展点插入新的功能代码。指的是尽量复用已有的代码,减少重复代码的编写,比如面向对象的继承,多态特性。指的是代码简洁,易懂,逻辑清晰,意味着易度,已维护。

2023-06-30 13:01:23 175

原创 设计原则之迪米特法则(LOD)

它还有个更加达意的名字,叫作最小知识原则,英文全称:The Least Knowledg Principle。通俗的讲是:不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口。“高内聚”用来指导类本身的设计,“松耦合”用来指导类与类之间依赖关系的设计;指相近功能应该放在同一个类,不相近的功能不要放在同一个类中。因为相近的功能往往会被同时修改,放在同一个类中方便维护。指的是类与类之间的依赖关系简单清晰。即使两个类有依赖关系,一个类的代码改动不会或者很少依赖类的代码改动。

2023-06-29 15:10:02 96

原创 设计原则之DRY原则

代码的“可复用性”是从代码开发者的角度来讲的,“复用”是从代码使用者的角度来讲的。比如,A同事编写一个UrlUtil类,代码的“可复用性”很好,B同事在开发新功能时,可以直接“复用”。这三者理解上有所区别,但实际要达到的目的是类似的,都是为了减少代码量,提高代码的可读性,可维护性。1、代码复用性表示一段代码可被复用的特性或能力:我们在编写代码的时候,让代码尽可能复用;2、代码复用表示一种行为:我们在开发新功能的时候,尽量复用已存在的代码;2、实现逻辑不重复,但功能语义重复的代码,也算违反DRY原则。

2023-06-29 12:38:42 117

原创 设计原则之KISS原则和YAGNI原则

代码行数越少并不代表越简单,我们还要考虑逻辑复杂度,实现难度,代码的可读性等。而且本事就复杂的问题,用复杂的方法解决,并不违背KISS原则。我们都知道代码的可读性和维护性是衡量代码质量非常重要的两个标准。KISS原则的英文全称:Keep It Simple and Stupid。她的意思的:不要过度设计当前用不到的代码,功能。如果说YAGNI原则讲的是要不要做,那么KISS原则讲的是怎么做。第二个问题是:代码复杂就违背了KISS原则吗?第一个问题是:行数少就越“简单吗”?如何写出满足KISS原则的代码呢?

2023-06-29 09:48:23 122 1

原创 Linux文档总结

linux学习笔记主要介绍在使用linux过程中常遇到的命令,比如文件的正删改查,系统参数的查看,权限操作和网络相关的命令

2023-05-29 23:58:19 335

原创 Python-多线程同步

Rlock内部维护一个Lock和一个counter变量,counter变量记录acquire的次数,从而使得资源可以被多次require。直到一个线程所有的锁被释放后,其他的线程才能获得资源。Python的多线程threading模块,控制同步机制的主要有一下5种方法:Lock,Rlock,Condition,Semaphore,Event。应用场景:一个线程可以进行多次锁。即锁定-修改-锁定-修改-释放-释放。当有空余车位的时候,才能让车进入。应用场景:一个线程一个锁。应用场景:生产者,消费者模型。

2023-04-28 11:52:14 380

原创 本地部署Stable Diffusion

产生报错的原因是因为显卡不支持half-float的数据类型,所以在启动项set COMMANDLINE_ARGS=后增加这一句 --precision full --no-half,以后运行webui-user.bat就可以了。

2023-04-25 03:09:05 652

原创 Shell脚本编程知识总结

目录框架:

2020-10-20 01:35:01 134

原创 rabbitMQ笔记

RabbitMQ是有erlang语言开发,所以必须erlang环境才能运行对比:Erlang语言最初目的是进行大型电信交换机设备的软件开发,是一种适合于大规模并发处理的高性能编程语言。管理平台:http://127.0.0.1:15672默认账号:guest/gusetVirtual hosts:想mysql有数据库的概念并且可以指定用户对库和表...

2020-03-10 14:27:00 392 1

原创 mysql笔记

衡量指标TPS: 每秒传输的事务处理的个数,这是指服务器每秒处理的事务数,支持事务的存储引擎如InnoDB特有的一个性能指标。QPS:每秒查询处理量,同时适应于InnoDB和MyISAM存储引擎。等待时间:执行SQL等待返回结果之间的等待时间TPS = (COM_COMMIT + COM_ROLLBACK) / UPTIMEQPS = QUESTIONIS /...

2020-03-08 11:05:35 286

原创 基于分布式思想下的rpc解决方案学习

目录RPC的诞生单机部署弊端:单个地方有问题,会影响其他功能,必须重新打包分布式:只更新某个服务RPC及主体流程:RPC的java版本--RMI实现一个RMI程序评价:简单,依赖性强,有局限性,不方便IOrder接口IOrderImpl实现类Server服务端:...

2020-01-19 22:35:50 277

原创 深入理解通讯协议学习

目录:知识架构:网络模型:Tcp/IP系列协议tcp的3次握手协议Tcp的三次握手的漏洞:Tcp的4次挥手协议抓包工具:三次握手:TCP的通讯原理:http协议:http协议的报文组成UDP协议:...

2020-01-19 19:51:25 592 1

原创 Linux入门学习

Linux环境简易安装1、下载docker toolboxhttps://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/2、选择好安装目录,一路next到底,完成后生成三个图标:Docker Quickstart Terminal,Kitematic (Alpha),Oracle VM VirtualBox...

2020-01-17 16:50:24 301

原创 solr 引入中文分词器

1 在solr的webapp下创建一个classes文件夹:IKAnalyzer.cfg.xml:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> ...

2019-11-14 17:15:57 146

原创 消息中间件对比和总结

原文:https://blog.csdn.net/mydreamneverstop/article/details/827726241. ActiveMQ/ApolloMQ  优点:老牌的消息队列,使用Java语言编写。对JMS支持最好,采用多线程并发,资源消耗比较大。如果你的主语言是Java,可以重点考虑。  缺点:由于历史悠久,历史包袱较多,版本更新很缓慢。集群模式需要依赖Zook...

2019-08-05 17:43:56 854

原创 等学完全套java互联网架构师课程,你说能值20K不?

2019-07-03 19:38:13 663

原创 java架构师之路

2019-07-02 19:56:26 214

转载 linux下安装tomcat启动访问不了

https://blog.csdn.net/zjxayb1314/article/details/83048629

2019-06-20 17:05:11 1612

Python学习路线.xmind

Python学习路线.xmind

2023-03-04

Linux.xmind

Linux.xmind

2023-03-04

shell编程知识汇总

shell脚本知识系统学习汇总,里面汇总各种系统变量作用,常见命令作用讲解,正则表达式,各种条件判断语句语法,精彩案例。

2020-10-20

rabbitMQ笔记.docx

记录rabbit从入门都精通的实操过程,记录和分析了rabbitMQ的各种模式的使用,以及验证代码,包括与springboot整合搭建,演示了重试机制,死信队列的使用方法,手动应答等。

2020-03-10

mysql笔记.docx

mysql作为主流的数据库,这是我整理的全部资料,里面介绍了mysql数据库的各种引擎的对比,以及如何分析执行计划,如何优化查询等。

2020-03-08

Linux入门.docx

linux入门文档,里面包含linux常用命令,已经注意事项,能够满足平时工作内容的需求,包括生产和运维等工作

2020-01-17

IkAnalyzer-lucene8.1.1.jar

引入中文一起需要的jar包文件

2019-11-14

shrio-web项目

shiro + spring+springmvc + redis 完整项目,需要的朋友请下载,下载后简单修改mysql,redis配置文件就能使用

2018-11-29

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

TA关注的人

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