精华内容
下载资源
问答
  • 吴瑞初出校门没有经验,只能硬着头皮做下去,可他越越窝心。 先是工作内容的问题。 当初他应聘的岗位是后端开发,可现实却是他既要写后端,也要写客户端。本着的多的广可以学到更多的原则,他并不是非常在

    这是一位网友和我分享的他的经历:

    由于他的学历远达不到BAT的要求,大专毕业的他在找工作的时候发现留给自己的机会并不多,最后去了一家不知名的小公司。

    他告诉我入职后才发现这家公司其实是个外包公司,里面的业务部门和制度相当混乱,负责招聘的HR同时兼管着财务和员工薪资的发放。

    老板凭人脉从外面接一些项目回来给他们做。吴瑞初出校门没有经验,只能硬着头皮做下去,可他越做越窝心。

    先是工作内容的问题。

    当初他应聘的岗位是后端开发,可现实却是他既要写后端,也要写客户端。本着做的多做的广可以学到更多的原则,他并不是非常在意这个问题,边做边学,渐渐地也上了手。

    其次是工作量的问题。

    有时候为了赶项目进度,技术主管给手下的员工下了死命令:必须在某个截止日期前完成任务。

    为此,他同几个和他一样新来的同事加班加点地干活,甚至买了只折叠床放在办公室,有几次他通宵,敲代码敲到睁不开眼睛,就展开折叠床凑合几个小时,天亮后继续开工。

    技术主管看到他的卖力,在工作群中表扬了他,并许诺项目结束后会给他调休。

    好不容易熬到了项目收尾,小A整个人瘦了一圈,他兴冲冲地向主管提调休的事,主管跟他打起马虎眼:“你看,新项目又来了,等这个项目结束给你一起休!”等下一个项目结束,他从主管那里得到了同样的回答,他对调休的事死了心。

    最令他不能忍的是工资的事。

    他为公司如此卖力,为的不就是每个月底公司打到银行卡上的那笔数字吗?

    我出力,你出钱,好买好卖。

    可他出了力,轮到公司出钱的时候却非常勉强。工资总是不能按时发放,月底拖到下个月初,月初再拖到月底,一拖再拖。

    他和同事轮番去找HR兼财务,她也是一脸无奈加忧伤,“老板说项目资金还未结清,我的工资和你们一样没发呢!”

    有次在一起吃午饭的时候,HR小姐姐偷偷告诉他说老板在市中心有两套房,开着宝马X6。这样的人不缺钱,体会不到他们如果两个月没领到薪水就没钱交房租甚至没钱吃饭的苦痛。

    现状分析

    如果你目前还年轻,但高不成低不就,只有外包offer,那请往下看。

    多年的工作,接触过不少有外包背景的同事。可以确定的是,但凡有点职业理想的程序员,都对外包行业敬而远之。

    不完全是因为它前途晦暗,更多是来自职业心理上的抗拒。程序员圈还是很看出身的,一般的外包人员,在有品牌独立项目的内行人眼里,就是low人一等,堪比野鸡。

    但我们也不能因此把它贬得一无是处,凡事都有其两面性。

    外包对于非计机系、培训转行、自学编程的程序员,可谓是最不坏的跳板。

    一、放得很低阶的门槛,让教育背景、专业背景不够看的新人,有入行的机会。

    二、丰富的业务场景,帮助新人快速地完成基础开发经验的积累,熟悉主流项目的全流程。

    三、大厂镀金,一些自我包装精良的中小外包公司,常能接到诸如「微软」「腾讯」「阿里」「华为」的大单。虽然是外包,但往后写在简历上,至少是一流大厂的名号,比那些三四流的小公司项目经验强不知强多少个量级。

    而且顶级互联网公司,就那么几家,80%的程序员简历上都是些名不见经传的公司。所以到头来,跟大多数人比,程序员的核心竞争力还是看谁的项目经验牛逼点。

    再者,据做过微软外包的朋友透露,大厂对外包项目的合同条款极其苛刻,阶段性验收出点问题,都要扣款的。所以他常常被其高标准整得焦头烂额,通宵达旦,但每次完整交付项目后,都感觉自身技术水准有了质的飞跃。

    之前我就提到过这个问题,在现在这个阶段,公司之间的技术鸿沟已经非常明显,开发者身在其中,也因为自身学习能力,环境,项目等等的差别,技术上的差距越拉越大,造成了工作几年之后的两级分化,并且这种差距的拉开不是靠自己的努力就能弥补的。在前段时间面试了一个在某一线手机厂商做App的同学,985出身,工作3年,目前也是公司的核心骨干,跟我说了他做的很多UI上的优化和重构工作。他们的App团队大概是4,5个人,看的出来他已经在力所能及的范围内努力做到最好,可惜,受限于团队规模,支持力度和技术储备,他的天花板来的太快,做的不够深入,技术能力也不够全面。

    那面对这种情况,作为开发者,我们能做的是什么?最基本的,脱离舒适区,不停磨练自己的技术。举我自己的例子,刚进公司的时候我主要做的是UI,平时搞一些页面上的优化,解决一些小BUG和ANR,做的还算不错;因为之前做的不错,也因为方向变化,大半年之后我开始切换到做视频下载,后来又开始做视频播放,一年半多时间里跟我的导师把空间播放器和下载器推倒了重做,到现在各项指标都很不错。刚开始切换的时候很痛苦,音视频领域入门有一定门槛,项目压力非常大,之前又完全没有接触过。那段时间不知道多少次15楼南区半夜和假日只剩我跟我导师两个人在公司加班,可现在想想也确实是成长最快的时候。这块做的差不多了,今年又开始做编解码,继续在音视频这块深挖下去。所以就是这样,技术不行就深挖技术,觉得环境束缚了你就尽快跳槽,保持自己足够的竞争力。或许一次跳槽还没有办法改变什么,但这是一个量变产生质变的过程,一份不断向上的简历也能为你敲开很多公司的大门。

    我在一线互联网企业工作近十年,指导过不少同行后辈。帮助很多人得到了学习和成长。

    我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多程序员朋友无法获得正确的资料得到学习提升,故此将并将重要的Android性能优化、音视频开发、NDK技术、组件化插件化热修复、常见源码分析等学习路线分享出来。

    希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在Android开发道路上学习和发展~

    应用层开发

    Android原生开发,需要重点关注的依然主要是各种性能优化,启动速度,耗电量,流畅度,网络优化再到大厂项目实战,这些都是作为一名优秀Android开发具备的基本素养。

    • 启动速度
    • 流畅度
    • 抖音在APK包大小资源优化的实践
    • 优酷响应式布局技术全解析
    • 网络优化
    • 手机淘宝双十一性能优化项目揭秘
    • 高德APP全链路源码依赖分析
    • 彻底干掉OOM的实战经验分享
    • 微信Android终端内存优化实践

    以上资源均免费分享给大家,内容均放在了开源项目:【Github】,大家可以自行获取。

    音视频开发

    幸运的是我们生活在一个好时代,科技在这几十年得到了迅猛的发展。在疫情肆虐的当下,我们可以通过音视频会议进行远程办公;我们还有在线教育系统,对于大多数学生来说,完全可以在家进行在线学习。

    从某个角度看,这次疫情虽然导致很多行业处于崩溃边缘,但也催生了新的行业发展,其中音视频会议和在线教育就是因疫而起的行业。在疫情短时间内难以结束的情况下,音视频会议和在线教育的重要性马上体现了出来,新的沟通方式和教育方式被越来越多的人所认知,所接纳。

    甚至我们可以判定,在线教育行业和音视频会议行业会在今年崛起,并在未来十年得到迅猛发展。

    如何学习音视频开发

    一,初级入门篇:

    一 绘制图片

    1. ImageView 绘制图片

    2. SurfaceView 绘制图片

    3. 自定义 View 绘制图片

    二、AudioRecord API详解

    image

    三、使用 AudioRecord 实现录音,并生成wav

    • 创建一个AudioRecord对象
    • 初始化一个buffer
    • 开始录音
    • 创建一个数据流,一边从AudioRecord中读取声音数据到初始化的buffer,一边将buffer中数据导入数据流。
    • 关闭数据流
    • 停止录音

    四、用 AudioTrack 播放PCM音频

    1.AudioTrack 基本使用

    • MODE_STATIC模式
    • MODE_STREAM模式

    2.AudioTrack 详解

    • 音频流的类型
    • Buffer分配和Frame的概念
    • AudioTrack构造过程

    3. AudioTrack 与 MediaPlayer 的对比

    • 区别
    • 联系
    • SoundPool

    五、使用 Camera API 采集视频数据

    1.预览 Camera 数据

    2.取到 NV21 的数据回调

    六、使用 MediaExtractor 和 MediaMuxer API 解析和封装 mp4 文件

    1.MediaExtractor API介绍

    2.MediaMuxer API介绍

    3.使用情境

    七. MediaCodec API 详解

    1.MediaCodec 介绍

    2.MediaCodec API 说明

    3.MediaCodec 流控

    • 流控基本概念
    • Android 硬编码流控
    • Android 流控策略选择

    由于文章篇幅受限,剩余内容过多,文中插图有限,下文只能截图目录展示:

    二,中级进阶篇:
    • Android OpenGL ES 开发(一): OpenGL ES 介绍
    • Android OpenGL ES 开发(二): OpenGL ES 环境搭建
    • Android OpenGL ES 开发(三): OpenGL ES 定义形状
    • Android OpenGL ES 开发(四): OpenGL ES 绘制形状
    • Android OpenGL ES 开发(五): OpenGL ES 使用投影和相机视图
    • Android OpenGL ES 开发(六): OpenGL ES 添加运动效果
    • Android OpenGL ES 开发(七): OpenGL ES 响应触摸事件
    • Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL
    • Android OpenGL ES 开发(九): OpenGL ES 纹理贴图
    • Android OpenGL ES 开发(十): 通过GLES20与着色器交互
    • 使用 OpenGL 显示一张图片
    • GLSurfaceviw 绘制 Camera 预览画面及实现拍照
    • 使用OpenGL ES 完成视频的录制,并实现视频水印效果

    高级探究篇:
    • 深入学习音视频编码,如H.264,AAC,研究使用开源编解码库,如x.264,JM 等
    • 深入研究音视频相关的网络协议,如 rtmp,hls,以及封包格式,如:flv,mp4
    • 深入学习一些音视频领域的开源项目,如 webrtc,ffmpeg,ijkplayer,librtmp 等等
    • 将 ffmpeg 库移植到 Android 平台,结合上面积累的经验,编写一款简易的音视频播放器
    • 将 x264 库移植到 Android 平台,结合上面积累的经验,完成视频数据 H264 软编功能
    • 将 librtmp 库移植到 Android 平台,结合上面积累的经验,完成 Android RTMP 推流功能

    音视频编解码技术

    • 音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
    • 音视频编解码技术(二):AAC 音频编码技术

    流媒体协议

    • 流媒体协议(一):HLS 协议
    • 流媒体协议(二):RTMP协议

    多媒体文件格式

    • 多媒体文件格式(一):MP4 格式
    • 多媒体文件格式(二):FLV 格式
    • 多媒体文件格式(三):M3U8 格式
    • 多媒体文件格式(四):TS 格式
    • 多媒体文件格式(五):PCM / WAV 格式
      以上资源均免费分享给大家,内容均放在了开源项目:【Github】,大家可以自行获取。

    插件化、组件化、热修复开发

    组件化作为Android客户端技术的一个重要分支,近年来一直是业界积极探索和实践的方向。每个大厂内部的各个Android开发团队也在尝试和实践不同的组件化方案,并且在组件化通信框架上也有很多高质量的产出。

    怎样实现组件化

    要实现组件化需要考虑的问题主要包括下面几个:

    • 代码解耦。将一个庞大的工程拆分解耦,这是非常耗时耗力的工作,但这也是最基础最重要的一步
    • 数据传递。每个组件都有可能提供给其他组件使用,主项目与组件、组件与组件之间的数据传递
      UI跳转。
    • 组件的生命周期。组件加载、卸载和降维的生命周期
    • 集成调试。在开发阶段如何做到按需的编译组件?一次调试中可能只有一两个组件参与集成,这样编译的时间就会大大降低,提高开发效率。
    • 代码隔离。如何杜绝耦合的产生。

    下面给大家介绍的是全网最全的高级Android组件化强化实战手册,覆盖了整个互联网公司,受篇幅限制不会展示所有内容,只能截图展示部分,完整内容已整理成PDF文档。

    现今插件技术的使用非常普遍,比如微信、QQ、淘宝、天猫、空间、携程、大众点评、手机管家等等这些大家在熟悉不过的应用都在使用。

    插件技术可以给项目开发带来巨大的好处,比如:并行高效开发、模块解耦、解除单个dex函数不能超过65535的限制、动态更新升级、按需加载等等。

    掌握好插件技术,需要如下的安卓基础和相关知识,例如:

    • Android应用程序安装,加载过程

    • Android应用运行机制,生命周期调用原理

    • Android应用资源编译打包原理

    • Android应用读取资源原理

    • Android系统AMS、PMS、NMS等系统服务的运作原理

    • 增量更新

    • HOOK等技术

    下面将从基础的插件化原理到Android插件化初探再到大厂架构演化实战应用,总结出了较为全面与完整的安卓插件技术与插件化对 Android开发的重要性。受篇幅限制不会展示所有内容,只能截图展示部分,完整内容已整理成PDF文档。

    以上资源均免费分享给大家,内容均放在了开源项目:【Github】,大家可以自行获取。

    小程序是基于微信这个亿级流量入口所衍生出来的产品,而快应用,快应用是九大手机厂商基于硬件平台共同推出的新型应用生态。用户无需下载安装,即点即用,享受原生应用的性能体验,不过个人觉得,他已经凉凉了,小程序倒是挺看好的,腾讯这座大山,微信这座凉亭,你想不凉快都难,不过看你是否刚需,比如你公司有需求,那你可以去学习。

    推荐学习的新技术,Flutter和Kotlin,这两个都是Google推荐的。

    Flutter

    Flutter是Google在2018年2月27日,在2018世界移动大会上发布的用以帮助开发者在ios和Android两个平台开发高质量原生应用的全新移动UI框架

    由于是是Google发布的,就前景来看,还是值得肯定的。

    Kotlin

    Kotlin 是Google推荐的官方开发语言,与Java互通,可相互转换,简洁安全等,是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由JetBrains 设计开发并开源,

    Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

    最后

    如果你的水平接近达到高级水平,有信心快速达到高级水平,那就按照高级水平的技能点和市场对灵活用工的高级要求对照靠近,一步步达到这个水平。如果你的水平还是初级入门水平,或者兴趣度不是很高,想早点转换,你可以快速转变,因为在正确方向上努力太重要了,这里也建议不要跨度太大,这里我推荐往大前端或者产品方向转变,当然前提是你有这方面的兴趣。

    当然上面讲的都是技术方向上的灵活用工要求,当然对一些技术栈水平和技术积累到一定程度后你也可以往技术管理和产品方向发展,当然你也可以选择创业,如果你有足够好的idea和心理准备。

    当然大部分人停留在中高级水平,然后一直停滞不前,加上外部各种环境,产生了各种焦虑,所以很矛盾,这时候你最好的状态是快速往高级水平发展,当然这里是比较难的,这个坎也是比较难迈过去的。因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。

    本文在开源项目:https://github.com/Android-Alvin/Android-LearningNotes 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

    展开全文
  • 这是非常好的事情,但问题在于很多人不知道学Java做什么,所以什么零碎细末、艰难晦涩、长篇大论的都去看,很容易陷入学不下去的困境。必须要有针对性、选择性地学!针对性学习宗旨是按需去学,学以致用。

    今天的“Java”作为所有编程语言中最热门技术,可以说它无处不在,无论是手机软件、手机Java游戏还是电脑软件,你的每一次购物到每一笔支付成功,都离不开Java,Java开发工程师就占据非常高的比例。

    不论现在还是未来,整个市场都不会饱和,只会低度饱和,高端缺人。只要你努力学,能力越来越好,是非常非常有前途的。

    这是非常好的事情,但问题在于很多人不知道学Java做什么,所以什么零碎细末、艰难晦涩、长篇大论的都去看,很容易陷入学不下去的困境。必须要有针对性、选择性地学!针对性学习宗旨是按需去学,学以致用。

     

    这个JAVA精讲视频是今年最新教程,讲解详细深入,适合0基础入门,也适合那些之前就学习完了java体系课后发现基础不牢固的同学!

    第一章节数据Java的入门阶段,主要内容包括了数据类型、操作符、流程控制语句、循环、数组、多维数组、排序算法、对象的内存模型、方法、构造方法等重要概念。

     

     

    第二章节是是属于进入面向对象的初步准备,算是初窥面向对象的章节,主要讲解了一些重要的关键字、变量、常量、静态变量、实例变量、以及封装的概念、重载方法、也详细分析了字符串的实例化在内存中的来龙去脉,是进入第三章必不可少的只是点章节!

     

    第三章节是面向对象的核心内容,主要的重点和难点是继承、多态、抽象类、接口、接口和抽象类的区别、内部类、泛型、异常处理、递归方法分析等,属于Java的核心技术,要理解后面的内容必须掌握好当本章节知识点。

    ....目录太多在此就不一一写出所有目录了

    本套课程讲解详细深入,内容丰富,包含了数据结构、JVM、GC等大厂常见的面试知识精讲,而且配有在线的预习文档+课堂笔记+每天作业,可以缩短你的学习周期,提高学习效率。

    以上这些教程小编已经为大家打包准备好了!

    在学习中不懂的可以问我,我的纯技术讨论学习群(需要PDF电子书,练习题,开发工具,练手项目,面试题,学习路线图的等都有)

    展开全文
  • “程序员干到35就不行了!...最近看到很多文章都在说,程序员35岁是一道坎,很多人到35岁就干不下去了,就要被淘汰了。再加上国内的互联网公司,35岁以上的程序员真的少,这又进一步佐证了这一说法。那么,这是真...
    “程序员干到35就不行了!”这是IT行业普遍存在的一种说法。

    有的说到30岁;有的说到35岁;有的说到40岁, 达到这个年龄上限就必须要调整方向去做管理、产品、业务等岗位的工作,甚至创业的也大有人在, 反正就是不能再写代码了。
    最近看到很多文章都在说,程序员35岁是一道坎,很多人到35岁就干不下去了,就要被淘汰了。再加上国内的互联网公司,35岁以上的程序员真的少,这又进一步佐证了这一说法。

    5517f5721b45f691b931555a13281dff.png


    那么,这是真的吗?程序员35岁以后真的要面临淘汰的危险吗?
    我告诉大家:是真的

    大家都说程序员吃的是青春饭,原因可以归结为以下两点:

    第一,编程技术飞速迭代, 新技术层出不穷, 各种语言、各种框架、各种新技术理论每年都会更新,而随着程序员的年龄增长,学习能力却是在退步的,因此往往会出现跟不上行业技术脚步的情况。 此外,在成家立业后大量的时间肯定会被家庭琐事占用, 能花在学习新技能上的时间也就更少了。

    第二,工作成果产出的问题, 换种说法就是加班时间多少的问题。就这点,老程序员的确没法和刚毕业的毛头小子比。人家年纪轻轻精力旺盛还没有老婆孩子需要照顾,说加班就加班说通宵就通宵,吃喝拉撒睡都在公司也不成问题,最重要的是人家要的钱还少。

    很多说程序员是个没有将来的职业,没法为后半生带来保障,这个行业没有安全感。

    ae22ca466a6c4342d2d3262490ee208f.png

    那么,按照这个说法,到了35岁的程序员应该去做什么呢?

    在大多数软件开发服务公司里,程序员成长有两条大的通道。一条是管理岗通道,一条是技术岗通道。

    准备走管理岗的,你可以尝试从项目小组长做起,带两三个帮手做一个项目或者大模块的开发。理解用户需求,做项目规划,顺利进阶为项目经理。当有了多个项目经理的经验,开始同时管理多个项目组,也能对项目的成本控制有了理解和方法,知道如何帮公司在项目中优化更大的利润了,就达到了项目总监的水平。

    准备走技术岗的,要么选择一个技术方向,深入学习和积累实践。要么在工作的时候把视野放开阔,多了解和学习新技术在你服务的这个行业的使用。一个是成为某个领域的专家,一个是成为一个相对的全栈工程师。

    当然,如今多了第三条路——做IT自由人。随便网上一搜,各种外包平台眼花缭乱,然而是否靠谱就不得而知。如何找项目,就成为了一个老大难。我在这里以目前市场上两个比较有名的平台来做了对比:

    3cd36f72c43faadb05c0ccf6d25ce841.png

    从对比中我们不难看出,『自由职客』的服务群体更具专业性,合作模式更加人性化,且颠覆传统外包模式,采取不收差价的方式,项目周期也比较长,最大程度的为自由职业者考虑。

    可如果选择做自由人,很多人面临一个问题:没有参保单位,社保停缴或断缴,那么如何储备养老钱,是否有必要自己缴纳社保?

    根据《社会保险法》第10条第2款规定,无雇工的个体工商户、未在用人单位参加基本养老保险的非全日制从业人员以及其他灵活就业人员可以参加基本养老保险,由个人缴纳基本养老保险费。第23条第2款对医疗保险也有类似规定。这一较为笼统的国家层面的规定在各地的执行情况并不相同,一般要求在户籍所在地缴纳。一般自己能交的社保只有医疗保险和养老保险,像其他的生育险,失业险之类的自己是不能交的。

    『自由职客』就能解决这个问题,可免费提供代缴服务,费用按你所缴纳地区的人力资源社会保障局的标准支付。保障自由职业者老有所养。

    c7f0cd40bcd7a62d76414e7aaed0d129.png

    好了,上面解释了三种程序员常见的方向。可我在这里还是想问一个问题:我们真正懂这个行业吗?或者说,更多外行人看的只是热闹而已。很多人说程序员是个没有将来的职业,没有安全感。

    至于说编程技术更新换代速度太快, 大龄程序员跟不上脚步去学习, 这个论点经不起推敲。 程序员也是白领行业。现在高端一点行业的从业者,谁不需要不断成长不断学习?

    程序员都明白一个道理:在软件开发行业,从来都是算法先行,次基础,技术为末。这是程序员从业者金字塔的层级关系分布。把所有精力花在学习语言、框架上的程序员,在技术上肯定是三流的,也就是那批随着年龄上限的接近,害怕被技术淘汰因而寻找其它从业方向的程序员。道理所有人都懂的, 虽然当程序员门槛不高, 那也是相对的,至少这帮人都不笨,对于自己行业的本质还是看的透的。

    虽然程序员们都知道算法和基础是最重要的,然而要学习这两样东西是非常的枯燥乏味的。技术是时时刻刻在变化的, 而算法和基础从计算机发明以来,基本上没什么变动, 这其已经从侧面说明了学好算法和基础, 可以以不变应万变, 一切自然水到渠成, 反之重技术轻算法基础的往往最终结果就是随着年龄的变大而不得不面对所谓的程序员中年危机。

    d2c94539a9f5395c253e2346b177e623.png

    另外,很多人天真的以为40岁以上的程序员肯定改行干别的去了。

    今年是2017年,1977年出生的程序员也就是2000年左右参加工作的那批程序员, 在那个时代,在国内IT行业根本没有如此规模, 程序员从业者数量也没法和现在相提并论。因此, 不是40岁以上的程序员都去干别的, 事实上是40岁以上的程序员实在太少了, 少的大多数年轻程序员根本没有机会遇到。

    最后想说,喜欢一件事情,年轻真不是问题。随着IT技术的不断更新发展,程序员需要不断学习,不断精进,否则面临的只能是淘汰。毕竟坐吃山空,老本也经不起生活折腾!

    从事java十余年,现在把架构师必须具备的一些技术总结出来一套思维导图和录制了一些相关视频,分享给大家,供大家参考。需要相关资料可以私信我(七七)就能获取我把它分为六个点一、开源框架解析:

    阅读、分析源码是程序员最基本的码代码能力也是码农的根本所在,学习经典源码中所用到的经典设计思想及常用设计模式,能够帮你了解大牛是如何写代码的,从而吸收大牛的代码功力。在阿里面试中,MyBatis,Spring等框架的底层原理是经常会被问到的。

    5b376a874983e8ad4e023694ea0eedb8.png

    二、架构师筑基:

    百丈高楼平地起,基础也是非常重要的,基础不牢,自然不用谈架构。

    3c0fe6c06ea6d9c270035a68bd5bcda8.png

    三、高性能架构

    性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,特别是阿里巴巴这样的一线互联网公司最为注重,因此想进入阿里,性能优化一定是要去深入学习与理解的一环

    3ec5bf9ce90fcd4fc14f4bd7a210530c.png

    四、微服务架构

    关于微服务架构的取舍

    微服务是现在互联网架构技术中最火热的话题之一,也是我目前正在学习研究的方向。在面试过程中,面试官很少会问到关于微服务相关的问题。但作为一名开发者,一名有技术梦想的程序员微服务架构是现在必须要去了解的主流技术:

    76661de63bfea677f7604acbf55d907e.png

    五、团队协作:

    开发工具工程化

    通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。程序员的战斗,往往不是一个人的战斗,我们如何在一个平台下高效的去重,进行代码review,对功能进行调整,debug,做到在统一的规划下步步为营,混乱的堆代码的过程中找到自己的记录。这一切都依赖于有效的工具。

    d8cc5caec735b1f4647b3de8e9905525.png

    六、B2C项目实战

    项目实战

    要想立足于互联网公司,且能在互联网浪潮中不被淹没,对于项目的开发实战演练是不必可少的技能,也是对自身能力的一个衡量,有多少的量对等于获得多少的回报。看似简单的一个项目需求图谱,其中的底层原理,实现原理又能知道多少?你搭建一个完整的B2C项目平台到底需要多少知识?这一切都是需要我们考量的。

    baf6ff2e962e46a77ea2fa28993d0217.png

    以上是小编自己目前在互联网公司用到的java核心技术总结出知识体系思维导。学习是一个复杂的过程,当你拥有了学习的方向和学习的方法时,你缺的只是时间,时间是自己积累出来的,而不是我想学习时说“好像没空”这些借口。不要让今天的借口变成了明天的迷茫!高清思维导图及相关视频资料获取方式私信关键词 【七七】即可获取!

    展开全文
  • 在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就...很多人IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要一个页面开发人员并不是一件难事,而且一个页面开发人员更容易找到工作

    在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。

    明确入行的目的

    很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容易找到工作,收入比普通的工作还要高一些,所以成为了很多高校毕业生的选择。如果您只是抱着这样一个心态来入行的话,那阁下可真的要小心。因为干IT这一行竞争本来就比较激烈,特别是页面设计这方面,能够开发的人很多,所以为了节省成本在大部分公司都会在需要的时候才招聘这类人员,在没有订单的时候一些小公司还可能找各类的借口或者以降薪的手段去开除这类员工。而在招聘信息上常常会看到“招聘页面设计师,条件:30岁以下……欢迎应界毕业生前来应聘”这样一条,因为这一类工员对技术上的要求并不高,找应界生可以节约成本。所以在下觉得“IT行业是吃青春饭的”这句话只是对着以上这类人所说的,如果阁下缺乏“进取之心”,而只抱着“收入高,容易找工作”这样的态度而入行,那“IT行业是吃青春饭”将会应验了。

    选择合适的工具

    JAVA、C#、PHP、C++、VB……10多种热门的开发语言,哪一种最有发展潜力呢?其实开发语言只不过是一个工具,“与其分散进攻,不如全力一击”,无论是哪一种开发语言,只要您全力地去学习,到有了一定的熟悉程度的时候,要学习另一种的语言也是轻而易举的事情。开发语言主要分为三大类:

    1. 网络开发

    现在网络已经成为世界通讯的一座桥梁,好像Javascript、PHP、Ruby这几类开发语言大部分是用作网络开发方面

    2. 企业软件开发

    JAVA、C#、VB这几类开发语言都实现了面向对象开发的目标,更多时候用于企业系统的开发

    3. 系统软件

    C语言、C++、Object-C、汇编语言这些软件更多是用在系统软件开发,嵌入式开发的方面。

    当然,这分类不是绝对,像JAVA、C#、VB很多时候也用于动态网站的开发。在很开发项目都会使用集成开发的方式,同一个项目里面使用多种开发语言,各展所长,同步开发。所以在刚入门的时候,建议您先为自己选择一种合适的开发工具,“专注地投入学习,全力一击”。

    明确发展方向

    itman

    当您对某种开发语言已经有了一定的了解,开始觉得自己如同“行尸走肉”,成为一个开发工具的时候,那您就应该要明确一下自己的发展方向了。

    平常在公司,您可以看到做UI层的开发人员大多数都有20多岁,他们充满干劲,而且没有家庭负担,在两年前ASP.NET MVC 、Silverlight等刚出现的时候,他们可以在晚上回家的时候买几本书或者直接上网看看,研究三五个星期以后,对需要用到技术就已经有一定的了解了。而年过30的人多数是已经成了家,他们每天9:00点上班唯一的希望就是快些到6:00点,能回家吃饭。吃完饭只想陪孩子玩一下,看看孩子的功课,对新增的技术缺乏了学习的欲望。所以很多接近30岁的程序员都有着一种逼迫感(包括30岁时候的我自己),再过几年应该怎么办?这时候,您就更应该明确一下目标,努力向自己的发展方向前进了。归纳一下,可从下面几项里选择适合自己的一条道路:

    1. 从技术向业务过渡

    在国外,很多发达国家都很重视人才,一个高级的程序员与一个Project Manager收入相差一般不超过15%。但中国是世界上人口最多的国家,国内人才众多,所以人才滥用的情况经常可以看到。一个小公司的开发部里面经常会见到新面孔,但PM却不会常换。因为做老板的对技术是一窍不通,依他们看来只到拉住PM的心,那在技术方面就能搞得定,至于技术部要换人,他们根本不需要费力气去管。所以从一个技术员过渡到一个PM是向前发展的一个选择,但开发人员也需要知道,要成为一个PM不单单是使用技术,而更重要的是对管理方面认识。一个PM主要的工作是组织团队,控制成本,管理业务,控制项目进度,与客户进行沟通,协调工作,定期进行工作报告等。所以要成为一个成功的PM更要重视组织能力,PM必须能提高团队的积极性,发挥团队所长,在有限的开发资源前提下为公司得到最大程度上的利润。成为一个PM后,通常不需要直接接触技术开发,而着重管理的是业务发展,但PM对技术也需要有一定的了解(在下曾经为PM对技术了解的必要性写过一篇文章,得到很多支持但也惹来不少的争议)。在这里我还是要强调自己的观点:要成为一个成功PM最重视的是管理能力,但对技术也应该有足够的了解,因为这是与团队成员沟通的桥梁,只有这样才能与整个团队的成员有着紧密的结合,让团队成员感觉到他们自己存在的意义,从而调动团队的积极性,而不是漠视技术人员的存在。技术并非成为一个成功PM的充分条件但却是必要条件!

    2. 从程序员向技术管理发展

    其实一个Team Leader的职责与Project Manager相像,但Team Leader更着重于技术开发方面,通常一个大型项目都会有一两个开发团队由Team Leader带领,负责开发核心部分,而其它部分分派给不同开发小组或者分派给外包公司。在网上常看到几句话,贴切地形容了PM与TL的区别:“技术人员乐于被领导;但他们不喜欢被管理,不喜欢像牛一样被驱赶或指挥。管理者强迫人们服从他们的命令,而领导者则会带领他们一起工作。管理是客观的,没有个人感情因素,它假定被管理者没有思想和感受,被告知要做什么和该如何做。领导是引领、引导,它激励人们达成目标。领导力是带有强烈个人感情色彩的,它不是你能命令的,也不是你能测量评估和测试的。”

    无论是PM与TL,对业务与技术都要有深入的了解,只是PM更侧重于业务的管理,盈利的多少,风险的大小等等,而TL则侧重于项目的成本,开发的难度,软件的架构等技术方面的问题。在某些人眼中,技术与管理就像鱼与熊掌,不可兼得,但依在下看来,两者却是秤不离砣,密不可分。只要及时提升自己对技术与管理的认识,不断地向深一层发展,要从程序员提升到技术管理人员只是时间的问题。打个比方,一个普通的.NET程序员,开始可能限制于ASP.NET的页面开发,但一旦他有了发展之心,他自然会对ASP.NET MVC、Silverlight、WinForm、WPF这些UI的开发手法感到兴趣,学习不需要多少时间,他可能就会认识这些UI开发只不过是一些工具,其实在开发原理上没什么区别。接着他就会向深一层的通讯模式进行了解,认识TCP/IP、Web Service、WCF、Remoting这些常用到的通讯方式,这时候他可能已经感觉到自己对开发技术有了进一步的了解。进而向工作流、设计模式、面向对象设计、领域驱动设计、面向服务开发等高层次进发,最后成为技术的领导者。上面只是一个比喻,但要注意的是,在学习的时期必须注意的是与同事之间沟通,很多的开发人员喜欢独来独往,开发的项目总想一个人搞定,不受外界的干扰。但要明白,就算你有天大的本事,一项大型的项目也不可能由你一个人全扛着。所以团队的合作性与同事间的沟通是必要的,这也是成功一个TL的必要条件。

    3. 单方面向技术发展

    能成功技术开发的尖端人才,这是在下最向往的工作,却也没本事登上这个位置。很多从事开发的人都会认为,业务总会带着“金钱的味道”,老板从来不管开发是否合符开发原则,有否经过必要测试,他们只会在客户面前无尽地吹嘘,项目到期能成功交货,只要不出什么大问题那这个项目就算成功了。其实我们也要明白:开发项目最终目标是为了赚钱,在开发过程中对项目成本的限制和效率的控制这也是必须,所以这才需要管理人员对项目进行管理。但开发人员也很想避开这“金钱的尘嚣”,全情投入到技术的世界的当中。所以对技术有着浓厚兴趣的人,往往会深入地研究某一项技术,成为技术上的精英。但在这里说一句令人心淡的话:中国已经属于是世界上第二大经济体同盟国,但国民生产总值主要来源于第三方加工产业方面。中国可以说是人才济济,但却在高新产业上却比发达国家落后。这几年的确看到我们国家在高新科技上有着质的飞跃,但跟欧美发达国家还有着一段距离。所以想在中国成为尖端技术的人才,无可否定比在国外要难。依在下看来,要想成为尖端的开发者,必须对C、C++、汇编语言、嵌入式开发、Windows API、Linux API这些底层技术有着深入的了解。要知道解JAVA、.NET……等这些之所以称为高级开发语言,并不是指它们比C、C++、汇编语言更高级,而是指它们封装了C、C++等等的功能,更适合用于企业软件的开发,使开发变得简单。但如果要开发一些底层的软件,大型的系统的时候,就必须用到C、C++、汇编等开发语言,这是成功尖端人才的一个条件。

    确定未来的目标

    人是从历练中成长的,古人云:三十而立,形容的不是一个人的社会地位,经济来源,而是形容一个人对未来的目标,对人生的意向。要成为一个成功人,就应该早日为自己定下长期的发展目标,作为一个开发者也当如此。随着人的性格,取向各有不同,大家为自己所选择的路也有不同:

    1.自立门户,勇敢创业

    快30岁了,很多人会认为要想真正赚得了钱,就应该自立门户,为自己创业建立一个基础。像北京、上海、广州这些一级城市,要买房子,一手楼基本要在2万~4万元/平方米左右,而在一家普通的IT公司当上一个项目经理,基本收入一般都在1.5万~3万之间(除非在大型的跨国企业内工作,那另当别论),要买一间100平方米左右的房子,就算不吃不喝也几乎要10年的年薪,所以选择自主创业,是很多IT开发人员的一个未来目标,想要达到这个目标,就应该更多地把业务作为重点。不可否认的一件事,在中国社会里很多时候讲的是“关系”,即使这30年的改革开放使中国的经济蓬勃地发展起来,但几千年来留下的歪风还是不能完全的磨灭。所以想要创业的人事建议你要多跟客户打好关系,与合作伙伴保持互利互动的模式,这将有利于日后事业的发展。

    2. 急流勇退,退居二线

    这也是不少人的选择。很多人在有了家庭以后,感觉到压力太大,人的一生并非只有事业,他们想把更多时间用于对亲人的照顾,对孩子的关心上。所以很多人会选择一份像系统分析、系统维护、高校教师、专业学院讲师这一类的工作。收入稳定,而且往往没有一线开发人员那么大的压力。

    3. 不懈努力,更进一步

    无论你是一个Project Manager或者是Team Leader,如果你想继续晋升一级,那还是会两极分化的。从一个PM到一间公司的管理层,那所面对的事件会有很多变化。一个公司的总经理,要管理的不再是一到两个项目的成本,而是整个部门的运作,整间公司的业务流程,所以要肩负的任务的会更重。在下曾经有一位上司彭博士,他是企业的最高领导人,年薪超过三百万,而且在报纸杂志上也曾经亮过相。平常只会在某些会议上轻轻地亮下相,说两句讲词,平常的公司运作与业务管理都不需要他直接执行。这并不是说一个作为管理层很清闲,因为他们要面对的是更多的社会关系,与公司合作企业的联系上。这跟一个PM的工作的很大的区别,所以要从一个PM晋升到管理层,那可是要负出更多的努力与汗水。

    如果要从Team Leader上升为一个技术总监,那工作的方向也有所改变。像之前所说:一个TL可能更重视的是技术层面,讲求与团队之间的互动合作性,更注重的是开发的完善。而一个技术总监就无需要直接参加某个项目的开发,而注意的是开发的效率与成果,如何合理使用有限的开发资源,控制开发的风险和可能带来的效果。

    发展感受

    经历了8年多时间,在下从一个程序员到一个项目经理,之间经过很多的曲折,但因为每一个人的际遇都有所不同,所走的路也有不同,正所谓条条大路通罗马,成功的路不止一条,在下也不想令各位误解,而只想为大家说一下我的发展方向。如果您是一位开发人员 程序员->架构师->Team Leader(Project Manager)->技术总监 是一条不错路,这也是在下选择的路。在我国,想要进一步提升自己,无论你想是以技术为重点还是以业务为重点,都离不开管理二字。在一些大型的企业,一个团队往往会配备一个PM与一个架构师,尽管两个人负责的任务各有不同,但你会看到一个架构师的收入往往不如一个PM,PM往往是这个团队的核心领导者,是关键人物。因为公司能否赚钱,PM有着重要的作用。PM与TL并没有绝对的区别,而且在一些中小型企业,一个开发团队只有3~5人,一个TL往往会兼备业务处理、成本控件、架构设计、开发管理等多项任务。所以在下会把Team Leader与Project Manager定于同一层次,一个公司的老板往往不会知道团队的架构师、程序员是何人,而只会向PM询问项目的进度,所以只有晋升到这个层次,才有机会进一步提升管理能力,让自己有上升的空间。置于要成为一个技术总监,那要求就不再单单是对单个项目的管理,而应该更则重于新兴技术的引用,开发资源的合理利用,对开发项目敏捷性的处理等等,对此在下也在试探当中,未敢多言。

    展开全文
  • 在中国有很多人都认为IT行为是吃青春饭的,如果过了...很多人IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要一个页面开发人员并不是一件难事,而且一个页面开发人员更容易找到工作,收...
  • 在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!...明确入行的目的很多人IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要一个页面开发人员并...
  • 在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就...很多人IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要一个页面开发人员并不是一件难事,而且一个页面开发人员更容易找到工作
  • Java程序规划

    2018-05-30 10:51:14
    在中国有很多人都认为IT行为是吃青春饭的,如果过了30...很多人IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要一个页面开发人员并不是一件难事,而且一个页面开发人员更容易找到工作,收
  • java程序员职业规划

    2019-10-04 04:23:55
    前言 在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很...很多人IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要一个页面开发人员并不是一件难事,而且一个页面开发人员更容...
  • Java程序员职业规划

    2017-02-03 21:10:12
    前言 在中国有很多人都认为IT行为是吃青春饭的,如果过...很多人IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要一个页面开发人员并不是一件难事,而且一个页面开发人员更容易找到工作...
  • 能,对于做开发的人来说,学到的技术知识是理论性的,只有把知识代入到真实的实战案例中才能快速将理论转变为技能。 一直在网上看到过很多关于类似的资料,要么就是版本比较老,要么就是讲的太,没有阅读下去的...
  • 能,对于做开发的人来说,学到的技术知识是理论性的,只有把知识代入到真实的实战案例中才能快速将理论转变为技能。 一直在网上看到过很多关于类似的资料,要么就是版本比较老,要么就是讲的太,没有阅读下去的...
  • JAVA自学之路

    2012-09-21 20:39:46
    开发中,仔细观察出错信息,或者运行正常的信息,是你要的第一件事。 读清楚了,才能在以后的步骤中有的放矢,哭了半天,总要知道哭的是谁才成。 这里又分三种情况: A:错误信息读懂了,那么请进入2步...
  • 实在干不下去测试一点意思没有,同时感觉 没学到什么东西, 也没什么项目。于是打算跳槽。干了一年。 除了刚进去的时候,开发了一些中兴内部的网络爬虫插件,然后,学会了使用linux,没什么项目。测试 ...
  • 在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难... 很多人IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要一个页面开发人员并不是一件难事,而且一个页面开发人员更容易找
  • 在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就... 很多人IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要一个页面开发人员并不是一件难事,而且一个页面开发人员更容易找到工
  • 能,对于做开发的人来说,学到的技术知识是理论性的,只有把知识代入到真实的实战案例中才能快速将理论转变为技能。 一直在网上看到过很多关于类似的资料,要么就是版本比较老,要么就是讲的太,没有阅读下去的...
  • 能,对于做开发的人来说,学到的技术知识是理论性的,只有把知识代入到真实的实战案例中才能快速将理论转变为技能。 一直在网上看到过很多关于类似的资料,要么就是版本比较老,要么就是讲的太,没有阅读下去的...
  • 能,对于做开发的人来说,学到的技术知识是理论性的,只有把知识代入到真实的实战案例中才能快速将理论转变为技能。 一直在网上看到过很多关于类似的资料,要么就是版本比较老,要么就是讲的太,没有阅读下去的...
  • 能,对于做开发的人来说,学到的技术知识是理论性的,只有把知识代入到真实的实战案例中才能快速将理论转变为技能。 一直在网上看到过很多关于类似的资料,要么就是版本比较老,要么就是讲的太,没有阅读下去的...
  • 在中国有很多人都认为IT行业是吃青春饭的,如果过了30岁就...很多人IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要一个页面开发人员并不是一件难事,而且一个页面开发人员更容易找到工作
  • 在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就...很多人IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要一个页面开发人员并不是一件难事,而且一个页面开发人员更容易找到工作
  • 能,对于做开发的人来说,学到的技术知识是理论性的,只有把知识代入到真实的实战案例中才能快速将理论转变为技能。 一直在网上看到过很多关于类似的资料,要么就是版本比较老,要么就是讲的太,没有阅读下去的...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 134
精华内容 53
关键字:

做java开发干不下去了

java 订阅