加载中…
个人资料
GangGang
GangGang
  • 博客等级:
  • 博客积分:0
  • 博客访问:131,781
  • 关注人气:8
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
访客
加载中…
好友
加载中…
评论
加载中…
留言
加载中…
博文
(2016-01-21 20:29)
分类: 计算机技巧

printf()和fprintf()这些输出函数的参数是可变的,在调试程序时,你可能希望定义自己的参数可变的输出函数,

那么可变参数宏会是一个选择。

C99中规定宏可以像函数一样带有可变参数,比如


阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2016-01-21 11:40)
分类: 计算机技巧
  1. #define BACKTRACE(LEVEL, cond, _fmt_, args...) \  
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

转载

分类: Linux
详细说明来源于一个台湾的网站http://www.suse.url.tw/redhat/SELinux.htm
下面总结一些重点。
以vsftp为例,一定要牢记type是什么类型。所对应的sebool是什么规则,一般的话都是allow_xxx_anon_write 这个xxx可替换为fpt的守护进程ftpd以及samba的守护进程smbd
要修改不同的权限先查看该目录
阅读  ┆ 评论  ┆ 转载原文 ┆ 收藏 
(2015-07-19 22:41)
分类: Linux

csdn有一些关于socket粘包,socket缓冲区设置的问题

一两个简单概念长连接与短连接:
1.长连接

    Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。

2.短连接

    Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点 
通讯,比如多个Client连接一个Server.

二 什么时候需要考虑粘包问题?

1:如果利用tcp每次发送数据,就与对方建立连接,然后双方发送完一段数据后,就关闭连接,这样就不会出现粘包问题(因为只有一种包结构,类似于http协议)。关闭连接主要要双方都发送close连接(参考tcp关闭协议)。如:A需要发送一段字符串给B,那么A与B建立连接,然后发送双方都默认好的协议字符如'hello give me sth abour yourself',然后B收到报文后,就将缓冲区数据接收,然后关闭连接,这样粘包问题不用考虑到,因为大家都知
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
分类: Linux
Client端代码如下:

  
#include  // sockaddr_in 
#include  // socket 
#include  // socket 
#include    // printf 
#include    // exit 
#include    // bzero 
  
#define SERVER_PORT 8000 
#define BUFFER_SIZE 1024 
#define FILE_NAME_MAX_SIZE 512 
  
int main() 
  // 声明并初始化一个客户端的socket地址结构 
  struct sockaddr_in client_addr; 
  bzero(&client_addr, sizeof(client_addr)); 
  client_addr.sin_family = AF_INET; 
  client_addr.sin_addr.s_addr = htons(INADDR_ANY); 
  client_addr.sin_port = htons(0); 
  
  // 创建soc
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2015-07-12 14:43)
分类: Linux

1.修改yum源,保存yum下载rpm包
rpm -aq|grep yum|xargs rpm -e --nodeps 
卸载原来的yum

http://mirrors.163.com/centos/6.6/os/x86_64/Packages/

wget http://mirrors.163.com/centos/6.6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm
wget http://mirrors.163.com/centos/6.6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm 
wget http://mirrors.163.com/centos/6.6/os/x86_64/Packages/yum-3.2.29-60.el6.centos.noarch.rpm
wget http://mirrors.163.com/centos/6.6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-30.el6.noarch.rpm

rpm -ivh 上面四个安装包,安装yum


cd /etc/yum.repos.d/
# wget  http://mirrors.163.com/.help/CentOS6-Base-163.repo
# vi CentOS6-Base-163.repo
  编辑文件,把文件里面的$releasever全部替换为版本
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2015-07-11 22:39)
标签:

股票

症状:主要表现在Win7中用VM11安装的Ubuntu14.04中,安装完自带的VMware Tools之后,/mnt/hgfs 中没有前面已经设置好的共享文件夹。

仔细查看了安装过程,发现在编译vmhgfs/module.o的时候出现了错误。国内网站上也很少有关于这类问题的说明,查到一篇文章[链接]有说明在win8下使用vmware11和ubuntu14.10的,也没能解决我的问题。

具体的解决方法是参考一篇英语网文[链接],步骤记录如下:

安装 open-vm-tools 
这可能是在客户机里实现VMware Tools功能的最简单的办法。

apt-get install open-vm-toolbox
1
下面的是另外一种解决方法,经验证有效,且疗效较好。

安装VMware Tools 
通过uname -r发现我当前的内核版本是3.13.0-52,使用的vmware tool是版本是9.9.2-2496486。在编译vmware tools过程中会出现一些警告和错误,下面需要对 vmware tools做一些打补丁的操作以完成安装。

cd ~
apt-get install git gcc m
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2015-05-20 16:44)
分类: Linux
新内核中删除了lock_kernel unlock_kernel
使用以下方式替代usb锁

参考你要移植到的linux源码里的写法 例如2.6.12里搜 usb_disconnect

void usb_disconnect(struct usb_device **pdev)
{
struct usb_device       *udev *pdev;

...
usb_lock_device(udev);
...
usb_unlock_device(udev);
...
}
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2015-04-22 16:34)
标签:

qt

oracle

qoci

分类: Qt
1.windows下编译QOCI驱动
http://blog.sina.com.cn/s/blog_615e7b3f0102v1ph.html
2.linux下编译QOCI驱动
http://dbua.iteye.com/blog/1155157

3.qt连接oracle示例代码
int initdatabase(
        QString hostname,int port,
        QString databasename,
        QString username,QString password )
{
 
    db =new QSqlDatabase( QSqlDatabase::addDatabase('QOCI','mydb'));
    db->setHostName(hostname);
    db->setPort(port);
    db->setDatabaseName(databasename);
    db->setUserName(username);
    db->setPassword(password);
    if (db->open())
    {
        qDebug()<<'database open success.';
&n
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

dcmtk

lut

分类: 医学协议
参考:http://blog.sina.com.cn/s/blog_4bce5f4b0100o6cb.html


int getLUTdirect(Uint16* src_data16, long int srcsize, double window_center, double window_width, Uint8* dst_data8)
{
    if(src_data16 == NULL || dst_data8 == NULL)
    {
        std::cout<< 'convert LUT error! src or dest is NULL';
        return -1;
    }
    double dFactor, min, max;
    int nPixelVal, hounsfield;
    min = (2.0*window_center - window_width)/2.0 + 0.5;
    max = (2.0*window_center + window_width)/2.0 + 0.5;
    dFactor = 255.0 / (double)(max-min);
    for(int i=0; i
    {
        hounsfield = src_data16[i] *1.0 -1024 ;
    
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有