蜗牛的壳

蜗牛的壳

me =~ s/nai/liu/m;

浏览模式: 标准 | 列表
分类:[原创]其他技术

安装国产操作系统“银河麒麟2.1”初体验,失败


本着支持国货的心理,下载了一个银河麒麟2.1,看看最近国产操作系统发展得怎么样。

Java中byte使用注意事项


目前在做的SYSC 3303 Project是关于使用Java编写TFTP服务器/客户端。其中Java的发送数据包要用byte数组。凭着C语言的扎实基础,想当然的认为byte就是8位无符号整数。于是每一个数据包都由String转为byte发送。

但是,问题出现了。在发送ACK和DATA包时,传出的Block #有一部分不正确(例如:65535)。调试的时候显示在创建数据包的时候数据为0xFF_0xFF(65535),但是接收到的数据为0x3F_0x3F(16191)。

看了一下Java Specification,发现在Java中byte和int都是带符号的整数(signed integer),而且唯一的无符号整数(unsigned integer)是char。再往下看,原来char是按照UTF-16编码储存的(16位无符号整数)。郁闷啊。

接下来的工作就是查怎样从byte转换到int。因为带符号整数都是要做带符号扩展(signed extend),也就是说值为0xFF的byte在转成int之后,值为0xFFFFFFFF。终于在网上查到byte与int无符号转换方法,如下:

Java代码
  1. int firstByte = 0;  
  2. int secondByte = 0;  
  3. int thirdByte = 0;  
  4. int fourthByte = 0;  
  5.   
  6. firstByte = (0x000000FF & ((int)buf[index]));  
  7. secondByte = (0x000000FF & ((int)buf[index+1]));  
  8. thirdByte = (0x000000FF & ((int)buf[index+2]));  
  9. fourthByte = (0x000000FF & ((int)buf[index+3]));  
  10.   
  11. long anUnsignedInt = 0;  
  12.   
  13. buf[0] = (anUnsignedInt & 0xFF000000L) >> 24;  
  14. buf[1] = (anUnsignedInt & 0x00FF0000L) >> 16;  
  15. buf[2] = (anUnsignedInt & 0x0000FF00L) >> 8;  
  16. buf[3] = (anUnsignedInt & 0x000000FFL);  

但是,问题并没有解决。看来不是cast问题。猛然醒悟,原来是从String转成byte的时候出问题了!看来整个Class都要修改了,再次郁闷一下。

总结:Java去掉了无符号的整数,据说本意是为了简化编程,但是事实上在做网络程序时,我们需要应用大量的无符号整数。另外,Java的一些内部机制也会对编程造成困惑,例如从String生成byte数组的算法。但是这些特别的地方一般的教授或者教材并不作介绍。因此,Java特别适合做Top-level程序(最高等级,即应用程序级)。

最后的一点个人总结:我这个智商没办法凌驾于Java之上,最多也就只能用用C语言了……


注:有关Java中unsigned number的详见 http://darksleep.com/player/JavaAndUnsignedTypes.html

三星SRAM芯片编码介绍


Samsung Asynchronous/Synchronous SRAM Ordering Information

三星闪存芯片编码介绍


Samsung NAND Flash Ordering Information

三星DRAM芯片编码介绍


Samsung DRAM Ordering Information

打造全能DELL诊断分区


DELL电脑都提供了一个诊断分区(Diagnostics Partition),用来在电脑无法启动的时候进行系统诊断。

这个隐藏的诊断分区很强大。它可以在电脑启动的时候按F12键直接进入,而不用考虑主启动分区。并且,这个诊断分区原生支持DOS,可塑性非常强。这就为我们打造全能的启动分区提供了便利的条件。

出厂时,诊断分区内只有DOS启动文件与DELL诊断程序。本文介绍了怎样在启动分区内加入DOS 7.1常用工具集、Windows 3.2中文版、Partition Magic和Ghost(可以用于快速恢复系统)。

如何从U盘/存储卡启动PS2


很多人已经拥有了PS2,很多人改了直读。如果PS2已经改成直读,从网上下载任意一个工具包刻成光盘都可以直接引导。但是对于那些没有该直读的人,想要装载自己的工具程序可能就很麻烦了,至少要用Swap Magic换一次工具盘。

那么有没有直接从U盘或者存储卡直接引导PS2工具的方法呢?答案是没有。但是,有一种方法可以简化换碟操作。这要感谢Swap Magic为我们留下的这个小小的后门。

ProENGINEER 设置——config.pro


关于 config.pro 配置文件

config.pro 文件是文本文件,存储定义 Pro/ENGINEER 处理操作的方式的所有设置。配置文件中的每个设置称为配置选项。Pro/ENGINEER 提供每个选项的缺省值。可设置或改变配置选项。可设置的选项包括:

  • 公差显示格式
  • 计算精度
  • 草图器尺寸中使用的数字的位数
  • 工具栏内容
  • 工具栏上的按钮相对顺序
  • “模型树”(Model Tree) 的位置和大小

注意:Config.sup 是受保护的系统配置文件。公司的系统管理员使用此文件设置在公司范围内使用的配置选项。在此文件中设置的任何值都不能被其它 config.pro 文件覆盖。

