多线程下redis的疑问,请大神指导 附源码

public class JedisConfig
{
//redis池
private static JedisPool jedisPool = null;

//redis服务器的ip
private static final String HOST = "127.0.0.1";

//端口
private static final int PORT = 6379;

//可用连接实例的最大数目
private static final int MAX_ACTIVE = 1024;

//控制一个pool最多有多少个状态为空闲的jedis实例
private static final int MAX_IDLE = 200;

//jedis池没有对象返回时,最大等待时间
private static final int MAX_WAIT = 10000;

//超时时间
private static final int TIMEOUT = 10000;

//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
private static boolean TEST_ON_BORROW = true;

private static JedisConfig instance = null;

/**
 * 初始化jedisPool
 */
private void initJedisPool()
{
    JedisPoolConfig config = new JedisPoolConfig();
    config.setMaxTotal(MAX_ACTIVE);
    config.setMaxIdle(MAX_IDLE);
    config.setMaxWaitMillis(MAX_WAIT);
    config.setTestOnBorrow(TEST_ON_BORROW);
    jedisPool = new JedisPool(config, HOST, PORT, TIMEOUT);
}

public synchronized Jedis getJedis()
{
    Jedis jedis = null;
    if (jedisPool != null)
    {
        jedis = jedisPool.getResource();
    }
    return jedis;
}

/**
 * 如果jedis为空,则进行初始化
 */
private JedisConfig()
{
    if (jedisPool == null)
    {
        initJedisPool();
    }
}

/**
 * 释放jedis资源
 * @param jedis
 */
public synchronized void returnResource(Jedis jedis) 
{
    if (jedis != null) 
    {
        jedis.close();
    }
}
/**
 * 
 * 单例获取JedisConfig实例
 * 
 * @return 返回当前的jedis实例
 */
public static JedisConfig getInstance()
{
    if (instance == null)
    {
        synchronized (JedisConfig.class)
        {
            if (instance == null)
            {
                instance = new JedisConfig();
            }
        }

    }
    return instance;
}

}

上面是我的jedispool和jedis的初始化代码,下面附上我的调用代码
public class JedisManage
{
/**
* 获取redis实例
*/
private static Jedis jedis = JedisConfig.getInstance().getJedis();

/**
 * 存储图片流信息
 * 
 * @param key key
 * @param fileId 字段值
 * @param value  存储值
 */
public static void setImageInfoToRedis(String key,String fileId,String value)
{

    synchronized (jedis)
    {
        jedis.hset(key, fileId, value);
    }
}
      /**
 * 获取图片信息
 * 
 * 
 * @param key 
 * @param fileId
 * @return
 */
public static String  getImageInfo(String key,String fileId)
{
    return jedis.hget(key, fileId);
}

}

项目整个背景是前台每一次请求都会加载一个小图片,所以我想使用redis缓存图片,如果下次请求是同一个我就直接从redis中读取,由于前台的请求非常频发,一秒钟大概有400次,这样的情况下程序异常退出,不知道是自己代码写的有问题还是,求大神指导!!!!
程序在多线程环境下,异常退出,分析后发现是redis的问题,因为要是不适用redis的缓存就是好的。

1个回答

用redis缓存静态文件没有必要吧,缓存一个需要一定计算时间才能得出的结果才有意义,一般web容器对于静态文件都有自己的缓存策略的

