我注意到java不允许我存储2000000000这样的大数字,即显然是一个整数类型的20亿,但是如果我存储相应的十六进制值即int largeHex = 0x77359400; 这可以,
所以我的程序需要增加到2 ^ 32,刚刚超过42亿,我测试了十六进制密钥0xffffffff,它允许我以这种形式存储为int类型,
我的问题是我必须从程序中提取一个十六进制字符串.
例
sT = "ffffffff";
int hexSt = Integer.valueOf(sT, 16).intValue();
Run Code Online (Sandbox Code Playgroud)
这仅适用于较小的整数值
我收到一个错误
Exception in thread "main" java.lang.NumberFormatException: For input string: "ffffffff"
Run Code Online (Sandbox Code Playgroud)
我需要做的就是在整数变量中使用此值,例如
int largeHex = 0xffffffff
Run Code Online (Sandbox Code Playgroud)
哪个工作正常?
我正在使用整数,因为我的程序需要生成许多值.
我想使用V8 Float32Array数据结构.我该如何初始化它?
我也对直接存储器访问数据感兴趣.怎么可能这样呢?
我有一个类似的数据结构
[
{"name":"foo", "links":["a", "b", "c"]},
{"name":"bar", "links":["d", "e", "f"]}
]
Run Code Online (Sandbox Code Playgroud)
我想列一个清单
<ul>
<li> foo </li>
<li> bar </li>
</ul>
Run Code Online (Sandbox Code Playgroud)
当我点击foo时,扩展为
<ul>
<li> foo
<ul>
<li> a </li>
<li> b </li>
<li> c </li>
</ul>
</li>
<li> bar </li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我想用d3.js这样做.制作热门列表非常简单有趣:
toplist = d3.select("body").append("ul");
toplist.selectAll("li")
.data(data)
.enter()
.append("li")
.text(function(d){return d.name;})
Run Code Online (Sandbox Code Playgroud)
添加子列表甚至很容易:
items = toplist.append("ul")
.selectAll("li")
.data(function(d){return d.links})
.enter()
.append("li")
.text(function(d){return d})
Run Code Online (Sandbox Code Playgroud)
我可以on("click"..在每个li中添加一个toplist,比如
toplist.selectAll("li")
.data(data)
.enter()
.append("li")
.text(function(d){return d.name;})
.on("click", expand)
Run Code Online (Sandbox Code Playgroud)
并将子列表代码移动到名为expand的函数中.看起来像
function expand(d,i){
Run Code Online (Sandbox Code Playgroud)
然后在其中包含上述 …
我正在尝试实现与node.js集成的C++扩展.此扩展将在内部调用一些阻塞调用,因此它需要为node.js世界提供非阻塞接口.
如https://nodejs.org/api/addons.html中所述,有两种方法可以实现非阻塞回调:
a)通过使用JavaScript函数的简单回调.所以我的扩展必须生成一个线程并立即返回,让该线程调用阻塞代码,然后在返回时调用JavaScript回调.这似乎相对简单.
b)通过使用libuv库,如果我理解正确,将事件发布到node.js事件循环.我没有详细阅读过libuv文档,但实现起来似乎相当复杂.
我的偏好当然是a),但我不知道其含义是什么.如果从不同的线程调用回调是否有任何问题,从而将node.js标准方法限制为非阻塞IO?或者是否需要使用libuv来正确处理我的代码及其阻塞调用的线程?
非常感谢您的帮助.
我的node.js代码执行此操作:
var MyMQ = require( './build/release/mqconn' ) ;
var MyQmgrName = 'QM_CNT' ; // req.params.qmgrname ;
MyMQ.connect ( MyQmgrName, function ( err, result ) {
Run Code Online (Sandbox Code Playgroud)
我的C++代码(uning nan)想要接收第一个字符串参数:
NAN_METHOD( MQ_Connect ) {
NanScope();
Local<Value> szQMN( args[ 0 ] );
printf( "(cc)>>>> qmn [%s].\n", szQMN ) ;
Run Code Online (Sandbox Code Playgroud)
......但我得到的是垃圾.
我有什么不对的任何线索?塞巴斯蒂安.
我使用NAN在node.js中包含一个c ++库.我理解如何在两者之间来回传递数字和字符串,但我不明白如何传递数组.我想做的是这样的事情:
index.js
var test = require('bindings')('test');
var buffer = [0,0,0,0,0,0.1,0,0,0,0,-0.1];
test.encode(buffer, buffer.length);
Run Code Online (Sandbox Code Playgroud)
test.cc
var encoder = new Encoder();
NAN_METHOD(Encode){
//the next line is incorrect, I want to take the buffer array and pass it as a pointer to the encodeBuffer() function
Local<Number> buffer = args[0].As<Number>();
//get the integer value of the second argument
Local<Number> buffer_length = args[1].As<Number>();
int bl_int = buffer_length->IntegerValue();
//call function
encoder.encodeBuffer(buffer, bl_int);
}
void Init(Handle<Object> exports) {
exports->Set(NanNew("encode"), NanNew<FunctionTemplate>(Encode)->GetFunction());
}
Run Code Online (Sandbox Code Playgroud)
我想在c ++库中使用的实际方法是:
void encodeBuffer(float …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Node插件,我在尝试从C++工作线程调用V8函数对象时遇到问题.
我的插件基本上启动了一个C++ std :: thread并使用WaitForSingleOject()进入等待循环,这是由写入一些共享内存的不同C++应用程序(一个X-Plane插件)触发的.我试图让我的Node插件在发出Windows共享事件时唤醒,然后调用我从节点应用程序注册的JavaScript函数,该函数将依次将源自X-Plane的数据传递回Node和网络世界.
我已经设法解决了如何注册JavaScript函数并从C++调用它,但仅限于主V8线程.我似乎找不到从std :: thread调用函数的方法.
我尝试了各种方法,Locker对象(变量成功),持久性函数(不起作用),保存主隔离对象,进入/退出隔离,但是如果/当代码最终到达函数对象时它无效.
我得到了不同的结果,从崩溃到冻结,取决于我是否创建了各种储物柜和解锁器对象.
我对V8完全不熟悉,所以我不确定我做的是什么.有问题的代码如下:
如果有人能够提供帮助,我将永远感激不尽!
float* mem = 0;
HANDLE event = NULL;
Isolate* thisIsolate;
void readSharedMemory()
{
//Isolate* isolate = Isolate::GetCurrent();
//HandleScope scope(isolate);
thisIsolate->Enter();
v8::Locker locker(thisIsolate);
v8::Isolate::Scope isolateScope(thisIsolate);
//HandleScope scope(thisIsolate);
//v8::Local<Value> myVal = v8::String::NewFromUtf8(isolate, "Plugin world");
v8::Local<Value> myVal = v8::Number::New(thisIsolate, *mem);
// If it get's this far 'myFunction' is not valid
bool isFun = myFunction->IsFunction();
isFun = callbackFunction->IsFunction();
v8::Context *thisContext = *(thisIsolate->GetCurrentContext());
myFunction->Call(thisContext->Global(), 1, &(Handle<Value>(myVal)));
}
void registerCallback(const FunctionCallbackInfo<Value>& args)
{
Isolate* …Run Code Online (Sandbox Code Playgroud) 我想从异步插件函数中调用nodejs回调.我已经看到了同步示例(这里),我正在使用一个很棒的异步示例(这里)作为起始基础.
但是,当我尝试执行给c ++ AsyncWorker子类的回调时,我收到了Segmentation错误.
这是我的代码:
#include <nan.h>
#include <functional>
#include <iostream>
#include <exception>
using namespace Nan;
using namespace v8;
using namespace std;
class ScriptWorker : public AsyncWorker {
public:
ScriptWorker(Callback *callback, const std::map<std::string, Callback*>)
: AsyncWorker(callback), script(script), cbs(cbs) {}
~ScriptWorker() {}
void Execute () {
// ------------------------
// Segmentation fault after
// ------------------------
Local<Value> argv[] = {
New<v8::Number>(id)
};
// -------------------------
// Segmentation fault before
// -------------------------
cbs["getUser"]->Call(1, argv);
}
private:
std::string script;
std::map<std::string, Callback*> cbs; …Run Code Online (Sandbox Code Playgroud) 我的数据自然是分段的,并且来自不同的来源,因此我writev按如下方式使用该函数。
char *buf0 = "short string\n";
struct bar *my_bar;
my_baz = get_my_baz();
iov[0].iov_base = buf0;
iov[0].iov_len = strlen(buf0);
iov[1].iov_base = my_bar;
iov[1].iov_len = sizeof (struct bar);
bytes_written = writev (sockfd, iov, 3);
Run Code Online (Sandbox Code Playgroud)
我想发送我的所有数据。如果 writev 一次只写入部分数据怎么办,例如:
bytes_written = 1;
Run Code Online (Sandbox Code Playgroud)
如何继续发送剩余数据?在write函数中,我们可以使用这个方法,那么writev呢?
只是一个简单的问题,但我无法\xe2\x80\x99t 在任何地方找到答案。将所有目标文件放入存档时,如何指示 clang++ 仅获取所需的目标文件进行链接,以避免由于 archive\xe2\x80\xaf 中不需要的符号而导致未定义符号错误?
\nc++ ×7
node.js ×6
asynchronous ×1
c ×1
d3.js ×1
ibm-mq ×1
java ×1
javascript ×1
linker ×1
linux ×1
llvm-clang ×1
node-gyp ×1
node.js-nan ×1
sockets ×1
unix-ar ×1
v8 ×1