自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《编码checklist规范》学习笔记

《编码checklist规范》学习笔记《编码checklist规范》posts《编码checklist规范》学习笔记0 前言1 排版1.0 总则1.1 缩进1.2 语句行1.3 大括号范例1.4 代码行长度2 注释2.0 总则2.1 声明注释2.2 语句注释范例2.3 废弃代码3 标识符3.0 总则3.1 命名风格3.2 命名要求3.3 文件名3.4 魔数示例3.5 变量名称和用途匹配3.

2018-05-09 15:59:09 1460

原创 Internet 协议

Internet 协议《TCP/IP详解 卷1:协议》TCPpostsInternet 协议1 引言2 IP数据报2.2.1 生存期TTL2.2.2 IP Fragment标识标志分片偏移任何一片数据的丢失需要上层重传整个报文例子1 引言IP是TCP/IP协议族中的核心协议。所有TCP、 UDP、 ICMP和IGMP数据都通过IP数 据报传输。 IP提供了一种尽力而为、无连接的数

2018-05-09 15:59:03 879

原创 第六章 预处理器

第六章 预处理器《C陷阱与缺陷》学习笔记posts第六章 预处理器导读6.1 不能忽视宏定义中的空格6.2 宏并不是函数6.2.1 括号预防优先级问题6.2.2 避免参数副作用6.3 宏并不是语句宏并不是类型定义总结导读预处理器使得编程者可以简化某些工作,它的重要性可以由两个主要的原因说明。第一,有时候我们希望将某个特定数量(如数据表的大小)在程序中出现的所有实例统统加以修改。只要改一

2018-04-28 16:57:17 246

原创 第七章 可移植性缺陷

第七章 可移植性缺陷《C陷阱与缺陷》学习笔记posts第七章 可移植性缺陷导读7.1 应对C语言标准变更7.2 标识符名称的限制7.3 整数的大小7.4 字符是有符号整数还是无符号整数7.5 移位运算符7.6 内存位置07.7 除法运算时发生的截断7.8 随机数的大小7.9 大小写转换7.10 首先释放,然后重新分配7.11 可移植性问题的一个例子导读C语言编写的程序能够方便地在不同的

2018-04-28 16:57:14 406

原创 第五章 库函数

第五章 库函数《C陷阱与缺陷》学习笔记posts导读C语言中没有定义输入/输出语句,任何一个有用的C程序都必须调用库函数来完成最基本的输入/输出操作。就像内存相关的的函数malloc和free是库函数,但是C++里的new和delete是运算符。最好尽量使用系统头文件,因为库文件的编写是经过深思熟虑的,代码的功能都是十分完全的。第五章 库函数导读5.1 返回整数的getchar函数5.

2018-04-28 09:26:18 178

原创 第四章 连接

第四章 连接《C陷阱与缺陷》学习笔记形参实参staticposts第四章 连接4.1 什么是连接器4.2 声明和定义4.3 命名冲突与static修饰符4.3.1 变量4.3.2 函数4.4 形参、实参与返回值4.4.1 形参实参的区别4.4.2 强制转换4.4.3 返回值4.5 检查外部类型原内存布局现内存布局4.6 头文件总结4.1 什么是连接器在C语言中,一个重要的思想就是分别编

2018-04-25 21:30:05 208

原创 3 语义陷阱

3 语义陷阱《C陷阱与缺陷》学习笔记指针数组posts3 语义陷阱3.1 指针与数组3.1.1 数组名的使用3.1.2 指针的使用3.1.3 二维数组3.1.4 二维数组名的使用3.2 非数组的指针3.3 作为参数的数组声明3.4 避免“举隅法”3.4.1 指针复制问题3.5 空指针并非空字符串3.6 边界计算与不对称边界规定编码风格3.7 求值顺序3.8 运算符&&、||和!3.9 整数溢出

2018-04-24 11:20:46 154

原创 linux管道通信之命名管道

管道通信命名管道创建:mkfifo删除:unlink管道本质:单向队列操作方法:1、创建管道文件2、打开管道文件3、写入数据4、关闭管道管道文件:虚拟文件,打开管道文件的时候,系统在内存中建立了一个单向队列的缓存区,数据写入内存中。当管道文件关闭时,数据丢失。案例写入信息到管道fifo.c#include#include#include#include#include#include#includ

2018-04-23 15:31:21 416

原创 linux管道通信之匿名管道

匿名管道管道文件的大小始终是为0,更多的时候,它只是起一个标识作用,标识内核中的那块缓存区。就会出现所谓的匿名管道(比如父子进程之间的通信)。使用pipe创建匿名管道,看不到pipe文件。pipe(int fds[2]); // fds[0] 读,fds[1]写返回2个文件描述符,一个读文件描述符,一个写文件描述符。匿名管道只适用于父子进程案例:使用2个子进程,分别计算1-5000的素数,5001

2018-04-23 15:31:15 194

原创 linux进程通信之信号量

