自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(162)
  • 资源 (1)
  • 收藏
  • 关注

原创 信息系统架构设计理论与实践:基本概念及发展

信息系统架构是随着技术发展而逐渐形成的重要学科。从早期小规模系统关注算法效率,到如今复杂系统需要整体规划,架构设计已成为信息系统开发的核心环节。80年代IBM的Zachman首次提出企业架构框架,开创了多维分析企业系统的先河。1999年美国联邦政府推出FEA框架解决跨机构协同问题,而TOGAF则成为行业通用的架构方法论。如今,信息系统架构已发展为包含架构描述、验证、维护和可靠性设计等方向的独立学科,为各类组织提供系统化规划工具。架构设计既是科学也是艺术,需要平衡技术与业务需求,确保系统长期稳定发展。

2025-11-22 14:27:35 626

原创 系统架构设计基础知识:软件架构风格

摘要:软件体系结构设计的核心目标是实现架构级重用,通过复用体系结构风格在不同系统中构建统一架构。架构风格由构件、连接件及组合约束构成,分为数据流、调用/返回、独立构件、虚拟机和仓库五大类。数据流风格包含批处理和管道-过滤器两种子风格:批处理强调顺序执行(如银行对账系统),而管道-过滤器支持数据流并行处理(如日志分析系统)。这些风格通过标准化设计模式提升开发效率,但需根据具体需求灵活选择。(149字)

2025-11-22 09:57:20 710

原创 linux系统mysql每日备份方法

本文介绍了MySQL数据库每日自动备份的实现方案。主要包括编写Shell脚本实现备份、压缩和日志记录功能,支持多数据库备份和特定表排除,按日期管理备份文件并自动清理旧备份。文章还解决了常见问题如换行符不兼容、环境变量配置和解压缩还原操作,最后通过Cron设置定时任务实现自动化执行。该方案能够有效保障数据安全,适合业务增长后的数据库管理需求。

2025-11-06 11:28:02 284

原创 深入探讨Java热更新:自定义类加载器与在线升级实现

有时候公司购买的单体架构商务软件需要二次开发更新代码,又没有商务授权部署第二套,是无法进行蓝绿部署或金丝雀发布的。若整个系统被很多人用,JVM又不方便重启停止业务。这时需要能做到不重启服务,上传class文件能自动生效的功能,也就是热更新部署。本文介绍了Java热更新功能的实现原理和实现过程。通过自定义类加载器打破双亲委派机制,实现类的动态加载和卸载,从而在不重启JVM的情况下更新代码。热更新功能适用于需要持续运行且无法停机更新的业务系统,但需要注意内存泄漏和性能问题。

2025-10-14 11:56:18 1015

原创 JVM字节码与类的加载(二):类加载器

Java类加载器负责将class文件加载到JVM内存中,主要分为启动类加载器(Bootstrap ClassLoader)和自定义类加载器。类加载方式包括显式加载(如调用Class.forName())和隐式加载(JVM自动加载)。类加载器采用双亲委派模型,确保类的唯一性和安全性。启动类加载器负责加载核心库,扩展类加载器加载扩展库,而应用程序类加载器加载用户类路径下的类。理解类加载机制有助于解决类加载异常、实现动态加载和自定义加载规则。

2025-10-12 13:43:06 632

原创 JVM字节码与类的加载(一):类的加载过程详解

本文详细介绍了Java类加载过程,通过示例代码演示了类加载机制的核心概念。主要内容包括: 类加载的生命周期:从磁盘加载class文件到内存,经历加载、验证、准备、解析、初始化、使用和卸载7个阶段,其中前5个阶段最为关键。 加载阶段的核心操作: 通过全类名获取二进制数据流 解析为方法区的数据结构 创建Class对象作为访问入口 类模板对象与反射机制: Class对象是类在JVM中的内存快照 反射通过Class对象访问类模板中的字段、方法等信息 演示了三种获取Class对象的方式及其应用场景...

2025-10-12 11:41:49 742

原创 JVM运行时数据区:线程、程序计数器、虚拟机栈、本地方法接口、本地方法栈

JVM学习摘要: JVM是Java程序运行的核心,掌握其内存管理机制对排查生产环境问题至关重要。JVM运行时数据区分为线程共享(堆、方法区)和线程私有(程序计数器、虚拟机栈、本地方法栈)。程序计数器作为指令指针,指导字节码执行;堆区分新生代和老年代,负责对象存储;方法区存放类元信息。线程分为用户线程和守护线程(如GC线程),JVM在线程异常时会根据线程类型决定是否终止。理解JVM内存模型能有效解决内存泄漏和溢出问题,提升系统稳定性。(150字)

