我正在提出这个问题,寻找有关如何设计系统的实用建议.
像amazon.com和pandora这样的网站拥有并维护着庞大的数据集来运行他们的核心业务.例如,亚马逊(以及其他所有主要的电子商务网站)都有数以百万计的待售产品,这些产品的图片,价格,规格等等.
忽略来自第三方卖家的数据和用户生成的内容,所有"东西"必须来自某个地方,并由某人维护.它也非常详细和准确.怎么样?他们是如何做到的呢?是否只有一大批数据录入员或他们设计了系统来处理咕噜咕噜的工作?
我的公司情况类似.我们保留了巨大的(数千万条记录)汽车零件目录和他们适合的汽车.我们已经有一段时间了,并且已经提出了许多程序和流程来保持我们的目录不断增长和准确; 但是,似乎要将目录增长到x项目,我们需要将团队扩展到y.
我需要找到一些方法来提高数据团队的效率,希望我可以从其他人的工作中学习.任何建议都表示赞赏,更多的是内容的链接,我可以花一些时间阅读.
我正在尝试编写解压缩zip存档的代码并将输出放在另一个文件夹中.
我必须使用第三方库吗?有没有人有一些代码让我开始?
ZipEntry dataZE;
InputStream isData = getClass().getResourceAsStream("/" + dataName + ".zip");
StringBuffer sbData = new StringBuffer();
ZipInputStream dataZIS = new ZipInputStream(isData);
FileConnection file =
(FileConnection)Connector.open(
"file:///SDCard/BlackBerry/documents/" + filename,
Connector.READ_WRITE
);
if (!file.exists()) {
file.mkdir();
}
while ((dataZE = dataZIS.getNextEntry()) != null) {
out.write(dataZE );
out.flash();
dataZIS.closeEntry();
}
Run Code Online (Sandbox Code Playgroud) 我有一个Observable序列,可以快速突发产生事件(即:一个接一个地发生五个事件,然后是长时间延迟,然后是另一个快速突发事件等).我希望通过在事件之间插入一个短暂的延迟来平滑这些突发.想象一下以下图表作为示例:
Raw: --oooo--------------ooooo-----oo----------------ooo| Buffered: --o--o--o--o--------o--o--o--o--o--o--o---------o--o--o|
我目前的方法是在可以Observable.Interval()从原始流中拉出另一个事件时通过该信号生成类似节拍器的计时器.问题是我无法弄清楚如何将该计时器与我的原始无缓冲可观察序列相结合.
IObservable.Zip()接近于做我想要的,但它只有在原始流比定时器更快地产生事件时才有效.一旦原始流中存在显着的间歇,计时器就会建立一系列不需要的事件,然后立即与原始流中的下一个事件突发事件配对.
理想情况下,我想要一个具有以下函数签名的IObservable扩展方法,该方法生成我上面概述的bevaior.现在,来救我的StackOverflow :)
public static IObservable<T> Buffered(this IObservable<T> src, TimeSpan minDelay)
Run Code Online (Sandbox Code Playgroud)
PS.我是Rx的新手,所以如果这是一个简单的简单问题我很抱歉......
这是我最初的天真和简单的解决方案,它有很多问题:
public static IObservable<T> Buffered<T>(this IObservable<T> source, TimeSpan minDelay)
{
Queue<T> q = new Queue<T>();
source.Subscribe(x => q.Enqueue(x));
return Observable.Interval(minDelay).Where(_ => q.Count > 0).Select(_ => q.Dequeue());
}
Run Code Online (Sandbox Code Playgroud)
第一个明显的问题是内部订阅返回到原始源的IDisposable丢失,因此订阅无法终止.在此方法返回的IDisposable上调用Dispose会终止计时器,但不会触发现在不必要地填充队列的基础原始事件源,没有人从队列中提取事件.
第二个问题是,从原始事件流到缓冲流,无法通过异常或流末尾通知进行传播 - 在订阅原始源时,它们将被忽略.
最后但并非最不重要的是,现在我已经有了定期唤醒的代码,无论是否有任何工作要做,我宁愿避免在这个美妙的新反应世界中.
为了解决我最初的简单的方法遇到的问题,我写了很多更复杂的功能,其行为很像IObservable.Delay()(我用.net反射来读取这些代码,并用它作为我的函数的基础上).不幸的是,很多样板逻辑AnonymousObservable都不能在system.reactive代码之外公开访问,因此我不得不复制并粘贴大量代码.这个解决方案似乎有效,但考虑到它的复杂性,我对它的bug没有信心.
我无法相信没有办法使用标准的Reactive扩展的某些组合来实现这一点.我讨厌感觉我不必要地重新发明轮子,我试图建立的模式似乎是一个相当标准的模式.
我有一个工作表,偶尔由用户更新,用于制作加载项(.XLAM)。加载项位于网络共享上,并且用户链接到该共享。我希望使用户能够轻松更新此加载项(确保将其标记为只读)
我在这里看到了Ken Puls的有关部署Excel加载项的文章,但是.SaveCopyAs他使用的方法似乎无法接受文件类型。
该.SaveAs方法可以,但是当尝试此操作时,我收到一条消息,指出文件格式或扩展名无效,我已经尝试使用.XLAM和.XLA进行如下操作。
DeployPath = "C:\Menu.xlam"
.SaveAs Filename:=DeployPath, ReadOnlyRecommended:=True, FileFormat:=xlOpenXMLAddIn
Run Code Online (Sandbox Code Playgroud)
在这方面的任何帮助将不胜感激。
我想在班上再次调用__construct函数
这样的事情:
class user{
function __construct($ID = null)
{
if($ID){
//code
}
function findUser()
{
//code
$this->__construct($ID);
}
}
Run Code Online (Sandbox Code Playgroud)
当然这不起作用,但这样做的正确方法是什么?
我有一个cards52(13x4)的数组(cardsOut)和另外25个卡(5x5)的数组().我想随机将52张卡中的元素复制到25张卡片中.
另外,我不想在5x5阵列中有任何重复.所以这就是我所拥有的:
double row=Math.random() *13;
double column=Math.random() *4;
boolean[][] duplicates=new boolean[13][4];
pokerGame[][] cardsOut = new pokerGame[5][5];
for (int i=0;i<5;i++)
for (int j=0;j<5;j++){
if(duplicates[(int)row][(int)column]==false){
cardsOut[i][j]=cards[(int)row][(int)column];
duplicates[(int)row][(int)column]=true;
}
}
Run Code Online (Sandbox Code Playgroud)
此代码中有2个问题.首先,行和列的随机值仅生成一次,因此每次都将相同的值复制到5x5数组中.由于每次都复制相同的值,我不确定我的重复检查器是否非常有效,或者它是否有效.
我该如何解决?
我想将一个目录全局化以后处理头文件.但我想排除项目中的一些目录.现在默认方式是......
Dir["**/*.h"].each { |header|
puts header
}
Run Code Online (Sandbox Code Playgroud)
如果它位于排除目录中,则手动检查每个标头条目似乎效率低下.
我没有使用synEdit一段时间,但今天我发现我需要一个好的编辑器来支持脚本.当我去下载synEdit(我的思想已经及时冻结为"确定的事情")时,我发现原作者已经放弃了它.我知道FreePascal有一个synEdit版本 - 我听说有一个更近期的unicode版本"某处" - 但我在哪里可以获得最新和最好的版本?
如果可能的话,我更喜欢unicode支持,但更重要的是支持动态样式(能够添加令牌以强调下划线关键字,有点像Delphi在你访问你刚输入的类的变量时所做的那样).
我通过在Gemfile和'bundle install'中放入以下行来安装:
gem 'acts_as_list', '>= 0.1.0'
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用它时,结果并不像预期的那样:
technician.move_to_top #works => position = 1
technician.move_to_bottom #does not work properly; also makes position = 1
technician.move_higher #does not work; returns nil
technician.move_lower #does not work; also returns nil
Run Code Online (Sandbox Code Playgroud)
这个插件是不能用于rails 3还是我错过了一个步骤?
这是我正在使用的代码:
class WorkQueue < ActiveRecord::Base
has_many :technicians, :order => "position"
end
class Technician < ActiveRecord::Base
belongs_to :work_queue
acts_as_list :scope => "work_queue_id" #I also tried using work_queue
end
Run Code Online (Sandbox Code Playgroud)
这是控制台:
wq = WorkQueue.new
technician = Technician.last
wq.technicians << technician
Run Code Online (Sandbox Code Playgroud) 假设我有一个Dictionary<String, Tuple<T1,T2>>并且我想确定任何字典值是否具有T1的V1.我怎样才能最优雅地做到这一点?
LINQ?
c# ×2
java ×2
.net ×1
acts-as-list ×1
add-in ×1
bash ×1
blackberry ×1
buffering ×1
collections ×1
construct ×1
constructor ×1
database ×1
dataset ×1
delphi ×1
duplicates ×1
excel ×1
excel-addins ×1
excel-vba ×1
generics ×1
java-me ×1
large-data ×1
linq ×1
php ×1
random ×1
ruby ×1
shell ×1
synedit ×1
vba ×1
zip ×1