学软件开发?那可不是闹着玩的。不从事这一行的永远不知道这行的艰辛,还咋巴着小眼睛问编程好不好学?
不知道LZ看没看过圣斗士星矢这部动漫,首先你得问问自己,想学编程,你有没有像星矢一样持之以恒百折不挠一步一个脚印忍受常人无法想象的困难和痛苦的品质,没有?你说我开玩笑逗你,那好,下面的不用看了,因为你确实不适合学。
如果你只想着挣大钱,劝你别碰这行,一句话,别来找虐。为什么?你看到的手机APP,各种应用,要想开发出来,不知道需要多少种技术。拿最常见的网站开发,需要后台数据库mysql,数据格式json,xml,各种网络协议,还有网站开发语言PHP, JSP,ASP.NET,等等不下十几种技术。而每一种技术都是一本厚厚的五六百页的书,需要最少一年多时间掌握一门技术。最要命的,每种技术互不交叉还跨度很大,每种技术都有自己的设计理念和很多很多“天坑”在等着你攻克,你问问你自己,你有这个恒心和意志力天天捧着本大部头的书天天看,天天上机操作学吗?你说有,那好,你看电视上那些富二代天天潇洒地到处游玩泡妞基本于你无缘了,因为你根本就没时间,谈个恋爱都困难,还想打网游玩王者?那算了,你还是别碰这行了,别耽误你玩游戏享受生活了。
程序员加班很恐怖,工作制通常是996,即早9晚9周六还要上班,晚9下班还是早的,一般到晚上十点。你想那时夜深人静了人家都休息抱着老婆孩子睡觉了,你还在工作中,是不是很崩溃?
第2,程序员耗脑太严重。工作中需要十几个小时大脑不停地运转。需要设计算法,不断地把代码改来改去来适应客户一天几变的需求。很多功能没有现成的解决方案,还经常遇到一些天书一样的疑难问题,bug,实际工作中突发状况千奇百怪,你可能见都没见过的bug,崩溃,需要一点一点查几万行的log日志。而且也需要百度,google,英文论坛寻求帮助,理解错误信息是什么意思。所以英文不好的没耐心的还是算了吧,不适合这行。
第3. 程序开发首先是非常难学的,任何一门编程语言都有自己独到的思想,概念设计,很多情况下一门语言与另一门语言没有多大关系,知识经验无法串用。而且工作中你还不得不用到这些技术你不得不去学。而且程序技术日新月异,新类库新SDK每天都会推出,你需要日复一日不断地学习新技术。如最新视频解码技术,游戏引擎等等,而这些新技术可是国内没有书和任何资料的,需要你到英文官方网站去找实例看文档去学,更要命的,新的技术和老的还没太大关联,你得重头去学。而且老板急赶项目不会给你什么时间,一般三天就是极限了,你需要这么短的时间快速掌握一项新技术...
综上,你明白程序员为什么总要加班了吧,也知道这行不是人干的吧。为什么说程序员干到三十干不动。很简单,以这种消磨人生所有时间状态,你生命中只有加班加班工作工作学习学习,你将不能顾家不能跟朋友聚会不能再有自己一点点休闲时间,更别说谈女朋友恋爱了,以这种状态你能坚持到三十岁?我想那简直是个奇迹了
这是几乎所有java初学者的首要问题,在网络时代下,以及这几年各大平台对内容的正视,Java的学习成本已经算是非常低了,不过也就是因为这样的环境下,会导致初学者更加的迷茫,网上一搜,一大堆教程,不知道从何学起。作为资深程序员,在这里,给同学们提供几点我的学习路线以及思路,避免同学们绕弯路,可根据自身情况适当调整。因篇幅问题,这里仅介绍到让你成为Java初级工程师阶段。
前言:
文章根据学习步骤提供相应的大致学习时间、参考资源,同学们可根据自身情况进行调整,多思考,多动手才能更快的掌握知识。
阶段一(web基础,预计完成时间180小时)
这一部分不需要强制自己全部记住,但是必须跟着教程动手敲一次
需掌握的知识点:
l html
n html简介
n html标签的使用
n html结构布局
n 表单元素(重要)
l css
n css简介
n css基础语法
n css样式
n css盒子模型
n css定位
l JavaScript
n DOM操作
n BOM操作
n JQuery
n Ajax
n JSON
l TCP/IP
l XML
n 了解XML的基本作用
n XML基础语法
n XML约束模式
l UI框架
n Bootstrap(可选)
html在线教程: http://www.w3school.com.cn/html/index.asp
html5在线教程: http://www.w3school.com.cn/html5/index.asp
css 在线教程: http://www.w3school.com.cn/css/index.asp
css3在线教程: http://www.w3school.com.cn/css3/index.asp
JavaScript 在线教程t: http://www.w3school.com.cn/b.asp
Bootstrap在线教程: https://www.runoob.com/bootstrap/bootstrap-tutorial.html
XML在线教程: https://www.runoob.com/xml/xml-tutorial.html
阶段二(Java基础,预计完成时间480小时):
Java是此次我们需要学的知识,这部分是我们Java的基础核心,扎扎实实地打好基础,练好基本功能是学好Java的“秘诀”,所以要给自己一些压力,先手动跟着教程敲一遍,然后在头脑中留下印象,接着按照自己的思路再次复习一次。
在这一部分,同学们需要掌握的有:
Java基础知识:
l Java简介
l 环境变量和配置
l 基础语法
l 基础类型
l 面向对象
l 流程控制
l 初始化与清理
l 访问权限控制
l 复用类
l 数组
l 操作符
l 常用类
l 接口
l 异常处理
l 容器
l 泛型
l IO流
l 多线程
l 网络编程
l 解析XML
l 反射机制
Java在线教程: https://www.runoob.com/java/java-tutorial.html
Java基础书籍推荐: 《Java编程思想》
Servlets和JSP基础知识:
如果你的需求点只是在于前后端分离的架构方式,可以先跳过JSP
l 为什么要使用Servlets和JSP?
l 环境配置和生命周期
l 单数据操作
l 客户端请求和服务器端HTTP响应
l 请求重定向
l JSP的EL表达式
l 异常处理
l 文件上传
l 数据库访问
l Cookie、Session操作
l 文件上传
l 日期处理
Servlet在线基础教程: https://www.runoob.com/servlet/servlet-tutorial.html
Servlets 和 JSP推荐书籍:《Head First Servlets & JSP》
MYSQL数据库:
l MYSQL简介
l MYSQL安装
l 数据库安装
l Navicat的安装与使用(MYSQL客户端)
l 表级别的操作
l 单表多表查询操作
l 约束
l 导入和导出
MYSQL 线上教程: https://www.runoob.com/mysql/mysql-tutorial.html
MYSQL书籍推荐:
JDBC(一个Java应用的数据库规范):
l JDBC是什么?
l JDBC SQL语法
l JDBC与数据库连接以及操作
l JDBC结果集
l JDBC数据类型
l JDBC事务
l JDBC异常
JDBC线上教程: https://www.yiibai.com/jdbc/
Maven项目管理工具:
l Maven环境配置
l Maven生命周期
l Maven仓库
l Maven插件
l 引入依赖
l 自动化构建
Maven线上教程: https://www.runoob.com/maven/maven-tutorial.html
Maven书籍推荐:
Power designer:
l Power designer简介
l Power designer安装
l 了解概念模型
l 物理模型
l Power designer 导出sql脚本
当你完成以上学习并且能实际动手完成一些简单项目,这时候你应该注意了,收起你那即将翘起的尾巴^_^,你还只是一个刚入门的初学者,接下来才是真正的踏上Java工程师之路,你准备好了吗?
阶段三(Java工程师之路,预计完成时间240小时)
Tomcat:
l Tomcat简介
l Tomcat应用部署
l Tomcat JDBC数据源
l Tomcat的JDBC连接池
l Tomcat安全管理
l Tomcat连接器
l Tomcat代理
Tomcat线上教程: https://www.w3cschool.cn/tomcat/
Tomcat推荐书籍:
框架
l Spring(重要)
l Hibernate(可选)
l Struts2(可选)
l MyBatis(可选)
l Spring MVC
l Spring Boot
Spring 在线教程: https://www.w3cschool.cn/wkspring/
Hibernate 在线教程: https://www.w3cschool.cn/hibernate/
Struts2 在线教程: https://www.w3cschool.cn/struts_2/struts_overview.html
MyBatis 在线教程: https://www.w3cschool.cn/mybatis/
Spring MVC 在线教程: https://www.w3cschool.cn/spring_mvc_documentation_linesh_translation/
Spring Boot 在线教程: https://www.yiibai.com/spring-boot/
如果你完成了上述三个阶段,祝贺你,已经成为一名真正的Java工程师了,开始你的Java之旅吧,如需了解更多Java知识,请关注我。
分享一个菊厂大神的故事:
不知道从什么时候起,亲戚朋友问我能不能买到打折手机时,我总会脱口而出:打折手机没有,打折基站,了解一下?说完自己都觉得有点无厘头,但似乎又是那么顺理成章。我想,无线的十年,写代码可能已经深深融入了我的生命,因为它不仅见证了我的青春年华,也见证了我不认怂的那些时刻。
这条路,我打算一头走到黑了!
程序员这辈子谁没遇到过几个bug爱上编码,其实很偶然。在没有钱只有才的大学岁月里,在当时追女生还停留在手写情书的年代,我用OpenGL写了一个3D的迷宫游戏,在迷宫的关键路径上放上了女神的美照。一个小小的游戏,帮助我的兄弟打败了99%的直男,成功追到了学校的女神,我也成了我们那届男生眼中的“代码大牛”。初尝成功的滋味,让我觉得干软件这行,还行。
2007年底,我成功应聘到华为无线,在上海接首个落地成都研究所的产品UMTS Access Point,因为之前的游戏开发工作经历是顺风顺水,让我觉得基站软件编码没什么难的,但是进公司的第二个月,脸就被打得啪啪响。当时还是瀑布式开发,严格遵循预先计划的需求、分析、设计、编码、测试顺序进行,一个环节阻塞,所有人都得停下来。我负责的是系统广播消息的整改优化,当联调到我这时,DSP(基带子系统)却死活收不到我发的系统消息。我不停走读代码,却连续两天两夜毫无头绪,全部门100多号人因为我已经阻塞了48小时,部长不停在我座位后边转悠,盯着我屏幕那焦灼的眼神,都深深地刺痛着我,什么时候,我从别人眼中的大牛,变成了拖后腿的人了。
48小时后,部长觉得不能再这么枯等下去,安排了部门技术大牛来帮助我梳理思路,重新走读代码,终于找到了问题根因,原来在从CPU向DSP发送消息时,需要提前20ms发送,我当时过于自信,不知道信令之间有严格的时序关系,发送和接收是有延迟的,想当然认为优化成实时发送,不是更节约时间,更有效率么,于是不假思索地修改成了我心目中“更美”的代码。但就是这个“更美”,实际变成了Bug,阻塞了我们的联调。问题终于解决了,但就在那一晚,我人生中第一次失眠了,我甚至开始怀疑自己,是不是不适合干通信行业?
第二天,我找到部长,向他诉说我内心的煎熬和自信的崩塌,谁知道部长神情了然,说:“一个程序员,谁这辈子没遇到过几个Bug啊,都是自己亲手埋的雷,那就死活都要亲手把它挖出来。下一次,一定要由你自己来挖。”我俩相视一笑,突然间,我就释怀了。
经过这次挫折,我对做大型通信软件有了新的认识和了解。年轻的时候多少有些自负,自认为自己的代码水平不错,但实际上软件领域有太多的未知,一山更比一山高,不太懂的地方,不能想当然,得多向前辈请教。代码也不是越“美”就越好,在网运行的每一行代码都是多代华为人不断完善的结果,从表面上来看,这些代码离美还有一段距离,但是从业务场景和功能完备性上讲,它通常考虑比较周全,出问题的概率很低。
愈曲折,愈见大风景。
没有解决不了的bug,只有没找对方法的我们带着对编码的敬畏,后来的我一直在业务组长期深耕。在自己熟悉的业务领域,无论特性开发,还是小的模块重构,都能游刃有余,主导的模块重构还获得过公司E2E质量奖,但也许正因为太熟悉了,太游刃有余了,感觉激情正在一点点地褪去。就在我以为自己会麻木,甚至动了别的心思的时候,一个扩展眼界的机会,找上门来了。也正是这次机会,让我坚定了继续在软件世界遨游的信念。
当时,根据公司要求产品线需要发起VxWorks切换Linux的hert 8.0性能攻关,每一年增加的10万+代码,会成为产品性能的包袱,所以每一年的性能攻关,都是项目的重中之重,但是平台切换和性能优化了多年,能想到的、该用的招式都用过了,大伙有些黔驴技穷了,怎么才能让性能KPI继续往上升呢?尤其是在4个月内要提升XX%,能按期达标吗?
部长找到我,问我愿不愿意接受这个高难度的挑战,支援项目组完成性能优化,支撑至少每秒1500次链路建立。这是我从未涉及的性能优化领域,我,行吗?
老婆给我打气,“这,不就是你正在寻找的,突破的机会吗?拿出你当年运动员的精神来,坚持、突破!你要相信自己,你可是‘百米飞人’哦。”这里要说明一下,我从小学就参加校田径队,一直到高中,从一个只是爱运动的小破孩,硬是练到了国家二级运动员,练成了研究所的“百米飞人”。
有了老婆这个坚强的后盾,我欣然进入了攻关组,并利用所有的业余时间,从各种渠道、多个维度,补充相关知识的学习。同时,也向产品线架构部专家请教攻关方向,向底层平台专家请教消息通信优化方向,向已经成功优化的部门请教Ans1编解码优化方法等等,一切可以想到的,有一线希望的方式方法,我都主张尝试一遍。从业务流程、业务算法、模块部署、热点代码、编译器选项等多个维度同时进攻,4个月后,我们如期顺利攻下了这个山头。
一时间,我百感交集,我认识到软件的路更宽了,曾经的我单纯认为软件开发不就是垒代码吗?谁让代码更简洁实用,谁就是大牛,其实不然,它更是合作,是探索,是智慧的碰撞。当我们费尽千辛万苦,齐心协力冲破“暴风骤雨”时,我心中的迷茫如乌云散开,我感受到了沐浴阳光的爽快与自信。这让我更加坚定了软件开发的选择,没有解决不了的Bug,只有没找对方法的我们。
主管被我大胆的想法吓到了5G TUE(测试终端)落地成都,部门要成立软件架构优化组,鉴于我以往的表现,部门希望我担任技术负责人,从一开始就解决未来可能出现的性能问题。我先后分析了号称世界最快的“并发框架Disruptor”,公司外研所开发的JSF,以及面向异构系统的OpenCL等各类并发框架后发现,其实取各家所长,开发一套全新的并发调度框架,更加有好处,能让TUE/CPE在生命周期内,都不用再考虑性能问题。这个架构可以结合TUE/CPE高负载,超低时延,多板多框共存,产品硬件单板每年更新,以及多产品OneTrack的业务特点,达成每秒百万级任务处理的性能规格。
我把全新开发并发框架这个想法跟部门主管简单说了下,主管吓了一跳,“这个想法太大胆了。” 原计划只是优化小改,现在却要完全重写,我们的软件实力是否足够?风险到底在哪里?能不能按时交付版本?性能会不会变得更差?会不会影响公司5G整体发布节奏?一连串的问号,让他的心里完全没底。我却坚信这个新框架如果做出来完全可以“碾压”原有架构,而且新架构会让整体更简洁,就像那张著名的印度街道电线图,只有重新铺设,架构才不会腐化,更有利于后面的开发和维护。但主管仍然不同意,认为风险还是太大。
我想到架构大师Till Adam曾经说过,优秀的架构师必须首先是一个推销员。于是我整理了新架构的各种优缺点分析,开始向主管、MDE游说,从进度分析、性能分析、架构预演、风险预判等维度,一一解决了他们的疑虑和担心。经过2周十来次密集的技术PK,部门终于同意,兵分两路,我一个人先开发架构原型,另一组人在原有架构上优化,谁先验证成功,提升更大,就用谁的架构去适配修改产品代码。
是时候用上以前积累的知识和技能了。我心中燃起一团火,只想着要拼尽所有将想法变成现实。3个月的时间,我心无旁骛全力以赴开发新架构,用老婆的话说,简直到了“魔怔”的地步,吃饭在想,走路在想,睡觉也在想,几乎没有一刻停止过思考。还记得最后一天,当新架构原型基本完成,上板性能压力测试远远超出预期,这样的结果,让我觉得,过去种种,值了。部门也终于信心十足,决定用我的新架构来启动业务层的适配修改。
2017年5月,上海通信展,TUE被集成在了汽车上,观众通过5G网络,在展厅遥控30公里外的汽车,实时控制。远程驾驶可以成为未来租车和共享汽车行业服务这种自动驾驶的补充,例如用户将车开到偏僻的场所,租车公司无需人力开回,只需利用远程驾驶就可召回、调度车辆。我和项目组的兄弟们通过网络直播,看到汽车被顺利遥控的那一刹那,我突然发现,原来我们的通信软件已经走在了世界科技的最前沿,我们正在构造未来智能化时代的通信基础,这种无与伦比的成就感和自豪感,瞬间盈满了内心。
十年时光倾吐芳华,峥嵘岁月如墨留香。这十年里,无论是为了一行代码“死磕”,还是为了一个架构想破了头,穷尽了方法“折腾”,又或是为了“推销”自己的方案拼命争取,我没认过怂。所有的努力在看到自己编写的代码照进现实的那一刻,是作为程序员的我最大的骄傲。
《华为人》版权所有,请勿转载
学软件开发?那可不是闹着玩的。不从事这一行的永远不知道这行的艰辛,还咋巴着小眼睛问编程好不好学?
不知道LZ看没看过圣斗士星矢这部动漫,首先你得问问自己,想学编程,你有没有像星矢一样持之以恒百折不挠一步一个脚印忍受常人无法想象的困难和痛苦的品质,没有?你说我开玩笑逗你,那好,下面的不用看了,因为你确实不适合学。
如果你只想着挣大钱,劝你别碰这行,一句话,别来找虐。为什么?你看到的手机APP,各种应用,要想开发出来,不知道需要多少种技术。拿最常见的网站开发,需要后台数据库mysql,数据格式json,xml,各种网络协议,还有网站开发语言PHP, JSP,ASP.NET,等等不下十几种技术。而每一种技术都是一本厚厚的五六百页的书,需要最少一年多时间掌握一门技术。最要命的,每种技术互不交叉还跨度很大,每种技术都有自己的设计理念和很多很多“天坑”在等着你攻克,你问问你自己,你有这个恒心和意志力天天捧着本大部头的书天天看,天天上机操作学吗?你说有,那好,你看电视上那些富二代天天潇洒地到处游玩泡妞基本于你无缘了,因为你根本就没时间,谈个恋爱都困难,还想打网游玩王者?那算了,你还是别碰这行了,别耽误你玩游戏享受生活了。
程序员加班很恐怖,工作制通常是996,即早9晚9周六还要上班,晚9下班还是早的,一般到晚上十点。你想那时夜深人静了人家都休息抱着老婆孩子睡觉了,你还在工作中,是不是很崩溃?
第2,程序员耗脑太严重。工作中需要十几个小时大脑不停地运转。需要设计算法,不断地把代码改来改去来适应客户一天几变的需求。很多功能没有现成的解决方案,还经常遇到一些天书一样的疑难问题,bug,实际工作中突发状况千奇百怪,你可能见都没见过的bug,崩溃,需要一点一点查几万行的log日志。而且也需要百度,google,英文论坛寻求帮助,理解错误信息是什么意思。所以英文不好的没耐心的还是算了吧,不适合这行。
第3. 程序开发首先是非常难学的,任何一门编程语言都有自己独到的思想,概念设计,很多情况下一门语言与另一门语言没有多大关系,知识经验无法串用。而且工作中你还不得不用到这些技术你不得不去学。而且程序技术日新月异,新类库新SDK每天都会推出,你需要日复一日不断地学习新技术。如最新视频解码技术,游戏引擎等等,而这些新技术可是国内没有书和任何资料的,需要你到英文官方网站去找实例看文档去学,更要命的,新的技术和老的还没太大关联,你得重头去学。而且老板急赶项目不会给你什么时间,一般三天就是极限了,你需要这么短的时间快速掌握一项新技术...
综上,你明白程序员为什么总要加班了吧,也知道这行不是人干的吧。为什么说程序员干到三十干不动。很简单,以这种消磨人生所有时间状态,你生命中只有加班加班工作工作学习学习,你将不能顾家不能跟朋友聚会不能再有自己一点点休闲时间,更别说谈女朋友恋爱了,以这种状态你能坚持到三十岁?我想那简直是个奇迹了
感谢邀请,感谢信任~
我一直在做Java的开发,中间自己做过Andorid的开发,完成了一个小的APP,也有一些盈利,而IOS开发只是研究过,安装完环境之后就没有再继续了(自己汗一个)。
我就用自己“浅薄的经验”,提一些建议。
Android or IOS首先要面对这样的选择,到底选择哪个平台。(我先把Windows Phone默默地忽略掉)
因为不知道题主的零基础是怎么个零基础:
如果会一些Java开发的话,只是没有开发APP的经验,直接学习Android开发会比较简单。IOS和Android开发的差别还是挺大的。
如果开发零基础,两者的难度我觉得差不多,不过IOS开发的前提比较“贵”,需要一台Mac;我不太建议安装“黑苹果”,感觉不是很好用。
Android开发一台Window的电脑即可,一台Android系统的手机(或者用模拟器替代),开发环境(JDK、Android SDK),IDE,
做Android开发的话,Java还是要学好的:Java的基础语法,面向对象思想,常用的类和包,IO,集合,异常等等;还要学习接口的开发,数据库入门知识。
Java学习的差不多了,再去看Android方面的知识:Android UI的各种控件及布局、网络编程、数据存储等等。
更多的知识点我也不好详细说明,可以在网上找一些教学视频,跟着视频学习(初学者不建议看书,学习速度会比较慢)。
IOS开发需要一台MacOS的电脑,不建议使用黑苹果,一台苹果的手机,说不定还需要一个平板,开发环境,IDE(XCode)。
开发语言,我学习的时候还是Object-C,现在应该都是Swift。
接下来的建议我就不给了,因为...我的IOS开发生涯,到这里就结束了。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。以上就是关于淘宝sdk教程 php以及初中学历的人能学编程吗的相关回答,有更多疑问可以加微。Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有