创建型——工厂系列(Factory)day04

多维聚合中的数据变形术:从脏数据到可信指标的七道关卡 多维聚合不是简单的GROUP BY操作,而是面向企业级分析的数据治理核心环节。其本质是围绕维度建模、时间粒度对齐、度量值校验等关键技术,解决脏数据清洗、指标口径不一致、聚合结果失真等高频痛点。在电商、SaaS、制造业等典型场景中,原始数据需经原子清洗、维度对齐、时间锚定、度量校验、预聚合、口径固化、一致性快照七道工序,才能输出可信赖的业务指标。其中,维度对齐保障‘上海’与‘Shanghai’被识别为同一实体,时间粒度锚定确保‘2024-Q2’在跨时区系统中语义统一——这些正是支撑BI响应<1.5秒、跨部门指 阅读详情
  • 任何可以产生对象的方法或类,都可以称为工厂
  • 单例也是一种工厂
  • 为什么有了new以后,还要有工厂?
    1、灵活控制生产过程
    2、权限、修饰、日志……

接口模式

在这里插入图片描述

package cn.xhl.interfacemodel;

public interface IFruit {
	public void plant();
	public void harvest();
	public void grow();
}
package cn.xhl.interfacemodel;

public class Apple implements IFruit {
	int treeAge = 5;
	public void plant() {
		// TODO Auto-generated method stub
		log("苹果种植ֲ********");
	}

	public void harvest() {
		// TODO Auto-generated method stub
		log("苹果收获******");
	}
	public void grow() {
		// TODO Auto-generated method stub
		log("苹果增长****");
	}
	public static void log(String msg) {
		System.out.println(msg);
	}

}
package cn.xhl.interfacemodel;

public class Grape implements IFruit {
	boolean seedful=false;
	public void plant() {
		// TODO Auto-generated method stub
		log("葡萄种植ֲ********");
	}

	public void harvest() {
		// TODO Auto-generated method stub
		log("葡萄收获******");
	}
	public void grow() {
		// TODO Auto-generated method stub
		log("葡萄生长****");
	}
	public static void log(String msg) {
		System.out.println(msg);
	}

}
package cn.xhl.interfacemodel;

public class Strawberry implements IFruit {

	public void plant() {
		// TODO Auto-generated method stub
		log("草莓种植********");
	}

	public void harvest() {
		// TODO Auto-generated method stub
		log("草莓收获******");
	}
	public void grow() {
		// TODO Auto-generated method stub
		log("草莓生长****");
	}
	public static void log(String msg) {
		System.out.println(msg);
	}

}
package cn.xhl.interfacemodel;

public class Client1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		IFruit[] fruits = {new Grape(),new Strawberry(),new Apple()};
		for(IFruit fruit : fruits) {
			fruit .plant();
			fruit.grow();
			fruit .harvest();
		}
	}

}

简单工厂模式

在这里插入图片描述
一般情况下我们可以用一个FruitFactory去创建不同的Fruit

public class FruitFactory{
	public IFruit creatApple(){
		//进行一些前置操作,例如设置权限、进行修饰、打印日志……
		return new Apple();
	}
	public IFruit creatGrape(){return new Grape();}
	public IFruit creatStrawberry(){return new Strawberry();}
}

但是这不符合开闭原则,每次新增一个品种的IFruit都需要对Factory进行改动。

我们可以对简单工厂模式进行改进,让它符合开闭原则。

package cn.xhl.simpleFactory;

public class FruitGardent {
	public static IFruit factory(String which) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
		IFruit fruit = null;
		String pn = FruitGardent.class.getPackage().getName();
		StringBuilder sb = new StringBuilder();
		sb.append(pn);
		sb.append(".");
		sb.append(Character.toUpperCase(which.charAt(0)));
		sb.append(which.substring(1).toLowerCase());
		fruit = (IFruit) Class.forName(sb.toString()).newInstance();
		return fruit;
	}
}

package cn.xhl.simpleFactory;