wb_snail
wb_snail 回复盛开的雪莲花: 可以把错误日志贴出来么,大家一起看看
接近 2 年之前 回复
lwx314781
盛开的雪莲花 我这个就是缓存JNI返回的图片信息,是通过JNI计算的
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
springboot 整合 redis(附源码)
这编博客主要介绍了springboot整合redis(以注解的形式)。 一、引入redis依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> ...
Redis入门实战(附源码)
Redis入门实战(附源码)近期由于需要对Redis进行改造,所以顺便学习了下Redis。这篇文章是自己学习Redis写的小实例,简单易懂,超适合入门。 在网上看了很多Redis的入门文章,要么写的太深入,要么写的Level太高。总之,没有找到真正适合初学者的Redis入门文章。 在此之前,对Redis有必要清楚以下问题: Redis是什么? Redis解决了什么问题? Redis的优势? 如何
SQL多表查询,请大神指导。
[img=https://img-bbs.csdn.net/upload/201412/09/1418132104_541547.png][/img]rn
SQL单表查询,请大神指导。
数据表,动态增加 需要得到的动态结果表,行列均需排序,行按照A,B,C…A1,A2,A3,…B1,B2,B3…,C1,C2,C3…列按照甲,乙,丙,丁… rnT1 T2 T3 T4 A B C A1 A2 A3 B1 B2 B3 C1 C2 C3rn乙 2001C1 C1 2016/3/18 甲 2 2 1 1 rn乙 2001B B 2016/3/18 乙 1 2 1 1 2 rn甲 1001A A 2016/3/18 丙 1 2 1 1 2 1rn丙 3001C3 C3 2016/3/18 丁 1 1 1 1 1 1rn丁 4001B2 B2 2016/3/18 rn丙 5001A2 A2 2016/3/18 rn甲 1001C1 C1 2016/3/18 rn乙 2001A1 A1 2016/3/18 rn丁 4001C2 C2 2016/3/18 rn丙 3001B1 B1 2016/3/18 rn甲 1001A1 A1 2016/3/18 rn丙 3001C1 C1 2016/3/18 rn丁 4001B B 2016/3/18 rn丙 5001A3 A3 2016/3/18 rn甲 1001C C 2016/3/18 rn乙 2001A1 A1 2016/3/18 rn丁 4001C3 C3 2016/3/18 rn丙 3001B B 2016/3/18 rn乙 2001C1 C1 2016/3/18 rn乙 2001B2 B2 2016/3/18 rn甲 1001A A 2016/3/18 rn丙 3001C1 C1 2016/3/18 rn丁 4001B3 B3 2016/3/18 rn丙 5001A2 A2 2016/3/18 rn甲 1001C C 2016/3/18 rn乙 2001A2 A2 2016/3/18 rn丁 4001C C 2016/3/18 rn… … … … rn[img=https://img-bbs.csdn.net/upload/201603/19/1458353951_361400.png][/img]
java多线程聊天室附源码
java多线程聊天室可以支持多人在线聊天 实现局域网聊天
TCP多线程问题[附源码]
源码rnhttp://www.dbank.com/download.action?t=40&k=NDUzMDY1NjE=&pcode=LCw1NTk1MCw1NTk1MA==&rnd=4rnrn使用多线程发送数据包rn HANDLE hTread=CreateThread(NULL,0,SendProc,(LPVOID)pSendParam,0,NULL);rn HANDLE hTread2=CreateThread(NULL,0,SendProc,(LPVOID)pSendParam,0,NULL);//删除此句则正常rn CloseHandle(hTread);rn CloseHandle(hTread2);//删除此句则正常rnrn出错停在这里rnrnCString::CString(const CString& stringSrc)rnrn ASSERT(stringSrc.GetData()->nRefs != 0);rnrn问,如何才能正确的创建多线程。麻烦高手附上源码。谢谢
求大神指导求大神指导求大神指导
1>main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CSpeechRecognition1::CSpeechRecognition1(void)" (??0CSpeechRecognition1@@QAE@XZ),该符号在函数 "public: __thiscall main::main(class CWnd *)" (??0main@@QAE@PAVCWnd@@@Z) 中被引用rn1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall main::OnInitDiaLog(void)" (?OnInitDiaLog@main@@UAEHXZ)rn1>main.obj : error LNK2019: 无法解析的外部符号 "public: virtual __thiscall CSpeechRecognition1::~CSpeechRecognition1(void)" (??1CSpeechRecognition1@@UAE@XZ),该符号在函数 "public: virtual __thiscall main::~main(void)" (??1main@@UAE@XZ) 中被引用rn1>D:\tttttt\RecordSpeech\Debug\RecordSpeech.exe : fatal error LNK1120: 3 个无法解析的外部命令
请帮忙,附源码
<%@page language="java" import="java.sql.*"%>rn<%@page contentType="text/html; charset=gb2312" %>rn<%@ include file="chengfei.jsp" %>rn<%rnDriver DriverRecordset1 = (Driver)Class.forName("MM_chengfei_DRIVER").newInstance();rnConnection ConnRecordset1 = DriverManager.getConnection(MM_chengfei_STRING,MM_chengfei_USERNAME,MM_chengfei_PASSWORD);rnPreparedStatement StatementRecordset1 = ConnRecordset1.prepareStatement();rnResultSet Recordset1 = StatementRecordset1.executeQuery();rnRecordset1=null;rn%>rnrn rn 树壮菜单 rn rn rn rnrnrnrn rnrnorg.apache.jasper.JasperException: General errorrn at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:248)rn at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)rn at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)rn at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)rn at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)rn at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)rn at org.apache.catalina.core.StandardWrapperValve.invokern 是错误。请大侠制导。rn rn rn rn rn
关于多线程的疑问,求各位大神解答
nn```using namespace std;nnDWORD WINAPI Thread_accept (PVOID lParam)nn cout<<"进入线程"<
多线程运用请大神指点
直接上代码rn[code=c]rn//这是界面类rnvoid MyDlg::OnBnClickedButton1()//这是界面,按下按钮1;rnrn Finger *fin=new Finger;rn fin->GetEnroll(0); //这是一个类,里面封装了逻辑代码rn delete fin;rn int ret=Thread_GetThread(2);rnrn//这是Finger类,rnint Finger::GetEnroll(int i)rnrn int ret=InitFPDevice();rn if (ret==1)rn rn Thread_GetThread(13); //这是线程rn int res = Thread_GetEnroll(i);//这也是线程,这样可能不对rn if(res==1)rn Thread_GetThread(14);rn rn rn return ret;rnrn线程声明如下:rn//Thread.hrn#pragma oncern#include rnrnrnint Thread_GetThread(int i);rnint Thread_GetEnroll(int i);rn//Thread.cpprnHANDLE Thread[5];rnunsigned int __stdcall FunThread(PVOID pM)rnrn int p = (int)pM;rn Finger *finger=new Finger;rn finger->Speak(p);//获取语音rn delete finger;rn return 0;rnrnunsigned int __stdcall EnrollThread(PVOID pM)rnrn int p =(int)pM;rn Finger *fin = new Finger;rn fin->FPGetData(p);rn delete fin;rn return 0;rnrnrnint Thread_GetThread(int i)rnrn /*Thread[0]=::CreateThread(NULL,0,MyThread,(LPVOID)i,0,&dwThreadId);*/rn Thread[1]=(HANDLE)_beginthreadex(NULL,0,FunThread,(PVOID)i,0,NULL);rn CloseHandle(Thread[1]);rn return 0;rnrnint Thread_GetEnroll(int i)rnrn Thread[2]=(HANDLE)_beginthreadex(NULL,0,EnrollThread,NULL,0,NULL);rn CloseHandle(Thread[2]);rn return 0;rnrn[/code]rn我的意思呢就是一边执行Finger::FPGetData();一边读语音;我这样写根本不可以,我断点调试都没进入EnrollThread这个函数直接走到了return 0 ;我第一次真正使用多线程,真的是很吃力,希望各位大神指教一下
redis疑问
先说一下,Redis 为什么是单线程的? 单线程避免了多线程带来的数据问题,同时避免了多线程的切换耗时,提升了系统的吞吐。 多线程处理会涉及到锁,而且多线程处理会涉及到线程切换而消耗CPU。因为CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存或者网络带宽。单线程无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来解决 为什么使用连接池? Redis 是单进程单线程...
多线程的疑问
int state, oldstate, type, oldtype;rn type = PTHREAD_CANCEL_ASYNCHRONOUS;rn state = PTHREAD_CANCEL_ENABLE;rn pthread_setcanceltype(type, &oldtype); rn pthread_setcancelstate(state, &oldstate);rnrnrn为什么创建的线程里要加上这几句?我自己做实验加不加实验结果一样啊?rnrn#include rn#include rn#include rn#include rnrnvoid * child1(void *arg)rnrn int oldstate, oldtype;rn int i = 0;rnrn pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate);rn pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,&oldtype);//comment 1rn while (1) rn rn rn rnrnrnint main()rnrn pthread_t tid;rn int rc;rn void * status = NULL;rnrn pthread_create(&tid, NULL, child1, NULL);rn printf("\npthread_cancel \n");rn pthread_cancel(tid);rnrn printf("\nMain completed!~~\n");rnrn return 0;rnrn
多线程疑问
#include rn#include rnint iq=0;rnHANDLE hMutex;rn//using namespace std;rnvoid first_thread()rnrn WaitForSingleObject(hMutex,INFINITE);rn printf("2-first_thread()\n");rn for (int i=1;i<=1000000000;i++)rn rn if (i==1000000000)rn //MessageBox(NULL,(const char *)"1000000000","提示",64);rn printf("2-1000000000\n");rn rnrnvoid main()rnrn HANDLE hth[2];rn DWORD ThreadID;rn hMutex=CreateMutex(NULL,FALSE,NULL);rn hth[0]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) first_thread,rn NULL,0,(LPDWORD)&ThreadID);rn WaitForMultipleObjects(1,hth,TRUE,INFINITE);rn printf("1-End Program\n");rnrn// 运行打印结果为:rnprintf("2-first_thread()\n")rnprintf("2-1000000000\n")rnprintf("1-End Program\n")rn//设计目结果是:rnprintf("2-first_thread()\n")rnprintf("1-End Program\n")rnprintf("2-1000000000\n")rn//请指点
多线程疑问?
大家好!我要提问:rn我做了一个程序我用timer控件一直给一个队列加入数据,数据返回到一个全局变量上,然后我让他显示在窗体上,同时我用一个线程也在往队列中加数,数据返回到一个全局变量上,然后我让他显示在窗体上,用一个线程从队列中取数,数据返回到一个全局变量上,然后我让他显示在窗体上,问题是我只在这两个线程中用一个互斥变量进行互斥,然而在timer控件中我没有做任何互斥处理!rnrn程序居然没出错,我不知道为什么?rn也就是说我要跟主线程同步,在住线程一直工作的同时,我用另外两个线程工作!
多线程 (疑问)
不知为什么,程序出错了,求救!rn以下程序用到了 几个控件, rn[code=C#]// 1 richTextBox rtbShow;//用来显示信息的 rn// 2 btn123Start //是开始线程 button。rn// 2 btnSleep//当前线程 Sleep button。rn// 2 btnSuspendResume//挂起 or 继续 button。rn// 2 btnAbort //中止 线程 button。rn// 3 新建一个名为 form2 的窗体[/code]rn//rnrn[code=C#]//线程的 启动,挂起,休眠,终止rnprivate static Thread NewThread; //线程变量rnpublic static Form2 from2;rnprivate void btn123Start_Click(object sender, EventArgs e)rn //启动线程rn from2 = new Form2(); //声明一个窗体rn from2.Show();rn // 线程实例化,并设置优先级rn NewThread = new Thread(new ThreadStart(from2.ShowProgress));rn NewThread.Priority = ThreadPriority.Normal;//优先权 正常rn NewThread.Start();rn //NewThread.Join(1000);rnrn//当前线程 Sleep 5秒rnprivate void btnSleep_Click(object sender, EventArgs e)rnrn Thread.Sleep(5*1000);rn rnrnrnprivate void btnSuspendResume_Click(object sender, EventArgs e)rnrn if (NewThread.ThreadState == System.Threading.ThreadState.Running)// 此时正在运行中rn rn NewThread.Suspend();//吊起// 为什么 这里出错rn rtbShow.Text = "二线程状态:挂起";rn rn if (NewThread.ThreadState == System.Threading.ThreadState.Suspended)// 此时 挂起rn rn NewThread.Resume();//运行 // 为什么 这里出错rn rtbShow.Text = "二线程状态:运行";rn rnrnrnprivate void btnAbort_Click(object sender, EventArgs e)rnrn if (NewThread.IsAlive)rn rn NewThread.Abort();//中止任务 // 为什么 这里出错 rn from2.Hide();rn from2.Dispose();rn from2 = null;rn NewThread = null;rn rn[/code]
哪位大神给指导指导
select phone from userInfo where phone='13372401690' and to_char(lastTime,'yyyy-MM-dd hh24:mi:ss') LIKE '%2015-02-03%' 这是输出的SQL语句,放到plsql里可以查出数据,JDBC执行时一直返回空值,这是怎么回事儿
请教大神们指导指导 。
HTML中data标签的属性都有什么,怎么用,什么时候用,什么时候不用
求大神指导指导一下
[img=https://img-bbs.csdn.net/upload/201505/27/1432717312_644686.jpg][/img][b][img=https://img-bbs.csdn.net/upload/201505/27/1432717340_762836.jpg][/img][img=https://img-bbs.csdn.net/upload/201505/27/1432717366_514225.jpg][/img][/b]
多线程 疑问
各位高手帮我看一下以下代码(参考孙鑫的视频写的)我没分了,好心人就指点一下吧rn#include rn#include rnrnDWORD WINAPI ThreadProc_1(LPVOID lpParameter);rnDWORD WINAPI ThreadProc_2(LPVOID lpParameter);rnrnint tickets = 100;rnHANDLE hMutex;rnrnint main()rnrn HANDLE hThread1;rn HANDLE hThread2;rn hThread1 = CreateThread(NULL,0,ThreadProc_1,NULL,0,NULL);rn hThread2 = CreateThread(NULL,0,ThreadProc_2,NULL,0,NULL);rn CloseHandle(hThread1);rn CloseHandle(hThread2);rn hMutex = CreateMutex(NULL,FALSE,NULL);rn Sleep(4000);rn return 0;rnrnrnDWORD WINAPI ThreadProc_1(LPVOID lpParameter)rnrn DWORD result1;rn while(TRUE)rn rn result1 = WaitForSingleObject(hMutex,INFINITE);rn if(tickets /*&& result1 != WAIT_FAILED*/)rn rn cout<<"Thread1 sells ticket:"<
多线程的疑问。。。
我的程序中开了三个线程,分别定期执行不同的工作,比如间隔多少分钟运行一次,三个线程内都是无限循环,用sleep来实现运行间隔。。。rnrnrn[code=delphi]rnrnmyThread01 := TThread.CreateAnonymousThread(rn procedurernrn beginrn Terminated := true;rn while Terminated dorn beginrn makearticle; // 生成文章事务rn checkexe;rn // Sleep(600000); // 沉睡10分钟rn Sleep(100000);rnrn end;rnrn end);rn myThread01.Start;rnrn[/code]rnrn现在的问题是,比如sleep 设定为睡眠10分钟,但有时候10分钟后并不执行,甚至等了1个小时都不执行。。。rnrn有些时候是正常的。rnrn像我这种需求,应该如何解决呢?有没有更好的实现方法呢??rnrn
一个购物项目的疑问,请高手进来指导指导
做购物车时把数据写在session中的话你要是关了,下次在进来的时候你上次存在session中的就没了,要是放在cookie中,浏览器要是把cookie给关了,那要把购物信息写到哪儿去啊?怎么实现啊??
redis队列及多线程应用,redis队列多线程
原文地址:http://www.bkjia.com/Javabc/997348.html redis队列及多线程应用,redis队列多线程   由于xxx平台上自己的博客已经很久没更新了,一直以来都是用的印象笔记来做工作中知识的积累存根,不知不觉印象笔记里已经有了四、五百遍文章。为了从新开始能与广大攻城狮共同提高技术能力与水平,随决心另起炉灶在新的博客与大家分享   经过...
新手 请指导啊 ,大神看下
//取出数据库用户口令表格中对应用户的口令rn SELECT user_PWD ,purview INTO :CORRECT_PSWD,:G_right FROM USER_info rn WHERE user_id=:G_USER or username=:G_USER;rnrn此段代码中 INTO :CORRECT_PSWD 中的 冒号 是什么作用啊??
关于JavaScript中for循环,请大神指导
var a=[];rn for (var i=0;i<3;i++) rn a[i]=function () rn return i;rn ;rn rn alert(a[0]());rn上面的代码a[0]、a[1]、a[2]的输出结果为什么都是3而不是1、2、3?按理说,当i=0的时候,就应该把i++返回给a[0],也就是把1返回给a[0],依次类推?rn但上面的代码显然是按i++的最终结果输出的,可如果输出结果按i++的最后结果为准的话,那为什么下面的代码,输出结果又依次是0、1、2?希望大神赐教啊?我都纠结了一下午了?rnvar a=[];rn for (var i=0;i<3;i++)rn a[i]=i;rn rn alert(a[0]);rn
Makefile报错,请大神给点指导
之前使用make install编译,没有问题,有次一不小心删除了一个文件夹,这个文件夹是makefile中的一部分,然后git clone了一份相同的环境,相同的名称。然后再进行make install,make clean , make disclean 等都出现了报错。rnrn报错为下面:rn*** 没有规则可以创建目标“install”。 停止。rnrn搜了一些相关的,都不行,还请有相关经验的大神给点指导。
关于远程桌面的问题,请大神指导
背景:宿舍有3台笔记本电脑,其中2台电脑是接另一台电脑用connectfy发出的wifi上网的。rn 问题:rn 我们上课一般是用教室电脑的远程桌面来控制宿舍的电脑的。但现在只能控制发wifi的电脑,另外2台电脑就不能控制了。教室电脑IP都是172.18.xxxx.。宿舍发wifi的ip是172.17.xxxx。而收wifi的2台电脑是192.168.XXXXX。现在请问有什么办法解决其他2台电脑不能远程的问题啊...百度看过改什么路由映射的。。求大神指导
JAVA网络编程问题请大神指导
面试被问到了,请教大神:同一服务器相同Server是否可以共用一个端口?同一服务器不同Server是否可以共用一个端口?
程序运行时报错 ,请大神指导一下
下面程序通过kinect读取的数据,转换成点云后进行分割rn程序编译通过了,但是运行时提示vector subscript out of range ,请问该如何修改?rnrn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rnrnusing namespace std;rnusing namespace xn;rnrnstruct SColorPoint3D rn rn float X; rn float Y; rn float Z; rn float R; rn float G; rn float B; rnrn SColorPoint3D( XnPoint3D pos, XnRGB24Pixel color ) rn rn X = pos.X; rn Y = pos.Y; rn Z = pos.Z; rn R = (float)color.nRed / 255; rn G = (float)color.nGreen / 255; rn B = (float)color.nBlue / 255; rn rn; rnrnvoid GeneratePointCloud( DepthGenerator& rDepthGen, rn const XnDepthPixel* pDepth, rn const XnRGB24Pixel* pImage, rn vector& vPointCloud ) rn rn // number of point is the number of 2D image pixel rn DepthMetaData mDepthMD; rn rDepthGen.GetMetaData( mDepthMD ); rn unsigned int uPointNum = mDepthMD.FullXRes() * mDepthMD.FullYRes(); rnrn // build the data structure for convert rn XnPoint3D* pDepthPointSet = new XnPoint3D[ uPointNum ]; rn unsigned int i, j, idxShift, idx; rn for( j = 0; j < mDepthMD.FullYRes(); ++j ) rn rn idxShift = j * mDepthMD.FullXRes(); rn for( i = 0; i < mDepthMD.FullXRes(); ++i ) rn rn idx = idxShift + i; rn pDepthPointSet[idx].X = i; rn pDepthPointSet[idx].Y = j; rn pDepthPointSet[idx].Z = pDepth[idx]; rn rn rnrn // un-project points to real world rn XnPoint3D* p3DPointSet = new XnPoint3D[ uPointNum ]; rn rDepthGen.ConvertProjectiveToRealWorld( uPointNum, pDepthPointSet, p3DPointSet ); rn delete[] pDepthPointSet; rnrn // build point cloud rn for( i = 0; i < uPointNum; ++ i ) rn rn // skip the depth 0 points rn if( p3DPointSet[i].Z == 0 ) rn continue; rnrn vPointCloud.push_back( SColorPoint3D( p3DPointSet[i], pImage[i] ) ); rn rn delete[] p3DPointSet; rn rnrntypedef pcl::PointXYZ PointT;rnrnint main(int argc,char** argv)rnrn XnStatus eResult = XN_STATUS_OK; rn int i = 0; rnrn // init rn Context mContext; rn eResult = mContext.Init(); rnrn DepthGenerator mDepthGenerator; rn eResult = mDepthGenerator.Create(mContext); rn ImageGenerator mImageGenerator; rn eResult = mImageGenerator.Create(mContext); rnrn // set output mode rn XnMapOutputMode mapMode; rn mapMode.nXRes = XN_VGA_X_RES; rn mapMode.nYRes = XN_VGA_Y_RES; rn mapMode.nFPS = 30; rn eResult = mDepthGenerator.SetMapOutputMode(mapMode); rn eResult = mImageGenerator.SetMapOutputMode(mapMode); rnrn // start generating rn eResult = mContext.StartGeneratingAll(); rnrn // read data rn vector vPointCloud; rn while ( !xnOSWasKeyboardHit() ) rn rn eResult = mContext.WaitNoneUpdateAll(); rn // get the depth map rn const XnDepthPixel* pDepthMap = mDepthGenerator.GetDepthMap(); rnrn // get the image map rn const XnRGB24Pixel* pImageMap = mImageGenerator.GetRGB24ImageMap(); rnrn // generate point cloud rn vPointCloud.clear(); rn GeneratePointCloud(mDepthGenerator, pDepthMap, pImageMap, vPointCloud ); rn rn // All the objects neededrn //pcl::PCDReader reader;rn pcl::PassThrough pass;rn pcl::NormalEstimation ne;rn pcl::SACSegmentationFromNormals seg; rn //pcl::PCDWriter writer;rn pcl::ExtractIndices extract;rn pcl::ExtractIndices extract_normals;rn pcl::search::KdTree::Ptr tree (new pcl::search::KdTree ());rnrn // Datasetsrn pcl::PointCloud::Ptr cloud (new pcl::PointCloud);rn pcl::PointCloud::Ptr cloud_filtered (new pcl::PointCloud);rn pcl::PointCloud::Ptr cloud_normals (new pcl::PointCloud);rn pcl::PointCloud::Ptr cloud_filtered2 (new pcl::PointCloud);rn pcl::PointCloud::Ptr cloud_normals2 (new pcl::PointCloud);rn pcl::ModelCoefficients::Ptr coefficients_plane (new pcl::ModelCoefficients), coefficients_cylinder (new pcl::ModelCoefficients);rn pcl::PointIndices::Ptr inliers_plane (new pcl::PointIndices), inliers_cylinder (new pcl::PointIndices);rnrn //fill the data cloudrn cloud->width = 640;rn cloud->height = 480;rn cloud->points.resize( cloud->width* cloud->height);rnrn for(size_t i=0;ipoints.size();++i)rn rn cloud->points[i].x=vPointCloud[i].X;rn cloud->points[i].y=vPointCloud[i].Y;rn cloud->points[i].z=vPointCloud[i].Z;rn rnrnrn // Read in the cloud datarn //reader.read ("table_scene_mug_stereo_textured.pcd", *cloud);rn std::cerr << "PointCloud has: " << cloud->points.size () << " data points." << std::endl;rnrn // Build a passthrough filter to remove spurious NaNsrn pass.setInputCloud (cloud);rn pass.setFilterFieldName ("z");rn pass.setFilterLimits (0, 1.5);rn pass.filter (*cloud_filtered);rn std::cerr << "PointCloud after filtering has: " << cloud_filtered->points.size () << " data points." << std::endl;rnrn // Estimate point normalsrn ne.setSearchMethod (tree);rn ne.setInputCloud (cloud_filtered);rn ne.setKSearch (50);rn ne.compute (*cloud_normals);rnrn // Create the segmentation object for the planar model and set all the parametersrn seg.setOptimizeCoefficients (true);rn seg.setModelType (pcl::SACMODEL_NORMAL_PLANE);rn seg.setNormalDistanceWeight (0.1);rn seg.setMethodType (pcl::SAC_RANSAC);rn seg.setMaxIterations (100);rn seg.setDistanceThreshold (0.03);rn seg.setInputCloud (cloud_filtered);rn seg.setInputNormals (cloud_normals);rn // Obtain the plane inliers and coefficientsrn seg.segment (*inliers_plane, *coefficients_plane);rn std::cerr << "Plane coefficients: " << *coefficients_plane << std::endl;rnrn // Extract the planar inliers from the input cloudrn extract.setInputCloud (cloud_filtered);rn extract.setIndices (inliers_plane);rn extract.setNegative (false);rnrn // Write the planar inliers to diskrn pcl::PointCloud::Ptr cloud_plane (new pcl::PointCloud ());rn extract.filter (*cloud_plane);rn std::cerr << "PointCloud representing the planar component: " << cloud_plane->points.size () << " data points." << std::endl;rn //writer.write ("table_scene_mug_stereo_textured_plane.pcd", *cloud_plane, false);rnrn // Remove the planar inliers, extract the restrn extract.setNegative (true);rn extract.filter (*cloud_filtered2);rn extract_normals.setNegative (true);rn extract_normals.setInputCloud (cloud_normals);rn extract_normals.setIndices (inliers_plane);rn extract_normals.filter (*cloud_normals2);rnrn // Create the segmentation object for cylinder segmentation and set all the parametersrn seg.setOptimizeCoefficients (true);rn seg.setModelType (pcl::SACMODEL_CYLINDER);rn seg.setMethodType (pcl::SAC_RANSAC);rn seg.setNormalDistanceWeight (0.1);rn seg.setMaxIterations (10000);rn seg.setDistanceThreshold (0.05);rn seg.setRadiusLimits (0, 0.1);rn seg.setInputCloud (cloud_filtered2);rn seg.setInputNormals (cloud_normals2);rnrn // Obtain the cylinder inliers and coefficientsrn seg.segment (*inliers_cylinder, *coefficients_cylinder);rn std::cerr << "Cylinder coefficients: " << *coefficients_cylinder << std::endl;rnrn // Write the cylinder inliers to diskrn extract.setInputCloud (cloud_filtered2);rn extract.setIndices (inliers_cylinder);rn extract.setNegative (false);rn pcl::PointCloud::Ptr cloud_cylinder (new pcl::PointCloud ());rn extract.filter (*cloud_cylinder);rn if (cloud_cylinder->points.empty ()) rn std::cerr << "Can't find the cylindrical component." << std::endl;rn elsern rn std::cerr << "PointCloud representing the cylindrical component: " << cloud_cylinder->points.size () << " data points." << std::endl;rn //writer.write ("table_scene_mug_stereo_textured_cylinder.pcd", *cloud_cylinder, false);rn rn // print point cloud rn /*cout.flags(ios::left); //Left-aligned rn cout << "Point number: " << vPointCloud.size() << endl; rn for(i=0;i
vs2010安装失败 大神们 很急 请指导
[img=https://img-bbs.csdn.net/upload/201311/03/1383471665_744198.png][/img]
关于FTP的实现(请大神指导)
请问,如何用getopt()函数解析命令参数,监听IP地址和端口号,而且如何传参??rn我的客户端是用filezilla登陆的,一个FTP工具,现在要写一个服务端,如何使用getopt()来监听呢???rnrnint main()rnrn int client_sock =create_sock(...);rn bind(..);rn listen(..);rn while(1)rn rn accept(..);rn create_thread();rn rn close(..);rnrnrn各函数实现:rnvoid create_sock()rnrn ...rnrnrnvoid bind()rnrn struct sockaddr_in server;rn server.sin_port = htons(...);rn server.sin_addr.s_addr=htonl(...)rn rnrnrnvoid listen()rnrn ...rnrnrnvoid accept()rnrn ...rnrnrnvoid create_thread()rnrn ...rn
java关于线程的问题请大神指导
现在的项目有个需求,就是有一个随机抽取的算法,我希望每次只能有一个人访问,其他人来访问的时候,处于等待状态。如果等待时间太长,直接返回结果。使用单线程应该如何处理,或者有没有其他更好的方式?请大神指导一下
Java编程 如何调适 请大神指导
// 2.某人参加比赛,依次输入10局得成绩,计算达到80分之上的比率,n // 该比率如果大于0.8则显示“恭喜,通过一级”,否则如果大于0.7则显示“恭喜,n // 通过二级”,否则显示“加油了!”
对NEW不明白,,请大神指导谢谢
看了 书也不是很明白rnrn请大神举简单的 列子rnrn谢谢
本人菜鸟,刚开始学习,请大神指导。
请帮我分析下下面这段程序,逐句的含义和作用。谢谢了rnvoid CpicviewDlg::Redraw(void) rnrn CDC* pDC = m_staPrev.GetDC();rn rn Graphics graph(pDC->GetSafeHdc());rn CRect rect,winrect;rn m_staPrev.GetClientRect(&winrect);rn m_staPrev.GetClientRect(rect);rn pDC->FillRect(rect, &CBrush(RGB(211, 211, 211)));rnrn if (m_nPos >= 0)rn rn CString m_strFilePath = m_strPath + L"\\" + m_FilesNameAry[m_nPos];rn Image image(m_strFilePath);rn CRect rect;rnrn m_staPrev.GetClientRect(rect);rnrn REAL width = (REAL)image.GetWidth();rn REAL height = (REAL)image.GetHeight();rn REAL c = 0.0f;rn REAL x = 0.0f;rn REAL y = 0.0f;
H5 geolocation定位问题,请各位大神指导
[size=14px]小弟最近在写一个定位的功能,用H5的geolocation。代码如下:rn rn navigator.geolocation.getCurrentPosition(successCallback, errorCallback ,rnenableHighAccuracy:true, timeout:1000,maximumAge:5000);rnrnfunction errorCallback(error) rn console.log("获取经纬度失败,原因:"+error.message); rn localStorage.setItem("longitude","");rn localStorage.setItem("latitude",""); rn rn现在在手机位置服务打开的情况下一切正常。但关闭位置服务后,应该回调errorCallback这个函数,可是根据追踪显示根本无法进入errorCallback这个函数,不知道是什么原因。有的时候可以进入回调函数,有的时候则一直卡着。我的追踪方法是在successCallback和errorCallback中分别加入alert函数。关闭定位服务后,大部分时候是可以的,可有时候却不可以。[/size][/size][/size]rnrn
dom4j 问题 请各位大神指导一下!
public class XMLTest rnrn /**rn * @param argsrn * @throws DocumentException rn */rn public static void main(String[] args) throws DocumentException rn String str = "" +rn "" +rn "" +rn "" +rn "" +rn "" +rn "" +rn "" +rn "" +rn "" +rn "" +rn "" +rn "" +rn "";rn // TODO Auto-generated method stubrn Document document = DocumentHelper.parseText(str);rnrn Element users=document.getRootElement();rnrn for(Iterator iter= users.elementIterator(); iter.hasNext(); )rnrn Element element = (Element)iter.next();rnrn Attribute CategoryCode = element.attribute("CategoryCode");rnrn Attribute CategoryName = element.attribute("CategoryName");rnrn Attribute RegionID = element.attribute("RegionID");rn rn Attribute RegionName = element.attribute("RegionName");rnrn Attribute RegionValue = element.attribute("RegionValue");rnrn System.out.println(CategoryCode.getText());rnrn System.out.println(CategoryName.getText());rnrn System.out.println(RegionID.getText());rn rn System.out.println(RegionName.getText());rn rn System.out.println(RegionValue.getText());rnrn rn rnrnrnrnrn[size=11px][b]请问一下,如何获取:GameRegionItem这个子节点里面的的属性值呢?,如果GameRegionItem里面还有子节点呢?[/b][/size]
一个关于div的问题,请大神指导
我用curl抓取了一个页面,但是页面中间有几个地方想删除,需要删除这个页面里面的div标签,用正则匹配太麻烦,刚刚看了simple_html_dom,但是里面没有删除标签的函数,请大神指导一下怎么用simple_html_dom删除div标签。。
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数