专访蒋彪:JavaEE是企业级开发首选
导读:这是一名工作于开发一线的技术经理,正因为此他对技术人生、JavaEE企业级开发和Android产品开发等有得天独厚的认识和见解,为此CSDN记者对这位技术经理进行了专访并发表成文,希望大家看完后能对自己的开发生涯有重新的认识,同时也能对企业级开发有个基本了解。
蒋彪认为做技术的要学会螺蛳里做道场
蒋彪,海隆软件技术经理,曾就职过对日外包、国内电商等。一开始主要做企业级javaEE开发,用工作流和RIA,整天纠缠于企业建模等。后来开始接触到Android、HTML5、电商、大数据并发和系统调优,开始学会从深层次的切入点思考技术问题。获得的荣誉有高级程序员、PMP、CSDN博客专家和51CTO技术专家等。
程序员之路从自学开始
CSDN:请和大家介绍下你及所从事的工作
蒋彪:南京人,06年毕业于南京信息工程大学计算数学。曾经做过对日外包和国内电商,现在海隆软件担任技术经理。主要的工作是技术管理,推进产品的技术演化,在公司内做一些力所能及的技术积累,有时候也会参与到新产品的设计和提案中。
CSDN:你是学数学出身,后来为什么会走上软件开发之路?自学之路有没有遇到什么困难,都是如何克服?你的数学修养对学习有没有带来什么帮助?
蒋彪:做IT基本上靠自学,大学时候自己看看书,大三的时候考了个高级程序员认证,当时这个认证还是有含金量的,所以毕业之后就顺理成章做程序员。
软件开发行业,高端的工作还是需要扎实的数学知识,比如大数据计算、搜索引擎算法和工作流引擎的状态机研究等。不过对于一般人而言,绝大多数的开发工作还是在围绕着业务逻辑在编织代码。就以自己举例,工作7年,只用到一次数学,当时做一个通信框架,当通信的一端发出的request没有得到响应的的时候,需要每隔一段时间重复发送,但是这个间隔时间曲线又需要线形增长,平滑逼近于零,所以我们最终采用了指数延迟算法来解决这个问题。
CSDN:你博客中用了“Bug抓捕员”和“专业江湖救急”等标签,为什么想到用这些词来形容自己?
蒋彪:有好几年我主要的工作状态就是游走在各个项目之间,解决各种稀奇古怪的技术问题,比如生产环境服务器的CPU负荷突高、JVM Down、TCP通信失败和数据库con pool耗尽等等。这个工作让人感觉很有成就感。
CSDN:你曾在日本工作,你觉得日本的软件开发和国内有什么不同?对此最大的收获是什么?另外在日期间有没有特别的经历和大家分享下?
蒋彪:日本的电子设计,嵌入式行业比较发达,企业MIS和系统集成这块和国内基本上相差不大,而互联网行业,因为日本人比较保守,而且监管也严格,所以大型的互联网公司没有中国多。像阿里系这种积累了深厚技术底蕴的互联网公司,不光日本很少,全亚洲估计也没有几个。日本人做事情比我们认真一点,但从开发技术、人员素质和开发流程上来看,中日差距没有多大。
技术人的技术人生要会妥协
CSDN:博客为什么起名“南湖边上的小木屋”?同时下面的说明“如果平凡,则廉价不可避免”有什么寓意,想传达什么?另外你常会吟词作赋,这样的心态对你程序员生涯有什么影响?
蒋彪:“如果平凡,则廉价不可避免”是我老板Jack常说的一句话。我觉得很有道理。现在中国的大势是旧有的发展模式已经到瓶颈,无论愿意还是不愿意,大家都面临着创新和转型。只有提高自己的附加值,做更高等级的工作,才能达到自己的人生价值。
CSDN:可以说你的经历非常丰富,能和大家谈谈你在技术人生上的一些认识吗?比如你对程序员熟手、高手和大师这三个境界怎么看?若想达到这些境界有没有捷径可走?
蒋彪:我本人最多只能算熟手,远远没有到大师的水平。到大师的人要深入浅出,深入理解计算机体系结构、操作系统底层机制、内存管理、编译器和通信协议,浅的要能写代码,做技术传道,推进产品进化。
做技术要靠天赋+运气+努力,三者缺一不可。IT行业入门容易,但是精通高深很难,因为有很多需要深入技术的地方,天赋和想象力还是很重要的。当然运气好的话,如果能够遇到一个好师傅领进门,一个热于研究的好团队,就能事半功倍。另外做技术要能做冷板凳,能耐的下寂寞,一遍一遍实验,这就是努力。但是,我们绝大多数人都是普通人,三者中都会缺失某一项,因此就需要我们摆正姿态。
我们要认识到,除了个把技术大牛和技术型团队之外,在中国,技术往往是服务于业务的。无论你是做ERP、CRM、WorkFlow,还是金融、电力、通信、甚至电商。做技术的人首先要认识到,如果你的技术不能带来赢利,那就狗屁不如。因此很多时候,我们做技术的人,要学会妥协。尤其在你不是大牛的情况下,面对成本压力、项目进度和文化环境,我们要认识到技术的从属性。因此我常常觉得,做技术的,要学会螺蛳里做道场。
可以快速开发的JavaEE是企业级开发首选
CSDN:当初为什么会在众多技术中选择Java?你认为Java学习如何开始和深入?
蒋彪:Java是高级语言,语法严谨、面向对象优良,JVM又能让你摆脱底层实现,专心考虑业务逻辑,所以Java很适合做业务开发。作为一门开发技术,Java还是很简单的。如果想深入理解和认识Java,有时间要多看看JVM的内部实现机制和内存模型,这是个不错的选择。另外周志明编写的《深入理解Java虚拟机》是本好书,推荐给大家。
CSDN:企业级开发首选的技术是JavaEE和.Net,你认为这两个技术哪个更好,为什么?
蒋彪:国内的IT行业长久以来,最大的客户就是企业。除了腾讯,阿里巴巴等,大家都是在做企业MIS。无论是OA、电信BOSS、银行流程再造,还是电力信息管理平台等等,大家都是在做企业级开发,首选的开发工具必然是JavaEE或者.Net。
选择JavaEE,除了可移植性外,最重要的原因如下:
- 简单可行,快速上手。因为Java作为高级语言的优点,易学习,远离底层,有丰富的API。
- 因为JavaEE适合快速开发,有丰富的开发框架和原形。
另外顺便提一下,很多做javaEE的人开发了很多年都没有接触过thread、GC和Native Method等等都是很正常。而Java本身的更多技巧性存在于业务建模,如果你不能接触到,其实Java对你而言就是一堆框架和API的组合而已,所以外界有人觉得做Java的人水分比较大,这是有道理的。
CSDN:在当前应用开发中,主要使用哪些Java EE技术?您认为哪些Java EE技术是最基础最重要的?
蒋彪:理解JVM机制、Java语法、Serlvet规范和HTTP协议就够了。简单说起来,好好参加Java认证考试就能把基本功掌握好,其它乱七八糟的框架,都是围绕着基础推进的。
CSDN:如何提高Java EE系统安全性,能简单谈下吗?
蒋彪:安全是个系统工程,比如前段时间冒出来的struts远程命令攻击的安全隐患,是属于开源框架的安全bug。比如京东前段时间被人恶意充话费事件,是属于代码级别的安全问题。以前我还见到做运维的新人,误删生产环境关键文件夹,导致全系统当机的安全问题。整个JavaEE里面,个人估计只有JVM本身的安全问题最少,所以大公司都会有专业的安全部门。
CSDN:使用开源框架的利和弊,开源框架对Java EE技术发展有哪些影响,平时在开发中主要使用哪些Java EE框架,为什么?
蒋彪:没有开源软件的话,JavaEE就什么也不是。国内对开源软件的使用一般分为三个级别:
- 第一梯队是阿里系为代表的技术巨头,他们能定制开源软件,甚至自己研发开源软件。
- 第二梯队是一些大中型的MIS和系统集成商,他们能在spring之类的开源框架上封装自己快速业务开发原型。
- 第三梯队是大量的中小型公司,只会用用SSH。
对一般公司而言,定制开源框架没必要也没实力,搭建自己的快速业务开发原型倒是很有意义,在此我推荐可以考虑尝试OfBiz这个业务框架,国内在此基础上封装自己的业务逻辑的公司也不少。单纯的技术框架的争辩,对于我们的意义不大。
CSDN:在Java EE项目开发中系统架构是否很重要,在实际工作中,对于Java EE项目的架构设计有哪些经验可以分享?
蒋彪:大型项目肯定需要系统架构。不过对系统架构看的更重的还是在互联网企业。因为不断的产品演化和推进,没有架构师强有力的规划是不可能梳理清楚的。
CSDN:JavaEE虽然是企业级开发的首选,但也有人指出JavaEE比较臃肿庞大、开发和维护成本较高,同时开发效率也不高,对此你是怎么看的?另外JavaEE还有哪些局限?
蒋彪:JavaEE和.NET相比,开发成本和维护成本确实比较高,这是不争的事实。JavaEE开发中很容易出现类爆炸,一个看起来简单三句话的代码,会被拆散到多个接口对象中去。但是这不是JavaEE本身的问题,这是设计过度。
很多项目没有学会用正确的技术做正确的事情。我08年的时候,做了一个小项目,一个非常简单的学校教学管理系统。项目团队一共5个人,我当时负责做数据库建模,项目经理技术选型的时候,一定要选用SSH,我当时极力反对,因为Hibernate是相当重量级的ORMapping ,如果你是做电信Boss我强烈支持你用,但是做几十个画面的小系统用这个,属于没事找事。
项目经理强力推行他的计划,结果一个很简单的项目结果失败了。因此做技术的要学会切合业务模型推进和妥协,因为项目是要盈利的,不是你个人的实验品。所以不是JavaEE臃肿,是我们很多人不会用,用错了。
CSDN:“什么是合适的,那么什么就是成功的”特别赞同你在博客说的这话,那么在企业级开发中面对不同环境和要求,如何灵活运用JavaEE和.Net?能简单举例说明吗?
蒋彪:Keep it Simple, stupid!如果你只是想做一个日PV几千几万的小网站,你会想到买小型机吗?技术要切合场景!比如你公司80%的程序员都熟悉.Net,你非要强制推行JavaEE。比如分明是个强事务的业务场景,你为了所谓的吞吐量非要上node.js。这都是可笑的行为。
一般来说,单纯从技术出发,如果你的业务系统不需要分布式和集群,日PV没有那么高,公司的技术底蕴和架构师都不是很强,那推荐你用.NET开发。如果你要考虑系统的伸缩性,未来准备把这个系统玩大做强,需要考虑持续投入和进化,那我推荐你用JavaEE。
如何开发出一个成功的Android产品
CSDN:可以说Android算是一个Java类库,你觉得Android开发与传统的JavaEE开发有什么不同?
蒋彪:准确的说,Android只是实现了Java语言规范的一个开发平台而已。Dalvik虚拟机基于寄存器,JVM基于堆栈,两者的不同其实很大。Android本身执行在移动设备上,虽然Dalvik会有GC机制,但是开发者还是应该避免大量生成没必要的执行序列和Object。
之前看到一个做JavaEE的架构师转做Android后,一上手就把代码拆分成Activity、Logic、Façade、Service、DAO和DTO等等。这其实很可笑,Android中的对象建模要以轻便为主,以我的经验Activity和Service上封装一个抽象类,DBUtil之类的工具类做成static Util即可,别过分设计。
CSDN:Android产品开发中都会遇到哪些常见问题?那么该如何避免这些问题出现?
蒋彪:Android产品要想好盈利。我看到不少投了很多钱的产品,当初根本就没想好如何盈利就急忙上马,最后的下场都很惨。一个没有完整盈利规划的产品,公司一般可以直接Pass,不要立项,这就是我的经验。
CSDN:要想开发出一个成功的Android产品,在实际开发中该怎么做?
蒋彪:
- 要学会整合现有的IT资源。比如想做一个OA的App,如果你们公司有现成的B/S架构的OA产品,那就应该考虑把这个产品的界面按照Smartphone风格重新设计一番,然后在外面套上一个NativeApp的壳子,而不是重新造轮子。
- 多看看别人怎么做。如果你想做音乐盒子之类的App,应该先把国内所有主流的同类型APP拿过来,研究他们的功能和他们的UI设计,把别人的优点和缺点都研究透彻。
- 一个成功的产品,App只是冰山一角,还需要后台的运维系统、推广、持续的进化、产品路线图和规划。如果你以为做个有点子的App就成功了,那还是趁早住手比较好。
- App要根据业务分类进行技术选型。比如你要做游戏,我推荐你去用成熟的游戏引擎,这比你用native技术开发绝对现实。如果你做工具助手之类画面简单强调易用性的App,我推荐用native技术。如果你做网上购物之类的重业务App,我推荐你用native+WebView来实现。
- 最后一个建议,不要轻易尝试新技术,做踩地雷的勇士,比如HTML5。
CSDN:目前已进入移动互联网时代,移动开发大热,你能谈谈移动产品未来如何盈利和发展?
蒋彪:移动产品盈利是个大难题。尤其在中国,因为中国人思想里就有软件不付费的习惯。现在国内移动产品就游戏道具和广告收入两个现金流。但是从未来角度来看的话,个人觉得移动产品硬件化可能是另外一条道路。比如小米盒子给我们的启示,Android除了做手机,是不是还能做机顶盒,以后还能做温度计,血压计等等。
对于开发App的人而言,如果自己开发的App能够和硬件配件整合起来是不是就能得到更多的用户黏度,同时也能更容易获得现金流呢。
记录是个好习惯
CSDN:你是什么时候接触到CSDN,它对你工作和学习带来哪些影响?另外对CSDN有什么建议,对其未来有什么期待?
蒋彪:我09年的时候在做一个研究性项目,当时看到不少美国同行喜欢写博客,因此就在CSDN上建了博客,一发不可收拾,直到现在。经常写博客,让自己对过去的几年工作有个梳理,人都是健忘的,常常记录是个好习惯。
我对CSDN的建议只有一个,希望CSDN出个Android客户端。
写在最后:
从蒋彪的CSDN博客、从和他断断续续的交流中,记者发现他对技术对人生理解的非常透彻,他认为技术大牛要从物理层、协议层、架构层和编码层,能够层层透彻,为了进一步说明,他还用一个寓言向记者阐述:鹦鹉负责吹嘘架构,鸡负责管理,猪负责开发,他指出真正的大牛应该是能讲架构,能定规范,能写底层代码。
此外他还和记者表示,技术只是一种实现方法,特意强调某种技术,乃至于为了某种技术辩护的人其实是虚伪的,最后他还和记者分享开发项目无论是技术、流程和方法都不要拘泥于套路和模板,判断一个项目是否敏捷,不是看是否有了敏捷的title,而在于是否掌握了敏捷的精髓……聊完相关话题后,记者心目中对程序员那种呆板、沉默寡言的形象一扫而净,是的程序员就应该这样,就应该到达这样的境界,只有这样才能让自己的技术人生更美好,才更能潜心于技术从而实现自己的价值。(文/张勇)
若想获悉蒋彪更多动态,请关注:
相关推荐
微服务与Docker 是近年来分布式大规模服务架构中两个主流的技术趋势,本书主要介绍中小型企业在架构落地过程中柔性地切入微服务和Docker 虚拟化的各种方法。 书中主要介绍了微服务架构的各种技术选型、微服务拆分的...
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
2025最新空调与制冷作业(运行操作)考试题库及答案.docx
内容概要:本文提出了一种新的无监督视频对象分割(unsupervised VOS)方法——双原型注意力机制(Dual Prototype Attention),即IMA(跨模态注意模块)和IFA(帧间注意模块)。这些机制分别解决了现有多模态融合和时间聚集方法中存在的鲁棒性和计算效率等问题,显著提高了在多个公开基准数据集上的表现。此外,论文还探讨了原型嵌入对性能的影响并对其进行了验证。 适合人群:对视频处理特别是无监督视频对象分割领域感兴趣的计算机视觉研究员和技术开发者。 使用场景及目标:适用于各种需要进行高质量自动图像或视频内容分析的应用环境,如智能监控、增强现实、自动驾驶等领域。具体的目标是提高模型识别最突出物体时的精度以及稳定性,即使遇到遮挡或者复杂背景也能有效运作。 阅读建议:本篇文献提供了详尽的技术细节和支持性实验结果来展示所提出的DPA方法优越之处。因此,在理解和评估该研究成果的基础上可以深入了解如何利用注意力机制提升深度学习模型的效果,尤其是对于涉及时间和空间维度的数据处理任务非常有价值。
新型网络风险和合规义务,日益成为网络治理、风险与合规实践面临的问题。安全和风险管理领导者可以参考本文,实现从被动、专注于合规的方法到主动、进一步自动化方法的转型。 主要发现 不断变化的监管环境和不断扩大的攻击面,使企业机构难以实现网络治理、风险与合规(GRC)与其整体风险管理战略的协调,因此必须推动GRC进行战略性转变。然而,许多安全和风险管理(SRM)领导者难以适应这些变化。 重心在满足监管要求的话,通常会导致被动的网络风险管理和评估方式。因此,网络安全团队与业务部门之间的接触和协作通常较低。 许多网络GRC管理流程缺乏充分且相关的技术自动化,导致资源紧张和控制测试疲劳。
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
基于FATFS系统的STM32F407 SD卡升级Bootloader程序:自动检测与升级流程,stm32f407 SD卡升级 bootloader程序 基于sdio fatfs系统的stm32 bootloader程序 功能简介: 本程序使用fatfs系统读取bin文件。 开机后会自动检测sd卡,检测到sd卡后,再读取固定名称的bin文件,之后会对bin文件进行首包校验,判断该升级包的起始地址是否正确,正确的话,就循环读取bin文件并写入到flash中。 完成升级。 详细流程请看流程图 ,stm32f407; SD卡升级; bootloader程序; fatfs系统读取bin文件; 检测SD卡; 首包校验; 循环写入flash。,STM32F407 SD卡升级Bootloader程序:基于SDIO FATFS系统实现自动升级功能
激光设备上位机源码解析:基于欧姆龙NJplc通讯协议与多种激光器控制实现,激光设备上位机源码+基于欧姆龙NJplc上位机+各种常见激光器通讯控制。 ,核心关键词:激光设备上位机源码; 欧姆龙NJplc上位机; 常见激光器通讯控制; PLC控制。,"欧姆龙NJplc驱动的激光设备上位机控制源码:通用激光器通讯管理"
高效数字电源方案:图腾柱无桥pfc技术,两相交错设计,5G一体化电源批量出货,宽电压输入与高效输出,功率覆盖至kW级别,高效数字电源方案,图腾柱无桥pfc,两相交错,5g一体化电电源上已批量出,输入175-265V,输出42-58V;输出效率97%,2kW 3kW都有 ,高效数字电源方案; 图腾柱无桥pfc; 两相交错; 5g一体化电电源; 批量出货; 宽输入电压范围; 高输出效率; 2kW和3kW功率。,"高效图腾柱无桥PFC电源方案,两相交错5G电平已大批量生产,宽输入范围输出高效率"
COMSOL三维采空区通风条件下的氧气与瓦斯浓度分布研究,comsol三维采空区通风条件下,氧气,瓦斯浓度分布。 ,核心关键词:comsol; 三维采空区; 通风条件; 氧气浓度分布; 瓦斯浓度分布;,"三维采空区通风模拟:氧气与瓦斯浓度分布研究"
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
Python自动化办公源码-07一键往Word文档的表格中填写数据
2025最新初级保育员理论知识考试题库及答案.doc
基于Tent混沌映射改进的麻雀算法SSA优化BP神经网络(Tent-SSA-BP)回归预测MATLAB代码教程:电厂数据预测(含优化对比),基于Tent混沌映射改进的麻雀算法SSA优化BP神经网络(Tent-SSA-BP)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚。 main为运行主程序,可以读取本地EXCEL数据。 很方便,容易上手。 (以电厂运行数据为例) 温馨提示:联系请考虑是否需要,程序代码,一经出,概不 。 ,Tent-SSA; BP神经网络; 回归预测; MATLAB代码; 优化对比; 代码注释; 主程序; EXCEL数据读取; 电厂运行数据。,基于Tent混沌映射与SSA优化的BP神经网络回归预测MATLAB代码(含前后对比及清晰注释)
西门子1200 PLC轴运动控制程序模板——涵盖伺服控制、电缸、通讯及报警功能,适用于装路由器壳子的机器,具备电路图与触摸屏程序,供学习与借鉴。,SIEMENS 西门子西门子1200plc轴运动控制程序模板 介绍:此程序是之前给海康威视做的一台装路由器壳子的机器。 程序有以下: 1):调用轴控制块做的控制3个伺服, 2):1个电缸, 3):用PUT GET块与上下游plc通讯, 4):轴控制块 5):气缸报警块 6):完整的电路图 7):威纶通触摸屏程序 8):IO表 程序块已经在很多个项目上成熟应用,可以直接调用,对于做西门子1200轴控制等有很好的学习借鉴意义。 好好看一遍,有很大的提高作用。 ,SIEMENS; 1200plc; 轴运动控制; 程序模板; 伺服控制; 电缸控制; PLC通讯; 威纶通触摸屏程序; 电路图; IO表,西门子1200 PLC轴运动控制模板:海康威视项目成熟应用示例
内容概要:本文详细探讨了人工智能(AI)对就业市场的深远影响及其发展趋势。首先介绍了到2027年,44%的工人核心技能将受技术变革尤其是AI影响的事实,并提及自动化可能取代部分工作的现象。其次指出虽然某些职位面临风险,但也带来了全新的职业机遇与现有角色改进的可能性,关键在于人类要学会借助AI释放自身潜力并培养软实力,以适应快速发展的科技需求。再者,强调终身学习理念下企业和教育培训须革新教学手段与评估机制,以便紧跟AI进化速率,为个体和社会持续注入新动力。最后提到了教育机构应当加快调整步伐以匹配技术变革的速度,并利用AI实现个性化的教育,进而提升学习者的适应能力和解决问题的能力。 适用人群:政策制定者、企业管理层、在职人员及教育工作者,还有广大学生群体均能从中获得启示。 使用场景及目标:面向关注未来职场动向及教育发展方向的专业人士,提供前瞻性思考角度,助力各界积极规划职业生涯路径或调整教育资源分配策略。 其他说明:本文综合多位行业领袖的观点展开讨论,旨在唤起社会各界共同思考AI带来的变革及对策,而非单方面渲染危机感。
谷歌 Adsense 在线服务条款,首次办理接收谷歌 Adsense 付款时需要提交的一份证明材料(合同/协议),需要提交中文版,已经翻译成中文了。
Python自动化办公源码-14用Python按时间分割txt文件中的数据