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

机器学习之一:机械式学习

        正如人们有各种各样的学习方法一样,机器学习也有多种学习方法。若按学习时所用的方法进行分类,则机器学习可分为机械式学习指导式学习示例学习类比学习解释学习等。这是温斯顿在1977年提出的一种分类方法。

有关机器学习的基本概念,可看我文章:机器学习的基本概念-CSDN博客 

接下来我们先探讨第一种:机械式学习。

一、什么是机械式学习

(一)基本思想、定义

1.基本思想

机械式学习(Rote Learning)又称为死记式学习,是一种最为简单直接、原始的机器学习方式,其基本思想是直接存储环境所提供的信息,并在需要时原封不动地检索这些信息来解决问题。它不涉及对数据的深入分析、推理或归纳,仅仅是将输入与相应的输出进行一一对应并记录下来。可以将其类比为学生单纯地死记硬背知识,不理解知识背后的原理和逻辑关系,只是在考试时能够准确地回忆出所背诵的内容。

在机械式学习中,系统所做的就是建立一个庞大的记忆库,当接收到新的输入时,尝试在记忆库中找到匹配的记录,并返回相应的输出

2.定义

从形式化的角度来看,设输入空间为X输出空间为 Y。机械式学习系统维护一个记忆表 M,其中存储了一系列的输入-输出对。对于给定的新输入,机械式学习的过程就是在记忆表 M 中查找是否存在x_j使得x_j=x_{new}这里的相等可以根据具体的应用场景定义合适的匹配标准),如果存在,则返回对应的y_j作为输出;如果不存在,则可能返回一个默认值或者表示无法处理该输入。

例如,在一个简单的英语单词翻译系统中,输入空间X是英语单词的集合,输出空间Y是对应的中文翻译的集合。记忆表 M 中存储了大量的英语单词及其对应的中文翻译,如 ("apple", "苹果"),("book", "书") 等。当输入一个新的英语单词 "cat" 时,系统会在记忆表 M 中查找是否存在 "cat" 这个单词,如果找到了,就返回对应的中文翻译 "猫"。

(二)表示形式、实现过程

1.表示形式

(1)表格形式:这是最常见的表示形式,将输入-输出对以表格的形式存储。每一行代表一个输入-输出对,表格的列分别对应输入和输出。

例如,在一个简单的数字平方计算的机械式学习系统中,记忆表可以如下表示:

输入(数字)

输出(平方)

1

1

2

4

3

9

4

16

(2)哈希表形式利用哈希函数将输入映射到一个特定的位置,在该位置存储对应的输出。哈希表的优点是查找速度快,能够在接近常数的时间复杂度内完成查找操作。

例如,对于上述英语单词翻译系统,可以使用哈希函数将英语单词映射到哈希表的不同位置,当输入一个单词时,通过哈希函数快速定位到对应的翻译。假设哈希函数为 (其中word[i]表示单词的第 i 个字符,ASCII(word[i])表示该字符的ASCII码值,N 是哈希表的大小),那么对于单词 "apple",通过哈希函数计算出其在哈希表中的位置,然后在该位置存储 "苹果" 这个翻译。

2.实现过程

(1)数据收集:收集一系列的输入 - 输出对。这些数据可以来自各种渠道,如人工标注、历史记录等。例如,在构建一个图像识别的机械式学习系统时,可以收集大量的图像及其对应的类别标签,如收集许多猫的图像和狗的图像,并分别标注为“猫”和“狗”。

(2)存储:将收集到的输入 - 输出对存储到记忆表中。如果使用表格形式存储,直接将数据添加到表格的相应行中;如果使用哈希表形式存储,则通过哈希函数计算输入的哈希值,将输入 - 输出对存储到对应的哈希桶中。

(3)查询与输出:当接收到新的输入时,在记忆表中进行查询。对于表格形式,遍历表格的每一行,查找与输入匹配的记录;对于哈希表形式,通过哈希函数计算输入的哈希值,直接定位到对应的哈希桶进行查找。如果找到匹配的记录,则返回对应的输出;如果没有找到,则按照预先设定的规则进行处理,如返回一个错误信息或者默认输出。

以一个简单的温度转换机械式学习系统为例(将华氏温度转换为摄氏温度):

(1)数据收集:已知一些华氏温度及其对应的摄氏温度值,如(32, 0),(68, 20),(104, 40)等。

(2)存储:将这些数据存储到一个表格形式的记忆表中。

(3)查询与输出:当输入一个新的华氏温度值,如50时,系统遍历记忆表查找是否存在50这个华氏温度值。如果没有找到,则可能无法准确转换;如果找到匹配的值,则返回对应的摄氏温度值。

(三)算法描述

机械式学习的算法相对简单,主要包括以下几个步骤:

1.初始化记忆表:

创建一个空的记忆表 M,用于存储输入 - 输出对。可以根据具体的需求选择表格形式或哈希表形式等进行存储。

python代码:

# 以表格形式初始化记忆表(Python示例)memory_table = []

2.添加数据到记忆表:

对于每一个输入 - 输出对\left ( x_j, y_j \right ),将其添加到记忆表 M 中。

python代码:

# 向记忆表中添加数据(Python示例)def add_to_memory(x, y, memory_table):memory_table.append((x, y))return memory_table# 示例调用memory_table = add_to_memory(1, 1, memory_table)

3.查询记忆表:

当接收到新的输入x_{new}时,在记忆表 M 中查找是否存在与x_{new}匹配的输入x_{j}

python代码:

# 在记忆表中查询(Python示例)def query_memory(x, memory_table):for item in memory_table:if item[0] == x:return item[1]return None# 示例调用result = query_memory(1, memory_table)

4.返回输出:

如果找到匹配的输入x_{j},则返回对应的输出y_{j};如果没有找到,则根据具体情况返回相应的结果,如默认值或错误信息。

上述算法的时间复杂度主要取决于记忆表的存储结构和大小。如果使用表格形式存储,查询操作的时间复杂度为 O(n),其中 n 是记忆表中记录的数量;如果使用哈希表形式存储,在理想情况下,查询操作的时间复杂度为 O(1),但在存在哈希冲突的情况下,时间复杂度可能会增加。

二、典型案例(塞缪尔的跳棋程序)

塞缪尔的跳棋程序是机械式学习的一个经典应用案例,它展示了机械式学习在游戏领域的应用以及如何通过简单的记忆和检索来提高程序的性能。

1.程序背景与目标

塞缪尔开发的跳棋程序旨在通过学习来提高下棋的水平。虽然该程序不仅仅依赖于机械式学习,但机械式学习在其中起到了重要的基础作用。程序的目标是能够与人类棋手或其他程序进行对弈,并尽可能地赢得比赛。

2.机械式学习在程序中的实现

(1)数据收集:在对弈过程中,程序记录了大量的棋盘状态(输入)和在该状态下采取的最佳走法(输出)。每一个棋盘状态都可以用一个特定的编码方式来表示,例如可以将棋盘上每个棋子的位置、棋子的类型等信息编码成一个向量。对于每一个棋盘状态,程序通过与对手对弈或其他评估方式确定最佳的走法。

(2)存储:将收集到的棋盘状态 - 最佳走法对存储到一个记忆表中。由于棋盘状态的数量可能非常庞大,为了提高存储和查询效率,可能会采用一些优化的存储结构,如哈希表。可以使用一个哈希函数将棋盘状态编码映射到哈希表的不同位置,然后在该位置存储对应的最佳走法。

(3)查询与走法选择:当程序面临一个新的棋盘状态时,它会在记忆表中查询是否存在与当前状态匹配的记录。如果找到匹配的记录,则直接采用记忆表中存储的最佳走法;如果没有找到匹配的记录,则可能需要使用其他策略(如启发式搜索)来确定走法,并将新的棋盘状态 - 走法对添加到记忆表中,以便在未来遇到相同或相似的状态时能够直接使用。

3.示例流程说明

(1)假设当前棋盘状态为 S_1,程序首先将 S_1 编码成一个向量表示。

(2)然后通过哈希函数计算该向量的哈希值,根据哈希值在记忆表中查找是否存在匹配的记录。

(3)如果找到了与 S_1 匹配的记录,假设该记录对应的最佳走法为 M_1,则程序选择走法 M_1 进行下一步操作。

(4)如果没有找到匹配的记录,程序启动启发式搜索算法,在当前棋盘状态下评估各种可能的走法,并选择一个被认为是最佳的走法 M_2。同时,将棋盘状态 S_1 和走法 M_2 作为一个新的输入-输出对添加到记忆表中。

(5)程序继续进行对弈,重复上述过程,不断积累经验并更新记忆表。

塞缪尔的跳棋程序CHECKERS采用极大极小方法搜索博弈树,在给定的搜索深度下用估价函数对格局进行评分,然后通过倒推计算求出上层节点的倒推值,以决定当前的最佳走步

CHECKERS的学习环节把每个格局的倒推值都记录下来,当下次遇到相同的情况时,就直接利用“记住”的倒推值决定最佳走步,而不必重新计算。例如,设在某一格局A时轮到CHECKERS走步,它向前搜索三层,得到如图1所示的捜索树。

图1 博弈搜索树

在图1中,根据对端节点的静态估值,可求得A的倒推值为6,最佳走步是走向C。这时CHECKERS就记住A及其倒推值6。假若在以后的对弈中又出现了格局A且轮到它走步,则它就可以通过检索直接得到A的倒推值,而不必再做倒推计算,这就提高了效率。如果博弈时出现了图2所示的情况,格局A是搜索树的端点,此时使用A的倒推值比使用它的静态估值将更准确,同时由于对A使用了所记忆的倒推值,因而对格局Q来说,相当于搜索深度扩大到六层。

图2 以A为端点的博弈树

机械式学习实质上是用存储空间来换取处理时间。虽然节省了计算时间,但却多占用了

存储空间,当因学习而积累的知识逐渐增多时,占用的空间就会越来越大,检索的效率也将随着下降。所以,在机械式学习中要全面权衡时间与空间的关系,这样才能取得较好的效果。

4.程序的效果与局限

(1)效果:通过不断地记录和利用对弈中的经验,塞缪尔的跳棋程序在一定程度上提高了下棋的水平,能够与一些人类棋手进行有竞争力的对弈。机械式学习使得程序能够快速地利用过去的经验,避免了在相同或相似的情况下重复进行复杂的搜索。

(2)局限:然而,机械式学习也存在一些明显的局限。首先,它只能处理与记忆表中记录完全相同或非常相似的情况,如果遇到全新的、未在记忆表中出现过的棋盘状态,程序可能无法有效地应对。其次,记忆表的大小会随着对弈次数的增加而不断增大,可能会导致存储和查询效率下降。此外,机械式学习不涉及对知识的深入理解和推理,无法从已有的经验中进行归纳和泛化,以应对更广泛的情况。

5.对现代机器学习的启示

塞缪尔的跳棋程序虽然是早期的机器学习尝试,但它为现代机器学习提供了一些重要的启示。一方面,它展示了记忆和经验在学习中的重要性,即使在复杂的任务中,简单的记忆和检索机制也可以起到一定的作用。另一方面,它也揭示了机械式学习的局限性,促使研究人员探索更高级的学习方法,如基于推理、归纳和泛化的学习方法,以提高机器学习系统的智能水平和适应性。

综上所述,机械式学习作为一种基础的机器学习方式,在简单的任务和特定的场景中具有一定的应用价值。塞缪尔的跳棋程序是其典型应用案例,通过对该案例的分析,我们可以更好地理解机械式学习的原理、实现过程以及其优缺点和对现代机器学习的启示。在实际应用中,我们可以根据具体的需求和任务特点,合理地选择是否使用机械式学习,并结合其他学习方法来构建更强大的机器学习系统。

相关文章:

机器学习之一:机械式学习

正如人们有各种各样的学习方法一样,机器学习也有多种学习方法。若按学习时所用的方法进行分类,则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念,…...

区分PROJECT_SOURCE_DIR, CMAKE_SOURCE_DIR,CMAKE_CURRENT_SOURCE_DIR

目录 示例工程 PROJECT_SOURCE_DIR的行为 CMAKE_SOURCE_DIR的行为 CMAKE_CURRENT_SOURCE_DIR 示例工程 根目录 |-----CMakeLists.txt |-----sub1 |--------CMakeLists.txt |-----sub2 |--------CMakeLists.txt 根目录下的CMakeList.txt: project(main)message("main …...

Python循环结构深度解析与高效应用实践

引言:循环结构在编程中的核心地位 循环结构作为程序设计的三大基本结构之一,在Python中通过while和for-in两种循环机制实现迭代操作。本文将从底层原理到高级应用,全面剖析Python循环机制的使用技巧与优化策略,助您掌握高效迭代的…...

25【干货】在Arcgis中根据字段属性重新排序并自动编号的方法(二)

上一篇关于属性表自动编号的文章因为涉及到代码(【干货】在Arcgis中根据字段属性重新排序并自动编号的方法(一)),担心大家有些东西确实不熟悉,今天就更新一篇不需要代码也能达到这个目的的方法。主要的思路…...

SinSR模型剪枝实验报告

SinSR模型剪枝实验报告 实验概述 我成功地对SinSR模型进行了L1范式剪枝,剪枝比例为50%。通过分析剪枝前后的模型参数和性能,我们得出了以下结论。 剪枝实现方法 创建专用的main_prune.py脚本,用于剪枝训练。创建quick_prune.py脚本&#…...

IT社团分析预测项目(pandas、numpy、sklearn)

IT社团人数的增长陷入迟滞,同时不同目标任务和不同经营模式的社团更是层出不穷。在面临内忧外患的情况下,本社团希望结合社团行业现状,分析同学和出勤的数据,挖据数据中的信息,通过对人数流失进行预测寻找到相应的对策…...

C语言中位段的应用

一,位段的主要应用场景 硬件寄存器操作 嵌入式开发中,硬件寄存器通常以位为单位控制设备状态。位段可直接映射到寄存器,简化位操作: typedef struct {unsigned int enable : 1; // 使能位unsigned int mode : 3; // 模式选择&…...

【Linux网络#1】:网络基础知识

1、网络发展 在计算机发展历程中,经历过下面四个阶段: 1.独立模式 独立模式:计算机之间相互独立,每台计算机做自己的事情,彼此之间没有直接信息传递。如果两台计算机需要通信就需要将当前计算机的数据通过某种方式拷贝…...

基于物联网的园林防火监测系统

标题:基于物联网的园林防火监测系统 内容:1.摘要 随着全球气候变化和人类活动影响,园林火灾发生频率呈上升趋势,给生态环境和人类生命财产造成巨大损失。为有效预防和应对园林火灾,本文提出基于物联网的园林防火监测系统。该系统综合运用传感…...

华为云loT物联网介绍与使用

🌐 华为云 IoT 物联网平台详解:构建万物互联的智能底座 随着万物互联时代的到来,物联网(IoT)已成为推动数字化转型的关键技术之一。华为云 IoT 平台(IoT Device Access)作为华为云的核心服务之…...

Redis 数据类型全览:特性、场景与操作实例

Redis 是一款开源的内存数据库,支持多种数据类型,以下是对常见 Redis 数据类型的介绍: 1. String(字符串) 描述 字符串是 Redis 里最基础的数据类型,其值可以是简单的字符串、数字,甚至是二进…...

Qt动态库信号崩溃问题解决方案

在Qt中,当动态库向主程序发送信号导致崩溃时,通常涉及线程安全或对象生命周期问题。以下是逐步解决方案: 1. 检查线程上下文 问题:动态库所在的线程与主程序线程不同,跨线程信号未正确处理。解决方案: 显式…...

Go设计模式-观察者模式

简介 在软件开发中,我们常常会遇到这样的场景:一个对象的状态变化需要通知到多个其他对象,让它们做出相应的反应。观察者模式(Observer Pattern)就是解决这类问题的一种设计模式。在 Go 语言中,由于其简洁…...

《TCP/IP详解 卷1:协议》之第七、八章:Ping Traceroute

目录 一、ICMP回显请求和回显应答 1、ICMP回显请求 2、ICMP回显应答 二、ARP高速缓存 三、IP记录路由选项(Record Route,RR) 1、记录路由选项的工作过程 2、RR 选项的 IP 头部格式 2.1、RR 请求 2.2、RR响应 四、ping 的去返路径 五…...

Unity任务系统笔记

数据结构设计 任务基类包括的字段: string 任务内容; Transform 任务目的地; MyCharacter 任务开启后要更新对话的NPC; MyTalkData 任务开启后相关NPC要说的对话数据; 共同方法:开启任务、完成任务。…...

Three.js + React 实战系列-3D 个人主页:构建 Hero 场景组件(项目核心)✨

在本节中,我们将完成整个 3D 主业项目中最核心的组件 —— Hero.jsx。 这个组件作为首页的主视觉部分,整合了 3D 模型、动画相机、交互按钮与自适应布局,构建出一个立体、酷炫、可交互的主场景。 前置准备: ✅安装依赖&#xff…...

线程池(二):深入剖析synchronized关键字的底层原理

线程池(二):深入剖析synchronized关键字的底层原理 线程池(二):深入剖析synchronized关键字的底层原理一、基本使用1.1 修饰实例方法1.2 修饰静态方法1.3 修饰代码块 二、Monitor2.1 Monitor的概念2.2 Moni…...

网络原理 - 9

目录 数据链路层 以太网 以太网帧格式 MAC 地址 DNS(Domain Name System) 完! 数据链路层 这里的内容也是简单了解,除非是做交换机开发,一般程序员不需要涉及~~ 以太网 ”以太网“不是一种具体的网络&#xf…...

springboot入门-业务逻辑核心service层

在 Spring Boot 中,Service 层是业务逻辑的核心,负责协调数据访问层(Repository 或 Mapper)和控制器层(Controller),处理业务规则、事务管理以及数据转换。以下是 Service 层的详细说明、常用注…...

在RHEL 10上安装和配置TFTP服务器(不使用xinetd)

RHEL10已经废弃xinetd,使用下面的方式安装配置TFTP服务器。 1. 安装TFTP服务器和客户端 sudo dnf install tftp-server tftp -y 2. 配置TFTP服务器 创建TFTP根目录并设置权限 sudo mkdir -p /var/lib/tftpboot sudo chmod -R 777 /var/lib/tftpboot sudo chown -R…...

AIGC在游戏开发中的革命:自动化生成3A级游戏内容

一、智能游戏开发架构 1.1 传统开发痛点与AIGC创新 开发环节 传统痛点 AIGC解决方案 角色原画设计 美术资源产能瓶颈 文生图3D模型自动生成 场景搭建 重复劳动占比高 程序化生成风格迁移 NPC行为设计 模式化严重 强化学习驱动智能行为 任务系统 剧情线性缺乏变化 动态剧情生成系…...

ChatGPT、deepseek、豆包、Kimi、通义千问、腾讯元宝、文心一言、智谱清言代码能力对比

均使用测试时的最强模型 均是一次对话,对话内容一样 均开启深度思考 能联网的都联网了,但是作用不大,因为蓝桥杯刚考完,洛谷题目刚上传没多久 问题一测试了两遍 从问题三开始不再测试智谱清言(它思考时间太长了,前两个…...

Linux扩展

目录 扩展 查找如何进行后台运行程序的指令 使用 & 符号 使用 nohup 命令 使用 screen 或 tmux find命令 基本语法 常用选项 grep 命令 基本语法 常用选项 如何使用 vim 直接定位到错误行 1. 使用 :make 和 :copen 2. 使用 :lineno 定位 3. 通过 :grep 或 :…...

Java Hotspot VM researcher

** therefore, careful design and understanding of modules are essential to fully reap the performance benefits. **...

java—基础

目标 ├── 第一阶段:内容清单 │ └── 目标:建立编程思想 ├── 第二阶段:内容清单 │ └── 目标:提升编程能力 └── 第三阶段:内容清单└── 目标:分析需求,代码实现能力以下是根…...

【OpenCV】第二章——图像处理基础

图像处理基础学习笔记 本章节详细介绍了图像处理的基础内容,包括图像的读取、显示、保存,基本属性的查看,图像的变换与操作,以及常用的图像处理方法。 目录 图像的读取与显示图像基本属性图像的灰度化与二值化图像的色彩空间转换…...

在WSL2+Ubuntu22.04中通过conda pack导出一个conda环境包,然后尝试导入该环境包

如何导出一个离线conda环境?有两种方式,一种是导出env.yml即环境配置,一种是通过conda pack导出为一个环境包,前者只是导出配置(包括包名、版本等),而后者是直接将环境中所有的内容打包&#xf…...

C++:类和对象(上)---镜中万象:C++类的抽象之境与对象的具体之象

类(Class)是一种用户自定义的数据类型。 文章目录: 前言一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 3.1类是什么? 3.2类的定义 四、类的访问限定符和封装 4.1类的访问限定符 4.2封装 五、类和对象的关系 六、类对…...

碰一碰发视频源码搭建全解析,支持OEM

在数字化交互体验不断升级的背景下,“碰一碰发视频” 功能凭借其便捷性和趣味性,逐渐成为营销推广、社交分享等场景中的热门需求。该功能基于近场通信技术,实现设备间快速的数据传输。本文将详细介绍其源码搭建过程,助力开发者实现…...

搭建spark-local模式

要搭建Spark的local模式,你可以按照以下步骤进行操作(以在Linux系统上安装为例,假设你已经安装了Java环境): 1. 下载Spark安装包:访问Spark官方网站(https://spark.apache.org/downloads.html&a…...

Goland终端PowerShell命令失效

Goland终端Terminal的PowerShell不能使用,明明windows上升级了PowerShell 7设置了配置文件,但是只能在windows终端下使用,goland终端下直接失效报错,安装升级PowerShell请看[博客](Windows11终端升级PowerShell7 - HashFlag - 博客…...

前端节流、防抖函数

节流 什么是节流? 节流就是同一个事件 一秒钟他执行了很多次。但是我不想他执行这么多次,我只想让他执行一次 或者两次。 那该怎么办? why baby why 那我想就是他执行的时候 我就设置一个定时器,如果定时器是空的,等会…...

如何使用WebRTC

WebRTC比较容易使用,只需要很少的步骤,有些消息在浏览器和服务器之间流动,有些则直接在两个浏览器之间流动, 1、建立WebRTC会话 a:建立WebRTC连接需要加入以下几个步骤: 获取本地媒体:getUse…...

在 Vue 3 setup() 函数中使用 TypeScript 处理 null 和 undefined 的最佳实践

在 Vue 3 中使用 setup() 函数和 TypeScript 时,null 和 undefined 是两个需要特别关注的类型。虽然它们看起来都表示“没有值”,但它们在 JavaScript 和 TypeScript 中有着不同的含义和使用场景。如果不小心处理它们,可能会导致潜在的 bug 或…...

【C++11】Lambda表达式

前言 上文我们学习了C11新语法,可变参数模板以及用可变参数模板作为形参的emplace接口。【C11】可变参数模板-CSDN博客 本文我们来学习C11下一个新语法,Lambda表达式。 1.Lambda表达式语法 Lambda表达式本质是一个匿名函数对象,与普通函数不同…...

【落羽的落羽 C++】vector

文章目录 一、vector类介绍二、vector中的常用接口三、迭代器失效问题四、vector的使用实例五、vector模拟实现 一、vector类介绍 vector是STL中的一种容器,本质上是顺序表。它和string类的结构很相似,其也有size、capacity、数组等,不同的是…...

DIFY 浅尝 - Dify + Ollama 抓取BBC新闻

假设你已经按照上篇文章 DIFY 浅尝 - DIFY Ollama 添加模型搭建好了本地环境. 创建一个新的工作流 进入你的本地Dify工作台,选择工作室->创建空白应用 选择工作流,输入应用名称BBC旅游新闻,点击创建 创建一个网页爬虫 配置网页爬虫…...

基于MTF的1D-2D-CNN-BiLSTM-Attention时序图像多模态融合的故障分类识别(Matlab完整源码和数据),适合研究学习,附模型研究报告

基于MTF的1D-2D-CNN-BiLSTM-Attention时序图像多模态融合的故障分类识别(Matlab完整源码和数据),适合研究学习,附模型研究报告 目录 基于MTF的1D-2D-CNN-BiLSTM-Attention时序图像多模态融合的故障分类识别(Matlab完整…...

nuxt3项目搭建:一、初始化项目流程指南

一、初始化项目 初始化命令 1、创建nuxt3项目 npm create nuxtlatest2、填写项目名称 这里我直接填了nuxt-app 3、选择包管理器 这里的包管理器我们选择pnpm 4、选择是否创建git仓库 选择完包管理器后,脚手架会自动下载依赖,git仓库我已经创建好了…...

案例速成GO+redis 个人笔记

更多个人笔记:(仅供参考,非盈利) gitee: https://gitee.com/harryhack/it_note github: https://github.com/ZHLOVEYY/IT_note (更多GOredis等见内部,会及时更新~&#x…...

C/C++ 头文件包含机制:从语法到最佳实践

在C/C++编程中,头文件(.h 或 .hpp)扮演着至关重要的角色。它们不仅是代码模块化的基石,更是编译器理解程序结构的关键。然而,头文件的使用看似简单,实则暗含许多细节,稍有不慎便可能导致编译错误、代码冗余,甚至隐藏难以调试的问题。本文将从语法、编译器行为到工程实践…...

职业教育新形态数字教材的建设与应用:重构教育生态的数字化革命

教育部新时代职业学校名师(名匠)名校长培养计划、四川省第四批职业学校名师(名匠)培养计划专题 在某职业院校的智能制造课堂上,学生佩戴VR设备,通过数字教材中的虚拟工厂完成设备装配训练,系统实时生成操作评分与改进建议。这一场景折射出职业…...

跟着deepseek学golang--Go vs Java vs JavaScript三语言的差异

文章目录 一、类型系统与编译方式1. 类型检查时机2. 空值安全设计 二、并发模型对比1. 并发单元实现4. 锁机制差异 三、内存管理机制1. 垃圾回收对比2. 对象模型差异 四、工程实践差异1. 依赖管理工具4. 异常处理范式 五、跨平台能力对比1. 编译输出目标 综合对比表​​五角星说…...

梯度下降法

梯度下降法是一种常见的求最小值(或最值)的方法。它是通过沿着函数梯度的负方向进行迭代更新,直到找到局部最小值或最大值。梯度下降法应用于多元函数时,通过更新参数的方式找到最优解。 梯度下降法步骤: 初始化参数&…...

【Java 数据结构】List,ArrayList与顺序表

目录 一. List 1.1 什么是List 1.2 List 的常见方法 1.3 List 的使用 二. 顺序表 2.1 什么是顺序表 2.2 实现自己的顺序表 2.2.1 接口实现 2.2.2 实现顺序表 三. ArrayList 3.1 ArrayList简介 3.2 ArrayList的三个构造方法 3.2.1 无参构造方法 3.2.2 带一个参数的…...

用Python做有趣的AI项目1:用 TensorFlow 实现图像分类(识别猫、狗、汽车等)

项目目标 通过构建卷积神经网络(CNN),让模型学会识别图片中是什么物体。我们将使用 CIFAR-10 数据集,它包含 10 类:飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车。 🛠️ 开发环境与依赖 安装依赖&…...

正确应对监管部门的数据安全审查

首席数据官高鹏律师团队编著 在当今数字化时代,数据安全已成为企业及各类组织面临的重要议题,而监管部门的数据安全审查更是关乎其生存与发展的关键挑战。随着法律法规的不断完善与监管力度的加强,如何妥善应对这一审查,避免潜在…...

Springboot用IDEA打jar包 运行时 错误: 找不到或无法加载主类

Springboot用IDEA打jar包 运行时 错误: 找不到或无法加载主类 今天遇到个很神奇的问题。 就是我在打包我项目后。用java -jar命令的话 是无法启动这个项目的。 但是我在idea里面进行运行 就可以运行 先说结论 因为我这个是jdk17的项目 而我本机的jdk是1.8 所以说就会出现…...

【Linux网络】构建与优化HTTP请求处理 - HttpRequest从理解到实现

📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...

【高频考点精讲】实现垂直居中的多种CSS方法比较与最佳实践

前端工程师必看:7种CSS垂直居中方案大比拼(附真实代码) 今天咱们聊聊前端开发中最让人头疼的问题之一——垂直居中。不知道你们有没有遇到过这种情况:明明设置了margin: 0 auto水平居中了,垂直方向怎么折腾都不对劲。全栈老李当年刚入行时,为了一个div居中能折腾一晚上,…...