
正文
go语言刷新定时 go语言运行时
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
golang 定时器,启动的时候执行一次,以后每天晚上12点执行,怎么实现
func startTimer(f func()) {
go func() {
for {
f()
now := time.Now()
// 计算下一个零点
next := now.Add(time.Hour * 24)
next = time.Date(next.Year(), next.Month(), next.Day(), 0, 0, 0, 0, next.Location())
t := time.NewTimer(next.Sub(now))
-t.C
}
}()
}
相关问答
Q1: 网页代码全为灰色不能编辑怎么办?
在这里,在这里我就不给你讲dreamweaver的使用了,只讲总结性的东西,要注意的技巧吧,在最后,也会写一两个用DW做的简单特效实例。
随便打开一个网页,点击查看,再点源代码,一般都可以看到这个网页的代码,做网页说白了,也就是把文字、图象等多媒体效果有机的结合在一起,DW和FP等只是书写代码的利器,只要你知道代码,用记事本也一样能做出精美的网页(真正的高手据说就是用记事本做网页),但对我们初学者来说,没有必要去记代码,只需知道利用DW或FP,能实现哪些操作,就象用WORD一样,画一条线就有一条线,画一个表格就有一个表格,在软件的演示窗口里,有着同WORD一样所见即所得的最后效果察看。因此,可以说,做网页入门很简单!可后面还有半句话:做好网页不简单!因为,一个好的网页,不单单是代码书写,更重要的是美工设计,内容的充实。虽然很多代码不需要一一手工书写,可有些代码的基本组织结构了解一些,还是对做网页大有帮助的。我们可以这样学习、研究代码:在用DW或FP中做了某一个操作,把效果与上面的代码窗口比较一下,就可以知道什么代码是实现什么效果的,还可以通过查看别人的网页的源代码分析学习。想学ASP网页的朋友们,有些基本代码是非记不可的。
现在很多做网页的人,都是用借鸡生蛋的办法做的网页,做法是从网上下载现成的网页模板,对模板稍加更改,替换下内容成了。当然,这也是新手们做网页速成的一种好办法。模板在很多有提供空间的网站都有下载。很多以前收录的网址,现在打开都没有用了,在这里,能提供给大家的,只有这些了。
1.源代码下载:要下载ASP源代码的可以到“中国站长站”去,网址:,这是个比较权威的源代码下载点,在这里下到动网源码,说不定可以下到动网7.0 for SQL Server版本(excelhome的论坛就是用这个版本)。
2.网页图片及音乐等素材:
3.网页特效代码:推建一个小工具:“水晶情缘网页特效专家”,有1M,本来想发上来,太大了,算了,要的话,留下邮箱,我发过去。如,下雪的效果,鼠标滑动效果等,这里都有。
下面我把一些常用的写下来,以供大家参考:
DREAMWEAVER常用标记:(都是以前记的一些笔记了)
标记一般成对出现,一个表示特定代码部分的开始,另一个表示特定代码部分的结束(表示结束的前面带"/"符号),但也不是绝对的,比如,br标记。基本的HTML标记:html、head和body必不可少。
1. head和/head标记中仅包含网页标题(如title我的网页/title)和程序脚本。
2. body/body标记中包含网页的全部内容。是网页的主体部分。
3. center和/center:是中间内容居中标记;
4. h2和/h2:从h1~h6,将文本标注为标题,通常要比正文粗大,h1最大;
5. p和/p:段落标记,在行与行之间添加额外的空白行;
6. br:强行换行标记,插入单行,不需要封闭标记
7. 图象标记:img src="aaa\\bbb.gif" width="500" height="198" align="center"
align水平对齐(left、right或center),valign垂直对齐(top,bottom或middle),border边框宽度
alt="鼠标放在图片上时出现的提示文字"
8. pfont size="3"b本行字符将以粗体显示/b/font/p
9. pfont size="3"i本行字符将以斜体显示/i/font/p (i等效于em)
10.pfont size="3" face="宋体" color="#RRGGBB"本行字符将宋体显示/font/p
11. a href="test.htm"点击此处文字打开链接的网页/a :该处文字有下划线标示
12. HR显示一长灰色细线,分割网页为上下两部分。可以只用单边。完整的如下:
HR align=center width="100%" SIZE=1显示一灰色矩形,SIZE为1时,宽为1(很细,可看作一直线)
13.LI在文字前出现一个圆点的项目符号/LI,可单个使用,也可结合br使用
14.OL type=2 start=1li标记/lili区段/li/ol:控制项目序号及显示方式,如1,2,3
15.UL使该段文字首行和下面都缩进约两个字符/UL
16.BLOCKQUOTE使该段文字整体都缩进约两个字符,可以多重使用BLOCKQUOTE
17.SUP这是上标字/SUP,SUB这是下标字/SUB,U这是加下划线字/U
18.TT这是Windows的等宽字/TT
19.FONT SIZE=+1字体放大一级/FONT
20.DLDT语言DD基础要素/DL:“语言”显示为列表标题,“基础要素”显示为列表内容,自动缩进。
21.DIV Align="Right"这是右对齐的段落一P这是右对齐的段落二P/DIV默认为左对齐方式。
表格及其标志:Align:水平,Valign:垂直。Align或Valign写在TR 中时表该行的几个列都用同一方式。
22BLINK闪烁/BLINK:标记中的文字实现闪烁效果,但并不适用于所有的浏览器。
23.TABLE BORDER=1 TRTD第一列第一栏/TDTD第一列第二栏/TD/TR
TR BgColor="yellow"TD 第二列的第一栏/TDTD第二列的第二栏/TD/TR
TRTD Align="Left" Valign="Center"水平:左对齐br垂直:居中/TD/TR/TABLE
BgColor可写在TABLE、TR、TD中,分别为整个表格、整行、单一单元格的背景颜色设置。
以上是我以前笔记中收录的一些常用的标记,今天看到lfspecter大虾也发了一些关于网页的帖子,可以两边对照着看,侧重点各有不同,也许更有利于初学者的理解,链接如下:;;ID=78021page=1
技巧篇:
1. 在BODY标签中可以规定整个文档的一些基本属性:
"bgcolor":指定html文档的背景色。
"text":指定html文档中文字的颜色。
"link":指定html文档中待连接超链接对象的颜色。
"alink":指定html文档中连接中超链接对象颜色。
"vlink":指定html文档中以连接超链接对象颜色。
"background":指定html文档的背景文件。 有两种方式表示颜色对象: body bgcolor="green"或body bgcolor="#00FF00"。文档主体部分可用颜色列表:black 黑色 Red 红色 Line 石灰色 Maroon 栗色 Gray 灰色 Silver 银白色 Navy 海军蓝 Olive 橄榄绿 Purple 紫色 Yellow 黄色Aqua 浅绿色 Blue 蓝色 Green 绿色 Fuchsia 紫红色 White 白色 Teal 暗蓝绿
2. 浏览器的状态列提示文字控制
(1).鼠标经过:a href="tpage.htm" onMouseOver="window.status=\'相关提示\'; return true"页面上鼠标经过的文字a
(2).改变状态栏提示文字:打开"Behaviors"行为编辑窗,单击"+"按钮,选择"Set Text Set"下的"Text Of Status Bar"选项,然后在方框中输入自己的文字,例如"欢迎来到我的主页"等,单击"确定"即可。
3.链接控制:
a. 返回前页:使用OnClick="history.go(-1)"
返回主页:使用OnClick=\'top.location.href="../index.html"\'
b. 链接提示:在链接语句中增加,如:去哪儿? (在点击链接前注意看状态行显示的变化)
OnMouseOver="window.status=\'这里是 ...\'; return true" OnMouseOut="window.status=\'\'; return true"
c. 链接的不同方式:
在帧里显示:在链接处加target="main"语句,其中main为帧名
整页显示:在链接处加target="_top"语句
开新窗口:在链接处加target="resource window"语句,如A HREF="index.htm" TARGET="resource window"/A
d. 强制主页每次都不进行缓存,而从服务器上重读
在Head部分加MEAT HTTP-EQUIV="Pragma" CONTENT="no-cache"
e. 自动刷新
定时刷新:META HTTP-EQUIV="Refresh" content="10; URL=http://自己的URL"
幻灯片效果:语句类似上面,但在页面1中URL指向页面2,而页面2指向页面3 ... 页面n指回页面1,即可实现循环显示页面的效果。
f. 在某一个时间内自动链接到其他主页,这只需在〈title〉######〈/title〉之后加入下面这一行即可:
〈meta http-equiv="refresh" content="20; url=otherpage.htm"〉("20"代表二十秒后连到另一个主页)
h. 在打开指定网页的同时打开另一指定网页\'next.htm,只需在指定网页的body中加入指令onload:
htmlbody onload="parent.banner.location.href=\'next.htm\'"指定打开的一个网页内容/body
4. 设置"添加到收藏夹"链接:
选中"添加到收藏夹"文字,在属性面板中的链接(Link)中输入:"javascript :window.external.AddFavorite (\'\',\'学习之家\')"。点击此链接时会弹出对话框,可以将你的主页地址加到收藏夹中。
5.文字移动动态效果:
1) 文字从右移到左边:marqueeb大家好/b欢迎您经常光临!/marquee
2) 让文字在固定的区域内出现从下到上的滚动效果:
例1:table height=542 cellspacing=0 cellpadding=0 width=800 border=0
trtd valign=center align=middle width=316 height=405
marquee scrollamount=1 scrolldelay=140 direction=up width=382 height=403center谨以此网站送给xxx
font color=#ff0000/font/centerbr此处为长篇大论!/marquee/td/tr/table
例2:bodydiv align="center"pmarquee aligh=left bgcolor=#FFFED7 direction=up behavior=scroll height=100
hspace=1 scrollamount=2 Scrolldelay=1 width=250 VSpace=1 loop=-1
font color="#FF0000" size="5" face="方正大黑简体"望 岳/fontbr br
font color="#FF0000"岱宗夫如何,齐鲁青未了。br造化钟神秀,阴阳割昏晓。br汤胸生层云,决眦入归鸟,br会当凌绝顶,一览众山小。br/font/marquee/p/div/body/html
3) 在指定宽度内移来移去的文字代码:TD height=20P align=centerMARQUEE scrollDelay=120 direction=right
behavior=alternate width=150 height=12产品导航/MARQUEE/P/TD
6.E-mail链接:
选中字或图片,在属性中设置Alt为"给我来信",链接为"mailt ketang.pc@goldhuman.com",在浏览器中单击此图,就会启动发送邮件窗口。在链接地址前加"#"符号,可以在网页中不打开实际链接。
7.动画背景为透明:
选中Flash(gif),在源代码/object/p前加入代码:param name="wmode" value="transparent"。或文件属性栏里 "参数"输入wmode,value="transparent"。
8.浮动背景图象(主页内容向下滚动而背景图象不动的效果):
(1).body backgroud="image.jpg" bgproperties="fixed"
(2).在Dreamweaver中用「Text」-「Custom Style」-「Edit Style Sheet」-「New」-Redefine HTML Tag中选择Body,然后在Background中的Attachment里选fixed
9.滚动条换颜色:
默认的网页滚动条是灰色,在网页代码head/head里插入一对style/style标签,标签里写入下面的代码:
body {SCROLLBAR-FACE-COLOR:#3333FF;(立体滚动条凸出部分的颜色)
SCROLLBAR-HIGHLIGHT-COLOR:#505050;(滚动条空白部分的颜色)
SCROLLBAR-SHADOW-COLOR:#fc2400;(立体滚动条阴影的颜色)
SCROLLBAR-ARROW-COLOR:#666666;(上下按钮上三角箭头的颜色)
SCROLLBAR-BASE-COLOR:#333333; (滚动条的基本颜色)
SCROLLBAR-DARK-SHADOW-COLOR:#b4fc48} (立体滚动条强阴影的颜色)
后面的16位颜色值你可以随意更改,括号内是解释说明,在输入时请不要插入。
10.背景音乐:
body中加入以下任一个代码(建议为midi格式的):
显示操作面板:在相应地方加:
embed src="aladdin.mid" width="140" height="35" autostart=true controls="middleconsole"
不显示操作面板:在页中任意地方加embed src="aladdin.mid" hidden=true autostart=true loop=true
bgsound src=音乐路径 loop=次数-1为无数次
embed src=音乐路径 width=0 height=0
11.在Dreamweaver中轻松设置行间距:
用层叠样式表(CSS)来实现,在Dreamweaver中编辑层叠样式表不用编写代码,具体操作方法如下:
(1)在快速启动栏中点击层叠样式表按钮("show css styles"按钮),在弹出的CSS Styles面板上双击(none);
(2)此时,可看到弹出的Edit Style Sheet 面板,在该面板上按New按钮;
(3)再在弹出的New Style 面板上点取Redefine HTML Tag(重新定义HTML标记),再在Tag中选择"body"标记后按OK按钮;
(4)这时可看到弹出的Style dehinition for body 的对话框,在此对话框中可以设置"body"标记的许多属性,可以按你的意愿设置,但我们这里主要是要设置行距,所以在line属性输入框中填上行距的像素点数,现在流行的九号字,行距一般用12,按OK按钮返回到Edit Style Sheet 面板,此时已把"body"的行距设置好了;
(5)由于"body"中定义的行距对表格不起作用,所以再在Edit Style Sheet 面板上再按New按钮;
(6)再在弹出的New Style
参考资料:
Q2: 如何让框架网页有自动刷新功能?
页面自动刷新代码大全,基本上所有要求自动刷新页面的代码都有,大家可以自由发挥做出完美的页面。
1)
10表示间隔10秒刷新一次
2)
script
window.location.reload(true);
/script
如果是你要刷新某一个iframe就把window给换成frame的名字或ID号
3)
script
window.navigate("本页面url");
/script
4
function abc()
{
window.location.href="/blog/window.location.href";
setTimeout("abc()",10000);
}
刷新本页:
Response.Write("scriptwindow.location.href=window.location.href;/script")
刷新父页:
Response.Write("scriptopener.location.href=opener.location.href;/script")
转到指定页:
Response.Write("scriptwindow.location.href='yourpage.aspx';/script")
刷新页面实现方式总结(HTML,ASP,JS)
'by aloxy
定时刷新:
1,scriptsetTimeout("location.href='url'",2000)/script
说明:url是要刷新的页面URL地址
2000是等待时间=2秒,
2,
说明:
n is the number of seconds to wait before loading the specified URL.
url is an absolute URL to be loaded.
n,是等待的时间,以秒为单位
url是要刷新的页面URL地址
3,!--sponse.redirect ur--
说明:一般用一个url参数或者表单传值判断是否发生某个操作,然后利用response.redirect 刷新。
4,刷新框架页
〈script language=javascripttop.leftFrm.location.reload();parent.frmTop.location.reload(); 弹出窗体后再刷新的问题
Response.Write("scriptwindow.showModalDialog('../OA/SPCL.aspx',window,'dialogHeight: 300px; dialogWidth: 427px; dialogTop: 200px; dialogLeft: 133px')/script");//open
Response.Write("scriptdocument.location=document.location;/script");
在子窗体页面代码head中加入
刷新的内容加在 if (!IsPostBack) 中
在框架页中右面刷新左面
//刷新框架页左半部分
Response.Write("script");
Response.Write("parent.left.location.href='PayDetailManage_Left.aspx'");
Response.Write("/script");
页面定时刷新功能实现
有三种方法:
1,在html中设置:
之后加入下面这一行即可!
定时刷新:
10代表刷新间隔,单位为秒
2.jsp
!--esponse.setHeader("refresh","1");--
每一秒刷新一次
3.使用javascript:
script
setTimeout("self.location.reload();",1000);
script
一秒一次
页面自动跳转:
script
window.location.href="mian.aspx";
history.go(0);//window.close(); //关闭浏览器此页的窗口
/script
先来看一个简单的例子:
下面以三个页面分别命名为frame.html、top.html、bottom.html为例来具体说明如何做。
frame.html 由上(top.html)下(bottom.html)两个页面组成,代码如下:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
HTML
HEAD
TITLE frame /TITLE
/HEAD
frameset rows="50%,50%"
frame name=top src="top.html"
frame name=bottom src="bottom.html"
/frameset
/HTML
现在假设top.html (即上面的页面) 有七个button来实现对bottom.html (即下面的页面) 的刷新,可以用以下七种语句,哪个好用自己看着办了。
语句1. window.parent.frames[1].location.reload();
语句2. window.parent.frames.bottom.location.reload();
语句3. window.parent.frames["bottom"].location.reload();
语句4. window.parent.frames.item(1).location.reload();
语句5. window.parent.frames.item('bottom').location.reload();
语句6. window.parent.bottom.location.reload();
语句7. window.parent['bottom'].location.reload();
top.html 页面的代码如下:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
HTML
HEAD
TITLE top.html /TITLE
/HEAD
BODY
input type=button value="刷新1" onclick="window.parent.frames[1].location.reload()"br
input type=button value="刷新2" onclick="window.parent.frames.bottom.location.reload()"br
input type=button value="刷新3" onclick="window.parent.frames['bottom'].location.reload()"br
input type=button value="刷新4" onclick="window.parent.frames.item(1).location.reload()"br
input type=button value="刷新5" onclick="window.parent.frames.item('bottom').location.reload()"br
input type=button value="刷新6" onclick="window.parent.bottom.location.reload()"br
input type=button value="刷新7" onclick="window.parent['bottom'].location.reload()"br
/BODY
/HTML
下面是bottom.html页面源代码,为了证明下方页面的确被刷新了,在装载完页面弹出一个对话框。
bottom.html 页面的代码如下:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
HTML
HEAD
TITLE bottom.html /TITLE
/HEAD
BODY onload="alert('我被加载了!')"
h1This is the content in bottom.html./h1
/BODY
/HTML
解释一下:
1.window指代的是当前页面,例如对于此例它指的是top.html页面。
2.parent指的是当前页面的父页面,也就是包含它的框架页面。例如对于此例它指的是framedemo.html。
3.frames是window对象,是一个数组。代表着该框架内所有子页面。
4.item是方法。返回数组里面的元素。
5.如果子页面也是个框架页面,里面还是其它的子页面,那么上面的有些方法可能不行。
附:
Javascript刷新页面的几种方法:
1 history.go(0)
2 location.reload()
3 location=location
4 location.assign(location)
5 document.execCommand('Refresh')
6 window.navigate(location)
7 location.replace(location)
8 document.URL=location.href
自动刷新页面的方法:
1.页面自动刷新:把如下代码加入head区域中
meta http-equiv="refresh" content="20"
其中20指每隔20秒刷新一次页面.
2.页面自动跳转:把如下代码加入head区域中
meta http-equiv="refresh" content="20;url="
其中20指隔20秒后跳转到页面
3.页面自动刷新js版
script language="JavaScript"
function myrefresh()
{
window.location.reload();
}
setTimeout('myrefresh()',1000); //指定1秒刷新一次
/script
ASP.NET如何输出刷新父窗口脚本语句
1. this.response.write("scriptopener.location.reload();/script");
2. this.response.write("scriptopener.window.location.href = opener.window.location.href;/script");
3. Response.Write("script language=javascriptopener.window.navigate(''你要刷新的页.asp'');/script")
JS刷新框架的脚本语句
//如何刷新包含该框架的页面用
script language=JavaScript
parent.location.reload();
/script
//子窗口刷新父窗口
script language=JavaScript
self.opener.location.reload();
/script
( 或 a href="javascript:opener.location.reload()"刷新/a )
//如何刷新另一个框架的页面用
script language=JavaScript
parent.另一FrameID.location.reload();
/script
如果想关闭窗口时刷新或者想开窗时刷新的话,在body中调用以下语句即可。
body onload="opener.location.reload()" 开窗时刷新
body onUnload="opener.location.reload()" 关闭时刷新
script language="javascript"
window.opener.document.location.reload()
/script
Q3: 点击刷新DIV
大致说下吧:
1: function ShowHidden(){
var sh = document.getElementById("你那里的a最好设一个id");
if(sh.innerText=="显示"){
document.getElementById("box1").style.display='block';
sh.innerText="隐藏";
}
else{
document.getElementById("box1").style.display='none';
sh.innerText="显示";
}
}
note: 这个要你做一些事,在开始时就将div隐藏,并且将a的innerText设置为显示; 还是我给你写好了; a href="javascript:void()" onclick="ShowHidden()"显示/a
div id ="box1" style="display:none;"/div
这里还有一个地方要加一点,我在上面也说明了,自己要试才能做出来的。
2:用一个定时器就可以了。setTimeOut()和setInterval();这两个都可用,但有点区别,网上找找吧。
3:这个也不难,img /在里面加一个onclick事件就行了。要把cursor:pointer;
ps:你很有想法,但你有点不敢去做,不知是不是这样,有了想法要大胆地去试,那种只要代码不要思想的人是没有自己的东西地;
Q4: Golang-基于TimeingWheel定时器
在linux下实现定时器主要有如下方式
在这当中 基于时间轮方式实现的定时器 时间复杂度最小go语言刷新定时,效率最高go语言刷新定时,然而我们可以通过 优先队列 实现时间轮定时器。
优先队列的实现可以使用最大堆和最小堆,因此在队列中所有的数据都可以定义排序规则自动排序。我们直接通过队列中 pop 函数获取数据,就是我们按照自定义排序规则想要的数据。
在 Golang 中实现一个优先队列异常简单,在 container/head 包中已经帮我们封装go语言刷新定时了,实现的细节,我们只需要实现特定的接口就可以。
下面是官方提供的例子
因为优先队列底层数据结构是由二叉树构建的,所以我们可以通过数组来保存二叉树上的每一个节点。
改数组需要实现 Go 预先定义的接口 Len , Less , Swap , Push , Pop 和 update 。
timerType结构是定时任务抽象结构
首先的 start 函数,当创建一个 TimeingWheel 时,通过一个 goroutine 来执行 start ,在start中for循环和select来监控不同的channel的状态
通过for循环从队列中取数据,直到该队列为空或者是遇见第一个当前时间比任务开始时间大的任务, append 到 expired 中。因为优先队列中是根据 expiration 来排序的,
所以当取到第一个定时任务未到的任务时,表示该定时任务以后的任务都未到时间。
当 getExpired 函数取出队列中要执行的任务时,当有的定时任务需要不断执行,所以就需要判断是否该定时任务需要重新放回优先队列中。 isRepeat 是通过判断任务中 interval 是否大于 0 判断,
如果大于0 则,表示永久就生效。
防止外部滥用,阻塞定时器协程,框架又一次封装go语言刷新定时了timer这个包,名为 timer_wapper 这个包,它提供go语言刷新定时了两种调用方式。
参数和上面的参数一样,只是在第三个参数中使用了任务池,将定时任务放入了任务池中。定时任务的本身执行就是一个 put 操作。
至于put以后,那就是 workers 这个包管理的了。在 worker 包中, 也就是维护了一个任务池,任务池中的任务会有序的执行,方便管理。
Q5: Go语言基于Etcd实现的定时任务
利用 Etcd 的Lease租约特性来实现定时功能,同时通过Watch机制来实现多节点情况下只有一个节点执行该任务。通过定时任务库 Cron 的时间字符串解析器Parser来解析任务执行时间。
Etcd
Cron
源码链接
关于go语言刷新定时和go语言运行时的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







