当前位置: 首页 > news >正文

【前端】JavaScript 中的创建对象模式要点


在这里插入图片描述

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]
本文专栏: 前端

文章目录

  • 💯前言
  • 💯对象属性值中的引号规则
  • 💯对象属性换行与尾随逗号的使用
  • 💯工厂模式:灵活高效的对象创建
  • 💯自定义构造函数:通过 `new` 创建对象
  • 💯`instanceof` 的作用与原型链
    • 工厂模式的 `instanceof`
    • 自定义构造函数的 `instanceof`
  • 💯 工厂模式与自定义构造函数的对比
  • 💯小结


在这里插入图片描述


💯前言

  • JavaScript 的研究和应用中,深入理解对象的创建方式至关重要。无论是初学者还是经验丰富的开发者,JavaScript工厂模式自定义构造函数模式都是需要全面掌握的知识点。在本文中,我们将详细探讨这些模式,包括它们的使用方式、各自的优劣、以及在特定场景中的适用性。通过对这些模式的深刻理解,读者可以更好地掌握 JavaScript 中的面向对象编程技术,从而撰写出具备高度扩展性可维护性的代码。
    JavaScript在这里插入图片描述

💯对象属性值中的引号规则

在这里插入图片描述
首先,需要理解如何在 JavaScript 中正确地为对象属性赋值。对象的属性值可以有多种类型,其中字符串类型的值必须用引号包裹(可以是单引号'或双引号"),而其他类型的值,如数字布尔值等,则无需引号。这种区别对于代码的可读性和减少错误尤为重要,尤其在复杂的应用程序或大型项目中,保持代码风格的一致性是提高开发效率可维护性的重要因素。

例如:

var obj = {name: 'Alice', // 字符串类型,必须用引号age: 25,       // 数字类型,不需要引号isStudent: true // 布尔值,不需要引号
};

在上述代码中,name 属性的值是字符串,因此必须用引号包裹,而 ageisStudent 则是数字和布尔类型,因此没有使用引号。这些细节对于避免低级语法错误、提高代码一致性和可读性具有重要意义。同时,这种约定也有助于团队成员之间的协作,确保代码风格统一,使得代码更容易被理解和维护。


💯对象属性换行与尾随逗号的使用

在这里插入图片描述
在编写对象时,经常会遇到需要添加多个属性的情况。为了提高代码的可读性,通常会将每个属性分行书写,并用逗号进行分隔。在这种情况下,最后一个属性的后面可以选择加逗号,也可以不加逗号,在现代 JavaScript 中这两种方式都是合法的。这种灵活性不仅使代码更加清晰,同时也在修改对象时减少了可能的错误。

例如:

var student = {name: 'Bob',age: 22,gender: 'Male', // 最后的逗号是可选的
};

这种书写方式被称为**“尾随逗号”,它的主要优势在于当需要为对象添加新属性时,可以避免对之前最后一行的属性进行修改,从而降低修改引入错误的风险。在大型代码库或复杂的对象结构中,使用尾随逗号可以显著减少人为失误,尤其是在多人协作的开发环境下**,这种书写规范可以让代码的维护更加轻松和高效


💯工厂模式:灵活高效的对象创建

在这里插入图片描述
在 JavaScript 中,工厂模式是一种通过函数创建并返回对象的设计模式。工厂模式的主要优势在于可以灵活地创建对象,而不必依赖 new 关键字。这种模式特别适合需要根据参数动态生成不同类型对象的场景,极大地提高了代码的复用性和灵活性。它使得我们能够在函数内部决定返回什么样的对象,而不需要拘泥于特定的构造函数。

例如:

function createStudent(name, age, sex) {var obj = new Object();obj.name = name;obj.age = age;obj.sex = sex;obj.speak = function () {console.log('我要学习, 学习使我快乐, 学习让我成长!');};return obj;
}var student1 = createStudent('小明', 18, 'Male');

在上述例子中,createStudent 是一个工厂函数,它创建了一个新的对象 obj,根据传入的参数为对象赋值,并最终返回这个对象。工厂模式的一个重要特征就是它不需要 new 关键字来调用,而是直接返回新对象。这种灵活性使得工厂模式在处理创建结构相似但配置不同的对象时显得尤为便利,尤其在需要根据不同输入生成具有不同配置的对象时,工厂模式提供了极大的便利。

此外,工厂模式还可以通过封装复杂逻辑来简化对象的创建过程,使代码更加简洁并且易于测试。例如,如果我们需要创建不同类型的学生对象,可以根据传递的 type 参数返回不同的对象,而无需为每种类型的对象定义不同的构造函数。


💯自定义构造函数:通过 new 创建对象

在这里插入图片描述
与工厂模式不同,自定义构造函数依赖于 new 关键字来创建对象。构造函数的定义方式与普通函数类似,但通常第一个字母大写,以示区分。构造函数通过使用 this 关键字来定义对象的属性和方法,属性和方法都会绑定到新创建的实例上。

例如:

function Student(name, age, sex) {this.name = name;this.age = age;this.sex = sex;this.speak = function () {console.log('我要学习, 学习使我快乐, 学习让我成长! 我叫 ' + this.name);};
}var student2 = new Student('张三', 20, 'Male');

在这个例子中,Student 是一个构造函数,使用 new Student('张三', 20, 'Male') 可以创建一个新的实例 student2。构造函数的核心特征是它通过 new 关键字来调用,this 关键字指向新创建的对象实例,因此可以通过 this 来为对象添加属性和方法。通过 new 关键字创建的对象不仅可以确保独立实例之间的隔离性,同时能够复用构造函数定义的逻辑。

构造函数的一个显著优点是它可以结合 prototype 实现方法的共享。将方法定义在构造函数的原型对象上,而不是在构造函数内部定义,可以避免每个实例都创建一个独立的方法,这样既节省了内存,又保持了一致性。例如,可以将 speak 方法放在 Student.prototype 上,使得所有实例共享同一个 speak 方法,这在需要大量创建对象的场景中尤为重要。


💯instanceof 的作用与原型链

在这里插入图片描述
在 JavaScript 中,instanceof 用于检查一个对象是否为某个构造函数的实例。instanceof 的原理是沿着对象的原型链(prototype chain)进行查找,如果对象的原型链中存在与构造函数的 prototype 属性相等的原型,instanceof 就会返回 true。这使得 instanceof 成为实现继承和检查对象类型的重要工具。

例如:

console.log(student2 instanceof Student); // true
console.log(student2 instanceof Object);  // true

在上述例子中,student2 是通过 Student 构造函数创建的,因此 student2 instanceof Studenttrue。由于所有对象的原型链最终都会指向 Object.prototype,因此 student2 instanceof Object 也为 true。这种类型检查方法对于确保代码的可靠性和健壮性非常有效,特别是在构建复杂的对象体系结构时。


工厂模式的 instanceof

通过工厂模式创建的对象,因为没有通过 new 绑定到特定的构造函数,因此这些对象与工厂函数之间没有直接的原型链关系。因此,使用 instanceof 检测工厂模式创建的对象时,结果通常不会与工厂函数关联。

例如:

function createStudent(name, age, sex) {var obj = new Object(); //new 构造函数();obj.name = name;obj.age = age;obj.sex = sex;obj.speak = function () {console.log('我要学习,学习使我快乐,学习让我成长!');}return obj;
}
var stu1 = createStudent('小明', 99, 'Man');console.log(stu1 instanceof createStudent); // false
console.log(stu1 instanceof Object);        // true

在这里插入图片描述

在上述代码中,stu1 是通过工厂函数创建的普通对象,但它并没有与 createStudent 函数建立任何原型链上的关联,因此 stu1 instanceof createStudent 返回 false。然而,由于所有通过对象字面量或 new Object() 创建的对象最终都是 Object 的实例,因此 stu1 instanceof Object 返回 true。这表明,工厂模式创建的对象在类型检查方面是相对弱化的,而通过构造函数模式创建的对象则具有更强的类型关联。

这种差异意味着,如果需要通过 instanceof 来判断某个对象是否是某个类型的实例,那么工厂模式并不适合,因为工厂函数返回的对象与它们没有直接的原型链关系。而构造函数模式通过 prototype 属性使对象与构造函数保持了联系,因此 instanceof 在这种模式下可以提供可靠的类型检查。


自定义构造函数的 instanceof

通过自定义构造函数创建的对象能够可靠地通过 instanceof 检查。这是因为通过 new 关键字调用构造函数时,JavaScript 会自动将新创建的对象的原型(__proto__)指向构造函数的 prototype,从而形成了正确的原型链关系。

例如:

function Student(name, age, sex) {this.name = name;this.age = age;this.sex = sex;this.speak = function () {console.log('我要学习, 学习使我快乐, 学习让我成长! 我叫 ' + this.name);};
}var stu3 = new Student('张三', 18, 'Man');console.log(stu3 instanceof Student); // true
console.log(stu3 instanceof Object);  // true

在这里插入图片描述

在上述例子中,stu3 是通过 Student 构造函数创建的对象,因此 stu3 instanceof Studenttrue。这表明 stu3 的原型链中包含 Student.prototype。同时,stu3 也是 Object 的实例,因为所有的对象最终都继承自 Object,因此 stu3 instanceof Object 也为 true

这种可靠的原型链关系使得通过构造函数模式创建的对象能够进行精确的类型判断,尤其是在复杂的应用场景中,这种机制对于确保对象的正确性和类型安全性尤为重要。它使得构造函数模式在需要进行严格类型检查和继承的场景中显得更为适用。


💯 工厂模式与自定义构造函数的对比

在这里插入图片描述

特性工厂模式 (createStudent)自定义构造函数 (Student)
instanceof 检测结果falsetrue
对象与函数的关联没有关联,返回普通对象对象与构造函数的 prototype 有关联
使用方式普通函数调用,返回一个独立对象必须使用 new 关键字
原型链机制与工厂函数无关实例通过原型链指向构造函数的 prototype
灵活性可以动态返回不同类型的对象只能返回固定的构造对象

在实际开发中,工厂模式适用于需要灵活创建不同类型对象的场景,而自定义构造函数模式则更适合于需要共享方法和属性的对象创建场景。构造函数模式通过prototype实现了方法的共享,因而在需要创建大量相似对象时更为高效,而工厂模式由于其动态特性则在处理变化较多的对象结构时表现得更好。在某些复杂的场景中,两者可以结合使用,以充分发挥它们各自的优势。例如,通过工厂函数来包装构造函数,从而在创建对象时既能享受构造函数的性能优势,又能够保持工厂模式的灵活性


💯小结

  • 在这里插入图片描述
    通过这篇文章,我们深入探讨了 JavaScript工厂模式自定义构造函数模式的不同特性与适用场景。工厂模式提供了一种灵活的方式来创建对象,尤其适用于动态需求的场景,而自定义构造函数结合new关键字,则让我们能够通过原型链共享方法,非常适合需要大量相似对象的场景。掌握这些差异有助于在实际开发中灵活运用,选择最适合的模式,从而编写出更加高效可维护的代码。
    除了深入理解 JavaScript原型链机制,理解 ES6 引入的class语法也是非常重要的。虽然class本质上是基于原型的语法糖,但它提供了一种更具表现力且易于使用的方式来定义对象和继承关系。通过结合工厂模式自定义构造函数class语法,开发者能够更灵活地应对多样的编程需求,编写出结构合理且便于扩展的代码。对这些模式及其底层机制的深刻理解,将使你在 JavaScript 编程的道路上更具信心并能应对各种复杂挑战

在这里插入图片描述


相关文章:

【前端】JavaScript 中的创建对象模式要点

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯对象属性值中的引号规则💯对象属性换行与尾随逗号的使用💯工厂模式:灵活高效的对象创建💯自定义构造函数:通过…...

鸿蒙NEXT元服务:论如何免费快速上架作品

【引言】天下武功,唯快不破。 本文讨论如何免费且以最快速度上架自己的作品。 作者以自己从零开始到提交发布审核一共俩小时的操作流程分享给大家作参考。 【1】立项选择 结论:元服务,单机,工具类(非游戏&#xff…...

hive3.1.3安装及基本例子

前提要安装好hadoop环境和mysql。 1、下载并解压 https://archive.apache.org/dist/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz 下载bin包到/app/src中。 cd /app/src/ tar zxvf apache-hive-3.1.3-bin.tar.gz mv apache-hive-3.1.3-bin /app/hive2、配置path nano /etc…...

【设计模式】工厂方法模式 在java中的应用

文章目录 1. 引言工厂方法模式的定义 2. 工厂方法模式的核心概念工厂方法模式的目的和原理与其他创建型模式的比较(如简单工厂和抽象工厂) 3. Java中工厂方法模式的实现基本的工厂方法模式结构示例代码:创建不同类型的日志记录器 4. 工厂方法…...

【热门主题】000079 服务器虚拟化:开启高效计算新时代

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【热…...

软考高项经验分享:我的备考之路与实战心得

软考,尤其是信息系统项目管理师(高项)考试,对于众多追求职业提升与专业认可的人士来说,是一场充满挑战与机遇的征程。我在当年参加软考高项的经历,可谓是一波三折,其中既有成功的喜悦&#xff0…...

【小白学机器学习38】用np.random 生成各种随机数,随机数数组/序列

目录 0 总结 np.random() 的一些点 1 用np.random.random() 生成[0,1) 区间内的随机数 2 生成指定范围内的随机整数/数组 np.random.randint() 3 用np.random.choice()生成指定数组范围内的随机数 3.1 np.random.choice(array6) 3.2 np.random.choice(array6) &#xff0…...

Scala的数组匹配模式

package Test32//匹配:数组:元素的个数 元素的特征 object Test4 {def main(args: Array[String]): Unit {val arr1 Array(1, 2, 3)val arr2 Array(0, 2, 3)val arr3 Array(1, 2, 3, 4)val arr4 Array(-1, 1, 2, 3, 4)val b: Any arr1b match {ca…...

力扣【算法学习day.50】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...

C 语言学习的经典书籍有哪些?

学习C语言的理由 C语言是一种程席设计语言,它是由美国AT&T公司贝尔实验室的Dennis Ritchie于1972年发明的。C语言之所以流行,是因为它简单易用。学习C语言的几个理由如下: (1)C、C#和Java使用一种被称为面向对象程序设计(0bject-Orient…...

数据结构——栈

目录 栈的介绍 一、栈的基本概念 1.1 栈的定义 1.2 栈的常见基本操作 二、栈的顺序存储结构 2.1 栈的顺序储存 2.2 顺序栈 2.3 共享栈 三、栈的链式储存结构 3.1 链栈 3.2 链栈的进出栈操作 四、栈的应用 4.1实现斐波那契数列 一、栈的基本概念 1.1 栈的定义 栈…...

开发系统准备与开发环境配置总结

开发前系统配置及环境搭建 系统配置0 Github打不开、速度慢怎么办1 WSL、Linux、Ubuntu、Docker都是什么鬼2 在Windows下安装WSL和Ubuntu3 配置MySQL4 配置Redis并启动服务5 Docker(Windows和Ubuntu下)6 Nginx 系统配置 你好! 这是你第一次使…...

bash: jstack: command not found【jps、jstack、jmap、jstats 命令不生效解决】

JVM 系列文章传送门 初识 JVM(Java 虚拟机) 深入理解 JVM(Java 虚拟机) 一文搞懂 JVM 垃圾回收(JVM GC) 深入理解 JVM 垃圾回收算法 一文搞懂 JVM 垃圾收集器 JVM 调优相关参数 JVM 场景面试题【强烈…...

两数之和问题——c语言

声明: 以下是我在leetcode上面刷题的两数之和问题,如涉及侵权马上删除文章 声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律…...

《沉积与特提斯地质》

《沉积与特提斯地质》为中国地质调查局主管,中国地质调查局成都地质调查中心(西南地质科技创新中心)主办的地学类学术期刊。 《沉积与特提斯地质》创刊于1981年,创刊名为《岩相古地理研究与编图通讯》,后更名为《岩相…...

全面解析 C++ STL 中的 set 和 map

C 标准模板库(STL)中的关联式容器以其强大的功能和高效性成为开发者解决复杂数据组织问题的重要工具。其中,set 和 map 是最常用的两类关联容器。本篇博客将从基本特性、底层实现、用法详解、高级案例以及性能优化等多个角度,详细…...

【RL Application】语义分割中的强化学习方法

📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…...

MySql:Centos7安装MySql

目录 安装之前,清除MySql残留文件 下载MySql的官方yum源 安装MySql 服务 MySql配置 常见问题 本次安装基于Centos7,平台为云服务器,由XShell软件演示。 注意,请将用户切换为Root用户。 安装之前,清除MySql残留文…...

数据结构-散列函数的构造方法

一.数字关键词 关键词存储应该尽可能的离散 直接定址法:利用线性函数,例如上面的例子,h(key)key-1990,key1990,这个就被存放在0的位置 数字分析法:关键字可能有很到位组成,每一位变化可能都不一样,有的位是不变的,就是说不同的对象这一位都是一样的,有的…...

MySQL:DDL数据定义语言

DDL(Data Definition Language),数据定义语言 对数据库的常用操作 查看所有数据库 语法:show databases; 创建数据库 dbname:用户自己定义的数据库名称。 语法:create database [if not exists] dbname [charsetutf8]; 切换…...

【落羽的落羽 C语言篇】指针·之其五

文章目录 一、冒泡排序二、qsort排序1. qsort使用指南2.回调函数3. qsort函数的模拟实现 一、冒泡排序 冒泡排序的核心思想就是:两两相邻的元素进行比较和交换。 现在,我们想编写一个函数,使它能够运用冒泡排序的原理,由小到大排…...

Java程序员最新场景面试题总结

上周,在与部门业务伙伴(BP)的交谈中,我了解到当前求职市场的一个显著现象:她在招聘平台上发布的初级后端岗位每日吸引了超过500份简历的投递。这一现象凸显了Java后端岗位竞争的激烈程度,尤其是在这个技术日…...

平衡性能与隐私:解读Google的服务器端标记

在当前数字化时代,企业需要深入洞察用户行为,以提高网站转化率。然而,随着用户对隐私保护的期待日益提高以及相关法规的收紧,如何兼顾性能与隐私成为了一大挑战。为了解决这一问题,Google推出了服务器端标记&#xff0…...

在云上怎么样让环境更加安全?

随着云计算的普及,越来越多的企业和组织将其应用迁移到云端。在这个过程中,安全性成为了一个不可忽视的重要因素。华为云作为全球领先的云服务提供商,致力于为用户提供安全可靠的云环境。本文九河云将探讨在华为云上如何增强环境的安全性。 …...

分布式实验一

Socket编程作业: 在Linux系统上,用C编两个程序:Client和Server。两个进程间利用socket进行TCP通信。 要求: Server进程运行后,输出本进程所在主机IP地址以及正在监听的端口号; Client进程运行后&#xff0c…...

网络安全防护指南

网络安全防护指南 网络安全是指保护网络系统中的硬件、软件及数据不受偶然或恶意原因而遭到破坏、更改或泄露,确保网络系统连续可靠地正常运行。随着互联网的普及和技术的发展,网络安全问题日益严峻,对个人、企业和国家都构成了巨大威胁。因…...

DreamCamera2相机预览变形的处理

最近遇到一个问题,相机更换了摄像头后,发现人像角度顺时针旋转了90度,待人像角度正常后,发现 预览时图像有挤压变形,最终解决。在此记录 一人像角度的修改 先放示意图 设备预览人像角度如图1所示,顺时针旋…...

【Go 基础】channel

Go 基础 channel 什么是channel,为什么它可以做到线程安全 Go 的设计思想就是:不要通过共享内存来通信,而是通过通信来共享内存。 前者就是传统的加锁,后者就是 channel。也即,channel 的主要目的就是在多任务间传递…...

长安汽车嵌入式面试题及参考答案

数据结构中的堆栈和编程中的堆栈有什么区别? 在数据结构中,堆栈是一种抽象的数据类型。它遵循后进先出(LIFO)的原则。从操作角度来看,有入栈(push)和出栈(pop)操作。例如…...

理解Linux的select、poll 和 epoll:从原理到应用场景

I/O 多路复用并不是什么新东西,select 早在 1983 年就出现了,poll 在 1997 年,epoll 是 2002 年的产物。面试题总爱问“多路复用多厉害?”其实它就是把轮询的锅甩给了操作系统,而操作系统不过是用 CPU 指令帮你完成事件…...

(一)Linux下安装NVIDIA驱动(操作记录)

目录 一、查看CUDA版本 1.输入nvidia-smi,查看驱动支持的最大CUDA版本,这里是11.6 2.输入nvcc --version,查看当前安装的CUDA版本,这里是11.3 二、卸载旧的NVIDIA驱动 1.卸载原有驱动 2.禁用nouveau(必须&#x…...

二分法篇——于上下边界的扭转压缩间,窥见正解辉映之光(2)

前言 上篇介绍了二分法的相关原理并结合具体题目进行讲解运用,本篇将加大难度,进一步强化对二分法的掌握。 一. 寻找峰值 1.1 题目链接:https://leetcode.cn/problems/find-peak-element/description/ 1.2 题目分析: 题目要求返回数组内…...

移动机器人课程建图实验-ROSbug汇总

问题1描述 $ rosrun robot_state_publisher robot_state_publisher [ERROR] [1733131886.474757207]: [registerPublisher] Failed to contact master at [localhost:11311]. Retrying...解决方案 这个错误信息表明 robot_state_publisher 节点无法联系到 ROS master。通常&…...

记录vite关于tailwindcss4.0-bate4出现margin[m-*]、padding[p-*]无法生效的问题。

环境如下: vite:5.4.10 tailwindcss: 4.0.0-beta.4 tailwindcss/vite: 4.0.0-beta.4 4.0默认的样式优先级比较低 如果使用了一些reset的css文件 那么很多样式会失效 例如:reset.css中 html, body, ul, li, h1, h2, h3, h4, h5, h6, dl, dt, dd, ol, i…...

WPF+MVVM案例实战与特效(三十)- 封装一个系统日志显示控件

文章目录 1、运行效果2、日志控件封装1、文件创建2、DisplayLogPanel.xaml 代码3、DisplayLogPanel.cs 代码4、数据模型5、枚举类型3、自定义控件使用1、LogPanelWindow.xaml2、LogPanelViewModel.cs4、总结1、运行效果 2、日志控件封装 1、文件创建 打开 Wpf_Examples ,在 …...

redis中jedis和lettuce pool的区别,那个更好,使用范围更广

在 Redis 的 Java 客户端中,Jedis 和 Lettuce 是两种最常用的客户端库,它们都支持连接池(JedisPool 和 Lettuce Connection Pool),但在设计和特性上有显著差异。下面我将详细对比它们的特点,帮助你更好地选择适合的库。 1. 同步 vs 异步 Jedis:是一个 同步 的 Redis 客…...

调试openai 星河大模型的记录:用tcpdump和ngrep抓包

在调试esp32开发板连星河大模型的时候,用requests连星河,怎么也调不通,想通过抓包,看看openai和自己写的到底有啥不一样。 结论:抓包抓到的太多,而且ssl 已经把一些信息都处理过了,看不到报文的…...

树莓派明明安装了opencv和numpy,却找不到

当然不止树莓派,配置python环境都可能存在这个问题 可能是因为安装的 numpy 或者 opencv 版本与 Python 的包路径不匹配。下面是问题的常见原因及解决方法:【方法一和二优先考虑】 原因分析 多版本 Python 环境冲突: 树莓派上可能有多个版本…...

【C++boost::asio网络编程】有关异步读写api的笔记

异步读写api 异步写操作async_write_someasync_send 异步读操作async_read_someasync_receive 定义一个Session类&#xff0c;主要是为了服务端专门为客户端服务创建的管理类 class Session { public:Session(std::shared_ptr<asio::ip::tcp::socket> socket);void Conn…...

github仓库自动同步到gitee

Github Actions是Github推出的自动化CI/CD的功能&#xff0c;我们将使用Github Actions让Github仓库同步到Gitee 同步的原理是利用 SSH 公私钥配对的方式拉取 Github 仓库的代码并推送到 Gitee 仓库中&#xff0c;所以我们需要以下几个步骤 生成 SSH 公私钥添加公钥添加私钥配…...

详解LinkedList中的底层实现

1.LinkedList的构造器 无参构造器 /*** Constructs an empty list.*/ public LinkedList() { } 构造Collection: 只要是 Collection 下的实现类都可以被 LinkedList 构造 // ? extends E: 只要是E的子类及E类型的类都可以使用 public LinkedList(Collection<? extends …...

HTML5动漫主题网站 天空之城 10页 html+css+设计报告成品项目模版

&#x1f4c2;文章目录 一、&#x1f4d4;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站演示 五、⚙️网站代码 &#x1f9f1;HTML结构代码 &#x1f492;CSS样式代码 六、&#x1f527;完整源码下载 七、&#x1f4e3;更多 一、&#…...

【VSCode】如何修改左侧资源管理器字体大小

方法一 左下角的“设置”—> 选择“窗口” —> 找到 Zoom Level,一般1、2效果就挺大的&#xff0c;可以设置小数0.5、负数-1等&#xff0c;具体设置说明见下图&#xff1a; 这个有一点不好的是&#xff0c;不仅仅资源管理器字体变化&#xff0c;整个VSCode界面会跟着变…...

使用 Visual Studio 开发 Windows 服务

Windows 服务是一种后台运行的应用程序&#xff0c;可以在没有用户界面的情况下执行任务。以下是从概念到具体实现的详细说明。 1. 什么是 Windows 服务 Windows 服务是运行在 Windows 操作系统上的应用程序&#xff0c;具有以下特点&#xff1a; 后台运行&#xff1a;无需用…...

类型转换与IO流:C++世界的变形与交互之道

文章目录 前言&#x1f384;一、类型转换&#x1f388;1.1 隐式类型转换&#x1f388;1.2 显式类型转换&#x1f381;1. C 风格强制类型转换&#x1f381;2. C 类型转换操作符 &#x1f388;1.3 C 类型转换操作符详解&#x1f381;1. static_cast&#x1f381;2. dynamic_cast&…...

go的web框架介绍

Go 语言有许多优秀的 Web 框架&#xff0c;适用于不同类型的 Web 应用开发&#xff0c;涵盖从简单的 API 开发到复杂的微服务架构。以下是一些常见的 Go Web 框架&#xff1a; 1. Gin 简介&#xff1a;Gin 是一个高性能的 Go Web 框架&#xff0c;设计目标是让开发者能够以极…...

WPF+MVVM案例实战与特效(三十一)- 封装一个加载动画的自定义控件

文章目录 1、案例效果2、案例实现1、资源与文件创建2、自定义控件封装3、自定义控件使用4、总结1、案例效果 2、案例实现 在开发WPF应用程序时,我们常常需要一个灵活的加载动画控件,该控件可以根据窗口的大小自动调整其内部元素(如图片、边框和文本)的尺寸,并且能够通过简…...

cocos creator 3.8 抖音、字节跳动录制器 12

property(Node) luzhishijianDisplay: Node null!;//录制时间显示 property(Node) luzhikaishiBut: Node null!;//录制开始 property(Node) luzhijieshuBut: Node null!;//录制结束 luzhikaishiType: boolean false;//是否开始录制开始计时 gameluzhiTime: number 0;onLoa…...

汽车控制软件下载移动管家手机控车一键启动app

移动管家手机控制汽车系统是一款实现车辆远程智能控制的应用程序‌。通过下载并安装特定的APP&#xff0c;用户可以轻松实现以下功能&#xff1a;‌远程启动与熄火‌&#xff1a;无论身处何地&#xff0c;只要有网络&#xff0c;即可远程启动或熄火车辆&#xff0c;提前预冷或预…...

自由学习记录(28)

C# 中的流&#xff08;Stream&#xff09; 流&#xff08;Stream&#xff09;是用于读取和写入数据的抽象基类。 流表示从数据源读取或向数据源写入数据的矢量过程。 C# 中的流类是从 System.IO.Stream 基类派生的&#xff0c;提供了多种具体实现&#xff0c;每种实现都针对…...