自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构之红黑树,二进制的奇妙冒险!

数据结构之红黑树 原理解析

2020-09-08 10:24:14 1655 2

原创 Linux下CMake安装

前言因为博主现有机器上yum自动安装提供的CMake版本太低,无法编译对应的项目工程,因此博主打算安装一个最新版本的CMake。Linux下安装CMakeCMake的安装包可以直接从官网下载然后远程上传到对应linux机器上,如果不支持大文件传输的话也可以直接使用wget命令获取。鼠标放置于超链接上可以在左下角看到对应地址(或者直接右键复制链接地址wget https://github.com/Kitware/CMake/releases/download/v3.19.3/cmak

2021-01-28 23:17:09 1419

原创 Win64环境下CMake生成VS工程文件异常 【missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS】

CMake生成VS工程异常【missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS】

2020-12-29 16:23:11 3342 1

原创 linux gcc编译环境搭建

目录1. 远程工具1.1 远程连接超时断开2. 文件传输2.1缺少rz/sz命令2.2 SecureCRT上传文件2.3 默认下载路径3. GCC安装3.1系统命令安装3.2 下载GCC源码安装4. 压缩/解压工具4.1 zip工具4.2 tar工具5. CMake安装6. GLIBC相关博主最近新弄了台linux服务器,打算用于日常的开发测试。这边就记录一下搭建过程中使用的命令/工具吧。(系统为CentOS7,如其他系统没有yum等系统安装命..

2020-09-22 16:19:45 2289

原创 c++11 std::thread多线程简单模型

c++11 std::thread的使用介绍(带简单模型的代码参考)

2020-09-15 21:43:33 762

原创 编译器对你的c++代码做了什么?

在编写代码的时候,可能会考虑性能方面的优化,但实际编译器已经帮你做了一部分优化。

2020-08-27 12:15:23 407

原创 linux下源码编译的GCC卸载

linux环境下安装应用可以通过yum命令(Centos版本)或者apt命令(Ubuntu版本),不过也可以通过编译源码的方式安装。但部分应用通过这种方式安装之后,卸载是比较麻烦的,也没有make uninstall提供(没错说的就是GCC),需要手动删除安装的每个文件。如果在编译时,通过./configure --prefix=XXXX指定了安装目录的话倒是比较简单,直接删除那一整个目录即可(前提那个目录是你自己新建的,千万别对系统目录下手)。而对于现在正在看这篇博客的你来说,估计是没有指定直接安装在

2020-08-06 18:23:37 8803 2

原创 c++ memset与崩溃

c++中提供了函数memset,主要用于一段内存内容的初始化(基于字节为单位)。参数1为进行初始化的内存首地址,参数2为初始化的值(虽然是个int但实际只能用0~255,因为是按字节初始化),参数3为初始化的内存大小(字节为单位)。比较常见的用法类似于下例:class TempClass {public: TempClass() { memset(this, 0, sizeof(*this); }; // ... private: char name_[20]; int valu

2020-05-26 23:32:53 1516

原创 linux下的c++编译

Linux下的c++编译关于GCC使用g++编译cpp文件功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入关于GCC...

2020-04-01 00:39:43 844

原创 c++ 临时变量与动态分配效率测试

在C++中较常接触的内存对象一般都存储于两种空间中:1.栈(临时变量)2.堆(动态分配 new / malloc)临时变量的内存分配在程序编译的时候已经预设好了,而动态分配的内存则要等到程序实际运行时跟系统进行申请的,效率肯定比前者要低。具体细节可以查阅这位博主的博客分析栈为什么效率比堆高本文中想要测试的是栈比堆具体快多少,在实际工程应用中,应该如何取舍。测试用例:#i...

2019-10-14 10:53:22 515

原创 C++/Lua交互相关问题(记录用)

该篇文件主要用于记录平常开发中遇到的问题,以后再遇到时减少耗时。1.C++调用相关Lua脚本时,脚本中require了iconv动态链接库,但是加载时出错:/usr/local/lib/lua/5.1/iconv.so: undefined symbol: lua_getfield猜想是与当前Lua版本不一致导致的,实际操作中,尝试了其他版本的iconv库之后可正常加载了。...

2019-09-20 14:54:41 347

原创 C++ 宏定义与条件编译

C++中偶尔可以看见一些宏定义,例如__LINE__,或者__FILE__,还有##这些符号。其中__LINE__ , __FILE__是属于编译器里面内置的宏,通过这几个宏可以获取到源码对应的行号,对应的文件名等等。而##符号用于宏定义中,具有连接两个参数,使其成为一个参数名的作用。#符号在宏定义中,是将之后的参数转换为字符串的作用。具体用法如下所示:#include <stdio.h&g...

2018-07-05 12:29:06 994

原创 lua #操作符的作用

在lua中,#一般是用于获取表的长度,即#tableTest就是tableTest的长度了。但这只是在一般的情况下,如果这个表结构并不是按数字1~N顺序递增的,那么#tableTest获取出来的就有可能是一些奇怪的值。比如tableTest = { 1, 2, nil, 4 }...

2018-06-26 15:35:36 5043

原创 STL容器 内存释放

在一个项目中,需要在服务端保存玩家的录像回放数据,采用vector/map容器暂存了下发的消息数据,等待游戏结束后就将其写入文件,然后用clear清除掉这块缓存。游戏上线了之后,发现其占用的内存一直上升,搜寻日志后发现,每局结束后回放占用的空间并没有释放掉,随着房间一直保留。也就是假设一共1000个房间,每个房间都有玩家游戏过后,就会有一千份回放空间没释放。瞬 · 间 · 爆 · 炸普...

2018-05-31 12:16:06 3058

原创 linux mongofiles uri相关命令

linux环境下,通过mongofiles文件操作MongoDB:使用--uri参数可以创建一个短连接,在程序中使用比较方便,不需要做开始的初始化或者结束后的断开连接。官方格式为mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]参考地址:Conn...

2018-04-21 14:53:29 1262

原创 vmware-install.pl安装VMware Tools

因为需要测试linux环境下shell调用mongodb的方法,所以装了一下虚拟机,系统是linux CentOS 7 64bit。讲一下VMware Tools的安装顺序:1.获取安装文件VMTool的安装文件在VM虚拟机安装目录下的linux.iso中。在虚拟机的光驱设置选项中,选中linux.iso:之后就可以进入linux环境下,调用mount命令将cdrom(光驱)中的文件linux.i...

2018-04-20 12:47:15 24278 1

原创 虚拟机 connect: Network is unreachable问题

配置虚拟机(linux CentOS 7 64bit)时,调用ping命令并不能正常执行,其反馈为"connect: Network is unreachable"。而调用ifconfig -a命令后,发现并没有eth0网卡,只有一个ens33和一个lo。解决方案:1.编辑/etc/sysconfig/network-scripts/ifcfg-ens33配置文件,将其中NAME项和DEVICE项...

2018-04-19 17:38:07 90978 15

原创 虚函数-实现

C++中虚函数表是专门存在一个位置上的,而在实例的首地址存储的即为虚函数表的地址。所以如果类A拥有虚函数(一个或者多个),其实例的大小都会多增加4个字节,用于存储虚函数表地址。如果类B不存在虚函数,则其会按默认顺序存储成员变量的值。例如以下例子:#include <stdio.h>struct TestClass{ TestClass() { value = 10; }...

2018-04-12 22:44:49 599

原创 CCNode#rotation. RotationX != RotationY.问题

在使用ListView控件的过程中遇到了点问题,调用pushBackDefaultItem时报以下错误:CCNode#rotation. RotationX != RotationY. Don't know which one to return错误意思比较简单,就是X轴和Y轴的旋转角度不同,无法判断返回哪个。那么问题肯定出在控件的X/Y轴旋转角度配置上,一种情况是代码中更改导致,一种是Cocos...

2018-04-12 20:46:30 1680

原创 lua 函数参数传递

lua中,所有类型值都会直接复制传递,类似于java的传递机制,无C/C++中的引用表示。如果想达到函数内部修改的效果,可以通过传递"指针"来完成。这里的指针指的是表这样的数据结构:在传递表时,仅传递了一个记录该数据地址的变量,之后在函数体内对该变量内部元素进行操作时,可以影响原来传入的表。但是如果直接对该变量进行操作,是不会产生影响的。例如以下代码:操作表成员变量(外部传入的tableTemp的...

2018-02-11 15:08:07 8025

原创 lua 临时变量生存周期

目前客户端的开发是基于lua进行的,所以偶尔会遇到一些疑问,例如local变量的生存周期。如果在一个函数或者循环控制语句中定义了一个local变量,其生存周期比较明显,从函数中创建,函数结束后回收(循环同理)。或者在命令行中直接定义,此种定义方法中local变量的生存周期一直到该命令段结束为止。但在此之外还有一种定义方法:在一个文件内定义的local变量。虽然在lua中并不真实

2017-12-30 16:42:55 1872

原创 linux编译C++ 报错stray '\357' in program

在linux端编译so时,报了一个stray '\357' in program的错误。大概是两种可能:1.源文件中含有中文字符(注释不算)。2.源文件编码格式采用了UTF-8带BOM的格式。后来看了下的确是编码格式的问题,只要另存为其他编码格式重新编译即可。另外在windows端编译时并没有报错,可以编译通过。应该纯粹只是linux不接受UTF-8带BOM格式的编码。

2017-11-30 12:08:42 5027

原创 cocos2d-x 资源缓存清除

最近遇到的问题:在cocos2d-x中,根据不同类型的游戏设置了不同类型的搜索路径,希望以此区分调用的csb等资源。但实际运行时仍有图片资源显示错乱,根据反复测试观察,发现以下特征:1. 某几个游戏之间只存在小部分图片内容差异,其图片资源,包括相对路径都是一样的(即只是最外层文件夹命名不同)。2. 通过调试,发现设置的搜索路径仍是有效的,其调用的csb文件路径正常,但是csb中包含

2017-11-26 17:27:01 5055

原创 Linux下cmake相关

因为需要在linux环境下编写一个统一编译的shell脚本,看了一下cmake相关的东西。整个shell脚本中具体执行的流程:1.svn更新代码2.获取CMakeLists.txt文件3.cmake相关命令进行编译重点在CMakeLists.txt文件上,因为它的语法之前并没有接触过,所以还是要了解一下的。变量定义语法:SET( )举例:SET(INCLUDE ./

2017-10-18 18:13:32 454

原创 Linux常用命令备忘录

rm -rf XXXX(完整删除某个文件夹)unzip XXXX.zip(解压,但是要有对应库)mkdir XXXX(创建文件夹)mv XXXX1 XXXX2(把XXXX1移动到XXXX2中,也可以用作重命名)

2017-09-21 09:45:17 433

原创 C++ 封装文件操作类

暂时封装一个文件输出类,平时要用的时候方便一些 #include <stdio.h>#include <string>using namespace std;class fileopr{ string m_filepath; FILE *m_pFile;public: fileopr() { m_filepath = "d:\\te...

2017-09-10 18:22:09 3568

原创 vs.Net 2003 安装

现在vs.Net 2003安装一般都用本地镜像文件直接安装了,不过安装包挺多,搞起来有点麻烦。主要还是这七个文件:其中enar_cd1和enar_cd2、prereq三个是主体文件,library_cd1、library_cd2、library_cd3是安装帮助文档时使用的。全部解压到各自文件夹内之后,在enar_cd1中启动setup.exe程序,会出现如下的安装界面(不过博

2017-08-03 21:56:46 3739 2

原创 cocos开发环境配置

cocos开发环境配置:需要安装的软件为(以下的软件版本仅为博主安装时使用,并不一定需要该版本)1.cocos2d-x-3.3安装cocos2d-x-3.3前需要先安装一下python,博主安装的是python2.7.6。然后准备一下对应的ndk / sdk / ant文件,在安装时会使用到。在命令行模式(管理员)中跳转到cocos2d-x安装文件对应目录下,输入命令: pyt

2017-08-03 21:36:55 833

原创 c/c++ 文件相关操作

打开文件(fopen函数):包含头文件即可。使用比较简单方便,两个参数前者代表文件路径,后者代表打开方式('r'代表可读,'w'代表可写,‘b’代表二进制形式打开,'+'代表读写权限均有,可组合使用)。如果打开失败,返回的文件指针为空。只要含有'r'标志的打开方式,都会检测文件是否存在,若不存在则打开失败。如果是以'w'标志打开,当文件不存在时则进行新建。当然还有ifstrea

2017-07-05 16:11:28 809

原创 CAD异常eNotOpenForWrite

之前在实际工程中查一个软件崩溃的问题,具体调试到的位置是AcDbDatabase::saveAs函数,应该是将数据库保存回CAD图纸时触发了CAD的"eNotOpenForWrite"报错随后软件崩溃。根据以往的使用情况来看,saveAs函数一般不会导致CAD的报错,且在具体测试后,确定只有该工程中一张特定图纸打开时,调用功能会导致异常发生。其他图纸操作一切正常,包括在打开其他图纸的情况下,对该特

2017-06-30 14:52:33 6928

原创 关于字符编码ANSI、UNICODE、UTF-8等

字符编码一般是导致文件乱码的主要原因。每次记不太清楚这些各种各样的字符编码名称,现在还是整理一下。主要查阅资料来自于:Ansi,UTF8,Unicode,ASCII编码的区别总的来说,字符编码主要分这两大类:1.ANSI2.UNICODE其他大部分字符编码都能归并到这两类里面,但不是同级的。总结下网上查到的资料,说说由来:ASCII:一开始,大家用的都是ASCI

2017-06-23 18:26:01 699

原创 子类虚函数调用无效

这种情况出现的比较少,从工作到现在将近一年时间就遇到两次。主要表现为子类重载了父类的虚函数后,使用正常方法(即父类指针指向子类对象后调用该虚函数),结果调用的仍为父类的函数。一开始以为是指针指向有问题,或者虚函数的声明名称写错了这种小问题,但是检查后都是正确的。更详细的情况:基于cad的二次开发,实际上述的子类是某个继承于AcDbEntity类的自定义构件,在cad打开情况下,绘制一个

2017-06-02 09:36:39 1726

原创 OjbectArx cad非模态对话框无法获取焦点

相比起在普通的环境中建立一个非模态对话框,在cad中建立还是稍微麻烦一些的。主要还是焦点问题,在cad中的非模态对话框无法获取焦点——或者说刚拿到焦点就丢失了。处理方法:增加消息处理函数,处理cad平台的WM_ACAD_KEEPFOCUS消息。ON_MESSAGE(WM_ACAD_KEEPFOCUS, OnKeepFocus)//OnKeepFocus函数:直接返回TRUE即可

2017-05-15 16:57:33 1571

原创 eLockViolation异常处理方法

这个问题不太会遇到,因为一般对于文件的操作都是在窗口返回后进行,而不是直接在窗口的OnOK中处理掉。如果遇到了,说明你在非模态窗口中对文件进行了操作,相应的处理方法是在操作前将文档锁定。具体类似于这样:acDocManager->lockDocument(acDocManager->curDocument());//.....acDocManager->unlockDocument

2017-05-04 09:39:35 2125 1

原创 ObjectArx 窗体显示错乱

因为基于CAD平台来进行二次开发,所以一般在普通的环境中能正常运行的,你在CAD这边跑起来可能就比较奇怪。其中之一就是窗体显示。当你需要弹框显示一个新的窗体时,需要提前声明一个变量CAcModuleResourceOverride XXX来获取窗体的资源分配。否则可能会导致窗体显示出来一片混乱。类似于这样在窗体显示之前声明既可: CAcModuleResourceOverride

2017-04-11 14:35:48 574

原创 C++ 两个类相互引用

实际工程中两个类相互引用的情况还是比较多的,其中大致分为两种:1.同一项目下相互引用。2.不同项目间相互引用。情况1:只需要相互包含头文件就行了,但是要避免重复包含,用#pragma once或者#ifndef都可以。如果你编译时仍然发现存在类或者变量常量未定义,请检查ifndef中的宏是否与其他冲突,或者#include包含头文件的顺序存在问题。编译器在编译代码时会先把c

2017-03-29 16:09:37 3949

原创 CString转char*/wchar_t* 转 char*

因为程序中需要把CString转为char*来使用,没想到转换的套路挺深所以也顺便记录一下。一般来说普通的情况只需要这样就能转换: CString strFilepath = _T("d:\\新建文件夹"); char *pFilepath = strFilepath.GetBuffer(0);CString自身就有提供方法进行转换。但是如果你的工程设置的是Unicode字符

2017-03-24 11:31:11 2346

原创 .Net安装时发生严重错误

这个是同事解决的问题,咱顺便记录下。安装.Net的时候出现提示:遇到这种情况,可以尝试重新命名C盘下的两个文件:C:\Windows\System32\msvcr100_clr0400.dllC:\Windows\SysWOW64\msvcr100_clr0400.dll

2017-03-14 17:45:25 1260

原创 C++关键字 explicit

之前在项目中有看到过explicit关键字,不过不清楚是什么作用。网上大致查了一下。首先它仅限于描述构造函数,然后它的作用是避免隐式调用构造函数。什么时候会触发隐式调用呢?举个栗子://测试类Test class Test{public: Test() { m_iValueA = 0; m_iValueB = 0; } explic

2017-03-09 16:23:12 312

原创 sqlite查询区分大小写

虽然网上说sqlite的查询默认是区分大小写的。但有时它的确不区分大小写(可能我在用假的sqlite)。那就甭管它了,用 PRAGMA case_sensitive_like =0;来解决这个问题吧。当设置值为0时查询大小写不敏感当设置值为1时查询大小写敏感问题解决可喜可贺可喜可贺。方法来源:http://www.cnblogs.com/DaLiao/p/622

2017-02-28 16:54:37 1555

空空如也

空空如也

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

TA关注的人

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