Java程序员如何提升自己,有什么网站推荐GitHub够用吗?

blackSnow


对程序员来说,github确实是一个非常好的选择,很多优质项目都在github上托管,通过github确实可以阅读到大量的优秀代码,但是个人认为只依靠github还是远远不够的。推荐网站主要有两类,一类是各种交流平台,如:CSDN,Stack Overflow等;另一类是各优秀项目的官方文档。另外还可以结合GitHub和自己熟悉的IDE工具阅读项目的源码。

除网站之外,阅读和实践也是必不可少的,我自己阅读的书籍有:《深入理解Java虚拟机 JVM高级特性与最佳实践》、《Java并发编程的艺术》。


空心小窝头


Do more

做的更多,做的比你主管安排给你的任务更多。我在HW的时候,负责一个版本的开发,这个版本的工作量大约是2000行左右,但是我除了做完这个功能,还将关联的功能全部掌握清楚了,代码(大约10000行)也全部看了一遍,做完这个版本后,我对这个版本相关的整套业务全部很熟悉了。经过一两次会议后,大家发现我对这块掌握最熟了,接下来就有趣了:产品讨论需求找我、测试有问题也找我、老大对外支撑也找我;后来,不是我负责的功能他们也找我,即使我当时不知道,我也会看代码或者找文档帮他们回答。。。。。。最后我就成了我这个系统的“专家”了。虽然这个时候我还是做业务的,还是写业务代码,但是我已经对整个业务都很熟悉了。以上只是一个简单的例子,其实就是想说:要想有机会,首先你得从人群中冒出来,要想冒出来,你就必须做到与众不同,要做到与众不同,你就要做得更多!怎么做得更多呢?可以从以下几个方面着手:1)熟悉更多业务,不管是不是你负责的;熟悉更多代码,不管是不是你写的这样做有很多好处,举几个简单的例子:需求分析的时候更加准确,能够在需求阶段就识别风险、影响、难点问题处理的时候更加快速,因为相关的业务和代码都熟悉,能够快速的判断问题可能的原因并进行排查处理方案设计的时候考虑更加周全,由于有对全局业务的理解,能够设计出更好的方案2)熟悉端到端比如说你负责web后台开发,但实际上用户发起一个http请求,要经过很多中间步骤才到你的服务器(例如浏览器缓存、DNS、nginx等),服务器一般又会经过很多处理才到你写的那部分代码(路由、权限等)这整个流程中的很多系统或者步骤,绝大部分人是不可能去参与写代码的,但掌握了这些知识对你的综合水平有很大作用,例如方案设计、线上故障处理这些更加有含金量的技术工作都需要综合技术水平。“系统性”、“全局性”、“综合性”这些字眼看起来比较虚,但其实都是技术大牛的必备的素质,要达到这样的境界,必须去熟悉更多系统、业务、代码。3)自学一般在比较成熟的团队,由于框架或者组件已经进行了大量的封装,写业务代码所用到的技术确实也比较少,但我们要明白“唯一不变的只有变化”,框架有可能要改进,组件可能要替换,或者你换了一家公司,新公司既没有组件也没有框架,要你从头开始来做。这些都是机会,也是挑战,而机会和挑战只会分配给有准备的人,所以这种情况下我们更加需要自学更多东西,因为真正等到要用的时候再来学已经没有时间了。以java为例,大部分业务代码就是if-else加个数据库操作,但我们完全可以自己学些更多java的知识,例如垃圾回收,调优,网络编程等,这些可能暂时没用,但真要用的时候,不是google一下就可以了,这个时候谁已经掌握了相关知识和技能,机会就是谁的。以垃圾回收为例,我自己平时就抽时间学习了这些知识,学了1年都没用上,但后来用上了几次,每次都解决了卡死的大问题,而有的同学,写了几年的java代码,对于stop-the-world是什么概念都不知道,更不用说去优化了。Do better要知道这个世界上没有完美的东西,你负责的系统和业务,总有不合理和可以改进的地方,这些“不合理”和“可改进”的地方,都是更高级别的怪物,打完后能够增加更多的经验值。识别出这些地方,并且给出解决方案,然后向主管提出,一次不行两次,多提几次,只要有一次落地了,这就是你的机会。例如: 重复代码太多,是否可以引入设计模式? 系统性能一般,可否进行优化? 目前是单机,如果做成双机是否更好? 版本开发质量不高,是否引入高效的单元测试和集成测试方案? 目前的系统太庞大,是否可以通过重构和解耦改为3个系统? 阿里中间件有一些系统感觉我们也可以用,是否可以引入 ?只要你去想,其实总能发现可以改进的地方的;如果你觉得系统哪里都没有改进的地方,那就说明你的水平还不够,可以多学习相关技术,多看看业界其它公司怎么做,BAT都怎么做。我2013年调配到九游,刚开始接手了一个简单的后台系统,每天就是配合前台做数据增删改查,看起来完全没意思,是吧?如果只做这些确实没意思,但我们接手后做了很多事情:解耦,将一个后台拆分为2个后台,提升可扩展性和稳定性;双机,将单机改为双机系统,提高可靠性;优化,将原来一个耗时5小时的接口优化为耗时5分钟还有其它很多优化,后来我们这个组承担了更多的系统,后来这个小组5个人,负责了6个系统。Do exercise在做职业等级沟通的时候,发现有很多同学确实也在尝试Do more、Do better,但在执行的过程中,几乎每个人都遇到同一个问题:光看不用效果很差,怎么办?例如:学习了jvm的垃圾回收,但是线上比较少出现FGC导致的卡顿问题,就算出现了,恢复业务也是第一位的,不太可能线上出现问题然后让每个同学都去练一下手,那怎么去实践这些jvm的知识和技能呢?Netty我也看了,也了解了Reactor的原理,但是我不可能参与Netty开发,怎么去让自己真正掌握Reactor异步模式呢?看了《高性能MySQL》,但是线上的数据库都是DBA管理的,测试环境的数据库感觉又是随便配置的,我怎么去验证这些技术呢?框架封装了DAL层,数据库的访问我们都不需要操心,我们怎么去了解分库分表实现?诸如此类问题还有很多,我这里分享一下个人的经验,其实就是3个词:learning、trying、teaching!1)Learning这个是第一阶段,看书、google、看视频、看别人的博客都可以,但要注意一点是“系统化”,特别是一些基础性的东西,例如JVM原理、Java编程、网络编程,HTTP协议。。。。。。等等,这些基础技术不能只通过google或者博客学习,我的做法一般是先完整的看完一本书全面的了解,然后再通过google、视频、博客去有针对性的查找一些有疑问的地方,或者一些技巧。2)Trying这个步骤就是解答前面提到的很多同学的疑惑的关键点,形象来说就是“自己动手丰衣足食”,也就是自己去尝试搭建一些模拟环境,自己写一些测试程序。例如:Jvm垃圾回收:可以自己写一个简单的测试程序,分配内存不释放,然后调整各种jvm启动参数,再运行的过程中使用jstack、jstat等命令查看jvm的堆内存分布和垃圾回收情况。这样的程序写起来很简单,简单一点的就几行,复杂一点的也就几十行。Reactor原理:自己真正去尝试写一个Reactor模式的Demo,不要以为这个很难,最简单的Reactor模式代码量(包括注释)不超过200行(可以参考Doug Lee的PPT)。自己写完后,再去看看netty怎么做,一对比理解就更加深刻了。MySQL:既然有线上的配置可以参考,那可以直接让DBA将线上配置发给我们(注意去掉敏感信息),直接学习;然后自己搭建一个MySQL环境,用线上的配置启动;要知道很多同学用了很多年MySQL,但是连个简单的MySQL环境都搭不起来。框架封装了DAL层:可以自己用JDBC尝试去写一个分库分表的简单实现,然后与框架的实现进行对比,看看差异在哪里。用浏览器的工具查看HTTP缓存实现,看看不同种类的网站,不同类型的资源,具体是如何控制缓存的;也可以自己用Python写一个简单的HTTP服务器,模拟返回各种HTTP Headers来观察浏览器的反应。还有很多方法,这里就不一一列举,简单来说,就是要将学到的东西真正试试,才能理解更加深刻,印第安人有一句谚语:I hear and I forget. I see and I remember. I do and I understand ,而且“试试”其实可以比较简单,很多时候我们都可以自己动手做。当然,如果能够在实际工作中使用,效果会更好,毕竟实际的线上环境和业务复杂度不是我们写个模拟程序就能够模拟的,但这样的机会可遇不可求,大部分情况我们还真的只能靠自己模拟,然后等到真正业务要用的时候,能够信手拈来。3)Teaching一般来说,经过Learning和Trying,能掌握70%左右,但要真正掌握,我觉得一定要做到能够跟别人讲清楚。因为在讲的时候,我们既需要将一个知识点系统化,也需要考虑各种细节,这会促使我们进一步思考和学习。同时,讲出来后看或者听的人可以有不同的理解,或者有新的补充,这相当于继续完善了整个知识技能体系。这样的例子很多,包括我自己写博客的时候经常遇到,本来我觉得自己已经掌握很全面了,但一写就发现很多点没考虑到;组内培训的时候也经常看到,有的同学写了PPT,但是讲的时候,大家一问,或者一讨论,就会发现很多点还没有讲清楚,或者有的点其实是理解错了。写PPT、讲PPT、讨论PPT,这个流程全部走一遍,基本上对一个知识点掌握就比较全面了。


