.NET:持续进化的统一开发平台

标题使用的是进化这个词语,是因为 .NET 在不断的努力,也在不断的重构。

这篇文章的更多目的和意义在于科普,俗称“传教”。


 持续进化的 .NET



640?wx_fmt=png&wxfrom=5&wx_lazy=1



上图即是一个学习的路线图同样他也是 .NET 平台的进化图。也是代表着 未来.NET的发展方向。


今天的故事呢,就会根据上图中的名词一个个的解释下来。让各位更好的了解.NET。


.NET到底是什么?


在过去的日子中大家提到 .NET 通常是指 .NET Framework 这么一个框架。

但是随着.NET技术的发展,时至今日-2018年

广义的 .NET指包含 .NET Framework.NET CoreMono在内,是基于.NET技术的整个产品系列。


.NET 是一个通用开发平台。 它具有几项关键功能,例如支持多种编程语言、异步和并发编程模型以及本机互操作性,可以支持跨多个平台的各种方案。
.NET 开发可以实现包括 .NET Framework、.NET Core 和 Mono。 .NET 的所有实现都有一个名为 .NET Standard 的通用 API 规范。
.NET 拥有惊人的性能和开发效率,并且拥有数百万的开发者。

以上就是最新的.NET的介绍。以后提到.NET不再仅仅是.NETFramework 了。

我也就微软着新生的 .NET 或者说进化后的.NET来说说过往吧。


 .NET Framework



