自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言中void*和C++中void*的一个区别

1、在C语言中,类型检查不是很严格,因此可以将void*赋值给 type *。//.c文件中 int a = 0; int *ptr = &a; void *ptr1 = ptr; int *ptr2 = ptr1;//允许将void*类型赋值给int*,不会报错2、在C++中类型检查比较严格,因此不允许将void*赋值给type *。//.cpp文件中 int a = ...

2019-08-09 20:34:05 770

转载 Linux下动态链接库文件的realname、soname和linkname

1、为什么要使用这种规则?在windows平台下存在dll hell.问题,即由于dll升级之后程序无法使用升级后的dll从而导致程无法运行,也就是说动态库的新版本不能兼容旧版本。而在linux下也存在着类似的问题,为了解决这个问题,引入了这种机制。遵循这种机制制作动态库,就可以解决这种问题。但是这种规则只是一种约定,并非强制的。这种机制是通过文件名来控制动态库的版本,设计了3类命名方式,来实...

2019-08-03 21:17:51 2849

原创 Qt中编码的一些说明

1、源码字符集和执行字符集源码字符集(the source character set):源码文件时使用何种编码格式保存的。执行字符集(the execution character):可执行程序内保存的是何种编码(程序执行时内存中字符串编码)对于GCC编译器来说,可以使用如下命令参数设定。如果没有设定,默认都是UTF-8。-finput-charset=charset ...

2019-06-27 16:57:00 1188

转载 编码方式的一些说明

一、几种编码方式说明1、ISO8859-1 是国际标准化组织内ISO/IEC8859的第一个8位字符集。它以ASCII为基础,在空置的0xA0-0xFF的范围内,加入96个字母及符号,藉以供使用附加符号的拉丁字母语言使用。属于单字节编码,应用于英文。2、ASCII 单字节编码,只用了7位,最高位为0,能表示128个字符,主要用于英文。3、Unicode...

2019-06-27 14:04:41 437

原创 ORACLE_SID、实例名和数据库名的区别及查看方法