斗战胜佛


首先有提升自己的观点是非常棒的,根据我的实际情况简单说一下:

1. JDK源码

在会用的前提下,去学习原理。其中线程池、Future、并发包里的线程安全类、以及锁的根基AQS、volatile,synchronized的原理等等都要去看。源码部分能用到的就要去看下实现原理。

2. JVM层面

写程序一定要知道程序在内存中是如何存放已经管理的,各种回收机制,利弊,使用场景,如果优化,好好的去研究

3. 设计模式

业界有一句笑话“搞JAVA的人天天加班在想怎么设计”,足以看出设计模式在Java中的主要性。针对设计模式我也要多说几句,不要只看,要讲学到的东西应用到自己的实践中。

4. Java优秀的框架源码学习

spring,springmvc,mybatis,tomcat,netty,dubbo 任何一个就够自己研究几个月的。

5. 数据存储层Mysql相关的知识

一般对于Java程序员来说,DB的相关知识特别的薄弱。对于DB的索引、隔离级别、优化以及底层原理都需要搞懂

6. 中间件相关

分布式内存数据库-Redis,MQ-Kafka,RPC-dubbo,服务治理-Zookeeper。像redis是C++写的,可以去了解实现原理,Kafka很庞大也可以只学习原理。dubbo啃代码吧,写的很好。

