自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Goallegoal的博客

人生有两条路,一条是必须走的,一条是想走的,把必须走的走好,才能走好想走的路。

  • 博客(242)
  • 资源 (3)
  • 收藏
  • 关注

原创 学习计划

个人成长计划决定做一个索引,一是提醒自己接下来要学些什么,二来将所学知识整理入库便于查找随时复习。Kali Linux 渗透测试备注

2020-04-25 22:13:50 312

原创 mycat的schema.xml配置文件中checkSQLschema=“false“字段的作用与相关错误信息处理

mycat的schema.xml配置文件中checkSQLschema="false"字段的作用与相关错误信息处理schema.xml配置如下:<mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="mydb" checkSQLschema="false" sqlMaxLimit="100"> <table name="student" dataNode="dn1" /> <table n

2021-07-02 17:26:14 1522

原创 DataGrip 连接 mycat 错误分析及解决

DataGrip 连接 mycat 错误分析及解决手上的工作需要使用mycat提供的分库分表功能,但是在命令行下操作不如图形化界面舒服,想着使用DataGrip 连接 mycat,在连接的过程中遇到了以下错误:下午9:44 mycat@localhostFailed to retrieve meta data.(1 min, 59 sec, 246 ms)该错误是在DataGrip界面中提示的,出现错误时,能看到左侧数据库列表中已经获取到了mycat中配置的数据库名字,但是加载不出数据库中的表

2021-07-01 23:21:53 1783

原创 pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) - 1)计算页偏移

pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) - 1)计算页偏移在mmap的手册中有一段示例代码,其中有一行:offset = atoi(argv[2]);pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) - 1);/* offset for mmap() must be page aligned */这一行代码表示的含义是:计算出内存中的页偏移量。具体的计算过程可以例举几个值计算一下,得到的

2021-04-18 15:49:52 1233

原创 Linux C 编程中的条件变量与互斥锁

Linux C 编程中的条件变量与互斥锁条件变量这里先不引入条件变量的应用场景,我们先来了解什么是条件变量以及条件变量可以实现什么样的功能。使用man手册查看关于条件变量的信息,如下:A condition (short for ``condition variable’’) is a synchronization device that allows threads to suspend execution and relinquish the processors until s

2021-04-17 08:48:23 307

原创 man手册中没有pthread_cond_init内容的解决方案

man手册中没有pthread_cond_init内容的解决方案在多线程编程条件变量部分,遇到需要使用pthread_cond_init,但是ubuntu@ubuntu:~/Desktop/linux$ man pthread_cond——initNo manual entry for pthread_cond_init在网上查找解决方案时发现有博主说可以通过安装manpages来解决:sudo apt-get install manpages-posix-dev但是安装完之后还是提示找不到

2021-04-16 08:19:39 1266 3

原创 非亲缘关系的两个进程以共享内存方式通信时,二者共享内存地址的值是否相同

非亲缘关系的两个进程以共享内存方式通信时,二者共享内存地址的值是否相同在终端中运行一次程序,该程序中的父子进程使用同一块共享内存进行通信,由于fork()时子进程继承父进程的数据空间、堆、栈等,所以变量的地址相同,因此在父子进程中分别打印该块共享内存的地址,得到的值是相同的。如果在进行通信的两个进程是相互独立的,但以共享内存的方式传递信息,那么该块共享内存在两个不同进程中的值是否相同呢?#include "common.h"// Usage: ./a.out -t 1|2 -m "message"

2021-04-15 11:13:07 846

原创 父进程中getpid()值与子进程中getppid()值不相同的问题及解释

父进程中getpid()值与子进程中getppid()值不相同的问题及解释使用fork()创建一个新的子进程,并调用getpid()与getppid()查看父子进程之间的pid的关系。示例代码如下:#include "common.h"int main() { pid_t pid; if ( (pid = fork()) < 0 ) { perror("fork()"); exit(1); } if ( pid ) { printf("parent process <

2021-04-13 17:03:13 2007

原创 C++模拟实现线程池及多线程原子打印

C++模拟实现线程池及多线程原子打印#include <iostream>#include <thread>#include <vector>#include <unordered_map>#include <mutex>#include <condition_variable>using namespace std;namespace myTest {class Task {public: template

2021-04-01 11:18:44 349

原创 模拟实现function模板类接收不同可调用对象的功能

