C语言——海龟作图(对之前所有内容复习)
一.问题描述
海龟作图
设想有一只机械海龟,他在C程序控制下在屋里四处爬行。海龟拿了一只笔,这支笔或者朝上,或者朝下。当笔朝下时,海龟用笔画下自己的移动轨迹;当笔朝上时,海龟在移动过程中什么也不画。
使用一个50*50的数组floor,用于记录海龟绘制的图形,数组元素初始化为0。在海龟爬行过程中,如果笔朝下,就把数组floor中对应于海龟所处位置的元素置为1。当给出命令6(打印命令)后,数组中元素为1的位置全部用星号显示,元素为0的位置全部用空格显示。
海龟会从一个装有命令的数组中读取各种命令。
假定海龟总是从地板上(0,0)出发,并且开始时笔是朝上的。
首先我们逐个分析:
二.问题解决
1. 头文件与宏定义
#include <stdio.h>// 定义命令数组大小和图形数组大小
#define COMMANDSIZE 100
#define PICSIZE 50
#include <stdio.h>
:引入标准输入输出库,用于实现基本的输入输出功能,如printf
和scanf
函数。COMMANDSIZE
:定义了存储用户输入命令的数组的大小,用于限制可接收的命令数量。PICSIZE
:确定了用于记录海龟绘制图形的二维数组的行数和列数,这里设定为 50 * 50 的矩阵。
2. 函数声明
void getCommand(int commands[], int size);
void draw(int commands[], int size, int floor[][PICSIZE], int rows, int cols);
void printArray(int a[][PICSIZE], int rows, int cols);
- 这三个函数分别负责获取用户输入的命令、根据命令控制海龟作图以及将绘制的图形以可视化形式打印出来。
- 函数声明告诉编译器这些函数的存在及其参数类型和返回值类型,使得在
main
函数中调用这些函数时编译器能够识别。
3. main
函数
int main(void) {int commands[COMMANDSIZE]; // 存储命令int floor[PICSIZE][PICSIZE] = { 0 }; // 存储图片getCommand(commands, COMMANDSIZE); // 获取命令draw(commands, COMMANDSIZE, floor, PICSIZE, PICSIZE); // 作图return 0;
}
- 在
main
函数中,首先定义了两个数组:commands
数组用于存储用户输入的命令,其大小由COMMANDSIZE
决定。floor
二维数组用于记录海龟绘制的图形,初始化为全 0,表示初始时没有绘制任何内容。
- 然后依次调用
getCommand
函数获取用户输入的命令,将commands
数组和其大小作为参数传递进去。 - 接着调用
draw
函数,传递commands
数组、其大小、floor
数组以及floor
数组的行数和列数作为参数,根据输入的命令控制海龟在floor
数组上 “作画”。
4. getCommand
函数
void getCommand(int commands[], int size) {int i;i = 0;printf("input the commands\n");scanf("%d", &commands[i]);while (commands[i]!= 9) {if (commands[i] == 5) { // 继续读取前进的格数printf("input steps: ");i++;scanf("%d", &commands[i]);}i++;scanf("%d", &commands[i]);}
}
- 这个函数用于获取用户输入的命令序列。
- 首先初始化索引变量
i
为 0,然后提示用户输入命令。 - 使用
scanf
函数读取用户输入的第一个命令,并存储到commands
数组中。 - 进入
while
循环,只要当前命令不是结束标记 9,就继续读取命令。- 如果读取到的命令是 5,表示海龟要向前移动,此时需要额外读取一个表示移动格数的整数,并将其存储到
commands
数组的下一个位置(i
自增后存储)。 - 无论何种命令,每次读取完命令后
i
都会自增,准备读取下一个命令。
- 如果读取到的命令是 5,表示海龟要向前移动,此时需要额外读取一个表示移动格数的整数,并将其存储到
5. draw
函数
void draw(int commands[], int size, int floor[][PICSIZE], int rows, int cols) {int write = 0; // 笔的朝向,0表示朝上,1表示朝下int row = 0, col = 0; // 海龟当前位置int dir = 0; // 海龟的朝向,0表示北,1表示东,2表示南,3表示西for (int i = 0; i < size && commands[i]!= 9; i++) {switch (commands[i]) {case 1:write = 0;break;case 2:write = 1;break;case 3: // 右转dir = (dir + 1) % 4;break;case 4: // 左转dir = (dir + 3) % 4;break;case 5: { // 画图int steps = commands[++i]; // 获取前进格数for (int j = 0; j < steps; j++) {if (write == 1) { // 如果笔朝下,则画图floor[row][col] = 1;}// 根据海龟朝向更新位置switch (dir) {case 0: // 向北if (row > 0) {row--;}break;case 1: // 向东if (col < cols - 1) {col++;}break;case 2: // 向南if (row < rows - 1) {row++;}break;case 3: // 向西if (col > 0) {col--;}break;}}break;}case 6:printArray(floor, rows, cols);break;}}
}
- 此函数是海龟作图的核心逻辑部分。
- 定义了三个变量来记录海龟的状态:
write
表示笔的朝向,初始化为 0(朝上)。row
和col
表示海龟当前在floor
数组中的位置,初始化为 (0, 0)。dir
表示海龟的朝向,初始化为 0(向北)。
- 使用
for
循环遍历commands
数组中的命令,直到遇到结束标记 9 或超出数组范围。- 根据不同的命令,通过
switch
语句进行相应的操作:- 命令 1:将
write
设置为 0,使笔朝上。 - 命令 2:将
write
设置为 1,使笔朝下,准备绘制轨迹。 - 命令 3:使海龟右转,通过将
dir
加 1 并对 4 取模来更新朝向(实现循环转向)。 - 命令 4:使海龟左转,通过将
dir
加 3 并对 4 取模来更新朝向(实现循环转向)。 - 命令 5:首先获取前进格数
steps
,然后在一个内层循环中,根据笔的朝向和海龟的当前位置,在floor
数组中记录轨迹(如果笔朝下),并根据海龟的朝向更新其位置。 - 命令 6:调用
printArray
函数打印当前floor
数组中的图形。
- 命令 1:将
- 根据不同的命令,通过
6. printArray
函数
void printArray(int a[][PICSIZE], int rows, int cols) {int row, col;printf("the array is:\n");for (row = 0; row <= rows - 1; row++) {for (col = 0; col <= cols - 1; col++) {if (a[row][col]!= 0) {printf("*");}else {printf(" ");}}printf("\n");}
}
- 该函数用于将
floor
数组中的图形以可视化形式打印出来。 - 使用两层嵌套的
for
循环遍历floor
数组的每一个元素。 - 如果元素的值不为 0,表示海龟在该位置绘制过,打印星号 “*”;否则打印空格 “ ”。
- 每行遍历完后打印换行符,以形成正确的图形输出格式。
三.完整代码如下所示
#include <stdio.h>// 定义命令数组大小和图形数组大小
#define COMMANDSIZE 100
#define PICSIZE 50// 函数声明
void getCommand(int commands[], int size);
void draw(int commands[], int size, int floor[][PICSIZE], int rows, int cols);
void printArray(int a[][PICSIZE], int rows, int cols);int main(void) {int commands[COMMANDSIZE]; // 存储命令int floor[PICSIZE][PICSIZE] = { 0 }; // 存储图片getCommand(commands, COMMANDSIZE); // 获取命令draw(commands, COMMANDSIZE, floor, PICSIZE, PICSIZE); // 作图return 0;
}// 获取命令函数
void getCommand(int commands[], int size) {int i;i = 0;printf("input the commands\n");scanf("%d", &commands[i]);while (commands[i]!= 9) {if (commands[i] == 5) { // 继续读取前进的格数printf("input steps: ");i++;scanf("%d", &commands[i]);}i++;scanf("%d", &commands[i]);}
}// 作图函数
void draw(int commands[], int size, int floor[][PICSIZE], int rows, int cols) {int write = 0; // 笔的朝向,0表示朝上,1表示朝下int row = 0, col = 0; // 海龟当前位置int dir = 0; // 海龟的朝向,0表示北,1表示东,2表示南,3表示西for (int i = 0; i < size && commands[i]!= 9; i++) {switch (commands[i]) {case 1:write = 0;break;case 2:write = 1;break;case 3: // 右转dir = (dir + 1) % 4;break;case 4: // 左转dir = (dir + 3) % 4;break;case 5: { // 画图int steps = commands[++i]; // 获取前进格数for (int j = 0; j < steps; j++) {if (write == 1) { // 如果笔朝下,则画图floor[row][col] = 1;}// 根据海龟朝向更新位置switch (dir) {case 0: // 向北if (row > 0) {row--;}break;case 1: // 向东if (col < cols - 1) {col++;}break;case 2: // 向南if (row < rows - 1) {row++;}break;case 3: // 向西if (col > 0) {col--;}break;}}break;}case 6:printArray(floor, rows, cols);break;}}
}// 打印图形函数
void printArray(int a[][PICSIZE], int rows, int cols) {int row, col;printf("the array is:\n");for (row = 0; row <= rows - 1; row++) {for (col = 0; col <= cols - 1; col++) {if (a[row][col]!= 0) {printf("*");}else {printf(" ");}}printf("\n");}
}
接下来我们尝试绘制想要的图形。
比如我们要绘制12*12的矩形我们只需要这样:
运行结果如下:
三角形套三角形(类似谢尔宾斯基三角形的简单形式)
- 初始状态:笔朝上,海龟在原点 (0, 0)。
- 输入命令:
2
(笔朝下,开始绘制)5 12
(向前移动 12 格,绘制大三角形的一条边)4
(左转)5 6
(向前移动 6 格,准备绘制内部小三角形的边)3
(右转)5 6
(向前移动 6 格,绘制内部小三角形的一条边)4
(左转)5 3
(向前移动 3 格,准备绘制更小三角形的边)3
(右转)5 3
(向前移动 3 格,绘制更小三角形的一条边)4
(左转)5 1.5
(向前移动 1.5 格,可根据实际精度调整,准备绘制最内部三角形的边)3
(右转)5 1.5
(向前移动 1.5 格,绘制最内部三角形的一条边)1
(笔朝上,停止绘制)6
(打印图形)9
(结束命令输入)
- 图形效果:绘制出一个大三角形,内部嵌套两个逐渐变小的三角形。
-
运行结果
-
** ** ** ** ** ** ** * ***************** * ** ** ** ** ** ** ** **
本期海龟作图就分享到这里。
-
往期回顾:
C语言——指针初阶(一)-CSDN博客
C语言函数递归经典题型——汉诺塔问题-CSDN博客
C语言——数组基本知识(二)-CSDN博客
C语言——数组基本知识(一)-CSDN博客
C语言——数组逐元素操作练习-CSDN博客
C语言编程练习:验证哥德巴赫猜想 进制转换 rand函数-CSDN博客
C语言——函数基本知识(三)-CSDN博客
C语言——函数基本知识(二)-CSDN博客
C语言 ——函数基本知识(一)-CSDN博客
相关文章:
C语言——海龟作图(对之前所有内容复习)
一.问题描述 海龟作图 设想有一只机械海龟,他在C程序控制下在屋里四处爬行。海龟拿了一只笔,这支笔或者朝上,或者朝下。当笔朝下时,海龟用笔画下自己的移动轨迹;当笔朝上时,海龟在移动过程中什么也不画。 …...
关于如何在k8s中搭建一个nsfw黄图鉴定模型
随着现在应用内图片越来越多,安全审查也是必不可少的一个操作了 下面手把手教你如何将huggingface中的黄图检测模型部署到自己的服务器上去 1.找到对应的模型 nsfw_image_detection 2.在本地先验证如何使用 首先安装transformers python库 pip install transform…...
istio结合wasm插件的实际应用
在 Istio 中,WASM 插件的常见使用场景和功能包括以下几个方面: 1. 流量管理与请求修改 请求与响应头处理:动态添加、删除或修改 HTTP 请求或响应头。URL 重写:根据特定规则调整请求的路径或参数。请求路由增强:实现复…...
日志logrus
https://blog.csdn.net/m0_70982551/article/details/143095729 https://blog.csdn.net/wslyk606/article/details/81670713 https://www.bilibili.com/opus/1002468521099132928 地鼠文档:https://www.topgoer.cn/docs/goday/goday-1crg2adjknouc 极客文档…...
11.29 代码随想录Day45打卡(动态规划)
115.不同的子序列 题目:给你两个字符串 s 和 t ,统计并返回在 s 的 子序列 中 t 出现的个数。 题解: class Solution:def numDistinct(self, s: str, t: str) -> int:dp [[0] * (len(t) 1) for _ in range(len(s) 1)]for i in range…...
springboot336社区物资交易互助平台pf(论文+源码)_kaic
毕 业 设 计(论 文) 社区物资交易互助平台设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此ÿ…...
【Maven】Nexus私服
6. Maven的私服 6.1 什么是私服 Maven 私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。一些无法从外部仓库下载到的构件,如项目组其他人员开发的…...
【python量化教程】如何使用必盈API的股票接口,获取最新分时KDJ数据
分时KDJ数据简介 股票分时 KDJ 数据是用于分析股票盘中短期走势的指标。它由未成熟随机指标 RSV 计算出 K 值、D 值、J 值。取值范围上,K 和 D 是 0 - 100,J 值可超出此范围。20 以下为超卖区、80 以上是超买区。关键信号有金叉(预示上涨&am…...
DI依赖注入详解
DI依赖注入 声明了一个成员变量(对象)之后,在该对象上面加上注解AutoWired注解,那么在程序运行时,该对象自动在IOC容器中寻找对应的bean对象,并且将其赋值给成员变量,完成依赖注入。 AutoWire…...
mysql sql语句 between and 是否边界值
在 MySQL 中,使用 BETWEEN 运算符时,边界值是包括在内的。这意味着 BETWEEN A AND B 查询会返回 A 和 B 之间的所有值,包括 A 和 B 自身。 示例 假设有一个表 employees,其中有一个 salary 列,您可以使用以下查询&am…...
飞塔防火墙只允许国内IP访问
飞塔防火墙只允许国内IP访问 方法1 新增地址对象,注意里面已经细分为中国内地、中国香港、中国澳门和中国台湾 方法2 手动新增国内IP的对象组,目前好像一共有8632个,每个对象最多支持600个IP段...
宠物之家:基于SpringBoot的领养平台
第1章 绪论 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。时代进步的标志,就是让人们过上更好的生活。在互联网诞生之前,地域位置往往是人们思想上不…...
golang 实现比特币内核:如何接入 RPC 后端获得特定交易的二进制数据
我们非常关注解析比特币的二进制数据,这使得我们的工作看起来是可行的。比特币是一个分布式网络系统,这意味着它需要全球各地的节点协同工作,甚至比特币核心库也需要连接其他节点来帮助它,就像查询交易费一样。 世界上没有免费的午餐。当你使用比特币系统进行交易时,你需…...
QML学习 —— 34、视频媒体播放器(附源码)
效果 说明 您可以单独使用MediaPlayer播放音频内容(如音频),也可以将其与VideoOutput结合使用以渲染视频。VideoOutput项支持未转换、拉伸和均匀缩放的视频演示。有关拉伸均匀缩放演示文稿的描述,请参见fillMode属性描述。 播放可能出错问题 出现的问题: DirectS…...
宝塔Linux面板上传PHP文件或者修改PHP文件,总是转圈圈,其他文件正常,解决办法
目录 问题描述 寻找解决方案 1.重启宝塔面板 2.清理宝塔缓存 3.升级面板 4.ssh远程 5.清空回收站 6.换网络 7. IDE远程编辑 总结: 问题描述 一直用宝塔linux面板,感觉非常好用,点点就能搞定,环境也很好配置。 公司搬家&…...
Flink——进行数据转换时,报:Recovery is suppressed by NoRestartBackoffTimeStrategy
热词统计案例: 用flink中的窗口函数(apply)读取kafka中数据,并对热词进行统计。 apply:全量聚合函数,指在窗口触发的时候才会对窗口内的所有数据进行一次计算(等窗口的数据到齐,才开始进行聚合…...
贪心算法题目合集
贪心算法题目合集 1319:【例6.1】排队接水 贪心策略思想 1319:【例6.1】排队接水 贪心策略思想 1319:【例6.1】排队接水 贪心算法与其说是算法,不如说是一种风格:每次做事情都选择自己认为的最优解。 贪心算法的题很…...
NSSCTF-做题笔记
[羊城杯 2020]easyre 查壳,无壳,64位,ida打开 encode_one encode_tow encode_three 那么我们开始一步一步解密,从最外层开始 def decode_three(encrypted_str):decrypted_str ""for char in encrypted_str:char_code …...
SpringBoot源码-spring boot启动入口ruan方法主线分析(一)
一、SpringBoot启动的入口 1.当我们启动一个SpringBoot项目的时候,入口程序就是main方法,而在main方法中就执行了一个run方法。 SpringBootApplication public class StartApp {public static void main(String[] args) {// testSpringApplication.ru…...
python json.dump()和json.dumps()的区别
用人话总结一下 json.dump()是针对文件的json和python的转换 json.dumps()主要是针对内容数据 json.dumps(obj, skipkeysFalse, ensure_asciiTrue, check_circularTrue, allow_nanTrue, clsNone, indentNone, separatorsNone, encoding“utf-8”, defaultNone, sort_keysFalse…...
快速排序hoare版本和挖坑法(代码注释版)
hoare版本 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>// 交换函数 void Swap(int* p1, int* p2) {int tmp *p1;*p1 *p2;*p2 tmp; }// 打印数组 void _printf(int* a, int n) {for (int i 0; i < n; i) {printf("%d ", a[i]);}printf("…...
ELK(Elasticsearch + logstash + kibana + Filebeat + Kafka + Zookeeper)日志分析系统
文章目录 前言架构软件包下载 一、准备工作1. Linux 网络设置2. 配置hosts文件3. 配置免密登录4. 设置 NTP 时钟同步5. 关闭防火墙6. 关闭交换分区7. 调整内存映射区域数限制8. 调整文件、进程、内存资源限制 二、JDK 安装1. 解压软件2. 配置环境变量3. 验证软件 三、安装 Elas…...
SpringBoot中忽略实体类中的某个属性不返回给前端的方法
使用Jackson的方式: //第一种方式,使用JsonIgnore注解标注在属性上,忽略指定属性 public class PropertyDTO {JsonProperty("disable")private Integer disable;JsonProperty("placeholder")private String placeholde…...
Flink中普通API的使用
本篇文章从Source、Transformation(转换因子)、sink这三个地方进行讲解 Source: 创建DataStream本地文件SocketKafka Transformation(转换因子): mapFlatMapFilterKeyByReduceUnion和connectSide Outpu…...
【人工智能】从零构建一个文本分类器:用Python和TF-IDF实现
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 文本分类是自然语言处理(NLP)领域的基础任务之一,广泛应用于垃圾邮件检测、情感分析和新闻分类等场景。本篇文章从零开始,通过详细讲解 TF-IDF 特征提取方法,以及如何将其与机器学习算法结合,实现一…...
原型模式
功能:复制一个运行时的对象,包括对象各个成员当前的值。并且能够通过父类的指针来克隆出子类的对象 主要解决:在运行期建立原型 优点:性能提高、避免了构造函数的约束 步骤: 1、定义抽象原型,声明纯虚接…...
基于FPGA的FM调制(载波频率、频偏、峰值、DAC输出)-带仿真文件-上板验证正确
基于FPGA的FM调制-带仿真文件-上板验证正确 前言一、FM调制储备知识载波频率频偏峰值个人理解 二、代码分析1.模块分析2.波形分析 总结 前言 FM、AM等调制是学习FPGA信号处理一个比较好的小项目,通过学习FM调制过程熟悉信号处理的一个简单流程,进而熟悉…...
open-instruct - 训练开放式指令跟随语言模型
文章目录 关于 open-instruct设置训练微调偏好调整RLVR 污染检查开发中仓库结构 致谢 关于 open-instruct github : https://github.com/allenai/open-instruct 这个仓库是我们对在公共数据集上对流行的预训练语言模型进行指令微调的开放努力。我们发布这个仓库,并…...
Java爬虫:获取1688商品详情接口的技术实现与代码示例
引言 1688作为中国领先的B2B电子商务平台,拥有海量的商品信息。对于商家和市场研究人员来说,能够从1688获取商品详情信息,对于市场分析、竞品研究等具有重要价值。本文将介绍如何使用Java编写爬虫,以合法、高效的方式获取1688商品…...
详解Rust泛型用法
文章目录 基础语法泛型与结构体泛型约束泛型与生命周期泛型与枚举泛型和Vec静态泛型(const 泛型)类型别名默认类型参数Sized Trait与泛型常量函数与泛型泛型的性能 Rust是一种系统编程语言,它拥有强大的泛型支持,泛型是Rust中用于实现代码复用和类型安全…...
Spring Boot拦截器(Interceptor)详解
拦截器Interceptor 拦截器我们主要分为三个方面进行讲解: 介绍下什么是拦截器,并通过快速入门程序上手拦截器拦截器的使用细节通过拦截器Interceptor完成登录校验功能 1. 快速入门 什么是拦截器? 是一种动态拦截方法调用的机制ÿ…...
STM32-- 看门狗--介绍、使用场景、失效场景
STM32 中的看门狗(Watchdog Timer,简称 WDG)有两种主要类型:独立看门狗(IWDG) 和 窗口看门狗(WWDG)。它们的喂狗机制各有特点,主要区别如下: 1. 独立看门狗&a…...
Perplexica - AI 驱动的搜索引擎
更多AI开源软件: AI开源 - 小众AIhttps://www.aiinn.cn/sources Perplexica 是一个开源的 AI 驱动的搜索工具或 AI 驱动的搜索引擎,可以深入互联网寻找答案。受 Perplexity AI 的启发,它是一个开源选项,不仅可以搜索网络…...
Linux笔记--基于OCRmyPDF将扫描件PDF转换为可搜索的PDF
1--官方仓库 https://github.com/ocrmypdf/OCRmyPDF 2--基本步骤 # 安装ocrmypdf库 sudo apt install ocrmypdf# 安装简体中文库 sudo apt-get install tesseract-ocr-chi-sim# 转换 # -l 表示使用的语言 # --force-ocr 防止出现以下错误:ERROR - PriorOcrFoundE…...
MySQL聚合查询分组查询联合查询
#对应代码练习 -- 创建考试成绩表 DROP TABLE IF EXISTS exam; CREATE TABLE exam ( id bigint, name VARCHAR(20), chinese DECIMAL(3,1), math DECIMAL(3,1), english DECIMAL(3,1) ); -- 插入测试数据 INSERT INTO exam (id,name, chinese, math, engli…...
ffmpeg 预设的值 加速
centos 安装ffmpeg 编译安装 官网获取最新的linux ffmpeg 代码 https://ffmpeg.org//releases/ mkdir -p /data/app/ffmpeg cd /data/app/ffmpeg wget http://www.ffmpeg.org/releases/ffmpeg-7.1.tar.gz tar -zxvf ffmpeg-7.1.tar.gz#安装所需的编译环境 yum install -y \…...
Spring Boot 与 Spring Cloud Alibaba 版本兼容对照
版本选择要点 Spring Boot 3.x 与 Spring Cloud Alibaba 2022.0.x Spring Boot 3.x 基于 Jakarta EE,javax.* 更换为 jakarta.*。 需要使用 Spring Cloud 2022.0.x 和 Spring Cloud Alibaba 2022.0.x。 Alibaba 2022.0.x 对 Spring Boot 3.x 的支持在其发行说明中…...
解决爬虫ConnectionResetError出现的问题
提问 使用python进行网络爬虫出现ConnectionResetError如何解决? 解答 遇到ConnectionResetError错误时,通常是因为远程服务器端主动重置了连接。常见原因包括请求频率过高、网络问题或触发了防爬虫机制。为解决该问题,可以采取以下方法&a…...
Rust学习笔记_03——元组
Rust学习笔记_01——基础 Rust学习笔记_02——数组 Rust学习笔记_03——元组 文章目录 Rust学习笔记_03——元组元组1. 定义元祖2. 访问元组中的元素3. 元组的解构4. 元组不可遍历和切片5. 元组作为函数返回值6. 单元元组7. 代码演示 元组 在Rust编程语言中,元组&a…...
win10安装MySQL8.0.40,含踩坑记录
这里写自定义目录标题 win10安装MySQL8下载安装包配置环境变量初始化MySQL创建data文件夹初始化配置文件安装MySQL服务初始化创建root用户启动服务设置root用户密码登录验证 踩坑:MySQL 服务正在启动 ...MySQL 服务无法启动。服务没有报告任何错误。请键入 NET HELP…...
python+django自动化平台(一键执行sql) 前端vue-element展示
一、开发环境搭建和配置 pip install mysql-connector-pythonpip install PyMySQL二、django模块目录 dbOperations ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-313.pyc │ ├── admin.cpython-313.pyc │ ├── apps.cpython-313.pyc │ …...
【计算机网络】核心部分复习
目录 交换机 v.s. 路由器OSI七层更实用的TCP/IP四层TCPUDP 交换机 v.s. 路由器 交换机-MAC地址 链接设备和设备 路由器- IP地址 链接局域网和局域网 OSI七层 物理层:传输设备。原始电信号比特流。数据链路层:代表是交换机。物理地址寻址,交…...
urllib3只支持OpenSSL1.1.1
1 现象 urllib3 v2.0 only supports OpenSSL 1.1.1, currently the ssl module is compiled with OpenSSL 1.1.0j 20 Nov 2018.2 解决方法 降低urllib3的版本。 从pycharm中,先卸载原有的urllib3版本。 菜单“File|Settings|Project:python|Project Interprete…...
简单web项目自定义部署Dockerfile
本意就是弄清楚如何做web自定义项目的镜像。 基础镜像是java:8u261-jdk,其中java路径为/opt/java webdemo1.0.0.1-SNAPSHOT.jar文件里面已经包含了lib文件。 可以设置PATH也可以不设置,但是建议设置JAVA_HOME FROM swr.cn-north-4.myhuaweicloud.com…...
apache实现绑定多个虚拟主机访问服务
1个网卡绑定多个ip的命令 ip address add 192.168.45.140/24 dev ens33 ip address add 192.168.45.141/24 dev ens33 在linux服务器上,添加多个站点资料,递归创建三个文件目录 分别在三个文件夹下,建立测试页面 修改apache的配置文件http.…...
svn 崩溃、 cleanup失败 怎么办
在使用svn的过程中,可能出现整个svn崩溃, 例如cleanup 失败的情况,类似于 这时可以下载本贴资源文件并解压。 或者直接访问网站 SQLite Download Page 进行下载 解压后得到 sqlite3.exe 放到发生问题的svn根目录的.svn路径下 右键呼出pow…...
深度学习—BP算法梯度下降及优化方法Day37
梯度下降 1.公式 w i j n e w w i j o l d − α ∂ E ∂ w i j w_{ij}^{new} w_{ij}^{old} - \alpha \frac{\partial E}{\partial w_{ij}} wijnewwijold−α∂wij∂E α为学习率 当α过小时,训练时间过久增加算力成本,α过大则容易造成越过最…...
python常见问题-pycharm无法导入三方库
1.运行环境 python版本:Python 3.9.6 需导入的greenlet版本:greenlet 3.1.1 2.当前的问题 由于需要使用到greenlet三方库,所以进行了导入,以下是我个人导入时的全过程 ①首先尝试了第1种导入方式:使用pycharm进行…...
虚幻引擎---目录结构篇
一、引擎目录 成功安装引擎后,在安装路径下的Epic Games目录中可以找到与引擎版本对应的文件夹,其中的内容如下: Engine:包含构成引擎的所有源代码、内容等。 Binaries:包含可执行文件或编译期间创建的其他文件。Bui…...
OpenCV相机标定与3D重建(6)将3D物体点投影到2D图像平面上函数projectPoints()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::fisheye::projectPoints 是 OpenCV 库中用于鱼眼镜头模型的函数,它将3D物体点投影到2D图像平面上。这个函数对于模拟或者理解鱼眼…...