- 博客(139)
- 资源 (1)
- 收藏
- 关注
原创 系统架构设计师:设计模式——行为设计模式
行为模式涉及算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。这些模式刻画了在运行时难以跟踪的、复杂的控制流。它们将用户的注意力从控制流转移到对象间的联系方式上来。
2025-05-04 21:51:33
1199
原创 系统架构设计师:设计模式——结构型设计模式
结构型设计模式涉及如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现。一个简单的例子是采用多重继承方法将两个以上的类组合成一个类,结果这个类包含了所有父类的性质。这一模式尤其有助于多个独立开发的类库协同工作。其中一个例子是类形式的 Adapter 模式。一般来说,适配器使得一个接口与其他接口兼容,从而给出了多个不同接口的统一抽象。为此,类适配器对一个 adaptee 类进行私有继承。这样,适配器就可以用 adaptee 的接口表示它的接口。
2025-05-02 11:30:00
1092
原创 系统架构设计师:设计模式——创建型设计模式
创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。随着系统演化得越来越依赖于对象复合而不是类继承,创建型模式变得更为重要。当这种情况发生时,重心从对一组固定行为的硬编码(hard-coding)转移为定义一个较小的基本行为集,这些行为可以被组合成任意数目的更复杂的行为。这样创建有特定行为的对象要求的不仅仅是实例化一个类。
2025-05-01 17:54:24
848
原创 系统架构设计师:设计模式概述
在 20 世纪 70 年代,Christopher Alexander 提出了城市建筑的模式,他认为:模式就是描述一个不断发生的问题和该问题的解决方案。随后,Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 写了一本著名的参考书《设计模式:可复用面向对象软件的基础》。后人也因为这本书称这四个人为四人组,将这本书中描述的模式称为 GoF(Gang of Four)设计模式。
2025-05-01 17:53:29
931
原创 Kubernetes详细教程(五):服务Service
在传统架构中,用户访问公司内的服务可能通过了多层代理、网关、防火墙等。在Kubernetes中,访问Kubernetes中的应用同样也会经过多层代理、网关、防火墙等。但是在传统架构中,可能是通过Nginx、HAProxy、LVS、公有云的SLB、ELB等实现的负载均衡和域名路由,虽然Kubernetes也是通过诸如此类的技术实现的域名路由或者负载均衡,只不过对应的名字叫法可能有所变化,读者不要把这些当作一个比较新颖的东西,其实内部的实现和之前并无区别。在传统架构配置多个相同服务的负载均衡可能使用的是
2025-04-23 07:14:19
750
原创 Kubernetes详细教程(四):深入掌握Pod及调度
为避免开头就讲述概念,先创建一个Pod试下。在生产环境中,很少单独运行一个Pod,因为单独创建的Pod并不能实现一些高级的发布策略,所以在实际使用中经常会用Deployment、DaemonSet、StatefulSet等高级控制器调度并管理Pod。当然有时候也会单独启动一个Pod用于测试业务等,此时可以单独创建一个临时Pod。
2025-04-19 07:23:59
562
原创 Kubernetes详细教程(三):部署应用、了解常用命令及编写资源清单
前面我们部署成功了kubernetes的集群,接着我们要学会如何使用它部署个应用以及如何编写资源清单。
2025-04-15 02:59:00
1100
原创 Kubernetes详细教程(二):安装与配置
本文安装的Kubernetes版本是1.28版本,就K8S各个版本的安装来看,细节上基本还是有比较大的差别的,同时因为外网不能访问的问题,官方的安装教程也不一定管用,我也查了不少资料,踩了不少坑。正常来说,高可用的生产环境至少有3台Master节点,3台Node节点。其中,Master节点不能用于承载业务,防止出现故障。在学习、测试环境下,那么至少有1台Master节点和2台Node节点,每台节点至少2核CPU和4GB内存。这么多服务器,费用开支紧张的同学,可以买个16G内存条,通过多开虚拟机的方式。
2025-04-13 09:07:30
1059
原创 Kubernetes详细教程(一):入门、架构及基本概念
随着Docker等容器技术的流行,越来越多的企业开始采用容器来打包和部署应用程序。随着容器数量的增加,确保所有服务能够正确地找到并通信变得更加困难。当某个容器由于软件错误或硬件故障而崩溃时,如果没有自动化的监控和恢复机制,运维人员需要手动重启或重新部署受影响的服务。面对这一挑战,企业迫切需要一种能够自动化管理大规模容器集群的解决方案。为了填补这一市场空白并分享其宝贵经验,谷歌在2015年决定将Borg的设计理念与最佳实践开源,推出了Kubernetes项目。
2025-04-06 16:53:00
1130
原创 持续集成与Jenkins安装使用教程
持续集成(Continuous integration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。通过持续集成,团队可以快速的从一个功能到另一个功能,简而言之,敏捷软件开发很大一部分都要归功于持续集成。
2025-04-02 17:27:27
1214
原创 GITLAB部署安装教程
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上提供了wiki、问题跟踪和CI/CD(持续集成/持续部署)等功能。它允许团队协作开发软件,提供了一个完整的DevOps生命周期的解决方案,从计划、创建、验证、打包、发布到配置、监控等各个环节。但是我们一般只用它的基本免费功能,作为私有仓库使用,然后与jenkins配套使用。
2025-03-21 11:37:49
2490
原创 docker学习使用教程
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。多数技术人员在谈到Docker时,主要是指Docker引擎。Docker引擎是用于运行和编排容器的基础设施工具。我们可以通过Dockerfile。
2025-03-10 14:09:01
1682
原创 python中如何组织项目工程文件
一个典型的Python项目工程目录结构可以帮助你更好地组织代码、资源和测试,从而使得项目更加清晰和易于维护。
2025-03-01 21:42:14
1266
原创 ERP系统的库存模块业务逻辑及设计
传统上通常将“库存管理”理解为对物料的进、出、存的业务管理,但这种理解在ERP系统中是不全面的。APICS词汇中对库存的定义是“以支持生产、维护、操作和客户服务为目的而存储的各种物料,包括原材料和在制品、维修件和生产消耗、成品和备件等”。库存管理工作应该包括物料的存储、收发、使用及计划与控制等相关的各个方面。
2025-02-28 11:12:32
951
原创 python入门及基本使用
如今AI技术特别火爆,而python又是AI技术的必要语言。我作为java程序员,也是有必要学一下python的技术的,以与时俱进。python官网下载地址:https://www.python.org/downloads一般下载最新的版本,注意加入python到环境变量中。输入python出现版本信息就算安装成功了除了需要解释器,还需要IDE编代码的工具,python的编写工具有很多,推荐使用pycharm。pycharm官网下载地址:https://www.jetbrains.com.cn/py
2025-02-22 22:09:06
878
原创 软件需求规格说明书怎么写?附标准格式样例
【根据不同业务背景的读者,应该提醒重点阅读哪些内容。【术语表应该要解释在本文件中多次出现、易于混淆或者重要的术语,应该被wiki单独管理。【面对破解混沌不清的项目目标,一是破解混沌不清的项目目标,寻找真正的项目发起人,二是外部溯源,寻找外部因素所激发的项目】【要么是解决问题的,要么是创造机会的】例如:(1)解决预约安排不合理的问题:避免出现体检部门超负荷;(2)解决物资供应脱节问题:通过安全库存量管理避免物资短缺现象出现。
2025-02-15 11:32:44
2326
原创 DeepSeek本地部署教程
现在DeepSeek比较火,可以将模型安装在自己电脑上进行使用。害怕有隐私泄露安全隐患的话,可以本地部署一个试试。
2025-02-05 17:20:20
17197
原创 mybatis plus 持久化使用技巧及场景
mybatis plus提供了很多强大的持久化工具,新手容易对这些工具使用困难,下面我总结了一下mybatis plus持久化的使用技巧及使用场景。
2025-02-04 09:38:17
713
原创 CMS内容管理系统的设计与实现:概述
内容管理系统(Content Management System, CMS)是一种由后端内容管理系统和前端内容展示平台两部分组成的软件系统。内容的创作人员、编辑人员、发布人员通常使用后端内容管理系统来提交、修改、审核和发布内容,最终在前端内容展示平台展示给用户,供用户消费(指用户接受内容的方式和行为)。这里的“内容”可以是文字、图片、视频、音频以及文件等形式的信息。在设计内容管理系统时,要站在内容和管理两个角度,基于从内容的生产到用户的消费的整个生命周期来考虑CMS产品设计闭环。
2025-01-23 20:35:44
1601
原创 基于若依框架的动态分页逻辑的实现分析
如果让我们自己写分页查询的逻辑,应该怎么写呢?在前端要完成分页的逻辑实际要做的工作还是挺多的。1.分页查询应该支持查询参数的输入,对于一个有众多属性的列表,可能有很多查询参数,对于不同的参数类型,有的需要like模糊查找、有的需要equals相等、有的必须是一个between时间范围。2.分页查询要有一个查询区的页面组件提供查询参数的输入,这个要考虑查询区的形式,提供平铺式的,还是提供一个简单的搜索输入框,要考虑是否记录历史值,使用get还是post发送请求。
2025-01-18 16:12:08
1008
原创 Springboot项目Druid运行时动态连接多数据源的功能
项目支持多数据库连接是个很常见的需求,这不仅是要在编译前连已经知道的多个数据库,有时还要在程序运行时连后期增加的多个数据源来获得数据。
2024-12-26 17:15:04
1025
2
原创 低代码开发平台搭建思考与实战
低代码开发平台是一种平台软件,人们能通过它提供的图形化配置功能,快速配置出满足各种特定业务需求的功能软件。具有以下特点:提供可视化界面进行程序开发 零代码或少量代码快速生成应用什么是低代码产品唯一不可缺少的功能?很多人认为是可视化编辑,那么非可视化编辑就是代码编辑。既然可视化编辑是低代码平台必不可少的功能,那可视化编辑就是低代码平台的必要条件。
2024-11-20 11:30:35
2073
1
原创 调用返回的消息契约对象常用后缀命名汇总
在调用/返回风格的程序中,程序员常常被接收和返回的java对象该如何命名而困扰。下面是我总结的针对不同场景的一些命名规范,解决你不知道该如何命名的难题,旨在帮助在Java项目中更有效地命名消息契约模型(DTO)。这些规范可以帮助确保代码的一致性和可读性。
2024-11-18 23:46:20
771
原创 系统架构设计师:软件架构的演化和维护
软件架构一般会经历初始设计、实际使用、修改完善和退化弃用的过程,其中修改完善的过程实际上就是软件架构的演化和维护过程,演化和维护的目的就是为了使软件能够适应环境的变化而进行的纠错性修改和完善性修改等。软件架构的演化和维护过程是一个不断迭代的过程,通过演化和维护,软件架构逐步得到完善,以满足用户需求。
2024-11-15 23:00:36
1263
原创 系统架构设计师:系统架构设计基础知识
从第一个程序被划分成模块开始,软件系统就有了架构。现在,有效的软件架构及其明确的描述和设计,已经成为软件工程领域中重要的主题。
2024-11-15 22:57:21
3163
原创 GIT常用操作及多人提交代码的工作流程
Git 是一个分布式版本控制系统,用于追踪文件的变更历史。它主要用于软件开发中的源代码管理,但也可以用于任何类型的文件。
2024-10-23 01:18:07
517
原创 centos系统安装oracle数据库教程(linux命令行安装)
一般来说我们Windows下进行安装Oracle都很简单,但Linux下却要输入很多命令,配置比较麻烦。以下的安装步骤是本人经过安装Linux下的Oracle经验,希望能帮到大家。
2024-10-22 20:02:37
1686
原创 关于项目从java8升级到java17需要做的变更
现在java最新版本都升级到22了,本着你升任你升,我用java8的原则,之前我的项目也一直是java8。但是最近看到java8项目的占用率逐渐减少,java17和java21的版本占有率逐渐提升,都超过市场一半以上份额了。本着追求新技术的考虑,新版本更优秀的性能以及兼容性的考虑,我将java8升级到了java17了。
2024-10-09 15:10:52
1121
1
原创 基于RBAC的通用权限管理系统的详细分析与实现(实现篇-Spring Security安全管理框架)
安全可以说是公司的红线了,一般项目都会有严格的认证和授权操作,在Java开发领域常见的安全框架有Shiro和Spring Security。Spring Security是一个相对复杂的安全管理框架,功能比Shiro更加强大,权限控制细粒度更高,对OAuth 2的支持也更友好,又因为Spring Security源自Spring家族,因此可以和Spring框架无缝整合,特别是Spring Boot中提供的自动化配置方案,可以让Spring Security的使用更加便捷。
2024-10-03 14:37:25
1911
1
原创 基于RBAC的通用权限管理系统的详细分析与实现(理念篇——权限对象、权限项、功能权限、数据权限、权限组、权限设计)
在与人沟通的过程中,我们很多次提到了权限,但是权限具体的含义每个人理解的含义都不明确,这样很容易造成双方信息不对称,有的人就只是把权限理解成某个页面的是否可访问,但是有的人却理解成其他的东西。所以我们要彻底的定义一下权限是什么?“权限”这个词语,我们谈论时到底是名词属性还是动词属性?这对于权限的含义很重要。如果是名词属性的话,那么它应该是有具体的指代物;如果是动词,则应该具有行为表示。- 权限的名词属性:api接口、页面、业务功能等。- 权限的动词属性:可访问、新增、编辑、可操作、不可操作等
2024-10-02 10:38:28
5995
原创 实现领域驱动设计(DDD)系列详解:集成限界上下文
一个项目中通常存在着多个限界上下文,并且我们需要在它们之间进行集成。在**上下文映射图**中存在两种主要形式:一种是通过绘制一些简单的框图来展示它们之间的集成关系;另一种则是通过代码来实现这些集成关系。到了具体的技术实现,需要确定限界上下文的物理边界,因为它会直接影响架构的设计与实现。限界上下文的物理边界,实际指的是通信边界,以进程为单位分为进程内与进程间两种。
2024-09-24 17:33:14
1274
原创 实现领域驱动设计(DDD)系列详解:厘清限界上下文的边界
软件系统的架构,无非分分合合的艺术。限界上下文封装了分离的业务能力,上下文映射则建立了限界上下文之间的关系。二者合一,就体现了高内聚松耦合的架构原则。高内聚的限界上下文要形成松耦合的协作关系,就需要在控制边界的基础上管理边界之间的协作关系。业务场景的协作是起因,它突破了限界上下文的业务边界。当我们将限界上下文视为团队的工作边界时,这种协作关系就转换成团队的协作,需要用项目管理手段来解决。为了避免限界上下文之间产生混乱的灰色地带,还需要引入一些软件设计手段,让跨限界上下文之间的协作变得更加可控。
2024-09-22 11:00:58
1261
原创 实现领域驱动设计(DDD)系列详解:限界上下文
什么是限界上下文(bounded context)?要明确限界上下文的定义,需要从“限界”与“上下文”这两个词的含义来理解。上下文表现了业务流程的场景片段,整个业务流程由诸多具有时序的活动组成,随着流程的进行,不同的活动需要不同的角色参与,并导致上下文因为某个活动的执行发生切换,形成了场景的边界。因而,上下文其实是动态的业务流程被边界静态切分的产物。
2024-09-15 22:54:51
1824
原创 实现领域驱动设计(DDD)系列详解:服务契约设计
在软件领域,使用最频繁的词语之一就是“服务”。有时候服务器异常关机或程序异常停止了,也会说服务挂了。领域驱动设计也有领域服务和应用服务之分,菱形对称架构则将开放主机服务分为远程服务和本地服务,其中本地服务即提出的应用服务。全局分析阶段输出的业务需求也被称为业务服务。业务服务满足了角色的服务请求,在解空间体现为服务与客户的协作关系,形成的协作接口可称为契约(contract)。
2024-09-08 23:18:40
1743
原创 ant-design-vue中实现a-tree树形控件父子关联选中过滤的算法
在使用ant-design-vue的框架时,a-tree是比较常用的组件,比较适合处理树形结构的数据。但是在与后台数据进行授权交互时,就不友好了。在原生官方文档的例子中,若子项被勾选,则父级节点会被关联勾选,但这勾选并不一定是选中的意思。有可能是半选中,通过方框样式选中,也就是说父级节点的值不会出现在`checkedKeys`的数组中。所以需要将服务传过来的数据`allCheckedKeys`处理,再还原成选中`checkedKeys`和半选中`halfCheckedKeys`的两部分。
2024-09-07 16:06:50
1422
原创 javascript中数组遍历的所有方法
作为后端程序员平常js用得少,但是数组遍历又是常用功能,遍历方法又有很多。在此记录一下,所有用得上的数组遍历方法。
2024-09-06 17:28:04
1077
原创 linux下oracle启动及关于pfile和spfile启动参数文件的配置
在现代企业环境中,Oracle数据库作为关键的业务支撑平台,承载着大量的数据处理和事务管理任务。无论是对于DBA(数据库管理员)还是开发人员来说,掌握Oracle数据库的基本操作和配置技巧都是至关重要的。本文提供了一份全面而实用的指南,涵盖Oracle数据库的启动、关闭以及如何配置PFILE(Parameter File)文件。
2024-09-03 12:14:50
2288
原创 CSS解析:盒模型
在网页上实现元素布局涉及很多技术。在复杂网站上,可能会用到浮动元素、绝对定位元素以及其他各种大小的元素,甚至也会使用较新的CSS特性,比如Flexbox或者网格布局。在此之前我们要打好基础,深刻理解浏览器是如何设置元素的大小和位置的。高级的布局话题基于文档流和盒模型等概念,这些是决定网页元素的大小和位置的基本规则。我们将构建一个两列布局的网页。你可能很熟悉这个布局,因为它是一个经典的CSS入门练习,但是在完成这种布局的过程中,有一些布局中经常被忽略的一些细节。
2024-09-01 21:38:19
1509
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人