- 博客(37)
- 资源 (11)
- 收藏
- 关注
原创 学习笔记——C++实现ARP欺骗
以下代码大体上是没有问题的,可以根据自己的一些需求进行修改!谢谢指正错误在课设期间,从网上学习了简单的实现ARP欺骗ARP欺骗的原理很简单:通过不断的向目标发送ARP包,致使目标主机的ARP缓存表中正确的IP映射的是错误的MAC地址在书上的介绍中,采用了WinPcap的开发包,这样很方便的对网卡进行操作所以,首先需要安装winpacp,并下载开发者包https://www......
2019-01-31 11:14:27 2508 1
转载 看完后,搞懂ARP的工作原理,其实并不难(好文)
原址本期,我就来解答一下关于ARP的工作原理吧! 思路1、思考ARP到底是干嘛的? 为什么要有它?why? 2、掌握ARP的工作原理。技术人,要掌握一种技术,绝对离不开以上两点基本思路,带着这两个思路去学习新技术,你绝对是不可能学不会的。再笨,你也会学得很深刻的。甚至,你还可以有更多的思路,比如,可不可以没有它? 有它?跟没有它的情况又是什么样的?等等。 1、ARP到...
2019-01-30 15:25:58 762
原创 error LNK2001: 无法解析的外部符号 __imp__htonl@4(编程解决方法)
正在编译...1>Ipv4IPv6traceroutesrc.cpp1>d:\研究生\c++\study\test\test\ipv4ipv6traceroutesrc.cpp(461) : warning C4267: “参数”: 从“size_t”转换到“DWORD”,可能丢失数据1>d:\研究生\c++\study\test\test\ipv4ipv6tracerou......
2019-01-30 14:39:23 21272 1
原创 QT 环境下编写 BOOST ASIO程序
Asio是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的C++库,一般和Boost库一起使用,也可以独立使用。ASIO有两个版本,一个必须依赖BOOST,一个是不需要依赖Boost的,具体原因以及区别详见:https://think-async.com/Asio/AsioAndBoostAsio.html网站提供了不依赖Boost库的版本。单独使用asio很简单,直接引用......
2019-01-24 22:22:17 1808
转载 MSVC 版本号对应(有点坑)
MSVC++14.0_MSC_VER== 1900 (Visual Studio 2015) MSVC++12.0_MSC_VER== 1800 (Visual Studio 2013) MSVC++ 11.0_MSC_VER== 1700 (Visual Studio 2012) MSVC++ 10.0_MSC_VER== 1600 (Vis...
2019-01-24 16:10:32 15103 4
原创 update和repaint的区别
以下参考自官方文档:repaint:调用repaint函数会立刻执行重绘,某些场景是需要这样做的比如动画等。update:推荐使用该函数,其原因是该函数不会立即执行重绘,而是等到线程重新回到消息循环时再执行重绘,相比于repaint立即重绘函数而言,调用update函数时,会允许Qt尽量的优化速度以及闪烁的问题。 ...
2019-01-23 22:31:32 1165
转载 std::ref
首先,&是类型说明符,而std::ref是一个函数,返回std::reference_wrapper(类似于指针)。 为什么需要std::ref?(std::cref类似)主要是考虑到c++11中的函数式编程,例如:std::bind。 示例:#include <iostream>#include <functional> void ...
2019-01-22 22:52:34 310
原创 c++ 实现基于stl的信号量
在stl中并没有提供信号量,但是可以很容易的通过stl的中互斥量和条件变量来模拟实现信号量。类Semaphore中的acquire方法是获取信号,当总数不足时,则阻塞等待,直到信号被释放。release方法则是释放信号。具体的代码如下:#include <iostream>#include <mutex>#include <condition_v...
2019-01-22 22:29:09 10920
转载 转 vim 卡死
1、问题:vim 卡住 死机2、原因:使用vim时,会因为不小心按了Ctrl + s后,会发现不能输入任何字符,类似死机;这并不是Linux死机,或者vim卡住,而只是按了Ctrl + s后,vim停止向终端输出。3、解决方法:退出这种状态,按下Ctrl + q ...
2019-01-22 16:57:55 420
原创 C++中cout和cerr的区别?
之前一直在用,但就是没在意两者到底有啥却别,今天又想到这个问题,总结下吧(以下的内容均是本人从网上查阅资料看来整理的,暂时还没有查阅官方资料,不保证准确,欢迎讨论)其实大家平常常会用的主要有三个:cout、cerr、clog,首先简单介绍下三者。这三者在C++中都是标准IO库中提供的输出工具(至于有关的重载问题在此不讨论):cout:写到标准输出的ostream对象;cerr:输出到......
2019-01-22 13:50:03 763
转载 Qt信号量QSemaphore
Qt中的信号量是由QSemaphore类提供的,信号量可以理解为对互斥量功能的扩展,互斥量只能锁定一次而信号量可以获取多次,它可以用来保护一定数量的同种资源。acquire()函数用于获取n个资源,当没有足够的资源时调用者将被阻塞直到有足够的可用资源。release(n)函数用于释放n个资源。 下面通过一个典型用例:生产者和消费者,来实现这二者之间的同步。整个工程就一个main.cpp,文...
2019-01-22 13:11:46 576
转载 STL线程库简介
STL线程库的前身是boost::thread,在C++ 11标准化后便正式归纳入了stl库,通过它我们可以很容易实现跨平台的线程管理。 线程管理 在std::thread库中,一个线程用的是一个thread对象表示,当创建一个thread对象时即创建一个线程,一个简单的示例如下: #include <iostream> #include <...
2019-01-21 22:55:45 593
原创 C++ 并发编程,std::unique_lock与std::lock_guard区别示例
背景平时看代码时,也会使用到std::lock_guard,但是std::unique_lock用的比较少。在看并发编程,这里总结一下。方便后续使用。std::unique_lock也可以提供自动加锁、解锁功能,比std::lock_guard更加灵活。std::lock_guardstd::lock_guard是RAII模板类的简单实现,功能简单。1.std::lock_g......
2019-01-21 22:52:01 239
原创 unlock of unowned mutex(stl::mutex)
今天在使用stl的mutex过程中出现了异常,初步研究是由于mutex的加锁和解锁在分别在不同线程中执行所导致。所以,对于mutex而言,加锁和解锁都要在同一线程中,而不应该是一个线程加锁,另一个去解锁。官方文档的解释:对于lock: Blocks the calling thread until the thread obtains ownership of t...
2019-01-21 22:30:35 11788 1
原创 QWaitCondition 的正确使用方法
Qt中的QWaitCondition和QMutex的关系如同stl中的condition_variable和mutex的关系几乎是一样的。在网上看到了一篇博文写的不错,故转载了。简单用法QWaitCondition 用于多线程的同步,一个线程调用QWaitCondition::wait() 阻塞等待,直到另一个线程调用QWaitCondition::wake() 唤醒才继续往下执行。......
2019-01-21 22:12:45 552
原创 重载自增自减运算符
class Test{public: int val; Test(int val){ this->val = val; } Test(const Test&copy){ this->val = copy.val; } //前置++ Test& operator ++(){ ...
2019-01-21 21:57:29 317
原创 多线程同步主界面的时候很卡,解决思路
有时候我们使用单线程的界面程序,主线程既要负责响应用户,又要负责处理其他任务,导致界面很卡,用户体验极差!有时候我们使用多线程来处理这个问题的时候,也会很卡,为什么呢?因为,当有多个线程同时同步主线程的时候,举个例子:比如多个线程同时同步多个信息到主线程,让界面显示出来。这时候主线程忙于应付其他线程,而无法响应用户,这又与单线程何异呢?这里提供了一些处理的思路。实际情况下,一般主线...
2019-01-20 21:59:36 11452
原创 使用moveToThread时的内存释放以及注意事项
在Qt中,使用线程主要有两种方式。1、自定义线程类,继承自QThread,并重写run方法即可。该方法就不再阐述了。2、就是推荐使用的方法。示例代码如下:1、自定义Worker类,将线程中的逻辑在该类中以槽函数的方式实现:Worker.h#ifndef WORKER_H#define WORKER_H#include <QObject>class W...
2019-01-17 21:01:27 16221
原创 QT QPointer类
QPointer类是一个模板类,是为了QObject提供的一种监视指针。QPointer模板类类似于标准库中的weak_ptr弱引用特性。即不管理内存,仅提供监视以及访问 QPointer 指针引用的对象被销毁时候,该指针会自动指向NULL举例说明//假设Test类继承自QObjectTest* t1 = new Test;QPointer<Test> t2 = ...
2019-01-15 22:22:43 733
原创 简要总结四个智能指针
在c++标准库里主要有四个智能指针:C++四种智能指针auto_ptr、unique_ptr、shared_ptr和weak_ptr。其中auto_ptr是C++98标准化引入的;scope_ptr、shared_ptr和weak_ptr是C++11标准化才引入的(当然,早在C++03的TR1中就已经可以使用了)。我们都知道,auto_ptr虽说简单,但使用起来却到处是坑,以至于大家都不......
2019-01-15 22:05:31 1458
原创 数组名和数组名取地址的区别
以下代码会打印出什么样的日志呢?#include <stdio.h>int a[2] = {1,2};int main(){ printf("a = %p\n", a); // I printf("&a = %p\n", &a); // II printf("a + 1 = %p\n", a + 1);// I......
2019-01-15 21:31:21 334
原创 C++智能指针 weak_ptr
C++智能指针 weak_ptr weak_ptr 是一种不控制对象生命周期的智能指针(注意), 它指向一个 shared_ptr 管理的对象. 进行该对象的内存管理的是那个强引用的 shared_ptr.而weak_ptr只是提供了对管理对象的一个访问手段. weak_ptr 设计的目的是为配合 shared_ptr 而引入的一种智能指针来协助 shared_ptr 工作, 它只可以......
2019-01-14 22:14:27 294
原创 c++ shared_ptr使用的几点注意
先介绍一下shared_ptr.是c++为了提高指针安全性而添加的智能指针,方便了内存管理。功能非常强大,非常强大,非常强大(不单单是shared_ptr,配合week_ptr以及enable_share_from_this()以及share_from_this())!!!对于支持智能指针的c++版本编程,能用智能指针就用智能指针!智能指针的头文件是<memory>,具体用法请参考......
2019-01-14 22:02:07 1442
原创 Qt之界面实现技巧——包括任务栏不显示,自定义窗体,最大化最小化按钮等等全面总结
总结一下,在开发Qt的过程中的一些技巧!可遇而不可求。。。一、主界面1、窗口 最小化 最大化 关闭按钮、显示状态自定义 setWindowFlags(Qt::CustomizeWindowHint); setWindowFlags(Qt::WindowCloseButtonHint); //只要关闭按钮 setWindowFlags(Qt::Win......
2019-01-10 22:10:36 10109 1
原创 c++中的NULL和nullptr
由于NULL的二义性,在c++11中,出现了nullptr。所以在今后写代码的时候,空指针尽量用nullptr表示吧,原因如下:#include <iostream>using namespace std;void test(int a){ cout<<"int"<<endl;}void test(int *a){ cout<...
2019-01-10 21:43:53 10133
原创 【C++】 四种强制类型转换
总 结 去const属性用const_cast。 基本类型转换用static_cast。 多态类之间的类型转换用daynamic_cast。 不同类型的指针类型转换用reinterpreter_cast。static_cast任何具有明确定义的类型转换,只要不包含底层const,都可以使用static_cast;注:顶层cons......
2019-01-10 17:30:57 318
原创 根据vld打印的信息查找内存泄露代码
通过vld来查找所编写的qt代码中内存泄露的代码位置非常简单。具体安装的配置的方法网上一搜一大堆,我在此就不讲了。当出现内存泄露的时候,vld的打印信息如下:其中圈起来的地方,就包括了内存泄露的代码所在的文件以及代码所在的行数...
2019-01-10 09:54:54 9830 1
原创 用Qt实现圆角窗口
两种方法可以实现:1、通过重写paintEvent事件来绘制圆角窗口2、使用setmask方法 第一种方法,这里我们需要重写paintEvent方法,在此之前先设置窗体为 this->setAttribute(Qt::WA_TranslucentBackground);//设置窗口背景透明 this->setWindowFlags(Qt::Frame...
2019-01-09 23:02:56 2459 1
转载 Qt之窗体透明 (三种不同的方法和效果)
关于窗体透明,经常遇到,网上的资料倒不少,也不知道写的时候是否验证过,很多都不正确。。。今天就在此一一阐述! 以下各效果是利用以前写过的一个小程序作为示例进行讲解!(代码过多,贴主要部分) 正常状态效果如下: 这部分代码就不贴了(主要讨论透明效果)。 一、全透明 setWindowOpacity(0.5); 取值范围为:0....
2019-01-09 21:21:43 3019
转载 css,qss font-family常用的黑体宋体等字体中英文对照
在实现网页效果或窗体界面时,细节很重要,字体也不例外,CSS:font-family常用字体中英文对照如下:微软雅黑: Microsoft YaHei宋体:SimSun黑体:SimHei仿宋: FangSong楷体: KaiTi隶书:LiSu幼圆:YouYuan华文细黑:STXihei华文楷体:STKaiti华文宋体:STSong华文中宋:STZhon...
2019-01-09 14:08:49 3914
原创 static函数与普通函数有什么区别
static函数与普通函数的区别: 用static修饰的函数,本限定在本源码文件中,不能被本源码文件以外的代码文件调用。而普通的函数,默认是extern的,也就是说,可以被其它代码文件调用该函数。 在函数的返回类型前加上关键字static,函数就被定义成为静态函数。普通 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。因此定义静态函数......
2019-01-08 22:34:38 11783
原创 指向成员函数的指针
这里获取的指向成员函数的指针包括普通成员函数和静态成员函数,没有考虑虚函数。代码非常简单,聪明的你一看就懂!#include <iostream>class Base1{ int a; void print(){ std::cout<<"base1::print()"<<std::endl; } ...
2019-01-08 22:33:03 384
转载 C++ 虚函数表解析
转载一篇非常优秀的文章,想必该文章对我和大家都非常有帮助!正文:前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在...
2019-01-08 22:21:01 146
原创 Qt去掉最大化最小化按钮和最大化
w.setWindowFlags(w.windowFlags()&~Qt::WindowMaximizeButtonHint&~Qt::WindowMinimizeButtonHint);w.showMaximized();
2019-01-08 17:25:42 3937
原创 栈的应用(1) 括号匹配
栈的一个重要应用就是检测括号匹配,一个简单的逻辑如下(未考虑内嵌字符串的问题):遍历整个字符串或字符数组case 1: 检测到左符号(如([{等),则直接将符号压入栈中;case 2: 当检测到右符号时(如)]}等), 若栈为空,则表达式错误; ...
2019-01-07 13:32:19 298
转载 C语言(复杂类型的指针)
复杂类型的指针的难点在于:函数指针返回值为函数指针时,函数指针参数为函数指针时,以下均有相关例子。例如:char (*fp)(char *,int *);定义一个名为fp的函数指针,其类型为:输入两个参数,int *型和char *型,返回参数类型为char1. int *pf(float (*a)(int));2. int (*pf(char *))[5];3. char *(*p...
2019-01-03 14:10:50 1051 1
转载 TCP的粘包现象
看面经时,看到有面试官问TCP的粘包问题。想起来研一做购物车处理数据更新时遇到粘包问题,就总结一下吧。1 什么是粘包现象 TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。2 为什么出现粘包现象 (1)发送方原因 我们知道,TCP默认会使用Nagle算法。而Nagle算法主要做两件事:1)只有上一个分组得到...
2019-01-02 22:31:16 189
Scrollbar_png.zip
2019-11-20
DuiDesigner.rar
2019-11-14
VC AssistantX_适用VS2005.zip
2019-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人