今天给大家分享一些移动端(Android)开发学习后端开发(Java Web)的一些事儿,不知道从什么时候开始身边的同事都开始陆陆续续的在朋友圈发一些后端的文章如:Nginx、Docker、k8s类的知识,后来才发现大家都在学习一些后端的开发工作,可能是感觉移动端技术有些腻了了吧,需要有些突破了!

甚至还有个iOS同事有在业余时间学习Java、Servlet、Spring等后端知识,这让我深有感触我在学校期间也学过Java Web的知识后来因为Android能够做一些界面元素好玩,容易带来成就感,再加上当时的Android真是火到天际。现在如果有人问我为什么要从事移动端开发,我一般都会回答:“误入歧途”,当然这也有些自嘲,开玩笑的成份。

大概在16年的时候,我就有意无意的在开始自己学习后端知识了,那时候我的工作主要还是做App,偶尔学习下后端知识,可惜的是当时工作的单位后端是用的Python技术栈,由于当时我比较钟情于Java,所有没有学习Python~~。

到了18年,我入职一家二线互联网公司还是做Android开发工作,当前公司正处于业务高速发展期扩张很快,当然变化也有多。当时就感觉移动端的开发人员在各种技术会议上时很低迷,基本很少发表意见,举个例子:

一开始移动端时间类型使用的是int,后面一哥们改为long,再后来一技术专家要求改为字符串说是:便于后端阅读!这也可以理解关键是移动端还得兼容int、long、字符串型的时间。

改就改吧又没有做到统一标准,像这样的改动做为移动端开发,完全可以怼回去才是的啊!虽然改起来是小事,但也说明了一个问题:移动端开发话语权真的挺低的,怼又怼不过人家~~。

再说另外一个故事,我们组来了位移动端技术专家,和我们聊了很久,其中有个问题让印象深刻:移动端为什么很少有架构师这个职业?当时我一听感觉确实是的,很少有公司会招移动端架构师,移动端开发并不像后端开发那样久远,它的发展也是由Android、iOS的出现才兴起的,也没有什么高并发、高可用之类的术语,移动端关注的更多的是界面、用户体验方面的问题。那一天聊了很久,从那一次我得出一个结论:作为移动端开发,很难做到技术大佬级别(相比较后端开发)。毕竟现在的互联网都是是数据、业务为主的,一个经验丰富移动端开发工程师,没写过业务,也没有大数据处理经验想要成为技术Leader、CTO、技术VP太难呢!

为什么要学习后端呢?

现在大部分公司都是业务驱动型公司,就是业务为主,技术为辅。而且公司的业务都会放在后端,跟Web前端、移动端关系不大,移动端只做数据的收集与展示不会参与复杂业务逻辑流程,所以说:精华其实都在后端。

举个例子,如果你们公司的App日活达到百万级别,说明App兼容性、适配、用户体验、各项关键指标优化的非常好,而支撑这日活百万的关键性技术还是在后端,所以要不要考虑学习下后端呢~~。

你说你要会点后端知识,再跟后端小哥来个结对编程,那效率高的不要不要的,一个眼神就懂(今晚跟你妈说学Java~~)!

我是怎么学Java后端的?

可能我是比较幸运,在年初时和朋友合作了一个20w的外包项目,我主要负责后端的开发和架构。这个项目对我来说还是挺大的,之前的我都是负责一些App的设计和开发工作这次做后端的开发,多少有点生疏。

当时搞这个项目,客户是说需要千万级的用户,那时的我也没有千万级的概念,只觉得用微服务应该是可以顶的住,一开始是使用的单服务、单数据库的形式,后面面临分布式问题改为多服务、单数据库的形式还缓了缓这个问题,这也算业界难题当时还考虑过2PC、seate、RabbitMQ那时候没时间、人力就没有继续弄了(好机智~~),后面也陆陆续续的解决了一些碰到的一些问题如:

  1. 微服务工程的组织(单服务单仓库 or 多服务单仓库)
  2. 项目工程依赖管理(Maven parent工程)
  3. Docker本地调试(阿里云vpn)
  4. Dubbo服务接口仓库(Nexus仓库)
  5. ...

现在只能想起来这么多了,实际碰到问题比这个更多!所幸是都一一解决掉了,历时2个月左右这个项目也正常上线了,不过后面也出现过一些问题如:机器cpu负载一直在90%以上,那一天我排查了很久,因为基础设施不全只能通过看日志来排查,最后发现是有在刷任务,一直在频繁访问某个接口,发现问题后就及时学习了限流方面的知识,在网关做了个限流,cpu才稳定下来。

再有一次是因为技术方案的问题,这个项目有一个无限级的推广,当时选的方案是嵌套集因为他查询起来很快,但是我们忽略了他修改代价实在是太高,导致系统用户到20w的时候推广关系插入变的超级慢,后来就不得不重新选一个方案用的:闭包表插入、查询效率都可以,只是有些费空间。后面花了大概两天的时候才把数据修复过来(一口老血~~)。

总的来说不会的就学习、问朋友,记忆比较深刻的是一次数据库一直95%以上,学的Java知识较多,对数据库算是了解还不多那时候,找了一天也没找出个问题,最后还是问朋友原来是没加索引查数据都是全表扫描,现在想想真是无语,后来朋友还开玩笑说后续咨询要收费了,哈哈。

