- 博客(84)
- 资源 (1)
- 收藏
- 关注
原创 rpmbuild之check-rpaths的问题
'[' '%{buildarch}' = noarch ']'+ QA_CHECK_RPATHS=1+ case "${QA_CHECK_RPATHS:-}" in+ /usr/lib/rpm/check-rpaths********************************************************************************* WAR
2016-08-29 17:26:31
7118
3
原创 PATH环境变量
PATH环境变量:定义的是系统搜索命令的路径。#echo $PATH/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin如希望在终端直接输入所开发程序的名称回车启动,可把程序直接拷贝到$PATH路径下的任意一个即可。
2016-01-31 15:42:34
467
原创 火狐浏览器插件
一个插件的生命周期,完全取决于调用他的网页。所有的插件特有的函数都有“NPP”前缀,所有的浏览器特有的函数都有“NPN”前缀。还有一组函数(如NP_Initialize和NP_shutdown)是直接库入口,和任何特定的插件实例无关。当用户离开实例的页面或关闭了这个窗体,则这个插件的实例被删除;调用NPP_Destroy函数来确保插件实例被删除。当最后一个插件实例被删除后,插件的代码会
2016-01-21 15:04:24
717
转载 linux系统中的root超级权限的控制
linux系统中的root超级权限控制root用户:对任何文件、目录或进程进行操作;但值得注意的是这种操作是在系统最高许可范围内的操作;有些操作就是具有超级权限的root也无法完成;比如/proc 目录,/proc 是用来反应系统运行的实时状态信息的,因此即便是root也无能为力;
2016-01-05 16:34:01
618
原创 QFileDialog添加控件
m_pBtn = new QPushButton(QObject::tr("设置"), this); m_pBtn->setParent(this); // QDialogButtonBox *pBtnBox = findChild(); pBtnBox->addButton((QAbstractButton*)m_pBtn, QDialogButtonBox::
2015-11-17 18:24:24
1997
原创 句柄类
句柄类,也就是handle class,是C++中的一种重要的面向对象方法,其作用有两条:1. 减少头文件的编译依赖关系,让文件间的编译更加独立;2. 增加系统安全性,把类的实现细节和声明完全的分离开,让类的实现细节对于用户完全的不可见,增加信息的安全性。 在一些大型的系统中,编译源文件的代价往往非常大,特别是一些核心文件,往往很小的代码改动就能引起整个系统的重新编译,由于系统存在诸多的包
2015-11-03 10:28:30
471
原创 QMatrix实践
m11m120m21m220dxdy1x' = m11*x + m21*y + dxy' = m22*y + m12*x + dydx与dy水平与垂直移动(translating);m11与m22水平与垂直缩放(scaling);m12与m21垂直与水平扭曲(shearing)。注:如缩放,
2015-10-21 13:33:49
2104
转载 placement new的用法及用途
http://www.cppblog.com/kongque/archive/2010/02/20/108093.html
2015-10-18 21:18:16
389
原创 Font Style
normal:文本字体样式为正常的字体。italic:文本字体样式为斜体。这是一个属性。但不是所有的文字都有这个属性。oblique:指定文本字体样式为倾斜的字体。(对于没有斜体变量的特殊字体,将应用oblique)如果希望设置所有文字为斜体,则可通过设置oblique来完成。
2015-09-18 12:59:37
601
原创 查看linux操作系统位数命令
1.getconf LONG_BIT命令,返回是32就是32位系统,返回64就是64位系统;2.uname -a命令,返回结果有x86_64就是64位系统,否则就是32位系统。
2015-09-09 10:16:32
649
原创 程序员的自我修养笔记之简介(一)
一.编译,静态链接到操作系统如何装载程序,动态链接及运行库和标准库的实现應用程序接口(Application Programming Interface)的提供者是运行库,什么样的运行库提供什么样的API,比如Linux下的Glibc库提供POSIX的API;Windows的运行库提供Windows API;当成熟的操作系统出现以后,硬件逐渐被抽象成了一系列概念。在unix中,硬件设备
2015-09-02 12:09:20
495
原创 读程序员的自我修养应该弄懂的问题
普通C/C++程序如何被编译成目标文件及程序在目标文件中如何存储;目标文件如何被链接器链接到一起,并形成可执行文件;目标文件在链接时符号处理,重定向和地址分配如何进行;可执行文件如何被装载并运行;可执行文件与进程的虚拟空间之间如何映射;什么是动态链接,为什么要动态链接;win和linux如何进行动态链接及动态链接时的相关问题;
2015-08-27 13:32:14
355
原创 linux下安装包打包依赖库所走的弯路
鉴于之前并没有比较熟练的制作安装包的经验,一直走在摸索的路上,如果看过我之前写过关于制作二进制安装包和rpm安装包的小盆友们,会发现之前写的blog,也是漏洞百出,不慎完美。在这条摸索的路上,公司没有相应经验的师傅,一路走来,走了不少弯路,也给公司实施人员附加了不少工作量(因安装包,原只是在gnome平台上制作的,紧接着又在kde等平台上运行)。其中困惑最近的也就是库冲突问题。下面简单介绍下背景,
2015-08-26 15:19:45
4877
1
原创 关闭窗口后对父窗口的控制
bool LanguageChooser::eventFilter(QObject *object, QEvent *event){ if (event->type() == QEvent::Close) { MainWindow *window = qobject_cast(object); if (window) { QChec
2015-08-05 16:45:08
419
原创 QTreeWidget实现元素拖拽移动,并绘制插入点
#include "ctreewidget.h"#include #include #define BM_ICON_WIDTH 22CTreeWidget::CTreeWidget(QWidget *parent) : QTreeWidget(parent),m_child(true),m_newLine(QLine()), m_oldLine(QLine()){ t
2015-06-12 11:34:22
17987
7
原创 linux文件是否被当前进程外的其他进程打开
lsof命令的用法QProcess 调用shell命令,并获取标准输出内容: QString pPath = "/tmp/1.txt"; QProcess commandProcess; commandProcess.start("lsof", QStringList(pPath)); commandProcess.waitForStarted();
2015-06-08 16:03:25
1454
原创 windows判断某文件是否被已被占用
CString pPath("D:/1.txt");if(_waccess(pPath, 0)==0){ HANDLE Handle = CreateFile(pPath, GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(INVALID_HANDLE_VALUE ==
2015-06-08 15:25:36
1254
原创 字符串替换及追加
#替换,将“;hello.desktop;”替换为“;”#sed 's/;hello.desktop;/;/g' test>hello.tmpout#mv hello.tmpout test #追加,将包含“hello”的所有行后追加“this is a example”的新行#sed '/hello/a\this is a example' test#
2015-05-24 22:29:06
441
原创 Linux开始菜单,右键菜单添加
~/.local/share/applications/usr/share/applications 这两个分别是局部的desktop项和全局的desktop项 /usr/share/applications/mimeinfo.cache~/.local/share/applications/mimeinfo.cache 这两个分别是全局的和局部的打开方式缓存 全局的
2015-05-24 22:24:03
4201
原创 raw字符串与多行字符串
raw字符串:r'...',如下:r'\(~_~)/ \(~_~)/'适用:如果一个字符串很多需要转义的字符,对每一个字符都进行转义会很麻烦,就可以用raw字符串,里面的字符就不需要转义了。raw字符串表示法不能表示多行字符串,也不能表示包含'和"的字符串。如果要表示多行字符串,可以用'''...'''表示'''Line 1Line 2Line 3'''和'Line 1\n
2015-05-24 17:19:13
3130
原创 python初识
Python适合的领域: Web网站和各种网络服务 系统工具和脚本 作为“胶水”语言把其他语言开发的模块包装起来方便使用不适合的领域贴近硬件的代码(首选C)移动开发:ios/Android有各自的开发语言(ObjC,Swift/Java)游戏开发:C/C++ Python源码不能加密 Pyth
2015-05-24 17:05:12
399
转载 Linux LD_LIBRARY_PATH
1. 历史背景现如今、软件大多自带共享库、或者出于安全、或者基于商业考量。ld.so:共享库加载器2. 意义Linux环境变量名,指定查找共享库(动态链接库)时除了默认路径之外的其他路径。(该路径在默认路径之前查找)。3. 剖析.so文件的管理和加载由ld.so负责、在标准路径/lib 或 /usr/lib 里查找APP所需的.so、但对于非标路径:Linux
2015-05-18 16:15:38
525
原创 dir2xml
void FileList2XML::on_generateXml_clicked(){ QDir pDir(ui->DirPath->text()); m_doc = QDomDocument(pDir.dirName()); QDomElement root = m_doc.createElement(QObject::tr("%1").arg(pDir.di
2015-05-17 20:38:14
454
原创 成长记录脚印
简单化:治疗对未来焦虑的良药,就在今天你自己的努力。好的设计应该反映问题本身的要求,不必为了刻意追求“满足将来的需要”而添加不必要的特性。需求分析。各取所需(目光,角度):横看成岭侧成峰,远近高低各不同。思想:统观全局,化繁为简,切勿目光局限。成长记录脚印,追求人生顶峰。人无完人,错误总是难免的。技术仅仅是一个工具,是我们在编程的道路上前
2015-05-16 17:20:43
505
原创 内存池实现示例
1.模板类定义(使用了模板以适应不同对象的内存需求,内存池中的内存块则是以基于链表的结构进行组织)#include #include #include #include template class MemPool{public: static void *operator new(size_t allocLen) { assert(si
2015-02-28 14:48:17
455
原创 QT全局宏变量的实现
qt中如何实现定义一个宏,在整个工程中都可以实现呢?下面我来写一个亲测的例子:pro中添加如下宏定义代码:DEFINES += HELLO=\\\"$$PWD/\\\"DEFINES += SUCCESS=\\\"string\\\"在.cpp中测试代码如下:#ifdef HELLO qDebug()<<"HELLO="<<HELLO;#else q
2015-02-28 11:36:53
6354
2
翻译 shell脚本之重定向与管道(三)
I/O重定向:通过与终端交互,或是在Shell脚本里设置,重新安排从哪里输入或输出到哪里。1.以 2.以 > 改变标准输出>重定向符(redirector)在目的文件不存在时,会新建一个。如目的文件已存在,覆盖;原本的数据都会丢失;3.以 >> 附加到文件>>目的文件不存在时,新建;存在,不覆盖,将程序所产生的数据附加到文件结尾处。4.以 | 建立管道program
2015-01-25 16:20:01
1450
翻译 shell脚本之初识(二)
1.变量:为某个信息片段所起的名字;每个变量都有一个值(value),变量值可以是(而且通常是))空值,即null,也就是不含任何字符;变量赋值的方式为:先写变量名称,紧接着“=”字符,最后是新值,中间完全没有任何空格。当想取出shell变量的值时,需要在变量名称前加上$字符,当所赋予的值内含空格时,请加上引号。例:单行可进行多次赋值(用空格隔开):first=hello seco
2015-01-25 14:18:56
385
翻译 shell脚本之简介篇(一)
Shell脚本试用领域1. 系统管理工具2. 结合现有的程序以完成小型的、特定的工作脚本(scripting)语言,编译型(complied)语言脚本编程语言的例子:awk,Perl,Python,Rubby,Shell。编译型语言(Fortran,Ada,Pascal,C,C++,Java):只要从源代码(source code)转换成(object
2015-01-25 13:30:55
498
原创 QPrinter和QPrintDialog的使用举例
#ifndef QT_NO_PRINTER QPrinter printer(QPrinter::HighResolution); qDebug()true "PDF-XChange 4.0" QPrintDialog dialog(&printer, this); if (dialog.exec()) { qDebug()true "PDF-XC
2015-01-15 22:33:21
7339
原创 linux下二进制安装包的创建
一个合格的产品必须要有一个像样的安装包,每次拷来拷去显得太不上档次,哈哈。。。也不便于用户使用。闲话不多扯,直奔主题,看过来吧,程序猿(媛)们:本文主要介绍二进制安装包的创建和使用:1.首先介绍二进制安装包的结构:1)最终生成的二进制安装包的名称为:Project.run2)用于生成安装包的准备文件结构如下:./mkinst.sh./inst.sh./Proje
2015-01-15 22:02:01
1449
原创 tail:无法打开“+54”读取数据:没有那个文件或目录
解决办法:脚本文件中tail语句少加一个选项“-n”完整语句为:lines=54tail -n+$lines $0>/tmp/Cache/software.tar.gz
2015-01-13 17:01:48
2409
转载 深入理解计算机系统(一、计算机系统漫游)
中央处理单元(CPU),简称处理器,是解释(或执行)存储在主存中指令的引擎。处理器的核心是一个字长的存储设备(或寄存器),成为程序计数器(PC)。在任何时刻,PC都指向主存中的某条机器语言指令(即含有该条指令的地址)。从系统通电开始,直到系统断电,处理器一直在不断的执行程序计数器指向的指令,再更新程序计数器,使其指向下一条指令。操作是围绕着主存、寄存器文件和算术/逻辑单元(ALU)进行的。
2014-12-10 00:10:12
488
转载 函数调用规约(__stdcall 和 __cdecl 的区别浅析)
在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。在参数传递中,有两个很重要的问题必须得到明确说明:当参数个数多于一个时,按照什么顺序把参数压入堆栈函数调用后,由谁来把堆栈恢复原装。在高级语言中,
2014-12-04 14:56:01
2600
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人