小编amn*_*amn的帖子

可以用Java控制对象的身份,如果是,如何控制?

这是一个简单的编程问题.我不是Java专家.假设我使用自定义类Company和Employee的对象,方式与许多RDBMS示例的方式类似:

class Employee
{
    Company company;
}

class Company
{
    String name;
}
Run Code Online (Sandbox Code Playgroud)

我需要保证不同的Company对象具有唯一的名称 - 即没有两个这样的对象可能具有相同的名称,因为从我的角度来看它没有任何意义,也只是吃内存 - 如果两个员工在IBM工作,那么有一个单个Company对象name,期间.

我现在的想法是将Company构造函数设置为私有 - 以便将具有任意名称的公司对象分配的工作委托给受信任的方法 - 假设它将拒绝任何后续尝试创建具有已存在的名称的对象或返回现有的或新的对象(必要时创建一个).

问题是,我不确定如何优雅地完成这一任务.一件好事就是O(n)每次Company请求具有名称的对象时都不必进行查找- 所以为了方便我可能会使用哈希映射或二叉树吗?我还想覆盖Company识别对象的方式- 这导致我:我会覆盖Object.equals和/或Object.hashCode方法吗?

java identity hashmap map

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

无法在ES6类定义中定义原型属性

我正在尝试ES6语法,发现我无法在类定义中定义原型属性或实例属性,为什么禁止它呢?

我MyClass.prototype.prop=1之前使用的是,通过babel编译器尝试ES7如下,仍然无法定义原型属性.

class MyClass{
  prop=1;
  static sProp=1;
}
Run Code Online (Sandbox Code Playgroud)

我不认为define instance属性是危险的,我自己的浏览器游戏中有2例需要原型属性:

  1. 子类实例需要从基类继承相同的属性值:

    var Building=function(){...}
    Building.prototype.sight=350;
    TerranBuilding.CommandCenter=...(CommandCenter extends Building)
    TerranBuilding.Barracks=...(Barracks extends Building)
    
    Run Code Online (Sandbox Code Playgroud)

所以CommandCenter和Barracks都将拥有与350相同的建筑物视野.

new CommandCenter().sight===new Barracks().sight//All buildings have same sight
Run Code Online (Sandbox Code Playgroud)
  1. 缓冲效果覆盖原始属性并删除缓冲区

    Marine.prototype.speed=20
    var unit=new Marine()
    unit.speed===20//get unit.__proto__.speed 20
    unit.speed=5//Buffer:slow down speed, unit.speed will override unit.__proto__.speed
    delete unit.speed//Remove buffer
    unit.speed===20//true, speed restore
    
    Run Code Online (Sandbox Code Playgroud)

所以我认为它应该添加一种方法来设置原型属性而不是完全禁止它,或者你能提供一些其他解决方案来处理上述两种情况吗?

javascript babel ecmascript-6

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

为什么在运行mandelbrot brainf ***程序时我的程序总是卡住?

我想提高自己的C语言技能,所以我搜索了一些程序的想法。

有人建议创建一个简单的Brainf ***解释器,然后创建一个编译器。所以我在这里。

我创建了解释器,并且按预期运行,但Mandelbrot程序除外:

A mandelbrot set fractal viewer in brainfuck written by Erik Bosman
+++++++++++++[->++>>>+++++>++>+<<<<<<]>>>>>++++++>--->>>>>>>>>>+++++++++++++++[[
>>>>>>>>>]+[<<<<<<<<<]>>>>>>>>>-]+[>>>>>>>>[-]>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>[-]+
<<<<<<<+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>>+>>>>>>>>>>>>>>>>>>>>>>>>>>
>+<<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+[>>>>>>[>>>>>>>[-]>>]<<<<<<<<<[<<<<<<<<<]>>
>>>>>[-]+<<<<<<++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>+<<<<<<+++++++[-[->>>
>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>+<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[[-]>>>>>>[>>>>>
>>[-<<<<<<+>>>>>>]<<<<<<[->>>>>>+<<+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>
[>>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<+<<]>>>>>>>>]<<<<<<<<<[<<<<<<<
<<]>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<<<]>>>>>>>>>+++++++++++++++[[
>>>>>>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[
>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->>[
-<<+>>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<
<<[>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<
[>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>>
>>>>[>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+
<<<<<<[->>>[-<<<+>>>]<<<[->>>+>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>
>>>>>>>]<<<<<<<<<[>>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<<]>>[->>>>>>>>>+<<<<<<<<<]<<
+>>>>>>>>]<<<<<<<<<[>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<
<]<+<<<<<<<<<]>>>>>>>>>[>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>>
>>>>>]<<<<<<<<<-<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+>>>>>>>>>>>>>>>>>>>>>+<<<[<<<<<<
<<<]>>>>>>>>>[>>>[-<<<->>>]+<<<[->>>->[-<<<<+>>>>]<<<<[->>>>+<<<<<<<<<<<<<[<<<<<
<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>[-<<<<->>>>]+<<<<[->>>>-<[-<<<+>>>]<<<[->
>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<
<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]<<<<<<<[->+>>>-<<<<]>>>>>>>>>+++++++++++++++++++
+++++++>>[-<<<<+>>>>]<<<<[->>>>+<<[-]<<]>>[<<<<<<<+<[-<+>>>>+<<[-]]>[-<<[->+>>>-
<<<<]>>>]>>>>>>>>>>>>>[>>[-]>[-]>[-]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-]>>>>>>[>>>>>
[-<<<<+>>>>]<<<<[->>>>+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>[-<<<<<<<<
<+>>>>>>>>>]>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>>>>>>>]+>[-
]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[>+>>>>>>>>]<<<
<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<<<[->>[-<<+>>]<
<[->>+>+<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[>[->>>>
>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[>[-]<->>>
[-<<<+>[<->-<<<<<<<+>>>>>>>]<[->+<]>>>]<<[->>+<<]<+<<<<<<<<<]>>>>>>>>>[>>>>>>[-<
<<<<+>>>>>]<<<<<[->>>>>+<<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>+>>>>>>>>
]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<<<[->>[-<<+
>>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[>
[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[>[-
]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>>>>>>
[>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>++++++++
+++++++[[>>>>>>>>>]<<<<<<<<<-<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[>>>>>>>>[-<<<<<<<+
>>>>>>>]<<<<<<<[->>>>>>>+<<<<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>>[
-]>>>]<<<<<<<<<[<<<<<<<<<]>>>>+>[-<-<<<<+>>>>>]>[-<<<<<<[->>>>>+<++<<<<]>>>>>[-<
<<<<+>>>>>]<->+>]<[->+<]<<<<<[->>>>>+<<<<<]>>>>>>[-]<<<<<<+>>>>[-<<<<->>>>]+<<<<
[->>>>->>>>>[>>[-<<->>]+<<[->>->[-<<<+>>>]<<<[->>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]
+>>>>>>[>>>>>>>>>]>+<]]+>>>[-<<<->>>]+<<<[->>>-<[-<<+>>]<<[->>+<<<<<<<<<<<[<<<<<
<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<<<<
[<<<<<<<<<]>>>>[-<<<<+>>>>]<<<<[->>>>+>>>>>[>+>>[-<<->>]<<[->>+<<]>>>>>>>>]<<<<<
<<<+<[>[->>>>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>>[->>>+<<<]<]>[->>>-<<<<<<<<<
<<<<<+>>>>>>>>>>>]<<]>[->>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>>+<<<]<<
<<<<<<<<<<]>>>>[-]<<<<]>>>[-<<<+>>>]<<<[->>>+>>>>>>[>+>[-<->]<[->+<]>>>>>>>>]<<<
<<<<<+<[>[->>>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>[->>>>+<<<<]>]<[->>>>-<<<<<<<
<<<<<<<+>>>>>>>>>>]<]>>[->>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>]>]<[->>>>+<<<<
]<<<<<<<<<<<]>>>>>>+<<<<<<]]>>>>[-<<<<+>>>>]<<<<[->>>>+>>>>>[>>>>>>>>>]<<<<<<<<<
[>[->>>>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>>[->>>+<<<]<]>[->>>-<<<<<<<<<<<<<<
+>>>>>>>>>>>]<<]>[->>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>>+<<<]<<<<<<<
<<<<<]]>[-]>>[-]>[-]>>>>>[>>[-]>[-]>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>[-<
<<<+>>>>]<<<<[->>>>+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[
[>>>>>>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+
[>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->>
[-<<+>>]<<[->>+>+<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<
<[>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[
>[-]<->>>[-<<<+>[<->-<<<<<<<+>>>>>>>]<[->+<]>>>]<<[->>+<<]<+<<<<<<<<<]>>>>>>>>>[ …
Run Code Online (Sandbox Code Playgroud)

c interpreter brainfuck mandelbrot

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

哪一个是消息,哪个是HTTP术语中的实体?

我试图更好地理解HTTP内部结构,并且在规范中经常提到"实体"和"消息",奇怪的是,如果没有正确的解释,信不信由你.根据我收集的内容,即使在分配请求/响应链和/或传输编码碎片规则时,也会识别内容本身,而另一个则识别单个HTTP请求的内容 - 即标题后面的内容以CRLF结束.我的问题是我无法弄清楚究竟是哪一个.

http

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

MySQL:"唯一"列字段是否意味着索引,如果是,为什么?

虽然我理解在一个唯一列上有一个索引非常方便 - 为了轻松有效地检查值冲突,我认为应该由程序员来指定一个唯一的字段列是否有索引,关于尺寸与速度优化.

据我所知,MySQL自动索引指定为唯一的表列.是这样吗?

有没有什么理由MySQL似乎不能有没有索引的唯一列?是的,每个值插入/更新都将是O(number_of_rows)操作而没有一个,但就像我说的那样,程序员是否应该对该决定征税?

只是好奇!

mysql database optimization

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

用于检测图像中特定特征的存在的好方法

我做了一个视频聊天,但像往常一样,很多男人都喜欢嗯,滥用服务(我把它留给你来判断这种滥用的性质),这不是我支持的任何方式,也不是大多数我的用户 不,我没有偷走chatroulette.com :-)坦率地说,我半尴尬地把它带到这里,但我的问题是技术性和相当具体的:

我想基于他们的视频内容过滤/拒绝用户,因为这个内容是犯罪人物,比如用户在相机上闪烁他的垃圾.什么样的图像比较算法适合我的需求?

我花了一周左右的时间阅读一些科学论文,并且已经了解了多种理论及其实现,例如SIFT,SURF和一些基于小波的方法.当然,这些中的每一个都具有缺点和优点.但由于我的图像比较的性质非常具体 - 如果在一系列位置的视频中遇到某个身体部位而拒绝服务 - 我想知道哪种方法最适合我?

目前,我倾向于以下内容(基于小波的加上我认为是一些专有创新):http: //grail.cs.washington.edu/projects/query/

通过上述内容,我可以简单地绘制违规的身体部位,并且期望违规内容被视为基于阈值的匹配.再说一次,我不确定这种方法对于转换是否是不变的,如果是这样的话,那么这篇文章是不是真的具体.

或者,我认为SURF实施可以做到,但我担心它可能会给我误报.是否可以对此类实施进行培训,以识别/赋予特定功能权重?

我知道这里有很多关于SURF和SIFT的问题,但是大多数都是通用的,因为它们通常解释了如何"比较"两个图像.我的比较是特定功能,而不是通用的.我需要一种方法,不仅可以比较两个相似的图像,而且可以为我提供一个特征的等级/索引/权重(但是该方法可以让我描述它,无论是图像本身还是其他东西)存在于图片.

image-comparison image-processing surf sift

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

有人能给我一个很好的解释非阻塞套接字的"发送"行为吗?

我现在已经阅读了至少10次文档,并且还阅读了大约10个代码片段和完整程序,其中非阻塞套接字用于发送数据.问题是,有些教程要么适合初学者(Beejs fi),要么在他们的假设中非常草率; 那些不复杂的是专门的代码示例,无法解释他们为什么这么做.send在我看来,即使是SO知识库也没有详尽地涵盖整个行为范围.我所追求的是有关fe的详细信息:

  • 返回代码0的确切含义是什么,是否值得检查,errno或者只是在没有进一步调查的情况下丢弃连接?
  • 获得负回报值是否需要关闭连接变坏,或者只是这样,除非errno是EWOULDBLOCK,EAGAIN或EINTR(......其他)?
  • errno返回值是否值得检查> 0?显然,该值表示"已发送"的数据量(在引号中,因为它确实是一个很长的过程,正确),但由于套接字是非阻塞的,这是否意味着可以立即发出另一个呼叫,或者,errno再次,一个人应该等待下一个发送时机(使用select/poll/epoll)?
  • 基本上,首先检查返回值,然后才检查errno值?或者,也许send将errno在每次调用,返回值,而不管?这会使错误检查更容易......
  • 如果有人获得EINTR,那么程序要采取什么样的良好,强健的行为呢?只需记录状态并在下一次发送时重试,比如EWOULDBLOCK和EAGAIN?
  • 是否为一个检查都 EWOULDBLOCK 和 EAGAIN?我们可以相信两者具有相同的价值,还是依赖于实施?
  • 是否send返回EMSGSIZE了流式套接字?如果没有,那么没有缓冲区大小太大,对吧?
  • 返回值本身是否等于任何已知的错误代码?

如果你能提供一个强大的非阻塞发送代码的例子,那将是绝对赞赏的.

sockets nonblocking send berkeley-sockets

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

为什么park/unpark有60%的CPU使用率?

最近我们开始使用YJP 11.0.9对我们的应用程序(基于XMPP的聊天服务器)进行压力测试.在我们的测试期间,我们发现了以下奇怪

  1. 采样显示sun.misc.Unsafe.unpark(Object)占用了60%的CPU.
  2. 对于同一个应用程序跟踪显示LockSupport.park(Object)占用了52%的CPU.

我做了多次测试来确认结果,每次我得到类似的结果.

我无法理解为什么unpark应该花费60%的时间以及为什么跟踪显示完全相反的结果.

有人可以帮助我理解这些结果.我在这里错过了什么吗?

环境:

java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

java profiling yourkit

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

使用别名显式模板实例化?

头文件.h

template <int>
class FiniteElement {
public:
    int GetDOF();
};

using FiniteElement2D = FiniteElement<3>;
using FiniteElement3D = FiniteElement<6>;
Run Code Online (Sandbox Code Playgroud)

源码.cpp

#include "Header.h"

//template class FiniteElement<3>;
//template class FiniteElement<6>;
template FiniteElement2D;  // Using alias for explicit template instantiation !!!
template FiniteElement3D;

template <int DOF>
int FiniteElement<DOF>::GetDOF() {
    return DOF;
}
Run Code Online (Sandbox Code Playgroud)

主要.cpp

#include "Header.h"
#include <iostream>

int main() {
    FiniteElement3D Elem;
    std::cout << Elem.GetDOF();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,上面的程序使用 Visual Studio 2015 Update 3 进行编译和链接。我喜欢允许使用别名进行显式模板实例化的想法,但它似乎不适用于 gcc 或 clang。

这是即将推出的标准的功能还是 VS 的特定功能?

c++ templates visual-studio-2015 c++17

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

如何修复AES解密密文头部的“垃圾”?

我正在使用由cryptoNode.js 的一部分模块实现的 AES 256 ,以评估我是否可以将它用于我计划作为我正在设计的应用程序的一部分的特定数据保护功能。

我正在尝试验证一些加密的任意明文的解密,但我无法使原始明文和解密结果匹配,这意味着我的加密、解密或两者都有问题。

据我所知,我最好选择一个随机初始化向量 (IV),我确实使用了它crypto.randomBytes(16)——证据表明(文档没有说太多)它需要是 128 位。我显然也需要 CBC 模式,这是有道理的,因为我的用例要求明文具有任意长度。我也不需要 PBKDF2 或任何类似的东西,因为我自己选择自己的密钥,这根本与密码无关。

现在,其中一些似乎可以正常工作,但是我从解密中获得的明文的前 16 个字节是“乱码”。预感告诉我这与填充、IV 或两者有关。我不确定为什么我应该选择 IV,Decipher但无论如何,只有部分解密的明文与原始文本匹配,我不知道为什么。

用代码解释:

var key = fs.readFileSync("/root/key"); // 256 bits worth of key from a file

function encrypt(plaintext) {
    var cipher = crypto.createCipheriv("aes-256-cbc", key, crypto.randomBytes(16));
    return Buffer.concat([ cipher.update(plaintext), cipher.final() ]);
}

function decrypt(ciphertext) {
    var decipher = crypto.createDecipheriv("aes-256-cbc", key, crypto.randomBytes(16));
    return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
}

var plaintext = new Buffer("Quick brown fox jumps over the lazy dog.");
Run Code Online (Sandbox Code Playgroud)

评估 …

cryptography aes node.js

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