自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 VS Code Python相对路径报错

#问题FileNotFoundError: [Errno 2] No such file or directory:'./XXX'在保证文件/目录确实存在时,大概率是程序当前运行路径的问题。不管是Code Runner还是终端运行,VS Code默认的当前路径都不是程序文件所在的路径,所以使用相对路径找文件回报错。#解决1.对于Code Runner,在拓展中修改其设置,勾选上File Directory As Cwd的选项。2.对于终端运行,先cd到程序文件的目录。...

2021-08-18 12:55:46 658 1

原创 Linux下npm安装Electron错误

#问题在Linux下按照Electron快速入门官方文档,先安装了npm和node.JS,然后npm install --save-dev electron都没报错。但npm start后,有以下报错:throw new Error('Electron failed to install correctly, please delete node_modules/electron and try installing again'); ^Error: Electron failed..

2021-08-05 21:03:28 748

原创 海明码 校验位数公式的理解

#问题设海明码的校验位数为,数据位数为,它们需满足一个位数公式最初看到公式时我感到很疑惑啊,百思不得其解,主要的问题是最后那个1哪来的。看着公式望了半天,一点头绪都没有,好脑袋不如烂笔头,于是我开始手写举例试着理解海明码的校验逻辑。不写不知道,一写吓一跳。写着写着就发现了,原来这个1来的如此妖娆。#引入(海明码原理介绍)我们先来复习一下二进制的划分,假设现在有七位二进制数据,用序号来指向。为什么选择七位呢?因为它们的序号刚好可以用三位二进制来表示。我们再来看看海明码的纠错

2021-04-15 13:48:59 4296

原创 QT 使工具栏不可右键点击取消

#问题用Qt写窗口时,为了好看,将自带的标题栏出掉,自己写菜单栏或者工具栏代替。我使用工具栏代替时,发现可以右键选择取消掉。这不是开玩笑吗。#解决查阅资料发现,这个选项是来自QWidget的性质。将工具栏的contextMenuPolicy属性设置为NoContextMenu即可。...

2021-03-06 10:14:53 1688 4

原创 Linux ARP请求组包工具 C语言socket

#说明本文是将Linux socket发送ARP请求包 C语言中的功能模块进一步编写成为了工具使得可以修改ARP请求包中的源IP地址、目标IP地址以及源MAC地址测试平台是kali#使用演示程序有两种输入模式,一种是包含源IP、目标IP、源MAC以及网卡设备名;另一种省略源AMC,即默认使用网卡真实MAC地址。输入模式1运行结果抓包结果输入模式2运行结果(MAC为网卡真实MAC)抓包结果#代码#include <stdio.h&

2021-02-18 12:34:52 927

原创 Linux socket发送ARP请求包 C语言

#前言手动输入的参数有网卡名、源IP和目标IP,它们定义在#define中。如需调整其他ARP参数,只需对程序适当位置修改即可。本程序着重在于功能实现的学习,故没有考虑像制作成工具一样的编写,尽量保证代码简洁。程序基本分为三部分构造以太网帧头部构造ARP包内容构造sockaddr_ll地址结构其中以太网帧头部和ARP请求内容(也就是网络中传输的一个ARP包完整内容)共同存储在一个buffer中,构造好buffer之后通过socket发送出去即可。#代码实现#incl

2021-02-16 11:00:21 5245 2

原创 sockaddr_in的一个小理解

之前一直认为是sockaddr设计时有缺陷,在编写网络通信时,都使用sockaddr_in,因为它将sockaddr中的char sa_data[14]拆分为了unsigned short sin_port; // 2 bytesstruct in_addr sin_addr; // 4 byteschar sin_zero[8]; // 8 bytes zero这样就可以直观的获得IP地址和端口。最近在获取网卡等信息的时候,使用ioctl(

2021-02-14 19:30:35 550

原创 Shell脚本 利用ARP扫描网段在线主机