Pro/ENGINEER 在启动时读取配置文件的方式

Pro/ENGINEER 可以自动从多个地方读取配置文件。如果某个特定选项出现在多个配置文件中,Pro/ENGINEER 将应用最新的设置。

启动时,Pro/ENGINEER 先读入一个受保护的系统配置文件,名为 config.sup。然后按下列顺序从以下目录中搜索并读入配置文件(config.pro、config.win、menu_def.pro):

  1. 载入点/text(载入点指 Pro/ENGINEER 的安装目录) - 系统管理员可能已将配置文件放在此处,以支持窗口配置设置、格式和库的公司标准。任何从该载入点启动 Pro/ENGINEER 的用户将使用此文件中的值。
  2. 注册目录 - 它是注册 ID 的主目录。将配置文件放置在此处,这样不必在每一个目录中都有文件备份就能从任一目录中启动 Pro/ENGINEER。
  3. 启动目录 - 启动 Pro/ENGINEER 时的当前或工作目录。

注意:因为启动目录中的本地配置文件是最后读取的文件;因此,它们将覆盖任何冲突的配置文件选项条目。然而,config.pro 文件不能覆盖任何 config.sup 条目。

可创建定制配置文件并将其存储在当前工作目录中。这些定制配置文件通常应用于特定的项目。

 

关于 config.pro 选项

config.pro 文件中的选项通常使用下列格式:

config_option_name value

其中 config_option_name 是要设置的选项,value 确定该选项的设置。

例如,配置文件选项 prompt_on_exit 会告诉 Pro/ENGINEER,是否在单击“文件”(File)>“退出”(Exit) 时提示保存工作文件。缺省情况下,Pro/ENGINEER 退出时没有提示。要更改这种缺省行为,可将下行添加到配置文件中:

prompt_on_exit yes

Pro/ENGINEER 在启动时读取此配置文件选项,并在随后提示用户在退出前保存所有修改的文件。

 

设置 config.pro 选项

config.pro 中的每个配置文件选项都包含一个由 Pro/ENGINEER 设置的缺省值。如果不更改选项,Pro/ENGINEER 将使用缺省值。

有以下两种方式可更改 config.pro 选项:

  • 单击“工具”(Tools)>“选项”(Options) 并使用“选项”(Options) 对话框。
  • 从文本编辑器(如 Notepad 或 Microsoft Word)中打开 config.pro 文件,然后直接添加或更改配置选项。

通常情况下,config.pro 文件设置应在启动 Pro/ENGINEER 进程之前修改。如果想要在进程中改变环境,使用“环境”(Environment) 对话框通常更方便一些,它可通过单击“工具”(Tools)>“环境”(Environment) 进行访问。但是,某些 config.pro 选项只能通过使用上述两种方法之一,直接编辑文件来更改。

可保存多个版本的 config.pro 文件,每个文件都包含唯一的设置。如果要对不同的模型使用不同的配置设置,并不希望更改同一 config.pro 文件的多个选项,则此方法非常有用。可使用“选项”(Options) 对话框保存不同的版本。

ProENGINEER 错误——RAISING SIGNAL


Problem Statement:
    std.err states "RAISING SIGNAL : Signal number : 11"
 
Problem Analysis:
    This problem is normally caused by the graphic card driver. ProE is not compatible with all the drivers. Especially, OpenGL functions on some cards are not supported by ProE.
 
Solution:
    Try one of the following, until ProE works.
    1. Change the graphic driver to the latest version or campatible version
    2. Close OpenGL acceleration in graphic card configuration
    3. Add the following line in config.pro
                    graphics win32_gdi
 
错误现象:
std.err中出现“RAISING SIGNAL : Signal number : 11”错误
 
问题分析:
这个问题是由显卡驱动造成的。ProE并不能兼容所有的显卡驱动,尤其是一些显卡的OpenGL功能。
 
解决方法:
尝试以下任意一种方法,直到ProE正常工作为止
1、将显卡驱动程序升级到最新版或者可以兼容工作的版本
2、关闭显卡的OpenGL加速
3、将下面一行加入config.pro
                    graphics win32_gdi

Records:29123



« 2012年02月 »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

标签

用户


链接


归档


信息

  • 分类数量: 15
  • 文章数量: 307
  • 评论数量: 114
  • 标签数量: 556
  • 附件数量: 510
  • 引用数量: 0
  • 注册用户: 12
  • 今日访问: 369
  • 总访问量: 778232
  • 程序版本: 1.6


加拿大中文电话

  • CIBC
    1-888-298-8822
  • TD Canada Trust
    1-800-387-2828
  • HSBC
    1-888-310-4722
  • Scotia Bank
    1-800-830-8080
  • RBC Royal Bank
    1-888-769-2598
  • Rogers TV
    1-800-787-7953
    1-866-406-7239
  • Rogers Wireless
    1-800-828-9828
    or *2288
  • Fido
    1-866-888-3436
  • Bell Home Phone
    1-800-715-1888
  • Bell ExpressVu
    1-888-759-3474
  • UPS Delivery
    1-800-233-8133