自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Zero

做好眼前事,珍惜眼前人。。。

  • 博客(49)
  • 资源 (21)
  • 收藏
  • 关注

原创 技术部门 Leader 与团队那些事

不知不觉中,已经进入IT圈子五个多年头了,短短五年,却是人生最美好的五年,这五年中经历了塞班的没落到消失,经历了移动互联网的兴起、疯狂到理性发展,这五年中也接触了太多的人,形形色色、稂莠不齐,有行业的顶级大牛,也有工作八九年却只有两三年经验的水平。带了几年团队后,才发现的发现,即使你是千里马,如果不能遇到你的伯乐,你可能一辈子都是拉车的骡子。招人过程中的一些要素这几年中,当面试官和被面...

2018-07-18 14:11:36 3330 5

原创 简述图片加载框架

今天无心写代码,在公司就是看看新闻和整理点知识点了,无意间翻到我之前画给朋友的一张图,关于三级缓存和一些名词的解释,不多说,不怂,就是干。

2020-10-17 15:30:53 2480

原创 Android路上--AudioRecord 录音详解

AudioRecord + AudioTrack + AudioFormat,通过pcm文件合并并转wav实现录音、暂停、播放、停止、重录、计时等功能。

2018-12-25 11:59:42 9886 1

原创 Android拍照和相册选择图片上传所遇到的一些坑

