小编mkj*_*mkj的帖子

mq_receive:消息太长

我正在使用队列实现两个进程之间的通信.问题是,当我调用函数mq_receive时,我收到此错误:消息太长.

我做了以下事情:

struct mq_attr attr;

long size = attr.mq_msgsize;
.... // initializing the queue "/gateway"

int rc = mq_receive(gateway, buffer, size, &prio);
Run Code Online (Sandbox Code Playgroud)

如果我打印大小值,我得到size = 1,而当我打印相同的大小但从另一个程序(通过相同的机制获得),我得到一些不长的整数(-1217186280)...

我怎么能解决这个错误?....所以当size = 1时,我认为说"消息太长"是正确的,但为什么是1?

PS我也尝试过:

int rc = mq_receive(gateway, buffer, sizeof(buffer), &prio);
Run Code Online (Sandbox Code Playgroud)

但没有结果.

queue posix

9
推荐指数
3
解决办法
2万
查看次数

调用reloadRowsAtIndexPaths会删除tableView contentOffset

每当我打电话

reloadRowsAtIndexPaths
Run Code Online (Sandbox Code Playgroud)

我的UITableView contentOffset被删除了,是否有一个委托方法我可以用来捕获表视图更新并再次设置Offset以使其保持原位并且不会动画到视图中,或者只是阻止它执行此操作?

我在viewDidLoad中设置contentOffest:

self.tableView.contentOffset = CGPointMake(0, 43);
Run Code Online (Sandbox Code Playgroud)

以下是一个示例用法:

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:[params valueForKey:@"index"], nil] withRowAnimation:UITableViewRowAnimationFade];
Run Code Online (Sandbox Code Playgroud)

这将删除contentOffset并将其动画到视图中,这是我不想要的.

更具体地说,当重新加载的行位于indexPath.section 0和indexPath.row 0(即顶行)时,会出现这种情况.


更多信息

我在从服务器获取图像的异步请求之后调用reloadRowsAtIndexPaths.它基本上是这样的:

  • 调用cellForRowAtIndexPath,检查磁盘上是否存在拇指文件,如果文件不存在,则在其中加载占位符,并在后台线程中启动异步请求以获取图像.
  • 当图像下载完成后,我调用reloadRowsAtIndexPaths正确的单元格,以便正确的图像淡入而不是占位符图像.
  • 当在cellForRowAtIndexPath内调用请求时,单元格的数量可能不同,以便在单元格加载时加载图像

cellForRowAtIndexPath文件检查

paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
path = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_small.gif",[[listItems objectAtIndex:indexPath.row] valueForKey:@"slug"]]];

    if([[NSFileManager defaultManager] fileExistsAtPath:path]){

        listCell.imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfFile:path]];

    } else {

        listCell.imageView.image = [UIImage imageNamed:@"small_placeholder.gif"];

        NSMutableDictionary *params = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[[[listItems objectAtIndex:indexPath.row] valueForKey:@"image"] valueForKey:@"small"],@"image",[NSString stringWithFormat:@"%@_small.gif",[[listItems objectAtIndex:indexPath.row] valueForKey:@"slug"]], @"name",indexPath,@"index",@"listFileComplete",@"notification",nil];

        [NSThread detachNewThreadSelector:@selector(loadImages:) toTarget:self withObject:params];

        [params release];

    }
Run Code Online (Sandbox Code Playgroud)

文件下载通知:

-(void)fileComplete:(NSNotification *)notification { …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uitableview

9
推荐指数
1
解决办法
9023
查看次数

在Julia中声明C void指针的正确方法

好吧,我最初严重搞砸了我对这个问题的描述(自从我认真编写C++代码以来我已经超过一年了,我对纯C的经验非常有限),让我们再试一次.

编写一些C代码以期望您执行以下操作

void* p;
create_new_thing(&p);  //p is now a new thing
do_stuff_to_thing(p);  //something happened to p
Run Code Online (Sandbox Code Playgroud)

我的问题是如何p在Julia中创建对象.现在我相信答案

p = Ref{Ptr{Void}}()
ccall((:create_new_thing, :lib), Void, (Ptr{Ptr{Void}},), p)
ccall((:do_stuff_to_thing, :lib), Void, (Ptr{Void},), p)
Run Code Online (Sandbox Code Playgroud)

此外,我相信相同的代码,但p声明相反p = Array(Ptr{Void}, 1)也有效.

然而,我发现整个之间的区别Ref,并Ptr在朱莉娅非常混乱,主要是因为他们似乎的方式,我不能跟踪相互之间进行转换得到.

c void-pointers julia

9
推荐指数
1
解决办法
610
查看次数

如何从Python 3中的deque获取random.sample()?

我有一个collections.deque()元组,我想从中抽取随机样本.在Python 2.7中,我可以使用batch = random.sample(my_deque, batch_size).

但是在Python 3.4中提出了这个问题 TypeError: Population must be a sequence or set. For dicts, use list(d).

什么是最好的解决方法,或推荐的方法从Python 3中的双端队列中有效地采样?

python random python-2.7 python-3.x

8
推荐指数
2
解决办法
3373
查看次数

Android:有没有办法模拟D-Pad事件(API 10)?

问题很简单.我必须模拟dpad事件(UP,DOWN,RIGHT,LEFT,CENTER),以便在我的GUI中导航,其中包含许多按钮和其他元素.使用模拟器D-Pad,我可以在没有行代码的情况下导航此GUI.但是我该如何以编程方式执行此操作?

我尝试了很多但没有成功:

  • KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_LEFT); View.dispatchKeyEvent(event); 没有任何事情发生(焦点应该将一个元素移动到右边)

  • 我也阅读了很多关于windowManager.injectKeyEvent的内容,但发现没有任何效果.

  • 而Instrumentation可以帮助模拟关键事件,但更多用于测试,而不是用于应用程序本身.