传统的 .NET Framework是以一种采用系统虚拟机运行的编程平台,以(通用语言运行库)CLR(Common Language Runtime)为基础,支持多种语言(C#、F#、VB .NET、C++、Python等)的开发。

这也是我们目前市面上用到最多也是大家最熟悉的.NET,它是目前在市场中的占比是最大的,他很成熟也很稳定,但是他的弱点是在于他天生不具备跨平台,这也是被广大程序员所诟病的,他需要跨平台,是需要通过配合Mono来使用,它更多的运行在Windows服务器上,需要IIS作为宿主。


 .NET Framework  VS JAVA


而提到.NETFramework就不得不提到Java了。

甲骨文(Oracle)公司的Java语言和J2ee技术是.NET平台的竞争对手之一。

说起.NET的起源,还得先说到Java。众所周知,Java是一个主打敏捷开发,跨平台的编程语言。而.NET的诞生,与Java有着千丝万缕的联系。

Java的历史可以追溯到20世纪90年代,最初是由Sun公司为了实现电子产品智能化而开发的程序语言,主打的设计思想是敏捷开发和跨平台。1995年Java正式推出之后,立刻受到了包括IBM、Apple、Adobe、HP和微软在内的各大公司的追捧。随后几年Java的发展势如破竹,作为一款收费产品,Java给Sun公司带来了非常可观的盈利(Java已于2006年底宣布免费开源)。而微软作为软件大厂,当然不愿看着Java一家独大,同时也意识到了敏捷开发的巨大前景,由此诞生了Microsoft .NET。

.NET框架作为Visual Studio的组件之一发放,自2002年全新VS .NET搭载.NET 1.0起,.NET至今已更新四个主版本,.NET 4.0于2010年随VS2010发布, 目前最新的 .NET Framework 版本为4.7.1。来源

.NET与Java有非常多的相似之处,二者都是即时编译(JIT)的动态语言。这类语言中,项目编译生成的目标文件并不是机器码,而是需要由运行时环境进行即时编译的特殊代码。在Java中这种特殊代码叫做字节码(bytecode),而.NET中则叫做中间语言(Common Intermediate Language,简称IL)。Java官方的运行时环境叫做JRE(Java Runtime Environment),而.NET官方的运行时环境叫做CLR(Common Language Runtime)。

**而我要吐槽的地方就在这里 ** 经常有很多人唱衰.NET说BAT都不用 .NET 都是用java的。

为什么国内的互联网公司都使用的是JAVA呢?


拨开迷雾看本质。


  • 阿里巴巴 1999年成立

  • 百度2000年成立

  • 腾讯 1998年成立 。

.NET 2002年才发布1.0版本。。你告诉我 他们有的选吗?
有人要提出京东 是从.NET转的java ?为什么,因为那个时候 .NET 不开源没有现成的大型电商、分布式、集群的解决方案,而java有大把的电商和互联网人才,注定了会选择JAVA而不是 .NET 。 

或许还有就是舍不得钱啊,毕竟 windows 服务器的授权费贵。~皮一下很开心。

所以 .NET 错在于它出生的晚了,不支持跨平台。 中国的互联网公司一开始就没有什么选择。


.NET的跨平台之路


在和Java 的博弈和对战中,我们都知道 .NET Framework一直被吊打,尤其在国内。好在 2014年11月12日,微软宣布将完全开放.NET框架的源代码,并提供给Linux和OS X使用

听了这么一则新闻之后大家知道 .NET或许还有机会打一波翻身仗。但是早在这个新闻之前其实就有Mono这么一个 .NET 跨平台解决方案。



Mono 神奇的跨平台解决方案

所以如果有人问你,.NET Framework 怎么跨平台,告诉他,可以使用Mono。

那 Mono 到底是什么?

它为什么可以跨平台?

在 .NET 开源之前,需要首先了解 Mono,了解 Mono [维基Mono]

考虑到大多人咳咳不方便搭梯子以及英文不是很好,我摘录和转载了几个博主的文章。

.NET Framework是由微软独立开发,闭源且具有专利性质的独家技术,并且微软只提供了针对Windows系统的支持。而作为同类竞争对手的Java,却能通杀包括x86、ARM在内的主流硬件平台,软件方面也支持包括Windows、Linux、Android在内的各种桌面、移动、嵌入式系统。Mono 是一个由 Xamarin 公司(先前是 Novell,最早为 Ximian)所主持的自由开放源代码项目。该项目的目标是创建一系列符合 ECMA 标准(Ecma-334 和 Ecma-335)的 .NET 工具,包括 C# 编译器和通用语言架构。与微软的 .NET Framework(共通语言运行平台)不同,Mono 项目不仅可以运行于 Windows 系统上,还可以运行于 Linux,FreeBSD,Unix,OS X 和 Solaris,甚至一些游戏平台,例如:Playstation 3,Wii 或 XBox 360。因此,为了提升.NET的平台适应性,微软在.NET发展之初就建立了一套对于.NET中间语言的实现规范——.NET Common Language Infrastructure,这相当于一套关于.NET中间语言(IL)的语法手册,微软希望通过这种方式让第三方和开源社区来参与.NET的平台移植。Ximian公司是最早参与这项工作的成员之一,并于2004年6月发布了第一代.NET跨平台产品——Mono 1.0。Mono与微软官方的CLR一样,都是对 .NET CLI(Common Language Infrastructure)的实现,他们都能对.NET的中间代码(IL)提供实时编译。不同的是,CLR只支持Windows系统,而Mono如今已支持包括Windows、Linux、macOS、iOS、Android在内的各种主流平台和操作系统。著名的游戏引擎Unity3D就包含了Mono,我们所熟知的《Tample Run 神庙逃亡》、《炉石传说》、《Deemo》等游戏都是基于Unity3D开发的(包含.NET和Mono的技术)。
值得一提的是,Mono是一个有故事的项目,十几年来历经波折,几经转手,于2011年落入Xamarin公司手中,其间Mono还与微软发生过专利纠纷。
终于在 2016年2月,微软正式收购Xamarin,从此Mono回到了微软霸霸的怀抱,成了亲生儿子,同时微软宣布Mono面向社区免费。在2016年11月的Connect(); //2016开发者大会中,微软还发布了基于Xamarin Studio改造的Visual Studio for mac。
这就牵扯到了一个问题“.NET 应用程序是怎么运行的?” 想知道答案的朋友们可以去好好看 ** 魅力 .NET:从 Mono、.NET Core 说起** 


** 魅力 .NET:从 Mono、.NET Core 说起**  地址:http://t.cn/RZusYbA


Xamarin


考虑如何生成 iOS 和 Android 应用程序时,许多用户都认为本机语言、Objective-C、Swift 和 Java 是唯一的选择。 但是,在过去几年中,一个全新的生成移动应用程序平台的生态系统已经出现了。Xamarin将.NET的强大功能和生产力带入iOS和Android,重用技巧和代码,同时获得本地API和性能。Xamarin 是唯一能通过提供跨 iOS、Android 和 Windows Phone(Windows Phone 的本机语言已经是 C#)这三种平台可正常工作的单一语言 - C#、类库和运行时,却仍能编译性能甚至足以满足高要求游戏的本机(非解释型)应用程序的平台。

来一张对比图


640?wx_fmt=png


Hybrid 是指混合开发,目前的ionic 、weex、MUI 均在此列表中。

React Native 是Facebook推出的基于React的做的框架,也很生猛目前在社区的生命力很旺盛。



.NET Standard

莫明奇妙提到的这个 .NET Standard 其实是未来的.NET核心,一切基于它来实现代码的共享。

.NET Standard 进一步实现跨平台跨设备的代码共享

.NET Standard 是一组由 .NET 实现的基类库实现的 API。 更正式地说,它是构成协定统一集(这些协定是编写代码的依据)的特定 .NET API 组。 这些协定在每个 .NET 实现中实现。 这可实现不同 .NET 实现间的可移植性,有效地使代码可在任何位置运行。.NET Standard 也是一个目标框架。 如果代码面向 .NET Standard 版本,则它可在支持该 .NET Standard 版本的任何 .NET 实现上运行。

.NET Core


最后,终于来到了现在火热的.NET Core
自 .NET Framework发布至今已有十余年,由于微软过于保守的版权策略,.NET一直作为Windows平台的封闭产品。尽管有Mono项目对.NET实现了平台移植,但毕竟不是微软“亲生”,Mono在一些实现上仍然不够完美。随着2014年Xamarin和微软发起.NET基金会,微软在2014年11月份开放.NET框架源代码。随后在.NET开源基金会的统一规划下诞生了 .NET Core。
(注:.NET Core早期被称为 .NET vNext或 .NET 5,直到2016年1月才正式命名为 .NET Core 1.0)
需要注意的是,尽管微软把 .NET Core作为.NET未来的发展方向,但 .NET Core和 .NET Framework仍然是两个独立的产品。.NET Framework也会继续更新和维护。


.NET Core与 .NET Framework最大的区别在于 .NET Core是完全开源的,托管在github上,支持任何人向项目贡献代码。并且,.NET Core不再是Windows独占,还支持Linux、macOS等多种平台。


而 .NET Core 是.NETFramework的新一代版本,或者说是其进化版本,是微软开发的第一个跨平台 (Windows、Mac OSX、Linux) 的应用程序开发框架(Application Framework),未来也将会支持 FreeBSD 与 Alpine 平台。


.Net Core也是微软在一开始发展时就开源的软件平台,它经常也会拿来和现有的开源 .NET 平台 Mono 比较。


由于 .NET Core 的开发目标是跨平台的 .NET 平台,因此 .NET Core 会包含 .NET Framework 的类库,但与 .NET Framework 不同的是 .NET Core 采用包化 (Packages) 的管理方式,应用程序只需要获取需要的组件即可,与 .NET Framework 大包式安装的作法截然不同,同时各包亦有独立的版本线 (Version line),不再硬性要求应用程序跟随主线版本。





2016年6月27日 在RedHat DevNation 峰会上宣布了 .NET Core & ASP .NET Core 1.0 RTM 的发行。而目前最新的 .NET Core 版本为2.1.4。


.NET Core的核心点: 创新、开源、跨平台


Develop high performance applications in less time, on any platform.

用更少的时间,在任何(全)平台上开发高性能应用程序。


以上描述说的就是 .NET Core。


参考链接:Develop high performance applications in less time, on any platform


特点如下:

  • 跨平台

您可以创建在Windows,Linux和MacOS上运行的.NETCore应用程序。

  • 统一

利用统一的.NET标准库(.NET Standard),使用相同的代码定位所有平台,并使用相同的语言和工具重用您的技能。

  • 轻量级

没有影响部署和模块化开发模型,您只需要依赖于您所需的最少组件包。

  • 现代

多语言支持C#,VB,F#和现代结构,如泛型,语言集成查询(LINQ),异步支持等等。

  • 开源

运行库,库,编译器,语言和工具都是GitHub上的开源代码,接受代码贡献,测试和完全支持。


.NET Core 经常会拿来与其他平台做类比,尤其是它的源头 .NET Framework 以及另一个相似性质的开源平台 Mono。
为了让大家,更好的理解下,我阐述下吧。


.NET Core 与其他平台的关系


.NET Framework
据微软的帮助,.NET Core 和 .NET Framework 是子集 (Subset) 与超集 (Superset) 的关系,.NET Core 将会实现出部分的 .NET Framework 功能 (基本上是不含用户界面的部分),例如 JIT (.NET Core 采用 RyuJIT)、垃圾收集器 (GC) 以及类型 (包含基本类型以及泛型类型等)[10]。未来 .NET Framework 和 .NET Core 也将会是各自发展,但它们也会同时使用彼此的功能,例如 .NET Compiler Platform 与 RyuJIT 等技术。
Mono
Mono 是另一个已发展许久的 .NET Framework 跨平台开源版本,基本上并不隶属微软官方,而是由社区的力量所主导,自成一个生态系统,也开发出了像Xamarin这样的跨平台.NET移动应用,.NET Core 与 Mono 未来会是合作的关系,Mono 仍会维持社区力量的维护与发展,而 .NET Core 则会以官方角度来进行发展,两边也会一起进行彼此功能上的增进。
.NET Core 与 ASP .NET Core 的关系

其实一开始并不是主从关系 [,ASP.NETCore 的开发初期 (ASP.NET5) .NET Core 还没有开始起跑,因此 ASP.NETCore 当时有自己的运行期与工具,一开始称为 Project K,后来改为 DNX (.NET Execution Environment),DNX 本身就具有可独立运作的运行能力,不需要依赖 .NET Core 运行,但是这样会变成 .NET Core 和 ASP.NETCore 双头马车的现象,在 .NET Core 逐渐成熟之后,微软也决定要将这两个各自独立发展的产品线集成在一起,DNX 也将因改用 .NET Core 运行而DNX终止开发,DNX 的功能将由 .NET Core 以及旗下的 .NET CLI 接替提供,集成后的版本将在 1.0 RC2 时发布。



严谨来说,ASP.NET本不应该放在此处与以上三个框架平行,但是因为ASP .NET太出名了,因此我不得不在这说清关系。ASP.NET最初是.NETFramework框架中的一个组件,用于开发Web应用程序。它是ASP技术的改进版本,需要注意的是,ASP与ASP.NET是完全不同的两个产品。同理,VB和VB.NET也是完全不同的两个产品。ASP和VB都是上个世纪的技术,过于古老在此不再赘述,但请务必注意区分它们。早期的ASP.NET提供一种叫做WebForm的方式用于呈现网页,它可以让网页开发变得像WinForm开发一样简单且可视化。但由于WEB技术的飞速发展,WebForm由于其低效、封闭和难以定制的缺陷已经逐渐淡出历史舞台。随着.NET3.5的发布,微软提供了全新的ASP.NET网页呈现方式,称为ASP.NETMVC Framework。这套框架遵循MVC设计模式思想,将视图和逻辑进行了很好的分离,并且大幅提升了性能和可定制性。经过多年发展,目前已经更新到了ASP.NETMVC6,MVC6完全采用.NETCore的项目结构,支持Framework、Core、Mono多种运行时。因此,ASP.NETMVC6也被称为ASP.NETCore。



历史的进程5 的命名会使得外界将它视为 ASP.NET的升级版,但它其实是新一代从头开始打造的 ASP.NET核心功能,因此微软宣布将它改为与 .NET Core 同步的名称,即 ASP.NETCore。


ASP.NETCore 可运行于 Windows 平台以及非 Windows 平台,如 Mac OSX 以及 Ubuntu Linux 操作系统,是 Microsoft 第一个具有跨平台能力的 Web 开发框架。

微软在一开始开发时就将 ASP.NETCore 开源,因此它也是开源项目的一员,由 .NET 基金会 (.NET Foundation) 所管理。



现在的责任

ASP .NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。
使用 ASP.NETCore,可以:

  • 生成 Web 应用和服务、IoT 应用和移动后端。

  • 在 Windows、macOS 和 Linux 上使用喜爱的开发工具。

  • 部署到云或本地。

  • 在 .NET Core 或 .NET Framework 上运行。



640?wx_fmt=png



注1:随着.NET技术的发展,时至今日,广义的 .NET指包含.NET Framework,.NET Core,Mono在内,是基于.NET技术的整个产品系列。而在过去的习惯中,.NET通常特指.NET Framework这一个最正统的框架。

注2:.Net Core也有两重概念,广义来说,Core指全新的一整套框架,包括运行时,命令行工具,项目结构定义等等。Core结构的项目,支持指定Framework、Mono或者Core中的一者或多者作为运行时环境。而狭义上的Core,仅特指 .NET Core CLR(运行时)。请根据上下文和语境区分其定义。

如果您不确定从哪里开始?我们建议尝试Visual Studio。

Visual Studio

Windows上的全功能集成开发环境(IDE),用于构建各种类型的.NET应用程序。宇宙最强大的编译器。

Visual Studio Code

在Linux,macOS或Windows上开发以构建跨平台网站和服务。安装C#扩展以获得最佳体验。

适用于Mac的Visual Studio

使用Xamarin构建原生Android,iOS,macOS和Windows应用程序,以及使用ASP.NETCore创建网站和服务。

OmniSharp

编辑器中的跨平台.NET开发,如Atom,Brackets,Sublime Text,Emacs和Vim。

JetBrains Rider

使用IntelliJ和ReSharper技术构建的跨平台.NETIDE。它为所有平台上的.NET和.NET核心应用程序提供支持。

.NET Core CLI

用于在Linux,macOS和Windows上开发跨平台网站和服务的命令行界面(CLI)。

尾声

最后推荐一本小书:《.NET 传奇:封闭到开放的历程》
所以2018全面扑腾到 .NET CORE吧 !

顺带一提,您如果在文章中看到一些错误和疏漏,还请指出,或者到github上进行修改提交PR。非常感谢。


640?wx_fmt=png

我们再回过头来看这张图是不是清晰了很多呢。

参考文献:

https://en.wikipedia.org/wiki/Mono_(software)
https://wc.yooooo.us/wiki/.NET_Core
http://www.cnblogs.com/xishuai/p/mono-dotnetcore.html
http://www.jubeat.net/2016/09/25/dotnet-core-prologue/
https://wc.yooooo.us/wiki/.NET框架
https://wc.yooooo.us/wiki/ASP.NET
https://wc.yooooo.us/wiki/ASP.NET_Core


文章推荐

1

【公开课】ABP CORE 框架入门视频教程《电话薄》基于 Asp.NET Core2.0 EF Core

2

  ABP的代码生成器(ABP Code Power Tools )使用说明文档

3

  Asp.NET Core2.0 项目实战入门视频课程_完整版








原文地址 :http://mp.weixin.qq.com/s/ajvLug9YSpZyxpAS9JF0CA


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

21、mysql修改密码的方法总结

修改mysql服务的连接密码其原理在于修改mysql服务自带mysql数据库下user表中的数据,下边三种修改方式和使用场景不同,不过最终的原理一致,前两种需要连接mysql服务之后修改,第三种方式无需连接服务即可修改。 1.强制修改root密码…

jzoj3853-帮助Bsny【dp】

正题 题目链接:https://jzoj.net/senior/#main/show/3853 题目大意 nnn个数字,每次可以将一个数字拿出并插入任意位置,操作kkk次求最少段连续相同的数。 解题思路 先将相同的缩在一起 设fi,j,s,zf_{i,j,s,z}fi,j,s,z​表示到第iii个,拿出了…

linux下jdk的安装和配置

1.将jdk的rpm包上传到服务器 2.使用rpm命令安装jdk rpm -ivh ***.rpm 3.配置环境变量 cd /usr/java目录下查看是否有jdk安装后的目录(一般都在这个目录下) vi /etc/profile,将以下代码添加到文件中 export JAVA_HOME/usr/java/jdk1.8.0_…

容器化的 DevOps 工作流

对于 devops 来说,容器技术绝对是我们笑傲江湖的法宝。本文通过一个小 demo 来介绍如何使用容器技术来改进我们的 devops 工作流。devops 的日常工作中难免会有一些繁琐的重复性劳动。比如管理 Azure 上的各种资源,我们会使用 Azure CLI 工具。同时我们也…

Summer Training day6 coseforces339D 线段树、位操作

D. Xenia and Bit Operationstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputXenia the beginner programmer has a sequence a, consisting of 2n non-negative integers: a1, a2, ..., a2n. Xenia is currently…

U102380-简单数据结构题【Trie】

前言 %%%\%\%\%%%%北大爷的题目 正题 题目链接:https://www.luogu.com.cn/problem/U102380 题目大意 nnn个数,求一个数kkk使得max{aixork}max\{a_i\ xor\ k\}max{ai​ xor k}最小。 解题思路 我们对每一个数按位建到一个TrieTrieTrie里,然后对于每个节…

linux下redis的安装和配置

以下介绍的是使用源码包的方式安装redis 1.创建安装目录 cd /usr/local mkdir redis 2.上传包到此目录下,并解压 tar -zxvf ****.tar.gz 3.使用make命令进行redis安装 cd到解压后的目录下,执行如下命令 编译命令:make,如果执行make命…

.NET Core 2.1 Preview 2发布 - April 10, 2018

我们今天宣布发布 .NET Core 2.1 Preview 2。这也是我们在接下来的两到三个月内接近最终发布的版本,该版本现已准备好进行广泛的测试。我们希望您有任何反馈意见。ASP.NET Core 2.1 Preview 2和Entity Framework 2.1 Preview 2也在今天发布。您可以在Windows&#x…

UOJ#244-[UER#7]短路【贪心】

正题 题目链接:http://uoj.ac/problem/244 题目大意 n1n1n1个矩阵如下图所示 每一层的格子有相同的延时,现在加一些平行于坐标轴的导线,求左上到右下的最小延迟。 解题思路 可以知道最优解一点是走到某个矩阵的左上角然后走这个矩阵到右下角然后到终点…

使用 C#/.NET Core 实现单体设计模式

本文的概念内容来自深入浅出设计模式一书由于我在给公司做内培, 所以最近天天写设计模式的文章....单体模式 Singleton单体模式的目标就是只创建一个实例.实际中有很多种对象我们可能只需要它们的一个实例, 例如: 线程池,缓存, 弹出的对话框, 用于保存设置的类, 用于logging的类…

linux下离线安装gcc

有时服务无法连接网络,此时可以使用源码包的方式安装gcc工具 1.上传安装包并解压 创建目录 cd /home/software/ mkdir gcc_bak 上传到此目录下 tar -zxvf gcc_rpm.tar.gz 2.安装gcc 进入到解压后的目录,执行命令 rpm -Uvh *.rpm --nodeps --…

P3462-[POI2007]ODW-Weights【贪心】

正题 题目链接:https://www.luogu.com.cn/problem/P3462 题目大意 nnn个容器容量不同,mmm个物品,对于一两个物品i,ji,ji,j,若wi≤wjw_i\leq w_jwi​≤wj​那么有wi∣wjw_i|w_jwi​∣wj​。 求能够放下的最多物品。 解题思路 显然就是一个进…

用C#(.NET Core) 实现简单工厂和工厂方法设计模式

本文源自深入浅出设计模式. 只不过我是使用C#/.NET Core实现的例子.前言当你看见new这个关键字的时候, 就应该想到它是具体的实现.这就是一个具体的类, 为了更灵活, 我们应该使用的是接口(interface).有时候, 你可能会写出这样的代码:这里有多个具体的类被实例化了, 是根据不同…

1、oracle数据库简介

1.ORACLE数据库简介 数据库指的是存储和管理数据的仓库,是一种文件集合(包括数据文件、临时文件、日志文件和控制文件),我们一般所说的数据库指的是数据库管理系统,一种用于操作数据库的软件,简称DBMS。OR…

U102488-傻叉题【dp】

前言 %\%%一下出题人BPMBPMBPM 正题 题目链接:https://www.luogu.com.cn/problem/U102488 题目大意 nnn个数,选取两组(不一定要全用上)使得他们的和相等且最大。 解题思路 考虑dpdpdp,fi,jf_{i,j}fi,j​表示到第iii个,差值为jjj(这里的差值…

TypeScript 2.8引入条件类型

最新发布的TypeScript 2.8包含了若干主要特性和一些问题修复,其中最为重要的是新增了条件类型,开发人员可以根据其他类型的特征为变量选择适当的类型。条件类型最适合与泛型组合在一起使用。如果一个框架总是重复相同的选择性代码,就会变得很…

2、oracle数据库的用户和权限

ORACLE用户和权限 每个用户都有一个默认表空间和一个临时表空间,因此操作用户的顺序一般是先创建表空间,然后创建用户,之后赋权。 1.创建表空间 1.1 创建临时表空间 create temporary tablespace test_tmp tempfile /home/oracle/aracle…

jzoj6451-[2020.01.19NOIP提高组]不幸运数字【记忆化搜索,数位dp,高精度】

正题 题目链接:https://jzoj.net/senior/#main/show/6451 题目大意 给出a,ba,ba,b,求[a,b][a,b][a,b]这个区间中有多少数字包含444。 解题思路 用fi,j,kf_{i,j,k}fi,j,k​表示到第iii位,是否含有444,前面的位是否都到达上限。 然后dfsdfs…

用分布式缓存提升ASP.NET Core性能

得益于纯净、轻量化并且跨平台支持的特性,ASP.NET Core作为热门Web应用开发框架,其高性能传输和负载均衡的支持已广受青睐。实际上,10-20台Web服务器还是轻松驾驭的。有了多服务器负载的支持,使得Web应用层在业务增长时随时采用水…

3、oracle数据库的语法基础

ORACLE语法基础 ORACLE的语法基础主要包括数据类型和SQL语法。 1.数据类型 1.1字符型 用于存储文本的数据类型 CHAR(固定长度字符串1-2000个字节) VARCHAR2(可变长度字符串,字符串1-4000个字节) LONG(更…