b2c信息网

您现在的位置是:首页 > 昨日新闻 > 正文

昨日新闻

couchbase源码(couchbase教程)

hacker2022-06-07 22:23:27昨日新闻113
本文目录一览:1、为什么我不再用NET框架

本文目录一览:

为什么我不再用 NET 框架

.NET平台很棒。真的很棒。直到它不再那么棒。我为什么不再用.NET?简单来说,它限制了我们选择的能力(对我来说很重要),转移了我们的注意力,使得我们向内认知它的安全性,替代了帮助我们认知外面广阔世界的所有可能性。

[系好安全带:这个文章的长度几乎成了一本书…]

优点

首先让我开始说说.NET做得对的许多事吧,尽管这其中的大多数并不来自.NET本身,但却是由.NET社区而来。

C#

C#令人惊叹。我认为它是一个令人惊叹的编程语言。从强大的C语言背景而来,我彻底地喜欢其语法,流和这门语言的所带来的感觉。当然有我可能改变的事,但总体来说它是一门扎实的语言。并且基于开发人员使用的编程语言如此巨额的百分比和Windows操作系统的优越性,它是一门众所周知的语言。

ReSharper

我也很喜欢Resharper。在JetBrains工作的开发者们都是奇迹般的人。如果没有ReSharper和一些相关的工具,我可能并不会如此喜欢C#。

BDD and MSpec

我也很喜欢简称为机器规格(mspec)的BDD风格的框架。它是一个令人惊叹的测试框架,真正支持在测试中使用正确的语言测试本身。在使用mspec之前,我的测试真是一团糟并且很碍我的事。

另外,当我们创建GoConvey—基于Golang的BDD测试框架的时候,Mspec对于我的组织来说是一个巨大的灵感和激励。

多语言运行时

我认为多语言的CLR(公共语言运行时)的观念真得使得JVM的世界思考着。我不知道任何非Java的JVM语言在CLR之前,但随着“公共语言运行时”的到来,我的理解是这使得使用JVM的人们向前进并且最终创造了如Scala和Clojure这样伟大的JVM编程语言。如果我错了请纠正我。再者,CLR使得Sun公司的人们坐下来并关注它,因为Java有一点陈旧并且随着Java 8的到来,仅仅现在才在多个方面追赶着。竞争是一件非常好的事。

NuGet

另一个显著的例子是NuGet。这个包在Windows中作为一个整体特别是在Windows的开发中,它的管理轶事是糟透的。NuGet解决了很多问题,他们也通过从Python和Ruby借用了很多东西去做了很多正确的事。有改进的余地吗?当然。但比起其他一些选择在这儿或那儿的包升级来说,我还没有感到使用NuGet有这许多痛楚。

Mono

对于Mono的开发者们,我不能不说太棒了。他们所创造的太惊奇了。没有任何官方支持和不顾潜在的悬在他们头上的法律问题,他们向前推进并创造了一个居然能替代官方运行时的实现。我已经有一些运行在产品中应用程序,在Mono下运行了几乎一年而没有任何问题。它的产品准备好了吗?这可能取决于你的应用程序(见下文“Mono”)。

CQRS 和事件溯源

可以认为,关于.NET最好事之一是,它是CQRS的诞生地并有相关的技术:事件溯源。就算这样,CQRS+ES本身并没有什么很新的东西。正如Greg Young将会告诉你的,这是由一堆40年历史原料为我们重新打包并更名的。对于大型代码库我有些非常严重的问题,当我5年前使用CQRS+ES的时候,它完全释放了我的域。CQRS+ES现在是命名模式的并且其成长是显而易见的。这可能是因为.NET已经能够和其他的开发平台交互共享的原因。除了这个之外,大多数的创新是从外部来的。

缺点

优点先放在一边,让我们看看什么出错了和我为什么不再用.NET框架。关于我最近开发平台的迁移,最能激励我的事是我可以利用许多最好的部分而丢下不好的部分(如下文所说)。

Windows

正如前文所述,当面对基于网络的服务器软件时,Windows并不是一个好的选手。在我看来,Windows的另一个真正的大问题是传统的Windows开发者是通常仅仅擅长于Windows,当他们离开安乐窝之后就会很快迷失,这对于Linux开发者来说却不是问题。计算远不止是Windows。开发者仅仅能操作单一的操作系统的一个问题是它不可避免得导致Windows的激增。换句话说,Windows生了Windows。没办法打破这个循环。

