- 博客(184)
- 收藏
- 关注
原创 软件设计模式
设计模式概述 设计模式是软件开发中针对常见问题的可复用解决方案,代表最佳实践。它们提供了一种共享的设计词汇,能提高代码的可维护性、可复用性和灵活性。核心设计原则包括单一职责、开闭原则、里氏替换等7大原则。 设计模式分为三类: 创建型模式:关注对象创建,如工厂方法、单例等 结构型模式:处理类或对象的组合 行为型模式:关注对象间的通信 以工厂方法模式为例,它包含产品接口、具体产品、工厂接口和具体工厂四个角色。该模式的优点在于遵循单一职责和开闭原则,缺点是可能导致类数量爆炸。典型应用场景包括物流系统、日志框架等需
2026-06-14 17:12:34
306
原创 Nginx学习与应用
摘要: Nginx是一款高性能的HTTP服务器和反向代理服务器,支持高并发、低内存消耗、热部署和模块化扩展。核心功能包括托管静态资源、反向代理、负载均衡、API网关和SSL终结。安装时需注意路径避免中文,通过start nginx启动服务,常用命令包括重载配置(nginx -s reload)和检查语法(nginx -t)。实战案例演示了如何结合Python后端实现反向代理与负载均衡:通过Nginx配置将请求分发到多个Flask服务(端口5000/5001),同时托管前端HTML页面,解决跨域问题。关键配置
2026-06-05 15:30:19
222
原创 Kubernetes了解与应用
Kubernetes (K8s) 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。其核心功能包括服务发现与负载均衡、存储编排、自动部署与回滚、弹性伸缩、自我修复以及密钥与配置管理。启用K8s后,容器管理从单个容器升级为Pod(一组容器),支持一键扩容、自动负载均衡、DNS服务发现、自动重启和零停机更新等。架构分为控制平面(Master节点)和工作节点(Worker节点),控制平面负责集群管理,工作节点运行实际应用容器。关键概念包括Pod、Node、Deployment、Service等。安装
2026-05-31 17:09:18
320
原创 Docker学习与使用
Docker是一个开源的容器化平台,可将应用程序及其依赖打包到轻量级、可移植的容器中运行。核心概念包括镜像(只读模板)、容器(运行实例)、数据卷(持久化存储)等。相比传统虚拟机,Docker具有启动快、资源占用小、环境一致等优势。常见应用场景包括统一开发环境、微服务部署、CI/CD流水线等。在Windows上安装需先配置WSL 2,再安装Docker Desktop,并建议配置国内镜像加速器。基本操作涵盖镜像管理(拉取、删除、导入导出)和容器管理(启动、停止、日志查看等)。Docker通过容器化技术实现了"
2026-05-24 17:43:11
429
原创 MinIO部署与初步使用
MinIO是一款高性能开源对象存储系统,兼容AWS S3 API,可作为私有化S3替代方案。其核心优势包括高性能(Go语言编写)、S3完全兼容、云原生支持、纠删码数据保护和轻量级部署。相比传统文件存储,MinIO采用扁平结构组织数据,支持丰富元数据和水平扩展,通过RESTful API访问。适用于AI/数据湖仓、备份归档、Web应用、边缘计算等场景。部署过程包括下载二进制文件、创建目录结构、设置账号密码、启动服务(默认端口9000/9001)和访问Web控制台。Python SDK支持桶管理、文件上传下载等
2026-05-17 15:44:41
430
原创 Redis学习笔记
Redis是一个开源的内存键值存储系统,支持多种数据结构(String、Hash、List等),具有高性能、持久化和高可用特性。本文介绍了Redis的核心特点、数据结构、持久化机制(RDB和AOF)以及架构设计。同时提供了Windows环境下Redis的安装配置指南,包括服务器启动和基础操作示例。最后展示了Python中使用Redis的代码示例,涵盖String、Hash、List等数据结构的操作。Redis适用于缓存、消息队列、排行榜等多种应用场景。
2026-05-12 15:29:34
377
原创 Kafka
Apache Kafka是一个高性能的分布式事件流平台,核心特点包括高吞吐量(单机数十万条/秒)、低延迟(毫秒级)、持久化存储和分布式架构。其核心概念包括Topic(消息分类)、Partition(并行处理单元)、Producer/Consumer(消息生产/消费)、Broker(集群节点)等。Kafka通过分区并行、批量处理、零拷贝技术实现高性能,采用副本机制和ISR机制保证可靠性。典型应用场景包括异步通信、日志聚合、流数据处理和事件溯源。可通过Docker快速搭建开发环境,使用KRaft模式替代ZooK
2026-05-10 16:13:24
494
原创 软件之构件与中间件
构件又称为,是一个自包容、可复用的。构件是一个程序集,或者说是一组程序的集合。这个集合可能会以各种方式体现出来,如源程序或二进制的代码。这个集合整体向外提供统一的访问接口,构件外部只能通过接口来访问构件,而不能直接操作构件的内部。构件的两个最重要的特性是与。:构件是最高层级的复用单元,它由多个对象协作构成,而这些对象往往按照功能职责被组织在不同的模块中。
2026-03-13 10:16:59
349
原创 架构的质量属性
本文系统介绍了软件架构评估中的十大核心质量属性,包括性能、可伸缩性、可用性、可靠性、安全性、弹性、可维护性、可测试性、可部署性和可观测性。每个属性从定义、典型关注点、优化策略和场景示例四个维度进行详细阐述,为软件架构设计提供了全面的评估框架。这些质量属性共同构成了衡量系统优劣的关键指标,帮助开发者在功能实现之外,从多维度保障系统的整体质量。文章通过具体案例展示了不同质量属性在实际系统中的实现方式与价值。
2026-03-08 12:37:40
392
原创 基于服务的架构(SOA)
面向服务架构(SOA)是一种通过标准化服务组件实现系统整合和业务灵活性的架构模式。其核心特征包括服务自治、松散耦合、服务契约、可重用性和可发现性。SOA由服务提供者、消费者、注册中心和企业服务总线(ESB)四大组件构成,其中ESB作为中间件平台支持异构系统间的消息交互。该架构通过将业务功能封装为独立服务,实现系统解耦、快速组装和资产重用,帮助企业提高IT响应能力和降低开发成本。
2025-09-01 00:05:57
751
原创 项目中使用ORM与原生SQL的区别
摘要:ORM(对象关系映射)与原生SQL各有优劣,ORM提供高级抽象,开发效率高但性能稍逊;原生SQL性能更好但维护成本高。建议采用混合策略:80%常规操作使用ORM,20%复杂查询用原生SQL。选择时需考虑项目需求、团队技能和维护成本,最佳实践是两者结合以兼顾开发效率和运行性能。
2025-08-09 16:44:51
377
转载 Serverless学习与实践
摘要:Serverless架构代表了云计算演进的最高阶段,通过FaaS(函数即服务)和BaaS(后端即服务)实现基础设施完全解耦。其核心优势包括自动弹性扩展、按需付费和零运维管理,适用于Web后端、数据处理等场景。虽然面临冷启动延迟、供应商锁定等挑战,但通过混合架构和优化策略可有效应对。随着多云支持、AI融合等趋势发展,Serverless正推动计算范式向"纯粹编写代码"进化,成为云原生时代的重要技术方向。
2025-07-18 15:15:17
318
原创 Nacos3在.NET中的简单应用
Nacos是一款阿里巴巴开源的云原生平台组件,集服务发现、配置管理和服务管理于一体。本文介绍了Nacos的核心功能(服务注册发现、动态配置管理)及其优势(易用性、高可用性、生态丰富),并详细演示了在Windows11环境下的安装过程(包括JDK17配置和鉴权设置)。重点展示了如何在.NET8项目中集成Nacos,实现配置中心(动态获取配置)和服务注册发现(负载均衡调用),同时总结了配置过程中遇到的常见问题及解决方案(端口设置、鉴权配置)。通过实际案例验证了Nacos在微服务架构中的实用价值。
2025-07-11 18:27:34
1607
原创 MVC、MVP、MVVM与RIA架构
MVC、MVP、MVVM与RIA架构是四种经典的软件设计模式,核心目标是通过分层解耦提升代码可维护性。MVC将应用分为模型、视图和控制器三层,适合传统Web开发;MVP引入Presenter作为中间层,彻底解耦视图与模型,在Android开发中广泛应用;MVVM通过数据绑定实现视图与模型的自动同步,被Vue/React等框架采用;RIA则专注于富客户端应用的交互体验。这些架构通过分离数据、界面和逻辑,适应了从桌面应用到现代Web开发的演进需求,其核心思想仍是当前软件设计的重要准则。
2025-07-07 00:48:55
669
原创 客户机/服务器 (Client/Server) 模式
客户机/服务器模式(C/S)是信息系统中的核心架构,主要包括两层和三层结构。两层C/S由客户端直接连接数据库服务器,适合局域网环境但维护成本高、安全性低;三层C/S引入业务逻辑层,实现职责分离,提升可维护性和安全性,适用于金融、ERP等复杂系统。B/S架构作为三层C/S的典型应用,通过浏览器与Web服务器交互,降低了客户端维护成本。尽管现代技术趋向微服务,但C/S架构在高性能、高安全场景仍具优势。开发中需根据系统规模、安全需求选择合适的架构模式。
2025-07-06 15:56:53
795
原创 C2架构风格
C2架构风格是一种基于组件和消息传递的层次化架构模式,强调松耦合和可扩展性。其核心元素包括组件(实现独立功能)、连接器(消息路由中介)和消息(异步事件或通知)。组件间通过连接器进行严格层级通信,禁止直接连接。典型交互流程遵循请求自上而下、响应自下而上的规则,支持事件驱动模型。C2架构的优势在于松耦合、高内聚、易扩展和动态演化,特别适合GUI系统和分布式应用,但存在性能开销和调试复杂度等挑战。通过智能家居控制系统的Python案例,展示了C2架构在分层组件间的请求/通知消息交互流程。
2025-07-05 21:58:56
693
原创 闭环控制架构
闭环控制架构是一种通过反馈回路实现系统自我调节的软件架构风格。其核心组件包括设定值、传感器、控制器、执行器和被控对象,通过"输入→控制→执行→反馈"的闭环流程实现精准调控。主要采用PID控制器等算法,具有稳定性强、精度高、自适应等优势,但也面临设计复杂、调试困难等挑战。典型应用包括工业自动化、汽车电子、医疗设备等领域。案例展示了智能水温系统通过PID算法实现±0.5℃的精准控温,以及微服务流量调控等实际应用场景。这种架构特别适合需要抗干扰和高精度的动态环境控制系统。
2025-07-05 16:53:44
662
原创 调用/返回体系结构风格
调用/返回体系结构风格是一种分治策略,通过分解系统为子程序降低复杂度。主要包括主程序/子程序、面向对象、层次型和客户端/服务器四种风格。主程序/子程序风格采用单线程控制,通过层级调用实现模块化;面向对象风格将数据与操作封装为对象,通过消息传递交互。两种风格各有优势:主程序/子程序结构清晰但扩展性差,面向对象复用性强但复杂度高。该架构适用于流程明确的系统,其模块化特性提高了代码可维护性,是结构化编程和现代面向对象设计的基础范式。(149字)
2025-06-29 16:29:58
492
原创 虚拟机架构风格
虚拟机架构风格通过构建人工运行环境来解析和执行自定义语言,提供灵活性和跨平台兼容性,主要包括解释器和规则系统两种风格。解释器风格通过词法分析、语法分析和解释执行三个阶段处理自定义脚本或DSL,适用于动态逻辑调整和领域特定需求,但存在性能开销和实现复杂度高的缺点。规则系统风格以声明式规则实现业务与技术解耦,支持动态更新和可解释性,广泛应用于金融风控、医疗诊断等场景,但面临规则链复杂度和调试困难等挑战。两种风格都强调将业务逻辑从代码中分离,通过运行时解析实现系统行为的灵活调整,适用于需要快速迭代和动态策略的场景
2025-06-21 23:17:57
571
原创 数据流架构风格
数据流架构风格是一种以数据驱动为核心的计算机体系结构,主要包括批处理和管道-过滤器两种风格。批处理风格强调非交互式、高吞吐量的批量数据处理,适用于财务报表生成、日志分析等场景,具有高吞吐量但延迟较高的特点。管道-过滤器风格通过模块化的过滤器和管道实现数据流的单向处理,适用于编译器、日志处理等场景,具有模块化、可并行等优势,但也存在交互复杂、性能开销等问题。两种风格分别适用于不同的数据处理需求,批处理适合离线大批量任务,而管道-过滤器更适合实时流式处理。
2025-06-21 15:24:11
499
原创 Vue2中使用事件总线
在Vue2中事件总线作为一种轻量级的解决方案(不增加额外依赖,直接使用Vue内置功能)可以实现跨组件通信,具有简单易用、灵活性强(可以传递任何类型的数据、支持一对多的通信模式)和实时性(事件触发后立即通知所有监听者)特点。在Vue3中已删除$on、$off和$once方法,这些方法主要用于 Vue 2.x 中基于 Options API 的事件监听。推荐使用mitt,mitt是一个轻量级的事件库,适用于全局事件通信。
2025-06-17 14:22:08
661
原创 以数据为中心的架构风格
本文介绍了以数据为中心的三种体系结构风格:仓库风格、超文本风格和黑板风格。仓库风格采用中央数据存储和独立构件协作的模式,适用于数据集中管理场景;超文本风格通过非线性链接组织信息,适合灵活的信息检索;黑板风格则通过共享数据空间和知识源协作解决复杂问题。文章详细分析了各风格的核心组成、优势挑战及典型应用场景,并通过代码编辑器、语音识别等案例说明实现方式。最后对比了黑板和仓库架构在控制方式、数据处理等方面的差异,为不同场景下的架构选型提供参考。
2025-06-16 09:17:14
556
原创 软件架构风格
摘要:本文探讨了信息系统架构与系统架构的关系,指出架构设计通常更侧重软件部分。系统架构作为系统的整体结构,包含组件、连接件和约束规范,是开发过程中的关键环节。文章详细介绍了五种主要架构风格:数据流风格(批处理、管道-过滤器)、调用/返回风格(主程序/子程序、面向对象、分层、客户端/服务器)、虚拟机风格(解释器、规则系统)。每种风格通过特定组件和连接方式解决不同系统需求,如数据驱动、模块化或虚拟执行环境,为系统设计提供结构化方法。架构设计直接影响系统的健壮性和扩展性。
2025-06-15 14:00:46
551
原创 独立构件架构风格
独立构件风格摘要 独立构件风格通过将系统分解为松耦合的独立单元来提升灵活性和可维护性。主要包括两种子风格: 进程通信风格:通过明确定义的IPC机制实现进程间交互,特点包括独立进程、显式通信和并发处理。适用于微服务、分布式系统等场景,具有跨平台、模块化优势,但面临通信延迟和调试复杂度挑战。 事件驱动风格:以事件为媒介实现组件间异步通信,核心要素包括事件生产者、消费者和通道。具有松耦合、实时响应等优势,典型应用于电商订单系统等需要快速响应的场景,但需处理事件流复杂性问题。 两种风格对比显示:事件驱动侧重业务语义
2025-06-14 15:21:24
526
原创 在.Net6中用gdal实现第一个功能
2)GDAL.Native 包:这是 GDAL 的本地(Native)包,它包含了 GDAL 的本地二进制文件,用于与底层操作系统进行交互。3)GDAL.Plugins 包:这是 GDAL 的插件(Plugins)包,它包含了一些额外的插件文件,用于提供对某些特定数据格式或功能的支持。1)GDAL 包:这是 GDAL(Geospatial Data Abstraction Library)的主要包,它提供了访问和处理各种地理空间数据格式的功能。GDAL 包包含了 GDAL 的核心库以及相关的文件和资源。
2024-03-29 18:00:47
1535
1
原创 含内环图形在OpenLayers中展示时空洞被填充
在一次arcgis中图形转到OpenLayers中展示时,发先含有空洞的一个面在展示时,有部分空洞被自动填充了。对于Polygon有一个以上的环,第一个必须是外环,其他的必须是内环。外环与表面形成边界,内环(如果存在)与表面形成边界孔。可见就是环顺序导致的前端展示错误,于是就想着调整环顺序解决。可见右侧空洞被填充了,明显不太合理。于是去百度了下,得知。
2023-04-06 18:59:31
790
原创 PostGIS中常用函数整理记录
本文介绍了PostGIS中常用的地理空间数据标准与函数。主要内容包括: OGC标准格式: WKT(文本描述几何对象) WKB(二进制表示) GML(基于XML的地理标记语言) KML(可视化地理数据) SRID(坐标系标识) WKT几何对象类型:点、线、面、多点、多线、多面和几何集合等基本结构。 常用PostGIS函数: 构造函数:ST_GeomFromText、ST_MakePoint等用于从各种格式创建几何对象 输出函数:ST_AsText、ST_AsGeoJSON等将几何对象转换为不同格式 版本控制函
2022-12-25 18:49:50
4328
转载 PostgreSQL中的表复制
PostgreSQL提供了两种方式用来进行表复制:1、create table as2、create table like数据准备创建含有序列、主键、注释、CHECK约束的tmp表用于后续测试:create table tmp( id SERIAL, name VARCHAR(100) primary key, num int CHECK(10<num and num<100));comment on column tmp.id is '标识码';comment on co
2022-05-20 17:49:09
8411
1
原创 利用Arcpy批量图斑生成图片
批量生成图片任务需求环境与数据准备代码实现运行结果任务需求实际作业中,往往需要导出一些经典的案例图斑用作参考。而能称之为经典的图斑大部分都会来源于多个不同的数据源中。接下来就实现跨数据源导出指定图斑图片:环境与数据准备1、arcgis10.2.22、准备一份数据源,此处使用GDB作为数据源。3、准备提供地图要素参考信息的地图文档.mxd文件,可以在里面设置图斑信息。代码实现# encoding:utf-8import os.pathimport arcpyimport sysimp
2022-05-10 16:18:43
1669
原创 PostgreSQL自定义函数
PostgreSQL自定义函数函数语法实例动态执行语句话不多说,下面直接拿实例说话。函数语法CREATE [OR REPLACE] FUNCTION function_name (arguments)RETURNS return_datatype AS $variable_name$ DECLARE declaration; [...] BEGIN < function_body > [...] RETURN {
2022-04-27 14:24:10
11259
原创 PostgreSQL中pg_class中查不到但显示已存在
在创建表时出现错误:> 错误: 类型 "test" 已经存在HINT: 关系和与它相关联的类型名称相同,所以不能使用与任何已存在类型名称相冲突的名称.。解决方式:第一步:既然它提示数据类型名称有相同。那就去查询pg库中存储数据类型有关的表pg_type。select * from pg_type where typname='test';一查果然存在数据,直接delete删除它就可以了:delete from pg_type where typname='test';..
2022-04-19 16:59:33
1405
原创 PostgreSQL中系统表
postgreSQL接触了也好久了,一直对他处于一知半解状态。趁着最近有时间,就开始慢慢整理一下。下面先整理了postgreSQL的一些系统表相关东西,也就是当个笔记,方便以后快速查找。show data_directory;-- 查询配置文件所在位置show config_file; -- 查询数据储存目录系统表 :1)pg_authid表:包含有关数据库认证标识符(角色)的信息。一个角色体现"用户"和"组"的概念。一个用户实际上只是一个设置了 rolcanlogin 标志的...
2022-04-07 17:30:06
9346
原创 WPF在某些控件中屏蔽快捷键
在程序应用中,往往会使用某些快捷键来提升用户的使用体验。比如设置快捷键Y进行界面跳转。那么实际应用中问题是,某个界面有文本框TextBox,已设置快捷键的前提下,在文本框键入Y,会优先触发快捷键事件,且文本框不会添加Y值。 那么需求就变成了,在该界面有快捷键Y,且做文本框输入操作时不启用快捷键。利用CanExecute事件就可以了。当焦点在TextBox时,取消快捷键执行。代码如下:private void CommandBinding_CanExecute(obje...
2021-12-18 11:42:43
1285
原创 PostgreSQL函数——时间函数
时间类型timestamp:时间戳格式为1997-01-01 00:00:00,January 8 04:05:06 1999 PSTdate:日期有1997-01-01,19970101,1/1/1997,Jan-1-1997等多种格式time:时间有12:00:00,120000,12:00,8:00 AM,8:00 PM等格式interval:时间间隔格式为 1 year 2 months 3 days 4 hours 5 minutes 6 seconds缩写含义
2021-08-05 16:22:14
16050
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