- 博客(32)
- 收藏
- 关注

原创 linux 进程间信号量管理程序之sem_timedwait使用
在开发过程中,有三个独立运行的程序模块,三个模块都对sqlite数据库进行读写操作。sqlite在linux共享性较差,所以需要加入互斥信号量解决三个模块访问数据库该问题。另外,在加入信号量后,信号量sem初始化为1,如果三个模块任意一个在读或写数据库时ctrl+c掉(调试过程需要),有时会造成信号量sem保持sem_wait后的值,也就是为0;这就造成了死锁。
2014-06-18 14:18:43
17396

原创 Qtreewidget遍历添加指定目录下所有文件
通过递归遍历添加子项到treewidget中,测试代码已通过,举例为遍历添加/home/XXX下所有文件。解析和详细代码如下: 1.首先在main函数中创建目录根项。 QString rootpath="/home/XXX"; QTreeWidgetItem* root = new QTreeWidgetItem(QStringList() r
2014-03-28 10:14:32
11270
3

原创 将QT右键弹出菜单选项设为不可用(灰色)
突然接触到QT开发,在设计界面时,treewidget右键菜单已经设计好,不可改动,且菜单子项需将部分右键选项设为不可用。百般设计后,终于发现QT已封装好,实现过程如下: QAction *clinkAction = new QAction(ui->treeWidget_2);clinkAction->setText("连接");cmenu->addAction(clinkActi
2014-03-28 09:44:30
20705

原创 动态库(.so)函数调用
最近刚刚换工作,第一次接触到要从.so动态库文件里调用函数。目前只得到.so库文件和封装的各类函数接口。在网上搜了一些,然后根据自己的代码做了整理。首先,理解动态库,Linux中的.so文件类似于Windows中的DLL,是动态链接库。当多个程序使用同一个动态链接库时,既能节约可执行文件的大小,也能减少运行时的内存占用。具体的如何编译生成.so可以参照linux下gcc命令。具体在调用
2014-03-27 11:01:18
7807

原创 服务器JAVA性能测试——SPECjbb2005
首先是关于SPECjbb2005的一些介绍,google一下有很多,简单概述为: SPECjbb2005(Java Business Benchmark)基准测试模拟一个三层架构环境来进行JAVA 应用服务器测试, 目的是衡量应用服务器端JAVA 应用之性能。正规SPECjbb2005 测试结果发布必须提供bops 值, 即每秒钟完成多少笔JAVA 业务操作(Business Opera
2013-07-03 13:38:37
17382
原创 sqlite3之sqlite3_busy_handler使用详解
程序运行过程中,如果有其他进程或者线程在读写数据库,那么sqlite3_busy_handler会不断调用回调函数,直到其他进程或者线程释放锁。获得锁之后,不会再调用回调函数,从而向下执行,进行数据库select操作。该函数是在获取不到锁的时候,以执行回调函数的次数来进行延迟,等待其他进程或者线程操作数据库结束,从而获得锁操作数据库。
2014-07-02 10:21:20
13489
转载 linux下杀死进程(kill)的N种方法
常规篇: 首先,用ps查看进程,方法如下:$ ps -ef……smx 1822 1 0 11:38 ? 00:00:49 gnome-terminalsmx 1823 1822 0 11:38 ? 00:00:00 gnome-pty-helpersmx 1824 1822 0
2014-05-13 14:09:12
10641
原创 linux根据进程名查询是否正在运行
查询当前运行进程中是否有指定进程有多种方式,下面介绍一种通过进程名获取进程号,以此来确认该进程是否在运行。如下实例,查询当前运行进程中是否有test进程在运行。 char buf[200]={0}; system("ps -A | awk '/test/{print $1}'>result"); FILE *fd; fd=popen
2014-05-12 09:52:03
6214
转载 vim配置
Vim很好很完美是公认的了,但是对新手来说,上手毕竟不是很容易。Windows下程序员很多都很喜欢Source Insight这个工具来看代码,各种语法高亮看着很舒服。vim作为为程序员打造的编辑器,没有道理不可以通过配置让程序员舒服地编辑代码,但是新手通常很难将其配置成顺手顺眼的环境。下面的方法可以通过极其简单的方式把vim配置得跟Source Insight一样炫首先需要确定使用的
2014-05-12 09:40:46
659
原创 linux编程C/C++如何自动打开一个终端并且运行新程序
做linux开发过程中,需要在某个程序运行到特定过程中打开一个新的终端界面,运行一个新的程序,具体的实现过程非常简单。
2014-05-12 09:28:14
18147
转载 linux共享库实现互斥(Sqlite3)
linux共享库实现互斥概述Sqlite3数据库互斥是基于文件的,即一个数据库文件中如果包含多张表T1、T2...Tn,当有进程对其中的表Tx进行写操作时,其余试图读写Tn的操作都会立即返回IS_LOCK,导致写数据库失败。因此,Sqlite3经常用于嵌入式开发中对并发要求不高的场景。悲剧的是现有的系统用的是Sqlite3,但却要求较高的并发度。于是一个选择被提
2014-05-12 09:18:20
2931
转载 回车、换行、空格的ASCII码值—(附ASCII码表)
回车、换行、空格的ASCII码值回车,ASCII码13换行,ASCII码10空格,ASCII码32Return = CR = 13 = '\x0d'NewLine = LF = 10 = '\x0a'ASCII码表信 息在计算机上是用二进制表示的,这种表示法让人理解就很困难。因此计算机上都配
2014-04-17 09:16:14
1874
转载 C语言---整型字符串转换
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转 换为字符串的一个例子: # include # include void main (void) { int num = 100; char str[25]; itoa(num, str
2014-04-15 09:37:03
1038
转载 函数指针&回调函数&linux中的signal函数
1. int (*func)();函数指针,指向的函数为空参数,返回整型;2.回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给被调用者从而实现调用。回调函数是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。 void f();// 函数原型上
2014-04-15 09:33:58
1022
转载 QTreeWidget的简单使用
QTreeWidget是一种树形的部件,它以树的形式显示各个项,它的每个项使用QTreeWidgetItem来表示。QTreeWidgetItem的值的表示都是用QStringList来表示的。简单的说明一下:代码:[cpp] view plaincopyprint?#include #include
2014-04-15 09:20:13
2300
转载 QT/C++中extern "C"的作用
extern "C"的作用extern "C"的作用(一) 前些天,编程序是用到了很久以前写的C程序,想把里面的函数利用起来,连接发现出现了找不到具体函数的错误: 以下是假设旧的C程序库 C的头文件 [cpp] view plaincopy/*-----------c.h--------------*/ #ifnd
2014-04-15 09:13:17
1474
转载 socket编程实例(源码)
本实例使用面向连接协议的客户/服务器模式,其流程如图2.3所示: 图2.3 面向连接的应用程序流程图 服务器方程序: 客户方程序: #include #include #define DATA “half a league, half a league ...” main(argc, argv) int argc; char *argv[ ]; {
2014-04-15 09:02:56
885
转载 QT Creator中调用动态库文件例程
在linux中,qt里面已经集成了最新的开发平台QT Creator,下面是我练习调用动态库(.so文件)的例程: 1、打开QT Creator,点击File-》New...菜单,选择C++ Libarary工程,点击下一步,输入工程名称(本例为zsz)即可,这没什么可说的。 工程文件(.pro)程序清单 # -----------------------------------
2014-04-15 08:58:59
2499
转载 QT 的信号与槽机制介绍
QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT 库的基础之上。QT 支持下列平台:MS/WINDOWS-95、98、NT 和 2000;UNIX/X11-Linux、Sun Solaris、HP-UX、Digital Unix、IBM AIX
2014-04-10 08:52:54
520
转载 网络包几种格式struct ethhdr、ether_header、iphdr、tcphdr、udphdr
************************eth的结构**************************************struct ethhdr {unsigned char h_dest[ETH_ALEN];unsigned char h_source[ETH_ALEN];__be16 h_proto;} __attribute__((packed));
2014-04-09 09:39:27
13834
1
转载 编译器问题,error: 'for' loop initial declarations are only allowed in C99 mode
使用gcc编译代码是报出error: 'for' loop initial declarations are only allowed in C99 modenote: use option -std=c99 or -std=gnu99 to compile your code错误,这是因为在gcc中直接在for循环中初始化了增量:[cpp] view pl
2014-04-09 09:36:31
16780
原创 QTableWidgetitem只写入数字
ui->TableWidget->item(row,column)->setText(QStri
2014-04-04 12:03:20
10956
2
转载 怎样把QString转换为char *或者相反
这个问题其实也属于老生常谈了。也有不少朋友聊过。我这里把它总结一下吧。1.从QString转换为char *要实现把一个QString转换为char *,一般遵循这样的步骤:第一步,对该QString对象调用QString的toLatin1()方法,以获得该字符串的latin1值。注意toLatin1()的原型如下:QByteArray QString::t
2014-04-02 11:18:35
1300
原创 QT定义预编译器
QT编写过程中遇到类似代码,实际编译过程中,如果缺少MMS_LITE,则会报缺少相应的头文件。需要自己定义编译器MMS_LITE,在VC6.0中添加比较容易,直接在工程选项中操作即可。 #ifndef MMS_LITE#include "gen_333.h"#include "mem_3332.h"#include "mms_1111.h"#include "mms_455
2014-04-02 11:07:50
5399
原创 Ubuntu设置root用户ssh登陆
在使用虚拟机过程中,因为时常要切换到win7下调试,所以比较麻烦。所以最近尝试在win下用SSH Secure Shell Client登陆虚拟机,为了避免反复的su切换到root,所以希望以root用户登陆。1.首先win7安装SSH Secure Shell Client,Ubuntu下也使用apt-get安装openssh-server。2.将 /etc/ssh/sshd_confg
2014-03-28 15:25:00
12209
原创 Qtreewidget点击子item获得绝对路径
在对QTreewidget编写过程中,需要用到相应子item的路径,便于后续对该item文件的访问。首先,需要建立一个connect(ui->treeWidget_2,SIGNAL(itemClicked(QTreeWidgetItem*,int)), this,SLOT(checkself(QTreeWidgetItem* ,int)));当点击到该item时,自动执行SLOT内函数,获取文
2014-03-28 14:44:12
8502
转载 内核中基于netfilter的编译选项
转载地址:http://www.uddtm.com/server/iptables/146.html 在内核配置文件中要启用一些较要的选项包括Netfilter连接跟踪、日志记录和包过滤。iptables 是通过使用由Netfilter提供的内核中的框架来建立一个策略的。 对于2.6系列的内核来说,大多数的Netfilter编译选项都位于Networking--
2013-08-26 15:58:38
6221
原创 linux iptables启动问题
近期在公司需要在板子上启动iptables,具体什么板子就不说了,涉及到公司内部产品。不过google出来的修改方式都大同小异,再次做下整理,便于以后使用。 首先是奇葩的报错信息: can't initialize iptables table `filter': iptables who? (do you need to insmod?) Perhaps iptab
2013-08-26 15:54:56
6074
转载 linux/tcp.h编译g++报错
最近在写程序中,偶尔发现加入linux/tcp.h的话,会导致g++编译报错,实在费解。之后,在网上搜到一个解决补丁。diff --git a/include/linux/tcp.h b/include/linux/tcp.hindex 4c5b632..5f359db 100644--- a/include/linux/tcp.h+++ b/include/linux/tcp.h
2013-07-16 15:25:01
2117
原创 linux下编译执行.java
对于第一次在linux非图形界面环境下,编写和执行java代码,除了安装gtk的需要外,今天做测试的时候犯了一个很低级的错误而导致运行有问题。 对于配置java的环境变量在这就不写了,网络上资源很多。具体执行的时候如图 javac编译HelloWorld后生成Helloworld.class,而执行的时候必须执行为 java HelloWorld,如果写为ja
2013-02-25 15:30:02
4832
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人