我认为有一个解决方案,因为对讲可以模拟物理D-Pad(http://code.google.com/p/eyes-free/source/browse/trunk/ime/latinime/src/com/googlecode/eyesfree /inputmethod/latin/LatinIME.java)

simulation android keyevent d-pad

7
推荐指数
1
解决办法
2937
查看次数

通过Apache POI读取大型Excel文件(xlsx)时出错

我试图通过Apache POI读取大型excel文件xlsx,比如40-50 MB.我失去了内存异常.当前堆内存为3GB.

我可以毫无问题地阅读较小的excel文件.我需要一种方法来读取大型excel文件,然后通过Spring excel视图将它们作为响应返回.

public class FetchExcel extends AbstractView {


    @Override
    protected void renderMergedOutputModel(
            Map model, HttpServletRequest request, HttpServletResponse response) 
    throws Exception {

    String fileName = "SomeExcel.xlsx";

    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

    OPCPackage pkg = OPCPackage.open("/someDir/SomeExcel.xlsx");

    XSSFWorkbook workbook = new XSSFWorkbook(pkg);

    ServletOutputStream respOut = response.getOutputStream();

    pkg.close();
    workbook.write(respOut);
    respOut.flush();

    workbook = null;                    

    response.setHeader("Content-disposition", "attachment;filename=\"" +fileName+ "\"");


    }    

}
Run Code Online (Sandbox Code Playgroud)

我第一次开始使用,XSSFWorkbook workbook = new XSSFWorkbook(FileInputStream in); 但每个Apache POI API的成本很高,所以我切换到OPC包的方式,但仍然是相同的效果.我不需要解析或处理文件,只需读取并返回即可.

java out-of-memory xlsx apache-poi

7
推荐指数
2
解决办法
2万
查看次数

如何修复prettytable正确显示汉字

from prettytable import PrettyTable

header="????,??,????".split(",")
x = PrettyTable(header)
x.align["????"]="l"
table='''HuangTianhui,?,1948/05/28
???,?,1952/03/27
???,?,1994/12/09
LuiChing,?,1969/08/02
???,?,1982/03/01
???,?,1983/08/03
YangJiabao,?,1988/08/25
????·???,?,1979/07/10
???,?,1949/10/20
???(??),?,2011/02/25
(??????),?,1985/07/20
'''
data=[row for row in table.split("\n") if row]
for row in data:
    x.add_row(row.strip().split(","))

print(x)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想要的输出格式如下.

在此输入图像描述

在这个例子中,prettytable.py无法显示字符的正确中国暧昧宽度 ·????·??? ,则字符含糊的宽度.如何修复prettytable.py中的错误?

我在prettytable.py的def _char_block_width(char)中添加了两行,但问题仍然存在.

if char == 0xb7:
    return 2 
Run Code Online (Sandbox Code Playgroud)

我已经解决了,文件prettytable.py应该安装在我的电脑d:\ python33\Lib\site-packages中directly not in as the form of d:\python33\Lib\site-packages\prettytable\prettytable.py

有很多中文字符宽度不明确,我们添加两行如下来修复bug是愚蠢的,如果有50个不明确的字符,在prettytable.py中会添加100行,有没有简单的方法要做到这一点?只修一些线来对待所有模棱两可的角色?

if char == 0xb7:
    return 2 
Run Code Online (Sandbox Code Playgroud)

r python-3.x prettytable

7
推荐指数
1
解决办法
720
查看次数

如何在模拟器上存储文件?

默认情况下是否有可能在Android Emulator中存储文件而不使用任何命令?

android android-emulator

6
推荐指数
1
解决办法
2345
查看次数

VB.NET - ":="有什么作用?

我在网上或在运营商文档下找不到任何信息,但我看到这个":="在VB.NET中使用了几次,我无法弄清楚它的功能.

vb.net operators

6
推荐指数
2
解决办法
248
查看次数

网页视图无法滚动

我有这个 Xamarin 表单页面:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:TestApp1"
             x:Class="TestApp1.MainPage">
<ContentPage.Content>
  <StackLayout Orientation="Vertical">
    <WebView Source="http://www.google.de" HeightRequest="3000" WidthRequest="100"/>
  </StackLayout>
</ContentPage.Content>
</ContentPage>
Run Code Online (Sandbox Code Playgroud)

当我打开应用程序时,在谷歌提示中输入任何内容,我无法在结果页面上滚动。我如何启用此功能?

当我搜索“xamarin webview启用滚动”时,我只找到有关禁用它的信息......

webview xamarin

6
推荐指数
1
解决办法
6581
查看次数