我一直在寻找有关如何实现一个允许你在Go中的某个时间执行任务的函数的例子,但我找不到任何东西.
我自己实现了一个,我在答案中分享它,所以其他人可以为自己的实现提供参考.
我想做这样的事情:http://javascript.about.com/library/blcmarquee1.htm
我引用的脚本似乎有点滞后(过时?),所以我想知道是否有人知道更好的解决方案.(jQuery解决方案欢迎.)
如果我在一个自动收报机通道上调用并调用stop(),则该通道会停止但不会关闭.
在这个例子中:
package main
import (
"time"
"log"
)
func main() {
ticker := time.NewTicker(1 * time.Second)
go func(){
for _ = range ticker.C {
log.Println("tick")
}
log.Println("stopped")
}()
time.Sleep(3 * time.Second)
log.Println("stopping ticker")
ticker.Stop()
time.Sleep(3 * time.Second)
}
Run Code Online (Sandbox Code Playgroud)
跑步产生:
2013/07/22 14:26:53 tick
2013/07/22 14:26:54 tick
2013/07/22 14:26:55 tick
2013/07/22 14:26:55 stopping ticker
Run Code Online (Sandbox Code Playgroud)
所以goroutine永远不会退出.有没有更好的方法来处理这种情况?我应该关心goroutine从未退出吗?
直到昨天,诸如此http://autoc.finance.yahoo.com/autoc?query=a&callback=YAHOO.Finance.SymbolSuggest.ssCallback之类的查询为股票代码和公司名称产生了一长串模糊/广泛匹配结果.
从今天开始,你就是特定区域和语言所需的b.)它只会产生与股票代码完全匹配的结果而不是公司名称.因此通常只会得到一个结果.
因此,对于http://autoc.finance.yahoo.com/autoc?query=y®ion=US&lang=en&callback=YAHOO.Finance.SymbolSuggest.ssCallback,现在只有一个结果:YAHOO.Finance.SymbolSuggest.ssCallback({"ResultSet": {"查询":"a","结果":[{"symbol":"A","name":"Agilent Technologies Inc.","exch":"NYQ","type":"S", "exchDisp": "纽约", "typeDisp": "公平"}]}});
任何想法如何a.)扩大匹配类型和b.)包括公司名称作为搜索字段?
我是Dart/Flutter的新手,想建立一个简单的应用程序,其中LinearProgressBar每秒都会更新.
没有太多的实际代码,我有以下设置工作.
一切都按预期工作,但有一个例外.当我在Android设备的后台移动应用程序时,'tick'会继续打印.
在原生Android上,当触发'onPause'事件时,我会取消我的定期计时器.
Flutter有类似的东西吗?我能找到的只是'initState'和'dispose'.但是,在将应用程序移动到后台时,不会调用Dispose.
我不希望计时器在后台继续滴答作响.
在我的研究中,我发现这个Stack Overflow问题onresume-and-onpause-for-widgets-on-flutter.它的答案建议使用TickerProviderStateMixin.
我用下面的方法.
class _BarItemState extends State<BarItem> with SingleTickerProviderStateMixin {
Ticker ticker;
num progress = 1.0;
@override
void initState() {
super.initState();
ticker = createTicker((duration) => setState(() {
debugPrint('tick');
progress = duration.inSeconds / 30;
}))
..start();
}
// other stuff omitted
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我仍然不满意.
原因是,自动收报机回调现在每隔几毫秒调用一次,而不是每秒调用一次.在我看来,这似乎是浪费资源(我不需要流畅的动画),...我是否过于复杂的事情?
即使我的用例似乎不需要它,我仍然想知道:
如何自己处理onPause/onResume事件?
我有一张图片:
在y轴上我想得到的5x10^-5 4x10^-5
等等而不是0.00005 0.00004
.
到目前为止我尝试过的是:
fig = plt.figure()
ax = fig.add_subplot(111)
y_formatter = matplotlib.ticker.ScalarFormatter(useOffset=True)
ax.yaxis.set_major_formatter(y_formatter)
ax.plot(m_plot,densities1,'-ro',label='0.0<z<0.5')
ax.plot(m_plot,densities2, '-bo',label='0.5<z<1.0')
ax.legend(loc='best',scatterpoints=1)
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.代码的文档页面似乎没有提供直接的答案.
Google Guava教程称可以使用Ticker测试缓存过期
根据我的理解,我可以用它来强制快速过期.我是对的吗?
但我试过以下代码,它没有用,有什么建议吗?
@Test
public void expireAfterWriteTestWithTicker() throws InterruptedException {
Ticker t = new Ticker() {
@Override
public long read() {
return TimeUnit.MILLISECONDS.toNanos(5);
}
};
//Use ticker to force expire in 5 millseconds
LoadingCache<String, String> cache = CacheBuilder.newBuilder()
.expireAfterWrite(20, TimeUnit.MINUTES).ticker(t).build(loader);
cache.getUnchecked("hello");
assertEquals(1, cache.size());
assertNotNull(cache.getIfPresent("hello"));
//sleep
Thread.sleep(10);
assertNull(cache.getIfPresent("hello")); //failed
}
Run Code Online (Sandbox Code Playgroud) 我想动态更改我的自动收报机间隔.
我写了一个例子来告诉你我是怎么做的.我的用例不是"加速度计",但我希望它能给你一个想法.
http://play.golang.org/p/6ANFnoE6pA
package main
import (
"time"
"log"
"fmt"
)
func main() {
interval := float64(1000)
ticker := time.NewTicker(time.Duration(interval) * time.Millisecond)
go func(){
counter := 1.0
for range ticker.C {
log.Println("ticker accelerating to " + fmt.Sprint(interval/counter) + " ms")
ticker = time.NewTicker(time.Duration(interval/counter) * time.Millisecond)
counter++
}
log.Println("stopped")
}()
time.Sleep(5 * time.Second)
log.Println("stopping ticker")
ticker.Stop()
}
Run Code Online (Sandbox Code Playgroud)
有问题的是,自动收报机每秒都会"嘀嗒"一声并且它不会加速......任何想法?
我有一个条形图,它看起来像我想要的样子,除了 y 轴上的科学记数法之外。
其他一些解决方案包括使用
ax.yaxis.set_major_formatter(tick)
Run Code Online (Sandbox Code Playgroud)
这不起作用。另外,我尝试检查这是否是一个偏移问题,但它应该显示一个“+”号,但在本例中没有。
每当我使用:
plt.ticklabel_format(style='plain')
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
Traceback (most recent call last):
File "C:\Python\lib\site-packages\matplotlib\axes\_base.py", line 2831, in ticklabel_format
self.xaxis.major.formatter.set_scientific(sb)
AttributeError: 'FixedFormatter' object has no attribute 'set_scientific'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Python/Projects/Kaggle 1.py", line 13, in <module>
plt.ticklabel_format(style='plain')
File "C:\Python\lib\site-packages\matplotlib\pyplot.py", line 2982, in ticklabel_format
useMathText=useMathText)
File "C:\Python\lib\site-packages\matplotlib\axes\_base.py", line 2856, in ticklabel_format
"This method only works with the ScalarFormatter.")
AttributeError: This method only works with the ScalarFormatter.
Run Code Online (Sandbox Code Playgroud)
我研究过这个 ScalarFormatter,但我无法更清楚地了解它为什么不起作用。我尝试将其显式包含在代码中,但它不起作用。 …
是否有一个很好的Javascript库用于生成自动滚动列表,如Twitter主页上的"热门推文"?优选作为jQuery插件.它还应该支持AJAX功能(动态添加新的列表项).