北冥神功与六脉神剑

言念及此,登时心下坦然,默默祷祝:“神仙姊姊,你吩咐下来的事,段誉当然一定遵行不误,但愿你法力无边,逍遥派弟子早已个个无疾而终。”战战兢兢的打开绸包,里面是个卷成一卷的帛卷。
  展将开来,第一行写着“北冥神功”。字迹娟秀而有力,便与绸包外所书的笔致相同。其后写道:
  “《庄子》‘逍遥游’有云:‘穷发之北有冥海者,天池也。有鱼焉,其广数千里,未有知其修也。’又云:‘且夫水之积也不厚,则其负大舟也无力。覆杯水于坳堂之上,则芥为之舟;置杯焉则胶,水浅而舟大也。’是故本派武功,以积蓄内力为第一要义。内力既厚,天下武功无不为我所用,犹之北冥,大舟小舟无不载,大鱼小鱼无不容。是故内力为本,招数为末。以下诸图,务须用心修习。”

以上段落摘自金庸先生的天龙八部“玉壁月华明”。记不得阅读过多少次这些经典小说了,新冠病毒肆虐的今天,得益于祖国的强大,我们得以享受一份难得的安宁,是国家之福,程序员之福。的确,我们今天还可以欣赏、品味这些脍炙人口的作品,实乃人间的幸事。印象中第一次读天龙八部大概是1984年,那个时候是大三,由于是几个人轮流阅读,根本品味不出小说的精华,经常被下一位同学催促着,囫囵吞枣的就去读下一卷了,今天想起来,仿佛就是昨天的事情,那个时代的大学宿舍这一幕经常发生……。脑海之中经常浮现那些栩栩如生的人物,那些鲜活的个性、那些荡气回肠……。金庸先生的小说,其很多主题都建立在博大精深的中华文化基础之上,使人回味无穷。

若干年之后,无意之中开始考虑“北冥神功”、“六脉神剑”、“独孤九剑”、“乾坤大挪移”……,或许开始对软件编程做深入的思考,有意无意之间在琢磨“修行”究竟是什么……。说实话,我不是科班出身的程序员,骨子里还是觉得自己的出身是基础数学,所以许多方面的认知与科班出身的程序员有巨大的差异。年轻时候,我知道很多数学名家都是金庸迷,包括陈省身先生在内,金庸先生的很多粉丝都是科学界有影响力的人物,这一点是不争的事实。随着岁月的流逝,逐步对“内功深厚”有了一些肤浅的感受,编程方面似乎开始有了一些“套路”……。

当下将帛卷又展开少些,见下面的字是:“北冥神功系引世人之内力而为我有。北冥大水,非由自生。语云:百川汇海,大海之水以容百川而得。汪洋巨浸,端在积聚。此‘手太阴肺经’为北冥神功之第一课。”下面写的是这门功夫的详细练法。
  最后写道:“世人练功,皆自云门而至少商,我逍遥派则反其道而行之,自少商而至云门,拇指与人相接,彼之内力即入我身,贮于云门等诸穴。然敌之内力若胜于我,则海水倒灌而入江河,凶险莫甚,慎之,慎之。本派旁支,未窥要道,惟能消敌内力,不能引而为我用,犹日取千金而复弃之于地,暴殄珍物,殊可哂也。”

上面两段非常有意思,“反其道而行之”,说明了北冥神功创建者的独到之处,正向练功的典范,莫过于金庸“侠客行”之中的两位“岛主”,那两位高人,穷尽一生的精力,才得以窥视“侠客行”最高境界,认证了“朝闻道,夕死可矣”。另辟蹊径,也是侠客行的独到构思,石破天得以领悟侠客行,是因为其“不识字”,这一点的确让人唏嘘不已。

桌面客户端,是一个非常有意思的领域,这一段时间一直在CSDN各个论坛上转悠,在唱衰客户端编程的声音之下,这个领域的确很萧条,看看论坛的热度就知道这一点“绝非虚言”。事实上,真正意义下的客户端编程,一直是生机勃勃的,我们不能否认,互联网浏览器就是一款“客户端”,不管怎样,那些巨头公司,他们自己都是非常重视“客户端”开发,然而他们在客户端之上建立起规范之后,他们就会鼓励他们的用户群体遵守“基于实力的规则”以维护他们的秩序。

