全沾工程师----如何一个人写完web、Android、iOS、接口、CMS

前言


看了文章标题,你也许吓一跳,心想一个人有那么牛逼嘛。就当笔者浮夸吧,不想争辩了。这是一个神奇的时代,我这一代IT人有太多的工具。虽然我懒(其实程序员都懒),但是,我选择的技术和工具仍然具有相当大的自定义空间。

这不是一篇啥好文章,但是,这篇文章可以给那些有需求全沾的人一点点建议。

沉淀了2个月,又要跳出来哗众取宠,呵呵哒。


全沾工程师


IT领域的全栈工程师,金光闪闪。善学者三五年可达,反之,七八年吧。不是全栈,不敢多言。百度百科定义:指掌握多种技能,并能利用多种技能独立完成产品的人。知乎答案:全栈什么意思?

全沾工程师,大家看着玩儿就好,别当真。反正,我是这么玩的:

  1. 和客户谈需求,做原型图,用墨刀
  2. 设计数据库架构及表,用MySQL/Redis,Navicate/SQLYog管理工具
  3. 设计后台CMS管理系统模块,利用Flask+Bootstrap框架,Pycharm开发工具
  4. 设计编写数据接口,利用Flask-RESTful,Pycharm工具
  5. 设计编写APP功能模块,利用DCloud/Cordova+MUI/Ionic开发Hybrid APP,一套源码能够兼容Android和iOS,也可以移植成Wap
  6. 设计编写Web端功能模块,利用Flask+jinja2+Bootstrap
  7. 使用Python IDLE测试功能模块
  8. 自己申请APP应用上线,购买云服务器部署上线,运维

总结起来,我玩的挺小的:利用Python语言+前端(HTML/CSS/JS)搞定了大多数应用开发需要的技能。其中,了解一些框架的使用,诸如:flask、bootstrap、DCloud等。

果然,在大牛看来还是挺白的。呵呵哒,自己走到现在也是不容易的。


Hybrid APP


这是我全沾过程中,最重要的一个环节。毕竟,平时遇到的人都会有需求做APP,而我如果不与他人合作,就必须独自开发Android/iOS两端。臣妾做不到,只好选择Hybrid。这一块得感谢D厂了(也还是有不少坑)。

目前主流的平台有Cordova(也叫PhoneGap),D厂是国产的,也无所谓了。对于个人开发者而言,够好的了。

之前的相关Hybrid App文章,均在个人博客专栏中,感兴趣可以翻阅。
地址:http://blog.csdn.net/column/details/guzhenping.html


Web前端


很建议诸多技术人员学习好前端。Web开发技术中,基础的知识如Http/TCP/IP协议应该是必须掌握的,高级的知识如V8、Webkit应该花时间去读。还有HTML,CSS3,JavaScript三剑客,是不用说的。

前端的技术,我不敢多言。但正是,HTML/CSS/JS帮助了我在全沾的路上走了这么远。感谢前端工程师这个名词,整个世界已经无法阻挡前端工程师的脚步了!

JavaScript是目前浏览器唯一的编程语言,绝对的垄断。Node.js涉足服务器端开发,绝对的进步。接下来,学好JS真的很有必要。

我所用的前端技术与其他人用的没有什么区别。对于前端工程师很看好!


后台开发


后台对于我就两部分,一个是CMS管理系统,一个是接口模块。数据库,我就是那么设计的。那么设计的,也就是随便设计的,我自己也很无语。

Python可以填很多后台开发的坑。再感谢下Python吧~

掌握好Python基础、Flask和Bootstrap框架的相关知识,能够应对大多数开发场景。


那些年我遇到的坑


  • 我没有好好上学。。。

    没错,第一条就是大学基础知识。请大家一定要看好计算机网络,做Web开发必备知识!请大家一定要开发数据结构和算法,做数据分析和一些边边角角的小功能时,是必备的!

  • 有一套自己开发体系很重要

    我的目标是个人开发者,全沾工程师。所以自己的一套框架,一定要学好。现在有LAMP(其实成了LNMP),但是只能做web开发。

    我的全沾框架:L(Linux)+N(Niginx)+M(MySql)+P(Python)+F(Flask)+B(Bootstrap)+D(DCloud)+H/C/J(HTML,CSS,JavaScript)。还有诸如,Postman接口测试工具、Node.js、RESTful等我都会花时间学习。

    有一套自己东西很重要。同时,保持高效的学习能力。之前做不了一个人开发,就因为没有成熟的开发体系。


结尾


我心里非常清楚我起的标题很浮夸!

我很清楚!
我很清楚!
我很清楚!

But,我就是起了这个标题,醉温之意不在酒。我懂就好,不争辩了。

欢迎关注我的微信公众号“谷震平的专栏”
这里写图片描述