1、ORACLE_SID、实例名(SID)和数据库名的区别操作系统环境变量(ORACLE_SID):instance_name(“数据库实例名”)是Oracle的数据库参数,而oracle_sid则是操作系统的环境变量,用户和操作系统交互,也就是说要得到实例名,必须使用sid。在数据库安装结束时 ,oracle_sid已经是一个确定的字符串了,其值必须与数据库实例名相同。数据库实例名(IN...

2019-06-11 11:11:07 25954

转载 qt中qmake的详解

转载自https://blog.csdn.net/lvdepeng123/article/details/790079881.首先,感性的认识是,qmake可以利用源文件(包括头文件h,实现文件cpp,qt的ui文件等等)生成各种不同类型的工程,工程需要的Makefile文件,可执行的与不可执行的,这取决于所用的模板(包括app、lib、subdirs、vcapp、vclib)。2.创建p...

2019-06-10 17:40:37 3080

转载 STL deque详解

转载自https://www.cnblogs.com/youxin/p/3286154.html英文原文:http://www.codeproject.com/Articles/5425/An-In-Depth-Study-of-the-STL-Deque-Container绪言这篇文章深入的角度认 识 STL deque 容器。这篇文章将讨论一些有关deque的情况,比如在何种情况下...

2019-03-21 15:44:15 432

转载 ini配置文件格式

转自https://blog.csdn.net/thanklife/article/details/83860829程序没有任何配置文件,那么它对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,为了让程序出厂后还能根据需要进行必要的配置,所以要用配置文件;配置文件有很多种,如INI配置文件,XML配置文件,cfg配置文件,还有就是可以使用系统注册表等。...

2019-03-18 15:53:18 2887

原创 C++中的类类型转换分析

1、对下面两行代码具体过程分析。string str1 = "aaa";string str2 = string("bbb");str1的初始化过程:隐式调用string类的接受一个char *的有参构造函数构造一个临时对象,然后调用移动或拷贝构造函数将临时对象拷贝给str1,最后将临时对象析构。str2的初始化过程:显式调用string类的接受一个char *的有参构造函数构造一...

2019-03-14 00:37:50 186

原创 shell脚本执行时出现错误:./myshell: /bin/bash^M: 解释器错误: 没有那个文件或目录

如题,我在ubuntu上创建了一个shell脚本文件myshell,然后使用ntopad++连接ubuntu,编辑myshell,myshell内容如下:myshell只是简单的在终端打印出hello。但是在ubuntu中执行myshell时出现错误如下:使用vim打开myshell,然后在末行模式下输入set,得到结果如下:需要注意的是:在windows环境下,回车换行保...

2019-03-12 22:02:50 1463

原创 守护进程的一些说明

1、实现一个守护进程的实例如下:#include "unp.h"#include <syslog.h>#define MAXFD 64extern int daemon_proc;void daemon_init(const char * pname,int facility){ int i; pid_t pid; if((pid = Fork...

2019-03-12 17:26:20 288

转载 守护进程

转载自https://blog.csdn.net/leichelle/article/details/7464062守护进程 在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于...

2019-03-12 15:37:16 196

原创 编译的时候所使用的动态库中出现错误:未定义的引用

1、使用makefile编译的时候,出现错误如下:如上图所示,是在动态库libicdbapi.so中出现了未定义错误,既然是未定义错误,说明sqlprct、...、sqlnult这5个符号是外部符号,是在其他文件中定义的。可以使用nm命令查看libicdbapi.so动态库中的所有符号,如下:上图并不是nm命令的所有结果,U表示该符号未定义。关于nm命令的使用方法可以参考htt...

2019-03-11 21:45:29 12717

原创 链接时库文件没有放在命令行尾部所造成的问题

1、今天在用gcc命令编译使用了动态链接库中的函数的源码时,出现了问题,如下:需要说明下所有提示未定义的函数都是在动态库libitcastsocket.so和libmessagereal.so这两个动态库之中的,这些函数是在MngClient_Agree中使用的。上面三个.o文件是根据源文件编译好的,都没有问题。然后我使用以下命令想将三个.o的文件链接成可执行目标文件。gcc -L/...

2019-03-02 20:58:20 856

转载 粘包现象以及如何处理粘包

转载自http://www.cnblogs.com/zhangsanfeng/p/8891149.html一 粘包现象首先我们要知道什么是粘包:我们首先要知道,粘包是对于TCP来说的,UDP是不存在粘包一说的,那么TCP在传输数据的过程的特点是什么呢:1 会将数据量较小,且发送时间间隔较短的的数据一起打包发送,那么这里所讲的时间较短是相比较网络延迟来说的,比如我们两次发送间隔...

2019-03-01 10:59:13 1789 2

转载 程间通信的方式——信号、管道、消息队列、共享内存

转自https://www.cnblogs.com/LUO77/p/5816326.html多进程:首先,先来讲一下fork之后,发生了什么事情。由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。将子进程id返回给父进程的理由是:因为一个进程的子进程可以多...

2019-02-22 21:37:58 487

原创 ubuntu中文件编码格式查看与转换方法

1、在ubuntu中查看文件编码格式可以使用 file 命令,如下:对于文件编码方式,可以参考这篇文章https://blog.csdn.net/kdc18333608478/article/details/70214493。2、ubuntu中文件转换可以使用 iconv 命令,该命令的格式如下:   iconv -f  文件编码格式  -t 想要转换的编码格式  要编码的文件名 ...

2019-02-22 16:37:40 8071

原创 使用git提交代码到github

1、首先简单介绍下git的工作过程:在工作区编辑修改文件,然后添加到暂存区,最后提交到git本地仓库中。最后从本地仓库提交到远程仓库。工作区其实就是电脑上的文件,比如需要将某个文件夹下的文件上传,这个文件夹就是工作区。上图所示的git仓库是指本地仓库。git仓库分为本地仓库和远程仓库,本地仓库在你自己电脑上,远程仓库在github上。2、提交到github的步骤1)创建...

2019-01-11 13:15:44 239

原创 secureCRT配置背景颜色

我用的时英文版的,网上的配置secureCRT颜色资料很多,这是我找到的比较好的两篇,可以参考下:https://blog.csdn.net/u010031673/article/details/51130889#commentshttps://blog.csdn.net/zq710727244/article/details/53909801我基本是按照上面的文章配的,但是遇到了一些...

2019-01-10 16:38:09 3675

原创 ubuntu上启动oracle数据库

1、我们知道在windows下要使用oracle数据库,至少需要开启两个服务: OracleServiceORCL和OracleOraDb11g_home1TNSListener。其中OracleServiceORCL是数据库实例,OracleOraDb11g_home1TNSListener是监听服务。在windows下开启这两个服务,可以直接进入服务找到这两个服务直接开启就行了。对于win...

2019-01-09 17:08:43 1247

原创 ubuntu下新建用户

1、查看系统现有的用户,可以进入/home目录下查看,但是有些用户没有在这个目录下创建文件夹,所以最好的办法就是查看/etc/passwd文件。2、使用useradd命令创建新用户,需要注意的是需要加一个-m才能在/home目录下创建对应的文件夹,否则不会。也可以使用adduser命令,该命令会在/home下创建对应的文件夹。3、使用passwd命令设置新添加的用户的密码。...