2025-09-25 08:46:47 908

原创 JVM性能监控与调优(一):命令行工具

摘要: Java性能诊断工具对于解决应用性能问题至关重要。JDK内置了多种工具,如jps和jstat,帮助开发者监控和分析JVM运行状态。jps用于查看Java进程信息,支持显示进程ID、启动参数等;jstat则提供堆内存、GC等详细统计信息,帮助定位内存泄漏和GC问题。通过合理使用这些工具,开发者可以高效诊断性能瓶颈,优化Java应用性能。

2025-09-16 16:30:08 1058

原创 Mermaid流程图更改样式的方法

摘要:文章介绍了如何自定义Mermaid流程图样式,特别是针对打印需求调整为黑白配色。通过添加配置代码修改主题变量,可以改变流程图颜色方案。文中提供了完整的HTML转换工具代码,用户只需复制Mermaid代码到该工具中即可实现样式转换。该工具包含输入区、预览区、渲染按钮和下载功能,界面美观且操作简便,能帮助用户快速生成符合打印需求的黑白流程图。

2025-09-02 08:13:50 4447

原创 【系统架构设计师】数据库设计(一):数据库技术的发展、数据模型、数据库管理系统、数据库三级模式

数据库技术发展与应用摘要 数据库技术是研究数据存储、管理和应用的软件学科,经历了三个发展阶段:人工管理阶段(数据与程序强绑定、不保存、无管理软件)、文件系统阶段(数据长期保存、初步共享但存在冗余和孤立问题)和数据库系统阶段(数据模型化、高度共享、程序与数据独立)。数据库系统通过DBMS实现了数据的统一管理和高效访问,解决了文件系统存在的数据冗余、不一致和孤立问题。现代数据库技术采用关系模型等数据结构,支持多应用共享,显著提高了数据管理效率和应用开发便捷性。随着技术进步,数据库系统正朝着更智能、更安全...

2025-08-25 17:54:15 1101

原创 数据库表优化:mysql分区表的使用(冷热分离,数据归档)

本文介绍了对A股日线行情数据库表进行分区优化的实践。通过按交易日期范围分区(每年一个分区),测试显示:针对单日期的查询性能提升约10倍(从4.3秒降至350毫秒),而跨分区查询或按股票代码查询的性能差异不大。文章详细展示了分区表创建、结构调整、分区方案设计的过程,并对比了分区表与非分区表在不同查询场景下的性能表现,验证了分区策略对特定查询模式的优化效果,同时指出分区范围过大时性能提升有限。执行计划分析确认了分区修剪的有效性。

2025-08-16 08:47:42 609

原创 关于类记账系统(库存、电商)的数据库表设计的思考

本文总结了记账功能业务系统的数据库设计思路,核心分为流程表、主数据表和业务流水表三类。 流程表作为业务驱动源头,通常采用主子表结构,具有状态流转特性。设计要点包括:状态字段与变更日志、流程类型区分、单据编号生成策略、乐观锁控制、关联流程溯源等。主数据表存储业务基础信息,如用户账户、物料库存等,需考虑多账户类型、余额冻结机制、数据状态管理及历史快照。业务流水表则记录明细变动,便于追溯和对账。 文章通过电商充值订单和ERP入库单的建表实例,展示了状态变更、乐观锁控制等关键实现方法,为记账类系统提供了一套完整的数

2025-08-02 16:07:21 1317

原创 SpringCloud微服务详细搭建使用教程(一):微服务概述

文章摘要 微服务架构是一种将单体应用拆分为松耦合、独立部署的小型服务的设计模式。它解决了单体应用的启动慢、开发效率低、故障影响广等问题,通过模块化、抽象化和独立部署提升了系统灵活性。微服务的优势包括松耦合、高可用性、技术多样性等,但也面临分布式事务处理、学习曲线陡峭等挑战。Spring Cloud为微服务提供了服务治理、负载均衡和统一入口等核心支持,通过服务注册发现机制和客户端负载均衡技术,解决了微服务协作难题。微服务适用于大型复杂系统,但在小型应用、原型开发或强事务一致性场景下并不适用。

2025-07-06 11:59:12 1015

原创 Kubernetes详细教程(六):数据持久化存储(Volume)

