小编Cap*_*ous的帖子

释放onPause而不是onDestroy中的资源

这是关于POST-honeycomb(即Android 3.0+),以下引用来自https://developer.android.com/reference/android/app/Activity.html

根据生命周期,onStop和onDestroy是可以杀死的,这意味着:

请注意上表中的"Killable"列 - 对于那些标记为可填充的方法,在该方法返回之后,托管该活动的进程可能在任何时候被系统杀死而不执行其代码的另一行

  1. 换句话说,的onStop(沿此事件之前发生的其他人)是保证被调用,但此刻的方法返回时,过程可能会死,所以的onDestroy是不能保证被调用.

    另一句话说:

    对于那些未标记为可填充的方法,系统不会从调用方法开始并在返回后继续执行活动的进程.

    其次是

    因此,活动处于可填充状态,例如,在onPause()之后到onResume()的开始之间.

  2. 但这并不符合什么上面所说的,除非这只相当于预蜂窝.对于POST蜂窝,情况并非如此,对吧?所以基本上,onPause和onStop都可以保证被调用.

  3. 假设我只在onDestroy中释放一个资源,那么这可能会导致泄漏,因为可能不会调用onDestroy,对吧?

  4. 然而,可以在此情况下(即的onDestroy不叫)出现,除了当过程由机器人本身被杀?是否有任何其他方案导致不调用onDestroy,从而泄漏资源.

  5. 当Android杀死资源将被破坏并且不会发生泄漏(即使我们没有明确释放资源吗?)这是真的吗?

请提供详细资料,说明这些陈述(1)(2)(3)(4)(5)是否正确.

android activity-lifecycle android-lifecycle

11
推荐指数
1
解决办法
1333
查看次数

Node.js:setInterval的替代方案,对游戏循环更精确

我的设置是一个多人游戏,带有用于异步传输数据的套接字.

现在,由于游戏的本质,我有一个游戏循环,应该每隔500毫秒进行一次玩家更新(例如位置,外观......).

var self = this;

this.gameLoop = setInterval(function()
{   
    for (var i = 0; i < playerSize; i++)
    {
        self.players.get(i).update();
    };
}, 500);
Run Code Online (Sandbox Code Playgroud)

我目前正在使用setInterval,但当我做了大约200个连接的基准时,setInterval漂移到1000毫秒而不是500毫秒,这使得整个游戏看起来很滞后.不幸的是,对于少量玩家而言,它还不够准确.(请注意,更新调用最多只需要大约100毫秒)

所以在研究之后,似乎没有其他选择产生只处理定时机制的过程?还是有其他选择吗?

任何人都已经做过这个,或者可以提供一些基本的想法/解决方案来解决这个问题?

完整代码:

