自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (10)
  • 收藏
  • 关注

原创 TCP/IP学习笔记之链路层

1、作用链路层主要有三个目的: (1)为I P模块发送和接收I P数据报;(2)为A R P模块发送 A R P请求和接收 A R P应答;(3)为R A R P发送R A R P请求和接收R A R P应答。  2、帧格式、3、环回接口   IP:127.0.0.1  处理发送给自己的数据报以允许运行在同一台主机上的客户程序和服务器程序通TCP/IP进行通信。一个传给环回接口的IP数据报不能在任...

2018-04-28 08:56:44 169

转载 四种类型转换(cast)的关键字 详解 及 代码

点击打开链接reinterpret_cast用在任意指针(或引用)类型之间的转换;以及指针与足够大的整数类型之间的转换;从整数类型(包括枚举类型)到指针类型,无视大小。...

2018-04-24 08:29:25 944

转载 Visual Studio中检测内存泄漏的方法

Visual Studio中检测内存泄漏的方法#include <iostream> //可以定位到发生内存泄露 所在的文件和具体那一行,用于检测 malloc 分配的内存 #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> //把分配内存的信息保存...

2018-04-23 21:36:23 703

转载 “浅拷贝”与“深拷贝”

点击打开链接

2018-04-23 20:26:22 87

转载 c++之this指针详解

c++之this指针详解

2018-04-23 20:06:14 112

原创 Shell学习之练习

1、简单计算器#! /bin/sh while [ : ];do read a op b case $op in "+") c=$[a+b];; "-") c=$[a-b];; "*") c=$[a*b];; "/") c=$[a/b];; *) c=0;; esac echo "$a $op $b = $c"...

2018-04-22 15:41:18 487

原创 Shell学习之正则表达式-----find

find常用参数:find: 1. -name find ./ -name *.mp3 2. -type find ./ -type f/d/p/c/b/s/l 3. -size 默认单位:512B-->0.5K-->一个扇区大小 -M:不能m  find /home/itcast -size +3M -size -7M -k:不能K  find /home/itcast ...

2018-04-22 14:04:49 2514

原创 Shell学习之正则表达式-----grep

grep1. 作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符...

2018-04-22 13:50:57 153

原创 正则表达式之C程序中使用正则

POSIX规定了正则表达式的C语言库函数,详见regex(3)。我们已经学习了很多C语言库函数的用法,读者应该具备自己看懂man手册的能力了。本章介绍了正则表达式在grep、sed、awk中的用法,学习要能够举一反三,请读者根据regex(3)自己总结正则表达式在C语言中的用法,写一些简单的程序,例如验证用户输入的IP地址或email地址格式是否正确。C语言处理正则表达式常用的函数有regcomp...

2018-04-22 13:19:32 493

原创 Shell学习之正则表达式----awk

awk sed以行为单位处理文件,awk比sed强的地方在于不仅能以行为单位还能以列为单位处理文件。awk缺省的行分隔符是换行,缺省的列分隔符是连续的空格和Tab,但是行分隔符和列分隔符都可以自定义,比如/etc/passwd文件的每一行有若干个字段,字段之间以:分隔,就可以重新定义awk的列分隔符为:并以列为单位处理这个文件。awk实际上是一门很复杂的脚本语言,还有像C语言一样的分支和循环结构,...

2018-04-22 10:20:40 360

原创 Shell学习之正则表达式----sed

sedsed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。sed和vi都源于早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的。sed命令行的基本格式为sed option 'script' file1 file2 ...sed optio...

2018-04-22 09:52:35 216

原创 Shell学习之正则表达式

grep是一种查找过滤工具,正则表达式在grep中用来查找符合模式的字符串。其实正则表达式还有一个重要的应用是验证用户输入是否合法,例如用户通过网页表单提交自己的email地址,就需要用程序验证一下是不是合法的email地址,这个工作可以在网页的Javascript中做,也可以在网站后台的程序中做,例如PHP、Perl、Python、Ruby、Java或C,所有这些语言都支持正则表达式,可以说,目...

2018-04-22 09:01:16 105

原创 Shell学习之函数

函数和C语言类似,Shell中也有函数的概念,但是函数定义中没有返回值也没有参数列表。例如:#! /bin/sh foo(){ echo "Function foo is called";}echo "-=start=-"fooecho "-=end=-"注意函数体的左花括号 { 和后面的命令之间必须有空格或换行,如果将最后一条命令和右花括号 } 写在同一行,命令末尾必须有分号...

2018-04-21 21:00:26 120

原创 Shell学习之参数、输入输出、管道、tee、重定向

