自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 使用tcpdump获取telnet的账号和密码

tcpdump是linux下的一个抓包工具,因为telnet的报文是使用明文传输的,并没有对报文进行加密,所以可以使用tcpdump获取其登录的账号和密码。因为获取到的账号和密码都是二进制的,所以我们可以使用Wireshark对其进行解析。Wireshark主要在windows中使用,不过在linux下也有相应的版本,基于libpcap on unix-like,winpcap on window...

2018-04-30 08:46:40 6464

转载 深究标准IO的缓存

一、IO缓存  系统调用:只操作系统提供给用户程序调用的一组接口-------获得内核提供的服务。  在实际中程序员使用的通常不是系统调用,而是用户编程接口API,也称为系统调用编程接口。它是遵循Posix标准(Portable operation system interface),API函数可能要一个或者几个系统调用才能完成函数功能,此函数通过c库(libc)实现,如read,open。  f...

2018-04-21 20:04:25 483

原创 平时经常使用的事项

vim :搜索 在末行模式中输入 /字符串 ,n 向下搜索,N向上搜索。gg 跳到开头,G跳到末尾u 撤销上一步操作dd 删掉光标所在的一行yy复制光标所在的一行p 粘贴g++ 也能编译c文件, 编译线程代码使用-lpthread ,支持c++11使用 -std=c++11。-Wall 将所有警告显示。linux 命令apt-get updateapt-get upgradeapt-get ins...

2018-04-12 16:41:09 184

原创 ls -l 、 du、 df 的区别

ls -l 显示的是文件的大小,du 显示的是文件占的磁盘的大小,df显示的整个文件系统的磁盘使用情况,是一个整体的概念,下面主要介绍ls -l和du的区别。ls -l 中会显示文件的大小,但是对于一个目录而言,ls -l显示的是这个目录本身的大小,并不包括这个目录中文件的大小,默认的单位是字节。通过加 -h选项可以增加可读性,会自动加上单位。对于一个普通文件而言,ls -l显

2017-10-29 19:00:22 4193 2

原创 关于unsigned short,char,unsigned int 之间的赋值

char a=254; unsigned short b=a; unsigned int c=b; cout问:在32位机上,下面程序的输出结果。

2016-12-08 16:53:28 9946

转载 C++ 继承中的内存布局

今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。——谈VC++对象模型(美)简.格雷程化    译 译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细 节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。 Inside the C++ Objec

2016-12-02 16:52:44 338

转载 指针以及二维数组

如果配合http://wenku.baidu.com/view/acf838ef856a561252d36fe3.html去看的话下面的内容比较容易理解从一道题目说起。#include using namespace std;int main(){int ia[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};typedef int int_arra

2016-11-19 20:25:38 750

原创 linux下的打包压缩命令tar、gzip、bzip2

linux下的压缩命令使用比较广泛的主要有gzip、bzip2命令,另外tar命令是用来打包的一个命令。打包的含义即将多个文件打包成一个文件,但是本身并不具有压缩的功能。

2016-10-26 18:35:10 542

原创 linux 进程总结