2019-01-09 16:00:28 5795

原创 Navicat Premium连接oracle出现错误:ORA-12541: TNS:无监听程序错误

使用Navicat Premium连接安装在ubantu16.04上的oracle数据库时,出现如下错误:                                                        之前使用Navicat Premium连接windows平台下的oracle数据库时,也出现过这个错误,网上查了下解决办法如下:第一步:1、在oracle安装目录下查...

2019-01-09 10:55:17 16763

原创 windows更新之后VS2015使用cout输出中文到控制台出现乱码

在使用vs2015的时候突然发现使用cout输出中文乱码了,检查了控制台的编码方式是GBK,源代码是GB2312,按道理来说编码方式一致,不会出现输出中文乱码的情况,而且使用printf输出中文就能正确显示。具体例子如下:#include <iostream>using namespace std;int main(int argc, char**argv){ cou...

2018-12-26 17:02:30 5753 7

原创 链接器解析多重定义的全局符号

1、链接器对全局符号的引用解析过程:当编译器遇到一个不是在当前模块(可重定位目标文件)中定义的符号(变量或函数名)时,会假设该符号是在其他某个模块中定义的,生成一个链接器符号表条目,并把它交给链接器处理。如果链接器在他的任何模块中都找不到这个被引用符号的定义,就输出一条错误信息并终止。2、对于Linux编译系统,其将函数和已初始化的全局变量作为强符号,未初始化的全局变量是弱符号。然后根据以下规...

2018-12-13 21:17:57 1026

原创 C/C++程序编译过程分析

1、编译过程介绍1)gcc编译器编译过程如下:上图中的所有步骤并不是gcc编译器全部完成,gcc只是完成编译,当然你也可以使用C编译器(ccl)来编译。对于预处理阶段,是gcc调用C预处理器(CPP)来完成的,得到hello.i文件。对于将汇编文件翻译成可重定位目标文件(二进制文件)是gcc调用汇编器(as)完成的,得到hello.o文件。这就是单个源文件翻译过程。生成可执行文件是gc...

2018-12-13 17:48:15 374

原创 Ubuntu开机出现的一些错误及解决办法

1、开机时出现错误:i2c_piix4: Host SMbus controller not enabled,解决方法为编辑blacklist禁止i2c_piix4驱动的加载。具体操作步骤如下:1)在启动Ubuntu的时候按住左Shift键;2)Ubuntu开机时将显示GRUB启动选项;3)接下来选择Ubuntu的高级选项(Advanced options for Ubuntu);4)然...

2018-12-13 11:00:34 7118

原创 Ubuntu扩展虚拟机的磁盘空间以及删除磁盘分区的方法

1、虚拟机的磁盘扩容步骤如下: 2、将扩展的磁盘空间挂载到系统中1)分区操作的几个命令      fdisk              磁盘分区相关操作      df                  系统分区挂载信息      mount           挂载分区      umount         卸载分区      mkfs.ext4  ...

2018-12-12 21:41:04 12691 2

原创 ubuntu中打开vim出现错误:/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0: undefined symbol: XML_SetHashSalt

很久没有用ubuntu了,今天打开ubuntu,使用vim时突然出现错误如下:后来在网上查了查发现是因为我在ubuntu上装了oracle导致的错误,因为装oracle时改变了LD_LIBRARY_PATH的值。其值现在是:具体原因如下:执行命令 ldd /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0,得到结果如下:从上图中...

2018-12-11 20:46:17 12360 1

原创 C/C++中字符串常量为什么可以赋值给char*?

1、对于C来说,字符串常量是由字符构成的数组,比如“hello”类型为char[6],所以在C中可以直接字符串常量赋值给char*。既然C中字符串不是常量,是不是可以改变字符串常量的值呢?答案是否定的,虽然可以编译通过(会有警告),但是运行时会出错。因为字符串常量位于只读存储区不允许写操作。实验如下:#include <stdio.h>#include <stdlib.h...

2018-11-30 16:52:32 4979

原创 堆和堆排序

1、(二叉)堆可以使用一个数组实现,在逻辑上,我们可以将这个数组实现成一个完全二叉树。因为完全二叉树的父节点和孩子节点之间存在关系。例子如下:                           图a中就是一棵完全二叉树,并且这个完全二叉树是一个二叉最大堆(max堆)结构。因为该完全二叉树所有节点都满足堆序性。图b是该最大堆在内存上的存储形式,即以数组的形式存储,可以通过数组下标来实现其逻...