模拟实现function模板类接收不同可调用对象的功能#include <iostream>#include <functional>using namespace std;namespace myTest {template<typename T, typename ...ARGS>class base {public: virtual T run(ARGS...) = 0; virtual base<T, ARGS...> *get

2021-03-30 17:17:05 144

原创 怒刷排列组合,如何解“排列组合”一类的问题

怒刷排列组合在刷Leetcode题目时,时常会看到一些大佬提出时间复杂度为O(1)的题解,而我还在O(nm)和O(n)之间如此反复,细细品味,其实有一类题目是经常可以爆出O(1)的解法的,这一类题目背后的数学依据就是排列组合。顾名思义,排列即排列,组合即组合,排列组合主要是用来解决做一件事情有多少种方法或者某件事发生的概率是多少的问题。例如小明从家到学校可以选择步行、骑车、坐出租车。**问题1:**小明从家到学校有几种出行方式?**问题2:**小明从家到学校再返回家中,有几种出行方式?针对上述的两个问

2021-01-13 11:16:26 552

原创 搞定二分查找,套路深得人心

在排序与查找算法中,二分查找是一种常用的用来在有序排列中查找指定元素的方法。二分查找也称折半查找,是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按照关键字有序排列。二分查找的查找思想为:首先将待搜索序列进行排序,既可以按关键字从小到大,也可以从大到小进行排序,将有序序列从中间一分为二,比较中间值与目标值的大小关系,若待搜索序列是按从小到大进行排列的,且此时中间值比目标值小,那么说明目标值一定不在有序序列的左边,接下来重复上述步骤对右边的序列进行进一步二分查找,直

2021-01-06 09:09:46 290

原创 求两个三位数相乘得到的最大回文数

求两个三位数相乘得到的最大回文数所谓的回文数是指:一个像14641这样“对称”的数,即:将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样。这里,“回文”是指像“妈妈爱我,我爱妈妈”这样的,正读反读都相同的单词或句子。例如由两个两位数相乘得到的最大回文数为9009,9009 = 91 * 99。这里要求的是两个三位数相乘得到的最大回文数。下面内容的侧重点是如何提高寻找这样一个回文数的效率,而不再阐述具体每一段代码所表示的含义。按照正常的枚举法思路,程序要实现的功能为,从100到99

2020-12-28 20:22:47 2031 2

原创 并查集的实现与优化

并查集的实现与优化LeetCode上有一道名为朋友圈的题目,如下:班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。读完题目要求,暂时能想到的是,如果要解决该问

2020-12-26 10:16:15 297

原创 Linux系统下执行history中的指令

Linux系统下执行history中的指令在Linux系统中,使用history指令可以查看最近使用过的指令,例如:ga@a:~$ history 1462 rm *.txt 1463 ls 1464 history 1465 which fc 1466 tldr fc 1467 history 1468 ls 1469 history 1470 ls 1471 history 1472 ls这里仅展示了部分曾使用过的指令,当需要重新使用其中的某条

2020-12-18 16:04:17 504 1

原创 shell脚本实现查找素数-暴力、素数筛、线性筛

shell脚本实现查找素数-暴力、素数筛、线性筛暴力求解 1 #!/bin/bash 2 3 if [[ $# -ne 2 ]];then 4 echo "Usage: $0 start_num end_num" 5 exit 6 fi 7 8 START=$1 9 END=$2 10 11 function isPrime() { 12 num=$1 13 local i 14 for (( i=2; i&l

2020-12-16 11:12:04 376

原创 Linux中设置文件的特殊权限-set_uid、set_gid、sticky bit

Linux中设置文件的特殊权限-set_uid、set_gid、sticky bitset_uid,占位符s,二进制程序文件(非脚本),用户在执行该程序时获取程序所有者权限例如对于passwd可执行程序,查看其权限为-rw-r--r-- 1 root root 1732 Dec 14 10:03 passwd这里可以看到对于普通用户来说,是没有passwd的可执行权限的,但是依然可以调用该命令进行密码的修改,这是因为增加了 set_uid 的权限,当用户执行该程序时获取程序所有者的权限

2020-12-14 14:26:42 293

原创 Linux系统中的/etc/fstab文件

