自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 linux 6种工作模式

这是因为Linux操作系统有六种不同的运行级(run level),在不同的运行级下,系统有着不同的状态,这六种运行级分别为: 0:停机(记住不要把initdefault 设置为0,因为这样会使Linux无法启动 ) 1:单用户模式 2:多用户,但是没有 NFS 。 3:完全多用户模式,标准的运行级。 ...

2019-08-15 18:00:00 2345 1

转载 深入理解pthread_cond_wait、pthread_cond_signal

深入理解pthread_cond_wait、pthread_cond_signal转自:http://blog.csdn.net/yeyuangen/article/details/37593533===============================man pthread_cond_wait的解释==========================LINUX环境下多线程...

2019-06-05 10:34:30 2373

原创 stderror 与 stdout 均输出到屏幕, 前者直接输出, 后者换行或者结束输出

今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣。int fprintf(FILE *stream,char *format,[argument]);在此之前先区分一下:printf,sprintf,fprintf。1,printf就是标准输出,在屏幕上打印出一段字符串来。2,sprintf就是把格式化的数据写入到某个字符串中。返回值字符串的长度。3,fpr...

2019-05-28 16:40:58 3377

原创 Qt -1

1.窗口show()的前后顺序不一样,显示会不一样2.没有父对象的窗口,叫主窗口3.Qobject connect(要发送消息的对象, 要发送的信号, 接收信号的对象, 接收信号的处理方式);前两个参数称为对象, 后两个参数称为槽4.输入框enumEchoMode{Normal,NoEcho,Password,PasswordEchoOnEdit};Norma...

2019-04-24 12:11:33 232

转载 lambda表达式

一段简单的Code我也不是文艺的人,对于Lambda的历史,以及Lambda与C++的那段渊源,我也不是很熟悉,技术人,讲究拿代码说事。复制代码代码如下:#include<iostream>using namespace std;int main(){ int a = 1; int b = 2; auto func = [=, ...

2019-04-24 08:50:04 121

转载 Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)

转载:https://blog.csdn.net/lhl1124281072/article/details/80023787过去的几个月都在使用VS2015+QT5开发项目,一路走来,踩了很多坑,今天顺利完成项目的阶段性要求。为了让更多人少踩坑,特以系列博客将自己的经验记录下来,博客内容主要立足于解决除了编码之外会遇到的各种问题,如果是关于Qt中详细的语法等相关问题,本系列博客将不会提及。总...

2019-04-21 06:48:24 675

转载 linux下使用libmodbus库实现modbusTCP与modbusRTU功能

/****Linux下modbusTCP测试程序****/#include<stdio.h>#include<stdlib.h>#include"modbus.h" int main(void){ modbus_t *mb; uint16_t tab_reg[32]={0}; mb = modbus_new_tcp("192.168.1.22...

2019-04-18 03:03:39 2234

原创 C++ 基础-8

1.static_cast用于基本类型间的转换, 但不能基本类型指针的转换用于有继承关系对象之间的转换和类指针之间的转换static_cast 是编译期间进行转换的,无法在运行时检测类型,所以类类型之间的转换可能存在风险2.reinterpret_cast(1)用于指针类型之间的强制类型转换(2)用于整数和指针类型之间的强制类型转换本质直接从二进制复制,极不安全3....

2019-04-14 10:12:21 128

原创 C++ 总结-1