对Windows客户端开发而言,COM技术.NET技术Web技术Java技术C++技术以及Office互操作技术,是典型的六种主流开发技术,这里枚举的6个脉络,差不多涵盖了桌面开发的绝大多数主题。我们联想起什么?当我们仔细的考察以上6个方面,我们相信,一个理性的开发者,几乎很难染指所有提到的6个领域,或许是一种天方夜谭……

开发者是靠键盘讨生活的群体,用键盘去驾驭我们提到的6个脉络,毫无疑问是在修习一种六脉神剑,想起来是不是非常“微妙”? 段誉与虚竹,是天龙八部之中两个精彩的角色,他们不同的际遇,最终差不多同宗同源,这两个人对绝世武功看得都很淡,甚至逃避。最终他们都不同程度的参悟到北冥神功的精髓,其中当然得益于金庸的妙笔生花。北冥神功非常的难,与金庸笔下的葵花宝典的相似的地方是,入门环节不是一般人可以做到的,的确,独孤九剑的入门也非常难,用王语嫣的话说,天龙八部里面最终可能天下无敌的是“段誉”,究其原因是,段誉同时拥有北冥神功以及六脉神剑。

多少年来,一直有一个愿望:打造一款客户端技术,与海外的主流客户端系统做一番较量,随着岁月的流逝,这个心愿逐渐的淡了,想想这个心愿有些不甘心,还存留那么一点同场竞技的心思,一时的冲动,泛起了一丝丝的涟漪……

内力既厚,天下武功无不为我所用,犹之北冥,大舟小舟无不载,大鱼小鱼无不容。是故内力为本,招数为末。】。这一段说明,北冥神功不是武功的招数,差不多相当于“基础设施、储备”,没有积累,就做不到“内力既厚”,吸收别人的内力为己用,在武学领域是自私、阴损的,在软件开发领域则是“软件复用”,换个领域,有一些思维是需要大力提倡的。从客户端角度看,Java有自己的加载器:java.exe,Java技术提供了一个规范,用于开发类似Java.exe之类的应用,用于处理各种java package,著名的类似系统有Eclipse,互联网浏览器也类似,事实上Web浏览器就是通过一个客户端应用来加载开发者按照规则写的html;.NET Framework也一样……,桌面客户端的领域,就是被这些彼此不同的“加载器、Launcher”强制的划分成不同的群体,看上去杂乱无章。“大舟小舟无不载,大鱼小鱼无不容”是一种境界,也是一种格局,从一个角度看,海纳百川,是华夏文明博大精深的精要所在……

当我们仔细的分析Chromium、Eclipse、Electron等著名的项目,我们发现,每一个项目都在支撑着一类软件生态,海纳百川意味着一种广泛的包容,所以我们需要一个客户端领域的“北冥神功”、需要属于程序员的“六脉神剑”,将那些主流的客户端技术为你所用,想到这些,似乎有一些“豁然开朗”。在Windows平台上,让天下几乎所有的客户端组件资源为你所用,这个构思就是“北冥神功”。为此,我们需要改变观念,我们不需要“武林称雄”那样的诡异的葵花宝典,但我们的确需要“一切好的东西为我所用”的“北冥神功”,我们也需要能够自如驾驭“COM、.NET、Java、Web、C++、Office”等众多资源的六脉神剑。

万事开头难,准备重新开始

那老人抓住他手腕,向他上上下下的细细打量。突然虚竹只觉脉门上一热,一股内力自手臂上升,迅速无比的冲向他的心口,不由自主的便以少林心法相抗。那老人的内力一触即退,登时安然无事。虚竹知他是试探自己内力的深浅,不由得面红过耳,苦笑道:“小僧平时多读佛经,小时又性爱嬉戏,没好好修练师父所授的内功,倒教前辈见笑了。”
  不料那老人反而十分欢喜,笑道:“很好,很好,你于少林派的内功所习甚浅,省了我好些麻烦。”他说话之间,虚竹只觉全身软洋洋地,便如泡在一大缸温水之中一般,周身毛孔之中,似乎都有热气冒出,说不出的舒畅。
  过得片刻,那老人放开他手腕,笑道:“行啦,我已用本门‘北冥神功’,将你的少林内力都化去啦!  

虚竹大吃一惊,叫道:“什……什么?”跳了起来,双脚落地时膝盖中突然一软,一屁股坐在地下,只觉四肢百骸尽皆酸软,脑中昏昏沉沉,望出来犹如天旋地转一般,情知这老人所说不假,霎时间悲从中来,眼泪夺眶而出,哭道:“我……我……和你无怨无仇,又没得罪你,为什么要这般害我?“