Linux系统中的/etc/fstab文件/etc/fstab是用来保存静态文件系统信息的。在系统启动的过程中,会有一个加载虚拟文件系统的步骤,然后将内核加载到虚拟文件系统中启动第一个进程systemd,然后再加载文件系统。而在/etc/fstab文件中记录着整个机器对应的系统盘信息,系统在启动之初并没有系统盘,在内核、systemd进程相继启动后,才会基于这个/etc/fstab文件中的信息去挂载系统盘。当然,如果想给系统加一个硬盘却又不想重装系统,就可以在/etc/fstab文件中添加硬盘的信息

2020-12-10 21:05:36 354

原创 Linux中的HOME目录和home目录???

Linux中的HOME目录和home目录???在Linux标准文件系统中,/目录是整个文件系统的根目录,其他所有的目录都要依附于根目录而存在,其中就包括常说的家目录。那所谓的家目录在哪呢?aaa@bbb:/$ lsbin boot dev etc home lib lib32 lib64 libx32 lost+found media mnt opt proc root run sbin srv swapfile sys tmp usr var可以看到

2020-12-10 19:36:04 19401 2

原创 man手册第一行中的数字代表的含义

man手册第一行中的数字代表的含义1 表示用户在shell环境下可以操作的命令或可执行文件2 表示系统内核可调用的函数和工具3 一些常用的函数与函数库4 设备文件的说明,通常是/dev下的设备5 配置文件或某些文件的格式6 游戏7 惯例与协议,例如Linux文件系统,网络协议等8 系统管理员可用的命令9 跟kernel有关的文件o 旧文件n 新文件l 本地文档...

2020-12-10 15:40:24 294

原创 Linux中的七种文件类型

Linux中的七种文件类型-普通文件包括文本文件、编译好的二进制文件、特殊格式的数据文件。d目录文件目录也是文件,允许以操作文件的方式来操作目录。l链接文件在Linux系统中链接文件分为硬链接和软连接两种,其中硬链接是指通过索引节点来进行链接,在系统中多个文件各指向同一个索引节点,这种方式可以防止误删重要数据;而软链接也称为符号链接,实际上是一个存储着指向源文件链接的位置信息的文本文件。举一个例子,当源文件删除后,用户通过软链接将无法查看文件的内容,但是通过硬链接文件还可以

2020-12-10 10:53:23 827

原创 C++建立顺序存储完全二叉树并以广义表形式输出

建立顺序存储完全二叉树并以广义表形式输出题目要求:假设用顺序表来表示一棵完全二叉树。从根到叶结点按层次从 1 开始编号,同一层次从左到右编号,数据存储在对应的数组元素中。试编写算法由此顺序存储结构建立该二叉树的二叉链表。输入格式:输入只有一行,为顺序输入的从根节点开始的各个节点元素,它们之间用空格隔开,整个输入以 $ 结束。输出格式:输出有一行,为二叉树结构的广义表达式。样例输入:A B C D $样例输出:A(B(D),C)解题思路:由完全二叉树的特点可得,若

2020-12-09 11:24:22 885

原创 利用scanf的%[]格式控制获取带空格的字符串输入