位置参数和特殊变量有很多特殊变量是被Shell自动赋值的,我们已经遇到了$?和$1。其他常用的位置参数和特殊变量在这里总结一下:$0 相当于C语言main函数的argv[0]$1、$2...这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]、argv[2]...$# 相当于C语言main函数的argc $@ 表示参数列表"$1" "$...

2018-04-21 20:15:06 1017

原创 Shell学习之while语句

while/do/donewhile的用法和C语言类似。比如一个验证密码的脚本:#! /bin/shecho "Enter password:"read TRYwhile [ "$TRY" != "secret" ]; doecho "Sorry, try again"read TRYdone下面的例子通过算术运算控制循环的次数:#! /bin/shCOUNTER=1...

2018-04-21 20:02:59 188

原创 Shell学习之for语句

循环for/do/doneShell脚本的for循环结构和C语言很不一样,它类似于某些编程语言的foreach循环。例如:#! /bin/shfor FRUIT in apple banana pear; doecho "I like $FRUIT"doneFRUIT是一个循环变量,第一次循环$FRUIT的取值是apple,第二次取值是banana,第三次取值是pear。再比如,要将当前...

2018-04-21 19:41:16 184

原创 Shell学习之case语句

case/esaccase命令可类比C语言的switch/case语句,esac表示case语句块的结束。C语言的case只能匹配整型或字符型常量表达式,而Shell脚本的case可以匹配字符串和Wildcard,每个匹配分支可以有若干条命令,末尾必须以;;结束,执行时找到第一个匹配的分支并执行相应的命令,然后直接跳到esac之后,不需要像C语言一样用break跳出。#! /bin/shech...

2018-04-21 19:30:50 256

原创 Shell学习之if语句

分支if/then/elif/else/fi和C语言类似,在Shell中用if、then、elif、else、fi这几条命令实现分支控制。这种流程控制语句本质上也是由若干条Shell命令组成的,例如先前讲过的if [ -f ~/.bashrc ]; then. ~/.bashrcfi其实是三条命令,if [ -f ∼/.bashrc ]是第一条,then . ∼/.bashrc是第二条,f...

2018-04-21 19:22:54 848

原创 Shell学习之条件测试

条件测试命令test或 [ 可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C语言的逻辑表示正好相反)。例如测试两个数的大小关系:itcast@ubuntu:~$ var=2itcast@ubuntu:~$ test $var -gt 1itcast@ubuntu:~$ echo $?0i...

2018-04-21 19:14:03 108

原创 Shell学习之单双引号

单引号和C语言同,Shell脚本中的单引号和双引号一样都是字符串的界定符(双引号下一节介绍),而不是字符的界定符。单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外,但是字符串中不能出现单引号。如果引号没有配对就输入回车,Shell会给出续行提示符,要求用户把引号配上对。例如:itcast$ echo '$SHELL'$SHELLitcast$ echo 'ABC\(回车)...

2018-04-21 18:58:45 143

转载 进程和线程

进程(process)是指在系统中正在运行的一个应用程序,是系统资源分配的基本单位,在内存中有其完备的数据空间和代码空间,拥有完整的虚拟空间地址。一个进程所拥有的数据和变量只属于它自己。线程(thread)是进程内相对独立的可执行单元,所以也被称为轻量进程(lightweight processes);是操作系统进行任务调度的基本单元。它与父进程的其它线程共享该进程所拥有的全部代码空间和全局变量,...

2018-04-16 16:24:28 106

原创 C++大数相乘

       由于数字无法用一个整形变量存储,很自然的想到用字符串来表示一串数字。然后按照乘法的运算规则,用一个乘数的每一位乘以另一个乘数,然后将所有中间结果按正确位置相加得到最终结果。可以分析得出如果乘数为A和B,A的位数为m,B的位数为n,则乘积结果为m+n-1位(最高位无进位)或m+n位(最高位有进位)。因此可以分配一个m+n的辅存来存储最终结果。为了节约空间,所有的中间结果直接在m+n的辅...

2018-04-16 14:23:57 212

原创 new/delete和malloc/free、指针和引用、strlen和sizeof、C和C++区别、面向对象和面向过程

1、new和malloc的区别对于自定义类型: new会先调用operator new函数,申请足够的内存(通常底层使用malloc实现)。然后调用类型的构造函数,初始化成员  变量,最后返回自定义类型指针。delete先调用析构函数,然后调用operator delete函数释放内存(通常底层使用free实现)。 malloc/free是库函数,只能动态的申请和释放内存,无法强制要求其做自定义类...

2018-04-15 19:59:51 215

原创 shell脚本常识

