PS:做了4年,自我感觉.NET到瓶颈了,而且公司并没有深入运用.NET技术的项目,自我学习感觉也没太大动力(请骂我懒T_T)。再加上技术年限越往上走,了解到的.NET职业提升环境就越来越艰难(个人理解,喷子就不用喷了,喷了对我也没影响,哈哈哈)。于是于半月前开始学习JAVA技术。公司刚好成立了JAVA开发的小组,就申请调过去了。公司有很多组件都是.NET环境的,对于纯粹的JAVA攻城狮来说,对于.NET代码也比较头疼,因此,此类任务就扔了一个给我。
 
  • 组件的功能:

          由于公司的业务需求,对于中文姓名中的生僻字(针对常用的GB2312来说,不是GBK),需要进行识别并转换成拼音。对于多个中文姓名,整个姓名拼音字符串出现重复的姓名,需要提示。
          首先说说算法:
          GB2312有自己的编码表以及拼音的索引表(我这里是网上找的) ,然后可以根据自己设计的查找算法制作相应的资源数组。
          GB2312的16~55区的一级汉字由根据拼音排序的。将一级汉字转为字节数组,根据算法定位到前面的资源数组,即可找到相应的拼音。
          GB2312的56~87区的二级汉字因为不是使用拼音排序,可以特殊处理,也可以设计兼容的算法(因此资源数组需要自行设计)。
          对于生僻字:
          超过GB2312中汉字区位的生僻字(当然字节数组依然是两位),目前使用的是直接导入GBK中的生僻字信息,做成索引器,然后进行索引匹配。
  • 不同点:

          汉字字符串转字节数组:
          .NET中,汉字字符串使用GB2312和GBK编码方式,对于生僻字,得到的字节都是GBK中的两位字节数组信息。
          但是JAVA中,用GB2312得到的是一个“?”的ASCII码中的字节,只有使用GBK才能获取到相应的两位字节数组。(毕竟GBK对于GB2312是向下完全兼容的)
          无符号整数:
          由于使用的是索引资源,所以在进行相关的索引计算时,会用到无符号整数。
          .NET中有自己定义的无符号整数,而JAVA中是不会存在有无符号整数的,所以需要进行升位的运算,以及存储(UInt16对应Int,UInt32对应Long)。
          字节数组(两个字节)转无符号整形:
          .NET中有直接的方法。需要注意的是,有些方法进行回转时,低位在前面,而高位在后面。
          JAVA中需要自己写相应的方法。需要注意高低位的转换,以及Uint在JAVA中的表示形式。
          文件读取:
          由于需要读取生僻字,因此文件格式转成了UTF-8。在Windows系统中,MS会为非ASCII编码的文件的头部,加入一个BOM(Byte Order Mark),字节顺序标记。
          JAVA在读取含有BOM的文件时,读取第一个字符会出现一个?,可能会影响到程序的后续处理。
          解决方法也比较简单,用类似NOTEPAD++的软件转成无BOM的编码就可以了。
  • 总结:

          语法大体相同,但是JAVA确实没那么多的内置语法,很多底层都需要自己编写(公司不让引用第三方的类库)。
          感觉.NET虽然很方便,但是如果不主动,是不用也不会明白很多计算机底层的东西。(其实还是我懒T_T)
          JAVA则需要了解很多底层的知识,才能正确的编程,虽然比较痛苦,但是个人感觉需要了解的东西会很多。
          感觉入门的话,.NET确实是一门很不错的语言,但是如果没什么主动性的话,JAVA对于程序员对程序相关知识的了解,还是很有帮助的。

