Ⅰ 程序员未来前景如何大龄程序员出路在哪里
其实程序员什么35岁就不行了的说法是个伪命题,是人为的强加的致幻剂。虽然软件行业有其特殊性,但是也有其普遍性。其他行业35岁那才真正进入事业快车道,软件行业我认为也差不多。
软件行业不光是写代码,积累到35岁,如果还能写代码那一定是经验丰富,代码水平高,即便继续写代码那也比一般的人好,当然排除那些不思进取不学习的人。
最差带几个人做个项目经理做项目就比年轻仔强很多。不但可以利用自己的经验还可以写关键代码。年龄其实不是问题。
那问题是什么给大家的印象是35岁程序员就没得混了?其实现在很多程序员其实是码农,大家说IT行业是一个知识更新非常快的行业,其实也不尽然 ,更新的是表面,其本质一直没变,一个码农一般都学的是皮毛,就懂一点什么框架 的编程,缺乏学习能力,不懂软件最基本的原理,学校学的那点一旦过时就什么也不剩了,那面临的就是淘汰。
如果是一个了解软件本质,学习能力强的人,语言只是形式,对于一个项目,觉得什么语言合适就用什么语言,你懂一门语言,另外一门语言要不了一个星期就可以编程了,关键还是基础,是原理,是思想和经验。
所以程序员们,不要被别人的致幻剂迷糊了,只要你肯学能进步,喜欢软件开发,年龄一定不是问题,只能越来越吃香。
个人观点,不喜勿喷!也希望大家能够说明自己的观点,大家一起学习,一起进步,营造良好的学习气氛!
大家都知道程序员也分为做什么开发的程序员,比如市面上最流行的Java、C语言、C++、python、PHP等等开发程序员,未来的发展是不一样的。
其实,我觉得未来发展前景的话,要找天花板较高的语言来作为基础学习,慢慢的把自己的架构思维给建立起来。
等你拥有自己的架构思维之后,其实语言就是一种工具而已,所以一定要清晰规划自己该学习什么语言,该怎么样来学,我在这里推荐Java语言,因为Java语言的学习就能够帮你初期建立这种思维方式,还有Java语言的独特性,证明了它的优越性!也证明了它的天花板比其它语言要高,当然上手难度也比较高,自己要有一个清晰的认识,
关于大龄程序员出路,我这里得多说一嘴!
一提到大龄程序员,大家第一时间就会想到,35岁中年危机。
不可否定,35岁这个词确实很扎心,也是许多程序员的恐惧所在,但是,请大家不要惊慌,要给自己打一针强心剂。
30而立相信大家都听说过吧?但是也不然,也看个人的机遇和努力!程序员也是一样!
这里就说到了职业规划的重要性,从22岁毕业实习再到30岁这八年时间,处于一段技术磨合和提升期,也就是技术的沉淀,沉淀到了一定的时间之后,就要考虑管理经验的提升,随着年龄的增长,身体上、思想上、精神上都会出现惰性,当然也跟自己的运动有关系,要加强自己对身体的锻炼,每年做体检!
30岁之后,有的人考虑单飞,自己找合伙人创业,自己开公司求发展;有的人继续按部就班,沉浸在996的世界之中;有的人不断地提升自己的技术能力和架构思维,在大厂中继续深造,让自己变得更有价值!
不知道你们是属于哪种,但是,最重要的还是个人的思维!希望自己能够好好考虑一下,从自己下手,彻底的改变自己,不然淘汰是迟早的事儿。
三点:改变自己的思维;加强自己锻炼;做好职业规划!
以上个人观点,不喜勿喷!欢迎大家一起讨论。
本人作为程序员,曾经也为这个问题困扰着。程序员在35岁就会面临各种问题,身边也有这样的例子,上一家公司有一个同事,40岁了还在写代码,他的工资不高。后来项目预算超标了,他也就成为了被裁员的对象。那是我第一次感觉到了年龄越大而带来的危机。
但是话有说回来了,40岁了还在写代码。只能说明了他对自己没有明确的职业规划或者个人的不思进取造成的。IT行业有他的特殊性,第一个特殊性就是知识更新很快,第二个就是很注重职业规划。
所以要想不被淘汰,要么积极学习没拥有很厉害的技术,成为一个领域的技术专家。要么走管理路线,在平时上班的时候就要注重这方面的培养,首先要在工作中锻炼,还有考取一些专业的证书来给自己增加竞争力。
当然也有的选择自己创业,这是最好的结果。所以,在当下最重要的是怎么给自己规划。多考虑这方面的问题,要是想通了也就没有那么的纠结了。
我是个IT新人,程序员的未来前景毫无疑问是不可小看的。世界逐步进入5G时代,对于程序员来说即是挑战也是机遇,5G时代到来必将会带了新的技术升级,也必将淘汰旧的技术,所以说对于程序员即是挑战也是机遇,只有不断地学习你才能把我好这一机遇,雷军说:“站在风口上,猪都能飞”。但首先你得是有准备的猪 。
对于大龄程序员,我是这样子想的,等我年龄大了,不可能一直处在代码一线,要么转管理岗位,如:技术主管,产品经理,项目经理,有能力的做个技术总监。
要么转行,我朋友常常给我开玩笑说,等年龄大了,我们去送外卖吧!自由自在,月入过万
要么拿出积累多年资金、人脉开始创业
30+程序员一枚,刚好可以回答这个问题。
先简要说下我对这两个问题的答案:
下面,我们就来一一解释。
程序员是有前(钱)途的职业
首先是 金钱 方面。在所有行业里面,it行业是比较有前(钱)途的职业,我想这句话可能极少有人反驳。当程序员相对来说能挣钱,即使这些钱是需要加班加点挣来的,但是总归来说提供了普通人一个挣相对高薪的途径。即使在北上广深,当程序员也相对其它行业更容易买车买房,站稳脚跟。另外,每年无数的大专本科生上培训班,当程序员也很能说明情况。
其次是 行业发展 方面。程序员从事的是it行业的工作,是一门用技术改变生活的行业,it技术已经应用于方方面面,这也无形中给程序员提供了更广阔的用武之地。
关于大龄程序员的问题,其实我觉得更应该说是 一个普通人中年危机的问题 。因为年龄大了,薪资相对新人更高,加班能力更差是大部分行业都会遇到的问题,只是这个问题在it行业放的更大了。网络当中很多所谓的35岁问题,一部分是来自于程序员的自嘲,一部分情况其实是因为部分大龄程序员拿惯了高工资,没有做人生规划,技术没有提升,然后又遇到了中年危机后无所适从罢了。可能有人会说老师,医生等行业会随着年龄增加而成长什么的,这个确实有其相关性。但是程序员毕业就拿高薪,其它行业可能要积累很多年(这里说的是平均,个例不探讨)。
至于出路,我认为出路有很多:
当然,我这里说的大龄程序员指的是正常的程序员,不是那种天天混混日子,突然一裁员发现自己啥也不会的人,我觉得这种人基本上是很难有出路的。
关注令狐一冲,关注区块链和IT技术!
在民企,大龄程序员确实不好混了。华为裁掉35岁以上的普通员工,就说明这些大公司只需要年轻人,加班苦干。年纪大了,拖家带口的,加不动班了,就劝退。这种情况说明这种工作都是些按部就班的,没什么创造性的工作,不需要很多经验。
外企的情况会好一些,50多岁的头发花白的程序员依然在工作,他们看重的是工作的积累,经验。公司也把这些人当做公司的财富。国内因为抄袭太严重,不太注重知识产权,导致程序员的地位并不高。
大龄程序员要在工作之余,发展一些副业,多学些技能,考一些证书,做一些理财投资等等。保证自己万一被裁员,不至于没有收入陷入焦虑。
这问题问的,大龄农民工出路在哪儿?
所以了,人口总量下滑,人力资源不足,大龄程序员总是有人要的,只不过不同水平的去向、待遇不同罢了,这跟年龄、行业没关系,哪个年龄哪个行业都一样有分化。
首先,程序员这个职业不再是个香饽饽,这一点各位程序员必须要摆正心态!随着人工智能在编程方面的运用以及程序员数量的大规模上涨,未来大多数程序员的待遇会跟 社会 平均工资看齐,短时间依然会有优势,但随着时间推移,这种优势必然转为劣势。为何?供需决定价格,以前供不应求当然价格高,未来供大于求甚至每个人都会编程,自然没啥议价空间。而那些没人愿意干的脏活累活自然成为高收入岗位。
其次,许多程序员会成为领导或者老板,毕竟 社会 需求在,有大需求也有小需求,对用户需求敏感的人自然能够抓住机会自己创业。
再有,某些高收入程序员会跨界进入别的行业,毕竟有了资本有了 社会 经验,很多事情都是相通的。
最后,大多数冲不上去也没钱或没想跨界的,继续待在公司里搬砖,虽然加班比不上年轻人,但毕竟经验丰富,码代码的速度和质量是有的,只不过工资持平奖金下降不忍也得忍啊,毕竟为了生活,别的很多职业人家的工资本就是好多年没变化,程序员也不会例外,之前例外是因为供不应求。
有人说程序员是脑力活,跟农民工不能比,六十岁农民工还能干活,六十岁程序员脑子怎么跟得上?作为过来人,笔者可以向各位保证:越大的团队,里边需要动脑子的人越少,大多数大厂的程序员混到最后都是干的力气活,根本不需要脑子,这就是熟练度。至于这是好是坏,仁者见仁智者见智。
看到这个问题,作为一个资深的程序员和管理者,我认为我有资格来回答这些问题。无论你是因为爱好编程走上程序员这条路,还是因为看见程序员的高薪加入这个行业。既然有这个疑问,就说明你已经有了职业焦虑:程序员真的能一直做下去吗?是不是35岁就面临着中年危机?单靠写代码能走向管理者岗位吗?大龄程序员的出路在哪里?我结合我自己做10多年程序员的经验(担任过高级工程师、数据架构师、数据负责人和数据总监等岗位),讲讲大家都十分感情去的问题。
一 程序员能干到退休为止吗? 1.1 从初级程序员开始,不要错过的发展路径首先,程序员们关心的都是自己在这个行业能干多久,而不是在某个公司待多久。尤其是现在行业内卷非常严重,几乎不可能让你在一个公司工作一辈子;因为,行业变数很大,说不定哪天就裁员了,而且你正好在裁员名单中。针对这种情况,我的建议是:
在自己30岁之前,一定要不断地丰富自己的知识库,让自己的能力保持在行业的头部。
① 初级->中级
这个阶段主要是学习,在很少依赖其他人帮助的前提下,能够保质保量的完成手上的工作。在这个时期,自己多找几个师父,由资深的程序员对你做技术路线的指导。这样即可以少走弯路,又可以快速地学习和掌握前沿知识。
② 中级->高级
这个阶段主要是从公司现有的技术架构中,提炼出高难度、有价值的内容。并能够用批判的眼光看待这些事,总结出哪些做得好,哪些做得差。如果是你来做,你会怎么做?
可以从领导对你的信任角度上,看出来你在这个阶段成长的好坏,如果让领导和团队成员对你非常信任,说明你这个阶段是成功的,可以方向的走向第三个阶段。
③ 高级->资深
这个阶段至关重要,涉及到你是走专家路线还是走管理路线,这是一个转折期。如果自己擅长沟通和乐意交流,在这个阶段多观察你的直属领导是怎么安排工作的,他的工作方式有哪些缺陷,如果是你你会怎么做,需要不断地总结归纳管理方式方法;除此之外,在技术方面,必须要学会复盘,并且愿意复盘,而且是愿意看别人复盘。复盘是对程序员帮助最大的环节,一定不要认为复盘是浪费时间。
如果你想走专家路线,那么就要保持头脑的清醒:你做的内容是纯技术还是业务+技术。如果是纯技术,那么走专家路线是没有问题的。否则,千万不要走专家路线。
1.2 消除常见的误解,包括【只能吃青春饭】一定要消除青春饭的这种不良的意识,为什么呢?因为管理岗也是技术出身。从程序员编程管理人员,也能够年薪百万。如果你不是科班出身,怎么能做好一个管理者呢?一个管理者需要的技能很多,需求分析、目标设定、资源协调、团队协调和赋能培训。管理者不是想想就能做到的,需要既懂技术又懂业务,同时还要懂管理,更要会报告,会表功,甚至会做客户的公关,智商情商双双在线。
如果你练就了这一身本事,还能是青春饭吗?是不是感觉到自己有很多内容要学习,要修炼。
二 我适合做管理还是技术 2.1 并不是说管理者一定会脱离技术作为程序员,其实人到中年,就要面临着转型的挑战。如果一直写代码,你和20岁出头的小伙子去竞争,就会累得头破血流。人无远虑必有近忧,就职业发展规划来说,应该转型为架构专家、算法专家,研发主管或者项目经理。
管理者不是必须要懂技术,管理本身就是一门学问,职业经理人就是依靠管理吃饭的。管理的真正核心是利用资源,知人善任,自己不懂技术可以找一个懂技术的人。经常看见公司的高管在变动,他们在技术、专业方面不一定有多精通,但是具备了经营管理的能力,一样可以在新的领域取得成绩。
2.2 不要做自己不擅长的事,不盲目追求高薪追求高工资,带来的是钱,也是一种成就感。但是一味想通过跳槽来升职加薪,是最不可取的。可以负责任地讲,在你的职业生涯的头5年,这种做法影响不大。但是在5年以后,你会发现自己没有沉淀和积累,因为换工作也是非常耗精力的。
不要看见别人做了管理者,自己就认为可以做。自己一定要认清楚自己的能力范围,在能力达到时,并且自己愿意转型时,值得一搏。
三 除了写代码,你还有很多事情要做 3.1 学会互联网思维,多渠道发展,多种经营有人会说,我现在已经35+岁了,我还是普普通通的程序员,没有一技之长,也不懂管理。我该怎么办呢?互联网时代给了我们很多创业的机会,比如可以做自媒体,直播带货,自己开一个小型的培训公司。
最好是在自己年轻的时候,就考虑过有一天会被IT行业淘汰,那我应该去做什么呢?要着手准备什么呢?
3.2 掌握跨界知识,成为跨界人才我还是那句话,自己行业内的东西对于自己来说,是最简单的。平时多和其他行业的人交往,多听、多学,有可能他的领域就是你发光发热的地方。程序员有着执着、冷静、聪明的头脑,做任何事情都不会比其他人差,主要是选好方向。
优秀的程序员不论年龄大小,前景都非常好!巨大的市场需求决定了优秀程序员的紧缺性,在数字化时代,已经没有哪个行业会离开软件的支撑,这个趋势在可预见的未来不会改变。
一般来说,人会随着年龄的增长,工作的时候精力会跟不上,但从另一个角度讲,年龄大了,经验就会更丰富,尤其对于像程序员这种知识型工种,只要他肯学习,跟上技术的进步和变化,他就不会落后,就会继续有用武之地。
软件技术的变化也是非常大的,新的框架、新的开发环境、新的编程语言不断出现,程序员也要注重自身的学习和修养,为断适应互联网+时代的技术发展,只有这样,程序员才会永葆青春。
当然如果已经功成名就,账务自由,选择别的职业也挺好,人各有志,看个人发展和兴趣爱好!
Ⅱ 关于数据库程序员,我应该具备哪些技能
DBA, 通俗点说就是数据库管理员, 所以, 数据库的知识肯定是必不可少的:
对数据库的操作而言, 无外乎SQL语言, 因此, SQL语言是基础中的基础
DBA一方面要根据需求在数据库中实现, 另一方面要指导非数据库专业人士在数据库中完成他们想实现的东西, 如果实现不了, 或者非专业人士能实现但你不能实现, 那可是丢人到家.
所以, 对于SQL语言来说, DDL和DML都要掌握的, 而且不能仅限于一般的掌握程度, 不能说公司的业务不需要临时表, 你就连临时表怎么用, 有几种, 有什么区别都搞不懂.
能实现需求, 只能说明你是对数据库有些了解了, 对于同一种需求, 你能列出多种方法, 并能评判其中的优劣(不是根据行规或者大家的习惯), 这样才有些DBA的架势. 这就需要你了解数据库架构方面的知识(架子搭不好, 房子再漂亮也没有用), 知道SQL的一些底层知识, 比较, 大家都知道索引对提高查询性能十分重要, 但过多的索引也会对数据处理造成负担, 如果你不了解索引的一些原理及sql使用索引的原理, 你如何能合理地建立索引呢?
能够有效地实现需求了, 接下来就该维护了. 再好地数据库架构, 也要经常维护和保养, 比如, 原来很有效的索引, 因为索引碎片多了, 读取性能就差了, 因为业务的变化, 有的索引该删除了, 重要的数据, 是否在不该丢的时候绝对不会丢了, 敏感数据, 是否会被不该访问的人看到了. 这一系列的东西, 除了要调查/分析/并制订出一套完整的方案外, 还需要相关的知识来实施这套方案,
日常维护, 问题少不了会遇到, 这些问题除了SQL的问题外, 还有是跟系统或者网络相关的, 甚至是程
序中出现的问题需要调试, 所以操作系统+网络+程序设计语言, 多少得懂点
为了管好数据库, 特别是管理好多台服务器, 多少你还得写些工具来辅助你完成任务.
从上面来说, DBA需要的技能大致是:
@1. 数据库知识(熟练级别)
SQL语言(DML, DDL, 备份/恢复/管理), 数据库结构知识, 数据库运作原理
@2. 熟练至少一种数据库, 了解其他数据库(有一定应用能力)
很少有不与其他类型数据库交互的数据库, 如果你只熟练一种数据库, 当需要与其他数据库交互时, 你住往会无从下手
@3. 综合能力(有一定的应用能力)
程序设计能力, 操作系统, 网络, 安全
Ⅲ 如何成为优秀的程序员
保持健康
编程之外的爱好
持续学习
正确应对犯错
不要囿于角色
展示你的创意
刻意练习手速
首先要说的当然是健康,脱离了这个本钱,一切都无从谈起。
久坐、不运动、睡眠不足、不注意及时补充水分、长期的伏案工作等都会对健康造成很大的影响。
研究表明,长期保持同一姿势(不论坐着还是站着)对身体都有不同程度的害处。这几年很流行的“站立式办公”也是一样,如果你白天站立时间过久,会对膝关节造成较大的压力,同样会损害健康。比较推荐的方式是,写30-40分钟代码就起来走一走,喝杯水,远眺一会,跟同事聊聊天。
我知道,作为程序员我也常遇到那种写代码写High了连厕所也不想去的时候。不过为了长远的健康,还是要养成良好的习惯。
戒除不良习惯
除了长时间保持同一姿势之外,许多程序员还有各种不良习惯。比如:
吸烟
喝酒
嗜糖(碳酸饮料,其他高糖饮料)
一些建议
有规律的做一些运动可以缓解颈椎、腰椎的不适,可以加快新陈代谢的速度,消耗多余的、会沉积下来的能量。比如比较容易接触到、也容易上手的运动:
瑜伽/普拉提
乒乓球
跳绳
培养一个编程之外的爱好
如果让不同的人对程序员打标签并排序,宅一定会排在前三。在任何的聚会上,程序员总是很容易被识别出来的:聪明、戴眼镜、话不多、略显闷骚、聊天容易冷场等等。也难怪,长期钻研技术,沉浸在非黑即白的二进制世界,爱刨根问底,这样很容易把天聊死。
我建议新手程序员可以找一个编程之外的爱好,一来可以拓展自己的社交圈,周末可以有个不一样的过法(而不是宅在家里写代码);二来可以帮助你成为更好的程序员。
一些建议
学习一项与编程无关的技能,比如:
乐器(如吉他,架子鼓)
绘画(素描,水粉,水彩等)或者书法
制作美食
某一项武术(拳击,泰拳,空手道等)
这些看似毫不相干的爱好可以帮助大脑休息。另外需要注意的是,你无需真正成为某一项爱好的专家,不要有额外的压力:担心演奏不好、没有绘画天赋等等。没关系,它只是一个爱好而已。
持续学习
软件开发是一个需要终身学习的行业(其实如果你不想做那种混吃等死的人的话,基本上每个行业都是这样)。
程序员被裹挟在技术演进的洪流中,不能自已。作为程序员,你不但要非常扎实的掌握基础知识(操作系统原理,计算机网络,数据结构,算法等),还需要有非常强的快速学习能力,以及愿意不断去学习的态度,而后者可能更重要。
读书
通过视频/文本教程等学习新技术
建议新手每天抽出一个小时来读书,周末可以多读一些。ThoughtWorks有个读书雷达,是一个很不错的书单,包括了很多的经典书籍。读书之外,还可以在线学习一些教程,比如Tutorialplus和Egghead等,都非常值得经常去看看,如果有比较新鲜有趣的技术,不妨自己亲自动手试一试。
正确应对犯错
斯坦福大学的Carol Dweck教授通过一些实验和后续的研究提出了很有名的心智模型(Mindset)理论,简而言之,她发现不同的人们对待失败这件事有着完全不同的态度:有一类人害怕失败,失败后会变得不能接受,而且容易否定自身并影响进一步的尝试,Dweck教授称这类人为固定型思维模式(Fixed Mindset);而另一类人则“喜欢”失败,视失败/犯错为学习的一种方式,他们更关注过程而不是结果,Dweck教授称其为成长型思维模式(Growth Mindset)。
Dweck在演讲中提到,通过向成长型思维模式的转变,关注从失败/犯错中学习,人们的潜力可以得到很好的发挥,也更容易获得理想的结果。
很多新人不敢尝试,又不愿意让同事知道自己的不足,这样的态度会导致他更倾向于选择更容易的工作,这样就可以避免暴露自己的不足,久而久之就会形成恶性循环。其实企业对于新人的期望一般都不会很高,对于新人犯错也是有容忍度的,新人要勇于承认自己的不足,勇于尝试新的事物,勇于犯错并从中学习。
承认自己的不足在刚开始是一件很困难的事情,不过在尝试过几次之后,你就会发现其实也没有那么恐怖。你慢慢会喜欢那种不带任何包袱的、全身心聚焦在学习本身上的快乐。
不要被角色限制
作为程序员,既可以往上游去探索需求的梳理,用户痛点的分析,业务价值的挖掘,又可以向下游如测试的编写,产品的发布,运维监控。视野开拓了,才有可能对产品有整体的了解,也更容易在程序员这个角色上做的更好。
作为新人,能在自己擅长的方面发挥长处当然很好,但是如果仅仅局限在自己擅长的方面则未免太过单薄。如果你在前端非常有经验,那么除了将这些经验和知识分享给别人之外,你还可以向别的角色学习他们擅长的技能,比如向测试学习自动化、SBE等;向后端学习高性能,高可用服务器的技术、数据库设计及优化、API设计等;向DevOps学习运维技能,自动化provision技能等等。
这些不同的技术不但可以让你的视野更加开阔,也可以为自己以后尝试不同的角色和机会打好基础。
展示你的创意
将一个创意、复杂概念或者想法简洁而准确的描述出来是一个非常重要的能力。我见过太多的程序员都是沉默寡言,讲东西声音又小,又紧张,即使有很好的想法也难以完整的表述出来。
不过这个能力是可以锻炼的,只需要借助原型的制作就可以了:
画图
静态原型
纸上原型
俗话说,一图胜千言。你只需要学习一些简单的绘画技巧就可以大大提高自己的表述能力。
通过用静态页面(HTML/CSS/JS),mock数据等方式,快速的将创意表达出来是程序员的一个优势,你可以用静态数据、数据文件等方式,通过一些简单的代码快速的作出可以做交互的原型,然后通过和用户不断确认的方式来渐进增强,这种做法可以避免太大的浪费,尽早的将客户价值交付。
原型并不局限在草图,可以工作的静态页面,还可以是一个清晰简洁的演讲。基于PPT的原型还可以用来分析目前产品痛点、对比方案的优劣、展示自己的看法等等。
手速
关于程序员是否要求很快的手速是一个颇具争议的话题。支持者认为这属于基本功,每个程序员都应该打字都很快;反对者则认为程序员的价值在于思考并解决问题,追求速度快,那还不如招个打字员。我个人的观点是,好的程序员应该有很快的手速(包括打字的速度,但不局限于此)。
对同一个页面的不断练习听起来是在做重复工作,其实可以联系到很多的内容:
命令行的熟悉程度
快捷键的使用
搜索引擎的使用
Stackoverflow的使用
当你真的可以熟极而流的时候,你才有时间来考虑如何优化,比如如何抽取模板工程(这样下次做同样的事情就会快很多),如何精简DOM结构,如何用命令行工具来帮助自己提速等。手速是大前提,没有速度,一切优化都是脑海中的意淫,无法真实落地。
总结
要成为一个厉害的程序员,首先当然是要有一个好的身体。此外需要培养一个编程之外的爱好,这样可以让你活的像一个正常人(而不是传统的工科书呆子)。程序员是一个需要不断学习,不断充实的职业,在学习的过程中,英文能力可以帮助你学的更快,更有效,另外正确的应对学习过程中必然会犯的错误,并将每次错误都当成学习的机会。
Ⅳ java程序员在面试中被问到如何配置多数据源以及如何配置多数据源下的分布式事务,该怎么回答看清再做答
你好,我来先回答你的第一个问题:
通常多数据源,在spring中配置如下,如果你想切换环境ENV 的值,在property中
<bean id="placeholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true"></property>
<property name="" value="true"></property>
<property name="nullValue" value="NULL"></property>
<property name="locations">
<list>
<value>jdbc.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="com.spring..JDBCConfig">
<property name="driverClassName" value="${${Env}.jdbc.driverClassName}"></property>
<property name="url" value="${${Env}.jdbc.url}"></property>
<property name="username" value="${${Env}.jdbc.username1}"></property>
<property name="password" value="${${Env}.jdbc.password}"></property>
</bean>
jdbc.properties
*****************************
Env=PROD
jdbc.driverClassName=${${Env}.jdbc.driverClassName}
jdbc.url=${${Env}.jdbc.url}
jdbc.username=${${Env}.jdbc.username}
jdbc.password=${${Env}.jdbc.password}
######### JDBC Configuration for DEV Environment ###############
DEV.jdbc.driverClassName=com.mysql.jdbc.Driver
DEV.jdbc.url=jdbc:mysql://localhost:3306/devportal
DEV.jdbc.username=DEVuser
DEV.jdbc.password=DEVpwd
######### JDBC Configuration for UAT Environment ############
UAT.jdbc.driverClassName=com.mysql.jdbc.Driver
UAT.jdbc.url=jdbc:mysql://localhost:3306/UATportal
UAT.jdbc.username=UATuser
UAT.jdbc.password=UATpwd
########## JDBC Configuration for PROD Environment ############
PROD.jdbc.driverClassName=com.mysql.jdbc.Driver
PROD.jdbc.url=jdbc:mysql://localhost:3306/portal
PROD.jdbc.username=root
PROD.jdbc.password=admin,
我这里有三套环境,分别是DEV,UAT和PROD,这种方式可以灵活切换的。
我再回答你的第二个问题:
还请你去http://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/transaction.html这里看下,很详细,不过是英文的哦
Ⅳ 如何学好程序员必知必会的数据结构
大话数据结构
《大话数据结构》为超级畅销书《大话设计模式》作者程杰潜心三年推出的扛鼎之作!以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。
通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。
趣学数据结构
本书基于C++语言编写,从趣味故事引入算法复杂性计算及数据结构基础内容,涵盖线性结构、树形结构和图形结构,包括链表、栈和队列、树和图的应用等。本书内容还涉及数据结构的基本应用(包括各种查找、排序等)和高级应用(包括优先队列、并查集、B-树、B+树和红黑树等)。
通过大量图解将抽象数据模型简单通俗化,语言表述浅显易懂,并结合有趣的实例帮助读者轻松掌握数据结构。
Python数据结构与算法分析
了解数据结构与算法是透彻理解计算机科学的前提。随着Python日益广泛的应用,Python程序员需要实现与传统的面向对象编程语言相似的数据结构与算法。
本书是用Python描述数据结构与算法的开山之作,汇聚了作者多年的实战经验,向读者透彻讲解在Python环境下,如何通过一系列存储机制高效地实现各类算法。通过本书,读者将深刻理解Python数据结构、递归、搜索、排序、树与图的应用,等等。
图解数据结构:使用 C++(其他语言版本也有)
这是一本以C++程序语言实战来解说数据结构概念的教材。全书内容浅显易懂,利用大量且丰富的图示与范例,详解复杂的抽象理论,从最基本的数据结构概念开始说明,再以C++工具加以诠释阵列结构、堆栈、链表、队列、排序、查找等重要的概念,引领读者抓住重点轻松进入数据结构的学习领域。
《图解数据结构:使用C++》内容架构完整,逻辑清楚,采用丰富的图例来阐述基本概念及应用,有效提升可读性。以C++程序语言实现数据结构中的重要理论,以范例程序说明数据结构的内涵。强调边做边学,结合下载文件,给予最完整的支援。
以上就是关于学好数据结构的书单分享,希望对大家有所帮助,想要了解更多相关内容,欢迎大家及时关注本平台!
Ⅵ Java程序员如何转型做大数据
1、技术日渐成熟,应用空间得以拓展
大数据技术,最早于1980年被首次提及,却在近几年才获得突飞猛进的发展。相较于几十年前神经网络算法捉襟见肘的计算能力,如今处理器对大规模数据的高速处理能力无疑发挥了关键性的作用。借助于处理器的高性能,使我们短时间内完成PB 级数据的机器学习和模型训练成为可能,由此为高度依赖深度学习的图像、语音识别产品的快速迭代奠定基础,大数据应用空间得以拓展,也由此催生了提供相关产品与服务的技术公司。
2、重视数据资产,数据挖掘已成必然
现代信息技术使每日产生的数据量呈指数级增长,企业发展再也无法回避对数据价值的挖掘与利用。电商平台利用画像做个性化推荐,互联网金融公司利用高危识别技术管控金融风险,滴滴出行利用交易数据通过实时定价优化利润……这些都是对大数据价值的发掘和利用。随着数据资产意识的加强,数据挖掘也将获得越来越多结合具体行业场景的重视。
3、技术催生业务新模式,蕴含创业新契机
大数据产业链,催生出针对不同版块提供产品和服务的业务组合新模式,无论是利用推荐算法做内容服务的今日头条,还是基于数据整合提供监测服务的 TalkingData,或者是提供底层架构支持的阿里云,无不是发觉了大数据产业链条所蕴含的创业先机。
大数据创业,时至今日热度不减,虽难出BAT那样巨头独大的局面,其提供的相对公平的竞争机会,依然在吸引着新的创业公司加入。
4、市场供不应求,岗位挑战空间大
翻看大数据相关招聘岗位,一方面是供不应求的招聘局面,另一方面是腾讯、华为等大牌互联网公司开出的诱惑薪资,都让普通岗位的程序员跃跃欲试。
再加上这些岗位相比于传统的软件工程,有更高的挑战空间和更大的难度,自然引得更多人才进入到这个领域。
大数据相关岗位有哪些?
1. 偏技术的“算法工程师”
利用算法手段,构建机器学习模型,解决诸如“人脸识别”、“支付风险管控”等高难度问题。它往往既需要工程师在具体问题上有足够的专注力,也需要对相关的算法有足够深度的了解。
2. 偏业务的“数据挖掘工程师”
结合计算机知识,重点攻克复杂业务的算法化和模型化难题。与算法工程师的要求不同,它往往不需要工程师在算法上探索得足够深入,却对知识的广度和技能的交叉度有较高的要求,还需要工程师具备相当和快速的业务理解能力。当然了,对数据的高敏感性也必不可少。
技术 Leader 最想要什么样的人?
1、最好,你是个独当一面的全才
基础条件:扎实的计算机基础、逻辑能力、英文等素质
保障条件:聪明、学习能力强
加分条件:大规模集群开发经验;上层数据应用优化经历;熟悉聚类、分类、推荐、
NLP、神经网络等常见算法;会数据处理,还熟悉聚类、分类、推荐、NLP、神经网络等各种常见算法……
2、退而求其次,有配合团队的长板优势
全才难得,退而求其次,针对不同岗位吸收具有不同特长的人才,以追求团队整体配合的平衡,也不失为一个策略。
计算机视觉领域的大数据公司,往往需要自己的团队中同时具备如下特长的成员。比如精通算法的人才:把图像识别相关算法模型调整到极致;工程实力型人才:高性能实现训练好的算法模型,或者帮团队搭建一整套视频图像数据采集、标注、机器学习、自动化测试、产品实现的平台。
即便同一算法工程团队内部,成员的技能侧重点也要合理搭配,以互为补充。比如,有人专注核心算法研究,就要有人擅长业务分析,专注业务算法模型的实现。
因此,对于想转型大数据的普通程序猿来说,梳理清楚自己现有技能对于新团队的价值非常重要,这是促使新团队决定吸收自己的关键。比如,发挥硬件和底层系统工作经历在算法高速实现上的优势,一旦通过自身擅长的技能切入新团队之后,就有了更多横向发展的机会,帮助自己在大数据相关领域建立更强竞争力。
3、相较当前技能水平,扎实的基础和成长空间更被看重
当前技能水平好比是术,而扎实的计算机基础则处于道的层面,诸如Spark等工具性知识通过后期学习便能轻易掌握,而如果缺少了C++/Java基础想进步却绝非易事。比如,如果算法、数据结构比较强,编程语言上对 C++ 理解较深入,在应用层的学习上,就可能会比其他人快很多。
有人将程序猿能力抽象为一个金字塔模型,虽然对计算机语言的精通是每个工程师都注重的能力,但越基础的素养越蕴含了更多的发展潜力。相比单纯苛责当前技能,能利用基础素养胜任一部分基础工作,然后通过1-2年锻炼接受更复杂问题的程序猿,反而更受企业青睐。
TalkingData 大数据招聘负责人曾直言道,相比于对 Spark 了解更多的人,他们更愿意招收那些 Java 学得好的人。因为 Spark 的接口学习起来相对容易,但是要想精通 Java 是一件很难的事情。如果把 Java 或者 C++ 学透了,那么对计算机技术的认识将很不一样。
转型大数据,要点归纳
1、重视基础
2、发挥专长
3、准备充分
4、首选公司内部转岗
Ⅶ 作为一个Java程序员,该怎么转行做大数据分析师
我也做过好多年Java,去年开始也接触了些大数据的架构。跟你情况类似。我的观点是你可以去动手搭建一下,玩玩,其实并不像你想象的那样高深莫测。都是些工具,我不太喜欢学如何用这些工具,只要能解决我要解决的问题,去用就是了。如果工具的实现感兴趣就去看看代码。工具本身怎么用就是个fact,只是知道和不知道的区别。不要觉得做Java就比别人低一等。你一样可以做的很出色。会用那些大数据工具也并不代表能力有多强