构造一款动态、运行时支持“COM技术、.NET技术、Web技术、Java技术、C++技术以及Office互操作技术”的桌面客户端软件,您需要一个入口,这个入口奠定所有以上6各方面支持的全部基础,人口环节非常关键,段誉没有任何武功基础,所以修习北冥神功最容易,虚竹由于功夫低微,所以也是机缘巧合。从软件复用的角度看,软件开发不同于那些上乘武功,观念上接受软件复用,那么掌握所谓的“北冥神功”是非常容易的。也就是说,您需要的第一步,完全是观念的更迭,与技术基础几乎没有关系,即使没有无崖子也无妨。

新起点从构造一个exe开始

笑傲江湖是从拥有神秘色彩的“辟邪剑谱”开始的。由于江湖传闻,大家只知道其天下无敌,想据为己有者趋之若鹜,所以很多角色纷纷登场,各种阴谋,各种不择手段层出不穷。然“毒蛇出没之处,三步之内必有克制其蛇毒的草药”,贯穿全书的却是一套大道至简的“独孤九剑”,跌宕起伏的线索之中,上演着正邪纠缠的一幕幕沧桑,最终是笙箫和谐,成就一段姻缘。我们的设想是从C#开始,之所以这样是出于我对C#的一种偏爱,同时也是表达对经典的致敬,当然,我们也可以从其他的应用架构开始,其结果一定是殊途同归。