shmctl删除内存。信号量,虽说可以于通讯,但是更加适合于进程间的同步。通过PV操作相互操作。编程模型:1、semget:创建信号量,或者获取信号量semget(ftok(".",123),2,IPC_CREAT | IPC_EXCL |0666) ;2、semctl:初始化信号量,控制信号量3、semop:做PV操作(对信号量做加减操作)ftok,共享内存,消息队列,信号量它们三个都是找一

2018-04-23 15:31:10 198

原创 语法里常见的错误

1 语句结束符的分号如果在写代码的时候少写了分号或者多加了分号,这样的错误带来的后果是很严重的。有时候编译器可能都不会对其进行报错,这样导致你寻找错误的成本大大增加。比如:if(x[i] > big); big = x[i];编译器会正常地接收第一行代码中的分号而不会提示任何警告信息,正确的做法应该是:if(x[i] > big) big = x[i];2 swi...

2018-04-23 09:04:11 357

原创 运算符优先级的问题

结合性的理解自左向右,比如成员运算符‘.’,a.b.c的含义是(a.b).c,而不是a.(b.c)。就是从左到右依次结合。运算符优先级依次递减单目运算符运算所需变量为1个的运算符(并不是之前理解的一个字符就是单目运算符),又称一元运算符,其中有!(逻辑非运算符)~(按位取反运算符)++(自增运算符)—(自减运算符)它们的结合性是从右到左,比如*p++会被编译器解释成*(p++),即取指...

2018-04-23 09:04:05 679

原创 字符串拷贝 sprintf、strcpy 及 memcpy 函数的区别

这些函数的区别在于实现功能以及操作对象不同。strcpy 函数操作的对象是字符串,完成从源字符串到目的字符串的拷贝功能。sprintf 函数操作的对象不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这个函数主要用来实现(字符串或基本数据类型)向字符串的转换功能。如果源对象是字符串,并且指定 %s 格式符,也可实现字符串拷贝功能。memcpy 函数顾名思义就

2018-04-15 10:40:18 484

原创 const指针的理解

const指针有点复杂啊,一系列const组合起来。看的人头都大了!但总的来说,想要存放常量对象的地址,只能使用指向常量的指针const double pi = 3.14; // pi是个常量,它的值不能改变double *ptr = &pi //错误:ptr是一个普通指针const double *cptr = π //正确...

2018-03-31 15:26:01 525

原创 QT实现TCP断点传输文件

网上这方面的资源不是很多,大多数都是Http的断点续传。因小项目需求需要做一个断点传输的功能,思考后自己设计了。 服务器和客户端都基于QT5.9,在这里只给出服务器传输文件到客户端,客户端上传文件到服务器原理一样。原理如下:将文件分块传输,比如每次发送4096字节。保证客户端正确接收字节且写入文件,然后向服务器反馈接收成功信息。服务器收到反馈信息继续进行发送。暂停下载...

2018-03-23 10:57:38 2735 4

原创 QComboBox选中后弹出另一个QComboBox

有时候我们会有这这样的需求比如点击QComboBox里的一项,然后弹出另一个QComboBox,形成复合选项。可以用到槽函数 connect(ui->selectcomboBox, SIGNAL(activated(int)), this, SLOT(insertTermComboBox(int)))int是你所选行所在的index,然后可以在 insertTermCom...

2018-02-14 15:22:34 1117

原创 给QTableView中的一列添加按钮