1、Shell脚本是什么、它是必需的吗?一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。2、什么是默认登录shell,如何改变指定用户的登录shell。在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可...

2018-04-15 11:15:26 192

Shell学习一

1、shell是命令解析器,对应后台的一个可执行程序,输入命令进行解析执行所输入命令的程序,得到相应的结果。2、环境变量:系统的可执行程序的路径。3、awk:一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 如何获取一个文件每一行的第三个元素 ?awk'{print $3}'假如文件中每行第一个元素是FIND,如何获取第二个元素awk'{ if...

2018-04-15 10:12:27 226

原创 查找算法以及大量数据查找问题

1、顺序查找:从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。O(n)int SequenceSearch(int a[], int value, int n){ int i; for(i=0; i<n; i++) if(a[i]==value) ...

2018-04-15 09:20:46 2324

原创 hash_map学习

1、原理hash_map基于hash table(哈希表)。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。基本原理是:使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标,hash值)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照...

2018-04-15 08:41:26 110

原创 移动构造、左值右值、虚析构函数、构造函数不能为虚函数

1、移动构造---源对象资源的控制权全部交给目标对象    什么时候该触发移动构造呢?    如果临时对象即将消亡,并且它里面的资源是需要被再利用的,这个时候我们就可以触发移动构造。复制构造和移动构造的差别:    这种情况下,我们觉得这个临时对象完成了复制构造后,就不需要它了,我们就没有必要去首先产生一个副本,然后析构这个临时对象,这样费两遍事,又占用内存空间,所幸将临时对象它的原本的资源直接转...

2018-04-14 10:10:18 206

转载 ARP地址解析过程(同一子网和不同子网)

https://www.2cto.com/net/201310/253096.html    人们最熟悉的网络可以说是以太网,而且人们都知道,每块网卡都有一个编号,也就是网卡地址(称为MAC地址),代表计算机的物理地址。另外,网络中的每一台计算机都分配了一个IP地址,这样,每台计算机上都有两个地址,IP地址和MAC地址。   IP地址并不能代替MAC地址,前者是在大网中为了方便定位主机所采用的方式...

2018-04-13 19:40:28 1404

原创 TCP

TCP与UDP区别总结:1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保   证可靠交付3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的  UDP没有拥塞控制,因此网络出现拥塞不会使源主机的...

2018-04-13 15:51:03 281

原创 内核态和用户态

Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口:即系统调用。    当一个任务(进程)执行系统调用而陷入内核代码中执行...

2018-04-13 11:26:00 301

原创 C++实现回调

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。#include <iostream>#include <stdio.h>#include <std...

2018-04-12 21:46:03 735

原创 信号和槽

1、信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。信号和槽是QT自行定义的一种通信机制。2、moc(Meta ObjectCompiler)QT工具:该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码。3、当对象改变其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信...

2018-04-12 19:38:20 1097

原创 C++原子操作之自旋锁

1、定义:当自旋锁尝试获取锁时以忙等待(busy waiting)的形式不断地循环检查锁是否可用。 使用自旋锁时要注意:由于自旋时不释放CPU,因而持有自旋锁的线程应该尽快释放自旋锁,否则等待该自旋锁的线程会一直在哪里自旋,这就会浪费CPU时间。持有自旋锁的线程在sleep之前应该释放自旋锁以便其他咸亨可以获得该自旋锁这段没看懂,后续理解了再解释。“preempt_disable()”,这个调用的...

2018-04-11 15:26:26 1517

原创 算法之两人取数游戏

题目描述:A、B两人从数组中取数,每次只能从数组的两头取,且每次都取最大的数,问最后赢的情况。举例:有数组 2 4 3 5,现A只能从2或5中取最大的5,数组变为2 4 3,B只能从2 3中取最大的。递归法:#define max(a,b) (((a)>(b))?(a):(b))#define min(a,b) (((a)<(b))?(a):(b))int s(vector&l...

2018-04-11 09:13:02 1804

原创 进程间通信之pipe

1、定义每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。2、管道实现进程通信(1)父进程创建管道,得到两个文件描述符指向管道的两端(2)父进程fork出子进程,子进程也有两个文件描述符指向同一管道。(3)...

2018-04-08 21:43:10 171

原创 进程之父子进程的关系

fork之后:父子相同处: 全局变量、.data、.text、栈、堆、环境变量、用户ID、宿主目录、进程工作目录、信号处理方式...父子不同处: 1.进程ID   2.fork返回值   3.父进程ID    4.进程运行时间    5.闹钟(定时器)   6.未决信号集似乎,子进程复制了父进程0-3G用户空间内容,以及父进程的PCB,但pid不同。真的每fork一个子进程都要将父进程的0-3G地...