Kubernetes Volume机制为容器提供了灵活的数据存储方案,支持多种卷类型以满足不同需求。主要分为两大类:持久化存储卷(如CephFS、GlusterFS、NFS等)适合生产环境,可实现数据持久化与共享;临时存储卷(如emptyDir)用于Pod内容器间临时数据共享。Kubernetes还提供ConfigMap、Secret等特殊卷类型管理配置和敏感信息。相比Docker卷,Kubernetes卷具有明确的生命周期管理,与Pod生命周期绑定,支持更丰富的存储后端和高级功能。通过Volume抽象,K

2025-07-02 08:57:13 829

原创 配置中心nacos安装使用教程

Nacos是一个动态服务发现与配置管理平台,支持微服务架构。文章介绍了Nacos的安装与使用:下载稳定版本后启动单机模式,通过API测试配置发布与获取;配置外部MySQL数据库存储;在SpringBoot项目中集成Nacos,通过bootstrap.yml配置连接,定义数据集并测试@Value注解获取配置。Nacos简化了微服务环境下的配置管理,支持多种主流服务类型。

2025-07-01 15:27:04 892

原创 从静态到动态:Web渲染模式的演进和突破

早期Web经历了从静态HTML到动态脚本的演进,核心发展脉络如下: 静态HTML时代(1990-1995): 纯手工编写HTML/CSS文件 服务器仅作文件分发 局限:无交互、更新繁琐、内容固定 动态脚本时代(1995-2005): PHP/JSP等语言实现服务端渲染(SSR 1.0) 动态生成HTML内容 引入模板引擎复用组件 优势:支持数据库交互、表单处理 局限:前后端耦合、整页刷新、扩展性差 Ajax兴起(2005年后): 实现异步数据交互 局部更新DOM内容 jQuery简化开发流程 为前后端分离奠

2025-06-28 19:16:07 838

原创 CMS内容管理系统的设计与实现:多站点模式的实现

在一套内容管理系统中,其实有很多站点,比如企业门户网站,产品手册,知识帮助手册等,因此会需要多个站点,甚至PC、mobile、ipad各有一个站点。每个站点关联的有站点所在目录及所属的域名。多站点CMS系统站点表设计是构建高效、安全、可扩展平台的关键环节。站点表作为系统的核心配置中心,不仅需要存储基础站点信息,还需承载数据隔离策略、权限控制规则和模板管理机制,直接影响系统的安全性和扩展能力。

2025-06-10 00:16:23 1430

原创 CMS内容管理系统的设计与实现:架构设计

本文提出了一套CMS系统的渐进式架构设计方案。对于中小型项目推荐模块化单体架构(Vue3+Spring Boot),大型项目建议采用微服务架构(Spring Cloud Alibaba)。文章详细阐述了架构演进路线,从初期单体到后期微服务的分阶段实施策略,并提供了模块化分层设计的具体实现方案,包括业务垂直切分、客户端横向隔离和技术纵向分层。在后端实施层面,提出了领域对象复用方案和API路径设计规范,推荐采用/api/admin和/api/portal的双前缀模式。该方案强调根据项目规模和发展阶段灵活选择架构

2025-06-08 22:02:17 1219

原创 高性能MYSQL:复制同步的问题和解决方案

MySQL复制中断常见原因及解决方案 摘要: MySQL复制中断主要由数据损坏/丢失(主备库意外关闭导致日志不同步)、非事务型表更新失败、混合事务型/非事务型表使用、不确定语句执行差异、主备存储引擎不同以及备库数据被手动更改等因素引起。解决方法包括:设置sync_binlog保证日志同步、使用pt-table-checksum校验数据、跳过损坏事件、避免混合表类型、统一存储引擎配置等。对于严重损坏,需手动定位日志事件边界或重新同步数据。未来版本中基于行的复制模式可减少部分问题。

2025-06-08 06:16:59 1011

原创 高性能MYSQL:主从数据库的配置

MySQL内建的复制功能是构建基于MySQL的大规模、高性能应用的基础,这类应用使用所谓的“水平扩展”的架构。我们可以通过为服务器配置一个或多个备库的方式来进行数据同步。复制功能不仅有利于构建高性能的应用,同时也是高可用性、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。事实上,可扩展性和高可用性通常是相关联的话题。首先简要介绍复制如何工作,然后讨论基本的复制服务搭建,包括与复制相关的配置以及如何管理和优化复制服务器。

2025-06-08 06:08:52 1035

原创 高性能MYSQL(三):性能剖析