最后回顾下,我学过的一些Java后端知识:

  • Servlet API
  • Spring全家筒
    • Spring Framework
    • Spring Boot
    • Spring Web
    • Spring Security
    • Spring Data JPA
    • Spring Cloud
    • ...
  • Mysql
  • Redis
  • JWT Token
  • Maven
  • Tomcat
  • Mybatis
  • Nginx
  • ...

不能再多了,实际上好多技术我是学习过,但是没有实际使用过(难受~~)!!

欢迎关注微信公众号《架构文摘》,精品技术文章第一时间推送。

五年老Android,我决定转后端开发了!的更多相关文章

  1. 40k*16 薪,五年Android开发4轮面试拿下腾讯 Offer !(附真题)

    概述 感觉毕业后时间过得真快啊,从16年6月本科毕业入职了一家不大的公司,到现在快五年了,前段时间金三银四想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,前几天拿到了腾讯的offer,想把 ...

  2. 大学同学做Java开发比我多5K,八年老Android只会crud该转Java吗?

    最近在网上看到这样一个帖子: 做了八年Android开发,感觉这块做着也挺没意思,日常工作就是做一些架构优化,质量数据监控,改一改构建脚本,最主要的是业务负责人没有一个是做客户端的,都是后端的人. 最 ...

  3. Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  4. Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  5. Python后端开发要求

    关于Python后端开发要求 一.对Python有兴趣,熟悉Python(标准库) 最好阅读过源码 了解Python的优化(熟悉pypy更佳) 二.至少至少一门语言(不说"精通") ...

  6. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 & 我的前后端开发简史

    ---新内容开始--- 番外 大家周一好呀,又是元气满满的一个周一呀!感谢大家在周一这个着急改Bug的黄金时期,抽出时间来看我的博文哈哈哈,时间真快,已经到第十四篇博文了,也很顺顺(跌跌)利利 (撞撞 ...

  7. Java后端开发奋斗之路

    本人方向:Java后端开发方向,本文中内容持续更新中 Java技术栈:https://www.cnblogs.com/wyb666/p/10222070.html 推荐书籍:<程序员代码面试指南 ...

  8. (译)Windows Azure:移动后端开发的主要更新

    Windows Azure:移动后端开发的主要更新 这周我们给Windows Azure释出了一些很棒的更新,让云上的移动应用开发明显的简单了.这 些新功能包括: 移动服务:定制API支持移动服务:G ...

  9. app后端开发系列文章文件夹

    一点废话 每个程序猿心中,都有一个大牛梦.我们在晨曦之光中敲击着代码,在寒冬覆雪中思考着0与1. 夏练三伏 冬练三九这说的就是我们这群[江湖]中人.在这里我们门派林立,C语言派历史悠久,在程序界就是嵩 ...

随机推荐

  1. mac本地安装单机hadoop--学习笔记

    Mac配置hadoop1.修改 /etc/hosts127.0.0.1 localhost2.下载hadoop2.9.0和jdk并安装配置相应环境 vim /etc/profile export HA ...

  2. Python+Keras+TensorFlow车牌识别

    这个是我使用的车牌识别开源项目的地址:https://github.com/zeusees/HyperLPR Python 依赖 Anaconda for Python 3.x on Win64 Ke ...

  3. 【Auto.js images.matchTemplate() 函数的特点】

    Auto.js  images.matchTemplate() 函数的特点 官方文档:https://hyb1996.github.io/AutoJs-Docs/#/images?id=imagesm ...

  4. 从零开始用刚买的阿里云实例搭建lnmp环境(非集成包)

    一.安装前 1. 更新系统软件: yum update 2. 查看是否已安装wget: rpm -qa wget 否则安装: yum install wget 3. 查看是否已安装编译器: rpm - ...

  5. WebApi -用户登录后SessionId未更新

    描工具检测出.net的程序有会话标识未更新这个漏洞 用户尚未登录时就有session cookie产生.可以尝试在打开页面的时候,让这个cookie过期.等到用户再登陆的时候就会生成一个新的sessi ...

  6. 知否知否,VS Code 不止开源

    VS Code, 昨夜始于“开源”,如今“开源”深处渡. 读者看到这句话,也许会有疑惑,为什么两个“开源”都加上了双引号? 其实是笔者有意为之,因为这个两个“开源”的意义有着很大的差别,第一个“开源” ...

  7. Java 实现一个 能够 进行简单的增删改查的 超市管理系统

    1. 首先编写一个 Fruitltem 的商品类, 描述 商品的基本信息. 代码如下: 保证详细, 运行的起来, 有什么 问题也可以评论留言. /* * 自定义类, 描述商品信息 * * 商品的属性: ...

  8. [考试反思]0815NOIP模拟测试22

    40分,15名. 1-4:120 75 70 70 35分20名...总之差距极小不想说了 昨天教练说:以后的考试还是联赛知识点,但是难度比联赛高. 没听进去,以为是对于所有人而言的,也就是T1难度变 ...

  9. kettle数据同步的5中方案

    数据同步:当数据源发生改变时,其他相关数据也跟着发展变化.根据需求不同可采取以下方案.1.触发器:在数据库建立增删改的触发器.触发器将变更放到一张临时表里.oracle同步cdc优点:实时同步缺点:影 ...

  10. Java中打印日志,这4点很重要!

    目录 一.预先判断日志级别 二.避免无效日志打印 三.区别对待错误日志 四.保证记录完整内容 打印日志,要注意下面4点. 一.预先判断日志级别 对DEBUG.INFO级别的日志,必须使用条件输出或者使 ...