APP市场的火爆,让越来越多的加入到移动互联网的淘金大军中。移动互联网的高门槛,让大多数站长因为技术门槛、资金实力,只能望洋兴叹。APPCMS为此而生,让每一个站长都能参与到移动互联网的盛宴之中。 掌易科技提供的移动互联网解决方案分为数据中心、APP推广联盟和APPCMS三部分。 为什么会有数据中心? 建立一个类似木蚂蚁、豌豆荚、应用汇一样的APP下载站,横亘在站长面前的3大问题:数据更新(每天成千上万的应用版本更新)、数据空间(超过2T的存储空间)、带宽流量(每个应用的图片和APK资源占用大量下载带宽)。掌易科技提供的数据中心为站长解决了这三大难题,让站长有更多的时间专注于内容优化和网站推广。 为什么会有APP推广联盟? 数据中心解决了站长的数据和带宽问题这个后顾之忧,APP推广联盟则为站长的盈利提供了更多的空间。众所周知,一般小站长是很难申请到各种APP推广链接的,我的APP推广联盟对站长申请没有各种限制,最大化帮助站长提高网站收益。 APPCMS是一套专业的APP内容管理系统,APP应用部分需要结合数据中心使用。 APPCMS还提供了资讯、推荐位、专题、友链、正文内链等各种扩展模块,帮助站长更好的个性化自己的网站。 如果是其他地方下载的,请下载官方最新包安装或者升级 1,定时更新增加有contrab权限的linux定时更新 2,修复上一篇下一篇BUG 3,增加自定义上传APK包存储包名 4,增加OEM安卓市场APP(可OEM) 5,增加IIS7 web.config和NGINX conf伪静态规则 6,修复插件开发升级后菜单覆盖问题
### 回答1: 可以使用Java8的Stream API来实现这个功能。 假设ListB中的元素对象为类B,有两个字段key和timestamp,其中key表示某个实体的唯一标识,timestamp表示该实体的更新时间。 代码实现如下: ``` List<B> listB = ... Map<String, B> latestEntities = listB.stream() .collect(Collectors.toMap(B::getKey, Function.identity(), (entity1, entity2) -> entity1.getTimestamp() > entity2.getTimestamp() ? entity1 : entity2)); List<B> result = new ArrayList<>(latestEntities.values()); ``` 首先将ListB转换成一个Map,key为实体的唯一标识,value为实体对象。如果有多个实体对象的key相同,则使用lambda表达式指定如何选择最新的实体对象。最后将Map中的值转换成List返回即可。 注意:使用Stream API时需要保证B类实现了equals和hashCode方法,以便在Map中正确地识别唯一实体。 ### 回答2: 在Java8中,可以通过使用Java Stream和Lambda表达式来实现对ListB中多个key字段相同时只保留最新一条数据的操作。 假设ListB的元素类型为B,其中B包含多个key字段。我们需要按照多个key字段来进行分组,并从每个分组中只取出最新的一条数据。 首先,我们可以使用Stream的collect方法来对ListB进行分组,并将分组后的结果存储在Map中。分组的依据是将B对象中多个key字段的值作为一个新的对象作为Map的key。代码如下: ```java Map<KeyObject, List<B>> groupByKeys = listB.stream() .collect(Collectors.groupingBy(b -> new KeyObject(b.getKey1(), b.getKey2(), ...))); ``` 其中KeyObject是一个自定义的对象类,用来作为Map的key。在KeyObject类中,需要重写equals和hashCode方法,以确保相同的key字段值被认为是相等的对象。 接下来,我们可以使用Stream的map方法来对每个分组中的元素按照某个时间字段进行排序,并将排序后的结果存储在一个新的List中。代码如下: ```java List<B> result = groupByKeys.values().stream() .map(group -> group.stream() .sorted(Comparator.comparing(B::getTime).reversed()) // 按时间字段降序排序 .findFirst() .get()) .collect(Collectors.toList()); ``` 在map方法中,首先使用sorted方法对每个分组中的元素按照时间字段进行降序排序,然后使用findFirst方法获取排序后的第一个元素,即最新的一条数据。 最后,将得到的结果存储在一个新的List中。 综上所述,通过使用Java8中的Stream和Lambda表达式,我们可以很方便地实现对ListB中多个key字段相同时只保留最新一条数据的操作。 ### 回答3: 在Java8中,可以使用Stream的特性来实现ListB中多个key字段相同时只保留最新一条数据的操作。 假设ListB中的元素是一个自定义的实体类对象,包含多个字段,其中也包含key字段用于判断唯一性和比较最新日期。 首先,我们可以通过Stream的groupingBy()方法将ListB按照key字段进行分组,这样就能将相同key的元素分到同一个组中。 然后,我们可以使用Stream的max()方法结合Comparator.comparing()方法来找到每个分组中最新的一条数据。例如,可以使用Lambda表达式来实现: ListB.stream() .collect(Collectors.groupingBy(Entity::getKey)) .values() .stream() .map(group -> group.stream().max(Comparator.comparing(Entity::getDate)).orElse(null)) .collect(Collectors.toList()); 上述代码首先将ListB根据key字段进行分组,然后将分组后的value集合进行Stream操作。对于每个分组的value集合,通过max()方法和Comparator.comparing()方法比较日期字段,找到最新的一条数据。然后通过map()方法将每个分组中的最新数据提取出来,最后通过collect()方法将结果转换为List集合。 最后,得到的List集合中就只保留了每个key字段最新的数据。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值