另一方面,*NIX的开发者通常熟悉多操作系统(Linux,Unix,OSX,Windows等等),一个操作系统的内部工作原理,不同的分布(基于Debian和基于Fedora),窗口管理器,桌面管理器,文件系统,包管理,编译,重新编译,重新打包,命令行“fu”等等。

我的一个心病是文件系统。NTFS并不是系统唯一的文件系统,对于任何给予的任务它几乎都不是最好的选择。ZFS,BTRFS,ReiserFs,ext*等等,有一些很酷的特性。我也很喜欢为了各种高速/透明的磁盘操作,能从BASH创建回路设备或者创建RAM设备。这在Windows中不会发生—如果没有第三方软件的话。

在AWS云服务中,启动一个Windows机器要花掉足足10多分钟。我大约15-20秒就能启动一个简单的Linux机器。当涉及到云计算规模,它能够迅速扩展是很重要的,因为当扩展很重要时,10-15分钟就像是永恒的。

Visual Studio

在我这另一根刺,当属Visual Studio。我需要一个大大超出预期的 IDE 去做任何开发,这个想法困扰着我。它只是如Windows一样庞大的资源猪。我有一个内核i7 3770K 3.5GHZ的台式机,以16GB的内存和最大4512GB的固态硬盘去编译。它差不多刷爆了Windows体验指数,但Windows+VS仍然很慢。(是的,ReSharper使得它更慢了,但是ReSharper对这来说是值得的。)

现在我在MacBook Pro上开发,它比起我的强大的台式机来说只有更少的CPU马力,但运行明显更快,在一个短小的学习曲线之后,UX(用户体验)变得无限美好了。事实上,我甚至不再用鼠标了—我的双手一直在键盘或触控板上,我可以用手势操作我的电脑并让它回应—不像在Windows。

关于VS很酷的一个事是调试器。它的查看和使用,令人难以置信得方便。每隔一段时间会在监视窗口报告错误的值,导致花费更多时间去调试。同时,这也是很大的负面,因为CLR默认的,多线程的世界使得我一开始就需要一个调试器。没有调试器是一个解脱的体验,因为它迫使你以另一种方式编程。

VS同样也有创建“csproj”和“sln”文件的坏毛病。我恨这些。当然,C#必须知道编译什么和何时编译。我理解这点。在Golang中,引用在代码中使用了很重要的语句。如果它不是.NET中用到的工程文件,我可能使用简单的文本编辑器编码C#,并且对这门语言更流畅。使用git rebase操作时,这些文件也有导致合并冲突。

别让我开始说换行符的差异。我不能相信直到今天我们还在处理这样的事。如果VS解决方案文件以Linux行结束符结束,通过双击它并不能载入该解决方案,因为VS解决方案文件分析器读不出它来。

源代码管理

幸运的是,我早就跳出了微软阵营的源代码管理(版本控制系统VSS)。我早在2000年初,在VSS无数次丢失了我的提交之后,就使用了Subversion(译者注:Subversion是开源的版本控制系统)。之后git(译者注:git是开源的版本控制系统,内容管理系统等)出现了,我又迷上了它。不幸的是,没有Windows的接口—对我来说是典型的遭遇。最终有人创建了一个接口,我就用了那个并且没有回头。Git是一把非常锋利的刀,但当你正确运用它的时候,它是一个强大而高效的工具。我曾经在一个小工程中用过TFS(译者注:Team Foundation Server,工作流协作引擎),它是一个怪物—和所有来自Redmond(译者注:美国微软总部)的产品一样。它感染了我的项目文件并且污染了我的源代码目录。真可恶。不,还是谢谢你。给了我任意一天用命令行git…或者可能是SourceTree,如果你需要从GUI得到一点关爱。

Mono

是的,这是第二次提及Mono。正如Mono本身如此惊艳一样。在.NET的世界,它仍然二等公民。无论什么时候我尝试在Mono上运行任何重要的东西,我通常都在和漏洞作斗争。幸运的是,对下载代码,查找问题,发送请求和在Linux上编译代码我没有感到不舒服。但是这件事我都记不清做了多少遍了。