public class Client1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] strs = {"grape","apple","strawberry"};
		for(String str : strs) {
			IFruit fruit;
			try {
				fruit = FruitGardent.factory(str);
				fruit.plant();
				fruit.harvest();
			} catch (InstantiationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

但是这有产生了新的问题,如果对不同的产品对应需要给到不同的权限,也就是在new之前需要进行一些前置操作,且不同的IFruit操作不一样,这样就需要在前面加上判断的语句,判断这是什么IFruit,再进行一些权限设置,最后再创建对象,但这又不符合开闭原则了。

于是我们可以对每一个产品,也就是每一个IFruit都用一个Factory,这样就引出了工厂方法模式。

工厂方法模式

工厂方法方便产品的扩展
在这里插入图片描述

package factory1;

public class Client1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] strs = {"ConcreateCreator1","ConcreateCreator2"};
		for (String str : strs) {
			try {
				Creator creator = CreatFactory.factory(str);
				creator.factory().show();
			} catch (InstantiationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}
package factory1;

public class CreatFactory {
	public static Creator factory(String which) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
		Creator creator = null;
		
		
		StringBuilder sb = new StringBuilder();
		sb.append(CreatFactory.class.getPackageName());
		sb.append(".");
		sb.append(which);
		creator = (Creator) Class.forName(sb.toString()).newInstance();
		return creator;
	}
}
package factory1;

public interface Creator {
	public Product factory();
}
package factory1;

public class ConcreateCreator1 implements Creator {

	@Override
	public Product factory() {
		// 可以进行一些前置操作,例如设置权限、进行修饰、打印日志……
		return new ConcreateProduct1();
	}

}

package factory1;

public class ConcreateCreator2 implements Creator {

	@Override
	public Product factory() {
		// TODO Auto-generated method stub
		return new ConcreateProduct2();
	}

}

package factory1;

public interface Product {
	public void show();

}
package factory1;

public class ConcreateProduct1 implements Product {

	@Override
	public void show() {
		// TODO Auto-generated method stub
		System.out.println("This is Product1111 show");
	}

}
package factory1;

public class ConcreateProduct2 implements Product {

	@Override
	public void show() {
		// TODO Auto-generated method stub
		System.out.println("This is Product2222 show");
	}

}

抽象工厂模式

抽象工厂在于产品族的扩展
工厂方法是只有一种产品族的抽象工厂
在这里插入图片描述

package abstractFactory;

public interface Shape {
	public void draw();
}
package abstractFactory;

public class Circle implements Shape {

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("画一个圆");
	}

}
package abstractFactory;

public class Rectangle implements Shape {

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("画一个矩形");
	}

}

package abstractFactory;

public class Square implements Shape {

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("画一个正方形");
	}

}
package abstractFactory;

public interface Color {
	public void draw();
}

package abstractFactory;

public class Bule implements Color {

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("涂蓝色");
	}

}
package abstractFactory;

public class Green implements Color {

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("涂绿色");
	}

}

package abstractFactory;

public class Red implements Color {

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("涂红色");
	}

}
package abstractFactory;

public class ShapeFactory implements AbstractFactory {

	@Override
	public Color getColor(String color) {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public Shape getShape(String shape) {
		// TODO Auto-generated method stub
		Shape sh=null;
		String pn = ShapeFactory.class.getPackageName();
		StringBuilder sb = new StringBuilder();
		sb.append(pn);
		sb.append(".");
		sb.append(Character.toUpperCase(shape.charAt(0)));
		sb.append(shape.substring(1).toLowerCase());
		try {
			sh=(Shape) Class.forName(sb.toString()).newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return sh;
	}
}

package abstractFactory;

public class ColorFactory implements AbstractFactory {
	public Color getColor(String color) {
		Color cl=null;
		String pn = ColorFactory.class.getPackageName();
		StringBuilder sb = new StringBuilder();
		sb.append(pn);
		sb.append(".");
		sb.append(Character.toUpperCase(color.charAt(0)));
		sb.append(color.substring(1).toLowerCase());
		try {
			cl=(Color) Class.forName(sb.toString()).newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return cl;
	}

	@Override
	public Shape getShape(String shape) {
		// TODO Auto-generated method stub
		return null;
	}
}

package abstractFactory;

public interface AbstractFactory {
	public Shape getShape(String shape);
	public Color getColor(String color);
}

package abstractFactory;

public class FactoryProducer {
	public static AbstractFactory getFactory(String which) {
		AbstractFactory af=null;
		String pn = FactoryProducer.class.getPackageName();
		StringBuilder sb = new StringBuilder();
		sb.append(pn);
		sb.append(".");
		sb.append(which);
		try {
			af = (AbstractFactory) Class.forName(sb.toString()).newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return af;
	}
}

package abstractFactory;

public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] shapes = {"circle","square","RECTANGLE"};
		String[] colors = {"bule","red","GREEN"};
		String[] factory = {"ShapeFactory","ColorFactory"};
		for(String f : factory) {
			AbstractFactory af = FactoryProducer.getFactory(f);
			for(String c : colors) {
				if(af.getColor(c)!=null) {
					af.getColor(c).draw();
				}
			}
			for(String s : shapes) {
				if(af.getShape(s)!=null) {
					af.getShape(s).draw();
				}
			}
		}
	}

}

总结