7. IO方面的知识

Java最擅长的领域就是Web开发,与网络打交道IO只是是缺不了的。比如可以从《Netty权威指南入手》学习,Tomcat中除了容器也是与IO相关的知识。

可以看书,当然书一定不要只看一遍。我一般是一本书至少看两遍。第一遍粗略的读,知道有这个回事就可以。第二遍精读,钻牛角尖的读,碰到不了解的知识点就要去研究。(为什么要读两遍,我一直有一个观点就是,作者在写的时候整本书的知识点就已经都掌握了,先粗略看一遍对全局知识点有了大概的了解后再来看书肯定有不一样的见解)一段时间过后,再返回来读一遍,绝对会有不一样的收获(自己掌握知识水平不同,看书的理解也会不同)。

差不多先这些吧,够研究几年的了


略懂IT


本人10年开发培训经验,期间经历了Java Web,Android,H5,大数据,PHP等多个不同的方向的开发,也做过软件培训公司的金牌讲师,很有兴趣回答你这个问题。

IT行业是可以说是一个需要不停学习,不断充电的行业,如果不能够及时的更新自己的技能和知识储备,那么离淘汰也就为期不远了。

我说一下自己的学习充电的地方吧。

Android技能提升:Android开发者论坛,安卓巴士;

Java技能提升:csdn论坛,开源中国,github,还有各种框架自己的官方网站,比如Spring Boot与Spring cloud官网。


我从事互联网开发10年,主要的研究方向集中在Java web微服务架构领域,Android移动端研发,HTML5前端方向,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信你一定会有所收获。

如果有Java,Android,H5等开发方面的问题,或者是开发求职方面的问题,都可以在评论区留言,或者私信我。


一一哥Sun


我是胡子哥,结合我的经验我从以下三个方面回答你
  • 确定自己的职业规划和未来发展方向
  • 如何提升自己
  • 网站推荐
