​为什么我会选择走 Java 这条路?

​本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

https://github.com/h2pl/Java-Tutorial

喜欢的话麻烦点下Star哈

文章首发于我的微信公众号【黄小斜】也将同步到我的个人博客

www.how2playlife.com

阅读本文大概需要 2.8 分钟。

最近有一些小伙伴问我,为什么当初选择走Java这条路,为什么不做C 、前端之类的方向呢,另外还有一些声音:研究生不是应该去做算法方向么,本科生不就可以做开发了吗,为什么还要读研呢。其实吧,这个问题搁在不同人身上,回答可能也是完全不一样的。我可能还是主要以我的角度出发,结合一些读者的问题,来说一说为什么要选择Java这条路。

谈谈我的技术方向选择

我最早接触的语言应该是c,再后来又接触了前端、php、C#等语言,对这些语言的了解也仅限于懂得基本语法,写过一些小demo而已,那时候觉得掌握一门语言就是掌握它的语法就行了,于是会在简历上写,了解各种语言,现在想想实在是太可笑了。

不过真的很多初学者都会这么认为,觉得自己不管选哪个方向都可以,这是因为他们不知道自己的技术方向到底是什么,因为他们不管哪个方向都不精。

后来慢慢接触了Android开发,能自己写一些app,觉得这个方向还挺有趣的,于是想着以后干脆做这个吧。不过我那时候也明白自己离进大厂还有很远的距离,于是打算考研。巧的是,读研前的那个假期,去了一家公司实习,做的是Java Web,那时候才觉得Android比Java Web简单多了呀,完全不需要学那么多框架、技术啊,于是更坚定了做Android的决心,只不过那时候也同样发现了,Java web是更加热门的方向,岗位需求量也更大。

读研的时候,一开始也是打算做Android方向的,买了各类Android书籍开始啃,那时候刚好遇到了个实践课程,让我们选方向,有Java、Android、C 等等。当时妹子做前端,为了带上妹子一起做项目,干脆就选了Java Web这个方向,想着应该不影响我做Android啊,于是接下来的时间里就开始学Java Web了。

时间一长,发现这个方向也没有想象的那么难,相反还挺有意思的,毕竟能用到各种各样的框架,技术栈的内容也很丰富,看起来好像比Android的技术含量高很多,加上自己之前学过Java,也有Java Web的学习经历,简历上也能写的好看一点,于是一不做二不休,就开始做Java方向了。就这样,我找到了第一份Java实习,看了一遍Java后端书单,慢慢地在这条路上越走越远,后来我才发现,Java Web远没有想象中那么简单,Java后端技术栈也远不止Java Web这点内容,特别是对于大厂来说,要掌握的东西实在太多了,比如分布式、网络编程、中间件等等。

所以,选择方向这件事,有时候就是看兴趣,看机遇,看你能坚持多久,如果你对一个方向感兴趣,并且愿意持续学习,不断深挖,这个方向可能就适合你,当你在这个方向投入了一定时间之后,有了一定积累和经验,就不太容易再改变方向了。

谈谈各个技术方向的前景

之前也有很多读者问过这个问题,做哪个方向更有前景,更有钱景。虽然我只做过一个方向,但是对其他方向也有一些了解和涉猎,不敢说了解得非常多,但是结合自己身边的同学、朋友的情况,还是可以给出一些比较中肯的建议。

其实我最早打算做的是游戏开发的,所以我们先聊聊游戏开发这个方向。

网易游戏在前几年对游戏开发的招聘要求是985硕士以上学历,当时我就是冲着这个要求考了研,后来却没有去做游戏开发,主要原因是游戏开发主要用的是C ,并且主要的岗位要求是客户端方向的技术,比如图形学、引擎技术,以及对C 的掌握程度。

当时自认为有一些Java基础,不愿意转C ,同时也感觉游戏行业大厂太少了,除了腾讯网易就没有什么大公司了,职业发展的空间可能也不大。自己虽然爱玩游戏,但是做开发和玩游戏毕竟是两码事。当然,近两年游戏开发的岗位需求其实还是很大的,因为现在做游戏开发的人太少了,导致网易游

