是否有可能从java中的字节数组中获取特定字节?
我有一个字节数组:
byte[] abc = new byte[512];
Run Code Online (Sandbox Code Playgroud)
我希望这个数组有3个不同的字节数组.
我试过abc.read(byte[], offset,length)但只有当我将偏移量设为0时才有效,对于任何其他值,它会引发IndexOutOfbounds异常.
我究竟做错了什么?
我之前用另一个名字问了这个问题,但删除了它,因为我没有很好地解释它.
假设我有一个管理文件的类.假设此类将文件视为具有特定文件格式,并包含对此文件执行操作的方法:
class Foo {
std::wstring fileName_;
public:
Foo(const std::wstring& fileName) : fileName_(fileName)
{
//Construct a Foo here.
};
int getChecksum()
{
//Open the file and read some part of it
//Long method to figure out what checksum it is.
//Return the checksum.
}
};
Run Code Online (Sandbox Code Playgroud)
假设我希望能够对计算校验和的这个类的部分进行单元测试.单元测试加载到文件中的类的部分是不切实际的,因为要测试getChecksum()方法的每个部分,我可能需要构建40或50个文件!
现在假设我想在类中的其他地方重用校验和方法.我提取方法,使它现在看起来像这样:
class Foo {
std::wstring fileName_;
static int calculateChecksum(const std::vector<unsigned char> &fileBytes)
{
//Long method to figure out what checksum it is.
}
public:
Foo(const std::wstring& fileName) : fileName_(fileName)
{
//Construct a …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法将Mercurial标签嵌入到我的C/C++代码中.
基本上我希望标签字符串最终成为一个版本号(major.minor.rev),自动插入我的C代码的确定位置作为静态字符串.
总体目标是,在使用'-v'命令行参数执行时,可以查询应用程序的版本号.任何不涉及尝试嵌入Mercurial标签的替代方法也将作为答案受到欢迎.
我在Linux环境中使用Code :: Blocks,因此解决方案不能依赖Visual Studio功能.
我有一个JavaScript类,如下所示:
function SomeFunction()
{
this.doSomething(function()
{
this.doSomethingElse();
});
this.doSomethingElse = function()
{
}
}
Run Code Online (Sandbox Code Playgroud)
此代码抛出一个错误,因为传递给doSomething()的函数内部的"this"范围与该函数外部的"this"范围不同.
我理解为什么会这样,但处理这个问题的最佳方法是什么?这就是我最终做的事情:
function SomeFunction()
{
var thisObject = this;
this.doSomething(function()
{
thisObject.doSomethingElse();
});
this.doSomethingElse = function()
{
}
}
Run Code Online (Sandbox Code Playgroud)
这很好,但它只是感觉像一个黑客.只是想知道某人是否有更好的方法.
我有一个例子,每次我使用迭代器时我都可以使用它,但它可以在for循环中正常工作.所有代码都使用执行方法的本地变量.我很难过.有一个关于迭代器的事实我不知道,或者.Net中有一个诚实的善良错误.我打赌前者.请帮助.
此代码每次都可靠地工作.它一次一个地循环(假设10)所有元素并启动一个新线程,将整数作为方法中的参数传递给新线程.它启动10个线程,每个项目一个.1,2,3,4,5,6,7,8,9,10 - 这总是有效的.
工作代码:
//lstDMSID is a populated List<int> with 10 elements.
for(int i=0; i<lstDMSID.Count; i++)
{
int dmsId = lstDMSID[i];
ThreadStart ts = delegate
{
// Perform some isolated work with the integer
DoThreadWork(dmsId);
};
Thread thr = new Thread(ts);
thr.Name = dmsId.ToString();
thr.Start();
}
Run Code Online (Sandbox Code Playgroud)
而这段代码实际上重复了元素.它一次迭代(比如说10)所有元素并开始一个新线程.它启动10个线程,但它不能可靠地获得所有10个整数.我看到它开始1,2,3,3,6,7,7,8,9,10.我正在失去数字.
忙碌的代码:
//lstDMSID is a populated List<int> with 10 elements.
foreach(int dmsId in lstDMSID)
{
ThreadStart ts = delegate
{
// Perform some isolated work with the integer
DoThreadWork(dmsId);
};
Thread thr = …Run Code Online (Sandbox Code Playgroud) 我有一个客户表,其中包含有关我们客户的信息(ID,登录名,姓名,联系信息,不同选项,TS列等,约15列,〜几百个客户).
现在我们需要向我们最大的客户发送每日更新(<10%的客户).我需要存储发送给客户的最新更新的时间戳,所以下次我只发送新的更新(我的意思是在TS大于存储的TS的订单行中更新).
如果我将一个新列"LastUpdatesSentTS"添加到customers表中,那么,据我所知,它将符合规范化规则(如果没有,请提供证明它将破坏规范化的链接).
但是,正如我也知道,从物理数据库设计的角度,最好是创建2列[客户,LastUpdatesSentTS]新表,因为客户只有不到10%的有TS存储的信息.我的意思是,如果我将列添加到customers表 - 大多数客户在该列中将为null.另外,如果我创建一个单独的新表,也许这将是更好地从客户表中删除布尔列"SendUpdates"(因为我将能够了解哪些客户需要更新,通过连接客户表,新表发送).此外,在这种情况下,我担心在几年内我会有一堆非常小的表,当它全部可以在客户表中(没有按照我的理解打破规范化).
简单来说,我看到了两种可能的表格设计:
1)
Table customers:
[CustomerID, Name, ..., SendUpdates, LastUpdatesSentTS]
Run Code Online (Sandbox Code Playgroud)
2)
Table customers:
[CustomerID, Name, ...]
Table customer_updates_sending:
[CustomerID, LastUpdatesSentTS]
Run Code Online (Sandbox Code Playgroud)
你怎么看?
我正在制作一个游戏,我有一个子弹飞来飞去.子弹完成后,我做bullets.erase(bullets.begin()+ i); 然后子弹消失了.然而,它似乎没有得到记忆棒.如果我创造了5000个子弹,那么在这些子弹消失之后再创建5,000个子弹,内存保持不变,但如果我创造5000多个,而这些5000个飞行,它将分配新的空间.我该怎么办才能真正释放这段记忆?
我是iphone开发的新手.我正在解析一个xml文件并在表格的每一行显示标题,日期,视图和摘要.摘要的内容很大,所以在单元格中只显示前3个单词.我增加了行的高度.我的单元格中显示了3个单词.如何在单元格中正确显示,并且应显示完整的内容.请帮助我.谢谢.
c++ ×3
java ×3
.net ×1
arrays ×1
boost-test ×1
byte ×1
bytearray ×1
c ×1
c# ×1
cell ×1
codeblocks ×1
database ×1
heap ×1
iphone ×1
javascript ×1
memory ×1
mercurial ×1
multiline ×1
mysql ×1
objective-c ×1
raii ×1
sql ×1
sql-server ×1
unit-testing ×1
vector ×1