linux为啥比windows做服务器更好?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux为啥比windows做服务器更好?相关的知识,希望对你有一定的参考价值。
1.linux本身是网络操作系统,支持所有TCP/IP协议,网络功能是内核中六大模块之一2.linux和unix兼容,unix是早期的服务器霸主,现在份额逐渐让给linux了
3.linux是多用户多进程系统,windows是单用户伪多用户系统,不适合服务器
4.互联网开放,linux也是开放的,像apach这样的开放软件优先在linux上实现
5.linux是模块化的,可裁减,出现问题只要关闭一个模块,windows只有微软自己才会裁减
6.linux的用户管理严格,病毒难以破坏,windows漏洞百出,用户管理混乱
7.linux硬件需求小,大部分版本免费,总得成本低
8.windows常会蓝屏、需要磁盘清理,linux下kernel panic几年一遇,也可以好几年不关机,一两年一次磁盘清理
9.win的图形界面浪费了太多资源,linux使用x-window systerm,平时根本不用开图形界面 参考技术A 2楼别瞎说,lin只是在PC平台下硬件厂商提供的驱动少,但他能运行于包括PC的十几种平台,因为lin是开源的,可以根据情况修改内核,以更好地适应当前硬件环境,发挥更好的性能,系统内核和壳,桌面等系统套件分开运行,在某套件出了问题时完全可以将其退出而不影响整个系统,出了问题也能很快得到解决,维护起来方便,而win作为商业产品用户只有使用权,没有对于系统的更改权力,系统崩溃时难以维持,导致在同样出现异常的情况下,WIN解决问比LIN麻烦。而且服务器注重后台计算,这方面的技术lin远远比win要好,综上所述,linux比windows做服务器更好 参考技术B 国产红旗 安全性比windows好。但是在兼容方面就比w家族差多了。 参考技术C 针对里纽克死的病毒少。
为啥使用比使用更好?
【中文标题】为啥使用比使用更好?【英文标题】:Why is use better than using?为什么使用比使用更好? 【发布时间】:2011-06-30 02:45:00 【问题描述】:根据this MSDN page 的最后一句话,use
优先于using
。我在别处听说过(例如this answer)。为什么是这样?我意识到use
是后来添加的。但是有什么区别呢?从表面上看,using
似乎更有用,因为您可以控制何时调用Dispose()
,并且如果需要,您可以显式忽略绑定值(例如,(fun _ -> ...)
)。
【问题讨论】:
【参考方案1】:您也可以控制何时使用use
调用 dispose,只需使用通常的作用域构造(如括号或begin
-end
),例如
let F() =
let x = 4
(
use file = System.IO.File.Open("foo.xml", System.IO.FileMode.Append)
let z = 4
printfn "file still open here"
)
printfn "file was already closed/disposed"
但我认为这很少有用。我认为不想命名/使用IDisposable
对象也很少见。 use
在语法上更方便,95% 的时间都在做你需要的事情,所以我认为这就是为什么它是首选的原因。
【讨论】:
语法上的怪异似乎是支持using
的另一个原因。你知道他们是否会产生不同的 IL 吗?
我希望他们产生类似的 IL,尽管我不知道也不关心。至于语法上的怪异,再一次,没有人写这样的代码,因为没有人关心Dispose
是在函数结束前两行调用还是在函数结束时调用。重要的场景极为罕见。只需使用use
。
在use
作用域结束后 需要您写一些东西的一种情况是,如果您需要正确测试已释放的对象(锁定的文件再次可写) ),或者例如使用信号量。尽管如此,只需将 use
包装在一个函数中并在调用该函数后调用您的发布后代码就足够了,并且不需要像本示例中那样进行范围界定。
有趣的是,每个人似乎都缺少use ... in ...
语法来控制范围。我什至不知道你可以用你展示的括号来做到这一点;我认为唯一的方法是使用in
。例如:gist.github.com/jwosty/cfbf9cc67e9d051f2194895d37298cf9【参考方案2】:
我认为更喜欢use
的原因只是语法更简单。许多其他语言结构可以表示为函数(例如try .. with
、for
、while
,...)。如果语言设计者添加了更简单的语法,为什么不使用它...
正如我在earlier answer you referenced 中所写,即使使用use
,您也可以精确控制范围。 (这样,您甚至可以在 object expressions 类声明的构造函数中使用它。)但大多数时候,自动行为就很好(这使得构造比 C# 中的 using
更简单)。
在需要明确控制范围的情况下,是否使用use
或using
是个人喜好问题。如果您不喜欢 use
的明确范围(我承认这看起来有点奇怪,但对我来说很好用),您可以使用 using
。
编辑:在类声明中,您不能例如写:
type Foo() =
use a = new Whatever()
// ...
因为a
的范围(可能)是实例的整个生命周期。 (虽然我认为这可能很有用,它可以将IDisposable
的自动实现添加到您的类型中)。如果你使用using
,就不会遇到这种麻烦。
【讨论】:
我尝试了对象表达式,但无法弄清楚您提到的限制。能详细点吗? @Daniel:对不起,我的意思是类声明——不是对象表达式! 我仍然没有找到限制。using
在构造函数中似乎可以正常工作。
对不起,我误会了。我认为该限制适用于using
。谢谢你的解释。【参考方案3】:
就我个人而言,我更喜欢use
而不是using
,原因与我喜欢的原因相同
let a = some_expr
some_stuff_with_a
到
(fun a -> some_stuff_with_a) some_expr
使用绑定表单,您通常可以避免使用一组括号,并且标识符与其所绑定的值之间的关联在空间上更接近且更易于查看。
【讨论】:
【参考方案4】:针对use
的示例优于using
:
using
优于 use
,因为using
可以写在一行,而use
不能。
例如,xx
是函数 fct 从资源中返回值的函数,该资源由 yy
使用给定参数 p
打开。
let xx p = using (yy(p)) (fun resource-> fct resource) // <-- this is OK
let xx p = (use resource = yy(p); fct resource) // <-- this is Not OK
【讨论】:
您需要使用in
,如:let xx p = (use resource = yy(p) in fct resource)
。以上是关于linux为啥比windows做服务器更好?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 Windows 上创建新进程比在 Linux 上更昂贵?
为啥我装了ubuntu桌面版,默认安装的,速度比windows还要慢!这是为啥?linux的速度没有优势吗?