1.bool 为了使用方便,可移植性,会定义成其他类型typedef bool intcout << boolalpha << bool 显示对应的true false2.enum INIT{ one, two, INIT_max //方便使用};3.浅拷贝导致析构两次4.delete 指针不是将...

2019-04-13 14:20:07 115

转载 IO多路复用之select、poll、epoll

IO多路复用之select、poll、epoll详解目前支持I/O多路复用的系统调用有select,pselect,poll,epoll,I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,pselect,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己...

2019-03-29 05:25:34 104

转载 线程池

c++简单线程池实现线程池,简单来说就是有一堆已经创建好的线程(最大数目一定),初始时他们都处于空闲状态,当有新的任务进来,从线程池中取出一个空闲的线程处理任务,然后当任务处理完成之后,该线程被重新放回到线程池中,供其他的任务使用,当线程池中的线程都在处理任务时,就没有空闲线程供使用,此时,若有新的任务产生,只能等待线程池中有线程结束任务空闲才能执行,下面是线程池的工作原理图:我们为什...

2019-03-29 05:21:56 83

转载 atoi,atol,strtod,strtol,strtoul C类型转换函数

atof(将字符串转换成浮点型数)相关函数 atoi,atol,strtod,strtol,strtoul表头文件 #include <stdlib.h>定义函数 double atof(const char *nptr);函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数...

2019-03-29 04:45:53 222

转载 volatile 与 线程安全

服务端编程的3大性能杀手:1、大量线程导致的线程切换开销。2、锁。3、非必要的内存拷贝。所以说锁在多线程编程中的地位是很重要的。我们找工作的时候,经常会谈到多线程,貌似多线程挺难的,很值得技术人员拿出来说说。那么我们讲来讲去,多线程到底难在什么地方?会不会是因为编程语言在多线程编程方面的基础设施没有理清楚,导致新手不能正确和安全的编写多线程程序?我们知道多线程编程中有三个核心概念,分别是可见性、原...

2019-03-29 04:36:38 868

转载 I/O模型与I/O复用

阅读目录1 基础知识回顾 2 I/O模式 3 事件驱动编程模型 4 select/poll/epoll的区别及其Python示例  网络编程里常听到阻塞IO、非阻塞IO、同步IO、异步IO等概念,总听别人装13不如自己下来钻研一下。不过,搞清楚这些概念之前,还得先回顾一些基础的概念。回到顶部1 基础知识回顾注意:咱们下面说的都是Linux环境下,跟Windows不一样哈~~...

2019-03-29 03:38:35 234

转载 volatile

1> 编译器的优化在本次线程内, 当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量值时,就直接从寄存器中取值;当变量值在本线程里改变时,会同时把变量的新值copy到该寄存器中,以便保持一致。当变量在因别的线程等而改变了值,该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致。当该寄存器在因别的线程等而改变了值,原变量...

2019-03-29 03:30:46 103

转载 线程安全

前段时间看完了《并发编程的艺术》,总感觉自己对于并发缺少一些整体的认识。今天借助《Java并发编程实践》,从一些基本概念开始,重新整理一下自己学过并发编程。从并发基础开始,深入进去,系统学习一下并发编程。  编写线程安全的代码,核心在于要对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问。对象的状态是指存储在状态变量(实例或静态域)中的数据。对象的状态还...

2019-03-29 01:22:30 126

转载 ping命令 TTL参数判断目标主机类型

C:\>ping 192.168.0.1Pinging 192.168.0.1 with 32 bytes of data:Reply from 192.168.0.1: bytes=32 time<10ms TTL=128Reply from 192.168.0.1: bytes=32 time<10ms TTL=128Reply from 192.168.0.1...

2019-03-20 18:36:54 1942

转载 C++ 引用

前言:引用是C++一个很重要的特性,最近看了很多有关引用的资料和博客,故在此对引用的相关知识进行总结一、什么是引用引用,顾名思义是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价语法:类型 &amp;引用名=目标变量名;特别注意:1.&amp;不是求地址运算符,而是起标志作用2.引用的类型必须和其所绑定的变量的类型相同1 #includ...

2019-03-13 07:30:35 138

转载 符号表 -(编译原理)

符号表是一种用于语言翻译器(例如编译器和解释器)中的数据结构。在符号表中,程序源代码中的每个标识符都和它的声明或使用信息绑定在一起,比如其数据类型、作用域以及内存地址。符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。这些信息一般以表格形式存储于系统中。如常数表、变量名表、数组名表、过程名表、标号表等等,统称为符号表。对于符号表组织、构造和管理方法...

2019-03-12 16:15:11 26265

原创 C++ 基础-7

1.C++提供了函数模板(function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。1)C++提供两种模板机制:函数模板...

2019-03-10 14:09:05 160

原创 c++ 基础-6

1. 多态 突破对象访问私有函数的限制 父类中public 虚函数 子类公有继承父类 并且重写该虚函数 并且标为private 基类指针指向派生类, 这样编译时编译器 基类中为public 通过 而运行时确实用虚函数表来访问,就可以访问到子类中的private2.f(int i = 10)虚函数是动态邦定的,而虚函数的默认参数是静态邦定的,...

2019-03-08 14:20:14 134

转载 C++ 四种强制类型转换关键字

类型转换有c风格的,当然还有c++风格的。c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,但是传统的c语言风格的类型转换没有区分这些...

2019-03-08 14:15:37 616

转载 C++ typeid关键字

typeid详解在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和 typeid。...

2019-03-08 14:11:37 188

原创 C++ 基础-5

1.重载与重写的区别:(1)重载 :在同一作用域下子类无法重载父类函数,父类同名函数会被覆盖重载在编译根据参数类型,个数, 位置来判断(2)重写:发生在父类、子类之间父类和子类有相同的函数原型使用virtual关键字声明后能够产生多态运行期间根据具体对象类型决定调用的函数2.根据实际的对象类型来判断重写函数的调用如果父类指针指向的是父类对象则调用父类中定义的函数...

2019-03-07 03:47:04 191

原创 C++ 基础-4

1.不管继承什么权限 只要父类成员是私有的 派生类就一定不能访问2.初始化列表的第三个功能 基类构造函数通过它 第一个是 const 变量初始化第二个是 成员对象的初始化3.先构造父类 再构造成员对象 再构造自己4.创建派生类对象 首先要调用基类的构造函数初始化继承来的成员5.多个派生类共享一个静态成员变量6.class默认是私有继承 struct...

2019-03-06 16:14:18 188

原创 c++ 基础-3

1.抽象 封装: (1)抽象的结果放在一个结构体 (2)访问控制 继承 : 多态:2.定义变量 创建对象3.class 默认 priavte 属性 struct 默认 public 属性4.不用进程传数据时 注意指针与malloc是否对应存在5.构造函数名与类名相同 构造函数没有返回值 创建对象时会自动调用它...

2019-03-06 14:28:47 183

原创 c++ 基础-2

1.bool 类型 true flase 不是0即是12.需要几个量就是几目运算符c 中 (a &gt; b)? a : b 不能作为左值c++中 (a &gt; b)? a : b可以 ,因为 等于b 这个变量而不是 b的值3.const 只读不能通过变量名改, 只能通过指针改4.void f(){const int a = 100; // 常量 ...

2019-03-06 03:20:30 140

转载 Linux 的虚拟文件系统

1,引言Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的 操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系统格式的硬盘;而这样的操作涉及到两个不同的文...

2019-03-05 12:42:20 219

原创 C++ 基础-1

1.for(int i = 0;)命名空间只在for{}中2.c中register 定义在寄存器中无法取地址 c++可以 编译器发现&amp;时 ,该声明就无效了3.c++不允许定义多个重名的全局变量4.c++ 空结构体变量占一个字节 c中不占c语言, 结构体只是各种数据类型综合c++ 一种类型5.c中函数返回值vid可省void f...

2019-03-05 07:37:59 175

原创 Linux系统编程-4

1.网络4层模型 网络7层模型 (只是概念未实现 只是为了分析方便)2.tcp/ip协议是整个协议栈最大的协议,所以就以他们为名3.tcp 可靠 面向连接 基于流 udp 不可靠 无连接 基于数据报4.端口号 1024 常用5.流式套接字 原始套接字 测试使用6.大端:高字节放在低地址上 网络字节序 小端:反之 ...

2019-03-05 07:25:35 183

转载 共享内存能否存放带有指针的结构体?

http://www.cnblogs.com/knightly/p/3525456.html共享内存是第二种IPC工具。他允许两个无关的进程访问相同的逻辑内存。共享内存是在两个运行的程序之间传递数据的有效手段。尽管X/Open标准并没有要求,很可能绝大数的共享内存实现都是会将不同进程之间正在共享的内存安排在相同的物理内存中。  共享内存为在多个进程之间共享与传递数据提供一个有效的手段。因为...

2019-03-05 01:56:45 869

原创 sqlite3 数据库

1.创建表create table if not exist student (id interger, name text, tel text);2.查看表.table3.查看表结构.schema student4.修改表alter table student rename to stu; (修改表名)alter table student ad...

2019-03-05 01:48:13 175

原创 Linux系统编程-3

1.man 命令            man1 ~ man8            man1: 系统用户            man2: 系统调用            man3: C库调用            man4: 设备文件及特殊文件            man5: 配置文件格式            man6: 游戏相关            ma...

2019-03-04 15:26:11 210

原创 关于http的长轮询和短轮询

(1)长轮询:多个 http 请求共用一个 tcp 连接; 这样可以减少多次临近 http 请求导致 tcp 建立关闭所产生的时间消耗http 长轮询是服务器收到请求后如果有数据, 立刻响应请求; 如果没有数据就会 hold 一段时间, 这段时间内如果有数据立刻响应请求; 如果时间到了还没有数据, 则响应 http 请求;浏览器受到 http 响应后立在发送一个同样 http 请求查询是否有数...

2019-03-04 09:19:57 498

原创 socket编程

.1.关于tcp连接异常断开(1)服务器端异常断开,setsockopt函数设置SO_REUSE,保证可以再次重启服务端(2)客户端异常断开,要采用心跳包(保活)机制。 &lt;1&gt;setsockopt函数,SO_KEEPALIVE, 发送探测包(该进程所有的socket都会有这个设置,不灵活) &lt;2&gt;select函数管理文件...

2019-02-16 00:16:27 92

原创 关于大小端

x86架构是典型的小端存储格式PowerPc架构是典型的大端存储格式arm默认是小端存储格式,可以调整成大端格式1.大端优点:符号位在所表示数据内存的第一个字节,便于快速判断数据的正负和大小。小端优点:内存的低地址存放数据低字节,大数强制转换小数时效率高,直接丢弃高地址数据即可;cpu在做数值运算时依次从低到高取数运算即可,效率高效。2.IP/TCP网络传输时采用网络字节序...

2019-02-14 20:58:05 409

原创 Linux系统编程-2

1.现行的进程调度算法,高优先级和时间片轮换抢占式 非抢占式死锁 进程互斥 临界资源 临界区2.fork()被调用一次,可以返回两次。3.每起一个进程就会有一个4G的虚拟地址空间,将编译的可执行文件的硬件地址映射到虚拟地址空间(MMU)。32位操作系统,4字节指针, 4G1G 内核态 3G 用户态 (数据段 /bbs,代码段,堆栈,共享空间)4.vfo...

2019-01-14 18:29:52 108

原创 函数指针

函数指针的意义在同一个接口函数中使用一样的形参,在不同的时间情境下产生不同的效果(自行定义函数名和函数体)。#include <stdio.h>typedef void (*handler)(int); // 声明一个函数指针类型 便于使用 否则作为返回值怎么写void Print(int data) // 确定函数体和函数名{ ...

2019-01-14 15:41:43 82

原创 Linux系统编程-1

1.open与fopen,write与fwrite等等的区别(1)一个是系统调用,一个是c库函数(2)前者依赖于Linux平台,后者只要有c库就可以使用。(3)前者直接软中断到内核态运行,I/O操作频繁,效率不高,后者在进程结束后将虚拟内存中的缓存通过一次性的I/O读写保存到硬盘,效率高。2.文件创建,打开,读写操作。其中读和写操作会使文件指针偏移,所以会配合fseek/lseek...

2019-01-12 19:23:49 191

原创 c语言基础-3

1.Static的用途主要有三个,一是用于修饰存储类型使之成为静态存储类型(如被调函数定义int a 改变了变量的生命周期),二是用于修饰链接属性使之成为内部链接属性。(静态函数只能在声明它的源文件中使用。三、作用于它的源文件全局,改变了作用域2.const关键字的作用1声明常变量,使得指定的变量不能被修改。2修饰函数形参,使得形参在函数内不能被修改,表示输入参数。3修饰函数返回值,...

2018-03-11 22:06:20 150

空空如也

空空如也

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

TA关注的人

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