性能优化核心是降低查询响应时间而非单纯减少资源消耗。正确的优化步骤包括:精确测量任务耗时(90%时间应用于测量)、分析执行与等待时间、通过性能剖析定位瓶颈工具应提供详细任务列表并按耗时排序。警惕平均值掩盖的异常情况,注意低频但高延迟查询。MySQL优化需启用慢查询日志(设置long_query_time=0捕获所有查询),使用微秒级精度分析。优化原则遵循阿姆达尔定律,优先处理占总响应时间高的查询,同时考虑成本收益比。服务器负载剖析可发现效率低下查询,带来直接和间接性能提升。

2025-06-02 17:29:27 959

原创 使用JSP踩过的坑

【JSP开发避坑指南】摘要:本文总结了JSP开发中的常见问题:1)使用out.println()而非System.out进行输出,函数内打印需注入JspWriter对象;2)带"#"的URL跳转建议用前端location.href;3)Java代码中的return会终止整个页面渲染;4)request.getParameter可统一获取GET/POST参数;5)区分<%! %>(类级声明)和<% %>(方法级代码)的作用域差异。这些经验可帮助开发者避免JSP维护中

2025-05-25 21:50:07 648

原创 基于vue3的权限管理系统脚手架搭建项目实战(二):登录与路由权限控制

本文介绍了基于Vue3的权限管理系统脚手架搭建项目的第二章,主要围绕用户登录流程的完善展开。首先,分析了用户使用系统的行为方式,明确了用户需要通过打开页面和发送请求来使用功能。接着,详细设计了登录页面,并通过状态管理工具pinia处理用户登录状态,包括登录、获取用户信息和登出等功能。此外,还介绍了如何使用导航守卫进行权限控制,确保用户在已登录状态下才能访问特定页面。通过vue-router和axios等工具,实现了页面路由、请求发送和权限管理的封装,确保系统的安全性和可维护性。

2025-05-15 17:00:13 894

原创 系统架构设计师:设计模式——行为设计模式

行为模式涉及算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。这些模式刻画了在运行时难以跟踪的、复杂的控制流。它们将用户的注意力从控制流转移到对象间的联系方式上来。

2025-05-04 21:51:33 1361

原创 系统架构设计师:设计模式——结构型设计模式

结构型设计模式涉及如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现。一个简单的例子是采用多重继承方法将两个以上的类组合成一个类,结果这个类包含了所有父类的性质。这一模式尤其有助于多个独立开发的类库协同工作。其中一个例子是类形式的 Adapter 模式。一般来说,适配器使得一个接口与其他接口兼容,从而给出了多个不同接口的统一抽象。为此,类适配器对一个 adaptee 类进行私有继承。这样,适配器就可以用 adaptee 的接口表示它的接口。

2025-05-02 11:30:00 1241

原创 系统架构设计师:设计模式——创建型设计模式

创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。随着系统演化得越来越依赖于对象复合而不是类继承,创建型模式变得更为重要。当这种情况发生时,重心从对一组固定行为的硬编码(hard-coding)转移为定义一个较小的基本行为集,这些行为可以被组合成任意数目的更复杂的行为。这样创建有特定行为的对象要求的不仅仅是实例化一个类。

2025-05-01 17:54:24 976

原创 系统架构设计师:设计模式概述

在 20 世纪 70 年代,Christopher Alexander 提出了城市建筑的模式,他认为:模式就是描述一个不断发生的问题和该问题的解决方案。随后,Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 写了一本著名的参考书《设计模式:可复用面向对象软件的基础》。后人也因为这本书称这四个人为四人组,将这本书中描述的模式称为 GoF(Gang of Four)设计模式。

2025-05-01 17:53:29 1021

原创 Kubernetes详细教程(五):服务Service

在传统架构中,用户访问公司内的服务可能通过了多层代理、网关、防火墙等。在Kubernetes中,访问Kubernetes中的应用同样也会经过多层代理、网关、防火墙等。但是在传统架构中,可能是通过Nginx、HAProxy、LVS、公有云的SLB、ELB等实现的负载均衡和域名路由,虽然Kubernetes也是通过诸如此类的技术实现的域名路由或者负载均衡,只不过对应的名字叫法可能有所变化,读者不要把这些当作一个比较新颖的东西,其实内部的实现和之前并无区别。在传统架构配置多个相同服务的负载均衡可能使用的是

2025-04-23 07:14:19 877

原创 Kubernetes详细教程(四):深入掌握Pod及调度

