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. 关于meta知多少

    本来打算写关于手机端的知识,想了想先从meta着手.接下来请大家看几个网站的例子. 一.天猫(http://m.tmall.com) <title>天猫触屏版</title> ...

  2. Mac OS X下Sublime Text (V2.0.1)破解

    转自:http://blog.sina.com.cn/s/blog_559d66460101cab0.html 1. 在http://www.sublimetext.com/上根据操作系统选择对应版本 ...

  3. JCEF3——谷歌浏览器内核Java版实现(一):使用jawt获取窗体句柄

    前言 最近一段时间研究谷歌浏览器内核.谷歌浏览器内核一直开源,并维护更新,它的开源项目中内核更新速度和Chrome浏览器版本更新进度一样!而且它不同于WebKit(值得一题的是谷歌浏览器已不使用Web ...

  4. C primer plus 练习题 第三章

    5. #include <stdio.h> int main() { float you_sec; printf("请输入你的年龄:"); scanf("%f ...

  5. cmd窗口编码方式的修改

    cmd默认的编码是采用GBK   regedit HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage 十进制:936 GB ...

  6. tcp/ip协议listen函数中backlog参数的含义与php-fpm的502 Bad Gateway

    To understand the backlog argument, we must realize that for a given listening socket, the kernel ma ...

  7. Visual Studio 2013开启JavaScript的智能提示功能

    在前一次的发布的时候,我们共享了Visual Studio 2013中Windows Azure移动服务的集成和功能.其中包含了移动服务表脚本的编辑能力的介绍.这一次的发布,我们将描述在Visual ...

  8. 如何生成ipa文件

    xcode--Product--Archive 弹出Organizer-Archives选择Distribute---Save for EnterPrise or Ad_Hoc Deployment- ...

  9. 【转载】linux内核启动android文件系统过程分析

    主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源代码目录介绍Makefile (全局的Makefile)bioni ...

  10. css3 keyframes在yuicompressor下压缩问题

    @keyframes proBackAction { 0% { opacity:; } 100% { opacity: .8; } } @keyframes proBackAction { 0{ op ...