根据文章推测,估计是迅雷的程序员,
鸟厂的Android人才真的很少,有Android技术三年以上的人全公司估计少之又少。鸟厂其实人才不少,但是留不住,很多人呆了一年就离开,真是件令人悲伤的事,可是互联网行业还真是大部分公司都是这样子。有时候人真需要沟通交互才可以进步 更快。我已经很久没有试过这个感觉了。那种进步很快,跟大家交流碰出火花的情形少之又少,还是两年前刚来鸟厂的时候有这个感觉。有时候觉得挺孤独的。技术那时候的兄弟都离开了。项目最近两个月三个水平相当的兄弟离开了,这让我感觉到很寂寞。
这个软件的作者:
湾湾日记-OneDiary – 一款支持自动备份和跨平台多设备之间同步数据的日记APP
博客文章列表
- swift初探
- Swift 中的Closures(闭包)详解 - BennyLoo - 博客园
- 关于程序架构设计
- 技术,社交,生活
- Android Activity动画
- Activity动画(二)
- 自定义DateView控件
- 快速滚动条(FastScroll)的定制
- 关于Pelican上Disqus无法加载的问题
- DISQUS首页、文档和下载 - 开源评论系统 - OSCHINA - 中文开源技术交流社区
- 当做了一段时间的Android的困惑
- Android源码学习系列开篇
- Android源码学习之View
- 股票投资总结
- Android源码学习之ViewGroup
- Android开发中何时使用多进程?
- Android图片缓存和相关开源项目
- 再谈iOS开发和Android开发之间的切换
- Android下载器开发
- iOS系统相册上传不得不说的那些事儿
- 同一个应用的安卓版本和iOS版本开发杂谈
- Jenkins slave ReactNative项目自动打包
- react-native框架源码学习(iOS)(下)
- react-native框架源码学习(iOS)(上)
- Code Review方案
- 浅谈ReactNative技术的优劣
- Android so库加固加壳方案
- 2017年总结和2018年展望
- 玩客云的前世与出生
- 手机局域网内(包括热点)发现和组网通讯实现
- 声纹识别之Android手机录音采集探讨
- 适配iOS11与iPhone X需要注意事项
- Coturn在iOS端应用和libevent的编译
- 2017年
- 2016年总结
- iOS上传文件支持断点续传
- 升级Xcode8后Jenkins打包问题
- 升级Xcode8后需要注意的事项
- 关于技术人员加班问题的看法
- iOS持续集成记(iOS+Jenkins+Cocoapods+蒲公英)
- 打印杨辉三角--编程算法系列之一
- 浅谈VR
- 关于H5和移动客户端开发的未来
- 生活琐事
- Flutter框架研究和与RN对比
- 多家公司的人证比对算法体验和开发感想
- 中国互联网群体跟几年前发生了巨大变化
- 谈谈归并排序算法
- SVG图片在移动端的应用解决方案
- iOS开发如何做外部测试
- 2018年总结和2019年展望
- 如何写出不太坏的代码
- 记一次WebView填坑过程--由换行符引发的血案
- AOP在移动开发中的应用
- 2019年总结与2020年展望
- 上传应用到苹果一直卡住验证中(authentication with the app store)问题解决
- 探讨从H5页面拉起APP的技术方案和问题
- 《深度学习入门》读后感
- 我的十年
- APP推送和APP换起技术方案探讨
- 移动端文档边缘检测AI方案
- Flutter APP加入信鸽推送通知方案
- 我的35岁
- HashMap与红黑树学习总结 | GitHub - szuwest/share_ppt: 技术分享PPT
- Flutter framework源码学习(一)
- 2021年年度总结
- 湾湾日记(OneDairy)的隐私政策
- 湾湾日记(OneDairy)的技术支持
- 湾湾日记(OneDairy)介绍
- Web3的未来
- 我的2022年终总结
- 国内移动应用商店对个人开发者的支持现状
摘要:Android开发中何时使用多进程?
1.要想知道如何使用多进程,先要知道Android里的多进程概念。一般情况下,一个应用程序就是一个进程,这个进程名称就是应用程序包名。我们知道进程是系统分配资源和调度的基本单位,所以每个进程都有自己独立的资源和内存空间,别的进程是不能任意访问其他进程的内存和资源的。那如何让自己的应用拥有多个进程?很简单,我们的四大组件在AndroidManifest文件中注册的时候,有个属性是android:process
,这里可以指定组件的所处的进程。默认就是应用的主进程。指定为别的进程之后,系统在启动这个组件的时候,就先创建(如果还没创建的话)这个进程,然后再创建该组件。你可以重载Application类的onCreate方法,打印出它的进程名称,就可以清楚的看见了。再设置android:process
属性时候,有个地方需要注意:如果是android:process=":deamon"
,以:开头的名字,则表示这是一个应用程序的私有进程,否则它是一个全局进程。私有进程的进程名称是会在冒号前自动加上包名,而全局进程则不会。一般我们都是有私有进程,很少使用全局进程。他们的具体区别不知道有没有谁能补充一下。
2.使用多进程显而易见的好处就是分担主进程的内存压力。我们的应用越做越大,内存越来越多,将一些独立的组件放到不同的进程,它就不占用主进程的内存空间了。当然还有其他好处,有心人会发现Android后台进程里有很多应用是多个进程的,因为它们要常驻后台,特别是即时通讯或者社交应用,不过现在多进程已经被用烂了。典型用法是在启动一个不可见的轻量级私有进程,在后台收发消息,或者做一些耗时的事情,或者开机启动这个进程,然后做监听等。还有就是防止主进程被杀守护进程,守护进程和主进程之间相互监视,有一方被杀就重新启动它。应该还有还有其他好处,这里就不多说了。
3.坏处的话,多占用了系统的空间,大家都这么用的话系统内存很容易占满而导致卡顿。消耗用户的电量。应用程序架构会变复杂,应为要处理多进程之间的通信。这里又是另外一个问题了。
摘要:再谈iOS开发和Android开发之间的切换
我发现技术人员都是很自我,看到不爽的功能每个人都想自己来实现一把。我觉得成熟成技术人和普通技术人员的一个重要区别是:当加入一个新项目的时候,他要实现一个功能或者方法,他们去该项目中是不是已经有实现,有的话就直接拿来用,或者扩展它。还有他会尽量去适应新项目的代码风格,不是不管三七二十一就用自己的风格。我觉得每个人都能这么想这么做的话,代码管理会变得容易很多。
摘要:探讨从H5页面拉起APP的技术方案和问题
现实的情况是我们做APP开发的不太懂网页开发,做网页开发的又不懂我们APP开发(还有相关的跳转技术),所以难上加难。
摘要:AOP在移动开发中的应用
AOP简介
- AOP,Aspect Oriented Programming,面向切面编程
- 面向切面编程是一种通过横切关注点(Cross-cutting Concerns)分离来增强代码模块性的方法,它能够在不修改业务主体代码的情况下,对它添加额外的行为。
- 是对OOP的一种补充,是一种解耦的重要手段
AOP常用概念
- Join point:程序执行期间的一个点,表示方法的执行
- Pointcut: 切入点实际上也是从所有的连接点(Join point)挑选自己感兴趣的连接点的过程
- Aspect: 程序横向切割成若干的面,即Aspect.每个面被称为切面
- Advice: 某个特定连接点的某个方面采取的行动。不同类型的建议包括“周围(Around)”,“之前(Before)”和“之后(After)”建议
AOP实现原理
- 编译期间的静态织入,又称为编译时增强
- 运行期间的动态代理,又称为运行时增强
运行时AOP
- 程序运行时,依靠预先创建或运行时创建的代理类来完成切面功能。这种方式依赖编程语言的动态能力
- JDK 基于接口的动态代理技术(Spring AOP),基于Java反射特性实现
- Objective-C的Method Swizzling和KVO,基于OC的Runtime实现
AOP在移动端应用:无埋点统计
- 传统埋点代码涉及各个模块,有点繁琐又没有太大技术含量
- 无埋点采用AOP实现,解耦代码,且不容易漏统计。业务开发人员只需关注自己的业务代码
Android Gradle 工具在 1.5.0 版本后提供了 Transfrom API, 允许第三方 Plugin 在打包 dex 文件之前的编译过程中操作 .class 文件 遍历所有要编译的class文件并对其中符合条件的方法进行修改,注入我们要调用的SDK数据搜集代码,从而实现自动埋点的目的
带你了解埋点、无埋点、全埋点 - 知乎
史上最强无痕埋点方案的设计与实现 - 知乎
什么是无埋点技术 · 百度移动统计帮助文档
业界中对于代码埋点主要有3种主流的方案:代码手动埋点、可视化埋点、无痕埋点。简单说说这几种埋点方案。
- 代码手动埋点:根据业务需求(运营、产品、开发多个角度出发)在需要埋点地方手动调用埋点接口,上传埋点数据。
- 可视化埋点:通过可视化配置工具完成采集节点,在前端自动解析配置并上报埋点数据,从而实现可视化“无痕埋点”
- 无痕埋点:通过技术手段,完成对用户行为数据无差别的统计上传的工作。后期数据分析处理的时候通过技术手段筛选出合适的数据进行统计分析。
参考资料
- AOP设计原理
- Spring 框架简介
- Android面向切面编程(AOP)
- Android AOP之字节码插桩
- 应用于Android无埋点的Gradle插件解析
- AOP for Flutter: AspectD(闲鱼团队开源框架)
- 58无埋点数据采集技术在Android端实践
- 如何理解 Transform API
关于技术人员加班问题的看法
身在IT行业,加班是永远绕不开的话题。互联网是以快速变化著称,加班似乎是成了名正言顺的。最近58同城加班996的问题也引起了广泛关注,而恰好最近两个星期,我们部门也一直在加班。我准备也谈谈这个问题。
我们加班的缘由
两个星期前,我们接到消息,要在两周之类上线3.0大版本。3.0版本改版非常大,虽然一部分功能已经开发了,但是一直在改,功能就从来没有稳定过。而且我们还正在开发2.7版本,突然间两周之类要上线3.0版本,是不可能的。但是这应该是老板的命令,我们应该没有还价的可能,所以加班是不可避免。还有一个更加不可避免加班的理由:我们的一个同事这个时候被借走了,借去别的子公司帮忙开发。这个借人也不是我们可以商量的,这个公司老板的要求,所以雪上加箱。
加班开发和家庭影响
为了能尽可能达成目标,我们每天都是工作到10点多,有些同事要搞到凌晨2点多,从产品,设计,到测试,所有人都需要加班。周末两天也需要加班。我老婆对我每天都很晚回家意见非常大,所以我尽量能10点多之后就回家,不然肯定闹家庭矛盾。周日我也不得不请假,留了另外两个同事在加班开发。其实我们已经非常高效了,我们的人力比Android客户端的人力还要少,大家都要努力加班赶进度。后来两个星期后,结果当然是新版上不了线的,所以拖后了几天。他们还想我们客户端周末来加班赶进度,可是我真的不想再加班了,因为我们的团队已经连续上了12天班了,所以我就没有要求加班,我觉得必须让大家停一下,因为后面半个月还有更艰巨的任务等着我们,我不想把我们的队伍搞残。
加班的伤害
本来我想说说加班是否有必要,但是想了想在这个行业貌似有时候加班是不可避免。就像我们现在的情况。但是造成需要加班来实现需求和赶进度是谁的过错?是技术人员无能,还是管理层的过错。我倾向于管理层的过错。管理层很多时候想不清楚,或者想清楚了计划没有做好,需要团队加班来开发。很多时候加班是可以避免的。就像我们现在的情况,其实3.0版本一早就开始规划了,为什么之前没有想好,而突然一句话就说要上线?之前那么多时间去干嘛了?就算有些变化不可避免,一定要加班才能解决,我希望管理层也有心里准备,长时间加班的造成伤害是很大,而且加班赶出来的东西,质量无法保证,有可能会造成一些技术债务。有些伤害可能无法弥补的。
-
给技术人员身体健康造成影响。每天加班给技术人员造成休息时间不足,没有时间锻炼,长期处于亚健康状体,一旦得病对身体影响很大
-
造成家庭矛盾。每天很晚回家,陪伴家人的时间很短。夫妻很容易闹矛盾,这个影响家庭和谐,严重的话会影响婚姻。
-
产品质量无法保证,有可能会造成一些技术债务。每天大量的工作,人很容易疲惫,大家为了赶进度,也会忽略质量。这样很难保证产品的质量是最优的,有些架构不好的话,会造成一些技术债务。后面需要花大量时间来偿还。
-
容易造成人员流失。我觉得这可能对公司伤害最大的。因为长期的加班形态会造成上面3个不好的影响,然后员工就很有可能离开。尤其是时候没有做好弥补的情况。例如产品最终是做出来了,但是没有达到预期效果,虽然员工加班了,没有办法得到他们期望的薪酬或者奖励补偿,他们会对公司很失望,所以很容易就会选择离开。这个是非常自然的,我自己以前就经历一次。我们加班加点花了两个月将产品做出来了,最后很多人就离开了,我也自己当时还幻想公司会给我加薪或者给的年终奖多一些,最终的结果很失望,我也选择了离开。所以我对大部分的加班赶产品的形式都是不看好的。
所以我是反对长期加班的,对于那种996的上班时间,更是不看好,这简直是剥削,这是管理层的失职。如果是非加班不可,一定要做好计划,不能长期加班,给予调休和补偿。
总之,能不加班就不要加班,其他方面做好,提高工作效率和协作效率,这才是正道。
发表评论