1、首先遇到的的是Android7.0的坑说是坑,有点欲加之罪的感觉,其实就是Android7.0的一个行为变更,以拍照为例,代码如下: val file = File(Environment.getExternalStorageDirectory(), IMAGE_FILE_NAME) val intent = Intent(Me...

2018-12-25 11:58:47 2906

原创 从烂代码到重构

我们在做任何系统的时候,都不要指望系统一开始时需求确定,就再也不会变化,这是不现实也不科学的想法,而既然需求是一定会变化的,那么如何在面对需求的变化时,设计软件的可以相对容易修改,不至于说,新需求一来,就要把整个程序推倒重来。够用的代码曾经一个同事跟我吐槽过,队友工作四五年了,代码质量依然不咋样,命名不规范,逻辑嘛,除了自己外,谁也看不懂,注释更是凤毛麟角,但是这样的代码却能正常运行

2018-02-06 12:25:09 2934 2

原创 基本的规范和约束(一)

一些基本的规范和约束,几乎每个团队都会有一套自己的准则,一方面统一标准,增加可读性,便于相互间协作开发。另一方面也方便团队成员离职后出现bug,后来者也能更快的去定位并解决问题,降低维护成本,提高工作效率,可维护性大大提升。杂乱无章的代码实现一个大功能,让自己看了都嫌弃的代码,对于后来者去维护,无疑会亲切的问候各路祖宗。一个好的编码习惯,属于一个合格程序员的自我修养,于己于人,百利而无一害。

2018-01-30 18:41:28 5607 7

原创 如何更加安全、高效地选择开源项目(内附详解)

前言在平时的开发过程中,难免会遇到这样那样的难题,或者一些繁琐且不想纯手工完成的功能,对于这些问题,解决的姿势有很多种,可以通过同事间的交流、上网查资料、去官网找文档等,随着开源的推动和完善,寻找合适的开源项目支持,绝对是一个很好的方法。如今市面上的开源项目鱼龙混杂,并且有一些项目早已停止更新维护,跑demo的时候,怎么用怎么正确,一放入项目,却发现哪哪都不合适,比如低版本下才可以运行,高版本删去一

2017-10-17 08:40:01 17524 7

原创 硬解码与软解码的选择

在上篇《快速集成一个视频直播功能》 中提到,“确定需求后进行了一堆调研,最后在B站的 ijkplayer 与 Google 的 ExoPlayer 中做出了选择”,当时毅然决然的选择 ExoPlayer 原因有很多,如有兴趣,可关注我的gitchat接下来要分享的内容,微信扫描二维码便可以进入报名,《如何更加安全、高效地选择开源项目》 ,会详细介绍如何更好的选择一个第三方开源。不多说,本篇先抛开稳定

2017-09-28 16:23:41 33252

原创 如何更加安全、高效地选择开源项目

在平时的开发过程中,难免会遇到这样那样的难题,或者一些繁琐且不想纯手工完成的功能,对于这些问题,解决的姿势有很多种,可以通过同事间的交流、上网查资料、去官网找文档等,随着开源的推动和完善,寻找合适的开源项目支持,绝对是一个很好的方法。如今市面上的开源项目鱼龙混在,并且有一些项目早已停止更新维护,跑demo的时候,怎么用怎么正确,已放入项目,却发现哪哪都不合适,比如低版本下才适合,高版本删去一些方法,

2017-09-19 17:54:30 2547 7

原创 快速集成一个视频直播功能

前言前段时间的工作安排,需要做一个视频监控的功能,其实就是采用 m3u8 做一个直播。确定需求后进行了一堆调研,最后在B站的 ijkplayer 与 Google 的 ExoPlayer 中做出了选择,对于为啥选择了 ExoPlayer ,后面会做具体分析,目前先留点悬念,目前根据选择 ExoPlayer,从最初调研到集成成功打算做一个专题,分别从众多框架中为何选择了 ExoPlayer、硬解码与软

2017-09-17 19:46:43 24065 12

原创 四大线程池详解

new Thread 的弊端首先看一段代码:/** * Created by Zero on 2017/8/30. */public class ThreadTest { public static void main(String[] args) { while (true) { new Thread(new Runnable() {

2017-08-30 17:47:25 30978 19

原创 head first Thread.join()

不使用Thread.join() 测试线程先上代码:/** * Created by Zero on 2017/8/23. */public class TestJoin implements Runnable { public static int a = 0; @Override public void run() { for (int i = 0;

2017-08-24 17:28:19 4131 4

原创 多线程中断机制

在 java中启动线程非常容易,大多数情况下是让一个线程执行完自己的任务然后自己停掉。一个线程在未正常结束之前, 被强制终止是很危险的事情. 因为它可能带来完全预料不到的严重后果,比如会带着自己所持有的锁而永远的休眠,迟迟不归还锁等。 在当前的api中,Thread.suspend、Thread.stop等方法都被Deprecated了,线程只能用interrupt中断,而且不是立刻中断,只是发了一

2017-08-18 12:02:55 15969 19

原创 给最真的自己加上static final

有时候改变,并不一定是成长,给最真的自己加上static final属性,保留一点最真实的自己。前段时间,技术交流群里的一个好基友波哥,彻底抛弃Android转向javaEE的怀抱,做得很彻底,直接删了所有的Android资料,很有一种破釜沉舟之势,很欣赏这种方式。回想了下,类似这种事情,我以前做得少吗?我一直很喜欢那时候的自己,凭借一股热情和任性,去做一件认为对的事,坚信自己一定会做好,不用

2017-08-18 11:51:37 6347 20

原创 如果不从事编程,我可以做什么?

第一篇:勿忘初心,继续coding第二篇:编程路上,送给处于迷茫中的你和自己第三篇:编程路上,对于迷失者的一些小小建议第四篇:如果不从事编程,我可以做什么?在校期间踏入工作的不到五年时间里,曾多次问自己,如果有一天我不做开发了,我能做什么?相信这个问题,一直困扰着很多人。一入码海深似海,从此天涯是路人。想起在校期间,一次和学委出去吃饭,她问了我一句,如果毕业后你不做软件,你会去做什么?当时不

2017-08-17 00:16:33 25411 68

原创 深入Thread.sleep

一直都说,Threed.sleep是不会释放锁,而wait是释放锁的(对象锁),现理论上来分析一下啊。由于CPU分配的每个线程的时间片极为短暂(一般为几十毫秒),所有CPU通过不停地切换线程执行,这样就给程序员一种错觉,以为多个线程是在同时执行。sleep就是正在执行的线程主动让出cpu,cpu去执行其他线程,在sleep指定的时间过后,cpu才会回到这个线程上继续往下执行,如果当前线程进入了同步锁

2017-08-10 14:54:48 27258 18

原创 通过注解完美解决混淆问题

混淆是代码安全一个很有效的措施,防止代码在市场中裸奔,Android studio通过写proguard-rules.pro文件来混淆,mainfest中的类不混淆,四大组件和Application的子类和Framework层下所有的类默认不会进行混淆,对于四大组件是不可以混淆的,之前还有人和我争论过,manifest中需要的是配置完整路径,一旦混淆了,路径或者名称就变了,怎么还能找到?第三方会提供

2017-08-03 23:59:55 10967 5

原创 编程路上,对于迷失者的一些小小建议

前几天,在半梦半醒中写了一篇《编程路上,送给处于迷茫中的你和自己》,没想到还挺受欢迎,同时收到了一些朋友的留言和感谢,意外之余也挺开心。大多人都会经历的迷茫其实这也都难免的,现在计算机技术更新那么快,日新月异,各种技术、各种语言爆发式增长,我一个好朋友在小日本(没有鄙视的意思,习惯这么称呼了)从事开发工作,经常和我说想转行,做不下去了,公司一会让她学PHP,一会让她做HTML+CSS,过一段时间又是

2017-07-30 19:49:10 14086 22

原创 线程池原理

面向对象编程中,对象创建和销毁是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是对一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些”池化资源”技术产生的原因。比如大家所熟悉的数据库连接池就

2017-07-27 17:49:50 12456 6

原创 编程路上,送给处于迷茫中的你和自己

在迷茫中入行从离校算起,踏入社会都快五年了,在最初的浑浑噩噩中度过了半年,终于在2013年上半年,我开启了编程这条不归路,或许你不会相信,我刚入行的时候,九九乘法表都不会写,甚至一个处了多年的哥们都嘲笑我,一个连java都不会的人,居然跑去做Android,现在想起,内心还是一阵心酸,或许也是那句话,才让我更加坚定的走下去,跪着也要走完自己选择的路。刚出来找工作的时候,那真的就是我的辛酸史,我是住在

2017-07-22 13:01:38 12606 51

原创 防侧漏之弱引用的使用

本文依然基于github上的开源框架为基础,看过之前发的 最新Retrofit + RxJava + MVP 那篇blog的讲述,应该明白框架里面的大概,一步步兑现之前的承诺,会写上十篇左右的帖子来讲解里面的要点和难点,今天主要讲述的是baseActivity里面的WeakReference。最初入行的时候,使用handler一般都是如下方式:private Handler handl

2017-07-21 18:54:49 4429 4

原创 数据请求优化之容器缓存

今天qiugong兄弟喜得贵子,升级当爸,开心之余,决定写篇博客庆祝下,之前忙着一些琐事,自从上篇博客最新Retrofit + RxJava + MVP 发表后,原本打算写上十篇左右贴子来讲述之前传到github上的framework,却拖了一个多月还未动笔,惭愧。对于日常开发中,有时候很多接口并不需要多次调用,只需要访问一次就够,比如省、市、区三级目录,如果把这个放在本地,处理不当就会卡死,之前想

2017-07-17 18:09:41 3566 6

原创 最新Retrofit + RxJava + MVP

此处搭建的框架是目前最新版本,项目今天刚搭建好,(^__^) 嘻嘻……。 先撸上包: compile ‘com.jakewharton:butterknife:8.6.0’ compile ‘com.jakewharton:butterknife-compiler:8.6.0’ compile ‘io.reactivex.rxjava2:rxjava:2.1.0’

2017-05-31 22:02:02 5992 16

原创 Android混合开发,html5自动更新爬过的坑

现在使用混合开发的公司越来越多,虽然出现了一些新技术,比如Facebook的react native、阿里的weex,但依然阻挡不了一些公司采用h5的决心,当然,这也是从多方面考虑的选择。在三年前就使用过html5混合开发,当时做的是一款贵金属软件,涨跌五线谱、乾坤交易,还有各个股市的信息,那时候还是上波牛市爆发的前夕,哎。。。最近公司让用h5混合开发,一些页面和功能有h5分担,最初时候放在本地as

2017-04-21 14:10:33 8701 3

原创 android逆向分析之从smali到java

通过上一篇android逆向分析(一),在dex2jar的前提下,我们获取到了源码,在apktool的前提下,我们可以获取到资源和smali文件,本篇主要讲述smali几个最基本的语法和smali转java。本片通过ServerListActivity.smali(来源于上篇apktool反编译出来的)来讲述,首先打开此文件,片段如下:.class public Lcom/cpic/jst

2016-10-28 16:26:26 45196 5

原创 android逆向分析之反编译

提到逆向工程,首先就要提到反编译,对于反编译,现在工具还是比较多的,市面上广泛应用的三神器(apktool、dex2jar、jdgui),本篇主要围绕着三神器展开,后面还会阐述smali和使用smali2java。我是通过这三神器入门的,最初的时候,通过反编译去看一些公司的架构和一些功能的实现,还是挺嗨的,但是伴随着软件安全意识的加强,还有各个公司对自己产品的保护,现在反编译的难度越来越大的,可读性

2016-10-19 22:13:46 5567 4

原创 泛型的一次总结

java在1.5版本中增加了泛型,在没有泛型之前,从集合中读取每一个对象都需要进行强转,如果一不小心插入了类型错误的对象,在运行时就会报错,给日常开发带来了很多不必要的麻烦,比如以下代码:public class TestGeneric{ public static void main(String[] args) { List list = new ArrayList()

2016-09-20 10:14:32 1836 2

原创 刮刮卡功能的具体实现

今天整理之前的代码,忽然看到之前自己写的一个刮刮卡,整理下以便以后使用,同时分享给需要的朋友,如有错误,还请多多指正。实现的步骤,其实就是徒手画三个图层叠加在一起,最上层是绘制需要的问题,就是以上所述的“骚年,刮我吧”,第二层就是覆盖宽高的灰层,第三层是结果层,多的不啰嗦了,具体实现如下,附上详细注释。/** * * created by zero on 2016-9-9 * * 刮刮卡

2016-09-09 17:33:26 3269

原创 原来你是这样的NullPointerException

日常开发过程中,最常见的异常莫过于NullPointerException,之前的时候,只是知道去找到报错的位置,然后去解决它,最近有空学习C语言,就去深究了下NullPointerException异常的本质。发生NullPointerException的情况:调用 null 对象的实例方法。访问或修改 null 对象的字段。如果一个数组为null,试图用属性length获得其长度时。如果一

2016-08-30 16:39:41 2638

原创 建造者模式在实际开发中的运用

通过上篇《十分钟学习建造者模式》相信大家对建造者有了一个基本的认识了,但有些人会有疑问,对于建造者模式,怎么灵活运用到项目中,有时候我也会有这样的体会,对于一个知识点或者技术,看了一遍后就觉得会了,但却不知道怎么灵活运用,才疏学浅,只是分享下自己一些微薄的见解,如有错误,还请多多留言指教。不多说了,直奔主题,先说一个需求,在我目前手里的两个项目里面,都有大量的popupwindow,这些pop

2016-08-19 23:05:59 5697 4

原创 十分钟学习建造者模式

本篇从生活中实例开始,循序渐渐,一步步引入观察者模式。2010刚上大学的时候,辅导员都会让学委统计下学生的信息,第一次的时候,只是让学委统计基本信息,姓名、学号、手机号,当拿到这个要求的时候,一般情况下我们会采用构造函数去实现,把姓名、学号、手机号作为参数传过去,然后打印出来就好,代码如下:public class BuilderTest{ /** * created by zer

2016-08-19 14:42:59 3259 2

原创 勿忘初心,继续coding

对于每个人来说都会有一篇属于自己的净土,一个神圣不可侵犯的地方,而我的那片信仰,就是那时候的母校,是的,是那时候的。上个月去了一趟母校,转身一想,毕业已经三年了,三年没回来了。如果从2012年底离校开始算起,,这三年多的经历,除了少有的甜,这其中太多的酸苦辣,一直想回去,却一直没有勇气回去。工作三年多了,这次好像好久没总结了,最近总是迷茫,一直在考虑一个问题,三年多的Android开发,我

2016-08-04 12:05:33 5100 7

原创 微信支付返回-1的问题集锦与各种爬坑过程

之前公司做微信支付的时候,负责这一模块的同事,天天抱怨微信支付的各种坑还有文档的不清晰,最近帮朋友做了一个app,里面就有这一功能,看了一上午文档,瞬间发现我的语文也没学好,各种看不懂就算了,提供的代码居然还有错误,我可以骂人吗???!!!还有更恶心的就是第一次调试的时候可以唤醒微信,以后就一直返回-1,相信会有很多朋友和我遇到同样的问题。先从申请微信支付说起,需要提供的包名和签名,包名这块肯定没问

2016-07-28 15:37:11 7916 12

原创 十分钟解析LocalBroadcastManager

关于LocalBroadcastManager,首先要从BroadcastReceiver 说起,一次无意间打开BroadcastReceiver 源码,最上面的说明里面会有这么一段话:If you don’t need to send broadcasts across applications, consider using this class with LocalBroadcastManag

2016-07-11 17:05:56 10615 2

原创 单例模式之坑与爬坑

上篇简述了其中单例还有部分个人看法,本篇主要从三个问题进行开展怎么避免线程阻塞怎么避免内存泄漏怎么避免被反射首先先看一段事例代码public class OkHttpUtils{ private static OkHttpClient singleton; private static final int TIME_OUT = 0X00000A; private Ok

2016-07-05 17:10:54 3046 1

原创 十分钟认识单例模式的多种姿势

对于单例模式,有点工作经验的人都使用过,原本未打算去写这块的,感觉多此一举,虽然写博客最主要的目的是给自己做笔记,但由于种种原因,决定把这个最基础的设计模式拿出来写成两篇博客,第一篇叙述七种单例,第二篇叙述单例中的坑,主要是双重锁的滥用和扩展思考。 使用单例的优点:单例类只有一个实例共享资源,全局使用节省创建时间,提高性能其中表现方式饿汉式public class Singleton

2016-07-05 10:35:45 2093 2

原创 迪米特法则在Android实际开发中的运用

迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP)。如果两个类不必彼此间直接通信,那么这两个类不应该发生直接的相互关系。如果其中一个类需要调用另一个类的方法,可以通过第三者转发这个调用。 迪米特法则还有一个英文解释:Only talk to your immedate friends(只与直接的朋友通信)。对于这个翻译

2016-06-30 23:54:30 3416 1

原创 通过在Android实际开发初探模板模式(一)

最近比较忙,就很少更新自己的笔记(blog),昨天一个功能的开发中,总觉得那个页面会是一个很好的案例,就想把它记录到笔记中,今天忙中偷闲,把它单独拿出来做个笔记分享下。首先,我们先看下效果图: 看到这个的时候,当时瞬间有点兴奋,解决方案爆棚在一个activity中用五个listview或者recyclerview控制显示和隐藏在一个activity中用一个listview或者recycle

2016-06-22 16:25:03 4067 12

原创 通过adb录制视频并通过FFMPEG将MP4转换成GIF格式(二)

通过上篇文章,我们得到了MP4文件,接下来,我们将把这个文件转化成gif图片,这篇不啰嗦,直接干货,本篇主要围绕ffmpeg来讲述,ffmpeg对于很多人来说就是只闻其声不见其人,是的,在本篇博客之前,我也没怎么接触过,FFmpeg是开源的。但我们不必去下载它的源代码。下载已经编译好的exe/dll即可。可以到http://www.ffmpeg.org/download.html,然后点击“Win

2016-06-13 17:26:51 5390 1

原创 通过adb录制视频并通过FFMPEG将MP4转换成GIF格式(一)

前段时间写一篇贴子,当时需要gif去演示一个效果,看了好多解决方案,有的是用QQ影音转换的,便下载了一个QQ影音,发现QQ影音只能通过截图方式去操作,无法直接将MP4格式的直接转换成gif,后来想起了一款神器–快播,我记得快播有转码的功能,但是快播也是通过播放时候截取一段来转码,也没法直接转成gif,得到的gif不清晰,非常小,在这不禁要来一声叹息,用一行代码表达自己的不满, i

2016-06-13 15:27:27 3861 2

最新retrofit+rxjava+MVP

目前最新retrofit、rxjava搭建的框架

2017-05-31

android反编译工具集合

android反编译工具,包括了apktool、dex2jar、jdgui、Smali2Java

2016-10-24

android反编译工具

apktool、dex2jar、jdgui、Smali2Java一起打包拿走

2016-10-20

ffmpeg帮助文档

此文档版本有点低,现在官网更新到3.0了,但是没找到3.0的帮助文档,只找到了1.2的。

2016-06-13

ffmpeg需要的包

包含了32位和64位两个文件,根据需要自己选择,此文件是Windows平台下的,若需mac和Linux,自己去官网下载

2016-06-13

最新版百度地图api,根据位置获取所在地的经纬度并定位

根据最新版的百度地图api手写的一个demo,项目名称和appkey已配置好,可直接调试或使用,若想使用到自己项目中,直接替换即可,本demo主要根据所在位置获取经纬度,并根据经纬度定位,比较适合新手,仅供参考,若有错误,希望大神批评指正,不喜勿喷,谢谢

2014-11-19

通过百度地图,根据地名获取经纬度,内有详解

通过百度地图,根据地名获取经纬度,通过经纬度定位,或者直接根据地名定位,内有详解,若有问题,请留言

2014-11-18

openfire聊天记录保存插件

盗用别人的架包,虽然有点不厚道,但很多人没分却没法下载,请让我无私一次,希望作者原谅

2014-07-30

Java帮助文档 1.6中文版

Java帮助文档 1.6中文版,希望是你想要的

2014-07-02

多人在线聊天系统源码 xmpp+openfire

多人在线聊天系统源码 xmpp+openfire

2014-06-13

jdk1.5 64位

jdk1.5 64位,希望能够帮助寻找的人

2014-06-13

openfire缺少的架包jar

openfire开发过程中可能缺少的架包,但愿这是你开发中所需要的

2014-06-12

百度云推送android端例子与文档

百度云推送android端例子与文档,轻松实现即时通讯

2014-06-09

安卓4.4源码架包

最新安卓4.4源码架包,kitkat,你值得拥有。

2013-12-18

安卓四大组件之service

安卓四大组件之service,一个简而易学的文档,希望能给您带来帮助

2013-11-09

反编译工具(dex2jar)

反编译工具(dex2jar),愿你的代码更加安全

2013-11-07

Android之Activity生命周期

Android之Activity生命周期,适合新手学习,全面而详细的介绍了Activity的生命周期。

2013-06-04

安卓日历控件

以安卓为基础,三种不同样式的日历,适合新手学习

2013-06-04

图书馆管理系统 毕业设计

图书馆管理系统毕业设计,全面分析了你所需要的

2012-10-14

C语言--第二届国信蓝点杯高职试题

2011年度,国信蓝点杯软件大赛高职组C试题

2012-02-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除