戏放宽了研发工程师的标准,只要求211以上即可,所以,想要从事游戏开发的朋友,其实现在进大厂的机会可能比之前更多了。

说完游戏开发,说一说C ,C 方向和Java一样主要是做后端的,虽然游戏开发大部分也用的是C ,但是C 服务端的需求量确实没有Java大,加上C 的学习难度稍微搞一点,所以我没有选择这个方向。

当然,现在做CV等算法方向的同学都会用到C ,所以相对Java来说,C 方向选择岗位的范围可能也更多一些。不过,正如Java也能做大数据开发一样,选择方向并不是选择语言,比如你做游戏开发或者算法方向,要学的远不止C ,做大数据方向,Java也只是很小的一部分而已。

除此之外,前端、测试、移动端等方向也有很多机会,这些方向的学习难度可能要稍微简单那么一点,所以有很多女生会选择这些方向,如果你想进大厂却对自己不是很有信心,那么这些方向也是很不错的选择。

研究生就应该做算法么?

再聊聊现在很火的人工智能、机器学习方向,这个方向说实话最难的地方在于理论知识,也就是机器学习理论、算法模型、统计学知识等内容。很多人对这个方向趋之若鹜的原因,很大程度上是因为这个方向的薪资高,并且相对工程方向来说,工作强度要低一些。

但是,这么热门的方向,竞争有多激烈就不用多说了,大厂的算法岗简历多到数不胜数,你没有论文、实习经历或者比赛为你背书,基本上连简历筛选都过不去,就算你的简历很漂亮,但是很多时候由于岗位需求量不多,只要你不是特别优秀,就可能被安排到研发岗位,这也是我身边很多同学亲身经历的。再有一点,就是有很多算法方向的博士毕业生也会和你竞争,这就有点吓人了,总之,算法方向还是比研发方向更加有难度的,不管是学习难度、面试难度,还竞争激烈程度,都更加明显。

很多人觉得读研就应该做算法,本科生才做研发,我对此不敢苟同,因为主要还是还看个人实际情况,如果你想进大厂,那么至少本科的时候就要有很扎实的基础实力,这对大部分同学来说都是比较困难的,如果你不是名校出身,我觉得进大厂的难度还是比较大的。

很多名校背景的本科生确实可以拿到大厂的研发offer,于是他们会觉得没必要读研,但是对于我这种跨专业的人来说,研究生才是我开始的第一步,跟他们没有什么可比性,所以对于从零开始的我来说,做研发比算法要靠谱的多,对于很多要转行做程序员的人来说,也是一样的道理,应该选择更加符合自己实力的岗位方向,不要好高骛远。

以上内容纯属个人观点!

微信公众号

个人公众号:程序员黄小斜


黄小斜是 985 硕士,阿里巴巴Java工程师,在自学编程、技术求职、Java学习等方面有丰富经验和独到见解,希望帮助到更多想要从事互联网行业的程序员们。

作者专注于 JAVA 后端技术栈,热衷于分享程序员干货、学习经验、求职心得,以及自学编程和Java技术栈的相关干货。

黄小斜是一个斜杠青年,坚持学习和写作,相信终身学习的力量,希望和更多的程序员交朋友,一起进步和成长!

原创电子书:
关注微信公众号【程序员黄小斜】后回复【原创电子书】即可领取我原创的电子书《菜鸟程序员修炼手册:从技术小白到阿里巴巴Java工程师》这份电子书总结了我2年的Java学习之路,包括学习方法、技术总结、求职经验和面试技巧等内容,已经帮助很多的程序员拿到了心仪的offer!

程序员3T技术学习资源: 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 “资料” 即可免费无套路获取,包括Java、python、C 、大数据、机器学习、前端、移动端等方向的技术资料。

技术公众号:Java技术江湖

如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的微信公众号【Java技术江湖】

这是一位阿里 Java 工程师的技术小站。作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!

Java工程师必备学习资源:
关注公众号后回复”Java“即可领取 Java基础、进阶、项目和架构师等免费学习资料,更有数据库、分布式、微服务等热门技术学习视频,内容丰富,兼顾原理和实践,另外也将赠送作者原创的Java学习指南、Java程序员面试指南等干货资源