无论是岳不群,还是东方不败,他们得到的都是“葵花宝典“的”残本“,或许是金庸想塑造一些扭曲的人格,将小说纳入了一个”是非纷争“的场景。编程世界应该是没有是非的,基于此,我们打造一个开源项目(https://github.com/TangramDev/OpenUniverse),这个项目的初衷就是开放,进而形成有价值的软件生态。有了这个开源项目,对不同的开发者,都会找到合适的起点。进而开始自己的工作。用单一的框架同时支持6个(COM、.NET、Java、Web、C++、Office)软件技术生态,是一个充满挑战的构想,如果能够得以成立,毫无疑问,这个架构就是面向开发者的“北冥神功、六脉神剑”的融合技术。

如果我们非常明确的考虑六个方面:COM、.NET、Java、Web、C++、Office,那么我们的目标就是基于以上“6个维度”考虑一个软件生态系统,这个目标就是我们需要考虑的exe基本结构。

第一个C#工程

关于第一个C#工程,是一个非常简单的C# WinForm工程,该工程的全部细节请参考:

第一个C#互联网客户端

FirstApp源代码

小荷初露尖尖角:第一次运行FirstApp.exe

为了看到最简单的运行效果,我们在Form1上增加一个label对象,并调整一下Form1的背景色(红色):

(调整Form背景色,增加Label对象)

编译之后,我们需要创建一个FirstApp.index.html文件,这是一个Web页面,是启动程序的第一个关联文件:

<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head><meta charset="utf-8" /><title>欢迎您进入一个全新的.NET世界, 我是您的朋友WebRuntime</title><link rel="icon" href="webpage/app.png" sizes="32x32">
</head>
<body><cosmos><!-- Define new DOM elements --><define tagName="mainWindow"></define><define tagName="application"></define><!-- End Define new DOM elements --><!-- The "application" element is required, it can provide application-level configuration. --><application><ntp><winNucleus><xobj id='grid' rows='1' cols='2' width='350,350,' splitterwidth='6'><xobj objid="FirstApp.Form1,host"></xobj><xobj objid="nucleus"></xobj></xobj></winNucleus></ntp></application><mainWindow objid="FirstApp.Form1,host" caption="The Universe" width="2400" height="1600" id="mainForm"></mainWindow></cosmos>
</body>
</html>

将这个html文件(firstapp.index.html)放置在firstapp.exe所在的文件夹,启动firstapp.exe,我们会看到如下窗体:

(FirstApp.exe创建的第一个Form,看上去平淡无奇,事实上……)

的确,我们没有看到什么惊奇,然而,当你启动第二个实例(不要关闭刚刚创建的Form,找到FirstApp.exe,双击可执行文件启动第二个实例),惊奇的一幕发生了:

(双击FirstApp.exe)

(运行第二个实例,我们看到完全不一样的场景)

第二次运行FirstApp.exe

我们不对FirstApp这个工程做任何修改,现在,我们写第二个Web页面,具体文件如下:

<!-- This is "index.html". Normally, it is named "ProjectName.index.html". This webpage is the real entry point of the HTML-driven App. -->
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head><meta charset="utf-8" /><title>欢迎您进入一个全新的.NET世界, 我是您的朋友WebRuntime</title><link rel="icon" href="webpage/app.png" sizes="32x32">
</head>
<body><cosmos><define tagName="webViewport"></define><webViewport><winNucleus><xobj rows="1" cols="3" width="750,300,200," id="xxx"><xobj objid="FirstApp.Form1,host" id="navCtrl"></xobj><xobj objid="nucleus" id="mainClient"></xobj><xobj objid="FirstApp.Form1,host" id="navCtrl2"></xobj></xobj></winNucleus></webViewport></cosmos><strong style="font-size:32px; color:black">欢迎<i style="color:fuchsia">您来到</i><i style="color:blue">The Universe的 </i><b style="color:coral">.NET桌面编程世界</b>!</strong>
</body>
</html>

将上述html保存为"c:\testpage.html",启动FirstApp.exe,然后启动第二个实例打开内置浏览器:

地址栏里面输入“c:\testpage.html”,然后回车,我们看到如下场景:

我们看到,内置浏览器显示的内容是由两个Form与标准页面“合成”的。当然,我们可以写出更多的类似的html页面。

到了告一段落的阶段了

我们看到了几个与原有开发不一样的环节

(一)主函数Main

与常规的工程不同,主函数Main里面没有实例化Form对象,应用是从Web页面“ExeName.index.html”开始的,这一点意味着一个明显的变化,也就是说,不同的初始化页面,应用的主窗体应该完全不一样,我们很快会看到,这里的变化与常规的设计完全不一样。

(二)每个如上方式构造的应用系统,有一个“内置”的WebBrowser

这个全功能的浏览器,兼容标准浏览器的同时,给出了基于“应用”的Web页面,虽然刚刚露出一丝端弥,但是非常值得期待……

(三)支持任意多个内置浏览器窗体

因此可以打开任意多个应用页面,应用系统的内容空间被放大了,从第二个Web页面看,事实上,页面里面不应该只包含一个Form对象,甚至可以想象到,UserControl对象也应该是Web页面的“元素”……

(四)WinForm集成

初始化页面FirstApp.index.html可以实例化一个Form对象,这一点意味着,每个其他Web页面也应该可以创建弹出式的Form对象,也就是说,Web页面应该可以实例化任意多个独立的Form窗体,这一点非常类似于Office之中的VBA Form集成……

(五)动态Form

我们在第一个工程之中,Form上的内容几乎就是“空的”,可以期待Webpage对每一个Form窗体有更深层的挖掘潜力……

大舟小舟无不载:第三次运行FirstApp.exe

大舟小舟无不载,应该是一种格局的体现,一个简单的FirstApp,事实上背后隐藏了很多的积累,当您的第一个FirstApp构造完毕之后,相当于虚竹无意之中破解了“珍龙棋局”,从此或许会开启一段新的软件之旅,后续究竟如何只能拭目以待……

如果您愿意,您可以下载一个最新版本的Eclipse,具体的地址:Eclipse下载

(我们下载的是RCP版本,当然也可以是其他版本)

下载完毕之后,将其解压:

(解压缩之后的Eclipse文件夹,您需要确保正确安装64位的JVM)

我们看看接下来的事情,首先,您需要将FirstApp.index.html修改一下:

<!-- This is "index.html". Normally, it is named "ProjectName.index.html". This webpage is the real entry point of the HTML-driven App. -->
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head><meta charset="utf-8" /><title>欢迎您进入一个全新的.NET世界, 我是您的朋友WebRuntime</title><link rel="icon" href="webpage/app.png" sizes="32x32">
</head>
<body><cosmos><!-- Define new DOM elements --><define tagName="mainWindow"></define><define tagName="application"></define><!-- End Define new DOM elements --><!-- The "application" element is required, it can provide application-level configuration. --><application><ntp><winNucleus><xobj id='grid' rows='1' cols='2' width='350,350,' splitterwidth='6'><xobj objid="FirstApp.Form1,host"></xobj><xobj objid="nucleus"></xobj></xobj></winNucleus></ntp><defaultworkbench><winNucleus><xobj id='grid' rows='1' cols='2' width='350,350,' splitterwidth='6'><xobj objid="FirstApp.Form1,host"></xobj><xobj objid="nucleus"></xobj></xobj></winNucleus></defaultworkbench></application><mainWindow objid="FirstApp.Form1,host" caption="The Universe" width="2400" height="1600" id="mainForm"></mainWindow></cosmos>
</body>
</html>

我们注意到,页面之中增加了一个元素:

            <defaultworkbench><winNucleus><xobj id='grid' rows='1' cols='2' width='350,350,' splitterwidth='6'><xobj objid="FirstApp.Form1,host"></xobj><xobj objid="nucleus"></xobj></xobj></winNucleus></defaultworkbench>

这个时候,我们需要第二个文件,是一个xml文件,其文件名为“firstapp.eclipse”,目前我们在FirstApp.exe所在的文件夹之中需要这个xml文件,里面包含的xml数据保留以后使用,现阶段只要是符合命名规则即可。

当如上步骤完成之后,我们再启动FirstApp.exe,我们看到惊奇的一幕:

如此配置之后,一个全新的场景,内置互联网浏览器、集成.NET技术的Eclipse环境!

事实上,我们得到一个这样的环境,一个内置浏览器、集成了.NET GUI的Eclipse,原则上,这是一个集Web、.NET、Java于一体的解决方案,我们选择Eclipse RCP版本,其中的含义值得品味……

所谓“大舟小舟无不载”,有多种理解,然而其中心的设想应该是一种“海纳百川”的包容,我们如此设计,是考虑到.NET、Java、Web是软件开发的三个重要脉络,或者是相当于“六脉神剑”中的三个“经脉”,就现象上看,一个宿主Exe,同时接纳.NET、Java、Web三方面的内容,应该充分照顾了三个领域之中的人力资源(开发者群体)、技术资源(基于Web页面整合.NET/Java组件资源),当一个具体的应用,客观上可以集成这里提到的三条脉络,通过内置浏览器支撑应用页面,内置.NET WinForm系统,使得开发者如同采用Office VBA类似的方式对待其应用本身,应该体现出对“大舟小舟无不载”的一种诠释……

我们需要注意的是初始页面FirstApp.index.html之中的application这个元素,其中的两个节点:

            <ntp><winNucleus><xobj id='grid' rows='1' cols='2' width='350,350,' splitterwidth='6'><xobj objid="FirstApp.Form1,host"></xobj><xobj objid="nucleus"></xobj></xobj></winNucleus></ntp><defaultworkbench><winNucleus><xobj id='grid' rows='1' cols='2' width='350,350,' splitterwidth='6'><xobj objid="FirstApp.Form1,host"></xobj><xobj objid="nucleus"></xobj></xobj></winNucleus></defaultworkbench>

第一个子元素:是ntp,其完整名字:New TabPage,其实就是内置浏览器的“新页面”初始结构;第二个子元素:defaultworkbench,顾名思义,当Eclipse做为一个“子系统”纳入FirstApp.exe,那么这个节点事实上就是定义了Eclipse Workbench的初始结构,由于是基于Web的描述,各种结构的定义取决于具体的应用属性。

我们回到Program.cs的主函数:

namespace FirstApp
{static class Program{/// <summary>/// The main entry point for the application./// </summary>[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Universe.Cosmos.Run();}}
}

我们没有具体的指定程序的初始Form,取而代之的是一个初始化web页面,这个考虑值得注意,绝大多数情况下,我们不知道具体程序的主窗口究竟是什么对象,甚至不见得是一个Form对象,所以让web决定是一个灵活的弹性极大的处理模式,这个设计不同于Electron等流形的架构,我们将选择权留给具体的应用场景。

更多的信息……

北冥神功与六脉神剑(二)

随着我们逐步展开我们的设想,我们希望更多的可以期待的事情,帷幕刚刚拉开,更多的细节非常值得期待……(待续……)

北冥神功与六脉神剑(一)相关推荐

  1. 【​观察】六脉神剑第四式-全面保障之移形换影

    在前面的文章中,申斯基与您一起了解了Dell EMC存储"六脉神剑"的"高效式"."读写分离式"和"持续保护式",今天, ...

  2. SAP学习之北冥神功

    前言: "庄子<逍遥游>有云:'穷发之北有冥海者,天池也.有鱼焉,其广数千里,未有知其修也.'又云:'且夫水之积也不厚,则其负大舟也无力.覆杯水于坳堂之上,则芥为之舟:置杯焉则胶 ...

  3. php六脉神剑,练到极致的六脉神剑究竟有多强?强到离谱,金庸都只能让它失传!...

    六脉神剑是<天龙八部>中大理段氏的至高绝学.无崖子.李秋水网罗天下武学时只缺易筋经.六脉神剑.一阳指和降龙十八掌寥寥几种武功,慕容博对鸠摩智论武时将六脉神剑与易筋经并列当世绝技,乔峰在与段 ...

  4. qtp启动java程序_转: QTP六脉神剑之调用Java程序

    查看( 1147 ) / 评论( 21 ) 六脉神剑之调用程 序0Xp1zLN_0版权声明:原创作品,转载请以链接方式注明出自http://www.51testing.com/?35,否则将追究法律责 ...

  5. IKVM 编程武林之.NET派的北冥神功

    为什么80%的码农都做不了架构师?>>>    在编程武林中,Java派成立较久底子雄厚,虽然掌门人Sun已经老态龙钟,镇山之技的Java语言已经被后进的新秀.NET派的C#压得喘不 ...

  6. 运维秘籍:防止数据丢失“六脉神剑”

    服务器数据存储安全是保障服务器正常运行的重要的环节,同时也是企业网络信息化建设的核心.每一家企业的管理层人员都非常重视存储在服务器的重要数据,包括:各类管理中所产生的机密办公文件.经营中所积累的客户资 ...

  7. 阿里巴巴公布“新六脉神剑”:因为信任 所以简单

    9月10日消息,阿里巴巴在成立20周年之际,宣布全面升级使命.愿景.价值观.这是一种以文化.制度.人才为驱动力的企业传承的开始. 阿里巴巴表示,面向未来,阿里巴巴坚守使命:让天下没有难做的生意.初心不 ...

  8. 成立20周年之际 阿里巴巴将发布“新六脉神剑”

    9月5日,阿里巴巴官方今天对外发布消息称,将在成为20周年之际,也就是9月10日,正式对外发布"新六脉神剑".马云表示,过去20年,阿里因为价值观而与众不同.未来20年,阿里应该. ...

  9. 手持“六脉神剑”、横跨软硬领域,揭晓英特尔构筑智慧云基石宝典!

    作者 | 郑丽媛 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 伴随着云计算.大数据.人工智能等新一代信息技术的成熟发展,从应用到基础设施,我们正面临着智能化的全新升级与变革.在此浪潮 ...

最新文章

  1. CPU上跑到 100 fps 的高精度PyTorch人脸特征点检测库
  2. shiro整合ehcache
  3. oracle pivoting insert 用法简介
  4. JAVA字符串格式化-String.format()使用
  5. 利用HttpClient 获取网页数据java代码模版
  6. python怎么让按钮透明_python – 如何创建一个响应Tkinter中的click事件的透明矩形...
  7. Heroku运行Java
  8. OpenCV学习笔记(十三):霍夫变换:HoughLines(),HoughLinesP(),HoughCircles( )
  9. 浪潮商用机器亮相金博会 夯实新常态下金融科技发展基石
  10. 微信小程序 - 为何setData到页面上有的加分号
  11. 华为Mate 30系列发布会定档:年度机皇 天生优秀!
  12. java画笔覆盖在界面_Java画笔的简单实用方法
  13. JVM笔记——技术点汇总
  14. C#中Dictionary的用法及用途
  15. kali安装zmap
  16. SMing:2022年中青杯A题思路
  17. Byte学堂:共享单车数据处理原理及分析方法
  18. JAVA基础第三章 面向对象进阶--多态等
  19. 【C++版Opencv】【Ubuntu】VScode配置Opencv
  20. virtualbox中安装xp系统、安装oracle数据库到虚拟机的xp系统中、主机连接oracle、备份xp系统、oracle数据库的一些基本概念(学习oracle数据库的准备工作)-day01

热门文章

  1. 为什么使用Hive?Hive提供了什么?Hive支持哪些用户?
  2. 微商管理系统下单平台软件开发
  3. Echarts实现股票前五盈亏数据图
  4. 二战风云怎么修改服务器,《二战风云》主城该如何建设 主城区建设技巧详解...
  5. Python自动化巡检导出Excel表
  6. 2016级算法第二次上机-A.画个圈圈诅咒你
  7. 活动 | 即使是AI界“网红” 知识图谱也曾经历40年的生不逢时
  8. [转帖]什么是“可转换可赎回优先股”?小米集团实例详解
  9. tomcat部署Jenkins并配置jdk、maven、git
  10. 单片机I/O口应用——LED灯实验