首页 文章 精选 留言 我的

精选列表

搜索[世界模型],共10004篇文章
优秀的个人博客,低调大师

未来的虚拟世界---SoftGrid

在Virtual PC、Virtual Server基础上推出了Microsoft SoftGrid Application Virtualization(虚拟应用程序,简称SoftGrid)。还有已经发布的带Hyper-v技术的Windows 2008 Server对于已经基本实现电子化办公,或部署过大型企业客户端的用户而言,SoftGrid的推出又有怎样的意义呢? Pain point 相对于电脑数量较多的企业而言,最常见的状况是:由于电脑中安装了同一应用程序的不同版本,需要同时运行时常常会面临系统冲突问题。例如,笔者在做office讲座时常常需要同时运行office2007和office2003来为学员演示其中差异。而每次同时启动两个版本的office都会弹出:“office尚未安装,是否安装”的对话框。不得已,只好用虚拟机来解决,而占用了大量的内存。 其次,大型企业在部署应用程序时,由于客户端的数量庞大,常常使工作相当的繁琐。例如,某企业在对3000多台办公电脑进行部署时,花费了将近3个月的时间。而令人哭笑不得的是,其中大部分时间都是在进行纯粹的重复工作。 SoftGrid的推出可以有效的解决企业用户的以上Pain Point。它不仅可以解决原有同一个应用程序在不同版本同时运行的冲突问题,同时让也可以使企业IT管理员更好的管理和标准化桌面环境。 Soft grid工作原理 SoftGrid解决方案以活动目录为基础,结合SoftGrid Server、SoftGrid Sequencer、SoftGrid Client一并形成完整的虚拟应用程序解决方案,其中SoftGrid Sequencer用以测试和制作需要部署的应用程序包,SoftGrid Server用以向SoftGrid Client分发SoftGrid Sequencer生成的程序包。在企业运用中,最常见的SoftGrid部署架构如下图: 在SoftGrid架构中,一般建议SoftGrid Sequencer要与SoftGrid Client操作系统一致,并在使用SoftGrid Sequencer部署应用程序包的时候保持系统的干净。比如说,一个企业中的客户端都是Windows XP,那么用以生成SoftGrid Sequencer的服务器也希望是Windows XP,并建议操作系统上没有安装其他多余的第三方软件。虽然有的软件可以部署在不同的操作系统版本上。 SoftGrid Sequencer是一个基于向导的工具,将应用程序序列化并以文件形式进行存储放置在共享存储或SoftGrid Server上。其生成的文件不会改变应用程序本身的安装结构。SoftGrid Sequencer不仅将监控整个应用程序的安装过程,还将模拟用户的使用习惯,以便快速的分发用户所需要的代码至客户端电脑,在整个监控应用程序安装中,将应用程序的安装文件、注册表信息、字体、COM Objects和服务全部虚拟化. 在企业的实际运用中,可能客户端会涉及到不同版本的操作系统。通常的做法是部署多台不同版本的操作系统,并安装SoftGrid Sequencer。在很多场景中,也可以使用Virtual PC、Virtual Server来部署SoftGrid Sequencer,制作应用程序包。下图为SoftGrid Sequencer制作应用程序包的整个过程。 当使用SoftGrid Sequencer制作好应用程序包,将生成一个启用虚拟化的应用程序文件 (.sft)、一个开放软件描述文件 (.osd)、一个图标文件 (.ico) 和一个项目文件 (.sprj),并上传到共享存储或是SoftGrid Server上后,结合活动目录的权限管理,发布应用程序包到客户端。客户端在第一次打开应用程序快捷方式或者相关联的文件时,将向SoftGrid Server下载,并只下载5% ~ 20%的代码用以运行(“最短启动代码”),这也是在SoftGrid Sequencer模拟运行时,用以加快客户端使用速度。 同时,下载后的应用程序将可以在控制面板中的SoftGrid管理中看到下载的比例,应用程序使用中不会在本地计算机上安装。与以往的终端服务不通的是:在本地执行,并支持脱机状态运行。当应用程序需要升级时,管理员只需要将原有生成的应用程序项目文件重新导入,并安装升级后重新分发即可,不会影响用户的继续使用。 当客户端需要使用到前面“最短启动代码”里没有的功能时,将自动在服务器中下载相应的代码以运行。从统计学上来说,一个企业的所有客户端在同一时间使用同一软件的同一功能的可能性是相当小的,所以这样也能起到一个数据分流的作用,从而大大加快速度。 在对客户端进行应用程序部署的时候,企业还可以通过SoftGird对部署的程序进行管理,并为SMS进行补充。同时,也可以使用SoftGrid解决方案实现企业客户端的桌面标准化、桌面高可用性和桌面可管理性。 本文转自许珈毓的技术思考博客51CTO博客,原文链接http://blog.51cto.com/jiayu/60214如需转载请自行联系原作者 BabyXc

优秀的个人博客,低调大师

Kotlin:Android世界的Swift

转自:http://www.infoq.com/cn/news/2015/06/Android-JVM-JetBrains-Kotlin Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度可互操作,可以同时用在一个项目中。 按照JetBrains的说法,根据他们多年的Java平台开发经验,他们认为Java编程语言有一定的局限性和问题,而且由于需要向后兼容,它们不可能或很难得到解决。因此,他们创建了Kotlin项目,主要目标是: 创建一种兼容Java的语言 编译速度至少同Java一样快 比Java更安全 比Java更简洁 比最成熟的竞争者Scala还简单 Ashraff Hathibelagal是一名喜欢研究新框架和SDK的独立开发者。近日,他撰文介绍了Kotlin的一些语法。按照他的说法,一个合格的Java程序员可以在很短的时间内学会使用Kotlin。 类与构造函数 Kotlin创建类的方式与Java类似,比如下面的代码创建了一个有三个属性的Person类: class Person{ var name: String = "" var age: Int = 0 var college: String? = null } 可以看到,Kotlin的变量声明方式略有些不同。在Kotline中,声明变量必须使用关键字var,而如果要创建一个只读/只赋值一次的变量,则需要使用val代替它。另外,为了实现“空安全(null safety)”,Kotlin对可以为空的变量和不可以为空的变量作了区分。在上述代码中,变量name和age不可为空,而?表明变量college可以为空。定义完类之后,创建实例就非常简单了: var jake = Person() 注意,Kotlin没有关键字new。实例创建完成后,就可以像在Java中一样为变量赋值了: jake.name = "Jake Hill" jake.age = 24 jake.college = "Stephen's College" 变量可以采用上述方式赋值,也可以通过构造函数赋值,但后者是一种更好的编码实践。在Kotlin中,创建这样的一个构造函数非常简单: class Person(var name: String, var age: Int, var college: String?) { } 而实际上,由于构造函数中没有其它操作,所以花括号也可以省略,代码变得相当简洁: class Person(var name: String, var age: Int, var college: String?) var jake = Person("Jake Hill", 24, "Stephen's College") 上述代码中的构造函数是类头的一部分,称为主构造函数。在Kotlin中,还可以使用constructor关键字创建辅助构造函数,例如,下面的代码增加了一个辅助构造函数初始化变量email: class Person(var name: String, var age: Int, var college: String?) { var email: String = "" constructor(name:String, age:Int, college: String?, email: String) : this(name, age, college) { this.email = email } } Kotlin允许创建派生类,但要遵循如下规则: 必须使用:代替Java中的extends关键字 基类头必须有open注解 基类必须有一个带参数的构造函数,派生类要在它自己的头中初始化那些参数 比如下面的代码创建了一个名为Empoyee的派生类: open class Person(var name: String, var age: Int, var college: String?) { ... } class Employee(name: String, age: Int, college: String?, var company: String) : Person(name, age, college) { } 函数与扩展 有派生就有重载。与类的派生一样,允许重载的方法要有open注解,而在派生类中重载时要使用override注解。例如,下面是在Employee类中重载Person类的isEligibleToVote方法的代码: override fun isEligibleToVote(): Boolean { return true } 除了改变类的已有行为,Kotlin还允许开发者在不修改类的原始定义的情况下实现对类的扩展,如下面的代码为Person类增加了一个名为isTeenager的扩展: fun Person.isTeenager(): Boolean { return age in 13..19 } 在需要扩展来自其它项目的类时,这个特性特别有用。 上面提到的函数都与Java中的函数类似,但Kotlin还支持其它类型的函数。如果一个函数返回单个表达式的值,那么可以使用=来定义函数。下面是一个创建单表达式函数的例子: fun isOctogenarian(): Boolean = age in 80 .. 89 Kotlin还支持高阶函数和Lambda表达式。例如,lambda表达式{x,y->x+y}可以像下面这样给一个变量赋值: val sumLambda: (Int, Int) -> Int = {x,y -> x+y} 而下面的高阶函数将上述表达式作为一个参数,并将表达式的计算结果翻倍: fun doubleTheResult(x:Int, y:Int, f:(Int, Int)->Int): Int { return f(x,y) * 2 } 该函数可以使用下面的其中一种方式调用: val result1 = doubleTheResult(3, 4, sumLambda) 或 val result2 = doubleTheResult(3, 4, {x,y -> x+y}) 范围表达式 在Kotlin中,范围表达式用的比较多。范围创建只需要..操作符,例如: val r1 = 1..5 //该范围包含数值1,2,3,4,5 如果创建一个降序范围,则需要使用downTo函数,例如: val r2 = 5 downTo 1 //该范围包含数值5,4,3,2,1 如果步长不是1,则需要使用step函数,例如: val r3 = 5 downTo 1 step 2 //该范围包含数值5,3,1 条件结构 在Kotlin中,if是一个表达式,根据条件是否满足返回不同的值,例如,下面的代码将isEligibleToVote设置为“Yes” var age = 20 val isEligibleToVote = if(age > 18) "Yes" else "No" when表达式相当于Java的switch,但功能更强大,例如,下面的代码将typeOfPerson设置为“Teenager”: val age = 17 val typeOfPerson = when(age){ 0 -> "New born" in 1..12 -> "Child" in 13..19 -> "Teenager" else -> "Adult" } 循环结构 Kotlin使用for..in遍历数组、集合及其它提供了迭代器的数据结构,语法同Java几乎完全相同,只是用in操作符取代了:操作符,例如,下面的代码将遍历一个String对象数组: val names = arrayOf("Jake", "Jill", "Ashley", "Bill") for (name in names) { println(name) } while和do..while循环的语法与Java完全相同。 字符串模板 Kotlin允许在字符串中嵌入变量和表达式,例如: val name = "Bob" println("My name is ${name}") //打印"My name is Bob" val a = 10 val b = 20 println("The sum is ${a+b}") //打印"The sum is 30" 此外,Kotlin与Java高度可互操作。Kotlin可以用一种自然的方式调用现有的Java代码,而Java也很容易调用Kotlin代码。同时,Kotlin也可以与JavaScript互操作。 上面介绍的只是Kotlin的一些基本语法和特性,更多细节请查阅官方文档。事实上,到目前为止,Kotlin还仍然只是一个预览版本,接下来的几个月中还会有多项重大改进及新增特性。尽管如此,GitHub上已有400多个与Kotlin项目相关的库。 在另外一篇文章中,Hathibelagal写道,“如果你正在为Android开发寻找一种替代编程语言,那么应该试下Kotlin。它很容易在Android项目中替代Java或者同Java一起使用。”想要了解如何在Android Studio中使用Kotlin开发Android项目的读者,可以读下这篇文章。 本文转自天天_byconan博客园博客,原文链接:http://www.cnblogs.com/tiantianbyconan/p/4794603.html ,如需转载请自行联系原作者

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册