一、确定自己的职业规划和未来发展方向
为什么要确定自己的职业规划和未来发展方向?如果你没有明确的发展目标,对于未来需要掌握的技能也不会有明确的规划,就像瞎子走路一样,你会很迷茫,会产生焦虑感。虽然你可能可以到达一定程度的目标,但是这个过程的时间成本是巨大了,而且进步是最慢的。其实对于个人的定位发展和企业定位发展是类似的,从战略规划—目标分解—执行—结果反馈—优化每一个环节都不可少。一步错步步错,到了一定的年龄就失去核心竞争力,届时得不偿失。
在我们走向远方的路上一定要停下了深度思考,如果你觉得你很勤奋努力,但是没有深度的思考,你的方向就会有缺失,从而迷失了方向。深度思考是保障你向正确的方向发展,勤奋努力是保障你把正确方向相关联的任务执行到位,从而达到你想要的预期目标。
比如你是Java程序员,你未来可以是架构师、可以是研发总监、可以是CTO、可以是产品经理、可以是产品总监、可以产品VP等。你有了规划和目标,结合你自身目前的情况找差距,你会很清楚的了解自己如何到达目的地。
二、如何提升自己
上面我们说到要确定自己的职业规划和未来发展方向,希望你读到这里的时候已经有了大概的方向感。那首先祝贺你,你离你要实现目标的距离不远啦。做为一名Java程序员工,如何提升自己的技能,你可以从以下方面做起,希望能帮到你。
  • 熟读和深度学习源码的相关知识
你可能会问,我已经会用了为什么还要这么做。 源码涉及的知识要点还是非常广泛深入的。你会用很好,你还要学习的是里面如何实现,以及架构涉及的设计模式。里面的架构和实现是非常优美的,比如有线程安全的,也有线程不安全的,哪些适用于并发设计,哪些不适合,如果你不熟悉,你的代码可能会一团糟。熟读和深度学习源码的相关知识对于未来实现中间件架构、业务架构、代码优化、原有组件扩展都会有很大的帮助,这也是未来发展的基础。
你可能会问要读哪些代码,比如JavaSdk,Spring,SpringBoot,Mybatis等,JavaSdk是最基础也是最重要的。
  • 掌握架构设计思维与应用
架构设计思维和你的职业规划也是一个道理,没有掌握架构设计思维的人会永远停留初级阶段。架构设计为业务服务,是为了让服务扩展性、稳定性、可靠性等有良好的支撑,服务走的更远,支持更多业务的开展。整个系统得不到合理的架构设计规划,随着业务的增长,在不远的将来系统就会变的臃肿,维护性差,冗余不可复用,Bug多,运行过程可能会导致系统崩溃。
如何掌握架构设计的思维,给你推荐几本书,架构之美、UML和模式应用、面向模式的软件架构 (一共5卷,每卷都值得读,分别是模式系统(卷1),并发和联网对象模式(卷2),资源管理模式(卷3),分布式计算的模式语言(卷4),模式与模式语言(卷5))、重构、代码大全。以下是分布式架构、微服务架构、性能优化的相关知识点汇总希望能给你带来更多方向和收获,如图。

  • 掌握项目管理和开发工具
当你处于一个产品或者项目团队中,掌握项目管理的技能很有必要,产品或项目开发是一个相对复杂的过程,涉及产品需求对接、UI、架构设计、开发测试、发布等流程。对于如何建立沟通技能、优先级安排,开发进度安排、问题如何协调解决、激活战斗力也变的很重。可以推荐一本书人月神话。目前很多公司都采用敏捷开发,可以深入学习了解下。
现在团队高效协作离不开工具的支持,需要掌握配置和使用技能。比如Maven、Gradle、Jenkins、Sonar、Git、Jira等
  • 建议坚持写技术Blog

作为一个理工科的程序员来讲,可能不愿意去写作。建议养成写作的习惯,真的很好,知识的沉淀需要有一个承载的地方,它可以帮助你进一步思考和总结,对于代码实现、架构、技术问题的解决能力都会有一个质的飞跃。当你回头看的时候,你发现写Blog真是一件好事情,非常有价值。

三、网站推荐

Github有很多开源的好项目,作为拿来主义肯定省时省力,但对于你练好内功完全不适用。所以说只靠Github完全不够用。可以学习的网站还有CDSN,stackoverflow,iteye(javaeye),infoq,ifeve(并发编程)等向你推荐下。

就回答到这里吧,希望能帮到你,觉得不错的话请给个赞或评论,您的助力都是激励我前行的动力,感谢🙏!

产品胡子哥


我觉得程序员写到最后拼的还是思想。

因为代码写来写去还是那样,倒是一个编程思想一个架构这就是个人想法问题。

为什么同样写代码你只能写业务逻辑,别人却能写出框架。这就是思想的不同。

所以我觉得程序员提升还是多看看别人先进的设计思维,github这个网站有很多优秀的开源项目足够提升了



猿猿嘚不嘚


