IT行业均薪领跑7大传统行业
去年各行业月收入对比
今年IT各技术方向行业平均薪资
IT培训网面向所有课程学员提供先就业后付款学习方案,保证学员稳定就业,可谓0学费!免除学习压力。
正文:
程序员在技术上最容易踩的 3 个坑!看看你踩过了几个了?
今天跟大家聊的话题非常有用,程序员如何避开职业发展中的巨坑?
踩中一个坑会让你多走 2 年弯路!
踩中两个这辈子你可能与架构师就无缘了!
这三个都是大坑,文章不长,看完必有收获~
1、忽视基础知识
基础知识包括数据结构与算法、操作系统、计算机网络、数据库原理等。
这些知识对于你成长为高级程序员/架构师就是地基,毫不客气地说,地基打不好,这程序员之路年纪越大越难走。
为什么呢?因为技术底子太差,你的技术高楼大厦不可能建成,太难的事做不了,可替代性太强~
2、深度优先而非广度优先
有些程序员比较好高骛远,什么技术都想学,什么技术都学不精,最后搞的什么都懂一点,但是都不深,殊不知没有深度的广度啥也不是!
建议学深某一门语言/框架之后再考虑别的,也就是深度优先,一般来说至少7~8年。
这样的长期主义,坚持下去,十年磨一剑,不成功都难!
3、想用一门编程语言,解决所有问题
本质上每一门编程语言适用的场景不一样,比如 Java 擅长处理企业复杂业务的后端开发、Python 适合数据分析和数据挖掘、脚本开发等,
而你想用一门你熟悉的语言去解决所有问题,那就是拿着锤子看什么都是钉子。
这种做法是非常不可取的!
也充分说明你对事物的观察和分析还停在表面,
有时候,你可能会看着某行代码目瞪口呆,心里想:这行代码为什么会出错?
今天跟大家一起聊聊99%的Java程序员踩过,或者即将踩的6个坑。
1. 用==号比较的坑不知道你在项目中有没有见过,有些同事对Integer类型的两个参数使用==号比较是否相等?
反正我见过的,那么这种用法对吗?
我的回答是看具体场景,不能说一定对,或不对。
有些状态字段,比如:orderStatus有:-1(未下单),0(已下单),1(已支付),2(已完成),3(取消),5种状态。
这时如果用==判断是否相等:
Integer orderStatus1 = new Integer(1);Integer orderStatus2 = new Integer(1);System.out.println(orderStatus1 == orderStatus2);
返回结果会是true吗?
答案:是false。
有些同学可能会反驳,Integer中不是有范围是:-128-127的缓存吗?
为什么是false?
先看看Integer的构造方法:
它其实并没有用到缓存。
那么缓存是在哪里用的?
答案在valueOf方法中:
如果上面的判断改成这样:
String orderStatus1 = new String("1");String orderStatus2 = new String("1");System.out.println(Integer.valueOf(orderStatus1) == Integer.valueOf(orderStatus2));
返回结果会是true吗?
答案:还真是true。
我们要养成良好编码习惯,尽量少用==判断两个Integer类型数据是否相等,只有在上述非常特殊的场景下才相等。
而应该改成使用equals方法判断:
Integer orderStatus1 = new Integer(1);Integer orderStatus2 = new Integer(1);System.out.println(orderStatus1.equals(orderStatus2));
运行结果为true。
2. Objects.equals的坑假设现在有这样一个需求:判断当前登录的用户,如果是我们指定的系统管理员,则发送一封邮件。系统管理员没有特殊的字段标识,他的用户id=888,在开发、测试、生产环境中该值都是一样的。
这个需求真的太容易实现了:
UserInfo userInfo = CurrentUser.getUserInfo();if(Objects.isNull(userInfo)) { log.info("请先登录"); return;}if(Objects.equals(userInfo.getId(),888L)) { sendEmail(userInfo):}
从当前登录用户的上下文中获取用户信息,判断一下,如果用户信息为空,则直接返回。
如果获取到的用户信息不为空,接下来判断用户id是否等于888。
如果等于888,则发送邮件。
如果不等于888,则啥事也不干。
当我们用id=888的系统管理员账号登录之后,做了相关操作,满怀期待的准备收邮件的时候,却发现收了个寂寞。
后来,发现UserInfo类是这样定义的:
@Datapublic class UserInfo { private Integer id; private String name; private Integer age; private String address;}
此时,有些小伙伴可能会说:没看出什么问题呀。
但我要说的是这个代码确实有问题。
什么问题呢?
下面我们重点看看它的equals方法:
public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b));}
equals方法的判断逻辑如下:
该方法先判断对象a和b的引用是否相等,如果相等则直接返回true。
如果引用不相等,则判断a是否为空,如果a为空则返回false。
如果a不为空,调用对象的equals方法进一步判断值是否相等。
这就要从Integer的equals方法说起来了。
它的equals方法具体代码如下:
public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false;}
先判断参数obj是否是Integer类型,如果不是,则直接返回false。如果是Integer类型,再进一步判断int值是否相等。
而上面这个例子中b是long类型,所以Integer的equals方法直接返回了false。
也就是说,如果调用了Integer的equals方法,必须要求入参也是Integer类型,否则该方法会直接返回false。
除此之外,还有Byte、Short、Double、Float、Boolean和Character也有类似的equals方法判断逻辑。
常见的坑有:
Long类型和Integer类型比较,比如:用户id的场景。
Byte类型和Integer类型比较,比如:状态判断的场景。
Double类型和Integer类型比较,比如:金额为0的判断场景。
姓名: 耿*琪
学历: 本科
专业: 计算机科学与技术
薪资: 16000
入职单位:非凡**科技
数据来自学员真实就业
拒绝以偏概全
姓名 | 学历 | 入职单位 | 专业 | 薪水 | 福利 |
耿*琪 | 本科 | 非凡**科技 | 计算机科学与技术 | 16000 | 五险一金 |
王*腾 | 本科 | 家*网 | 其他 | 17000 | 五险一金 |
霍*杰 | 本科 | 北京**科技有限公司 | 信息工程学院 | 17000 | 五险一金 |
胡*宇 | 本科 | 理*家 | 物理与电子学院 | 16000 | 五险一金 |
黄*正 | 本科 | 北京***人工智能科技 | 其他 | 16000 | 五险一金 |
张* | 本科 | 北京**互动科技 | 机械制造及自动化 | 15000 | 五险一金 |
佟* | 本科 | 金**团 | 理学院 | 16000 | 五险一金 |
刘*东 | 专科 | 保密 | 信息工程系 | 12000 | 五险一金 |
左*飞 | 专科 | 北京**数据 | 计算机专业 | 13000 | 五险一金 |
李*申 | 本科 | 汇**宇 | 计算机专业 | 12000 | 五险一金 |
李* | 本科 | 北京**科技 | 其他 | 13000 | 五险一金+14薪 |
倪* | 本科 | 保密 | 理学与信息科学学院 | 12000 | 五险一金 |
宋*飞 | 本科 | 腾信**科技 | 城市建设 | 13500 | 五险一金 |
段*阳 | 本科 | 某医疗行业 | 经济与管理工程系 | 10000 | 五险一金 |
文*盛 | 本科 | 保密 | 计算机专业 | 12000 | 五险一金 |
陈*华 | 专科 | 北京**有限公司 | 计算机软件工程系 | 12000 | 五险一金 |
李*腾 | 本科 | 保密 | 信息科学技术学院 | 10000 | 五险一金 |
郭*嘉 | 本科 | 保密 | 信息工程学院 | 13000 | 五险一金 |
刘*强 | 本科 | 瑞**技 | 计算机与信息技术学院 | 13000 | 五险一金 |
房*飞 | 本科 | 保密 | 外国语学院 | 13000 | 五险一金 |
吕*文 | 专科 | 和*贷 | 机械工程系 | 12000 | 五险一金 |
樊* | 本科 | 腾信**科技 | 河北北方学院 | 14000 | 五险一金 |
陈*雨 | 专科 | 瑞**技 | 测绘学院 | 12000 | 五险一金 |
孙* | 专科 | 保密 | 商贸系 | 10000 | 五险一金 |
程序员也会踩空的几个坑
在乎每一位学员的职业梦想,坚持教育初心
20000名 年培养学员 |
5000名 同期在校学员 |
16城 培训中心遍布全国 |
20个 开设培训中心 |
500所 合作院校 |
10000家 合作企业 |
12门 目前开设课程 |
200位 讲师团队 |
· 就业保障体系覆盖全国,
· 10000多家合作企业定期招聘,
· 学员就业可随心选择。
· 全国各校区讲师统一管理,招聘标准一致,
· 课程大纲全范围内定期升级更新,
· 保障学员学习质量