2018-11-23 15:20:41 280

原创 二叉树和完全二叉树一些规律

1、二叉树具有以下规律:      1)二叉树高度为i所在的层至多有 个节点      2)高度为k的二叉树至多有 -1个节点      3)对于任何一棵二叉树,若度为2的节点数有n2个,则叶子数有n0个,则叶子数n0必定为n2+1即n0=n2+1;注意:高度是从0开始计算的,也就是说二叉树最后一层的高度为0.证3):       二叉树全部节点数为 叶子数、度为1的节点数...

2018-11-23 09:52:12 4109

转载 关于Qt中的tr()函数讲解

转载自https://blog.csdn.net/andy_93/article/details/52836369在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人:(1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr (2)另一类人,确实是出于国际化的需要,将需要在界面上显示的文件都用tr包起来,这有分两种: (2a) 用tr包住英文(最最推荐的用法,...

2018-11-14 10:08:06 1763

原创 C++中刷新输出缓冲区

每一个输出流都管理一个缓冲区,用来保存程序读写的数据。因此要将数据真正写到输出设备中,就需要刷新缓冲区。导致缓冲区刷新的原因大体有以下5种。1、程序正常结束,作为main函数return操作的一部分,缓冲区被刷新。2、当缓冲区满了的时候,会刷新缓冲区。3、可以使用操作符endl、flush和ends来显示的刷新缓冲区。这三个都是IO库中的操作符,endl能完成换行和刷新缓冲区的工作。f...

2018-11-08 21:36:13 6330 1

原创 C++中的值初始化和默认初始化

1、值初始化 顾名思义,就是用数值初始化变量。如果没有给定一个初始值,就会根据变量或类对象的类型提供一个初始值。对于int类型其值初始化后的值为0。2、默认初始化:如果定义变量时没有指定初值,则变量被默认初始化。其初始值和变量的类型以及变量定义的位置相关。默认初始化类对象和默认初始化内置类型变量有所不同。对于默认初始化内置类型变量来说: 1)定义在函数体之外的变...

2018-10-31 21:33:08 11438 2

原创 C++中的初始化列表

C++11扩大了列表初始化的适用范围,使其可以用于所有内置类型和用户定义的类型(即类对象)。1、当列表初始化用于内置类型的变量时,这种初始化形式有一个重要的特点:如果我们使用列表初始化且初始化值存在丢失信息的风险,则编译器将报错。也就是说在使用列表初始化时编译器将禁止将变量类型进行缩窄转换,即不能将宽的变量类型通过列表初始化的形式初始化给窄的变量。例子如下:#include <io...

2018-10-31 16:36:35 1097

转载 VC使用CRT调试功能检测内存泄漏

转载自https://www.cnblogs.com/kex1n/archive/2011/04/27/2030753.html方法一:检测内存泄漏的基本工具是调试器和CRT调试堆函数。为了使用调试堆函数,在你的程序中你必须含有下面的说明:#define _CRTDBG_MAP_ALLOC#include<stdlib.h>#include<crtdbg.h>...

2018-10-24 20:15:07 275

转载 为什么INT_MIN不是直接写成-2147483648

转载自https://www.cnblogs.com/helloWaston/p/4624543.html最近在编程中遇到一个问题: #include <iostream>using namespace std;int main(){ int n = -2147483648; //cout << (1 > -2147483648) &lt...

2018-10-17 20:39:14 729

转载 类与类之间的几种关系

转载自http://www.cnblogs.com/liuling/archive/2013/05/03/classrelation.html类与类之间的几种关系一、继承关系      继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计...

2018-10-09 11:19:07 20301

原创 C++中的类型转换总结

1、 类型转换    1、在下面这些表达式中,编译器会自动转换运算对象的类型:        (1) 在大多数表达式中,比int类型小的整型值首先提升为较大的整数类型。        (2) 在条件中,非布尔值转换成布尔类型。        (3) 初始化过程中,初始值转换成变量的类型;在赋值语句中,右侧运算对象转换成左侧运算对象的类型。        (4) 如果算术运算或关系运算的运...

2018-10-06 20:41:06 373

原创 C++中函数返回数组指针的几种方法总结

因为数组不能被拷贝,所以函数不能返回数组。不过,函数可以返回数组的指针或引用。返回数组指针的方法有以下几种:    1、方法一:使用类型别名。如下        typedef int arrt[10];   //arrT是一个类型别名,它表示的类型是含有10个整数的数组        using arrT = int[10];  //C++11标准新的类型别名声明语法        ar...

2018-09-29 16:35:28 6976 1

空空如也

空空如也

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

TA关注的人

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