  • 简单工厂:把对象的创建放到一个工厂类中,通过参数来创建不同的对象。这个缺点是每添一个对象,就需要对简单工厂进行修改(尽管不是删代码,仅仅是添一个switch case,但仍然违背了“开闭”原则。
  • 工厂方法:每种产品由一种工厂来创建,是将创建对象的逻辑与任务交给工厂类,如果增加一个具体的产品,不用像简单工厂方法那样修改里面的代码,可以直接扩展,遵循 “开闭”原则
  • 抽象工厂:是工厂方法模式的进一步推广化和抽象化,扩充和升级,在抽象工厂模式中抽象产品可能是一个或者多个,从而构成了一个或多个产品族,只有一个产品族的抽象工厂模式就是工厂方法模式,一般是大项目用。
Gurobi实战指南:用数学优化解决产线排程、仓配调度与库存决策 数学优化是将复杂业务约束转化为可计算决策模型的核心技术,其原理基于线性规划(LP)、混合整数规划(MIP)等运筹学方法,通过目标函数与约束条件的精确建模,实现资源分配的全局最优。该技术的价值在于突破经验决策瓶颈,提供可验证、可复现、可审计的确定性答案,在制造排程、智能仓配、动态库存控制等高频工业场景中显著提升效率与合规性。本文聚焦Gurobi这一工业级求解器,结合产线切换降本、千点路由优化、多级仓网建模等真实案例,系统解析声明式建模、Matrix API向量化、热启动加速等关键能力。 阅读详情

相关推荐

从压电传感器到示波器:手把手教你用CA3140搭建电荷放大器(含PCB布局与调零技巧)

本文详细介绍了如何使用CA3140运算放大器搭建专业级电荷放大器,从压电传感器信号特性分析到PCB布局与调零技巧,全程实战演示。重点解析了CA3140的低通滤波器设计、反馈网络参数计算及抗干扰增强方案,帮助电子爱好者高效实现微弱电荷信号的稳定转换与测量。

weixin_31355483的博客 597

AI智能体开发路线图:目标驱动的个性化成长路径

AI智能体不是调用API的工具组合,而是一种以业务目标为起点、能力短板为刻度、可验证结果为终点的系统性工程实践。其核心原理在于将模糊需求转化为量化任务——通过目标颗粒度界定、四维能力定位(领域知识、工程能力、数据获取、验证机制),构建具备弹性缓冲与熔断机制的执行路径。技术价值体现在规避‘看教程秒懂、自己写全懵’的认知断层,支撑运营、外贸、教育等垂直场景中轻量级、高确定性的智能体落地。本文聚焦从0到1绘制专属路线图的方法论,涵盖A4纸三栏九宫格规划、记忆与工具模块的务实选型,以及LangChain等框架的阶段

weixin_34025051的博客 492

Win本地部署DeepSeek

Ollama 提供了简单的接口,用于创建、运行和管理这些模型,同时还维护了一个丰富的预构建模型库,可以轻松集成到各种应用程序中。重启ollama,具体操作为打开搜索ollama进程,将其结束进程,之后再执行相关模型下载命令即可,或重启电脑!Ollama支持多种DeepSeek模型版本,用户可以根据硬件配置选择合适的模型。配置添加系统环境变量OLLAMA_MODELS,设置其值为新的路径,点击确定应用。安装完成后,在终端输入以下命令,检查Ollama版本。:14B、32B或70B版本,适合高端GPU。

m0_67297673的博客 2387

多维聚合中的数据变形:结构、粒度与语义三重安全控制

多维聚合不是简单的GROUP BY或PIVOT操作,而是涉及数据结构重塑、聚合粒度控制和维度语义一致性的系统工程。其底层原理在于列式存储优化I/O路径、分组计算改变内存布局、维度层级影响下钻能力;技术价值体现在规避维度爆炸、保障指标可复现性、支撑实时OLAP分析;典型应用场景包括零售销售分析、IoT时序聚合、金融风控宽表构建及BI自助报表生成。本文聚焦Data Manipulation in Multi-Dimensional Aggregation这一核心过程,深入解析Pandas、SQL与Arrow等工

diche7031的博客 371

深信服防火墙路由模式开局部署-手把手教学(小白篇)

手把手教学,拿到深信服的防火墙路由模式该如何开局?

m0_64423407的博客 2万+

SAP 采购申请、采购订单的审批策略

采购申请、采购订单的审批策略 采购申请审批 PR审批可以分为:含分类、无分类 1、无分类PR审批: A、后台配置: 设置批准代码(批准代码可以设置多级审批): 发布批准标识使用系统已有的 “2 询价/采购订单”: 新建采购申请审批策略Z1(仅设置1级审批,一共可以设置8级审......

willieyuan的博客 2万+

创建模式之工厂、工厂方法、抽象工厂与建造者

      序:上一篇博文关于模式中粗略的谈了下何谓模式、模式的要素、理解模式的核心关注点以及在java中使用模式常涉及到的抽象类与接口异同问题,在接下来的篇章里将陆续介绍GOF 23的模式。由于博文仅倾向于模式的理解与相似模式间关系,所以,博文可能会以某类模式一起论述的形式出现。这些主要是个人回顾性的总结,具有较强的随意性,必定存在论述上的不周或过于累赘,还望朋友们海涵指正。       我们...

zhangfenglin的专栏 340

Windows 11 安装 JDK 11:下载、安装、配置环境变量、验证

本文详细介绍了在 Windows 11 系统中安装 JDK 11 的完整流程,包括从 Oracle 官网下载压缩包、解压到自定义目录、配置 JAVA_HOME 与 Path 环境变量,并验证安装是否成功。文章还包含一个专为 JDK 11 新特性设计的测试程序,涵盖 Lambda 表达式 var 语法、HTTP 客户端 API、字符串增强方法等,帮助读者确认安装版本正确无误,适合初学者和需要多版本 JDK 共存的开发者参考。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2778

Day 19二维数组,单列模式,工厂模式

二维数组,单例模式,工厂模式

supzyh的博客 160

AI工具 | 每个打工人必备的15款人工智能超级工具

不过,还是有一些靠谱的人工智能平台,它们可不只是营销噱头。有些AI公司正试图改变游戏规则。人工智能工具让人们能够更聪明地工作,而不是更辛苦地劳作。如果你想知道未来有什么,那就来看看这10款人工智能工具吧,它们将彻底改变我们的工作方式。

Vampire_2017的博客 5万+

用 SAP CDS View 和 Fiori Elements 快速打造 CRM Service Order 应用──十分钟跑通从数据模型到上线的全流程

通过CDS 视图 + Fiori Elements的组合,我们得以在极短时间内把传统 CRM Service Order 场景迁移到现代化的 Fiori 界面,而且代码量极小、可维护性高。若后续需要离线能力,可考虑将同一 OData 服务暴露给 Mobile Services,再配合 MDK 或 UI5 Mobile Toolkit;若要支持复杂审批流,则可以在同一 Launchpad 内嵌入 Process Visibility Dashboard,实现端到端可视化。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 390

Spring --04.Spring生成Bean的三种方式

1、无参构造方法 图中就使用了无参构造实例化对象   2、静态工厂实例化方式 通过调用工厂类的静态方法来生成bean AddrDao.java接口 package com.day01.dao; /** * @ Author :ShaoWei Sun. * @ Date :Created in 10:01 2018/11/8 */ public inte...

一叶知秋 705

拼多多小球直径轨迹重合验证码识别

本文分析了拼多多新型验证码的实现原理与破解思路。该验证码采用Canvas绘制小球弹跳轨迹验证,主要难点在于参数还原和轨迹计算。作者通过逆向工程提取了包括弹跳段数、振幅、旋转参数等关键配置(存储在config.json),并利用Python成功模拟了验证过程。核心算法将滑块值映射为0-1区间,通过三次变换计算小球位置,最终采用斜率截距最小值比对完成验证。整个过程分为静态初始化、核心计算和动态渲染三个阶段,其中干扰元素不影响核心验证逻辑。该研究仅用于技术学习,强调严禁任何违法行为。

码王吴彦祖的博客 1329

JavaSE学习day25(多线程(下)&GUI)

###25.01_多线程(单例设计模式)(掌握) 单例设计模式:保证类在内存中只有一个对象。 如何保证类在内存中只有一个对象呢? (1)控制类的创建,不让其他类来创建本类的对象。private (2)在本类中定义一个本类的对象。Singleton s; (3)提供公共的访问方式。 public static Singleton getInstance(){return s} ...

weixin_42135811的博客 277

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

每周小记——Spring框架

本文解析了Spring框架的四大核心机制:工厂模式通过BeanFactory和ApplicationContext实现Bean生命周期管理,奠定IoC容器基础;控制反转与依赖注入将对象创建权移交容器,通过配置解耦组件,提升系统灵活性;面向切面编程基于代理模式(静态/JDK动态/CGLIB)实现横切关注点(如日志、事务)与业务逻辑分离,并总结了五种通知类型及其配置方法。文章系统阐述了Spring如何通过设计模式优化Java企业级开发,强化代码可维护性与模块化,凸显其在现代架构中的关键作用

weixin_57655687的博客 1553

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

23个设计模式一文搞懂

本笔记涵盖 23 种经典设计模式,按创建型、结构型、行为型三大类整理。每个模式配有生活类比、核心思想、结构图解、实现要点、真实应用案例、适用场景、优缺点分析及常见面试题。

weixin_72753562的博客 802

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Hibernate笔记辅助代码

本博客为此篇博客的辅助博客,就是一些自己写的demo代码部分 目录 day03 工具类HibernateUtils(Main方法就可以帮助生成表结构) 简单配置和一对多 customer.java Linkman.java hibernate.cfg.xml Customer.hbm.xml Linkman.hbm.xml ★Demo1.java 多对多 User.java...

树叶子的博客 474

Claude Code与Ollama混合编程环境搭建:平衡效率与自主权

在AI辅助编程领域,大型语言模型(LLM)正通过API服务和本地部署两种模式重塑开发工作流。其核心原理在于模型权重的高效推理与上下文理解,技术价值体现在显著提升代码生成、解释和重构的效率。应用场景广泛覆盖日常开发、学习新技术以及处理敏感代码任务。本文聚焦于如何将Claude Code的云端强大能力与Ollama本地开源模型生态相结合,构建兼顾效率与数据主权的混合AI编程环境,并深入探讨了Claude Code的IDE深度集成和Ollama的本地化部署优势,为开发者提供了一套可落地的解决方案。

weixin_34294649的博客 397

SAP ABAP日期校验实战:从基础函数到BAPI/IDOC集成的完整解决方案

在企业级应用开发中,数据校验是确保系统稳定性和数据完整性的基础环节,其核心原理在于通过预定义的规则对输入数据进行过滤与验证,防止非法数据进入核心业务流程。日期作为关键的业务时间维度,其合法性校验尤为重要,直接关系到物料需求计划、财务过账、生产排程等核心业务功能的正确性。在SAP ABAP开发领域,标准函数DATE_CHECK_PLAUSIBILITY提供了包括工厂日历在内的全面校验能力,是构建健壮程序的基石。对于来自Excel导入、外部接口或用户手工录入等复杂场景的非标准日期数据,开发者需要掌握数据清洗、格

diaoju3333的博客 519

5分钟搞定通达信数据获取:用Python的mootdx从零拉取A股K线

如果你正准备用 Python 写点股票分析的小工具,十有八九会卡在第一步:数据从哪来?免费的行情接口动不动失效,付费的又贵又复杂,好不容易找到个开源库,文档却比毕业论文还难啃。**mootdx 就是为这个痛点而生的通达信数据读取封装库**——它把"实时行情、历史 K 线、离线本地文件、财务数据"全部收敛成几行直观的代码,让你把精力留给真正的分析,而不是跟数据源搏斗。 ## 阿明的困境:写回测,先

gitblog_00073的博客 168

如何替换游戏里的 DLSS 版本:免费开源 DLSS Swapper 实操指南(三步完成)

远景发虚像蒙了层雾,或者开了 DLSS 帧数不涨反而冒伪影——多半是游戏目录里的 DLL(负责超分的动态链接库文件)还停在旧版本。DLSS Swapper 就是一款免费开源的替换 DLSS 版本工具,让你不等游戏更新,直接换上新的 DLL,也能降级回旧版。 [![DLSS Swapper 游戏库扫描界面,游戏卡片上显示当前 DLSS 版本号](https://raw.gitcode.com/Gi

gitblog_00653的博客 743

工作学习笔记

Customer客户Potential潜在Service服务auth 授权delegate 代表convert 转换tool 工具cache 高速缓存Thread线程Pool池。

qq_49158620的博客 421

从Jupyter到产线:PyTorch模型服务化实战(Triton+FastAPI+边缘部署)

模型服务化是将训练完成的机器学习模型转化为稳定、可观测、可维护的生产级API的关键过程。其核心在于解耦模型计算、协议交互与业务逻辑,避免Flask+Pickle等通用方案带来的环境耦合、语义模糊与运维失控。通过Triton Inference Server实现跨平台推理与硬件抽象,结合OpenAPI契约层保障接口稳定性,并以FastAPI构建具备鉴权、限流与业务规则的智能网关,可显著提升模型上线效率与SLA可靠性。该路径广泛适用于工业质检、金融风控、智能硬件等对延迟、鲁棒性与合规性要求严苛的场景,尤其在Je

404

python造数据的库faker

python中造数据的库——faker faker是一个Python包,为您生成你所需要的任何(假)数据。 1. 安装 pip install Faker 2. 语法 I. 引用 from faker import Faker from faker import Factory #引入工厂类 II. 创建初始化生成器 fake = Faker() 可以在初始化时设置本地化,即是设定区域,如下...

梧桐凰的博客 2020

多维聚合实战:从SQL GROUP BY到OLAP立方体的工程化落地

多维聚合是现代数据分析的核心能力,本质是通过维度建模与度量计算,在保留数据颗粒度的前提下实现灵活切片、钻取与交叉分析。其技术原理根植于OLAP立方体模型,依赖维度层级、事实表和可加性度量的协同设计。相比传统SQL的GROUP BY单向降维,多维聚合支持动态探查与实时响应,显著提升BI自助分析效率与决策敏捷性。在电商漏斗归因、IoT设备健康预警、财务成本分摊等典型场景中,它既保障分析深度,又兼顾性能与合规。本文聚焦多维聚合的数据操作实践,涵盖维度建模、SQL高级聚合(CUBE/ROLLUP)、Pandas与P

diegouyi3472的博客 357

Python数据可视化:Matplotlib核心技巧与实战应用

数据可视化是数据分析的关键环节,通过图形化展示能更直观地理解数据特征与规律。Matplotlib作为Python生态中最经典的可视化库,采用三层架构设计,从简单的pyplot脚本接口到Artist对象系统,再到可扩展的后端渲染层,为不同层次的用户提供灵活选择。其核心价值在于平衡了易用性与定制能力,既能快速生成基础图表,也能实现出版级复杂可视化效果。在工程实践中,Matplotlib广泛应用于科学计算、商业分析、机器学习等领域,特别适合需要精确控制图形属性的场景。结合Pandas数据处理和Seaborn统计可

congran6617的博客 504
上一篇: 两个链表的第一个公共节点
下一篇: 栈(Stack)day04
哆唻咪à
博客等级 码龄9年 0粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值