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对于程序员对程序相关知识的了解,还是很有帮助的。

转载于:https://www.cnblogs.com/lowcoders-Blog/p/5474751.html

.NET转JAVA之拼音组件相关推荐

  1. java 汉字转拼音_推荐一款前端汉字转拼音组件工具

    推荐一个前端的汉字转拼音组件 hotoo/pinyin, 支持在 Node 和 Web 浏览器环境运行. github网址:https://github.com/hotoo/pinyin 特性 根据词 ...

  2. Java中文分词组件 - word分词(skycto JEEditor)

    转自:https://my.oschina.net/apdplat/blog/228619#OSC_h4_8 Java分布式中文分词组件 - word分词 word分词是一个Java实现的分布式的中文 ...

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

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

  4. java ee各类组件_在Java EE组件中使用骆驼路线

    java ee各类组件 从现在开始我一直在与Camel合作,我真的很喜欢它的简单性. 在Java EE之上使用它一直是一个挑战,我最近发表了一篇关于如何做到这一点的演讲,而在Java EE中引导Cam ...

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

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

  6. java实现团购功能_[Java教程]jquery组件团购倒计时功能

    [Java教程]jquery组件团购倒计时功能 0 2014-05-12 12:00:04 本文网址:http://www.shaoqun.com/a/90954.html *特别声明:以上内容来自于 ...

  7. java使用smartupload组件实现文件上传的方法

    为什么80%的码农都做不了架构师?>>>    本文实例讲述了java使用smartupload组件实现文件上传的方法.分享给大家供大家参考.具体分析如下:文件上传几乎是所有网站都具 ...

  8. java中文拼音转换(maven)

    java中文拼音转换(maven) 效果: 学习JAVA可以找到一份好的工作:xué xí J A V A kĕ yĭ zhăo dào yī fèn hăo de gōng zuò 学习JAVA可以 ...

  9. vue中文翻译拼音组件_Vue组件可简化文本的翻译方式:通过内联翻译

    vue中文翻译拼音组件 @ alidrus / vue-simple-inline-translation (@alidrus/vue-simple-inline-translation) A Vue ...

最新文章

  1. Windows 7 64位机上搭建Android开发环境
  2. 9月,最值得看的30篇肠道健康文献!
  3. Python 实战多元线性回归模型,附带原理+代码
  4. linux下搭建基于python的vim,Linux下搭建基于python的VIM-Go语言中文社区
  5. 小白也能看懂的缓存雪崩、穿透、击穿
  6. c语言int的存储形式,C语言变量的存储类型有3种,即int型、float型和char型
  7. STM8S003单片机串口通信通信协议分析
  8. 博客园编辑器插入code功能试用及与EditPlus的语法高亮比较
  9. zabbix监控mysql内存_zabbix通过自定义脚本监控nginx,php-fpm和mysql占用内存数和进程的个数...
  10. http2-协议协商过程
  11. asp探针,php探针,jsp探针
  12. mybatis 映射问题(mysql date与java Date类型格式错误)
  13. c语言 椭圆周长,高中数学公式大全
  14. 电压力锅中的计算机控制系统,电压力锅的(电脑板)工作原理
  15. 【测试理论】三、测试流程管理
  16. mysql高级教程(一)
  17. Windows 10电脑使用VMware虚拟机安装macOS苹果系统[一站式保姆级别教程]
  18. qt线程如何接收linux信号,Linux-Qt使用QThread多线程isRunning标志量问题
  19. Hexo-Theme-Sakura 实践记录
  20. 【成神之路】开放设计编程相关面试题

热门文章

  1. topic是短语还是句子_英语topic
  2. svn服务器设置忽略文件夹,SVNignore忽略文件及目录 - 米扑博客
  3. ubuntu无法打开中文输入法
  4. 不被消费者优先选择的,不叫品牌,叫商标
  5. deallocate mysql_Mysql预处理语句prepare、execute、deallocate
  6. qa 芯片测试_[转]芯片设计中验证Verification,确认Validation以及测试Test的区别
  7. C++——算术表达式的求值(数据结构课程设计)
  8. Java学习路线汇总(持续更新)
  9. 阿里大动物园热闹PK,马云最初的梦想是动物园园长?
  10. 创业必读:没钱没技术,如何开发App?