我的需求是在QTableView里有一列全变为按钮,并且点击按钮可以返回该按钮所在行的其他数据或行号。这里没有用QItemDelegate,感觉有点难而且理解起来不是那么透彻。在查询了一系列资料后发现一个很简单的方法且好用,前提是用了QStandardItemModel(),这个用来给QTableView加数据很方便。比如: table.cppinit(){.....

2018-01-19 20:38:31 14873 10

原创 linux 编译QT的mysql驱动

为编译这个驱动真的是一把血一把泪啊主要是要在阿里云上跑用QT写的服务器,但是运行的时候提示需要mysql驱动,只好自己编译qt的mysql驱动。一开始编译QT的源码发现默认选项的sql只有sqllite.so,但是我需要的是mysql的动态库,这样就要自己编译了。下载首先下载你需要的QT版本,去http://download.qt.io/archive/qt/ 这里找到你要的

2018-01-10 11:20:38 1965 2

原创 C++如何定义一个全局类

可能我这个全局类的说法不是很准确,不过其实就是变量的扩展延伸。比如你想把一个类让全部的CPP都能用,而不是一个变量,那么需要这样定义:假设有一个预编译头stdafx.h 在stdafx.h中加入你想要的全局类的头文件: include “CMyClass.h” ;在stdafx.cpp中加入类的定义 如:CMyClass myclass;在你想要用到该全局CMyClass类的其

2018-01-09 20:44:15 10861

原创 C++实现get与set

相信学过JAVA的对类的get和set方法一定不陌生,现在用C++来实现get和set方法。编写一个学生类,成员包括姓名,学号,年龄(默认值23),对上面3个成员分别都有设置值和取值的方法头文件Student.h#pragma once#include<iostream>using namespace std;#ifndef STUDENT_H_#define STUDENT_H_clas

2017-12-12 21:17:41 17801 1

原创 用模板实现add函数

首先要了解模板(template)是什么? 模板(Templates)使得我们可以生成通用的函数,这些函数能够接受任意数据类型的参数,可返回任意类型的值,而不需要对所有可能的数据类型进行函数重载假如我们要写一个add函数,要求能够进行int,double,float的运算。如果不用模板(template)而用重载的话要写三个一样的函数,这样一来既麻烦也影响代码的美观。所以可以用模板来实现这个函

2017-12-12 19:56:52 1539

原创 约瑟夫环(非递推版)

之前写这个的时候没有想到用递推,就是简单的暴力求解,思路也清晰比较好理解。但是递推版初学者一时半会可能很难理解,这里给出一个用数组求解约瑟夫环的代码。题目:有n个人围成一个圈,顺序排号,从第一个人开始报数(从1到3报数),凡是报到3的人退出,问最后留下的是原来的第几号的那位?(有些版本要求每次退出的人的位置)

2017-12-10 09:57:46 926

原创 已知今天是几月几号,编一个程序,求若干天之后是多少号。

如题。 思路:先设置一个月份数组,再判断是否是闰年;判断输入的天数是否大于输入的月份对应的天数;若大于则减去当前月份的天数然后计算下一个月,否则直接将天数加到输入的日期上;如果月份大于12则年份加1。 #include < iostream>int month[13] = { 0,31,28,31,30,31,31,30,31,30,31,30,31 };int main(){

2017-12-10 09:42:33 977

原创 提取字符串中的数字

题目:输入一个字符串,有数字和非数字如: “313wrw.13341231se][‘w23’ww” 要求将连续的数字做为一个整数,如313,1334,将其存到一个数组里,并统计有多少个,最后打印出来。思路:题目要求连续的数字作为一个整数,那么从后面遍历字符串方便处理高位的问题;设置一个倍数flag,若为连续数字则倍数*10,遇到字符则倍数清零;字符串里有多组数字的时候还要判断什么时候数组

2017-11-29 22:05:06 11957

原创 将字符串插入另一个字符串的指定位置

题目:编写一个函数,将一个字符串插入到另一个字符串的某个位置后面(例如:将”abc”插入到”abcdef”的第三个字符位置后面,结果为”abcabcdef”)。编写程序时,请在必要的地方加以注释(注:不能用该程序语言的内置函数或过程)。思路:将str1字符串的指定位置后的内容复制到另一个字符串中,空间换时间降低时间复杂度;再将str2字符串(待插入字符串)复制到str1的指定位置;将str1和

2017-11-29 21:12:14 21870

原创 从文件路径析取文件名、后缀名和文件所处位置

编写一个完整的函数,完成从一个给定的完整的文件路径(如”C:\My Documents\Software Test 1.00.doc”)中,析取文件名,扩展名和文件所处目录的功能,编写程序时,请在必要的地方加以注释。思路: 前提是输入的文件路径是合法的从后往前遍历字符串,遇到第一个‘.’符号记录其位置,则‘.’后面的都是后缀名;再从‘.’开始向前遍历,直到遇到第一个‘\’符号,‘\’和‘.’之

2017-11-29 19:33:25 1170

原创 两个字符串拼接(不用strcat函数)

字符串拼接要求不用strcat函数,具体思路如下:先求出2个字符串的长度用循环将第二个字符串的字符添加到第一个字符串的后面#include <iostream>#include <cstring>#define Max_num 1000char* myStrcat(char *str1, char *str2){ int len1 = strlen(str1); int

2017-11-29 17:15:26 15271

原创 字符串循环右移

字符串循环右移处理字符串的经典问题,具体理解起来不是那么容易。下面有一种速度和空间都比较好的方法: 例:将”abcdef”向右移动2位,目标字符串是‘efabcd’。将字符串分为‘abcd’和‘ef’,将前面的字符串翻转为‘dcba’,则当前字符串为‘dcbaef’。再将后面的字符串翻转为‘fe’,则当前字符串为‘dcbafe’。最后将整个字符串翻转‘efabcd’。#include<io

2017-11-28 21:28:07 426

原创 解决VS2017出现_CRT_SECURE_NO_WARNINGS 的问题

解决VS2017出现_CRT_SECURE_NO_WARNINGS 的问题@(C++) 用一些函数的时候会出现'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See onl

2017-11-28 19:18:55 10449 1

原创 CGAL编译DEMO Qt5Script_DIR NOT FOUND问题

CGAL 编译DEMO准备编译一个CGAL里的三角剖分,但是遇到了相当多的坑!尤其是这个QT5Script_DIR的问题。原来是我安装QT5的时候没有勾选QTScript,修改QT5的组件勾选QTScript后解决问题(一开始为了省空间只安装了MVSC-2017)。

2017-11-21 20:00:45 1936 2

空空如也

空空如也

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

TA关注的人

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