(脚本默认网段掩码为24,也没有参数检查等之类的功能)(不同平台命令语句会有差别,可能需要稍微修改,测试平台是Kali)#!/bin/bash## 保证参数个数正确if [ "$#" -ne 1 ];then ##"$#" 参数个数 ##[Int1 -ne Int2] 比较Int1和Int2值,不等为真 echo "参数错误:请使用 ./scan_arp.sh [interface]" ##scan_arp.sh是脚本文件名,这里仅仅是提示作用 echo "如./scan_arp.s

2021-02-02 15:06:16 951 1

原创 PPP中的LCP(Link Control Protocol)

(内容整理自RFC1661,其中笔者觉得可能不精确的表达会用橙色贴出原文) 简介 LCP(Link Control Protocol),用于PPP的链路协商,PPP连接的建立就是从交换LCP报文开始的,LCP协商阶段所有非LCP报文都会被静默丢弃(silently discarded)。LCP功能涉及自动协商封装格式选项(automatically agree upon the encapsulation format options)、数据包大小限制、检测回环链路和配置错误以及终结连接(te

2021-01-21 14:26:32 7836 1

原创 路由表和路由转发表对路由的选择

路由器通过路由表(Routing Information Base,RIB)选择路由,位于控制平面;选择出的路由下发到路由转发信息表(Forwarding Information Base,FIB),位于数据平面。RIB通过依次比较表中的优先级(Preference)和开销(Cost)来决定将哪些路由下发到FIB。其中Preference用于不同路由协议间优先级比较;Cost用于同一种路由协议不同路由条目的比较。FIB通过最长匹配原则来决定走哪条路由,也就是掩码匹配度越高的路由越优先选择。.

2021-01-19 15:35:03 869

原创 OSPF网络可以没有BDR(实验)

#问题(以下全文基于OSPFv2,即IPv4下的OSPF;链路层协议为以太网)OSPF在发送/接收Hello包时,可以选举DR/BDR。Hello包有一个字段为Rtr Pri(8 bit),是DR的优先级,默认为1,当它设置为0时,路由器不参与DR/BDR选举。那么一个网络若除了一台路由器,其余路由器优先级全为0,也就会意味着网络中没有BDR?这样可行吗?(结论是可以的,即OSPF网络可以没有BDR)#实验条件...

2021-01-15 13:28:25 1410

原创 静态路由只配置出接口网络不通(实验)

#问题引入配置静态路由时,可以选择配置下一跳地址,也可以选择配置出接口,也可以两者同时配置。但是以太网环境中只配置下一跳时,两个网段无法通信。#实验条件采用华为的eNSP模拟器如下图,两台PC连接到两台路由器,PC1处于11.0.0.0 24网段,PC2处于22.0.0.0 24网段。他们的网关都设置为连接的路由器接口。路由器之间网段为12.0.0.0 24。需求是PC1和PC2之间通信,显然AR1和AR2两台路由器需要有对应的路由。即当PC1向PC2发包时,由于AR1为PC

2021-01-15 12:33:48 5892 1

原创 二分查找结束时左右指针的位置

#引言在做折半插入排序时,发现自己对于二分的理解不是很充分,特别是二分查找失败时左右指针的位置。本来想着单纯推导一下,但发现推导一遍后不仅知道了这个问题的答案,对于二分查找也有了更深的理解。#结论若用left、right和mid分别记录二分查找时的左标记指针、右标记指针和中间位置标记指针。对元素在查找序列进行查找,则在查找结束时,无论查找是否成功,查找序列中left左边的元素都比小,right右边的元素都比大。#举例分析查找序列为(7,10,13,16,19),画出折半查找的判定

2020-12-02 14:58:17 858 3

原创 选择题快速求解AOE网的关键路径

#引言求解AOE网关键路径时,书上的方法为先从源点到汇点求解事件最早发生时间ve,再从汇点到源点求解事件最迟发生时间vl,再利用ve和vl求解每个活动的最早开始时间e(i)和最迟开始时间l(i),e(i)和l(i)相等的活动则为关键活动,他们一起组成的从源点到汇点的路径即为关键路径。王道的书上在举例子的时候,备注了一小行话:“如果这是一道选择题,根据上述求ve()的过程就已经能知道关键路径。”,但并没有展开讲如何确定。本文就补充说明一下。#求法这里直接举例给出求法如下AOE图,我们从V1

2020-11-28 12:12:26 7549 10

原创 Dijkstra(邻接矩阵实现)

Dijkstra使用邻接矩阵存储图对比于邻接表,会占据大量内存,但通常此类题目不会卡内存。#include&lt;bits/stdc++.h&gt;using namespace std;#define INF 0x3f3f3f3f#define Max 20000 //最大点编号int Map[Max][Max]; //图int flag[Max]; //点标记int an...

2020-11-26 14:53:09 2944 1

原创 二叉树之线索二叉树 二叉树的中序线索化和线索化后的遍历 C++代码实验

/** * 中序线索化二叉树 * 核心本质还是中序遍历,只不过在遍历时记录前驱后继的指针 * 设定now和pre两个指针遍历,now为当前位置的结点,pre为刚刚经过的 * 即now为pre的后继,pre为now的前驱 * 则now的左空指针指向pre,pre的右空指针指向now */#include<iostream>using namespace std;#define DataType inttypedef class ThreadTree{ publi.

2020-11-09 10:46:32 508

原创 二叉树之二叉线索树 快速手算中序线索化前驱后继的方法

引言很多时候我们需要先手动对树进行一些分析,再考虑使用什么样的结构去编程,所以手算去分析一颗树也是十分重要的。对于二叉树,我们可以将它改造为线索树,也就将左空指针指向其前驱结点,右空指针指向其后继结点。对于二叉排序树(BST),它的中序遍历得到的序列是递增的,所以这时就给了我们快速求解某结点前驱后继方法的机会。本文记录了一种利用标记对快速求解中序遍历下二叉排序树的结点前驱后继的方法。问题假设如图所示有14个结点的平衡二叉树,我们现在随便选取一个结点,比如结点10,熟悉BST的人一

2020-11-08 16:37:27 803

原创 二叉树空指针个数的理解

引言二叉树在使用链式存储时,每一个结点都有一个指针,或者为空或者指向子结点。空指针的个数为n+1是众所周知的事,虽然不论哪种证明方法都仅仅是恒等式变形的结果,但去分析等式两边的意义是十分有助于理解关系本质的。几种理解1.以节点数为切入点...

2020-11-08 12:58:24 11640 3

原创 二叉树之二叉排序树 插入和中序遍历 C++代码实验

/** * 二叉排序树BST的插入和中序遍历 * 排序树的中序遍历输出序列是递增的 **/#include<iostream>using namespace std;#define DataType int#define test_length 12DataType test_data[test_length]={5,3,1,4,9,2,4,2,7,6,8,9}; //测试用例typedef class btNode{ //树的节点,每个节点可以视为一棵树的根.

2020-11-08 10:32:22 1217

原创 队列之链式存储 C++代码实验

#include<iostream>using namespace std;#define DataType inttypedef class Node{ //队列链节点 public: DataType data; Node *next; }Node;typedef class queue{ //链式队列 Node *front,*rear; int length; .

2020-11-05 16:09:23 232

原创 队列之顺序存储 C++代码实验

#include<iostream>using namespace std;#define MaxSize (5+1)#define DataType int//采用循环队列方式解决假溢出问题,即队列的front/rear = (front/rear)%MaxSize//如果不加入别的检查方法(本文就没有),这样的做法会使得数组有一个位置始终为空,即实际容量为MaxSize-1typedef class queue{ DataType data[MaxSize]; .

2020-11-05 14:46:38 135

原创 栈之链式栈 C++代码实验

#include<iostream>using namespace std;#define DataType inttypedef class Node //链式栈可以视为有限制条件的单链表{ public: DataType data; Node *next;}Node; //节点结构对于用户是不可见的typedef class{ Node *top = NULL; //栈顶指针 .

2020-11-04 15:10:11 195

原创 栈之顺序栈 C++代码实验

#include<iostream>using namespace std;#define DataType int#define MaxSize 5 //栈容量typedef class{ DataType stack_data[MaxSize]; int top=-1; //顺序栈只需要int型指示栈顶的位置下标 public: void push(DataType .

2020-11-04 14:18:29 382

原创 线性表之顺序表 C++代码实验

基本的查空、插入/删除、显示功能。其他功能只需要在这个结构上照着写函数即可,就不放在代码里面,否则反而影响阅读。#include<iostream>using namespace std;#define MaxNum 100 //线性表最大长度typedef int DataType; //线性表数据类型,简单起见设为intclass SeqList{ //线性表 public: DataTyp

2020-10-31 14:40:56 243

原创 VSCode 控制台中文乱码问题(修改为UTF-8)

#问题最近需要用C,想着vs太大了,就下了一个vs code,配置完成后跑了一个Hello World,显示的是乱码。问题根本其实是windows控制台默认的编码不是utf-8,以前很多时候跑程序都需要先chcp 65001来设置编码。但vs code怎么改,找了很多方案,什么修改settings.json之类的,都没有作用。最后找到一个有效的方案,这里记录一下。#解决...

2020-08-10 11:56:26 9741 7

原创 Unity ScreenToWorldPoint带来的UI显示问题

#问题鼠标右键选中棋子时,让棋子跟随鼠标移动。但棋子跟随时界面上没有显示。#解决实现棋子跟随鼠标使用的方法是每一帧都修改棋子的position到鼠标现在的position。由于鼠标的Input.MousePosition是屏幕坐标,所以需要使用Camera.main.ScreenToWorldPoint()转换到世界坐标,参数是Vector3的变量。但由于屏幕坐标只与x,y有关,所以Input.MousePosition得到的Vector3.z是0,而Camera.main.Scre

2020-05-09 14:35:07 1143

原创 Unity 空格会触发Button的问题

#问题做了一个界面,空格可以召唤或者关闭一个面板,上面有Button可以控制人物数量信息。当点击过Button修改数量,再按下空格隐藏面板后,最后点击的Button就会被空格键触发一次。如下图#解决这是由于Button中Navigation(导航)功能导致的。将导航设置为None即可。...

2020-05-08 15:58:12 3045 2

原创 Unity ScrollRect会自动回弹的问题

#问题通常我们会在一个父物体中加入Scroll Rect组件,在其子物体(通常是Panel)中加入Grid Layout Group组件,使得Panel中的内容可以滑动显示。刚开始做的时候,Scroll Rect的运动类型选择的弹性,此时无论怎么拖拽和滑动,子物体显示的内容都会自动弹回。#解决在Scroll Rect中我们设置的显示内容是子物体Panel,所以是Panel的大小限制...

2020-05-07 09:05:33 5693 2

原创 Unity脚本子线程修改UI的一种方式

初学Unity,发现它和Android一样,没法在子线程中修改UI,甚至没法创建GameObject或者使用GameObject.Find()于是又只有拐着弯去实现线程间通信。我使用了一种方法,在这里记录一下,因为都是自己探索的,所以这个方法不一定所有情况都好用。#情景在一个房间列表界面,房间列表的内容是从服务器不断接收的,所以不得不为socket的接收创建一个子线程,接收到房间信...

2020-04-15 16:15:24 2340

原创 Opengl ES(五):响应触控事件

###我们已经学习了opengl ES画图的框架,成功改变了背景颜色、绘制了一个三角形,并学会了怎么去改变图像显示比例和虚拟摄像机的位置。但仅仅是显示一张图片,我们没有必要去写那么多代码,接下来就是怎么来交互。在之前已经完成的框架下,完成这个过程就比较简单了。前情回顾Opengl ES(一):第一个例子Opengl ES(二):画一个三角形之创造一个三角形Opengl ES(三...

2020-03-01 12:31:16 672

原创 Opengl ES(四):设置projection和camera views

###我们已经成功显示了橙色背景下绿色的三角形Opengl ES(一):第一个例子Opengl ES(二):画一个三角形之创造一个三角形Opengl ES(三):画一个三角形之显示到屏幕最后得到的效果如图可是如果你是自己设计的三角形,你应该会发现不太对劲,比如我这里设计的三角形顶点 static float triangleCoords[] = { /...

2020-02-29 18:05:56 726

原创 Opengl ES(三):画一个三角形之显示到屏幕

###我们已经利用opengl改变了背景颜色Opengl ES(一):第一个例子并且创造了一个三角形Opengl ES(二):画一个三角形之创造一个三角形接下来我们就将创造的三角形输出显示代码参考https://developer.android.google.cn/training/graphics/opengl/draw###由于需要自己编写和加载着色器,这个过...

2020-02-28 21:38:05 655

原创 Opengl ES(二):画一个三角形之创造一个三角形

###在第一个例子里面,我们创建了两个类来更改背景颜色,https://blog.csdn.net/u014302425/article/details/104533354对于opengl ES的架构有了一定的认识,接下来我们继续去画一个三角形,代码参考https://developer.android.google.cn/training/graphics/opengl/shapes...

2020-02-28 15:29:23 474

原创 Opengl ES(一):第一个例子

###Opengl ES的介绍这里不再赘述,这里提供一个Hello World级别的第一个例子,最后实现效果是修改背景颜色,代码参考https://developer.android.google.cn/training/graphics/opengl/environment###最简单的实现需要两个类,GLSurfaceView和GLSurfaceView.RendererGLS...

2020-02-27 12:34:19 788

原创 关于Mysql8设置简单密码遇到的一些问题

#1.Mysql初次登陆使用 grep 'password' /var/log/mysqld.log 查看初始密码。#2.查看密码规则使用show variables like 'validate_password%';查看密码规则时,提示ERROR 1820,让我们先修改密码后才能查看规则。并且之后为了设置简单密码要修改的变量如validate_password.poli...

2019-10-04 13:07:27 729

原创 Tkinter实战——简易计算器

本次任务主旨在于对Tkinter进行UI编程练习,不关注计算器的算法细节。所以计算器实现是直接将输入的表达式用eval()函数传入编译,得到答案。具体实现过程:#创建窗口创建一个340x720固定大小,标题为”计算器“的窗口from tkinter import *root = Tk() #创造窗口root.title("计算器") #更改标题root.resiz...

2018-12-04 20:06:28 1055 1

原创 ReLU解决异或划分

ReLU(Rectified Linear Units)ReLU强大的原因之一就是可以完美地线性划分异或问题(异或的重要性不用多提,在数电逻辑实现和许多决策或加密算法中都是基础)(还有一个重要原因时ReLU可以解决多层网络梯度消失的问题)异或的数据空间表示出来如图 当运算量相同时(1,1)(0,0),结果为0;当运算量不同时(1,0)(0,1),结果为1如上图中不同颜色...

2018-11-28 15:26:03 1915

原创 1217 Arbitrage

#问题Problem DescriptionArbitrage is the use of discrepancies in currency exchange rates to transform one unit of a currency into more than one unit of the same currency. For example, suppose that 1...

2018-10-19 10:14:32 132

原创 Floyd最短路(含路径回溯)

/*Floyd-Warshall最短路D记录图P复原路径(P[i][j]表示i到j最路径上j的前驱点,也是DP打表实现),每更新一次D就更新一次P*/#include&lt;bits/stdc++.h&gt;using namespace std;#define INF 0x3f3f3f3f#define Max_N 1005int D[Max_N][Max_N];int ...

2018-10-18 20:28:04 951

原创 #杂记#最大公约数和最小公倍数

最大公约数使用辗转相除法由于gcd(a,b)=gcd(b,a mod b)int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}最大公倍数×最小公因数=a*b所以最大公倍数int gbd(int a,int b){ return a/gcd(a,b)*b; //a先除保证不超界}注意:最大公倍数×最...

2018-10-16 15:01:33 122

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除