利用scanf的%[]格式控制获取带空格的字符串输入 char name[3][101]; for(int i = 0; i < 3; i++) { scanf("%[^\n]", name[i]); // 遇到非换行符的字符就保存到数组中 getchar(); // 排除scanf引入的换行 }...

2020-12-07 15:53:17 169

原创 使用指针和数组两种方式存储从键盘输入的字符串

使用指针和数组两种方式存储从键盘输入的字符串C语言中保存字符串常使用两种方式,一种是通过字符数组保存字符串,另一种是通过字符指针的方式保存常量字符串的地址。首先说明通过字符数组的方式保存字符串,如int main() { char arr[20]; scanf("%s", &arr); printf("%s", arr); return 0;}使用该方式可以实现从键盘获取输入然后保存到指定的数组中,数组中每个单元保存的是一个个的字符。另外一种方式,即使用

2020-12-07 14:40:59 4473

原创 Qt 无法导入 QSound 头文件

Qt 无法导入 QSound 头文件向代码中添加音效时,需要使用到QSound类,就要引入QSound的头文件#include <QSound>但是在实际引入时,发现即使添加了该头文件,还是提示QSound文件不存在,这该如何解决呢?解决方案:首先查看Qt中的帮助文档,找到有关QSound的帮助信息,确认头文件的引入方式正确;然后看到关于qmake的信息:qmake: QT += multimedia,这条信息的含义是,如果想使用QSound需要在.pro文件中加入这条指令。这样就可

2020-12-07 11:16:02 2688 3

原创 矩阵乘法

矩阵乘法题目要求:给定一个 m 行、n 列的矩阵 A 和一个 n 行、m 列的矩阵 B。需要用矩阵 A 与矩阵 B 相乘,并且将 m 行 m 列的乘积结果输出。输入格式:测评机会反复运行你写的程序。每次程序运行时,首先在第一行输入2 个整数,分别对应题目描述中的 m 和 n(1≤m, n≤10),两个整数之间用一个空格分隔。接下来 m 行,每行包含 n 个整数,每两个整数之间用一个空格分隔。对应 m 行 n 列的矩阵A。再接下来 n 行,每行包含 m 个整数,每两个整数之间用一个空格分隔。对应

2020-12-06 15:54:11 441

原创 更大行列式

更大行列式问题描述:给定一个 3 行、3 列的矩阵 A 和一个 2 行、2 列的矩阵 B。计算矩阵 A 和矩阵 B 的行列式并输出其中较大的一个数。输入格式:测评机会反复运行你的程序。每次程序运行时,输入为前三行,每行包括 3 个空格分隔开的符合描述的正整数,组成了 3×3 的矩阵 A。之后两行,每行包括 2 个空格分隔开的符合描述的正整数,组成了 2×2 的矩阵 B。(输入矩阵中的所有元素均大于等于 −50 小于等于 50)输出格式:输出两个行列式中较大的一个,共一个整数,占一行。

2020-12-05 15:32:47 459

原创 GitHub 访问优化

GitHub 访问优化点击进入网站:站外连接记录主页显示的 IP 地址,作为 IP1,然后在主页上方搜索github.com找到第二个 IP 地址,作为 IP2。使用命令sudo vim /etc/hosts打开hosts文件,并在最后加入以下信息:第一个IP github.global.ssl.fastly.net 第二个IP github.com然后保存并退出。...

2020-12-05 09:47:03 161

原创 解决SSH连接超时

解决SSH连接超时使用命令sudo vim /etc/ssh/sshd_config打开sshd的配置文件,修改以下命令(若配置文件中没有,手动添加下述两行即可):ClientAliveInterval 60 #server每隔60秒发送一次请求给client,然后client响应,从而保持连接ClientAliveCountMax 3 #server发出请求后,客户端没有响应得次数达到3,就自动断开连接...

2020-12-05 09:33:30 924

原创 矩阵螺旋输出

矩阵螺旋输出题目描述:给定一个 m 行、n 列的矩阵,请按照顺时针螺旋的顺序输出矩阵中所有的元素(从[0][0]位置开始,具体请参见下图)。输入格式:测评机会反复运行你写的程序。每次程序运行时,首先在第一行输入 2 个整数,分别对应题目描述中的 m 和 n(1 ≤ m, n ≤ 100),之间用一个空格分隔。接下来输入 m 行,每行包含 n 个整数(−10000 ≤ a , b , c ≤ 10000),每两个整数之间用一个空格分隔。输出格式:输出为一行,包括 m × n 个整

2020-12-04 17:06:09 2743 2

原创 Qt 基本文件操作

Qt 基本文件操作文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。在所有的 I/O 设备中,文件 I/O 是最重要的部分之一,因为大多数的程序依旧需要首先访问本地文件。QFile提供了从文件中读取和写入数据的能力。通常会将文件路径作为参数传给QFile的构造函数。不过也可以在创建好对象后使用setFileName()来修改。QFile需要使用 / 作为文件分隔符,会自动将其转换成操作系统所需要的形式,例如 C:/windows 这样的路径在 Windows 平台下

2020-12-01 19:52:42 408

原创 了解 Qt 绘图设备QPixmap、QBitmap、QImage和 QPicture

了解 Qt 绘图设备QPixmap、QBitmap、QImage和 QPicture绘图设备是指继承QPaintDevice的子类,分别是QPixmap、QBitmap、QImage和 QPicture。四个不同的派生类主要功能也不同,其中,QPixmap专门为图像在屏幕上的显示做了优化;QBitmap是QPixmap的一个子类,它的色深限定为1,可以使用 QPixmap的isQBitmap()函数来确定这个QPixmap是不是一个QBitmap;QImage专门为图像的像素级访问做了优化;QPi

2020-12-01 15:33:07 459

原创 重写 QWidget 中的 paintEvent() 处理绘图事件

重写 QWidget 中的 paintEvent() 处理绘图事件Qt的绘图系统允许使用相同的 API在屏幕和其它打印设备上进行绘制。整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间;QPaintEngine提供了画笔(QPainter)在不同的设备上进行绘制的统一的接口。QPaintEn

2020-12-01 10:45:56 12319

原创 Qt中的事件过滤器

Qt中的事件过滤器在程序到event事件分发器之间,还有一层更为高级的过滤,称为事件过滤器,该部分可以完成从程序分发到event事件之间的一次高级拦截。事件过滤器的使用包含两个步骤:1、给控件安装事件过滤器;2、重写eventfilter事件。// 步骤1,安装事件过滤器ui->label->installEventFilter(this);// 步骤2,重写eventfilter事件bool Widget::eventFilter(QObject *watched, QEve

2020-11-30 21:22:03 337

原创 Qt中event事件分发器

Qt中event事件分发器运行程序时会根据实际的操作触发不同的多个事件,例如按下鼠标事件,直观讲好像是点击鼠标后,直接会调用mousePressEvent来处理事件,其实不然,在程序与各事件处理函数之间,还有一个专门用来管理事件的部分,称为事件分发bool event(QEvent *ev)。因此,实际事件处理流程是:用户点击鼠标,程序接收到该动作,将其交付给事件分发,事件分发对事件进行判断,然后传递给对应的事件处理函数,完成事件的处理。事件分发的返回值为bool类型,如果返回值为true,则表示用户将

2020-11-30 21:03:33 467

原创 Qt实现定时器的两种方法

Qt实现定时器的两种方法第一种,重写QTimer类中的timerEvent()方法#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); id1 = startTimer(1000); id2 = startTimer(2000);}Wi

2020-11-30 19:50:58 1634

原创 Qt设置鼠标追踪setMouseTracking()

Qt设置鼠标追踪setMouseTracking()void setMouseTracking(bool enable)参数可以为true或者false,若将参数置为false,意味着关闭鼠标追踪,此时只有当至少一个鼠标按键按下时才能捕获到鼠标移动事件。而将参数置为true时,即使没有按下鼠标键,移动鼠标时也可以捕获鼠标的移动事件。...

2020-11-30 15:48:35 1717

原创 Qt鼠标事件中的button()和buttons()

Qt鼠标事件中的button()和buttons()QEvent类是所有事件类的基类,Qt的主事件回路从事件队列获取本地窗口系统事件,将其转换为QEvent,然后再传递给QObjects。创建鼠标事件,MyLabel继承自QLabel,声明如下:#ifndef MYLABEL_H#define MYLABEL_H#include <QWidget>#include <QLabel>class MyLabel : public QLabel{ Q_OBJECT

2020-11-30 15:37:46 1946

原创 Qt自定义控件及设计控件功能

Qt自定义控件及设计控件功能Qt Creator中自带多种常用的控件,使用者可以在设计模式下进行页面布局,拖拽生成想要使用的控件,并在编辑模式下对控件的功能实现进行控制。这些开发环境自带的控件虽然种类多但功能单一,每一种控件只能完成特定的功能。为了满足开发需要,就需要将其中的几种控件进行组合,来完成单一控件无法实现的任务。下面介绍如何在Qt Creator中封装自定义控件。在封装自定义控件前,先要new一个用来放置控件的ui,这样既可以继续使用设计模式,又不妨碍其他控件。右键点击项目,添加Qt设计师界面

2020-11-26 17:01:16 867

原创 Qt Creator中的Item Widgets部署及使用-QListWidget、QTreeWidget、QTableWidget控件

Qt Creator中的Item Widgets部署及使用-QListWidget、QTreeWidget、QTableWidget控件1、QListWidget控件在设计模式中,拖拽Item Widgets中的List Widget生成一个空的列表。然后回到编辑模式进行部署: // #include <QListWidget> // 基于item,每行都代表一个单独的QListWidgetItem项,先创建一行 QListWidgetItem *item = new

2020-11-26 15:22:19 435

IPS镜像文件.zip

ids镜像文件

2021-05-25

VRRP实现网关冗余.rar

虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能够维护路由器间的连通性。

2020-04-03

BGP综合实验.rar

通过BGP基本部署实现不同 AS 之间的网络通信。 根据网络拓扑进行IP地址规划,实现底层联通,并进行AS设计,运行BGP协议,实现AS之间的互联,并通告路由。

2020-03-28

空空如也

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

TA关注的人

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