【网络】自定义协议 | 序列化和反序列化 | 以tcpServer为例
以tcpServer的计算器服务为例,实现一个自定义协议 阅读本文之前,请先阅读 tcpServer 本文完整代码详见 Gitee 1.重谈tcp注意,当下所对tcp的描述都是以简单、方便理解起见,后续会对tcp协议进行深入解读 1.1 链接我们知道,tcp是面向连接的,客户端和服务端要先建立链接,才能开始通信 在链接过程中,tcp采用三次握手 在断线过程中,tcp采用四次挥手 举个日常生活中的栗子,帮助理解3次握手和4次挥手 1.2 信息发送 假如我们现在需要发送结构化数据,那应该怎么办? 我们知道,tcp是面向字节流的,也就是其能够发送任意数据。也能够发送C语言结构体的二进 ...
【Git】如何修改本地仓库的用户名和邮箱
最近我修改了我gitee和github的用户名还有邮箱,所以需要对本地仓库配置的用户名和邮箱进行更改 1.命令 刚开始我使用的是如下命令 12git config --global user.email "邮箱"git config --global user.name "用户名" 但是很不辛,这个命令没有用,因为它是用来初始化你的git环境的,对已有的git仓库不起作用 但是我们在linux下可以添加上另外一个参数来实现 12git config --global --replace-all user.email "邮箱" g ...
【Python】教你白嫖replit部署kook-ticket-bot(已失效)
教你白嫖replit部署kook的ticket机器人(已失效)
【Linux】实现守护进程 | 以tcpServer为例
本文将以tcp服务器代码为基本,讲述如何将进程守护进程化,后台运行 1.守护进程所谓守护进程,就是和其他进程没有关系的进程;其独立运行于系统后台,除非自己退出或收到信号终止,否则会一直运行下去 1.1 进程组在我们使用的bash中,同一时刻只会有一个前台进程组 如图,当一个前台进程开始运行之后,我们没有办法在当前终端开启第二个前台进程。 在运行的命令后面加&,临时让当前进程在后台运行。注意,此时tcp虽然在后台运行了, 但对于它而言,stdin/stdout/stderr的文件描述符依旧指向的是当前bash的输入输出,所以它的日志依旧会打印到当前终端上。 用ps命令查看当前进程的 ...
【Linux】popen pclose接口介绍
本篇文章简单讲述了c语言接口popen/pclose的用法 1.函数作用函数定义如下 1234#include <stdio.h>FILE *popen(const char *command, const char *type);int pclose(FILE *stream); popen函数会创建一个管道,fork一个子进程,关闭管道的不使用端,通过exec函数执行一个shell命令,等待命令终止。并将命令的输出结果通过管道返回给当前的进程; 1.1 popenpopen函数会创建一个管道,fork后调用shell来打开进程。由于管道的定义是单向的,第二个参数type ...
【C++】using的三种用法 | 转载
C++ using的三种用法,这个之前还没有接触过 示例12345678910111213141516171819202122232425262728293031#include <iostream>using namespace std;class ClassOne {public: int w;protected: int a;};class ClassTwo{public: using ModuleType = ClassOne;};template <typename ClassType>class ClassThre ...
【Linux】来写一个tcp的服务端+客户端
今天让我们来写一个tcp的服务器/客户端代码 完整代码见我的gitee 连接 阅读本文前,建议先阅读👉 udp服务器 1.基本框架tcp的服务器和udp服务器初始化接口是非常相似的,区别就在于要选择字节流进行初始化 但是到运行状态就不同了 tcp是需要连接的 udp不需要连接 所以就会出现分歧:udp可以用sendto和receve来发送/接收信息,服务端只需要监听特定端口收到了什么信息; 但tcp并不能这么做,在通信之前,tcp服务器必须要和客户端建立链接。 举个不恰当的例子,udp服务器好比一个水盆,等待水的注入;而tcp服务器是个水管,必须要两头连通了, ...
【Python】自动解析markdown中的图片并保存
python自动化下载/上传md中图片实在是太方便了 1.起因为什么需要python来下载md里面的图片?原因很简单,那就是需要把图片保存下来,上传到第二个图床(迁移) 对于阿里云OSS来说,有两种迁移办法 使用官方的数据导出功能 使用api接口遍历oss目录下载所有图片 这两种办法都不是那么方便,所以我选择了第三种 解析本地md文件中的img url,下载图片并保存到本地 那要怎么做呢?👇 2.教程我在github找到了这个项目 👉 Deali-Axy/Markdown-Image-Parser 作者的代码写的很棒,但是README里面却少了一个重要的启动 ...
【Docker】配置wiki js
wikijs是一个在线多人协作(带git版本管理)的wiki套件 相比于其他wiki的展示功能为主,wikijs将权限管理+多人协作作为了首个要素,其支持富文本编辑器/mardown编辑器/html源码编辑 1.Docker-cli部署 在云服务器安装 https://docs.requarks.io/install/ubuntu 可以跟着官方的指令走,下面节选了最终3个创建容器的命令。 配置密钥 12345678910mkdir -p /etc/wiki## Generate DB secretopenssl rand -base64 32 > /etc/wi ...
【C语言】可变参数列表
本篇博客让我们来认识一下C语言学习过程中往往被忽略的可变参数列表 所谓可变参数,就是一个不限定参数数量的函数,我们可以往里面传入任意个数的参数,以达成某些目的。 关联:C++11可变模板参数 1.函数123456#include <stdarg.h>void va_start(va_list ap, last);type va_arg(va_list ap, type);void va_end(va_list ap);void va_copy(va_list dest, va_list src); 1.1 va_start1void va_start(va_list ap, ...