每个进程都有一个父进程,初始的内核级进程通常是自己的父进程,id为0的进程通常是调用进程,常常被称为交换进程。id为1的进程是init进程,在内核自举过程结束时由内核调用。该进程的程序文件现在一般是/sbin/init文件。这个进程负责在自举内核后启动一个unix系统。init通常读取与系统有关的初始化文件,并将系统引导到一个状态。init进程绝对不会终止,而且它身为一个普通的用户进程(不是内核中

2016-10-25 19:51:28 413

原创 在c/c++中的&、|和&&、||的区别(易混淆)

在c/c++中的&和|是位运算符,和它们处于相同地位的还有>、^、~。这两个运算符会使得参与运算的参数的每一位都进行运算。例如10和6相与,即1010&0110,得0010,也就是2.但是&&和||却是逻辑运算符,在它们看来,除了0之外,其他的非零整数都可以看做true,所以如果10和6相与,结果会是true。有的时候会发现在使用&&的地方可以使用&来替代。在大多数情况下确实都是可以的。这

2016-10-24 22:16:24 14230

原创 linux下的连接文件

linux下的连接文件共有两种,一种是类似于windows的快捷方式功能的文件,可以让你快速连接到目标文件,被称为软连接;另一种则是通过文件系统的inode连接来产生新文件名,而不是产生新文件,这种被称为硬连接。这两种连接完全不一样。首先介绍硬连接:每个文件都会占用一个inode,文件内容由inode的记录来指向。想要读取该文件,必须要经过目录记录的文件名来指向到正确的inode号码才能读

2016-10-23 22:47:40 368

原创 linux 文件权限

一切皆是文件”是 Unix/Linux 的基本哲学之一,不仅普通的文件,目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。因此,在linux中,掌握文件的有关知识是很重要的。对文件来说,访问者的身份共分为3种:owner、group、other。而文件针对这三种身份所给予的权限也是不同的,通过命令ls -l可以查

2016-10-23 20:10:09 278

原创 字符串总结

字符串

2016-10-21 23:12:20 250

原创 socket中tcp的断包、粘包处理方法

tcp的断包和粘包

2016-10-21 22:29:26 5306

原创 linux串口收发程序

最近在测试一个开发板的串口是否可以正常使用,开发板使用了linux系统,因此就写了个串口的收发程序来测试。1.首先使用open函数打开串口,在linux中一切设备都被当做文件来看待,测试的串口所对应的文件为  /dev/ttySAC。fd = open("/dev/ttySAC2",O_RDWR|O_NOCTTY);得到了一个文件描述符fd。2.然后就是对这个串口进行设置,设置其波

2016-10-18 21:00:47 5954 2

转载 static静态变量的理解

静态变量 类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。静态变量虽在程序的整个执行过程中

2016-10-12 10:24:35 309

转载 Linux文件删除原理:

Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说,每个文件都有2个link计数器:i_count 和 i_nlink。    i_count的意义是当前文件使用者(或被调用)的数量,i_nlink 的意义是介质连接的数量(硬链接的数量);可以理解为i_count是内存引用计数器,i_nlink是磁盘的引用计数器。当一个文件

2016-08-29 15:00:05 508

转载 一条进程的栈区、堆区、数据区和代码区在内存中的映射

一条进程的栈区、堆区、数据区和代码区在内存中的映射    1>栈区:主要用来存放局部变量, 传递参数, 存放函数的返回地址。.esp 始终指向栈顶, 栈中的数据越多, esp的值越小。    2>堆区:用于存放动态分配的对象, 当你使用 malloc和new 等进行分配时,所得到的空间就在堆中。动态分配得到的内存区域附带有分配信息, 所以你  能够 free和delete它们。    

2016-07-19 10:59:41 300

转载 数据区,代码区,堆栈区,操作系统堆栈

数据区,代码区,堆栈区,操作系统堆栈  堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两

2016-07-19 10:54:22 404

原创 树莓派上3g模块的使用

今天在树莓派上添加了3g模块,其实就是无线上网终端,再上面插上手机卡就ok。我使用的是华为的上网终端.只能使用电信的卡。首先lsusb,一般是自动识别的,不需要安装驱动,如果有如下图所示的,则表明识别成功。然后安装两个软件:1.sudo apt-get install usb-modeswitch2.sudo apt-get installwvdial接

2016-07-11 19:40:19 8115 7

原创 树莓派上实现流媒体

最近做了一个在树莓派上实现流媒体的小项目,本打算使用vlc做的,但是结果发现在vlc上实现流媒体造成的延迟太大,目测大于一秒。于是通过查询资料,共发现了三种方法:1.通过vlc,2.通过netcat3.通过gstreamer其中vlc的延迟最大。我使用了netcat方法。发送端:raspivid -o - -t 0 -w 640 -h 360 -fps 25

2016-06-14 21:50:58 6204 1

原创 树莓派安装QT

树莓派下安装QT的方法: 首先 sudo apt-get install qt-dev-tools然后 sudo apt-get install QtcreatorThat's Ok! 现在试一下qmake看看是不是成功了。

2016-06-14 21:08:57 522

转载 C++ 二进制、十进制、八进制和十六进制 转换

在C++中,默认状态下,数据按十进制输入输出。如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。但是二进制没有默认的输出格式,需要自己写函数进行转换。输入整数n , 则在C++中cout代码注解#include #include using namespace std;int main(void)

2016-05-30 10:38:23 20437

转载 typedef的用法

第一、四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽

2016-05-30 10:29:34 205

转载 内存对齐

在我们的程序中,数据结构还有变量等等都需要占有内存,在很多系统中,它都要求内存分配的时候要对齐,这样做的好处就是可以提高访问内存的速度。 我们还是先来看一段简单的程序:                                程序一 1 #include iostream> 2 using namespace std; 3  4 struct X1

2016-05-23 16:59:56 232

原创 python的import几种形式

python的import的几种形式:在t1.py中def out(): print('this is t1')def hello(): print('hello world')在t3.py中import t1t1.out()前面需要加上t1.来说明这是使用的t1文件执行结果为下面换种形式:import t1f

2016-05-10 16:25:45 798

原创 python 的.join()方法

join()方法一般是字符串使用,str.join(iterable)。参数是一个可迭代的对象。例子:print('a'.join('bcde'))输出:bacadae即将前面的字符串放入可迭代对象之间

2016-04-30 19:20:14 699

原创 Leetcode 之第一题 two sum

leetcode 第一题 two sum这一题的大意是有一组数,给出一个和,然后从这组数找出两个数,它们相加等于和,返回这两个数的下标。这一题据我所知共有三种解法:1.就是最简单的双重循环,用和减去外层循环中的数,然后在内层循环中找到差。这样子时间复杂度为O(n2),空间复杂度为O(1)。2.第二种解法就是把这组数进行快速排序,使得它们从小到大排序。然后两个指针分别从头和尾遍历,如

2016-04-19 16:32:27 278

原创 c++ 下的多重继承虚函数调用问题

最近看老师上课讲的一个关于com组件的程序,当时虽然程序有些复杂,但是感觉自己已经明白原理了。回来自己对着程序一步步演练时,发现结果不对,后来通过断点调试、发现了一个让我惊呆了的问题。下面我把这个问题简化一下。#includeusing namespace std;class A{public:virtual void put(){cout }};cla

2016-04-17 21:10:18 1157

转载 字符串包含问题

首先,这篇文章来自于July整理的PDF,我觉得很好,但是毕竟不是很方便阅读,所以,在这里整理下,以便随时可以温习。    这个问题不是很难,但是,想到如此多的思路不是很容易,很佩服July的思维的活跃以及善于对知识的整理。    下面,我们进入正题。第一节、一个两个字符串是否包含的问题    题目描述:    假设有两个由各个字母组成的字符串longstring和shorts

2016-04-03 09:34:07 341

原创 指针的类型问题

指针中所存取的值是它所指向变量的地址,所占用的空间是一定的。那么为什么不给指针直接定义一个属于它自己的类型,而是要写出它所指向的变量的类型呢?这是因为我们对于指针的操作不止是取地址符,还有对指针使用加法。当对指针加1时,指针会指向这个变量紧邻的空间的地址,这个时候就需要知道指针所指向的变量所占用的空间大小了。例如:  int *ptr;  char *qtr;  ptr++

2016-04-02 21:38:01 295

原创 计数排序c++实现

计数排序的前提是n个输入元素都大于0且小于k,并且k的值不会太大,实际上就是希望输入元素分布范围比较集中,否则将会浪费很多空间。下面直接上代码,时间复杂度为O(n) :#include#includeusing namespace std;void CountSort(vector &vec,vector &fin,int size){    int max=vec[0

2016-03-12 17:50:26 453

原创 快速排序之c++实现

此算法的时间复杂度为最坏情况下O(n2),期望时间复杂度为O(nlgn)。#include#includeusing namespace std;void swap(int &i,int &k){    int temp=i;    i=k;    k=temp;}int Partition(vector &vec,int q,int r){  

2016-03-11 20:10:47 263

原创 最大子数组和的三种算法

求一组数字中的和最大的连续子数组:1.暴力破解法:#include#includeusing namespace std;int maxsum(const vector &vec){int size=vec.size();int sum=0;int max,left,right;max=vec[0];for(int i=0;i{for(int j

2016-03-10 21:53:35 366

原创 析构函数到底都做了什么

析构函数释放对象所使用的资源,并且销毁对象的非static数据成员。析构函数是类的一个成员函数,名字有波浪号接类名构成。没有返回值,也不接受参数,同时由于析构函数不接受参数,因此它不能重载,所以任何一个类都只具有一个析构函数。析构函数具有一个函数体和一个析构部分。首先执行函数体,然后执行析构部分,来销毁成员,但是析构部分是隐式的。其实析构部分就已经把成员给销毁了,那为什么还需要函数体呢

2016-03-10 18:34:22 1743

原创 堆排序的c++实现代码

#include #include #include #include  using namespace std; void input(vector &v) {      v.push_back(0);      int data;      while(cin>>data)      {       v.push_back(data);

2016-03-05 11:05:20 326

原创 从scanf角度看待输入

c primer plus中对scanf进行了一番详解:        假定使用了%d说明符来读取一个整数。scanf()函数开始试图读取一个输入字符,它跳过空白字符直到遇到一个非空白字符,当碰到整数或者+或者-时,它就保存并读取下一个字符;如果接下来的字符是一个数字,它就保存,并读取下一个字符直到遇到一个非数字的字符。如果遇到非数字字符,它就得出结论:已经读到整数的尾部。并把这个非数字字符放

2016-03-05 10:39:38 570

转载 static的用法

静态局部变量在局部变量前,加上关键字static,该变量就被定义成为一个静态局部变量。我们先举一个静态局部变量的例子,如下12345678910111213141516//Example3#include#includevoid fn();void main(){

2016-03-05 10:35:51 289

原创 linux 远程登录到windows

使用rdesktopsudo apt-get install rdesktop然后rdesktop -a 登陆的主机IP -f 即可-f保证全屏

2016-03-02 09:04:02 460

转载 Qt定时器的使用

在Qt中,当启动定时器以后,会每隔一定的时间来触发槽函数。当定时器触发时,应用程序会发送一个QtimerEvent。在时间循环中,处理器按照事件队列排列顺序处理事件。如果当处理器正忙于其他事件时,定时器就不能立刻处理。

2015-06-12 10:49:01 344

空空如也

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

TA关注的人

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