为避免开头就讲述概念,先创建一个Pod试下。在生产环境中,很少单独运行一个Pod,因为单独创建的Pod并不能实现一些高级的发布策略,所以在实际使用中经常会用Deployment、DaemonSet、StatefulSet等高级控制器调度并管理Pod。当然有时候也会单独启动一个Pod用于测试业务等,此时可以单独创建一个临时Pod。

2025-04-19 07:23:59 704

原创 Kubernetes详细教程(三):部署应用、了解常用命令及编写资源清单

前面我们部署成功了kubernetes的集群,接着我们要学会如何使用它部署个应用以及如何编写资源清单。

2025-04-15 02:59:00 1417

原创 Kubernetes详细教程(二):安装与配置

本文安装的Kubernetes版本是1.28版本,就K8S各个版本的安装来看,细节上基本还是有比较大的差别的,同时因为外网不能访问的问题,官方的安装教程也不一定管用,我也查了不少资料,踩了不少坑。正常来说,高可用的生产环境至少有3台Master节点,3台Node节点。其中,Master节点不能用于承载业务,防止出现故障。在学习、测试环境下,那么至少有1台Master节点和2台Node节点,每台节点至少2核CPU和4GB内存。这么多服务器,费用开支紧张的同学,可以买个16G内存条,通过多开虚拟机的方式。

2025-04-13 09:07:30 1316

原创 Kubernetes详细教程(一):入门、架构及基本概念

随着Docker等容器技术的流行,越来越多的企业开始采用容器来打包和部署应用程序。随着容器数量的增加,确保所有服务能够正确地找到并通信变得更加困难。当某个容器由于软件错误或硬件故障而崩溃时,如果没有自动化的监控和恢复机制,运维人员需要手动重启或重新部署受影响的服务。面对这一挑战,企业迫切需要一种能够自动化管理大规模容器集群的解决方案。为了填补这一市场空白并分享其宝贵经验,谷歌在2015年决定将Borg的设计理念与最佳实践开源,推出了Kubernetes项目。

2025-04-06 16:53:00 2434 1

原创 持续集成与Jenkins安装使用教程

持续集成(Continuous integration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。通过持续集成,团队可以快速的从一个功能到另一个功能,简而言之,敏捷软件开发很大一部分都要归功于持续集成。

2025-04-02 17:27:27 1629

原创 GITLAB部署安装教程

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上提供了wiki、问题跟踪和CI/CD(持续集成/持续部署)等功能。它允许团队协作开发软件,提供了一个完整的DevOps生命周期的解决方案,从计划、创建、验证、打包、发布到配置、监控等各个环节。但是我们一般只用它的基本免费功能,作为私有仓库使用,然后与jenkins配套使用。

2025-03-21 11:37:49 6182

原创 docker学习使用教程

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。多数技术人员在谈到Docker时,主要是指Docker引擎。Docker引擎是用于运行和编排容器的基础设施工具。我们可以通过Dockerfile。

2025-03-10 14:09:01 2963

原创 python中如何组织项目工程文件

一个典型的Python项目工程目录结构可以帮助你更好地组织代码、资源和测试,从而使得项目更加清晰和易于维护。

2025-03-01 21:42:14 1968

原创 ERP系统的库存模块业务逻辑及设计

传统上通常将“库存管理”理解为对物料的进、出、存的业务管理,但这种理解在ERP系统中是不全面的。APICS词汇中对库存的定义是“以支持生产、维护、操作和客户服务为目的而存储的各种物料,包括原材料和在制品、维修件和生产消耗、成品和备件等”​。库存管理工作应该包括物料的存储、收发、使用及计划与控制等相关的各个方面。

2025-02-28 11:12:32 1514

原创 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 1089

原创 软件需求规格说明书怎么写?附标准格式样例

【根据不同业务背景的读者,应该提醒重点阅读哪些内容。【术语表应该要解释在本文件中多次出现、易于混淆或者重要的术语,应该被wiki单独管理。【面对破解混沌不清的项目目标,一是破解混沌不清的项目目标,寻找真正的项目发起人,二是外部溯源,寻找外部因素所激发的项目】【要么是解决问题的,要么是创造机会的】例如:(1)解决预约安排不合理的问题:避免出现体检部门超负荷;(2)解决物资供应脱节问题:通过安全库存量管理避免物资短缺现象出现。

2025-02-15 11:32:44 8498

原创 DeepSeek本地部署教程

现在DeepSeek比较火,可以将模型安装在自己电脑上进行使用。害怕有隐私泄露安全隐患的话,可以本地部署一个试试。

2025-02-05 17:20:20 19452

空空如也

空空如也

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

TA关注的人

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