PHP面向对象面试题
1、简述面对对象六大设计原则 ?
面向对象六大设计原则是一组指导软件设计的原则,它们有助于提高代码的可维护性、可扩展性和可重用性。这些原则是:
- 单一职责原则(Single Responsibility Principle,SRP): 一个类应该只有一个引起它变化的原因。 换句话说,一个类应该只有一个职责,只负责一件事情。
- 开放封闭原则(Open-Closed Principle,OCP): 软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。这意味着当需要添加新功能时,应该通过扩展现有代码来实现,而不是修改原有代码。
- 里氏替换原则(Liskov Substitution Principle,LSP): 子类应该能够替换父类并且不会破坏程序的正确性。换句话说,任何可以使用父类对象的地方,都应该能够使用子类对象,而不会产生意外的结果。
- 依赖倒置原则(Dependency Inversion Principle,DIP): 高层模块不应该依赖于低层模块,而是应该依赖于抽象。具体而言,应该通过接口或抽象类来定义依赖关系,而不是直接依赖于具体实现。
- 接口隔离原则(Interface Segregation Principle,ISP): 客户端不应该强迫依赖于它们不需要的接口。换句话说,应该将接口细化为更小的接口,以便客户端只需要依赖于它们实际需要的方法。
- 迪米特法则(Law of Demeter,LoD): 一个对象应该只与其直接的朋友进行交互,不应该与陌生人进行交互。换句话说,一个对象应该尽量减少与其他对象的依赖关系,尽量只依赖于自己的直接关系。 这些设计原则提供了一种指导软件设计的方法,帮助开发人员写出高质量、可维护的代码。
2、简述 private、 protected、 public修饰符的访问权限 ?
private、protected和public是面向对象编程中常用的访问修饰符,用于控制类的成员(属性和方法)的访问权限。
- private修饰符:private表示私有的,只能在当前类内部访问。私有成员对于类外部是不可见的,其他类无法直接访问私有成员。私有成员主要用于封装类的内部细节,提高封装性和安全性。
- protected修饰符:protected表示受保护的,可以在当前类和其子类中访问。受保护成员对于类外部是不可见的,但对于子类是可见的。受保护成员主要用于实现继承和多态,子类可以通过继承父类的受保护成员来访问和使用。
- public修饰符:public表示公共的,可以在任何地方访问。公共成员对于所有类都是可见的,其他类可以直接访问公共成员。公共成员主要用于提供给外部调用的接口,使其它类可以访问和使用。 通过使用这些修饰符,可以灵活地控制类的成员的访问权限,实现封装、继承和多态的特性,同时也可以提高代码的可维护性和可扩展性。正确使用这些修饰符可以帮助我们设计出更加健壮和灵活的面向对象的代码。
3、请写出PHP的构造函数和析构函数、区别?
PHP的构造函数和析构函数是两个特殊的方法,用于在创建和销毁对象时执行一些初始化和清理操作。 构造函数: 构造函数是在创建对象时自动调用的方法。它的名称与类名相同,没有返回类型,并且不能显式调用。构造函数主要用于初始化对象的属性和执行一些必要的设置。在PHP中,构造函数使用关键字__construct来定义。 示例代码:
class MyClass {public function __construct() {// 构造函数的初始化操作}
}
$obj = new MyClass(); // 创建对象时自动调用构造函数
析构函数: 析构函数是在对象被销毁时自动调用的方法。它的名称也是与类名相同,但前面加上两个下划线__,没有参数和返回值。析构函数主要用于执行一些清理操作,例如释放资源、关闭数据库连接等。在PHP中,析构函数使用关键字__destruct来定义。 示例代码:
class MyClass {public function __destruct() {// 析构函数的清理操作}
}
$obj = new MyClass();
// 对象在作用域结束时自动调用析构函数,或者可以通过 unset($obj) 手动销毁对象并触发析构函数。
区别:
- 构造函数是在对象创建时自动调用的,而析构函数是在对象被销毁时自动调用的。
- 构造函数用于初始化对象的属性和执行一些必要的设置,而析构函数用于执行一些清理操作。
- 构造函数没有返回类型,而析构函数也没有参数和返回值。
- 构造函数不能显式调用,而析构函数可以通过手动销毁对象或对象作用域结束来触发。 构造函数和析构函数在面向对象编程中起着重要的作用,它们帮助我们在对象的生命周期中进行必要的初始化和清理操作,提高代码的可维护性和可靠性。
4、PHP 中对象是按值传递还是按引用传递?
在 PHP 中,对象是按引用传递的。这意味着当将一个对象赋值给另一个变量或将对象作为参数传递给函数时,实际上是传递对象的引用,而不是对象的副本。 当对象被赋值给一个新的变量时,两个变量将引用同一个对象。对其中一个变量所做的更改也会影响到另一个变量。 示例代码:
class MyClass {public $property;
}
$obj1 = new MyClass();
$obj1->property = 'Value';
$obj2 = $obj1; // 将$obj1赋值给$obj2
$obj2->property = 'New Value';
echo $obj1->property; // 输出 "New Value"
在上述示例中,修改 $obj2 的 property 属性后,$obj1 的 property 属性也被修改了,因为它们引用同一个对象。 需要注意的是,PHP 中的基本类型(如整数、字符串等)是按值传递的,而对象是按引用传递的。这是因为对象在内存中是通过指针进行引用的,而基本类型是直接存储在变量中。 通过理解 PHP 中对象的传递方式,可以更好地控制和管理对象的使用,避免不必要的副作用。
5、PHP 面对对象设计OOP具有三大特点 ?
PHP面向对象设计(OOP)具有以下三大特点:
- 封装(Encapsulation):封装是指将对象的属性(数据)和行为(方法)封装在一起,形成一个独立的、可复用的对象。通过封装,可以隐藏对象的内部实现细节,只暴露必要的接口给外部使用。这样可以提高代码的安全性、可维护性和可重用性。
- 继承(Inheritance):继承是指一个类可以继承另一个类的属性和方法。通过继承,可以创建一个新的类,继承已有类的属性和方法,并且可以在新的类中添加额外的属性和方法。继承可以实现代码的重用,减少代码的冗余,同时也方便了代码的扩展和维护。
- 多态(Polymorphism):多态是指同一种操作可以在不同的对象上有不同的行为。在面向对象编程中,多态通过继承和接口实现。多态可以提高代码的灵活性和可扩展性,使代码更加通用和易于维护。 这三个特点是面向对象编程的基石,它们使得代码更加模块化、可维护性更高、可重用性更好,并且能够更好地应对复杂的业务逻辑和需求变化。在PHP中,面向对象编程可以通过类、对象、属性、方法、继承、接口等语言特性来实现。
6、PHP支持多继承吗?
PHP 不直接支持多继承。多继承是指一个类可以同时继承多个父类的属性和方法。然而,PHP通过使用接口(interface)和特质(trait)来模拟多继承的部分功能。
- 接口(interface):接口是一种抽象的类,其中只定义了方法的签名而没有具体的实现。一个类可以实现多个接口,从而获得多个接口中定义的方法。接口允许一个类具备多个接口的行为,但并不提供属性的继承。
- 特质(trait):特质是一种可以被多个类共享的代码块。类可以通过使用特质来复用特定的方法集合。一个类可以使用多个特质,并且特质可以相互组合。特质允许一个类具有多个特质中定义的方法和属性。 通过接口和特质的组合,可以在 PHP 中模拟多继承的部分功能。但需要注意的是,PHP 的多继承模拟并不像一些其他编程语言中的原生多继承那样简单和直接。在使用接口和特质时,需要谨慎设计和管理类的继承关系,以避免引入复杂性和冲突。
7、PHP子类如何调用父类构造方法 ?
在 PHP 中,子类可以通过使用 parent::__construct() 方法来调用父类的构造方法。这个方法可以在子类的构造方法中使用,用于执行父类的构造方法。 下面是一个示例代码:
class ParentClass {public function __construct() {echo "ParentClass 构造方法被调用";}
}
class ChildClass extends ParentClass {public function __construct() {parent::__construct(); // 调用父类的构造方法echo "ChildClass 构造方法被调用";}
}
$child = new ChildClass();
在上述代码中,ChildClass 继承了 ParentClass,并且在子类的构造方法中通过 parent::__construct() 调用了父类的构造方法。当创建子类的实例时,首先会执行父类的构造方法,然后再执行子类的构造方法。 需要注意的是,如果子类没有定义自己的构造方法,那么可以省略 parent::__construct() 的调用,因为子类会自动调用父类的构造方法。但如果子类自己定义了构造方法,并且想要调用父类的构造方法,就需要显式地使用 parent::__construct() 来调用父类的构造方法。
8、面向对象中接口和抽象类的区别及应用场景?
接口(Interface)和抽象类(Abstract Class)是面向对象编程中的两个重要概念。它们有以下区别和应用场景:
- 区别:
- 定义:接口是一种完全抽象的类,其中只定义了方法的签名而没有实现;抽象类是一种可以包含具体方法实现和抽象方法的类。
- 实现方式:一个类可以实现多个接口,但只能继承一个抽象类。
- 方法:接口只能定义公共方法,抽象类可以定义公共和受保护的方法。
- 属性:接口不能定义属性,抽象类可以定义属性。
- 实例化:接口不能被实例化,抽象类不能直接实例化,需要通过子类继承后实例化。
- 应用场景:
- 接口:适用于定义类的契约和行为规范,可以被多个类实现。接口强调对行为的定义,用于实现类的多态性和解耦。
- 抽象类:适用于定义某个类的通用行为和属性,可以被子类继承。抽象类可以提供默认的方法实现,同时也可以定义抽象方法,要求子类必须实现。 接口和抽象类的使用场景有一定的重叠,但在实际应用中可以根据具体需求进行选择:
- 当需要定义类的行为规范和约束时,使用接口。例如,定义一个可飞行的接口,多个类实现该接口,实现飞行的功能。
- 当需要定义类的通用行为和属性,并且希望子类必须实现某些方法时,使用抽象类。例如,定义一个动物类的抽象类,其中定义了通用的方法,子类必须实现具体的动物行为。 总的来说,接口强调对行为的定义,用于实现类的多态性和解耦;抽象类强调对类的通用行为和属性的定义,可以提供默认的方法实现,并要求子类必须实现某些方法。
9、常用的魔术方法有哪些?举例说明
php规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。
__construct() 实例化类时自动调用。
__destruct() 类对象使用结束时自动调用。
__set() 在给未定义的属性赋值的时候调用。
__get() 调用未定义的属性时候调用。
__isset() 使用isset()或empty()函数时候会调用。
__unset() 使用unset()时候会调用。
__sleep() 使用serialize序列化时候调用。
__wakeup() 使用unserialize反序列化的时候调用。
__call() 调用一个不存在的方法的时候调用。
__callStatic()调用一个不存在的静态方法是调用。
__toString() 把对象转换成字符串的时候会调用。比如 echo。
__invoke() 当尝试把对象当方法调用时调用。
__set_state() 当使用var_export()函数时候调用。接受一个数组参数。
__clone() 当使用clone复制一个对象时候调用
10、简述作用域操作符::如何使用?都在哪些场合下使用?
作用域操作符 :: 在 PHP 中用于访问类的常量、静态属性和静态方法。它的使用方式如下:
- 访问类的常量:使用
类名::常量名的语法来访问类的常量。常用于获取类的配置信息或者定义一些全局常量。例如:class MyClass {const MY_CONSTANT = 123; } echo MyClass::MY_CONSTANT; // 输出:123 - 访问静态属性:使用
类名::$静态属性名的语法来访问类的静态属性。静态属性是类的属性,不依赖于类的实例化,可以在任何地方访问。例如:class MyClass {public static $myProperty = "Hello"; } echo MyClass::$myProperty; // 输出:Hello - 调用静态方法:使用
类名::静态方法名()的语法来调用类的静态方法。静态方法是类的方法,不依赖于类的实例化,可以直接通过类名调用。例如:class MyClass {public static function myMethod() {echo "Hello";} } MyClass::myMethod(); // 输出:Hello作用域操作符
::主要在以下场合下使用: - 访问类的常量:通过类名访问类的常量,而不需要实例化类对象。
- 访问静态属性:通过类名访问类的静态属性,而不需要实例化类对象。
- 调用静态方法:通过类名调用类的静态方法,而不需要实例化类对象。 在这些场合下,作用域操作符
::提供了一种直接访问和调用类的静态成员的方式,方便在不实例化对象的情况下进行操作。
11、简述PHP面向对象接口和使用场景
在 PHP 中,接口是一种抽象的定义,它规定了一个类应该具有的方法。一个类可以实现一个或多个接口,通过实现接口中定义的方法,来实现对接口的约束和规范。接口使用 interface 关键字来定义。 接口的使用场景包括:
- 规范类的行为:接口可以定义一组方法,用于规范类的行为。当一个类实现了某个接口,就表示该类具有了接口中定义的方法,从而实现了对行为的规范。
- 多态性:接口可以作为类型来使用。当一个类实现了某个接口,就可以将该类的实例赋值给接口类型的变量,实现多态性。这样可以在不关心具体类的情况下,统一对不同类的实例进行操作。
- 代码复用和扩展:接口提供了一种约定,要求实现类必须实现接口中定义的方法。通过接口,可以将一些通用的方法定义在接口中,然后多个类实现该接口,实现代码的复用。当需要增加新的功能时,只需要在接口中新增方法,而不需要修改已有的类。
- 与其他代码的解耦:接口可以用于解耦代码之间的依赖关系。通过面向接口的编程,可以将接口定义的方法作为公共接口,不同的类实现该接口,从而降低类与类之间的耦合度。 以下是一个使用接口的示例:
interface Animal {public function eat();public function sleep(); } class Cat implements Animal {public function eat() {echo "Cat is eating";}public function sleep() {echo "Cat is sleeping";} } class Dog implements Animal {public function eat() {echo "Dog is eating";}public function sleep() {echo "Dog is sleeping";} } $cat = new Cat(); $dog = new Dog(); $cat->eat(); // 输出:Cat is eating $dog->eat(); // 输出:Dog is eating在上述示例中,
Animal是一个接口,定义了eat()和sleep()两个方法。Cat和Dog类都实现了Animal接口,并实现了接口中定义的方法。通过接口,可以统一对不同类的实例进行操作,实现了多态性和代码的复用。
12、简述PHP Static和Final 关键字与使用场景 ?
在 PHP 中,static 和 final 是两个关键字,用于修饰类的属性、方法和常量。它们的使用场景如下:
static关键字:- 静态属性:使用
static关键字声明的属性是类属性,而不是实例属性。它们不依赖于类的实例化,可以在任何时候访问。静态属性可以用于保存类的共享数据或者全局配置信息。 - 静态方法:使用
static关键字声明的方法是类方法,而不是实例方法。它们不依赖于类的实例化,可以直接通过类名调用。静态方法可以用于执行与类相关的操作,而不需要创建类的实例。 - 静态常量:使用
const关键字声明的常量是类的常量,可以通过类名::常量名的方式访问。静态常量一般用于定义一些固定不变的值,例如配置信息或者标识符。
- 静态属性:使用
final关键字:final类:使用final关键字声明的类是最终类,不能被继承。当一个类不希望被其他类继承时,可以将该类声明为final类。final方法:使用final关键字声明的方法是最终方法,不能被子类重写。当一个类的某个方法不希望被子类重写时,可以将该方法声明为final方法。 使用场景:
static关键字的使用场景:- 静态属性:用于保存类的共享数据或者全局配置信息。
- 静态方法:用于执行与类相关的操作,而不需要创建类的实例。
- 静态常量:用于定义一些固定不变的值,例如配置信息或者标识符。
final关键字的使用场景:final类:用于禁止其他类继承该类,保护类的完整性和稳定性。final方法:用于禁止子类重写该方法,确保方法的一致性和稳定性。 需要注意的是,static和final关键字是可选的,根据实际需求来决定是否使用。在使用时,需要根据具体的业务场景和设计需求来合理应用这两个关键字。
相关文章:
PHP面向对象面试题
1、简述面对对象六大设计原则 ? 面向对象六大设计原则是一组指导软件设计的原则,它们有助于提高代码的可维护性、可扩展性和可重用性。这些原则是: 单一职责原则(Single Responsibility Principle,SRP)&a…...
6G 特点及表现
6G R&D Vision: Requirements and Candidate Technologies 5G已经提出来了大移动带宽,低时延和大规模机器互联,在这个基础上,6G加上了高可靠性,高定位精度和高智能化。 6G的主要候选技术,包括(子) THz 通信&#x…...
【Git】(一)基本操作
读完本文后,您会了解: 1、如何在本地配置GIT环境? 2、环境配置成功后,如何从远端下载一个已有仓库到本地? 1. 配置全局用户名、邮箱 git config --global user.name "username" git config --global user.email &q…...
Github下载任意版本的VsCode
下载历史版本VsCode(zip) 下载链接由三部分组成: 固定部分commit idVSCode-win32-x64-版本号.zip 固定部分: https://vscode.cdn.azure.cn/stable/ Commit id: 打开 vscode的GitHub:[https://github.com/microsoft/vscode/r…...
ThreadLocal(超详细介绍!!)
关于ThreadLocal,可能很多同学在学习Java的并发编程部分时,都有所耳闻,但是如果要仔细问ThreadLocal是个啥,我们可能也说不清楚,所以这篇博客旨在帮助大家了解ThreadLocal到底是个啥? 1.ThreadLocal是什么&…...
stable diffusion安装包和超火使用文档,数字人制作网址
一:文生图、图生图 1:stable diffusion:对喜欢二次元、美女小姐姐、大眼萌妹的人及其友好哈哈(o^^o) 1):秋叶大神安装包和模型包: 链接:https://pan.baidu.com/s/11_kguofh76gwhTBPUipepw 提…...
JVM——HotSpot的算法细节实现
一、根节点枚举 固定可作为GC Roots的节点主要在全局性的引用(如常量或类静态属性)与执行上下文(如栈帧中的本地变量表)中,尽管目标明确,但查找要做到高效很难。现在java应用越来越庞大,光方法区…...
高等数学教材重难点题型总结(三)微分中值定理和导数的应用
第三章,微分中值定理的证明题等,非常重要,需要牢牢掌握 1.证明中值定理对某函数在给定区间上的正确性 2.与中值定理有关的证明题 3.微分中值定理应用于求证不等式 4.洛必达法则求极限 5.洛必达的经典错误反例 6.按某项实现多项式幂展开 7.求带…...
神经网络基础-神经网络补充概念-39-梯度消失与梯度爆炸
简介 梯度消失和梯度爆炸是在深度神经网络中训练过程中可能出现的问题,导致模型难以训练或无法收敛。这些问题与反向传播算法中的梯度计算有关。 概念 梯度消失(Gradient Vanishing):在深层神经网络中,特别是具有很…...
P12-Retentive NetWork-RetNet挑战Transformer
论文地址:https://arxiv.org/abs/2307.08621 目录 Abstract 一.Introduction 二.Retentive Networks 2.1Retention 2.2Gated Multi-Scale Retention 2.3Overall Architecture of Retention Networks 2.4Relation to and Differences from Previous Methods 三.Experime…...
数据库基础
什么是数据库? 数据库本质上也是一个文件,它是按照特定结构组织在一起的数据的集合!是存储数据、管理数据、组织数据的一套解决方案! 可是存储数据用文件就够了,为什么还要弄个数据库? 主要是因为ÿ…...
【RocketMQ】安装
文章目录 下载RocketMQ配置环境变量 下载RocketMQ 下载RocketMQ安装包 下载DashBoard 这里版本推荐选择4.9.x,因为比较稳定。 下载完毕之后,将安装包拖入到Linux环境。 之后使用unzip命令解压缩RocketMQ的安装包。 unzip ./rocketmq-all-4.9.2-bin-rel…...
二十二、策略模式
目录 1、项目需求2、传统方案解决鸭子问题的分析和代码实现3、传统方式实现存在的问题分析和解决方案4、策略模式基本介绍5、使用策略模式解决鸭子问题6、策略模式的注意事项和细节7、策略模式的使用场景 以具体项目来演示为什么需要策略模式,策略模式的优点&#x…...
[K8s]问题描述:k8s拉起来的容器少了cuda的so文件
问题解决:需要设置Runtimes:nvidia的同时设置Default Runtimenvidia...
Postman如何做接口测试:什么?postman 还可以做压力测试?
我们都知道, postman 是一款很好用的接口测试工具。不过 postman 还可以做简单的压力测试,而且步骤只需要 2 步。 首先,打开 postman, 编写接口的请求参数。 然后,点击右下方的 runner 运行器,把需要测试的接口拖动到…...
MySQL 自增 ID 默认从 1 开始,如何设置自增 ID 从 0 开始
MySQL 是一种关系型数据库,它是世界上最流行的关系型数据库之一。在 MySQL 中,自增是一种非常有用的功能,它可以自动给主键赋值,并保证每个主键是唯一的。然而,许多人不知道的是,MySQL 默认情况下从 1 开始…...
WebRTC音视频通话-实现iOS端调用ossrs视频通话服务
WebRTC音视频通话-实现iOS端调用ossrs视频通话服务 之前搭建ossrs服务,可以查看:https://blog.csdn.net/gloryFlow/article/details/132257196 这里iOS端使用GoogleWebRTC联调ossrs实现视频通话功能。 一、iOS端调用ossrs视频通话效果图 iOS端端效果图…...
uniapp的UI框架组件库——uView
在写uniapp项目时候,官方所推荐的样式库并不能满足日常的需求,也不可能自己去写相应的样式,费时又费力,所以我们一般会去使用第三方的组件库UI,就像vue里我们所熟悉的elementUI组件库一样的道理,在uniapp中…...
由于找不到msvcp140.dll无法继续执行代码是什么原因
使用计算机过程中,有时会遇到一些错误提示,其中之一就是关于msvcp140.dll文件丢失或损坏的错误。msvcp140.dll是Windows系统中非常重要的文件,是Microsoft Visual C Redistributable中动态链接库的文件,如果缺失或损坏,…...
kafka生产者幂等与事务
目录 前言: 幂等 事务 总结: 参考资料 前言: Kafka 消息交付可靠性保障以及精确处理一次语义的实现。 所谓的消息交付可靠性保障,是指 Kafka 对 Producer 和 Consumer 要处理的消息提供什么样的承诺。常见的承诺有以下三…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
