编译程序和解释程序有何区别

编译程序和解释程序有何区别,第1张

编译程序能生成目标程序,而解释程序不能。

补充:

1、编译程序是整体编译完了,再一次性执行。

2、而解释程序是一边解释,一边执行。 解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。

3、编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。

4、而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)

<html>

<head>

<title>Test Calendar</title>

<script language="javascript" src="Calendarjs"></script> <!--引用日历控件js-->

</head>

<body>

<p style="font-size:20px;font-weight:bold">Test Calendar</p>

<hr>

<p>

From <input id="textfield_datefrom" type="text" onclick="button_Go_Click(this,0)" value="2007-01-01" readonly />

To <input id="textfield_dateto" type="text" onclick="button_Go_Click(this,1)" value="2007-07-26" readonly />

<!--两个button_Go_Click 触发日历显示即可选择日历 -->

<input type="button" value="Go" style="width:100px" onclick="OnClickButton()" /> <!--点击触发OnClickButton-->

<div id="td_Calendar" style="width:250;position:absolute;visibility:hidden"></div> <!--用div来控制显示和隐藏的-->

</p>

<script>

var tdDate = null;

var nIndex=null;

function _ChooseDay(myDate) <!--这个应该是和日历js中连用用来为日历选定值-->

{

tdDatevalue = myDate;

documentalltd_Calendarstylevisibility = "hidden";

}

function button_Go_Click(td,n)

{

eventcancelBubble = true; //取消冒泡

tdDate = td;

nIndex = n;

var YMD = tdvaluesplit('-');

if(YMDlength != 3)

{

alert("日期长度错误。")

return;

} //日期判断

var Year = parseInt(YMD[0]);

var Month = parseInt(YMD[1]);

var Day = parseInt(YMD[2]);

if(isNaN(Year) || isNaN(Month) || isNaN(Day) || Month < 1 || Month > 12 || Day < 1 || Day > 31)

{

alert("日期数错误。")

return;

} //日期判断

var Firstday = GetWeekday(Year,Month); //GetWeekday应该包含在src="Calendarjs"是 用来取年月

ShowCalendar(Year,Month,Day,Firstday); //控制日历显示

}

function _ShowCalendar(showstr) //日历显示

{

var nLeft = 0;

var nTop = 117;

if(nIndex == 0) nLeft = 44;

else if(nIndex == 1) nLeft = 228;

documentalltd_Calendarstyleleft = nLeft;

documentalltd_Calendarstyletop = nTop; //日历显示定位

documentalltd_CalendarinnerHTML = showstr;//控制日历内容

documentalltd_Calendarstylevisibility = "visible"; //控制日历可见性

}

function documentonclick() <!--默认点击时td_Calendar不可见-->

{

documentalltd_Calendarstylevisibility = "hidden";

}

function OnClickButton() <!--显示alert()取 开始 至结束的-->

{

alert("您选择的日期是: 从 "+documentalltextfield_datefromvalue+" 到 "+documentalltextfield_datetovalue);

}

</script>

</body>

</html>

昨天科技圈最火的新闻应该是“AWS中国区光缆被挖,导致三星、小米等众多企业服务不可用”。

又是光缆被挖,咦!?为什么是又,让我们来一起回到过去:

我这里只是列出来了几家大公司所涉及到的光缆被挖事故,其余还包括什么广电光缆被挖,社保局光缆被挖就不列了,感兴趣的自己去百度。

好,我们发现“公司再大,也怕施工队”,那么这种事故能怪施工队吗?个人觉得不能把责任都推给施工队,当然我们这里不讨论这些,我们做为大公司,我们以后怎么预防这种现象呢?

这个我们可以来看下支付宝的解决办法,毕竟它老人家在2015年就经历过这种惨况了。

这种解决办法就是“三地五中心”,这是一种机房架构,即在三座城市部署五个机房,一旦其中一个或两个机房发生故障,依靠技术可以将故障城市的流量全部切换到运行正常的机房。

那么在“三地五中心”之前还存在很多其他架构,我们一一来看一下他们的特点。

最初,我们把应用(一个非常简单的只读应用,比如一个显示Hello World的网页,不考虑数据存储)只放在一个机器上,那么当这个服务器down机了,我们的应用便不可用了。

所以,我们考虑把我们的应用放在多个机器上,在公司单独开辟一个机房来放置这些机器,这样单独某一个台机器down机了并不影响我们的应用。

但是,如果你们公司某一天停电了呢?这个时候我们就考虑在这座城市的另外一个地方在放置一个机房,这是应用就被部署在了同城的两个机房(这个叫 同城双活

但是,如果你们城市某一天经历了海啸、台风、地震等自然灾害,两个机房都不能使用了,这个时候我们就会考虑在另外一个城市再搭建一个机房来部署我们的应用,这样我们应用的可用性就更高了(这个叫 异地多活 )。

好,到此为止不管出现什么样的状况,我们的应用基本上都可用(除非地球毁灭)

那么我们上面考虑的应用是一个非常简单的只读应用,所以各个地方的应用是可以同时对外提供服务的,那么如果我们的应用涉及到数据存储,这个时候各个地方的应用就不能同时对外提供 写入数据 的服务了,因为很有可能会出现数据冲突,那么我们暂且规定只有公司内部机房里的服务器(后文我们叫主机房)可以提供写数据服务,而同城的另外一个机房以及异地的另外一个机房只能从主机房同步数据,这样这两个地方的机房的功能就叫 灾备 ,因为数据会同步,所以就算主机房停电了,另外两个机房还是可以临时来对外提供服务的。所以现在的架构可以如下:

这个就叫 两地三中心

那么两地三中心这种架构是目前很多银行或大型企业正在使用的一种架构,因为国家针对银行的灾备能力做过要求,资产超过多少多少的一定要做两地三中心架构,以保证银行系统的稳定。

那么这种架构有没有它的缺点呢?我们来考虑一下它的可用性高不高?可用性的意思就是这个架构处理用户请求时够不够快?

我们发现这种架构,中心之间是需要数据备份的,那么对于数据备份只有两种方式,要么异步,要么同步。

好,我们介绍了一下两地三中心,总结一下它的缺点:

那么为了解决这个问题,就出现了 三地五中心 ,虽然名字和两地三中心类似,但提供的功能完全不同。

三地五中心是指三个城市,5个中心,三地五中心基于的概念是单元化,还得花很大篇幅来讲,下一篇继续吧。

以上就是关于编译程序和解释程序有何区别全部的内容,包括:编译程序和解释程序有何区别、刚学javascript,这段程序不明白,谁能给详细讲解一下、程序要一定要明白的架构-三地五中心(1)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9268813.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存