2018-04-07 21:54:42 17481

原创 进程之基本概念

1、程序是放在磁盘上、处于某个目录中的一个可执行文件。进程是程序的执行过程,它是动态的,Linux进程一般包括代码段,数据段和堆栈段。代码段存放程序的可执行代码;数据段存放程序的全局变量、常量、静态变量;堆存放动态分配的内存变量,栈用于函数调用,存放函数参数、函数内部定义的局部变量。程序从编写到运行:2、地址空间的概念:进程的地址空间,通常指的是虚拟地址空间,是进程活动的地址范围 内核空间(ker...

2018-04-07 20:30:36 183

原创 C++积累之多态

1、概括:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数。2、实现多态性的条件:存在基类、派生类之间的继承关系,且基类的成员函数有被定义成virtual,派生类中重写该函数。在使用时,用基类的指针(引用)指向(引用)派生类对象。用基类的指针(引用)调用虚函数,...

2018-04-07 16:08:58 214

原创 动态规划之矩阵链乘法

#include <iostream>#include <vector>#define MAXVALUE 100000;using namespace std;void matrix_chain_order(vector<int>p,vector<vector<int>>&m,vector<vector<i...

2018-04-07 10:31:14 202

httpDNS思维导图

传统的基于 UDP 协议的公共 DNS 服务极易发生 DNS 劫持,从而造成安全问题。 利用 HTTP 协议与 DNS 服务器交互,代替了传统的基于 UDP 协议的 DNS 交互,绕开了运营商的 Local DNS,有效防止了域名劫持,提高域名解析效率。 由于 DNS 服务器端获取的是真实客户端 IP 而非 Local DNS 的 IP,能够精确定位客户端地理位置、运营商信息,从而有效改进调度精确性。

2019-01-10

DNS思维导图

1、客户端发出一个DNS请求,发给本地域名服务器(网络服务商) 2、本地DNS服务器收到客户端请求,会去查找本地缓存,若找到对应域名,则返回IP地址;若未找到,则请求根DNS服务器。 3、根DNS服务器收到本地DNS服务器的请求,根据域名后缀,返回管理该后缀的顶级域DNS服务器的地址。 4、本地DNS服务器转向顶级域DNS服务器发出请求,顶级域DNS服务器会返回管理该域名的权威DNS服务器的地址。 5、本地DNS转向权威DNS服务器发送请求,权威DNS服务器查询后,返回域名对应得IP地址给本地域名服务器。 6、本地域名服务器再将IP地址返回给客户端。

2019-01-10

x264安装资源

安装和打包运行x264所需要的文件。 (1)获取源码,解压源码包 (2)进入源码目录 (3)直接运行./configure (4)make (5)make install

2018-11-22

C++面试知识点总结

个人总结的C++知识点,涵盖C++很多方面,对于C++找工作很有帮助,当然对于C++学习者,也是一个巩固的方法

2018-09-25

《Linux多线程服务端编程:使用muduo C++网络库》.(陈硕).[PDF]

《Linux多线程服务端编程:使用muduo C++网络库》.(陈硕).[PDF]

2018-07-24

Linux高性能服务器编程(带书签)

网络编程,内容详细清晰,学习网络编程的基础,提高自己能力,带完整书签

2018-07-24

PHP MYSQL web

PHP学习好书,很经典,讲的很细致。MYSQL以及web,学习不易请坚持

2018-07-18

thinkphp简单登录

thinkPHP入门项目,很简单,只适合新手,高手请绕道,大佬不小心下了,私信我,我退你积分

2018-06-29

PHP快速入门

thinkphp,快速学习入门的小例子太多了,作为入门的好例子,

2018-06-27

OSG+Qt编译说明

首先在解压后的OpenSceneGraph-3.4.0文件夹里面新建一个build文件夹,用来存放编译内容,用vs2013打开CMakeLists.txt,在里面加两行代码 SET(DESIRED_QT_VERSION "5.6.2" CACHE STRING "")   5.6.2为安装的QT的版本  SET(CMAKE_PREFIX_PATH "D:\Qt\Qt5.6.2\program\5.6\msvc2013" CACHE PATH "")  D:\Qt\Qt5.6.2\program\5.6\msvc2013 为QT的安装路径,加完保存,如下图 第二步:打开cmake软件,CMakeLists.txt文件拖到cmake界面上,选择路径 build为刚刚新建的文件夹 点击configure,选择vs2013平台,然后3rdparty的路径为你第三方库解压后的路径,在BUILD...WITH_QT和BUILD....APPLICATIONS和

2017-12-22

空空如也

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

TA关注的人

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