- 博客(30)
- 收藏
- 关注
原创 【HTTPS】Wireshark导入密钥文件后仍无法解密https报文
因此只会针对443端口的相关报文进行解密。在本地Windows系统上新增系统环境变量"SSLKEYLOGFILE",保存Chrome浏览器访问网站时使用的密钥;网站后,想通过Wireshark抓包https报文并解密。将1中的密钥导入配置到Wireshark中。Wireshark默认。
2024-06-19 06:12:04
730
原创 【Linux学习】新装的centos系统,SSH连接报错“Access Denied“
1.检查 "/etc/ssh/sshd_config" 配置文件,可参考以下文章。解决Ubuntu SSH登陆出现Access Denied错误2.检查 "selinux" 的状态。①执行命令"getenforce",若为"Enfocing",则无法连接;若为"Diasbled",则可以连接。②若为"Enfocing",则修改配置文件 "/etc/sysconfig/selinux",将SELINUX=enforced 修改为 SELINUX=disabled;③执行"reboot",重
2022-01-25 16:46:22
4352
1
原创 【Qt学习】qApp->quit()/exit(0);退出程序的实际应用与结果分析
网上许多文章介绍说,qApp->quit()可以直接退出Qt程序。我最开始的理解是:当程序运行到这句代码时,就会立即退出exe程序,后来发现根本没有效果。经过反复实验后,特得出以下结论(以下结论基于Qt4.8.7+vs2008中的运行,其他Qt版本应该兼容且适用):1、qApp->quit/exit(0);执行后,程序仍会毫无阻拦的执行下去,与正常运行几乎无不同之处。2、目...
2019-09-20 17:00:43
8577
1
原创 【编程须知】同样的代码linux与windows的运行结果不同
原因1:数据类型的字长不同。常见如:long长整型,linux下通常为8字节,而windows下通常为4字节。相关知识可参考:详解不同数据模型下的不同数据类型...
2019-09-12 15:28:33
1523
原创 【Qt学习】SQLite数据库 插入、删除、更新等操作
插入操作:方式一:query.exec(QString("insert into Try values(%1, '%2', '%3')").arg(15).arg("字符串1").arg("字符串2"));注意:1、Try 为表名,根据自己的表名替换; 2、若内容为字符串,一定记得加单引号——‘%2’ ‘%3’;方式二:query.prepare()的...
2019-09-09 17:36:21
3459
1
原创 【Socket网络编程】select()函数使用心得
Select在Socket编程中还是比较重要的,它能够监视我们需要监视的文件描述符的变化情况——读、写或是异常。 Select的函数格式(Unix系统下的伯克利socket编程,和windows下的略有区别,体现两个方面:一是select函数的第一个参数,在windows下可以忽略,但在linux下必须设为最大文件描述符加1;二是结构fd_set在两个系统里定义不一样)。int sele...
2019-09-04 18:04:34
359
原创 【Socket网络编程】recv()与send()的返回值
1、intrecv(SOCKETs, char *buf, intlen, intflags);0、recv会先等待套接字s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据时出现网络错误,那么recv函数返回SOCKET_ERROR(= -1);如果s的发送缓冲区中没有数据或者数据被协议成功发送完毕后,recv再检查套接字s的接收缓冲区,如果s接收缓冲...
2019-09-04 16:33:50
3542
原创 【Qt学习】SQLite数据库 检测数据表是否存在
QSqlQuery query; query.exec(QString("select count(*) from sqlite_master where type='table' and name='%1'").arg(TableName));if(query.next()){ if(query.value(0).toInt()==0) { // 表不存...
2019-08-28 11:54:08
1726
原创 【Qt学习】多线程QThread使用的几个关键点
划重点!!!1、QThread从run()函数开始执行。2、要创建一个线程,需要子类化QThread,并且重新实现run()函数。3、创建该线程的实例后,需要调用自带的start()函数来开始执行该线程,start()默认调用run()函数。4、当run()函数返回后,线程便执行结束,就像应用程序离开main()函数一样。尤其注意第3点:不要直接调用run()函数【比如:t...
2019-08-24 14:22:38
357
原创 【Qt学习】Qt中无法打开文件:QHostAddress、QTcoServer等
若要包含QHostAddress、QTcp、QSocket等网络通信类的头文件,需在.pro文件中加入:Qt += network即可!
2019-08-23 10:15:15
3796
2
原创 【Qt学习】SQLite数据库操作
QSqlQuery类QSqlQuery提供了对结果集的访问,可以一次访问一条记录。执行完exec()函数后,会生成一张查询得到的记录结果集,QSqlQuery的内部指针会位于第一条记录前面的位置。必须调用一次QSqlQuery::next()函数来使其前进到第一条记录,然后重复使用next()函数来访问其他记录,直到函数返回值为false。QSqlQuery类提供的多个函数在结果集...
2019-08-19 14:23:24
387
原创 【Qt学习】Qt界面显示中文乱码
参考链接:Qt界面显示中文乱码问题方法一:设置为系统字体,用三个setQTextCodec::setCodecForTr()QTextCodec::setCodecForCStrings()QTextCodec::setCodecForLocale()#include <QApplication>#include <QDialog>#inclu...
2019-08-15 20:42:33
626
原创 【Socket网络编程】cin输入错误处理机制
参考文献: cin.fail(), cin.bad(), cin.good(), cin.clear(), cin.ignore() 编程时经常出现cin函数出错,以致不再执行读操作的情况。这时候常需要用到cin.clear(),cin.ignore(), cin.fail()等函数,这些函数都是与cin的错误处理有关的。这里来分析一下cin的错误处理机制,并且学习几个重要的函数...
2019-08-09 11:31:59
336
原创 【Socket网络编程】cin输入流的相关
cin.get() cin.getline()关于输入超长的不同处理参考链接:cin、cin.get()、cin.getline()、getline()的区别C++中的清楚输入缓冲区的办法参考链接:cin.clear()、cin.sync()和cin.ignore()的用法一、cin.clear()、cin.sync()cin.clear()是用来更改cin的状态标示符的。...
2019-08-09 10:28:47
183
原创 【Socket网络编程】connect函数超时处理
参考链接:Linux下connect超时处理【总结】1、前言 最近在写一个测试工具,要求快速的高效率的扫描出各个服务器开放了哪些端口。当时想了一下,ping只能检测ip,判断服务器的网络是连通的,而不能判断是否开放了端口。我们知道端口属于网络的传输层,因此需要用ip和端口来探测,这个时候就可以用connect来探测一下,针对TCP协议,connect函数要进行TCP三次握手,如果conn...
2019-08-08 17:13:49
764
原创 【多线程编程】
Boost库之thread库/C++11之thread库去销毁一个仍然可以“joinable”的C++线程对象会被认为是一种错误。为了销毁一个C++线程对象,要么join()函数需要被调用(并结束),要么detach()函数被调用。如果一个C++线程对象当销毁时仍然可以被join,异常会被抛出。参考:thread中join和detach的区别...
2019-08-05 14:09:39
163
转载 【算法学习】-动态规划算法
教你彻底学会动态规划——入门篇【数字三角形】教你彻底学会动态规划——进阶篇 【最长上升子序列】【最长公共子序列】剑指Offer——动态规划算法【最长上升子序列】【最长公共子序列】算法-动态规划 Dynamic Programming--从菜鸟到老鸟【钢条切割】【小朋友过桥】【字符串变回文串】【背包问题】...
2019-01-07 22:28:52
230
原创 【C++编程基础】- typedef用法详解
最常见的两种用法:用途一:定义一种类型的别名,而不只是简单的宏替换。比如,可以用来同时声明指针型的多个对象:char* pa, pb; //这多数不符合我们的意图,它只声明了一个指向字符变量的指针,和一个字符变量;以下则可行:typedef char* PCHAR; //一般用大写PCHAR pa, pb; //可行,同时声明了两个指向字符变量的指针虽然,cha...
2019-01-04 16:19:33
135
转载 【C++多线程编程学习(1)】-CPU个数、CPU核心数、CPU线程数
转自:CPU个数、CPU核心数、CPU线程数(by kimsimple) CPU个数即CPU芯片个数。CPU核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组。CPU线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数。比如,可以通过一个CPU核心数模拟出2线程的CPU,也就是说,这个单核心...
2019-01-03 20:21:59
2327
原创 【C++编程基础】-详解char类型的范围(-128~127)
类似问题:一个n位有符号整型数值,其范围为-2^(n-1) ~2^(n-1) -1。此类问题的根结在于:“人们解决问题时,习惯以人的思维思考问题,但是,计算机本身却是以机器的思维进行处理的”。在这里,就表现为:计算机对数据的处理其实是以“补码”的形式,而非日常生活中人们进行数学运算所采用的“原码”的形式。但是,人们在对“数值范围”进行处理的时候,却习惯性的采用了“原码”进行分析,而...
2018-12-27 10:25:54
1580
原创 【C++编程基础】-详解C++中的移位运算
移位运算:逻辑移位逻辑移位是指逻辑左移和逻辑右移,移出的空位都用0来补。算术移位算术移位 就需要分有符号型值和无符号型值 :对于无符号型值,算术移位等同于逻辑移位。 而对于有符号型值 ,算术左移等同于逻辑左移,算术右移补的是符号位,正数补0,负数补1。其中,第2点涉及到负数在计算机中的存储方式:首先复习一下原码、反码、补码:有符号型值分为正数和负数(包括正浮点数,和...
2018-12-26 21:13:03
867
转载 【C++编程基础】-详解数据模型(LP32 ILP32 LP64 LLP64 ILP64 )中的不同数据类型
不同数据模型下,各数据类型的位数:Type \ Model LP32 IPL32 LP64 ILP64 LLP64 char 8 8 8 8 8 short 16 16 16 16 16 int 16 32 32 64 32 long 32 32...
2018-12-26 20:03:08
1740
原创 【C++编程基础】-详解C++中基本数据类型字节数
C标准中并没有具体规定哪个基本类型应该是多少字节数,但有几条铁定的原则(ANSI/ISO制订的): sizeof(short int)<=sizeof(int) sizeof(int)<=sizeof(long int) short int至少应为16位(2字节) long int至少应为32位(4字节) long long至少应为64位(...
2018-12-26 19:15:25
670
原创 【计算机基础】-详解CPU位数、操作系统位数、编译器位数
CPU位数我们从计算机中的信息表示谈起。计算机中的信息分为两类:控制信息(条件、命令、状态等)、数据信息(数值与非数值两类)。所有这些信息在计算机中用数字代码表示,为了电路表示处理方便,就用二进制表示。电路用高电平、低电平表示2个数码“1”和“0”,计算机系统的信息从输入、存储、处理到输出就都是用基于二进制的电信号表示。CPU位数指的是一个时钟周期内处理器同时寄存和处理的二进制位数。对于C...
2018-12-26 10:41:52
6807
原创 【opencv学习】-详解CV_MAT_ELEM宏的几大特点
从CvMat矩阵中得到一个元素最简单的方法就是利用CV_MAT_ELEM宏,这个宏包含4个参数,分别是:传入矩阵,待提取的元素的类型,行数,列数。表示为CV_MAT_ELEM( matrix, elemtype, row, col )现在发现的两大特点:这个宏只对单通道矩阵有效,多通道会报错; elemtype一定要与matrix的type相匹配,比如(8U-uchar)(16U-u...
2018-12-20 21:42:39
868
原创 【opencv学习】-详解CvMat属性type
type 表示了CvMat矩阵中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量,其命名规则为:CV_(位数)+(数据类型)+(通道数)。具体的有以下值: CV_8UC1 CV_8UC2 CV_8UC3 CV_8UC4 unsigned char 0~255 CV_8SC1 CV_8SC2 CV_8SC3 CV_8SC4 ...
2018-12-20 16:48:52
2380
原创 【opencv学习】-详解cvFindContours()中的CV_RETR_LIST
注意:本文主要针对各个轮廓均为同一等级的图像。已知cvFindContours()函数形式如下:int cvFindContours( IplImage* img, CvMemStorage* storage, CvSeq** first_contour, int header_size=s...
2018-12-05 20:31:31
3007
原创 【C++编程基础】-_declspec(dllimport)与_declspec(dllexport)的简单研究
_declspec(dllimport)和_declspec(dllexport)是一对的。_declspec(dllexport)在动态链接库(dll文件中)管导出;_declspec(dllimport)在调用程序(.h/.cpp文件中)管导入。But,有时候导入用_declspec(dllexport)也可以,不需要使用_declspec(dllimport)。那么,_dec...
2018-11-15 17:02:02
277
原创 【C++编程基础】-字符串的学习笔记
C++ String类一、排序当需要对多个字符串vector<string> vs;按照字典顺序进行排序时,可采用以下方法:1、sort()函数sort(vs.begin(),vs.end()); 即可完成排序。2、><==函数重载string头文件中对><==三个比较函数进行了重载,比较的依据就是字典顺序,因此可以直接利用排序方法...
2018-04-12 20:50:11
182
原创 【C++编程基础】-读取字符、字符串的函数
iostream流:cin、cin.get()、cin.getline() string流:getline()cin:配合输入操作符">>"使用。而操作符">>"默认会跳过空格、制表符、tab、回车符等分隔符,实际上这些空白分隔符都是存在于缓冲区中的。可以通过std::noskipws操纵符让输入操作符不跳过空白分隔符,std::skipws用来设置忽略空白...
2018-04-12 20:10:59
1234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人