我觉得首先作为一名程序员不要局限于一门语言,至少我个人认为提升自己有两个方向,一个是技术流,技术流又有两种,一种是某领域深度技术研究,比如你对流媒体技术有所了解并且想对这一领域进行深入那你可以制定你的学习路线专攻这一块,另外一种技术流是掌握技术面多,比如说会多门语言,服务器知识,容器虚拟化等等,另外一种不想走技术流的那就走业务流,对业务分析需求提炼的把控分析,对项目的理解和运用到的技术进行妥协,说完方向,那就说下如何提升自己:

1.上自学网站学习(极客学院,慕课,51cto,github)

2.领会和揣摩现实工作中你上级童鞋的做事办法和思路

3.要相信自己可以改变自己

以上就是道和术的一个小范围解释,希望你以后会遇到真正口述这个哲理的人



陆地神仙老尹


这个问题要看目前处于什么“段位”。

如果目前的段位属于初级,最缺的是知识的丰富程度和实战经验,那就通过多练习,多磨练来不断提升自己的水平。这个阶段可以通过CSDN等网站来多学习一些经验。同时还得多看一些框架性的书籍。

如果目前属于中级段位,说明基础知识都没问题了。这时需要对Spring全家桶、Hibernate等进行系统性学习。还得熟练掌握Redis、MQ等中间件软件的,不断提升自己架构级能力。

如果目前已经出于较高段位,那就可以通过GitHub等网站多多了解Java语言的底层原理、Java各类衍生产品的底层原理和实现方式。还可以自行设计或者参与到很多产品的设计和实现工作中。这样就会越来越牛了。


greatfeather


步入阶段的JAVA程序员,提升已经是很难了,而且这个阶段的学习往往会比较多样化。因为在编程的过程中,你肯定或多或少接触过一些其它的技术,比如大数据、分布式缓存、分布式消息服务、分布式计算、软负载均衡等等。

这些技术,你能精通任何一项,都将是你未来面试时巨大的优势,因此如果你对某一项技术感兴趣的话,这个时候可以深入去研究一下。

这项技术不一定是你工作所用到的,但一定是相关的。

而且在研究一门新技术时,切忌朝三暮四。

有的今天去整整大数据,搞搞Hadoop、hbase一类的东西。

过不了一段时间,就觉得没意思,又去研究分布式缓存,比如redis。

然后又过不了一段时间,又去研究分布式计算,比如整整Mapreduce或者storm。

结果到最后,搞得自己好像什么都会一样,在简历上大言不惭的写上大数据、分布式缓存、分布式计算都了解,其实任何一个都只是浮于表面。到时候面试官随便一问,就把你给识破了。

一定要记住,作为一个JAVA程序员,平日里所接触的技术可能会很多,但是想要让一门技术成为你的优势,那么一定是你对这门技术的了解强过绝大多数人才行。

因此在这个阶段,你就不能再简单的去学习前3年的内容了,虽然前面的学习如果还不够深入的话依旧要继续,但这个时候你应该更多的考虑建立你的优势,也可以称为差异性。

差异性相信不难理解,就是让你自己变得与众不同。你前面三年的学习足够你成为一名基本合格的Java开发者,但你离成为一名优秀的Java开发者还有很大的距离。

所谓优秀,即能别人所不能。而你前三年所学习的内容,是很多做过几年的Java开发都能够掌握的。那么为了让自己有差异性,你就需要另辟蹊径,找一个方向深入研究下去,以期在将来,你能够成为这个领域的专家,比如分布式计算领域的专家,大数据领域的专家,并发领域的专家等等。

此外,你除了建立你的差异性之外,还要去弥补你基础上的不足,直到现在,都没有提及基础知识。原因是基础是很枯燥无味的,学的太早不仅容易懵逼,而且懵逼的同时还容易产生心理阴影,以至于以后再不想去研究这些基础。但基础又是你深入研究一些领域时所必须掌握的,比如你去研究分布式计算,你不懂算法你玩个毛毛?比如你去做分布式缓存,你对计算机系统的内存不了解,你如何去做缓存?

如何去更好的学习新的技术?

1.这个技术的作用和意义是什么? 2.它比较适合用在哪里?3.这个新技术跟之前了解过的技术有哪些相似之处,是否可以想通。清晰的理解能力,大家都知道,程序员就是讲用户的需求用代码实现,如果你想成为项目主管,负责整个项目,那么你一定要理解用户的需求,一旦项目失败,整个责任都是你一个人承担,所以想要达到更高职位的人,一定还要学习更多的额东西,程序员是严谨的一群人,如果对于用户提出的需求没有更好的理解,这个项目产品一定会失败,所以那些想要成为项目主管的人要培养自己的理解能力。