Game.prototype.start = function()
{
    var average = 0;
    var cycles = 10;
    var prev = Date.now();

    this.thread = setInterval(function()
    {       
        console.log("interval time="+(Date.now() - prev));
        prev = Date.now();

        var s = Date.now();

        // EXECUTE UPDATES
    for (var i = 0; i < playerSize; i++)
    {
        self.players.get(i).update();
    };

        average += …
Run Code Online (Sandbox Code Playgroud)

javascript timer game-loop node.js

10
推荐指数
1
解决办法
4747
查看次数

水印文本重复对角css/html

如何用css/html实现以下水印文本("howbloggerz")?

在此输入图像描述

html css watermark

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

将元数据插入实时视频流

我想实现以下目标,但尚不清楚这是否可能。


目前的场景:

有人通过 OBS 将带有音频的视频流式传输到媒体服务器,客户端通过网站连接。

[OBS 流/视频流] -> [AWS/外部流服务] -> 客户端


通缉场景:

通过自定义媒体服务器捕获此流,并通过在直播期间的某些时刻注入某些元数据来对其进行操作 。注意live的重要性。

[OBS Stream/Video Stream] -> [My Custom Node.js Server to insert metadata] -> [AWS/External Streaming Service] -> Clients


想法:

例如,我想将流同步到某个弹出窗口。默认协议流似乎是来自 OBS 的 RTMP,但也许可以更改。在直播期间的给定时间,网站上的 html5 视频播放器可以从直播中读取这些标签(通过一些额外的库,如 video.js)并告诉 JS 应用程序显示一些文本。最后,它归结为将视频流同步到文本流(例如来自 websocket 连接)

可能的解决方案:

  • ID3 标签。我读到的MP3文件的ID3标签,但这似乎并没有什么我正在寻找,因为它需要一个完整的MP3档案,前期并没有用于流(动态地注入ID3在FFmpeg的实时流)。我想要的是动态地将元数据注入到这个流中。例如,在任何时间(动态选择)注入一个 id,例如引用数据库就足够了。

  • LTC/线性时间码/SMPTE是否可以使用 node.js 以某种方式将其嵌入到视频流中?这将使我能够将时间与客户端上的 ID 相匹配。

给定带有音频的传入视频流,是否可以这样做?如果是这样,流的格式是什么以及如何注入元数据?


编辑:浏览器中没有 Flash 时,似乎不支持 RTMP。这是行不通的,所以我需要使用另一种流格式,例如 HLS/FLV?

html javascript node.js http-live-streaming

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

Three.js:"选择工具"如何检测2D正方形和3D对象的交集

基本上我想要创建:

我有一个带有对象的3D地图,我想选择我屏幕上的2D框x1,y1到x2,y2中的所有对象.

任何想法如何做到这一点,因为我对如何开始毫无头绪.

提前致谢!

prevX并且prevY是鼠标按下的坐标:

function onDocumentMouseUp(event) {
  event.preventDefault();

  var x = (event.clientX / window.innerWidth) * 2 - 1;
  var y = -(event.clientY / window.innerHeight) * 2 + 1;

  var width = (x - prevX); //* window.innerWidth;
  var height = (y - prevY); //* window.innerHeight;
  var dx = prevX; //* window.innerWidth;
  var dy = prevY; //* window.innerHeight;

  console.log(
    dx + ',' + 
    dy + "," + 
    (dx + width) + "," + 
    (dy + height) + 
    ", …
Run Code Online (Sandbox Code Playgroud)

javascript intersection three.js raycasting

5
推荐指数
1
解决办法
2593
查看次数

Prolog:如何获得所有组合

我举例如下:

bag(b1)
bag(b2)

item(i1)
item(i2)
item(i3)
item(i4)
Run Code Online (Sandbox Code Playgroud)

现在我真的不明白我怎么能从中获得所有可能性?我必须使用所有的包.就像我应该得到这样的列表列表:

[ [together(b1, [i1,i2,i3,i4]), together(b2, [])] ,..., [together(b1, [i1]), together(b2, [i2,i3,i4])] [together(b1, [i1,i2]), together(b2, [i3,i4])] ]

所有可能的组合,但它必须使用所有项目.我知道我可以使用事实findall,但后来我被卡住了

这就是我所拥有的:

test(X) :-
findall(C, bag(C),Bags),
findall(K, item(K),Items),
something???
Run Code Online (Sandbox Code Playgroud)

关于从哪里开始的任何想法,因为我是无能为力的,我不明白如何思考实现这样的结果.

获得组合的可能想法:

item_combination(C) :-
    findall(I, item(I), Is),
    combination(Is, C).

combination(_, []).
combination(Set, [X|Xs]) :-
    select(X, Set, Set0),
    combination(Set0, Xs).
Run Code Online (Sandbox Code Playgroud)

我需要类似的东西,得到第一个包的组合然后,转到下一个包,采取组合,如果它是有效的(所有使用的项目)附加到列表,否则回到第一个袋与另一个组合等等...还是有更好的解决方案?

提前致谢!

combinations prolog

5
推荐指数
1
解决办法
1190
查看次数

Three.js tile使用平面几何体具有多个纹理

所以我正在尝试建立一个由瓷砖组成的基于3D的世界.

我已经成功地使用平面几何和高度值等设法做到了这一点.但是现在我已经到了可能需要改变一切的地步.

问题是我想要一个瓷砖有多个纹理(使用着色器因为我想要混合它们).我能够全局地做到这一点(因此每个图块将具有相同的纹理+使用一些uv映射).

但是我无法理解我将如何指定哪个图块具有哪些纹理(并且我有大约100个纹理),因为平面几何图形只有1个着色器材质.而且我也不确定通过着色器发送100个纹理是否是一个好主意?

所以我的问题基本归结为:

有没有一种体面/高效的方式将平铺/顶点链接到纹理,所以我可以保持平面几何.

- 如果是的话:怎么样?

- 如果不是:我应该单独创建每个图块(因此是1x1的平面)并将它们合并在一起(性能/顶点混合?)因此它充当单个平面(在这种情况下,合并平面由许多1x1平面组成)和每块瓷砖使用着色器(1x1平面)?

这些事情一般如何完成?

编辑:

一些额外的信息,因为似乎我的问题不是很清楚:

我想要的是一个瓷砖(2个面)有多个"materialIndexes"来表示.目前我需要有1个图块才能有3个纹理,所以我可以使用特定算法将它们混合在着色器中.

例如,我想要一个心形(红色的心/黑色背景)作为纹理,而不是基于我想要混合/更改其他2个纹理的颜色,所以我可以得到例如木心和蓝色背景.或者例如,我应该能够在正方形上均匀地混合4个纹理,每个纹理占正方形的1/4.但这里的重点不是纹理必须做什么,而是我如何为我的面孔/瓷砖指定这样的3,4或更多纹理.

javascript textures tile three.js

4
推荐指数
1
解决办法
5987
查看次数

JavaScript中的计算结果与Java不同

我认为我的问题很多.

Java中的计算:

int n = 4451 + 554 * 57;
n = n << 13 ^ n;
System.out.println(n * (n * n * 15731 + 789221) + 1376312589);
=> 587046333
Run Code Online (Sandbox Code Playgroud)

在JavaScript中:

var n = 4451 + 554 * 57;
n = n << 13 ^ n;
console.log(n * (n * n * 15731 + 789221) + 1376312589);
=> 4.043454188561781e+29
Run Code Online (Sandbox Code Playgroud)

JavaScript版本中的问题是什么?如何修复它,以便JavaScript的结果与Java结果相同?

编辑:试过:https://github.com/jtobey/javascript-bignum,但结果是0

var test = new BigInteger(295120061).multiply( new BigInteger(295120061) 
                                      .multiply(new BigInteger(295120061)) 
                                      .multiply(new BigInteger(15731)) 
                                      .add(new BigInteger(789221)))
                                      .add(new BigInteger(1376312589)); …
Run Code Online (Sandbox Code Playgroud)

javascript java math

3
推荐指数
1
解决办法
142
查看次数

Node.js:如何停止管道传输数据

我正在使用 request npm 模块创建一个请求。但是,如果内容类型不是 json,我希望流停止。目前,它不会停止,并且会生成错误,因为解压缩读取了无效的标头。我们如何停止流?

    var req = request(options)
    req
    .on('error', function (err) { console.log("err"); reject(err) })
    .on('response', function(response) { 

        if(response.headers['content-type'] != 'application/json')
        {
            console.log(response.headers['content-type'])
            req.destroy() // doesn't work
            this.destroy() // doesn't work
        }
    })
    .on('end', function () { resolve() })

    .pipe(gunzip)  // ERROR!
Run Code Online (Sandbox Code Playgroud)

stream node.js

3
推荐指数
1
解决办法
5470
查看次数