是的,CLR是个巨大的怪物,并且对一个非官方的应用在不同的操作系统都有相同的行为,简直是个类似于分开红海的奇迹。但事实是,我不得不花费如此多的时间来填补漏洞以使我的代码能够正确运行,实在是很难为其辩护。

Mono的特定区域也慢。也许它不是在慢在过载,但对我来说Web服务器是关键所在。并且它非常慢,最后,慢到了最底下—即使是微不足道的东西。我想好消息是它只能从这儿得到更好的。我也应该提及Mono的开发者可能忘了Linux,比起我可能知道的还多,所以我不能太挑剔。

IIS

也许IIS在尝试着为太多的应用程序做太多的事情。它从作为一个web服务器变为像J2EE应用程序容器一样的应用程序宿主。它也站在慢速这一边。我猜如果我需要更高的性能,我应该编写我自己的web服务器,但我真的很想只关注我应用程序的代码。可能利用Windows事件服务器将是好的,但nginx(译者注:一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器)和其他服务器只是不喜欢在Windows中生产。

虚拟的以JVM为基础的实现,例如Netty(译者注:JBOSS提供的一个java开源框架),很容易处理每秒650K+/的请求量。IIS在运行一个简单的CLR应用程序“Hello,World!”,处理大约每秒50K的请求量时就会壅塞。(有趣的题外话,参考基准开发者通过TCP套接字创建了一个简单的C#的web服务器,它能处理大约每秒120K的请求量。)

狭隘的心理

前些年有个运动叫做ALT.NET。该运动是全部是关于寻找我们自身之外的更广阔的开发社区以作为一个整体,并汇聚不同的部分。有趣的是,那是StructureMap、Autofac、NuGet、ASP.NET MVC和许多其它工具的灵感来源。在传统的.NET的圈子里,这个运动受到了很多的不屑和鄙视。我把这看作是,作为一个整体的社区普遍的狭隘心理和怠惰的一个极大的例证。(的确,它们中的一些可能会消失,进而以包括Redis,MongoBD还有其它的不同的技术而出现。)

有这么多很棒的方案在那里。假定微软已注定是唯一正确之路的想法是荒谬的。如果是这样的话,我们就都还在使用Visual Studio的设计工具去拖放按钮和链接元素到一个WebForm的界面上,我们会设定了该按钮并且依赖ViewState以帮助我们与可怕的HTTP所带来的恐惧隔开。我从我的一个部署的代码库中最后一个WebForm中摆脱的那一天,是个光荣的值得庆贺的日子。

谁又曾想过“网络控制”是个好主意?很显然我考虑过因为我喝了Kool-Aid(译者注:卡夫公司出品的饮料,这里意指明知是注定的或有危险的仍然去做,有负面涵义)并且完全接受它。它狠咬了我。见过2MB的ViewState吗?

[注:当我写这篇文章的时候,原来的标题,“为什么我不再用.NET”,意味着整个.NET生态系统。标题感觉有点短于是我更新为“为什么我不再用.NET框架”。我想.NET作为一个生态系统,包括了所有的工具,工程,平台,组织还有很多开发者。这就是为什么有些更广泛的.NET社区的元素在我的这篇文章中受到抨击原因。]

性能杀手

C,Java和C#中典型的多线程范例都强烈推荐使用锁和互斥。对于锁来说有个隐藏的开销:它们慢得难以忍受。使用Disruptor(JVM中的无锁的环形缓存[译者注:实际上就是拥有一个序号指向下一个可用元素的数组]),你可以很容易得每秒处理20M以上的事件。在.NET中使用规定的“最佳实践”等任何超过每秒十几次的传输,都被认为是体面又好的性能表现,在这一点上来说你仅仅需要更大/更好/更多的硬件设备。事实上,我见过第三方客户端库(Rabbit,Couch,Mongo等等)中锁语句遍布整个代码。即使在我的代码中没有任何的并发,默认的和首选的方法都用了锁。

无锁的、事件驱动的方法允许你大幅降低硬件和资金支出。大部分应用程序可以轻易地运行在两台机器上,第二台机器仅仅在冗余和失效备援时是必须的,以防因为硬件相关的问题导致第一台机器不可用的时候起作用。

这个问题的另一个方面是调用网络和磁盘子系统的传统方式:同步,阻塞代码。如果你需要多个并发的HTTP请求,你需要更多的线程。大多数人不知道的是,为维持线程多出的1-2MB和上下文切换线程的需求,使得CPU内核消耗所有的时间颠簸在上下文切换上而不是做真正的工作。所以现在我们得到了在一个应用程序中数百或数千的线程,占用了RAM,并造成CPU停滞不前。还有个更好的方式。

Netty/NIO (JVM),Erlang,Node,Gevent (Python)和Go都支持使用事件驱动的子系统操作(选择/epoll[译者注:Linux内核中的一种可扩展IO事件处理机制]/kqueue[译者注:FreeBSD的可扩展的事件通知接口])。这就意味着当等待数据包被tx/rx跨网络的时候,CPU可以自由地去做其它,重要的工作。因为JVM的成熟,Netty可以认为是做这项工作最快的,但我喜欢Go用Goroutines操作这个的方式—它简单,优雅,很容易推理,没有像意大利面条一样的回调。

SQL Server

作为一名.NET开发者,当你开始一个新的工程时,有一些事是你通常会去做的:

创建一个新的solution

将其部署到Team Foundation Server(译者注:Microsoft 应用程序生命周期管理 (ALM) 解决方案的核心协作平台)

IIS中建立相应的网站入口

创建一个新的SQL Server数据库

在solution中关联Entity Framework(通常是2010年之后创建的工程)

开始设计你的数据库和ActiveRecord实体

在大多数情况下这不是编写代码的正确方式。当然它可能在某些情况下有效,但是作为一个“默认的架构”它并不是你想要的。为什么在我们甚至还没理解问题领域之前已经做了任何技术上的选择?这简直是本末倒置了。

微软的生态系统鼓励每个人使用SQL Server。在Visual Studio中和SQL Service进行交互或者使用SQL Management Studio(和它的前身,SQL查询分析器)是如此令人难以置信的容易。这种以数据库为中心的重点,是钦定的或唯一正确的方式的一部分。它使你更加迷恋微软。厂商锁定始终对厂商来说是好的。

为什么我们要如此开发?为什么我们不更多地考虑应用程序的行为而不是它如何存储的?现在我所有的项目都使用基于JSON的键/值存储。有了这种功能,我可以选择任何我想要的存储引擎,包括SQL Server,Oracle,PostgreSQL,MySQL,Cassandra, CouchDB, CouchBase, Dynamo, SimpleDB, S3, Riak, BerkeleyDB, Firebird, Hypertable, RavenDB, Redis, Tokyo Cabinet/Tyrant, Azure Blobs,文件系统中的明文JSON文件等等等等。突然之间,我们能够开始根据其优点而不是仅仅对其熟悉来选择存储引擎了。

题外话:在AWS RDS的云上运行过SQL Server吗?别这么做。当然它会工作,但是一些例如复制这样最简单的事是不存在的。文章充斥着对SQL Server不能在AWS RDS上工作的引用。

结论

也许我在软件开发中学到的两件最重要的教训是:

边界和封装的重要性(以多种形式)

付出代价以得到正确的模型和抽象

许多年前我恨“模型”这个词。每个人都会把它到处扔,它是一个如此过载的术语,很难理解它的含义和它为什么这么重要。就这点来说,我仅仅会说模型是对你想要封装的现实的一个有限的表示。也许最简单的例子就是地球仪的墨卡托投影了。这很确切得说明了一件事:导航。如果你在其他的事情上使用它,它并不毫无价值。如果你不专注于付出代价去使模型正确,去封装商业现实,那么没有任何技术能够拯救你。

我对.NET最大的抱怨是,“唯一正确的方式”引导你远离理想的模型并把你推向关注实现细节和技术缺陷的方向。这样的关注导致技术实施渗血并且感染模型,最终导致它腐烂变质,因为它不能适应不断变化的商业需求。当这发生的时候,开发者挣扎着并蹬踢着,如同吸毒者一样,他们从一个新技术转向另一个,以期望下一个强大的技术能够治愈他们的病痛。

技术本身并不是灵丹妙药,相反地,它是关于取舍和选择。只有正确地理解了商业行为并把它们封装进结构良好的,易于理解的模型中,以帮助保持技术堆栈在属于它的地方—作为一个实现细节。

这就是我为什么不再用.NET 框架,因为它不断地重申自己(的主张),不断地想要比它的本身更多的:一个实现细节。

万洲金业跟华鑫投贵金属比较好用的是哪一家?

我选择这类型的交易平台比较看重它是否正规,而且功能是否齐全,综合考虑的话,我比较推荐华鑫投贵金属,毕竟他们拥有美国监管最严格NFA牌照,而且它的功能也是比较多的,操作起来也很方便。

现在最成熟的开源nosql是什么?分别有什么优缺点

Apache三剑客:HBase, Cassandra, CouchDB。HBase的前景最为看好,因为它的开发者众多并且都是顶尖高手。Cassandra目前有很多否定的声音。CouchDB的小而精悍,赞誉很多,将要正式发布的CouchBase融合了MemBase和CouchDB,很令人期待。

HBase和Cassandra都是效仿Google的BigTable的基于列的数据库,它们都是用Java写的。另外一类似的数据库是HyperTable,百度用在一些后台分析,因为它是C++写的,速度比较快。不过HyperTable有点边缘,不太流行。这些基于列的开源数据库目前都比Goolge的BigTable差之少一个数量级

CouchDB是一个文档数据库。其最大的竞争者是MongoDB。MongoDB和HBase都采用主从服务器设计。CouchDB的服务器分布设计和Cassandra类似,Peer to Peer类型的。主从服务器设计一般能更好的strong consistent,属于CAP理论中的CP类型。 CouchDB和Cassandra一般认为都是eventual consistent,属于CAP理论中的AP类型。但其实MongoDB和Cassandra都可以设置成strong consistent或者eventual consistent。

以上所提到的数据库都支持MapReduce。好像出了HyperTable都支持非主键索引。HBase和strong consistent配置的MongoDB都支持最基本的锁定(HBase单行锁定,MongoDB单文档锁定),因此可以实现transaction,但是实现有点复杂和低效。单就transaction这一点,目前开源NoSQL数据库没有做的比较好的。

MongoDB的最大卖点是不需构建非主键索引也能执行很多查询。但是MongoDB的服务器分布设计实在不能让人恭维,可以说是NoSQL数据库中最Ugly的实现。

K-V数据库比较多,而且上面提到的基于列的数据库和文档数据库其实也都是K-V数据库。比较流行的纯种K-V数据库有:

Memcached: 非常流行,不支持持久化

VMWare's Redis: 很流行,新浪和知乎都在用,CP类型。

MemBase: 由很多Memcached的开发者开发,使用sqlite作底层存储。在社交游戏中用的比较多, zynga在用,CP类型。

Riak, 分布式实现和CouchDB/Cassandra比较像,AP类型。支持MapReduce。

Linkin's Voldemort, 在K-V中少见的eventual consistent ,AP类型。

TT, TC

纯基于二维座标索引的是Neo4j。但是现在MongoDB和CouchDB都集成这一特性。

目前CouchDB的开发者成立的公司CouchOne收购了MemBase,将其底层sqlite换成CouchDB推出了CouchBase,从而引入MapReduce以支持非主键索引。CouchBase暂时还没有正式发布官方正式版,不过快了。虽然CouchDB是eventual consistent的,但是CouchBase的开发者宣称CouchBase保持了MemBase的strong consistent特性,具体实现有待以后研究。

如果从成熟的角度来看,比较成熟并且十分流行的的有CouchDB,Memcached,Redis。

hadoop 怎么设置多个输入路径

以上的更改就是两个表进来,都可通过此类进行输入,无须针对两个表,要写两个继承FileInputFormat并实现WritableComparable接口的类。下面才是如何让才采样器只采一个文件的,啊哈!答案说出来笑死人了,那就是利用MultipleInputs先指定要采样的那个输入路径,然后调用采样器,采样结束后于采样相关的流、文件什么的进行关闭,最后再用MultipleInputs指定第二个输入路径。这样路径一的文件(可以包含多个文本,你懂的)先采样,然后路径一和路径二的文件都进入map了,map再根据一些额外的信息判断来自那个路径的数据。

MultipleInputs.addInputPath(conf, new Path(args[0]), Definemyself.class,Mapclass.class);//第一个输入路径

/*********下面采样**********更多采样的细节见我领一篇博客,不一样的视角那篇***********/

Path input = new Path(args[0].toString());

input = input.makeQualified(input.getFileSystem(conf));

InputSampler.RandomSamplerText, NullWritable sampler = new InputSampler.RandomSamplerText, NullWritable(0.4,20, 5);

/...........此处省略细节................/

IOUtils.closeStream(fs_out);// 关闭流,有关采样的结束了。

/...............此处添加一些其他的需要的工作,例如分布式缓存啦,Hashtable的处理阿............../

MultipleInputs.addInputPath(conf, new Path(args[3]), Definemyself.class, Mapclass.class); //最后指定输入的第二条路径

JobClient.runJob(conf);

上一篇Hadoop中的各种排序

下一篇hadoop 两表join

主题推荐hadoophashtable分布式数据博客

猜你在找

传递参数到mapreduce中hadoop源码研读之路(三)----序列化TCP为什么采用随机初始序列号【python】MySQLdb执行sql文件命令经典数据结构沉思录(二):数组和链表Hadoop InputFormat浅析--hadoop如何分配输入20140312 GitHub 与 Git 基础 02 实战 下载Spring Framework源码Tomcat配置虚拟目录(使用XML部署项目)hive建表手记一些开源的JMX工具

查看评论

暂无评论

您还没有登录,请[登录]或[注册]

* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

TOP

核心技术类目

全部主题 Hadoop AWS 移动游戏 Java Android iOS Swift 智能硬件 Docker OpenStack VPN Spark ERP IE10 Eclipse CRM JavaScript 数据库 Ubuntu NFC WAP jQuery BI HTML5 Spring Apache .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech Perl Tornado Ruby Hibernate ThinkPHP HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap

个人资料

访问我的空间

keda8997110

访问:180731次

积分:3871

等级:

排名:第2631名

原创:187篇转载:78篇译文:2篇评论:34条

文章搜索

文章分类

JAVA(99)

Oracle(14)

数据结构与算法(6)

Linux(29)

Js(13)

网络(12)

操作系统(2)

服务器(11)

Hadoop(32)

分布式(18)

Spring(7)

Hibernate(3)

maven(3)

雅虎统计基础数据定义(1)

数据库(14)

60个开发者不容错过的免费资源库(1)

SVN中trunk(2)

branches(1)

tags用法详解(1)

mybatis(7)

利用Mybatis Generator自动生成Mybatis的相关代码(1)

文章存档

2014年10月(1)

2014年09月(3)

2014年08月(1)

2014年07月(1)

2014年04月(8)

展开

阅读排行

svn的merge使用例子(10804)

JS中生成与解析JSON(8417)

Java NIO与IO(7067)

varnish配置详解(6301)

memcached: error while loading shared libraries: libevent-2.0.so.5: cannot o(2950)

-bash: wget: command not found的两种解决方法(2873)

maven命令大全(2411)

Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间(2353)

spring MVC的注解(2266)

Win7 eclipse Hadoop Failed to set permissions of path(2176)

评论排行

svn的merge使用例子(4)

heartbeat 心跳技术(4)

Java NIO与IO(3)

Linux环境变量的修改(永久,暂时)(2)

Win7 eclipse Hadoop Failed to set permissions of path(2)

hadoop单表关联(2)

TCP长连接与短连接的区别(1)

Spring配置文件标签报错:The prefix "XXX" for element "XXX:XXX" is not bound. .(1)

tomcat集群(1)

Hadoop中的各种排序(1)

推荐文章

最新评论

svn的merge使用例子

u012450176: good!

varnish配置详解

u012055579: 很详细 楼主是怎么学习的?

svn的merge使用例子

QQ575787460: 写的很仔细,赞赞赞!

svn的merge使用例子

smach1991710: 写的很好,赞!

svn的merge使用例子

zxy851112: sync

TCP长连接与短连接的区别

shawngo: 讲的很透彻易懂,正是我想了解的。十分感谢!!!

Spring配置文件标签报错:The prefix "XXX" for element "XXX:XXX" is not bound. .

l791444672: 看见你的文章解决了我的问题,非常感谢

Java NIO与IO

zxf95: @haoxinqingxin:...

Java NIO与IO

zxf95: 这不是翻译的么

10种排序算法总结

changshenglugu: 谢谢!复习了一遍,很详明!

公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告|合作伙伴|论坛反馈

网站客服杂志客服微博客服webmaster@csdn.net400-600-2320|北京创新乐知信息技术有限公司 版权所有|江苏乐知网络技术有限公司 提供商务支持

京 ICP 证 070598 号|Copyright © 1999-2014, CSDN.NET, All Rights Reserved GongshangLogo

为什么 Go 语言的性能还不如java

Go语言自亮相以来并没有展示一个明确的方向,Google员工将Go语言称为一个“试验性语言”,称其试图融合Python等动态语言的开发速度和C或C++等编译语言的性能和安全。一位Go语言的支持者概括而言Go语言如下:简单、快速、安全、并发、快乐编程、开源;但Go语言缺乏方向以及其“集大成者”的尝试很容易会导致其学猫不成学狗也不成,沦为四不像。尽管如此,编者仍然觉得Go语言有相当大的潜力:很多开发者对它感兴趣——不仅它的最初设计者阵容强大,而且在参与修改源代码的人群中也不乏大牛级人物。这很有可能帮助Go语言找到适合自己的方向,开拓系统编程的新方向。

.net到底是什么意思?

“.NET 是 Microsoft 的用以创建 XML Web 服务(下一代软件)平台,该平台将信息、设备和人以一种统一的、个性化的方式联系起来。”

“借助于 .NET 平台,可以创建和使用基于 XML 的应用程序、进程和 Web 站点以及服务,它们之间可以按设计、在任何平台或智能设备上共享和组合信息与功能,以向单位和个人提供定制好的解决方案。”

“.NET 是一个全面的产品家族,它建立在行业标准和 Internet 标准之上,提供开发(工具)、管理(服务器)、使用(构造块服务和智能客户端)以及 XML Web 服务体验(丰富的用户体验)。.NET 将成为您今天正在使用的 Microsoft 应用程序、工具和服务器的一部分,同时,新产品不断扩展 XML Web 的服务能力以满足您的所有业务需求。”=版权所有 软件 下载 学院 版权所有

这个美国时间2000年6月22日上午面世的新概念一经发布就引起了全球IT界的关注,因为发布它的微软公司向以改变业界的游戏规则而闻名,该公司另一个出名的地方就是精通“拿来主义”,善于继承别人的思想再经过封装变成自己的产品。在.NET的新产品中,VS.NET有Delphi的影子,C#更宛若JAVA的一个clone,甚至.NET的“网络计算”的概念也曾经在很早以前由SUN提出过。但是这并不能妨碍.NET成为去年最热门的技术词汇,随着VS.NET和Windows.net的发布,它还会成为今年人们谈论最多的话题之一。

发布.NET之后,盖茨说,网络将由呈现式的平台转为完全的平台。

在微软的WinXP的发布会上,我注意到主持人特别强调的一句话:在未来,我们可以在任何时间,任何地点,使用任何设备获取信息(any time, any place and on any device.)。但是这当然不是.NET的全部,正如盖茨所言,仅仅能够获取信息是不够的,通过.NET,用户还将会获得由程序封装过的数据,也就是服务。关于这一点,我有如下的想象:有了.NET,全世界的互联网络会组成一个庞大的服务中心,而你的终端设备(当然不仅仅是你的台式机,还包括手机、PDA、平板PC等,甚至家用电器,前面说过了,任何设备)就是你贴身的智能秘书。你不需要自己获得信息去分析,只需将你的要求说(自然语言技术也是.NET的一部分)给秘书听,她就会自动地去互联网络上查找相关的服务,经过自己的智能处理与整合,以最有效率的方式完成你交给她的任务。关于这一新的计算模型所带来的可能性,在下面这一假想的事例中可得到突出的体现:

Steve Masters 因公到旧金山出差,过街时被一名骑自行车的邮递员撞伤。Steve 用他的 Web 电话与远在他的故乡的 Jamie 联系,她是他医生办公室里的接待员。Jamie 不仅知道 Steve 的位置,而且还能访问离 Steve 较近的一些诊所列表,这些诊所可提供他的健康保险所包括的服务。她为 Steve 在一街之隔的某诊所约了医生。Steve 在得到所需的医护后又上路了。

很多人为这个前景欢欣鼓舞,其实这只是.NET体验的一小部分而已。.NET为开发人员提供了新的开发平台 (.NET框架) ,新的开发语言(C#) ,新的开发工具 (Visual Studio .NET) ,新的开发方式 (Web Service) ;为普通用户提供了Windows CE、Windows XP、Stinger、Xbox、Tablet PC、.NET My Services、MSN等产品;为企业提供了bCentral。在未来,最终大多数流行的 Microsoft 软件应用程序——包括 Office 和 Visual Studio .NET——将开始与 XML Web 服务实现交互,并把它们的主要功能作为 XML Web 服务公开,以便其他开发人员可以利用

现在,你看到了,Microsoft .NET是一个平台,是 Microsoft 的 XML Web 服务平台。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。这个平台包含广泛的产品系列,它们都是基于 XML 和 Internet 行业标准构建,提供从开发、管理、使用到体验 XML Web 服务的每一方面。现在,Microsoft 正在五个方面创建 .NET 平台,即工具、服务器、XML Web 服务、客户端和 .NET 体验。

Microsoft .NET更是微软的一个网络战略,是微软意图全面占领互联网领域的最强有力的武器。在全球互联网络市场的抢夺战上,微软似乎慢了半拍,在浏览器方面差点败在Netscape手中,还为此吃了老大的官司,在流媒体上又被Real斩于马下。随着互联网以前所未有的速度席卷全球,很多人都希望籍此机会重新洗牌,但是惯于制定游戏规则的微软又怎会轻易将主动权交到别人的手中。同时,由于开放源码组织的不断壮大,微软紧抱源码不放的做法召致越来越多人的不满,很多人出于不同的考虑(安全、开放、免费)投靠了Linux阵营。另外,微软正等待着法院关于拆分的判决,如果微软被拆分,微软的产品将很难再取得目前的市场绝对垄断地位,对于微软来说,在产品上必须要变,而这个变,就是.NET所带来的由一个软件公司向一个服务公司的转变。事实上,微软将来可能会变成一个全球最大的网络服务商(ASP)。Windows这个给微软带来令人眩目的财富和辉煌的十年视窗时代结束了,微软打算全面设计我们的未来,它将把它所有产品全部重新改写为与.NET构造相一致的形态,以ASP(应用服务供应商)方式提供,这之后微软不再主要依靠授权和销售软件光盘赚钱,而是要通过互联网上运行的大量软件服务赚钱,从软件供应商走向ASP——这就是微软的新战略。

事实上,很早就有人提出过,对计算机发展和普及做出巨大贡献的软件行业已经到了这样一个转折点:留在终端的软件会越来越少,目前通过软件包发行的方式即将消失,而改为网上出租的形式获得利润,用户只要在本地发出请求,就可以在网上直接使用它,而这个软件的供应商会依你使用的次数来收费。现在你明白微软为何一定要拼了老本也要对Netscape赶尽杀绝了,一旦这个设想成为现实,集成诸多功能的浏览器将取代现在操作系统的地位,成为终端上唯一需要预安装的软件。如果这个浏览器不是微软的产品,那后果可想而知。=版权所有 软件 下载 学院 版权所有

.NET还是微软的一个互联网之梦,是微软公司提出的下一代互联网构想。在这一构想中,计算超越了网络浏览,进入一个更为先进的互联网平台和极为丰富的软件服务的新世界。微软心中有一个梦想,它要通过.NET改变人们未来的生活方式。就像当年Windows的出现使电脑从精英手中的玩具变成了普通大众身边不可或缺的工具,.NET极有可能会使互联网成为人们生活中密不可分的一部分。在未来的i时代,人们的生活、工作、学习、娱乐,都将得到.NET的帮助。在那个时候,.NET或许不会有人再提起,但是它带来的产品与概念,却将时刻伴随我们左右。

发表评论

评论列表

  • 晴枙矫纵(2022-06-08 00:22:31)回复取消回复

    sruptor(JVM中的无锁的环形缓存[译者注:实际上就是拥有一个序号指向下一个可用元素的数组]),你可以很容易得每秒处理20M以上的事件。在.NET中使用规定的“最佳实践”等任何超过每秒十几次的传输,都被认为是体面又好的性能表现,在这一点上来说你仅仅需

  • 笙沉嵶邸(2022-06-08 02:41:32)回复取消回复

    D的可扩展的事件通知接口])。这就意味着当等待数据包被tx/rx跨网络的时候,CPU可以自由地去做其它,重要的工作。因为JVM的成熟,Netty可以认为是做这项工作最