.NET转JAVA之拼音组件的更多相关文章

  1. java中解决组件重叠的问题(例如鼠标移动组件时)

    java中解决组件覆盖的问题!     有时候在移动组件的时候会出现两个组件覆盖的情况,但是你想让被覆盖的组件显示出来或者不被覆盖! 在设计GUI时已经可以定义组件的叠放次序了(按摆放组件的先后顺序) ...

  2. 谈谈Java的集合组件

    让我们一起谈谈Java的集合组件 我们在使用Java的时候,都会遇到并使用到Java的集合.在这里通过自己的理解和网上的资源对Java的集合方面的使用做一个简单的讲解和总结. Java主要分为3个集合 ...

  3. java web(五):java web三大组件之另外两个和八大监听器

    java的三大组件指Servlet.Filter.Listener.八大监听器指八个接口.前面介绍了Servlet,现在介绍一下Filter拦截器以及拦截地址的设置, Listener监听那些事件. ...

  4. Java日期处理组件joda-time

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/175 Java日期处理组件joda-time 平常在开发过 ...

  5. Java中日志组件详解

    avalon-logkit Java中日志组件详解 lanhy 发布于 2020-9-1 11:35 224浏览 0收藏 作为开发人员,我相信您对日志记录工具并不陌生. Java还具有功能强大且功能强 ...

  6. java基础 常用组件

    几个常用组件: 在图形用户界面编程中,我们常常会提供用户登陆界面,比如登陆到会员管理系统,登陆到工资管理系统,仓库管理系统等,如下图我们就会用到: 1. 文本框(JTextField) 2. 密码框( ...

  7. Java 动态编译组件 & 类动态加载

    1.JDK6 动态编译组件 Java SE 6 之后自身集成了运行时编译的组件:javax.tools,存放在 tools.jar 包里,可以实现 Java 源代码编译,帮助扩展静态应用程序.该包中提 ...

  8. java上传组件FileUpload

    如果表单中有文件要上传,也就是有<input type="file" name="name"/> 就需要在form标签中添加enctype=&quo ...

  9. 【Java】JTable组件的构造函数和设置列宽

    使用JTable组件 类层次结构图: java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JCompone ...

随机推荐

  1. 中国的 Android:尚未发掘的应用市场?

    作者: Wendy Boswell 本周,中国的搜索引擎公司百度最新公布的一篇报告介绍了中国 Android 用户的移动趋势. 下面是一些有价值的统计数据: 眼下在中国,每天的 Android 活跃用 ...

  2. idea使用maven启动tomcat

    1.设置tomcat,如图: 2.添加war包 3.修改pom.xml 删除可能的选项,如果有下面的代码,删除掉 4.选择使用的resources目录 5.启动即可

  3. Text3d

    有小bug,先弄这么多吧,晚了,碎觉了 ---------------------------------

  4. Unitils集成DBUnit的问题-解决方案

    Unitils在集成DBunit时,如果数据库是mysql时,就会出现一些如下: org.unitils.core.UnitilsException: Error inserting test dat ...

  5. [英] 推荐 15 个 jQuery 选择框插件

    jQuery Selectbox Plugins let you create beautiful and eye catching select box for your websites inst ...

  6. iOS开发-NSDate使用

    时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)至当前时间的总秒数.它也被称为 Unix 时间戳(Unix Timestamp). 下面是iOS中时间戳 与 时间之间的转换方法: ...

  7. 设计模式——"simple Factory"

    顾名思义,工厂模式就是类似于生活中的工厂,可以生产我们想要的东西,回到代码,假如我们需要一个实例,直接从工厂中拿即可. eg:假如我们定义一个“球”类的接口 public interface Ball ...

  8. Sass for循环中编译%时报错解决方案

    sass功能强大,特别是支持for循环,节省大量开发时间,但是在开发时遇到一个问题,直接使用%时没有问题,当有变量时再加% 单位在编译时报错: 这样没有问题: @for $width from 0 t ...

  9. Windows Azure Compute Emulator无法启动问题解决方案

    Visual Studio 2013安装了Windows Azure SDK 2.7,但启动Emulator调试时,出现如下错误: Error: The installed Windows Azure ...

  10. Ajax请求WebService跨域问题 [转载]

    1.背景 用Jquery中Ajax方式在asp.net开发环境中WebService接口的调用 2.出现的问题 原因分析:浏览器同源策略的影响(即JavaScript或Cookie只能访问同域下的内容 ...