持续学习

有很多人在刚开始学软件开发的时候就会问,是不是需要一直学习啊,其实他的潜台词就是能不能一劳永逸,对于这样的人是不适合学习开发的,包括现在任何领域,如果可以学一次就不学,那么这个领域一定是个已经废了的领域,学习Java开发需要不断深入的学习新的知识。如果你打算不学习新的知识,你永远只能做最低级的程序员,就是我们说的码农。

分享

一个聪明的程序员一定是善于分享的,因为在分享的过程中,不仅是对于旧知识的一种复习,而且还会遇到你不懂的问题,这样也会促使你去弄懂这个问题,长时间下来可不得了,是对自己的一种无形的提升。而且你还会帮助很多人。

给年轻的初级程序员的几条建议


1.搜集各种信息网站

一个聪明细心想要发展更好的程序员,一定是会在工作学习的过程中把自己遇到的一切问题和解决方案,还有比较好的网站,总结到电脑中的笔记本中,这些东西都是见证你成长的,是属于你自己的知识库,因为里面的东西都是你自己写的,干什么的你都知道,可以反复使用,我曾经就见过一个前端大牛,10多年整理的笔记各种语言的,那真的是一种无形的资产,还有各种编辑器,我们做的这个东西就是一个非常大的信息采集器。

2.注意一下自己的沟通能力

程序员不是人们口中所说的很闷的那种人,这个跟性格有关系,其实无论是做什么工作,最后还是跟人打交道,一个会说话的人往往比一个技术NB的人要发展的好,就好比浙江人做生意永远比东北人做生意厉害,完全可以甩东北人好几个里地。你想要得到更好的发展,技术NB只是一方面,但是我得告诉你,想要挣更多的钱,沟通是非常重要的,至于怎么培养,你自己去想。

3.找到一个具有发展的平台

平台真的太重要了,你有雄心壮志也很有才华,但是你没有一个好的平台,那都是不行的,关键还是看老板,其实在大公司的话适合养老,因为大公司后来招聘的员工基本不会有什么发展的,只是工资高点,稳定,如果提高发展,还是那种创业型公司,这个平台怎么找,我也不知道,但是我需要提这点,看你自己是什么人,想做什么事情,就适合什么平台,有的人适合养号,有的人适合创业,这都是性格所致。


莫非8125


最好的的提升方式就是实战!
一直以来都想学Java,看了不少书,视频教程,但是真的要动手,就举步维艰!
今年年初刚好有个需求,ANDROID 的PDA 扫描二维码后,随即通过蓝牙的方式打印标签;当时不知哪来的勇气居然敢报价(2w+),竟然中单了[捂脸].
高兴半秒后,接着就是紧张😓,之前没有任何实战经验,这个软件要求忙高,用在医疗行业. 接单之后一点也不敢怠慢.


第一步:把项目的技术难点找出来;
第二步:难度分类,先易后难。对于基本的增删改查都要网上找例子的新手,只能投入时间,不断找实例练手;
第三步:解决高难度问题:app 蓝牙连接sewoo 便携式蓝牙打印机(类似斑马便携式打印机),并且打印标签.
第四步:软件完善:经过前面几步的历炼,对java已经有了一定的功底,线程,消息这些都已经熟练了,但是软件的仅仅停留在能用的水平,真正交付给用户还需要打磨升华;
1.设备开机自动连接蓝牙打印机;
2: 获取蓝牙打印机的电量;获取打印机状态(就绪、缺纸、机盖是否合上);
3:扫描引擎参数设置(Mobydata,zebra 两款PDA测试;
4. 最高难度还是处理打印中文字体。PDA扫描二维码,此QR code特殊至极,把中文字体以二进制的形式存存储,PDA需要解码,参照24点阵的显示,之后把解码内容再转换为 打印机指令 CPCL,这一步真是呕心沥血,翻阅了无数前人资料,研究汉字点阵字体,24x24,12x12.... 历经无数次失败,当第一次终于打印出汉字时,那种喜悦是就像[爱慕].
要提升自己就要历炼.

\n

{!-- PGC_VIDEO:{"thumb_height": 1440, "vposter": "http://p0.pstatp.com/origin/tos-cn-p-0000/daf4f2fb858a446b873c3d23201ac8dc\


分享到:


相關文章: