zhrb的空间

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  20 随笔 :: 0 文章 :: 29 评论 :: 0 Trackbacks

#

     摘要: 实现Linux应用二进制兼容的意义


随着操作系统技术的发展从注重性能到注重服务,操作系统所配套的服务软件多少以及开发环境是否易用就成为决定一个操作系统生命力的关键因素。微软今日垄断地位的形成,就得益于微软完整的应用软件体系。而以前国产操作系统未能形成良性发展的局面,也是受阻于没有完整的软件体系的配套。所以,注重配套服务软件开发,提高系统适用面就成为Kylin操作系统在设计和开发只初就统筹考虑的问题。


通过自己的力量,从头为Kylin操作系统开发来所有应用软件时间不允许,人力、物力上不可行。它山之石可以攻玉,我们必须借助目前现有成熟的应用软件体系才能在较短时间内构成较完整的应用软件体系,满足用户的基本需求。  阅读全文
posted @ 2008-03-06 22:27 zhrb 阅读(638) | 评论 (0)编辑 收藏

原帖地址:
http://www.runpc.com.tw/content/168/168E18_1.aspx
2008年必须知道的新技术——软体开发篇 [zz]
2008年必须知道的新技术─软件开发篇
文/蔡学镛.汇整/编辑部
________________________________________
新 技术不断出现,其中某些技术很可能会成为我们不可避免的挑战,因此每隔几年,我们
都应该审视我们未来应该注意的技术有哪些。透过本文章,和大家分享我的技 术观察与建
议。 当然对大多数的开发者来说,Visual Studio 2008是今年的重头戏,这也是Windows
Vista推出之后的第一个全新的Visual Studio版本,不容我们轻忽。但依照惯例,微软还是
会用大量的技术资料、研讨会、资源…等,把我们喂得饱饱的。我就不用在此多介绍了。
另外RIA也是今年的重点,最值得注意的RIA技术当然是WPF/Sliverlight和AIR/Flash。关于
RIA,许多文章都已经有提及,我也 不在此赘述。我想在这篇文章中带领大家认识的,是比
较不一样的新挑战。

多核心与网络运算
穆尔定律观察到,每隔两年,在单一芯片上能做的事会加倍。但是穆尔定律绕道而行,不是
产生越来越快的处理器(这几年CPU频率的增加已经趋缓), Intel与AMD等公司的作法是产
生多核心的装置:单一芯片内包含两个、四个、甚至更多个处理器。如果你的程序没有共时
(concurrent),则一 次只会在单一个处理器上执行,使用者会认为你的程序很慢。对于
编程员来说,如何充分运用多核心的运算威力,变成一个重要的课题。 而网络的连结,造
成分布式的环境;如何用更有效的方式进行分布式编程,也会越来越重要。 结合了上面了
两点因素,Erlang正开始获得大家的重视。

Erlang解决了现今开发者面对的最迫切问题之一:如何写出可靠、共时(concurrent)、高
效能的系统。Erlang已经在世界各地被许多公司 广泛地采用,这些公司用它来产生可靠、
有效率、具规模弹性的应用。 Erlang是一个编程语言,它的设计目的,正是为了帮助我们
建立极度平行、分散、容错(fault-tolerant)的系统。它已经被商业采用运行多 年,建
立出许多容错系统。多年来,这些Erlang所建立的系统出错率极低。 Erlang程序在多核心
的计算机上执行时,会充分运用系统:这意味透过本文章,和大家分享我的技 术观察与建
议。 当然对大多数的开发者来说,Visual Studio 2008是今年的重头戏,这也是Windows
Vista推出之后的第一个全新的Visual Studio版本,不容我们轻忽。但依照惯例,微软还是
会用大量的技术资料、研讨会、资源…等,把我们喂得饱饱的。我就不用在此多介绍了。
另外RIA也是今年的重点,最值得注意的RIA技术当然是WPF/Sliverlight和AIR/Flash。关于
RIA,许多文章都已经有提及,我也 不在此赘述。我想在这篇文章中带领大家认识的,是比
较不一样的新挑战。

 多核心与网络运算
穆尔定律观察到,每隔两年,在单一芯片上能做的事会加倍。但是穆尔定律绕道而行,不是
产生越来越快的处理器(这几年CPU频率的增加已经趋缓), Intel与AMD等公司的作法是产
生多核心的装置:单一芯片内包含两个、四个、甚至更多个处理器。如果你的程序没有共时
(concurrent),则一 次只会在单一个处理器上执行,使用者会认为你的程序很慢。对于
编程员来说,如何充分运用多核心的运算威力,变成一个重要的课题。 而网络的连结,造
成分布式的环境;如何用更有效的方式进行分布式编程,也会越来越重要。 结合了上面了
两点因素,Erlang正开始获得大家的重视。

Erlang解决了现今开发者面对的最迫切问题之一:如何写出可靠、共时(concurrent)、高
效能的系统。Erlang已经在世界各地被许多公司 广泛地采用,这些公司用它来产生可靠、
有效率、具规模弹性的应用。 Erlang是一个编程语言,它的设计目的,正是为了帮助我们
建立极度平行、分散、容错(fault-tolerant)的系统。它已经被商业采用运行多 年,建
立出许多容错系统。多年来,这些Erlang所建立的系统出错率极低。 Erlang程序在多核心
的计算机上执行时,会充分运用系统:这意味着你的Erlang程序在四核心的计算机上会比单
核心的计算机上快,而最棒的是,你完全不需 要更动程序,就有如此显著的效果。当然,
你可以用别的语言做到和Erlang一样的事,但是只会事倍功半。
 GUI
在Windows 3.x时代,Charles Petzold的Windows程序设计著作是大家必读的经典。有人要
他为Windows NT也写一本这样的书,他却说:等NT卖千万套再说吧!这显示出Charles
Petzold一直都是属于「大众技术类」的作家,当他在2007年也写出一本3D程序书籍时,或
许代表我们3D程序设计的时代已经揭开序幕。 Vista与MacOS都早已经进入3D的时代。如何
运用3D的API,开发出更炫目的设计,会是未来GUI吸引使用者的重点。

 Java
除了Sun官方的Java,Google刚推出的手机平台Android也是一种Java平台。更不用提AIR也
可以算是广义的Java平台(太多地方都 类似Java,连Bytecode档案格式都很类似)。由于
Android和AIR都不是弱势的平台,所以可能会造成Java的分歧。 但是虽然彼此分歧,也算
各有其所。Java用在Web后端,Android用在手机,AIR用在Web前端。

 Shell
30多年来,沿袭自Unix的Shell用法,再怎么改变,终究是换汤不换药。在微软推出
PowerShell之后,Shell终于有了截然不同的面貌和 更强大的威力。运用.NET,整合各种对
象模型(WMI、COM…),PowerShell名称中有出现Power(威力)绝非浪得虚名。相当值得
系统管 理员与编程员学习。 但是提醒你,PowerShell或许不难上手,但是有太多陷阱。一
开始不熟悉这些陷阱时,会吃不少苦头。

 语言
从Tiobe的编程语言需求排名,可以看到Ruby与D语言快速进入主流;Perl消退,被Python超
越;C# 慢慢上涨、Java与C维持平盘、C++ 渐渐低落;Delphi持续探底,Lua往上猛窜。 估
计未来几年,OO语言还是主流,函数语言渐渐流行。目前主要是学术圈在使用函数语言(
Functional Language),但确实有相当多迹象显示,函数编程有可能会渐渐走入业界。

自己写parser。除非你用像REBOL这样的语言,否则写parser应该会是很痛苦的事,幸好你
可以利用 ANTLR帮你产生parser。目前ANTLR已经支持相当多主流语言,ANTLR相当值得学习

 Security
网络的时代,危机四伏。许多系统的保全都是事后加上的,这样子很危险。事先良好的规划
是建立保全环境的关键,而规划的最佳工具是模型塑造 (modeling)。用形式上的作法,
寻找威胁与弱点,以破除攻击。 STRIDE是相当知名的威胁分类模型。STRIDE可以用来为系
统的重大威胁进行分类。威胁正是攻击者希望发生的事,也就是我们不希望发生的事。如果
我 们塑模所有的STRIDE威胁分类,我们就有很高的机会可以涵盖大多数重要的领域。

STRIDE是Spoofing(伪造)、Tampering(窜改)、Repudiation(否认)、Information
Disclosure(信息揭露)、Denial of Service(服务阻断)、与Elevation of Privilege
(特权提升)的缩写。 建立保全模型,有三个部分:威胁、资产、与缓解(mitigation)
。透过塑模了解你的系统可能面临的威胁,并缓解问题,保护资产。不要让你的程序, 布
满弱点,危害大众,程序员必须及早补充Security相关的知识,将STRIDE应用在开发过程中

 整体而言
简单才是王道。PHP、RoR、REST会流行正是因为简单才是王道。复杂的技术固然有许多美好
的愿景(弹性、效率、跨平台…),但是大多数的 developer尚未看到愿景,就已经半途阵
亡。复杂的技术,学习门坎太高,开发过程太长,成本太高,所以只适合用在极少数的项目
中。 多语言的时代来临。以往只要用C/C++,就可以包办各种应用的开发,不管是系统程序
、桌面应用、网络应用。现在却是多语言的时代。多会几个语言比较保 险,尤其是学会两
、三个Script语言绝对不嫌多。 今天的资产是明天的包袱。不甘心丢弃手中的技术(毕竟
是多年学习的结果),改用(改学)新技术者,会渐渐被时代抛弃。Paradigm Shift是常态
,所以我们应该积极地接受这些新挑战,毕竟IT产业就是这样。

posted @ 2008-02-28 18:07 zhrb 阅读(394) | 评论 (0)编辑 收藏

        接口主要是用来描述这个系统有些什么功能,应该怎么调用这些功能,是更高的一
层抽象。主要是用来表现给外界看。同时接口比较稳定,不能随便变来变去。因为你一
变,对于外界来说你的表现就变了。接口对于系统来说,相当于一个规范的描述,感觉
有点像虚拟机规范之于虚拟机。接口对于编程人员来说,相当于帮你隐藏了一些东西,
这写隐藏(如何实现)的东西,你不需要去关注。

    抽象类,在语法上的区别,你也说了。实际上抽象类也可以部分的实现接口的功能
,即描述一些东西给外界看。抽象类更像一个系统的骨架,里面有一些基本的需要共享
的代码。和一些已经实现好的方法。想想,如果全都用接口代替抽象类的话,那么我们
底下子类的编写就需要编写大量的代码。而这些子类,本可以实现代码和属性的共享的
。所以抽象类,更多的是一个对内的东西。

    可以说接口是比抽象类更抽象的一个东西。接口和抽象类关注的地方不一样。当然
从逻辑上来看,他们的区别不是那么的明显。但是从用法上来看,他们还是有比较大的
区别。

    写的有点乱...

posted @ 2008-02-28 15:43 zhrb 阅读(1444) | 评论 (3)编辑 收藏

从某处获得如下代码:

 1// WelcomeApplet.java: Applet for displaying a message
 2import javax.swing.*;
 3
 4public class WelcomeApplet extends JApplet {
 5  /** Construct the applet */
 6  public WelcomeApplet() {
 7    getContentPane().add(
 8      new JLabel("Welcome to Java", JLabel.CENTER));
 9  }

10}
然后编辑好相应的html文件
<html>
<head>
<title>Welcome Java Applet</title>
</head>
<body>
<applet
  
code = "WelcomeApplet.class"
  width 
= 200
  
height = 70>
</applet>
</body>
</html>

结果使用IE7和Maxthon2均无法正常运行,就是显示一个叉。(机器已经正确安装了sun公司的虚拟机)
但是使用appletviewer却可以正常运行,换用opera浏览器也可以正常打开。
看来IE7的设计还是有问题啊。希望微软和Sun这对冤家早日和解....
posted @ 2008-02-24 11:12 zhrb 阅读(2041) | 评论 (4)编辑 收藏

java类库中java.util.Arrays 类的toString方法的源代码。如下:
 1   public static String toString(long[] a) {
 2        if (a == null)
 3            return "null";
 4    int iMax = a.length - 1;
 5    if (iMax == -1)
 6            return "[]";
 7
 8        StringBuilder b = new StringBuilder();
 9        b.append('[');
10        for (int i = 0; ; i++{
11            b.append(a[i]);
12        if (i == iMax)
13        return b.append(']').toString();
14            b.append("");
15        }

16    }
for循环有点奇怪,中间的那个表达式是空的。其实即使加上了条件,for (int i = 0; i<=iMax ; i++) 和源程序是一个效果的,纯粹是多余的,但是多余地加上了这条,结果编译出错了!提示没有返回语句
上面的文字摘自下面的文章:
http://www.blogjava.net/raylong1982/archive/2007/11/01/157542.html
我的理解是:
如果return语句唯一存在于for循环里面,for中间语句加入任何判断条件,除非这个判断条件绝对为真(如空语句、ture、3>2),否则判断条件就有可能为假导致无法执行到这个循环中的return语句,编译器显然不允许这种情况发生,所以当return语句只在for循环体内出现,就不允许for循环中间的那个语句出现类似i<=iMax这样的充满不确定性的判断,语法上。简单一句话,包含return的那个句子,至少要让编译器觉得,这个return是可以执行到的,以减少程序运行后出错的可能。
不过即使编译器如此努力,还是架不住人们可能出现的语义上的错误,看下面这段代码: 
1    public static int max(int a, int b){
2        for(;;)
3            if (falsereturn a>b?a:b;
4    }

从语义上分析,return是无论如何也执行不到的,但是编译器认为for循环内的语句肯定可以执行到,并且里面还有return语句,所以就想当然的认为应该可以执行到return语句,所以没有报错。至于到底有没有错,想想看、试一下就知道了。呵呵


posted @ 2007-11-01 22:05 zhrb 阅读(824) | 评论 (0)编辑 收藏

     摘要: Java中接口与抽象类的区别(一些学习体会,不知正确与否,请指正)  阅读全文
posted @ 2007-10-18 12:10 zhrb 阅读(1493) | 评论 (2)编辑 收藏

     摘要: 判断字符串是否为数的几种方法   阅读全文
posted @ 2007-10-15 22:37 zhrb 阅读(1977) | 评论 (4)编辑 收藏

仅列出标题
共2页: 上一页 1 2