如何以有效的方式在J2ME中拆分字符串?
有一个StringTokenizer或String.split(String regex)在标准版(J2SE)中,但它们在微版(J2ME,MIDP)中不存在.
我使用此代码创建一个带有文件列表的.zip:
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));
for (int i=0;i<srcFiles.length;i++){
String fileName=srcFiles[i].getName();
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);
InputStream fis = new FileInputStream(srcFiles[i]);
int read;
for(byte[] buffer=new byte[1024];(read=fis.read(buffer))>0;){
zos.write(buffer,0,read);
}
fis.close();
zos.closeEntry();
}
zos.close();
Run Code Online (Sandbox Code Playgroud)
我不知道zip算法和ZipOutputStream是如何工作的,如果它在我读取并发送到'zos'之前写入所有数据,结果文件的字节大小可能与我选择另一个缓冲区大小不同.
换句话说,我不知道算法是否像:
读取数据 - >处理数据 - >创建.ZIP
要么
读取数据块 - >处理数据块 - >写入.ZIP中的块 - > | ^ ------------------------------------------------- -------------------------------------------------- --------------------------
如果是这种情况,哪种缓冲区大小最好?
更新:
我测试了这段代码,将缓冲区大小从1024更改为64,并压缩相同的文件:使用1024字节时,80 KB结果文件比使用64字节缓冲区小3个字节.在最短的时间内生成最小.zip的最佳缓冲区大小是多少?
在LINQ to SQL类,为什么属性是从外键创建EntitySet对象,实施IEnumerable,作为地方上的对象DataContext是Table其实现目标IQueryable?
编辑:澄清一下,这是一个例子,说明了我想要了解的内容.这个例子:
ctx.Matches.Where(x => x.MatchID == 1).Single()
.MatchPlayers.Max(x => x.Score);
Run Code Online (Sandbox Code Playgroud)
在以下位置点击数据库两次:
ctx.MatchPlayers.Where(x => x.MatchID == 1)
.Max(x => x.Score);
Run Code Online (Sandbox Code Playgroud)
只运行1个查询.以下是痕迹:
exec sp_executesql N'SELECT [t0].[MatchID], [t0].[Date]
FROM [dbo].[Matches] AS [t0]
WHERE [t0].[MatchID] = @p0',N'@p0 int',@p0=1
go
exec sp_executesql N'SELECT [t0].[MatchID], [t0].[PlayerID], [t0].[Score]
FROM [dbo].[MatchPlayers] AS [t0]
WHERE [t0].[MatchID] = @p0',N'@p0 int',@p0=1
go
Run Code Online (Sandbox Code Playgroud)
和
exec sp_executesql N'SELECT MAX([t0].[Score]) AS [value]
FROM [dbo].[MatchPlayers] AS [t0]
WHERE [t0].[MatchID] = @p0',N'@p0 int',@p0=1 …Run Code Online (Sandbox Code Playgroud) 我们在交付新版本时的政策是在我们的VCS中创建一个分支并将其处理给我们的QA团队.当后者发出绿灯时,我们会标记并发布我们的产品.分支保持接收(仅)错误修复,以便我们可以创建技术版本.这些错误修复随后合并在主干上.
在此期间,主干会看到主要的开发工作,并且可能会受到重构更改.
问题是需要有一个稳定的主干之间存在紧张关系(以便错误修复的合并成功 - 如果代码已被提取到另一个方法,或者移动到另一个类,通常不能)在引入新功能时需要重构它.
我们的政策是在经过足够的时间之前不进行任何重构,并且分支足够稳定.在这种情况下,可以开始对主干进行重构更改,并在主干和分支上手动提交错误修复.
但这意味着开发人员必须等待一段时间才能在主干上进行任何重构更改,因为这可能会破坏从分支到主干的后续合并.并且必须手动将分支中的错误移植到主干上是很痛苦的.在我看来,这妨碍了发展......
你怎么处理这种紧张局势?
谢谢.
我对DB设计问题的回答提出了一种叫做单表继承的东西.我已经对此进行了一些搜索,但我似乎无法找到关于它的更清晰的信息.
基本上我从中可以理解的是,你有一个包含所有字段的大表,还有一个类型字段 - 然后你的ORM层使用type字段为你提供不同的对象视图.那是对的吗?
更重要的是,单表继承是一种"认可的"数据库设计技术吗?我的意思是说使用它是"明智的"吗?使用它也是安全的,还是会引起问题?
另一个问题是它在rails中的效果如何?我从rails找到了一些引用 - 但它是否以非传统的方式做事?
任何帮助非常感谢.
我正在创建一系列迁移,其中一些是标准的"创建表"或"修改表"迁移,其中一些迁移修改数据.我正在使用我的实际ActiveRecord模型来修改数据,a:
Blog.all.each do |blog|
update_some_blog_attributes_to_match_new_schema
end
Run Code Online (Sandbox Code Playgroud)
问题是,如果我加载Blog类,然后修改表,然后再次使用Blog类,模型具有旧的表定义,并且无法保存到新表.有没有办法重新加载类及其属性定义,以便我可以重用它们?
我一直试图在一个月内跟踪这个,但没有任何成功.我在汽车广告网站上有这段代码,基本上允许缩略图在搜索结果中旋转,因为汽车有多张图片.您可以在以下操作中看到它:
它建立在mootools 1.2框架之上.问题是,当一个页面充满了那些旋转图片时,这个脚本在Firefox 3下会消耗相当多的内存,例如这个库存页面:
您可以在此处查看相关脚本的来源:
关于什么导致内存泄漏的任何想法?奇怪的是这个代码在IE7下运行正常.
在WPF中使用画笔,模板和样式等资源时,可以将它们指定为StaticResources
<Rectangle Fill="{StaticResource MyBrush}" />
Run Code Online (Sandbox Code Playgroud)
或者作为DynamicResource
<ItemsControl ItemTemplate="{DynamicResource MyItemTemplate}" />
Run Code Online (Sandbox Code Playgroud)
大多数时候(总是?),只有一个工作,另一个将在运行时抛出异常.但我想知道原因:
我假设静态与动态之间的选择并不像看起来那么随意......但我没有看到模式.
在我的C++上读了一下,发现这篇关于RTTI(运行时类型识别)的文章:http://msdn.microsoft.com/en-us/library/70ky2y6k(VS.80)
.aspx.嗯,这是另一个主题:) - 但是,我在type_info-class中偶然发现了一个奇怪的说法,即关于::name-method.它说:" type_info::name成员函数返回一个const char*以空字符结尾的字符串,表示该类型的人类可读名称.指向的内存是缓存的,不应该直接取消分配."
你怎么能自己实现这样的东西!?我以前经常在这个问题上苦苦挣扎,因为我不想char为调用者删除一个新的-array,所以我坚持std::string到目前为止.
因此,为了简单起见,假设我想创建一个返回的方法"Hello World!",让我们调用它
const char *getHelloString() const;
Run Code Online (Sandbox Code Playgroud)
就个人而言,我会以某种方式使它(Pseudo):
const char *getHelloString() const
{
char *returnVal = new char[13];
strcpy("HelloWorld!", returnVal);
return returnVal
}
Run Code Online (Sandbox Code Playgroud)
..但这意味着调用者应该delete[]在我的返回指针上做一个:(
Thx提前
我刚刚注意到你可以在C#中做到这一点:
Unit myUnit = 5;
Run Code Online (Sandbox Code Playgroud)
而不是必须这样做:
Unit myUnit = new Unit(5);
Run Code Online (Sandbox Code Playgroud)
有谁知道我怎么能用自己的结构实现这个目标?我看了一下带有反射器的Unit结构,并注意到正在使用TypeConverter属性,但是在为我的struct创建了一个自定义TypeConverter后,我仍然无法让编译器允许这种方便的语法.
java ×2
.net ×1
activerecord ×1
algorithm ×1
branch ×1
buffer ×1
c# ×1
c++ ×1
char ×1
ienumerable ×1
iqueryable ×1
java-me ×1
javascript ×1
linq ×1
linq-to-sql ×1
memory-leaks ×1
merge ×1
migration ×1
mootools ×1
refactoring ×1
release ×1
resources ×1
return-value ×1
ruby ×1
string ×1
struct ×1
wpf ×1
xaml ×1
zip ×1