笔记
文章平均质量分 61
而塞过
代码创造世界
展开
-
2021-06-09
给定一个带有表头节点的单链表,要求在不改变链表的结构下找到链表中倒数k个位置的节点,查找成功输出该节点的值并返回1,否则返回0思路方法一:第一次遍历确定链表的长度l,第二次遍历找到l-k+1个位置的节点(不推荐,时间复杂度高,遍历两次)方法二:借助一个辅助空间,遍历一次将所有节点的data域的数据存入辅助空间中,通过随机读取的方式来读取第k个数据(不推荐,空间复杂度高)方法三:双指针法通过两个指针,之间间隔k个节点,然后一起变量,在后一个指针遍历到链尾的时候,前一个指针的位置刚好是倒数第原创 2021-06-09 21:33:49 · 63 阅读 · 0 评论 -
EMQX服务器的配置
前言因为毕业设计的需要搭建一个MQTT的服务器,用于消息的订阅和指令的下发实现,本人也在服务器的搭建上走了很多弯路,故谨以此文来记录一下。声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出前期准备需要的文件有:ssl的证书,和一个服务器::before::after ...原创 2021-04-01 23:49:50 · 2880 阅读 · 5 评论 -
数据结构___malloc与free的合理运用
概要最近经常感受被 Segmentation fault (core dumped)支配的恐惧,故就对此进行查询,以自己的了解来谈谈令我害怕的段错误 声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出要知道这个错误的名称:段错误,发生这种错误的主要原因是因为访问了错误的内存地址,或者内存地址未初始化。我们可以通过虚拟内存空间来更深层次的了解什么要对内存地址初始化我们利用malloc 其本质是调用底层的sbrk函数实现,返回一个void *类型的指针,是该元素的首地址 分配的空间原创 2021-03-29 22:54:15 · 177 阅读 · 0 评论 -
学生成绩管理系统
概要因为目前工作的需要,看着C Primer Plus把C语言粗略的过了一遍。为了巩固自己的知识,故试着写了这个学生成绩管理系统。此处感谢大佬"渣渣的夏天"的文章声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出学生成绩系统的主要功能录入学生成绩和个人基本信息将学生的信息打印将学生的信息保存到指定文件下记录已经录入信息的学生个数查找学生信息修改学生信息修改学生信息实现思路利用while循环一直获取用户输入利用switch来对用户的输入进行判断,并进入相应的原创 2021-03-22 23:05:26 · 206 阅读 · 0 评论 -
LINUX环境下C编程 ------错误封装
案例要求实现与一个服务器的连接。将客户端的小写转化为大写。声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出C/S模型流程图注意事项2.bind,connect,accept函数要将sockaddr_in强制转化成socket sockaddr* 格式3.利用toupper来将字符转化4.在绑定套接字的时候要注意网络字节序(小端—>大端)代码实现#include <sys/socket.h>#include <sys/types.h>原创 2021-01-25 16:26:47 · 110 阅读 · 0 评论 -
网络编程-----多路I/O转接实现(select/poll/epoll)
多路I/O转接技术借助LINUX内核来注册监听的文件描述符,文件描述符有相应的请求先经过内核处理之后,再由用户的应用来对请求做出相应的回复,大大的提高了程序的运行效率。与多进程/多线程相比:无需阻塞等待连接,在有数据的时候直接读取\处理数据,更加高效抽象原理图声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出函数原型int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct原创 2021-01-20 14:14:00 · 188 阅读 · 1 评论 -
网络编程-----客户端的实现
案例要求实现与一个服务器的连接。将客户端的小写转化为大写。声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出C/S模型流程图注意事项2.bind,connect,accept函数要将sockaddr_in强制转化成socket sockaddr* 格式3.利用toupper来将字符转化4.在绑定套接字的时候要注意网络字节序(小端—>大端)代码实现#include <sys/socket.h>#include <sys/types.h>原创 2021-01-11 21:32:23 · 292 阅读 · 0 评论 -
网络编程-----多进程并发服务器实现
案例要求实现一个多进程并发的服务器,可以实现多个客户端的连接。把每个连接的客户端的ip和port输出,而且每个客户端的输入都在服务器输出把客户端的小写转化为大写声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出原理图实现流程新建socket socket(int domain, int type, int protocol)绑定连接(初始化客户端的sockaddr结构体) bind(int sockfd, const struct sockaddr *addr,原创 2021-01-11 20:10:07 · 412 阅读 · 0 评论 -
网络编程-----服务器的实现
案例要求实现一个服务器的连接,要求将客户端的小写转化为大写注意事项1.在利用nc测试导通的时候应该使用127.0.0.1(用此回送地址来测试)2.bind,connect,accept函数要将sockaddr_in强制转化成socket sockaddr* 格式3.利用toupper来将字符转化4.在绑定套接字的时候要注意网络字节序(小端—>大端)代码实现#include <sys/types.h>#include <unistd.h>#include &l原创 2021-01-04 23:00:44 · 230 阅读 · 0 评论 -
APUE练习------文件的读取和写案例
#include <sys/types.h> #include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ //将文件读取到另一个新建的文件下 //HH为当前目录下读取的目标文件 int fd = open("HH", O_RDONLY); i原创 2020-12-05 17:28:49 · 178 阅读 · 0 评论 -
LINUX下C语言GDB调试
gdb 可执行程序(要有输出编译的才可以-g)—进入gdb启动gdb start(只执行一次)n–next(下一步)单步s–step(进入函数体内部)单步c–continue(直接到断点处)finish(退出循环体内部)u(跳出单次循环)查看代码l(默认查看main.c)enter键重复上一次操作l .c :行号(查看指定的.c文件的具体行) l .c :函数名称(查看指定的.c文件的函数)设置断点b–break(给当前的.c文件添加断点)b *.c:行号(给指定的.原创 2020-12-05 15:23:11 · 183 阅读 · 1 评论 -
LINUX下c的编译
gcc的使用方法1.预处理(将所有的注释去掉/头文件展开/宏替换)-E2.编译(变成汇编文件)-S3.汇编(变成二进制文件)-c4.链接 生成可执行文件相关的参数-I (头文件路经)-L (库的路经)-l (库的名称)-O (优化代码0-3)-wall (生成警告信息)-g 调试程序-o 生成目标文件ldd 可执行程序 (查看可执行程序的依赖库)生成静态库的流程1.将.c文件生成.o文件(gcc *.c -c -I path)2.将.o文件打包成静态库(ar src li原创 2020-12-04 17:03:10 · 141 阅读 · 0 评论 -
Linux下定时备份数据库
备份数据库的要求1.每天的凌晨2:10备份数据库userInfoDB到/root/db下2. 备份开始和结束有相应的提示3. 备份文件要求(以备份的时间为文件名称,打包成.tar.gz)例如2020-11-30_163421.tar.gz4. 在备份的同时检查是否有十天以上的数据库文件,如果有将其删除具体的bash代码#!/bin/bash#这是数据库备份的脚本#备份到的路径BACKUP=/root/db#以时间结尾的文件名FILE_TIME=$(date +%Y-%m-%d_%原创 2020-11-30 16:47:01 · 159 阅读 · 0 评论 -
VS-CODE背景修改
vs-code默认的背景看腻来来点自定义的图片背景吧首先打开vscode的安装路线,然后按如下找到css结尾的文件用Notepad++打开然后加入如下代码即可body{ //在file下选择要添加的背景图片的路径和图片名称 background-image: url('file:///F:/Microsoft VS Code/resources/app/out/vs/background-img/waterMelon.jpg'); background-size:100%;//背景大小原创 2020-11-07 14:49:08 · 218 阅读 · 0 评论 -
LINUX中Makefile的使用
这个文件关于gcc和makefile的使用1.linux的编译过程-E 预处理:把.h .c展开形成一个文件 。 宏定义直接替换 头文件 库文件 .igcc -E hello.c -o hello.i-S 汇编: .i生成一个汇编代码文件 .Sgcc -S hello.i -o hello.s-C 编译: .S生成一个.o .objgcc -c hello.s -o hello.o-o 链接: .o 链接 .exe windows .elfgcc hello.o -o hello//原创 2020-10-29 15:51:56 · 117 阅读 · 0 评论 -
html学习小节
HTML总结 h2 { text-align: center; font-size: x-large; } * { background-color: rgb(199, 237, 204); } a { text-decoration: none; font-size: small; } a:hover { color: blue; } h6 { text-align: right; } input:focus { color: red; }day-1(html总结)前端的学习方向html是学习前端的原创 2020-10-11 16:44:20 · 104 阅读 · 0 评论 -
关于vscode开发前端快速格式化样式的设置
打开设置搜索emmet选择在setting.json中编辑,在其中插入如下代码"editor.formatOnType": true, "editor.formatOnSave": true,即可完成前端开发保存的时候自动格式化原创 2020-10-11 11:40:54 · 508 阅读 · 0 评论 -
关于win10驱动安装失败的解决
关于win10驱动安装失败的解决现在win10的驱动安装是学习单片机的路上一大拦路虎,故本人找到了解决win10成功安装驱动的方法最有效的方法按win+r然后输入service.msc找到Device Install Service 然后将其启动,再安装驱动,成功安装...原创 2020-09-24 23:49:33 · 9176 阅读 · 2 评论 -
物联网的第一步利用ESP8266搭建网络服务器
关于ESP8266如何接入WiFi,并搭建网络服务器对于ESP8266首先要知道它有三种接入点模式:STA(无线终端模式)AP(接入点模式)STA+AP(混合接入点模式)。这里主要讲的是如何利用Ardunio把esp8266接入局域网先把要用到的WiFi库函数加入到Ardunio中 这一步极其重要,否则程序将无法运行。点击管理库,可以在里面查找要用到的库文件。还有一种办法就是自己手动添加库的压缩包。 <ESP8266wifiMulti.h>可以通过这个库函数来添加多个WiFi,ESP原创 2020-05-27 00:27:41 · 1249 阅读 · 0 评论 -
C++小程序-----------日历系统的设计
关于C++日历系统的设计#include using namespace std;int Isleap(int a){if((a%4==0&&a%100!=0)||a%400==0){ return 1;}else{ return 0;}}int Total_day(int a,int b){int sum=0;if(a>12||a<...原创 2020-04-28 11:22:32 · 1176 阅读 · 1 评论