我的简单要求:读取一个巨大的(>一百万)行测试文件(对于这个例子假设它是某种类型的CSV)并保持对该行开头的引用以便将来更快地查找(读取一行,从X).
我首先尝试了一种天真而简单的方法,使用a StreamWriter并访问底层BaseStream.Position.不幸的是,这不符合我的意图:
给定包含以下内容的文件
Foo
Bar
Baz
Bla
Fasel
Run Code Online (Sandbox Code Playgroud)
这个非常简单的代码
using (var sr = new StreamReader(@"C:\Temp\LineTest.txt")) {
string line;
long pos = sr.BaseStream.Position;
while ((line = sr.ReadLine()) != null) {
Console.Write("{0:d3} ", pos);
Console.WriteLine(line);
pos = sr.BaseStream.Position;
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
000 Foo
025 Bar
025 Baz
025 Bla
025 Fasel
Run Code Online (Sandbox Code Playgroud)
我可以想象,流正在尝试提供帮助/效率,并且可能在需要新数据时读入(大)块.对我来说这很糟糕..
最后的问题是:在没有使用基本Stream并且手动搞乱\ r \n\r \n和字符串编码等的情况下逐行读取文件时获取(byte,char)偏移量的方法是什么?没什么大不了的,真的,我只是不喜欢建造可能存在的东西......
我有一个div设置为css类float,浮点数为:
.float {
display:block;
position:fixed;
top: 20px;
left: 0px;
z-index: 1999999999;
}
* html .float {position:absolute;}
Run Code Online (Sandbox Code Playgroud)
此类使元素保持在页面上的固定位置(*html部分使其在IE中工作).我正在使用javascript水平和垂直移动元素的位置.
我需要在javascript中获取div相对于浏览器窗口的绝对位置(div的浏览器窗口顶部和左侧有多少像素).现在,我使用以下内容:
pos_left = document.getElementById('container').offsetLeft;
pos_top = document.getElementById('container').offsetTop;
Run Code Online (Sandbox Code Playgroud)
上面的代码适用于IE,Chrome和FF,但在Opera中,它们都返回0.我需要一个适用于所有这些浏览器的解决方案.有任何想法吗?
顺便说一句:跟踪javascript所做的更改是可能的,但由于性能原因,这不是我要寻找的解决方案.另外,我没有使用jquery.
我在互联网上读到了这个偏移宏,但它没有解释它的用途.
#define offsetof(a,b) ((int)(&(((a*)(0))->b)))
Run Code Online (Sandbox Code Playgroud)
它想做什么以及使用它有什么好处?
解释我的问题最简单的方法可能是一个例子,所以让我定义一些数组:
>>> test = arange(25).reshape((5,5))
>>> test
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
>>> Xinds = array([1,2,3])
>>> Yinds = array([1,2,3])
Run Code Online (Sandbox Code Playgroud)
现在,如果我想要第1行,第2行和第3行以及第0列中的元素,我可以去:
>>> test[Yinds,0]
array([ 5, 10, 15])
Run Code Online (Sandbox Code Playgroud)
如果我想要第1,2和3行以及所有列中的项目,我可以去:
>>> test[Yinds, :]
array([[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试扩展它以获取第1,2和3行以及第1,2和3列中的元素,那就太惊讶了! - 我改为(1,1),(2,2)和(3,3)中的元素
>>> test[Yinds, Xinds]
array([ 6, 12, 18])
Run Code Online (Sandbox Code Playgroud)
而不是我想要的: …
这是完整的代码http://jsfiddle.net/vinex08/uhm26em1/
jQuery(function ($) {
var distance = $('.c').offset().top,
$window = $(window);
$window.scroll(function () {
if ($window.scrollTop() >= distance) {
$(".b").css({
position: 'fixed',
top: '0'
});
} else {
$(".b").css({
position: 'inherit',
top: '10'
});
}
});
});`
Run Code Online (Sandbox Code Playgroud)
它适用于Chrome和Firefox,但当我通过iPad AIR和iPhone检查时,效果甚至在"class c"达到顶部之前就会执行.
我正在尝试创建一个SUMIF函数,该函数可以在Excel工作表中的命名范围的特定列中动态添加值.
没有命名范围时,很容易做到这一点:
该公式选出了名称中包含"伦敦"的所有单元格,并总结了与伦敦相关的费用.
我想要做的是使用名为TripsData(A2:B5)的命名范围,并告诉SUMIF函数将该范围的第2列中的条目求和,以满足在其名称中使用伦敦的条件.
如何在不需要为第2列创建第二个命名范围的情况下完成此工作,只需告诉Excel在此命名范围的指定列中查找?索引/匹配仅返回一个值,以便在名称中有多个名为London的单元格时不起作用.
谢谢你的帮助!
正如jsPerf所展示的那样,赏金将在测试时通过最新版本的Firefox,Chrome和Internet Explorer获得最快的解决方案,或者在我自行决定创建此类解决方案时最有用的答案.Mwahahaha!
我将主要满足的是通吃的溶液偏移 S和未处理<span>,并添加突出显示的是,让parent.textContent = parent.textContent后面运行的偏移将重新的更新列表上的解决方案的亮点,但这不利的时间复杂度所以不是首选.
我有一个只包含文本的元素,我想强调一下.我也有一个数组[startline, startcol, endline, endcol],知道每行的长度.textContent,我可以标准化为[startoffset, endoffset].如何在每对偏移 s 之间突出显示?
这个问题比看起来更难,因为:
.textContent属性的索引执行突出显示.textContent一个或多个<span class="highlighted">而不改变父元素的textContent值,即突出显示的n倍为n嵌套内,使得文本<span class="highlighted">元素..textContent字符串给定索引(包括空格)的值.function highlight(parent, startoff, endoff) {
// …Run Code Online (Sandbox Code Playgroud)我更改了用于markerGoogle地图上的图像.新的图像比旧的更广泛的,我已经注意到,标记与对齐lat和lng使标志在于它是在水平中点lat和lng.这不是我想要的,我希望有lat和lng与左侧的标记对齐-我想,以抵消marker大约80px到右侧从默认位置.
我在excel ss中有一个动态定义的命名范围,它根据开始日期和结束日期从表中获取数据
=OFFSET(Time!$A$1,IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),1,MATCH(Date_Range_End,AllDates)-IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),4)
Run Code Online (Sandbox Code Playgroud)
但是如果日期范围在表中没有数据,则范围不存在(或者某些东西,idk).如何在VBA中编写代码以测试此范围是否存在?
我尝试过类似的东西
If Not Range("DateRangeData") Is Nothing Then
Run Code Online (Sandbox Code Playgroud)
但我得到"运行时错误1004,对象'_Global'的方法'范围'失败了."
我有3个表PostText,PostImage和PostVideo.现在我将来自上述三个表的数据组合成一个名为的单个数组userposts.
现在userposts我只想访问以offset 15开头的10条记录.
我怎样才能做到这一点?
我试过了userposts.first(10).它给了我前十条记录,但我想要从offset-15开始的10条记录.
提前致谢.