我的公众号

提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
<think>好的,我需要解决用户关于在Java中创建径或文件成功的问题。用户提到创建径“bigdata1 zxq01”并希望分析运行结果。首先,我需要确认用户使用的具体方法,比如File类、NIO的Path类,或者第三方库。不过用户没有提供代码,可能需要一般性的分析。 接下来,Java中创建目录通常使用File类的mkdir()或mkdirs()方法,或者NIO的Files.createDirectory()和Files.createDirectories()。需要指出不同方法的区别,比如mkdir()只能创建单层目录,而mkdirs()可以创建多层。如果径中包含空格,比如“bigdata1 zxq01”,应该用引号包裹或者转义空格,但Java代码中可能需要正确使用字符串,比如使用反斜杠转义或者直接处理。 权限问题也是一个可能因素,如果程序没有写入权限,会失败。径是否存在父目录,如果使用mkdir()而父目录不存在,就会失败。另外,检查返回值或异常处理是否正确,比如mkdir()返回布尔值,而NIO方法会抛出异常,需要捕获IOException。 用户提到的示例中,Hadoop命令里的径有空格,可能需要在Java代码中正确处理。如果用户直接拼接字符串而没有处理空格,可能导致径创建失败。比如径“bigdata1 zxq01”应该作为单个目录名,但Java可能将其视为两个目录,除非用户用引号包裹,但代码中可能需要使用转义字符或者File.separator来处理。 另外,需要提醒用户检查运行环境,比如当前工作目录是否正确,是否有足够的权限,以及径是否有效。建议用户使用绝对径或正确设置相对径。最后,建议用户添加异常处理和日志输出,以便更好地调试问题。</think>在Java中创建径或文件成功的核心要素与结果分析如下: ### 一、创建径的典型方法 1. **File类创建目录** ```java File dir = new File("bigdata1 zxq01"); boolean created = dir.mkdir(); // 创建单级目录 // 或 boolean createdAll = dir.mkdirs(); // 创建多级目录 ``` 2. **NIO创建目录**(Java7+) ```java Path path = Paths.get("bigdata1 zxq01"); Files.createDirectories(path); // 自动创建多级目录 ``` ### 二、成功创建的关键因素 1. **径合法性** - 特殊字符需转义(空格不需要转义但建议用下划线替代) - 径长度不超过系统限制(通常255字符) 2. **权限要求** - 当前用户对父目录有写权限 - 在Linux系统需满足:`chmod +w /parent/dir` 3. **径存在性** - 使用`mkdir()`时父目录必须存在 - 使用`mkdirs()`可自动创建缺失父目录 ### 三、运行结果分析 1. **成功特征** - 方法返回`true`(File类方法) - 无异常抛出(NIO方法) - 通过验证: ```java System.out.println("目录存在:" + dir.exists()); // 应输出true System.out.println("是目录:" + dir.isDirectory()); // 应输出true ``` 2. **失败排查** ```java if (!created) { System.out.println("失败原因可能包括:"); System.out.println("父目录不存在:" + dir.getParentFile().exists()); System.out.println("写权限:" + dir.getParentFile().canWrite()); System.out.println("径冲突:" + dir.exists()); } ``` ### 四、特殊场景处理 1. **带空格径**(如`bigdata1 zxq01`) - 建议使用下划线替代:`bigdata1_zxq01` - 或通过引号处理: ```java Path path = Paths.get("\"bigdata1 zxq01\""); // 需要特殊处理 ``` 2. **Hadoop环境注意**(根据引用[^1]) - 在分布式系统中创建径时,需确保: ```java FileSystem fs = FileSystem.get(conf); fs.mkdirs(new Path("/user/bigdata1 zxq01")); ``` ### 五、最佳实践建议 1. 始终使用`mkdirs()`代替`mkdir()` 2. 结合异常处理: ```java try { Files.createDirectories(Paths.get("bigdata1 zxq01")); } catch (IOException e) { e.printStackTrace(); } ``` 3. 径命名建议使用英文+数字组合
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值