数据结构与算法入门 Day 0:程序世界的基石与密码
🌟数据结构与算法入门 Day 0:程序世界的基石与密码🔑
ps:接受到了不少的私信反馈,说应该先把前置的知识内容做一个梳理,所以把昨天的文章删除了,重新开启今天的博文写作
Hey 小伙伴们!今天我们要一起推开数据结构与算法的大门啦!🚪✨这篇笔记特别适合:
- 刚接触编程的小白🐣
- 想系统巩固基础的同学📚
- 面试前需要快速复习的勇者💪
一、数据结构的DNA🧬
🌱 先导概念:程序世界的原子与分子
1.1 数据 vs 算法(生命体的物质与灵魂)
// 数据就像细胞
int student_scores[] = {90, 85, 78}; // 算法如同基因表达过程
// 算法的设计取决于所选定的逻辑结构,而算法的实现则要考虑到所用的存储结构
void calculate_avg(int arr[], int size) {int sum = 0;for(int i=0; i<size; i++) {sum += arr[i]; // 数据加工}printf("平均分:%d", sum/size); // 信息输出
}
1.2 五层概念解剖
1.3 数据结构的组成要素
🧪 综合实验:学生管理系统DNA拆解
1 系统要素映射表
概念 | 具体实现 | C语言对应 |
---|---|---|
数据 | 学生信息原始值 | int student_id |
数据元素 | 单个学生完整档案 | struct Student |
数据项 | 学号/姓名/成绩 | 结构体成员变量 |
数据对象 | 全体学生数据库 | Student class1[50] |
数据结构 | 按学号组织的存储方式 | 结构体数组+排序算法 |
数据类型 | 学生信息抽象模板 | typedef struct |
2 算法实例:成绩查询系统
// 结构定义
typedef struct {long id;char name[20];float score;
} Student;// 线性查找算法
int find_student(Student arr[], int size, long target_id) {for(int i=0; i<size; i++) {if(arr[i].id == target_id) { // 数据比对printf("找到学生:%s,分数:%.1f", arr[i].name, arr[i].score);return i;}}return -1;
}
二、算法五性验证🔍
特性 | 内涵解析 | 验证要点 |
---|---|---|
有穷性 🕒 | 执行步骤有限,时间可接受 | 循环终止条件、递归深度控制 |
确定性 🎯 | 无二义性,相同输入必得相同输出 | 条件判断明确,无随机因素 |
可行性 ⚙️ | 可通过基本操作实现 | 使用语言支持的数据类型和运算 |
输入 📥 | 零个或多个外部输入 | 参数合法性检查 |
输出 📤 | 至少一个有效输出 | 返回值/参数输出/文件写入等形式 |
2.1 学生管理系统DNA验证实验 🧪
系统核心代码回顾
typedef struct {long id; // 学号(数据项)char name[20]; // 姓名(数据项)float score; // 成绩(数据项)
} Student; // 数据元素Student class[50]; // 数据对象(50人班级)// 查找算法
int find_student(long target_id) {for(int i=0; i<50; i++) { // 明确循环边界if(class[i].id == target_id) { // 确定比较条件printf("找到学生:%s", class[i].name);return i; // 有效输出}}return -1; // 异常输出
}
五性验证表
特性 | 验证过程 | 测试用例 | 结果 |
---|---|---|---|
有穷性 | 循环最多执行50次 → 有限步骤 | target_id=不存在学号 | ✅ |
确定性 | 相同学号必定定位到同一学生 | 重复输入相同学号 | ✅ |
可行性 | 仅使用数组遍历和数值比较基本操作 | 正常学号输入 | ✅ |
输入 | 接受long型参数 | 输入"20231234" | ✅ |
输出 | 返回int型索引或-1 | 找到返回位置,未找到返回-1 | ✅ |
2.2 经典算法三重验证 🏋️♂️
2.2.1 二分查找(确定性典范)
int binary_search(int arr[], int size, int target) {int left = 0, right = size-1; // 明确初始条件while(left <= right) { // 循环终止条件int mid = left + (right-left)/2; // 防止溢出if(arr[mid] == target) return mid;else if(arr[mid] < target) left = mid+1; // 确定路径else right = mid-1;}return -1; // 必有输出
}
2.2.2 递归算法(有穷性挑战)
int factorial(int n) {if(n <= 1) return 1; // 递归基确保终止else return n * factorial(n-1); // 规模递减
}
特性 | 风险点 | 解决方案 |
---|---|---|
有穷性 | 未处理负数导致无限递归 | 添加参数校验 if(n<0) return -1; |
可行性 | 阶乘值可能溢出int范围 | 改用long类型 |
输出 | 未定义非法输入的返回值 | 明确错误码机制 |
2.2.3 动态规划(可行性示范)
int fib(int n) {int dp[n+1]; // 辅助空间dp[0] = 0; dp[1] = 1; // 明确初始值for(int i=2; i<=n; i++){ // 严格递增dp[i] = dp[i-1] + dp[i-2]; // 状态转移}return dp[n]; // 确定输出
}
2.3 算法特性关系图谱 🔗
💡 避坑指南:在实现递归算法时,建议画出递归树验证有穷性;对浮点运算要特别注意确定性问题(如0.1+0.2≠0.3)!
三、复杂度计算手册📚(C语言特供版)
3.1、复杂度运算方法论 🧮
3.1.1 大O表示法黄金法则
- 去常原则:
O(3n²+5n) → O(n²)
- 去低阶项:
O(n³ + 2n²) → O(n³)
- 系数归一:
O(2n) → O(n)
- 对数底数忽略:
O(log₂n) → O(log n)
3.1.2 复杂度计算四步法
- 识别基本操作:找出最频繁执行的核心语句
- 确定输入规模n:数组长度/链表节点数等
- 计算执行次数f(n):建立数学表达式
- 简化表达式:应用大O法则
3.2、时间复杂度实战演练 💻
3.2.1 新手村:线性结构复杂度
// 案例1:O(1) 数组随机访问
int get_first(int arr[], int n) {return arr[0]; // 仅执行1次访问
}// 案例2:O(n) 顺序查找
int linear_search(int arr[], int n, int target) {for(int i=0; i<n; i++) { // 循环n次if(arr[i] == target) return i;}return -1;
}// 案例3:O(n²) 冒泡排序
void bubble_sort(int arr[], int n) {for(int i=0; i<n-1; i++) { // 外层n次for(int j=0; j<n-i-1; j++) { // 内层n-i次if(arr[j] > arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}} // 总次数 = Σ(n-i) ≈ n²/2 → O(n²)
}
2.2 进阶区:递归与分治复杂度
// 案例4:O(2ⁿ) 斐波那契(递归版)
int fib(int n) {if(n <= 1) return n;return fib(n-1) + fib(n-2); // 每层分裂2个子问题
}// 案例5:O(n) 斐波那契(动态规划版)
int dp_fib(int n) {int dp[n+1];dp[0]=0; dp[1]=1;for(int i=2; i<=n; i++){ // 单层循环dp[i] = dp[i-1]+dp[i-2];}return dp[n];
}// 案例6:O(n log n) 归并排序
void merge_sort(int arr[], int l, int r) {if(l < r) {int mid = l + (r-l)/2;merge_sort(arr, l, mid); // T(n/2)merge_sort(arr, mid+1, r); // T(n/2)merge(arr, l, mid, r); // O(n)} // 递归方程:T(n)=2T(n/2)+O(n) → O(n log n)
}
3.3、空间复杂度深度解析 🧠
3.3.1 空间复杂度类型
类型 | 特征 | 示例 |
---|---|---|
O(1) | 固定大小的额外空间 | 临时变量、指针 |
O(n) | 与输入规模成线性关系 | 动态数组、哈希表 |
O(n²) | 二维数据结构 | 邻接矩阵、二维数组 |
O(log n) | 递归栈空间 | 二分查找递归版 |
3.3.2 空间复杂度对比实验
// 实验1:O(1) 原地反转数组
void reverse_array(int arr[], int n) { // 仅用1个临时变量for(int i=0; i<n/2; i++) {int temp = arr[i];arr[i] = arr[n-1-i];arr[n-1-i] = temp;}
}// 实验2:O(n) 斐波那契DP版(见案例5)// 实验3:O(n) 递归阶乘
int factorial(int n) {if(n <= 1) return 1;return n * factorial(n-1); // 递归深度n → 栈空间O(n)
}
3.4 复杂度速查表(程序员必备)
操作场景 | 时间复杂度 | 空间复杂度 | 典型场景 |
---|---|---|---|
数组随机访问 | O(1) | O(1) | arr[i] |
链表插入节点 | O(1) | O(1) | 已知插入位置 |
哈希表查找 | O(1) | O(n) | 无冲突的理想情况 |
平衡树操作 | O(log n) | O(n) | AVL树、红黑树 |
图的邻接矩阵遍历 | O(n²) | O(n²) | 存储所有顶点关系 |
四、终极知识图谱🗺️
🔜下期剧透:顺序表的奇幻之旅
明天我们将深入:
- 🧩顺序表的底层内存原理
- ⚡C语言实现动态数组
- 💣内存管理的常见陷阱
- 🔥时间复杂度实测对比(附性能测试代码)
准备好你的编译器,我们明天一起coding!🚀
💡学习小贴士:建议在本地IDE中运行所有代码示例,尝试修改参数观察运行结果的变化。复杂度分析部分可以尝试画出「语句执行频度表」辅助理解哦~
相关文章:
数据结构与算法入门 Day 0:程序世界的基石与密码
🌟数据结构与算法入门 Day 0:程序世界的基石与密码🔑 ps:接受到了不少的私信反馈,说应该先把前置的知识内容做一个梳理,所以把昨天的文章删除了,重新开启今天的博文写作 Hey 小伙伴们ÿ…...
20250416在荣品的PRO-RK3566开发板的Android13下编译native C的应用程序的步骤
mm编译的简略步骤以及详细LOG,仅供参考: rootrootrootroot-X99-Turbo:~/hailuo_temp/Android13.0$ source build/envsetup.sh rootrootrootroot-X99-Turbo:~/hailuo_temp/Android13.0$ lunch 57. rk3566_t-userdebug Pick from common choices abo…...
Pikachu靶场——Cross-Site Scripting
使用ubantu-linux虚拟机通过docker镜像本地搭建 一,反射型xss(get) 1,观察靶场环境,功能是提交你最喜欢的NBA球星 2,可以通过burp suite抓包分析一下 通过GET请求提交输入的姓名,这是及其危险的 3,尝试使用…...
ArkTS组件的三个通用(通用事件、通用属性、通用手势)
文章目录 通用事件点击事件 onClick触摸事件 onTouch挂载、卸载事件拖拽事件按键事件 onKeyEvent焦点事件鼠标事件悬浮事件组件区域变化事件 onAreaChange组件尺寸变化事件组件可见区域变化事件组件快捷键事件自定义事件分发自定义事件拦截 通用属性尺寸设置位置设置布局约束边…...
双token实现无感刷新
一、方案说明 1. 核心流程 用户登录 提交账号密码 → 服务端验证 → 返回Access Token(前端存储) Refresh Token(HttpOnly Cookie) 业务请求 请求头携带Access Token → 服务端验证有效性 → 有效则返回数据 Token过…...
UE5游戏分辨率设置和窗口模式
第一种方法: 在项目配置Config文件夹下新建 DefaultGameUserSettings.ini 输入代码 [/Script/Engine.GameUserSettings] bUseVSyncFalse ResolutionSizeX1960 ResolutionSizeY1080 LastUserConfirmedResolutionSizeX800 LastUserConfirmedResolutionSizeY600 WindowPosX-1 …...
Java 线程中断 Interrupted
线程中断是 Java 中的一种协作机制,用于通知线程应该停止当前工作并退出。 中断就好比其它线程跟当前线程打了个招呼,告诉他可以执行中断操作。其他线程通过调用该线程的interrupt()方法对其进行中断操作。 中断并不会直接终止线程,而是设置…...
Android Jetpack是什么与原生android 有什么区别
Android Jetpack是什么 Android Jetpack是Google推出的一套开发组件工具集,旨在帮助开发者更高效地构建高质量的Android应用。它包含多个库和工具,被分为架构、用户界面、行为和基础四大类。以下是一些Android Jetpack的示例: 架构组件 ViewModel:用于以生命周期的方式管理…...
从0~1写一个starer启动器
从0到1编写一个Spring Boot Starter 前言 使用过Spring框架的伙伴都知道,虽然Spring在一定程度上帮助我们简化了集成其他框架,但在集成框架的同时仍少不了大量的XML配置,这些繁琐的工作无疑会加重我们的工作任务。而Spring Boot相较于Sprin…...
prime-2 靶场笔记(vuInhub靶场)
前言: 在本次靶场环境中涉及的知识点,主要包含LFI和SMB以及Lxd组提权,具体内容包括主机探测、端口扫描、目录扫描、wpscan扫描、反弹shell、一句话木马、容器、linux各种提权和维持。 环境介绍: 本靶场使用了kali(192…...
Node.js 中的 Buffer(缓冲区)
下面是关于 Node.js 中的 Buffer(缓冲区) 的系统总结,涵盖了定义、创建、读取修改、溢出处理、中文编码问题以及字符串转换等关键用法👇 🧱 一、什么是 Buffer? Buffer 是 Node.js 提供的用于处理二进制数…...
如何学习嵌入式
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.16 请各位前辈能否给我提点建议,或者学习路线指导一下 STM32单片机学习总…...
高版本Android (AIDL HAL) 使用HIDL方法
目录 修改步骤和编译方法 注意事项 Android 11 引入了使用 AIDL 实现 HAL 的功能。 后续Android新版本,HAL默认切到了使用AIDL. 因此当导入旧HIDL实现方式时,需要做一些修改。 1.将HAL HIDL模块拷贝到相应目录,进行编译 source build/envsetup.sh lunch xxx mmm 模块路径 1.…...
Cribl (实验) vpc-flow 数据抽样
先看文档: Firewall Logs: VPC Flow Logs, Cisco ASA, Etc. | Cribl Docs Firewall Logs: VPC Flow Logs, Cisco ASA, Etc. Recipe for Sampling Firewall Logs Firewall logs are another source of important operational (and security) data. Typical examples include Ama…...
RK3568 更换显示logo
文章目录 1、环境介绍2、替换logo 1、环境介绍 硬件:飞凌ok3568-c开发板 软件:原厂rk356x sdk 屏幕:1024*600 hdmi屏 2、替换logo 这是一件提无语的事。本来替换logo是很平常的一件事。即替换kernel目录下的logo图片即可: 但…...
修改wsl中发行版Ubuntu的主机名
我wsl2中装了两个ubuntu的发行版本,默认下主机名和我的windows主机名都一样,而且包含大写字母,在配置其他应用时经常会出问题,按照下面的顺序修改了一下: 1、打开ubuntu发行版 现在显示包含大写字母和数字的主机名。 …...
Python学习之路(三)
将 Python 与数据库对接是开发过程中常见的任务,可以使用多种数据库(如 SQLite、MySQL、PostgreSQL、Oracle、MongoDB 等)。以下是一些常见的数据库及其与 Python 的对接方法,包括安装库、连接数据库、执行查询和操作数据的示例。…...
多功能门禁系统的设计
本课题为多功能门禁系统的设计,其系统架构如图2.1所示,整个系统由STM32F103单片机和MaixBit开发板两部分构成,其中MaixBit是基于K210芯片的开发板,在此主要负责人脸的录入,识别,液晶显示等功能,…...
C/C++---头文件保护机制
在 C 和 C 编程里,头文件保护机制是一种防止头文件被重复包含的技术,它主要借助 #ifndef、#define 和 #endif 这些预处理指令来达成,也可以使用 #pragma once 这一编译器特定指令。下面详细阐述这一机制: 1. 头文件重复包含的问题…...
双指针算法(一)
目录 一、力扣——283、移动零 二、力扣——1089、复写零 三、力扣——11、盛最多的水 四、力扣——202、快乐数 一、力扣——283、移动零 题目如下: 这里我们用双指针算法,用的是双指针的思想,我们在这道题在数组下操作可以用数组下标。…...
LNMP架构部署论坛
目录 1.安装Nginx服务 1.系统初始化 2.安装工具包及依赖包 3.创建运行用户 4.编译安装 5.优化路径 6.添加 Nginx 系统服 2.安装MySQL服务 1.确定GLIBC版本 2.上传二进制压缩包并解压 3. 创建运行用户 4. 创建 mysql 配置文件 5.更改mysql安装目录和配…...
微信小程序边框容器带三角指向
效果图 .wxml <view class"tb"><view class"tb-pointer" style"--n:{{n}}rpx;" /> </view> <button bind:tap"addPixel">增加三角一个像素</button>.js Page({data: {n:16,},addPixel(){this.setData…...
RISCV Hardware Performance Monitor 和 Sscofpmf 扩展
文章目录 前言RISCV的HPMSscofpmf 扩展总结 前言 Perf 全名是 Performance Event,应用可以利用 PMU (Performance Monitoring Unit)、tracepoint 和核心内部的特殊计数器(counter)来进行统计,另外还能同时分析运行中的核心代码&a…...
MATLAB脚本实现了一个三自由度的通用航空运载器(CAV-H)的轨迹仿真,主要用于模拟升力体在不同飞行阶段(初始滑翔段、滑翔段、下压段)的运动轨迹
%升力体:通用航空运载器CAV-H %读取数据1 升力系数 alpha = [10 15 20]; Ma = [3.5 5 8 10 15 20 23]; alpha1 = 10:0.1:20; Ma1 = 3.5:0.1:23; [Ma1, alpha1] = meshgrid(Ma1, alpha1); CL = readmatrix(simulation.xlsx, Sheet, Sheet1, Range, B2:H4); CL1 = interp2(…...
GIS开发笔记(4)结合osg及osgEarth实现地图选点功能
一、实现效果:在地球上点击某个点后,显示该点的坐标。 二、实现原理: viewer添加事件处理器类,类中响应鼠标左键事件,获取坐标点显示。 三、参考代码: #pragma once#include <osgGA/GUIEventHandler> #include...
halcon模板匹配(五)find_shape_model_clutter
目录 一、find_shape_model_clutter例程目的二、默认模板匹配的过程三、定义杂波区域四、设置模型的杂波区域 一、find_shape_model_clutter例程目的 如下图所示,这个例程是想找到左图所示区域内的目标,要求上下临近区域无目标。 默认参数匹配结果 二…...
openGauss使用指南与SQL转换注意事项
openGauss 使用指南与SQL转换注意事项 基本说明 openGauss数据库内核基于PostgreSQL(pgsql),因此可以将SQL Server语句转换为pgsql语句。可以使用AI工具辅助转换,但需注意以下关键差异点。 数据类型转换注意事项 字符串类型处理 nvarchar转换&#…...
前端基础之《Vue(5)—组件基础》
一、什么是组件化 1、理解组件化 组件是HTML的扩展,使用粒度较小的HTML元素封装成粒度更大的标签(Vue组件)。可以实现快速开发、代码复用、提升可维护性。 相当于盖房子,用预制板,不是用一块块砖,一天可以…...
责任链模式(Chain of Responsibility Pattern)
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许将请求沿着处理者链进行传递,直到有一个处理者能够处理该请求为止。在这个模式中,多个处理者对象会形成一个链条,每个处理者都有机会处理请求,或者将请求传递给链条中的下一个处理者。这种模式将…...
C++算法(9):数组作为函数参数,注意事项与实践
C编程中,数组作为函数参数传递是一个常见但容易出错的操作。本文将详细介绍数组作为函数参数时需要注意的关键问题,帮助开发者避免常见的陷阱。 主要注意事项 1. 数组作为参数的本质 参数声明形式实际传递内容大小信息int arr[]数组首地址丢失int arr[…...
特性(Attribute)
特性(Attribute)的概念 定义 特性是用于向代码元素(类、方法、属性等)添加元数据的类,继承自 System.Attribute。 元数据提供程序化的描述信息,供运行时或工具(如编译器、反射)使…...
使用CubeMX新建SysTick延时函数工程——使用中断,不使用HAL_Delay
具体操作步骤看这里:STM32CubeMX学习笔记(4)——系统延时使用_cubemx systick-CSDN博客 1、SysTick 初始化函数 SysTick 初始化函数由用户编写,里面调用了 SysTick_Config() 这个固件库函数,通过设置该固件 库函数的形…...
从零开始实现 MobileViT 注意力机制——轻量级Transformer Vision Model 的新思路
从零开始实现 MobileViT 注意力机制——轻量级Transformer Vision Model 的新思路 近年来,计算机视觉领域中 Transformer 模型的崛起为图像处理带来了新的活力。特别是在 ViT(Vision Transformer)模型提出之后,Transformer 在图像…...
Doris部署生产集群最低要求的部署方案
Doris生产集群最低部署方案(2025年4月版) 一、节点规划与数量 1. FE节点(Frontend) 数量:至少 3个节点(1个Follower 2个 Observer),确保高可用(HA)。角色分…...
如何实现“一机两用” 寻求安全与效率的完美平衡
#### 一机两用的背景 在数字化时代,无论是企业还是政府部门,都面临着既要处理内部敏感数据,又要访问互联网获取资源的双重需求。这种需求催生了“一机两用”的模式,即同一台终端设备既要连接内网处理核心业务,又要能够…...
楼宇自控系统如何为现代建筑打造安全、舒适、节能方案
在科技飞速发展的当下,现代建筑对功能和品质的要求日益提升。楼宇自控系统作为建筑智能化的核心技术,宛如一位智慧的“管家”,凭借先进的技术手段,为现代建筑精心打造安全、舒适、节能的全方位解决方案,让建筑真正成为…...
Xilinx 7系列fpga在线升级和跳转
一、常见跳转方式 1,一般FPGA只要上电,就会自动从外部flash的0地址加载程序。 2,而我们所谓的在线式升级就是在flash0地址放一个程序(boot/golden image),然后在后面再放一个程序(app/update …...
【LangChain核心组件】Callbacks机制深度剖析与实战指南
目录 一、通俗解释(举个🌰) 二、具体能干啥? 三、怎么用?(一句话说透) 四、小结 五、为什么Callbacks是LangChain的灵魂组件? 六、Callbacks核心API解析 1、 基础回调处理器 …...
回调函数用法详细讲解
目录 一、通过几个例子,浅谈一下我的学习见解! 二、typedef关键字用法回顾 1)基本语法 2)主要用途 1、为基本数据类型定义别名 2、为复杂类型定义别名 >>1.数组类型 >>2.指针类型 >>3.结构体类型 >…...
Nature子刊:科学家绘制与全身性癫痫发作相关的大脑网络图谱,为新的脑刺激疗法铺平道路
癫痫是一种古老的神经系统疾病,其历史可以追溯到数千年前。在古代,癫痫患者常被误解为受到神灵的惩罚或灵魂的附体,这种误解导致患者在社会中遭受歧视和排斥。然而,随着现代医学的发展,我们逐渐揭开了癫痫的神秘面纱&a…...
postman使用技巧
postman使用技巧 pre-request需求:三方对接的接口需要在请求头中添加如下参数pre-request 中获取环境变量中的变量值pre-request 中添加请求头 参考: pre-request 需求:三方对接的接口需要在请求头中添加如下参数 Accept: application/json…...
代码随想录算法训练营第十九天
LeetCode题目: 77. 组合216. 组合总和 III17. 电话号码的字母组合2537. 统计好子数组的数目(每日一题)516. 最长回文子序列1039. 多边形三角剖分的最低得分543. 二叉树的直径124. 二叉树中的最大路径和2246. 相邻字符不同的最长路径 其他: 今日总结 往期打卡 77. 组合 跳转: 7…...
MySQL联表查询底层原理
MySQL联表查询底层原理 1. 连接算法概述 MySQL在执行联表查询时,主要使用以下三种算法: 1.1 嵌套循环连接(Nested-Loop Join) -- 基本原理:对于左表的每一行,都要在右表中查找所有匹配的行 -- 示例查询…...
静态链接part2
编译 语义分析 由语义分析器完成,这个步骤只是完成了对表达式的语法层面的分析,它并不了解这个语句是否真的有意义(例如在C语言中两个指针做乘法运算,这个语句在语法上是合法的,但是没有什么意义;还有同样…...
在边缘端进行tensorflow模型的部署(小白初探)
1.配置tensorflow的环境 (我是安装GPU版本的) 建议参考这个博主的文章,确实非常快速! 十分钟安装Tensorflow-gpu2.6.0本机CUDA12 以及numpymatplotlib各包版本协调问题_tensorflow cuda12-CSDN博客 2.学习自制数据集 …...
合成数据如何赋能大模型预训练:效果与效率的双重加速器
目录 合成数据如何赋能大模型预训练:效果与效率的双重加速器 一、预训练模型为何需要合成数据? ✅ 克服真实数据的稀缺与偏倚 ✅ 控制训练内容结构与分布 ✅ 提升学习效率与训练稳定性 二、哪些预训练任务适合用合成数据? 三、如何构建…...
【n8n docker 部署的代理问题】解决n8n部署无法访问openai等外国大模型厂商的api
n8n docker 部署的代理问题:解决无法访问 OpenAI 等外国大模型厂商的 API 问题背景 在使用 n8n 进行自动化工作流开发时,经常需要调用 OpenAI 等外国大模型厂商的 API。然而,由于网络限制,直接部署的 n8n 容器无法访问这些 API …...
MongoDB 分账号限制数据访问
MongoDB 分账号限制数据访问 在 MongoDB 中,可以通过几种方式实现不同账号只能访问特定数据的需求,类似于你在 PostgreSQL 中实现的功能。 1. 基于角色的访问控制 (RBAC) 创建用户并分配角色 // 创建只能读取特定数据库的用户 use admin db.createUs…...
可控硅的工作原理和设计参考
可控硅物理结构如下图所示,P-N-P-N,就象两只背靠背的三极管。我们先来分析栅极不作电气联接的情况。当可控硅阴极电位大于阳极电位,J1和J3结反偏,器件截止。当可控硅阴极电位小于阳极电位,J1和J3正偏,但J2反…...
搭建axure cloud私有化平台
要求 https://blog.csdn.net/ss810540895/article/details/145833470 能不能找个空闲服务器,搭建一下 axure服务器,之前他们提供的免费服务终止了,我们需要尽快搭建一下服务。 步骤 mysql 数据库密码 Tbit36987. 分配权限 CREATE USER root…...