Java设计模式 02-工厂模式
工厂模式
一、简单(静态)工厂模式
1、看一个具体的需求
看一个披萨的项目:要便于披萨种类的扩展,要便于维护
- 披萨的种类很多(比如 GreekPizz、CheesePizz 等)
- 披萨的制作有 prepare,bake, cut, box
- 完成披萨店订购功能。
2、使用传统的方式来完成
1) 思路分析(类图)
编写 OrderPizza.java 去订购需要的各种 Pizza
2) 代码演示
public class OrderPizza {//构造器public OrderPizza() {Pizza pizza = null;String orderType; // 订购披萨的类型do {orderType = getType();if (orderType.equals("greek")) {pizza = new GreekPizza();pizza.setName(" 希腊披萨 ");} else if (orderType.equals("cheese")) { pizza = new CheesePizza();pizza.setName(" 奶酪披萨 ");} else if (orderType.equals("pepper")) {pizza = new PepperPizza();pizza.setName("胡椒披萨");} else {break;}//输出 pizza 制作过程pizza.prepare();pizza.bake();pizza.cut();pizza.box();} while (true);}
3、传统的方式的优缺点
- 优点是比较
好理解
,简单易操作
。 - 缺点是违反了设计模式的 ocp 原则,即对
扩展开放,对修改关闭
。即当我们给类增加新功能的时候,尽量不修改代码,或者尽可能少修改代码.
3)比如我们这时要新增加一个 Pizza 的种类**(Pepper** 披萨**)**,我们需要做如下修改. 如果我们增加一个 Pizza 类,只要是订购 Pizza 的代码都需要修改
不利于扩展,下面↓如果加种披萨的种类,那么就要修改全部是OrderPizza类
4)改进的思路分析
分析:
修改代码可以接受,但是如果我们在其它的地方也有创建 Pizza 的代码,就意味着,也需要修改,而创建 Pizza
的代码,往往有多处。
思路:
把创建 Pizza 对象封装到一个类中,这样我们有新的 Pizza 种类时,只需要修改该类就可,其它有创建到 Pizza
对象的代码就不需要修改了--------> 简单工厂模式
4、基本介绍
- 简单工厂模式是属于
创建型模式
,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例
。简单工厂模式是工厂模式家族中最简单实用的模式 - 简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)
3)在软件开发中,当我们会用到大量
的创建某种、某类或者某批对象 时,就会使用到工厂模式.
5、使用简单工厂模式
- 简单工厂模式的设计方案: 定义一个可以实例化 Pizaa 对象的类,封装创建对象的代码。
- 代码演示
- 简单工厂
//简单工厂模式类
public class SimpleFactory {public Pizza createPizza(String pizzaType){Pizza pizza = null;System.out.println("使用简单工厂模式");if (pizzaType.equals("greek")){pizza = new GreekPizza();}else if (pizzaType.equals("cheese")){pizza = new CheesePizza();}return pizza;}
}//预约披萨类
public class OrderPizza {//定义一个简单工厂对象SimpleFactory simpleFactory; Pizza pizza = null;//构造器public OrderPizza(SimpleFactory simpleFactory) { setFactory(simpleFactory);}//设置工厂public void setFactory(SimpleFactory simpleFactory) {String orderType = ""; //用户输入的this.simpleFactory = simpleFactory; //设置简单工厂对象do {orderType = getType();pizza = this.simpleFactory.createPizza(orderType);//输出 pizzaif(pizza != null) { //订购成功pizza.prepare();pizza.bake();pizza.cut();pizza.box();} else {System.out.println(" 订购披萨失败 "); break;}}while(true);
}// 写一个方法,可以获取客户希望订购的披萨种类
private String getType() { try {BufferedReader strin = new BufferedReader(new InputStreamReader(System.in)); System.out.println("input pizza 种类:");String str = strin.readLine();return str;} catch (IOException e) { e.printStackTrace(); return "";}
}
二、工厂方法模式
1、看一个新的需求
披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪 pizza、北京的胡椒 pizza 或者是伦敦的奶酪 pizza、伦敦的胡椒 pizza。
2、 思路 1
使用简单工厂模式,创建不同的简单工厂类,比如 BJPizzaSimpleFactory、LDPizzaSimpleFactory 等等.从当前这个案例来说,也是可以的,但是考虑到项目的规模,以及软件的可维护性、可扩展性并不是特别好
2、思路 2
使用工厂方法模式
3、 工厂方法模式介绍
1) 工厂方法模式设计方案:
将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现。
2) 工厂方法模式:
定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类
。
4、工厂方法模式应用案例
1) 披萨项目新的需求:
客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪 pizza、北京的胡椒 pizza 或者是伦敦的奶酪 pizza、伦敦的胡椒 pizza
2)思路分析图解
3)代码演示
//OrderPizza.java 类
public abstract class OrderPizza {//定义一个抽象方法,createPizza , 让各个工厂子类自己实现abstract Pizza createPizza(String orderType);// 构造器public OrderPizza() { Pizza pizza = null;String orderType; // 订购披萨的类型do {orderType = getType();pizza = createPizza(orderType); //抽象方法,由工厂子类完成//输出 pizza 制作过程pizza.prepare(); pizza.bake();pizza.cut();pizza.box();} while (true);}// 写一个方法,可以获取客户希望订购的披萨种类private String getType() { try {BufferedReader strin = new BufferedReader(new InputStreamReader(System.in)); System.out.println("input pizza 种类:");String str = strin.readLine();return str;} catch (IOException e) { e.printStackTrace(); return "";}}
}public class BJOrderPizza extends OrderPizza {@OverridePizza createPizza(String orderType) {Pizza pizza = null; if(orderType.equals("cheese")) {pizza = new BJCheesePizza();} else if (orderType.equals("pepper")) { pizza = new BJPepperPizza();}}
}public class LDOrderPizza extends OrderPizza {@OverridePizza createPizza(String orderType) {Pizza pizza = null;if(orderType.equals("cheese")) {pizza = new LDCheesePizza();} else if (orderType.equals("pepper")) { pizza = new LDPepperPizza();}}
}
三、抽象工厂模式
1、基本介绍
1)抽象工厂模式:
定义了一个 interface 用于创建相关或有依赖关系的对象簇,而无需指明具体的类
2)抽象工厂模式
可以将简单工厂模式
和工厂方法模式
进行整合
。
3)从设计层面看,抽象工厂模式就是对简单工厂模式的改进
(或者称为进一步的抽象)。
4)将工厂抽象成两层,AbsFactory(*抽象工厂*) 和 具体实现的工厂子类。程序员可以根据创建对象类型使用对应的工厂子类。这样将单个的简单工厂类变成了工厂簇
,更利于代码的维护和扩展。
5)类图
2、抽象工厂模式应用实例
使用抽象工厂模式来完成披萨项目.
//一个抽象工厂模式的抽象层(接口)
public interface AbsFactory {//让下面的工厂子类来 具体实现public Pizza createPizza(String orderType);
}//这是工厂子类
public class BJFactory implements AbsFactory {@Overridepublic Pizza createPizza(String orderType) {System.out.println("~使用的是抽象工厂模式~");Pizza pizza = null; if(orderType.equals("cheese")) {pizza = new BJCheesePizza();} else if (orderType.equals("pepper")){ pizza = new BJPepperPizza();}return pizza;}
}public class LDFactory implements AbsFactory {@Overridepublic Pizza createPizza(String orderType) {System.out.println("~使用的是抽象工厂模式~"); Pizza pizza = null;if (orderType.equals("cheese")) { pizza = new LDCheesePizza();} else if (orderType.equals("pepper")) { pizza = new LDPepperPizza();}return pizza;}
}//OrderPizza.java
public class OrderPizza {AbsFactory factory;// 构造器public OrderPizza(AbsFactory factory) { setFactory(factory);}private void setFactory(AbsFactory factory) { Pizza pizza = null;String orderType = ""; // 用户输入this.factory = factory; do {orderType = getType();// factory 可能是北京的工厂子类,也可能是伦敦的工厂子类pizza = factory.createPizza(orderType); if (pizza != null) { // 订 购 okpizza.prepare();pizza.bake();pizza.cut();pizza.box();} else {System.out.println("订购失败"); break;}} while (true);}// 写一个方法,可以获取客户希望订购的披萨种类private String getType() {try {BufferedReader strin = new BufferedReader(new InputStreamReader(System.in)); System.out.println("input pizza 种类:");String str = strin.readLine();return str;} catch (IOException e) { e.printStackTrace(); return "";}}
}
四、工厂模式小结
- 工厂模式的意义
将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦。从而提高项目的扩展和维护性。
- 三种工厂模式
- (简单工厂模式、工厂方法模式、抽象工厂模式)
- 设计模式的
依赖抽象原则
1、创建对象实例时,不要直接 new 类, 而是把这个 new 类的动作放在一个工厂的方法中,并返回。有的书上说, 变量不要直接持有具体类的引用。
2、不要让类继承具体类,而是继承抽象类或者是实现 interface(接口)
3、不要覆盖基类中已经实现的方法。
相关文章
- 学习HM微博项目第3天
步骤:自定义tabBar -> 版本新特性01-搭载界面 -> 版本新特性02-按钮的使用细节 -> 版本新特性03-新版本判断 自定义tabBar 在前面的学习中,系统自带的tabBar是这样的: 由于某个需求,需要在tabBar的中间加上一个发送微博…...
2023/3/28 15:53:47 - 中国象棋隐私政策
1. 适用范围 (a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息; (b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的IP地址、浏览…...
2023/3/28 15:52:33 - HashMap何时会链表转红黑树
目录什么时候才会转换为红黑树?为什么要转换为红黑树?为什么不一开始就用红黑树,反而要经历一个转换的过程呢?从链表转化为红黑树的阈值为什么是8?什么时候才会转换为红黑树? 当Map链表长度大于或等于阈值…...
2023/3/28 15:52:20 - Scala的数组,元组,列表,集,映射(Map),迭代器(iterator)
文章目录1. 数组1.1 概述1.2 定长数组1.2.1 特点1.2.2 语法1.2.3 示例1.3 变长数组1.3.1 特点1.3.2 语法1.3.3 示例一: 定义变长数组1.3.4 示例二: 增删改元素1.4 遍历数组1.5 数组常用算法2. 元组2.1 格式2.2 示例2.3 访问元组中的元素3. 列表3.1 不可变列表3.1.1 特点3.1.2 语…...
2023/3/28 15:52:10 - NLP 开源形近字算法之相似字列表(番外篇)
创作目的 国内对于文本的相似度计算,开源的工具是比较丰富的。 但是对于两个汉字之间的相似度计算,国内基本一片空白。国内的参考的资料少的可怜,国外相关文档也是如此。 本项目旨在抛砖引玉,实现一个基本的相似度计算工具&…...
2023/3/28 15:51:25 - Day928.分析工具:几百万行规模的遗留系统怎么分析? -系统重构实战
分析工具:几百万行规模的遗留系统怎么分析? Hi,我是阿昌,今天学习记录的是关于分析工具:几百万行规模的遗留系统怎么分析?的内容。 设想一下如何计划整个重构的工作: 首先,已经设…...
2023/3/28 15:47:27 - 多标签在单行出现省略的实现
简言 实现在有宽度的一行内,标签过多会出现省略号。 实现 首先要实现单行省略的效果。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&quo…...
2023/3/28 15:43:41 - 【Verilog语法013】verilog多维数组(多维矩阵)的写法
有两种表示方法:一种是verilog语法的多维数组,另一种是system verilog语法的多维数组。 这是verilog语法: reg [A1:A0] a [B1:B0] [C1:C0] [D1:D0] ; 引用顺序是:a[B][C][D][A], 定义的a 的左边只有位宽,一对方括号[…...
2023/3/28 15:42:00 - netstat命令参数和arp命令
Usage: netstat [-ral] [-tuwx] [-en] Display networking information -r Routing table -----------------------查看路由表 -a All sockets 所有套接字状态 -l Listening sockets …...
2023/3/28 15:41:49 - macOS Ventura 13.3 (22E252) 正式版发布,ISO、IPSW、PKG 下载
请访问原文链接:https://sysin.org/blog/macOS-Ventura/,查看最新版。原创作品,转载请保留出处。 2023 年 3 月 27 日 (北京时间 28 日凌晨),macOS Ventura 13.3 正式版发布,本更新包括全新表情…...
2023/3/28 15:41:12 - Java设计模式(六)—— 命令模式
命令模式定义如下:将一个请求封装为一个对象,从而使用户可用不用的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 适合命令模式情景如下: 程序需要在不同的时刻指定、排列和执行请求程序需要…...
2023/3/28 15:39:02 - 12代酷睿安装神器!34元让小白装机也不会戳弯针脚
12th CPU 扣件强度太高疑似会造成 CPU 上的金属盖 IHS 中央出现凹陷 虽然我已经在粉丝团已经用数颗全新的 CPU 告诉大家 IHS 从过去刚存在开始到现在,中间就一直存在凹陷公差 即便如此 ~ 原厂 CPU 扣件强度极高,但防板弯的设置强度不足仍然不争的事实 如…...
2023/3/28 15:34:27 - 【ChatGPT】GPT实现原理大解析——看完就知道什么叫颠覆
文章目录前言一、ChatGPT是什么?二、那么,如何计算下一个单词的概率?三, 什么是模型?四,如何制作能完成人类任务的模型五,神经网络总结前言 ChatGPT 能够自动生成类似于人类写作的文本…...
2023/3/28 15:34:09 - OTA(Over-the-air programming)是什么?
OTA(Over the air-programming)是什么? ‒ 是指将新软件,固件,设置,加密密钥更新无线发布到手机,机顶盒等设备的方式。 ‒ 对于固件而言,由于安装在诸如ROM,EPROM和flash memory等的…...
2023/3/28 15:32:53 - FastJson序列化时过滤字段(属性)的方法总结
FastJson序列化时(即转成JSON字符串时),可以过滤掉部分字段,或者只保留部分字段,方法有很多,下面举一些常用的方法。 方法一、FastJson的注解 JSONField(serialize false)private String name; 最便捷&am…...
2023/3/28 15:32:21 - 相机单独标定的实现过程[autoware标定]、tmp文件的查看方式
安装了autoware1.13和calibration标定包,发现实现相机单独标定的过程较为坎坷,参考了一些博主的方法,发现下面的过程更加适合自己,做个笔记。 1安装标定箱(与calibration标定包的安装并不冲突) 标定工具箱…...
2023/3/28 15:31:55 - seata 使用
1 下载地址 Releases seata/seata GitHub 2 版本 seat 1.6.0 修改配置文件 applciation.yml server: port: 7091 spring: application: name: seata-server logging: config: classpath:logback-spring.xml file: path: ${user.home}/logs/seata e…...
2023/3/28 15:25:31 - 人大金仓赋能网络安全产业,筑牢数字经济发展安全底线
近日,由广东省网络空间安全协会与广东关键信息基础设施保护中心联合举办的网安联广东网络安全大会(首届)暨2023广东省网络空间安全协会年会圆满结束。作为广东省网络空间安全协会会员单位,人大金仓受邀参加,并围绕“国…...
2023/3/28 15:22:37 - Unity和GAN实现AI绘画五等分的新娘、国家队02(附源码)
UnityGAN实现AI绘画五等分的新娘、国家队02附源码写在前面源码演示视频部分界面展示使用教程敬请期待其他写在后面写在前面 博主喜欢二次元,想着在读研期间做点对自己有意义的事,因此选择了动漫人物生成方向(呜呜呜,太感谢导师理解和支持了)…...
2023/3/28 15:20:15 - 4. git 配置 Gitee 远端指定仓库并提交代码
1. 第一步:先创建一个远程仓库 点击创建后,会显示如下界面,箭头所指的地方就是目前创建的仓库的远程地址: 2. 第二步:配置SSH公钥 首先打开git bash,在命令行里输入以下命令: ssh-keygen -t…...
2023/3/28 15:16:33 - TextCNN文本分类
TextCNN 模型主要由一维卷积层和时序最大池化层构成,一维卷积层是高为 1 的二维卷积层,在每个通道上,卷积核与输入做互相关运算,并将通道之间的结果相加得到输出结果。 时序最大池化层对应一维全局最大池化层,特点是卷…...
2023/3/28 15:13:58 - 数据库系统-建模
文章目录一、建模思想1.2 ER1.2.1 实体1.2.2 属性1.2.3 联系1.3 ER的表示方法1.3.1 chen方法1.3.2 Crow’s foot方法二、工程化方法2.1 IDEFx概念2.1.1 实体2.1.2 联系三、数据建模&数据库设计3.1 总览3.1 需求分析3.2 概念数据库设计3.2.1 局部ER模型设计3.2.2 全局ER图设…...
2023/3/28 15:10:08 - Machine Learning-Ex2(吴恩达课后习题)About Logistic Regression
1. Logistic Regression1.1 Visualizing the dataData:学生两次测试的分数、是否被录取(0/1表示)plot.pyimport matplotlib.pyplot as plt # 数据图形化def Plot(data):# isin函数接收列表positive data[data.Admitted.isin([1])] # 正样本…...
2023/3/28 15:08:32 - 意大利FBA海运主要港口有哪些
意大利FBA海运主要港口有哪些?意大利是一个位于亚平宁半岛的欧洲国家,与亚得里亚海、爱奥尼亚海、第勒尼安海和利古里亚海接壤,它在欧洲、亚洲和北非有重要的海上贸易。这是一个受欢迎的旅游景点,靠近苏伊士运河和直布罗陀海峡&am…...
2023/3/28 15:07:05 - R语言计算多元积分
目录0引言一、包的载入与认识二、使用实例2.1 参数解析2.2 运行实例1:多元正态分布的积分2.3 运行实例2:二元函数积分三、总结与展望0引言 在R语言中我们经常使用integrate函数计算一元积分,例如:《R语言 【integrate】函数》1. …...
2023/3/28 15:05:05 - 解决git push报错fatal: Authentication failed for ‘https://github.com/xxx.git/‘
目录 问题现象 解决方式 问题现象 remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for informat…...
2023/3/28 15:01:43 - c++11 标准模板(STL)(std::unordered_multiset)(十二)
定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_multiset;(1)(C11 起)namespace pmr { …...
2023/3/28 15:00:58 - MySQL出现too many connections错误
MySQL出现too many connections报错 1、现象 navicat连接MySQL时报too many connections错误 2、原因 my.ini 中设定的并发连接数太少或者系统繁忙导致连接数被占满。 连接数超过了 MySQL 设置的值,与 max_connections 和 wait_timeout 都有关。 wait_timeout 的值越大,连…...
2023/3/28 14:57:23 - 使用Netty,当然也要了解它的连接闲置处理
连接闲置网络连接的闲置指的是当前网络连接处于空闲状态,即没有正在进行的数据传输或通信活动。当我们的某个连接不再发送请求或者接收响应的时候,这个连接就开始处于闲置状态。网络连接的闲置时间越长,说明该连接越不活跃。此时,…...
2023/3/28 14:56:40 - EPPlus电子表格的.NET库Crack
EPPlus电子表格的.NET库Crack 改进了数据验证中的性能和对跨工作表引用的支持。 EPPlus是一个用于管理Office Open XML电子表格的.NET库。该库的设计考虑到了开发人员,使任何了解Microsoft Excel或任何其他电子表格库的开发人员都可以轻松地使用API。EPPlus为Micros…...
2023/3/28 14:54:38
最新文章
- 学习HM微博项目第3天
步骤:自定义tabBar -> 版本新特性01-搭载界面 -> 版本新特性02-按钮的使用细节 -> 版本新特性03-新版本判断 自定义tabBar 在前面的学习中,系统自带的tabBar是这样的: 由于某个需求,需要在tabBar的中间加上一个发送微博…...
2023/3/28 15:53:47 - 中国象棋隐私政策
1. 适用范围 (a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息; (b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的IP地址、浏览…...
2023/3/28 15:52:33 - HashMap何时会链表转红黑树
目录什么时候才会转换为红黑树?为什么要转换为红黑树?为什么不一开始就用红黑树,反而要经历一个转换的过程呢?从链表转化为红黑树的阈值为什么是8?什么时候才会转换为红黑树? 当Map链表长度大于或等于阈值…...
2023/3/28 15:52:20 - Scala的数组,元组,列表,集,映射(Map),迭代器(iterator)
文章目录1. 数组1.1 概述1.2 定长数组1.2.1 特点1.2.2 语法1.2.3 示例1.3 变长数组1.3.1 特点1.3.2 语法1.3.3 示例一: 定义变长数组1.3.4 示例二: 增删改元素1.4 遍历数组1.5 数组常用算法2. 元组2.1 格式2.2 示例2.3 访问元组中的元素3. 列表3.1 不可变列表3.1.1 特点3.1.2 语…...
2023/3/28 15:52:10 - NLP 开源形近字算法之相似字列表(番外篇)
创作目的 国内对于文本的相似度计算,开源的工具是比较丰富的。 但是对于两个汉字之间的相似度计算,国内基本一片空白。国内的参考的资料少的可怜,国外相关文档也是如此。 本项目旨在抛砖引玉,实现一个基本的相似度计算工具&…...
2023/3/28 15:51:25 - Day928.分析工具:几百万行规模的遗留系统怎么分析? -系统重构实战
分析工具:几百万行规模的遗留系统怎么分析? Hi,我是阿昌,今天学习记录的是关于分析工具:几百万行规模的遗留系统怎么分析?的内容。 设想一下如何计划整个重构的工作: 首先,已经设…...
2023/3/28 15:47:27 - 多标签在单行出现省略的实现
简言 实现在有宽度的一行内,标签过多会出现省略号。 实现 首先要实现单行省略的效果。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&quo…...
2023/3/28 15:43:41 - 【Verilog语法013】verilog多维数组(多维矩阵)的写法
有两种表示方法:一种是verilog语法的多维数组,另一种是system verilog语法的多维数组。 这是verilog语法: reg [A1:A0] a [B1:B0] [C1:C0] [D1:D0] ; 引用顺序是:a[B][C][D][A], 定义的a 的左边只有位宽,一对方括号[…...
2023/3/28 15:42:00 - netstat命令参数和arp命令
Usage: netstat [-ral] [-tuwx] [-en] Display networking information -r Routing table -----------------------查看路由表 -a All sockets 所有套接字状态 -l Listening sockets …...
2023/3/28 15:41:49 - macOS Ventura 13.3 (22E252) 正式版发布,ISO、IPSW、PKG 下载
请访问原文链接:https://sysin.org/blog/macOS-Ventura/,查看最新版。原创作品,转载请保留出处。 2023 年 3 月 27 日 (北京时间 28 日凌晨),macOS Ventura 13.3 正式版发布,本更新包括全新表情…...
2023/3/28 15:41:12 - Java设计模式(六)—— 命令模式
命令模式定义如下:将一个请求封装为一个对象,从而使用户可用不用的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 适合命令模式情景如下: 程序需要在不同的时刻指定、排列和执行请求程序需要…...
2023/3/28 15:39:02 - 12代酷睿安装神器!34元让小白装机也不会戳弯针脚
12th CPU 扣件强度太高疑似会造成 CPU 上的金属盖 IHS 中央出现凹陷 虽然我已经在粉丝团已经用数颗全新的 CPU 告诉大家 IHS 从过去刚存在开始到现在,中间就一直存在凹陷公差 即便如此 ~ 原厂 CPU 扣件强度极高,但防板弯的设置强度不足仍然不争的事实 如…...
2023/3/28 15:34:27 - 【ChatGPT】GPT实现原理大解析——看完就知道什么叫颠覆
文章目录前言一、ChatGPT是什么?二、那么,如何计算下一个单词的概率?三, 什么是模型?四,如何制作能完成人类任务的模型五,神经网络总结前言 ChatGPT 能够自动生成类似于人类写作的文本…...
2023/3/28 15:34:09 - OTA(Over-the-air programming)是什么?
OTA(Over the air-programming)是什么? ‒ 是指将新软件,固件,设置,加密密钥更新无线发布到手机,机顶盒等设备的方式。 ‒ 对于固件而言,由于安装在诸如ROM,EPROM和flash memory等的…...
2023/3/28 15:32:53 - FastJson序列化时过滤字段(属性)的方法总结
FastJson序列化时(即转成JSON字符串时),可以过滤掉部分字段,或者只保留部分字段,方法有很多,下面举一些常用的方法。 方法一、FastJson的注解 JSONField(serialize false)private String name; 最便捷&am…...
2023/3/28 15:32:21 - 相机单独标定的实现过程[autoware标定]、tmp文件的查看方式
安装了autoware1.13和calibration标定包,发现实现相机单独标定的过程较为坎坷,参考了一些博主的方法,发现下面的过程更加适合自己,做个笔记。 1安装标定箱(与calibration标定包的安装并不冲突) 标定工具箱…...
2023/3/28 15:31:55 - seata 使用
1 下载地址 Releases seata/seata GitHub 2 版本 seat 1.6.0 修改配置文件 applciation.yml server: port: 7091 spring: application: name: seata-server logging: config: classpath:logback-spring.xml file: path: ${user.home}/logs/seata e…...
2023/3/28 15:25:31 - 人大金仓赋能网络安全产业,筑牢数字经济发展安全底线
近日,由广东省网络空间安全协会与广东关键信息基础设施保护中心联合举办的网安联广东网络安全大会(首届)暨2023广东省网络空间安全协会年会圆满结束。作为广东省网络空间安全协会会员单位,人大金仓受邀参加,并围绕“国…...
2023/3/28 15:22:37 - Unity和GAN实现AI绘画五等分的新娘、国家队02(附源码)
UnityGAN实现AI绘画五等分的新娘、国家队02附源码写在前面源码演示视频部分界面展示使用教程敬请期待其他写在后面写在前面 博主喜欢二次元,想着在读研期间做点对自己有意义的事,因此选择了动漫人物生成方向(呜呜呜,太感谢导师理解和支持了)…...
2023/3/28 15:20:15 - 4. git 配置 Gitee 远端指定仓库并提交代码
1. 第一步:先创建一个远程仓库 点击创建后,会显示如下界面,箭头所指的地方就是目前创建的仓库的远程地址: 2. 第二步:配置SSH公钥 首先打开git bash,在命令行里输入以下命令: ssh-keygen -t…...
2023/3/28 15:16:33 - TextCNN文本分类
TextCNN 模型主要由一维卷积层和时序最大池化层构成,一维卷积层是高为 1 的二维卷积层,在每个通道上,卷积核与输入做互相关运算,并将通道之间的结果相加得到输出结果。 时序最大池化层对应一维全局最大池化层,特点是卷…...
2023/3/28 15:13:58 - 数据库系统-建模
文章目录一、建模思想1.2 ER1.2.1 实体1.2.2 属性1.2.3 联系1.3 ER的表示方法1.3.1 chen方法1.3.2 Crow’s foot方法二、工程化方法2.1 IDEFx概念2.1.1 实体2.1.2 联系三、数据建模&数据库设计3.1 总览3.1 需求分析3.2 概念数据库设计3.2.1 局部ER模型设计3.2.2 全局ER图设…...
2023/3/28 15:10:08 - Machine Learning-Ex2(吴恩达课后习题)About Logistic Regression
1. Logistic Regression1.1 Visualizing the dataData:学生两次测试的分数、是否被录取(0/1表示)plot.pyimport matplotlib.pyplot as plt # 数据图形化def Plot(data):# isin函数接收列表positive data[data.Admitted.isin([1])] # 正样本…...
2023/3/28 15:08:32 - 意大利FBA海运主要港口有哪些
意大利FBA海运主要港口有哪些?意大利是一个位于亚平宁半岛的欧洲国家,与亚得里亚海、爱奥尼亚海、第勒尼安海和利古里亚海接壤,它在欧洲、亚洲和北非有重要的海上贸易。这是一个受欢迎的旅游景点,靠近苏伊士运河和直布罗陀海峡&am…...
2023/3/28 15:07:05 - R语言计算多元积分
目录0引言一、包的载入与认识二、使用实例2.1 参数解析2.2 运行实例1:多元正态分布的积分2.3 运行实例2:二元函数积分三、总结与展望0引言 在R语言中我们经常使用integrate函数计算一元积分,例如:《R语言 【integrate】函数》1. …...
2023/3/28 15:05:05 - 解决git push报错fatal: Authentication failed for ‘https://github.com/xxx.git/‘
目录 问题现象 解决方式 问题现象 remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for informat…...
2023/3/28 15:01:43 - c++11 标准模板(STL)(std::unordered_multiset)(十二)
定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_multiset;(1)(C11 起)namespace pmr { …...
2023/3/28 15:00:58 - MySQL出现too many connections错误
MySQL出现too many connections报错 1、现象 navicat连接MySQL时报too many connections错误 2、原因 my.ini 中设定的并发连接数太少或者系统繁忙导致连接数被占满。 连接数超过了 MySQL 设置的值,与 max_connections 和 wait_timeout 都有关。 wait_timeout 的值越大,连…...
2023/3/28 14:57:23 - 使用Netty,当然也要了解它的连接闲置处理
连接闲置网络连接的闲置指的是当前网络连接处于空闲状态,即没有正在进行的数据传输或通信活动。当我们的某个连接不再发送请求或者接收响应的时候,这个连接就开始处于闲置状态。网络连接的闲置时间越长,说明该连接越不活跃。此时,…...
2023/3/28 14:56:40 - EPPlus电子表格的.NET库Crack
EPPlus电子表格的.NET库Crack 改进了数据验证中的性能和对跨工作表引用的支持。 EPPlus是一个用于管理Office Open XML电子表格的.NET库。该库的设计考虑到了开发人员,使任何了解Microsoft Excel或任何其他电子表格库的开发人员都可以轻松地使用API。EPPlus为Micros…...
2023/3/28 14:54:38