自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

顾林海

在学习中成长,在正向里改变,在尝试时突破,给人生一次变好的机会。

  • 博客(260)
  • 资源 (4)
  • 收藏
  • 关注

原创 随笔:项目开发中的一些思考

以下是自己在工作中的一些思考,先聊聊如何提升软件研发效能,从四个点来聊聊:高效沟通高效沟通我放第一位,为什么?之前因为沟通不畅,团队使用了一些错误的方案解决问题,等我们再去想推倒重来,成本太大。沟通者不单是技术与技术,也包括技术与产品,关于技术与产品撕逼已经习以为常了,沟通不畅,导致技术最后的产物没有符合产品的预期。因此,如何解决高效沟通?一定要有历史文档!一定要有历史文档!一定要有历史文档!重要的事说三遍,很多沟通导致的争吵,都是因为双方没有充分的理解对方的意图,所以,文档化很重要,这里我

2022-05-15 17:26:16 1688

原创 读书笔记-《增长黑客》-好产品是增长的根本

增长黑客的基本原则之一就是在确定你的产品是否不可或缺、为何不可或缺以及对谁来说不可或缺之前不要进入快节奏试验阶段,也就是说,你必须要了解你的产品的核心价值是什么、对哪些客户来说具备这些核心价值以及为什么。过早追求增长会产生两个层面的机会成本。首先,你会将宝贵的时间和金钱浪费在错误的事情上,即推广一个不受欢迎的产品。其次,当你过早追求增长的时候,你非但没法把早期客户转化为忠实粉丝,反而会令他们失望,甚至使他们变成愤怒的批判者。记住,病毒式的口碑传播是一把双刃剑,它可以帮助你实现增长腾飞,也可以令你灰飞烟灭。

2020-12-20 11:28:38 444 1

原创 读书笔记-《增长黑客》-搭建增长团队

案例举例:BitTorrent公司BitTorrent既面临PC软件增长的停滞,也没有移动版的产品,被甩在了后面。公司组织架构:用的是传统的筒仓式组织架构,分为市场部、产品部、工程部和数据科学部。产品团队和工程团队下设小组,负责不同的产品,比如Mac版和Windows版客户端以及刚刚起步的移动版。跟所有类型的企业一样,它的数据团队和市场团队均为这些产品小组服务,产品开发过程完全与市场营销相分离。产品经理会告知市场经理即将发布的新产品或新版本,之后市场团队便负责所有的营销工作,也就是说营销工作完全没有产

2020-12-17 22:20:59 608

原创 读书笔记-《增长黑客》-低成本、高效率的精准营销

感兴趣关注我的微信公众号“顾林海”,聊聊技术、聊聊人生,记录自己所学所想案例在线存储服务公司Dropbox优点:初期用户很稳定,有种子用户产品有实用价值缺点:规模不够大预算有限目标:希望吸引更多用户外部环境:一家创业公司Mozy就比他早三年起步另一家公司Carbonite已经获得了4 800万美元的融资微软和谷歌这两大超级巨头公司也在进军云储存领域具体实施:以现有用户做一个简单的调查,发现它的分数非常之高,在那些已经充分探索了产品各项功能的用户中,得分更是高得

2020-12-12 09:04:22 464

原创 读书笔记-《墨菲定律》

在星球「大前端交流」中陆陆续续读了《程序员成长课》、《好好学习-个人知识管理进阶指南》、《学习之道》、《墨菲定律》。这篇是阅读《墨菲定律》时记的笔记,都是一些生活中的底层规律,关于Android的系列教程还在归纳整理中,等有新消息的时候会通知到大家。下一本在星球读的书是《原则》。第一章:成功定律洛克定律:确定目标,专注行动「有目标才会成功」人要有一个奋斗目标,这样才会有精神、有奔头。给自己人生指定一个目标,然后不断地向它靠近,终有一天你会达到这个目标。培养自己的目标意识。「目

2020-05-10 11:58:09 12484 1

原创 读书笔记-《程序员成长课》

前言花了一周多的时间阅读完了《程序员成长课》,以下是我们在阅读《程序员成长课》记录下来的笔记,有时候发现一个人学习比较枯燥,但幸运的是,我有一帮朋友和我一起学习,一起成长。最后欢迎大家加入知识星球“大前端交流”,我在星球内开展了读书打卡、健身打卡活动,加入我们一起见证属于我们的成长之旅。如何选择技术方向技术成长三阶段模型我们在一个专业领域内的成长,基本上都会经历三个阶段:专项能力的提...

2020-04-12 15:41:19 1525 1

原创 Android性能优化实践

绘制优化绘制原理View的绘制流程有3个步骤,分别是measure、layout和draw,它们主要运行在系统的应用框架层,而真正将数据渲染到屏幕上的则是系统Native层的SurfaceFlinger服务来完成的。绘制过程主要由CPU来进行Measure、Layout、Record、Execute的数据计算工作,GPU负责栅格化、渲染。CPU和GPU是通过图形驱动层来进行连接的,图形驱动...

2019-05-27 19:22:01 17095 2

原创 职业生涯规划访谈,写给在校的你们

今天一位在校大学生邀请我在线做一个关于职业生涯规划的访谈,在此我将他提出的问题以及我个人的一些看法贴出,希望能给在校或是即将毕业的你们有所帮助。问:老师你好,就是我想问一下我们计算机专业的大学生,在课堂上学好必要的知识之外,在课余时间还应该去学习一些什么必要的技能吗?答:建议在校大学生八分精力放课内,剩下两分精力放课外,基础知识非常的重要,在学习的同时需要及时的输出,可以将学习到...

2019-05-07 21:25:01 29733 6

原创 2019年,智慧零售是如何影响零售行业?

智慧零售是在16年阿里云栖大会上,马云提出“新零售”这个概念后才开始存在的,马云在演讲中第一次提出了新零售的概念,马云说“未来的十年、二十年,没有电子商务这一说,只有新零售。”阿里巴巴是马云一手创立的,得益于电子商务在中国的快速发展,是中国最成功的的互联网公司之一,而马云能够断定未来没有电子商务的地位,说明他也确实深深体会到了新一轮变革的到来。新零售是以互联网为依托,但更注重运用大数据、人工智...

2019-05-06 22:32:18 24541

原创 寒冬下该如何破冰

专注学习的必要性,早期互联网还没这么发达的时候,我们想去学一门技术,资料的匮乏会迫使我们格外珍惜现有的资料,而不像现在互联网上资料的泛滥,造成一部分人东学学西学学。再加上互联网寒冬,自然就有一部分人产生焦虑、找不到工作等等情况,就我接触的一部分人,他们看到某某又出了什么课程,就会迫不及待的下单,但又不会静下心来去学习,好像买下这个课程就全懂似的,这是我比较讨厌的,既然花了钱又不去把它学完。很多...

2019-04-02 20:18:42 24488

原创 深入浅出换肤相关技术以及如何实现

温馨提示:阅读本文需要60-70分钟微信公众号:顾林海完成换肤需要解决两个问题:如何获取换肤的View,利用LayoutInflater内部接口Factory2提供的onCreateView方法获取需要换肤的View,我们从setContentView方法的具体作用来了解LayoutInflater.Factory2接口的作用,以具体源码进行分析,MainActivity代码如下:...

2019-02-20 17:45:09 44138 2

原创 深入浅出Service插件化原理

转载请标明出处:【顾林海的博客】本篇文章已授权微信公众号 顾林海 独家发布Service插件化的重点是保证它的优先级,需要一个真正的Service来实现,当启动插件Service时,就会先启动代理Service,当这个代理Service运行起来后,在它的onStartCommand等方法里面进行分发,执行插件Service的onCreate等方法,这种方案叫代理分发。也就是在启动插件...

2019-01-29 09:11:32 32131

原创 深入浅出Activity插件化相关原理

转载请标明出处:【顾林海的博客】本篇文章已授权微信公众号 顾林海 独家发布Activity的插件化解决的一个根本性问题就是插件中的Activity并没有在宿主的AndroidManifest.xml中进行注册,也就是说我们需要启动一个未注册的Activity,因此需要对Activity的启动过程有个了解。启动Activity时会请求AMS创建Activity,这里的AMS指的是Acti...

2019-01-25 23:45:52 32874

原创 深入浅出Service启动流程

转载请标明出处:【顾林海的博客】本篇文章已授权微信公众号 顾林海 独家发布Service启动方式有两种,一种是通过Context的startService启动Service,另一种是通过Context的bindService绑定Service,下面对这两种启动方式的启动流程进行详细的讲解。startService的启动流程通过startService方法启动Service会调用Con...

2019-01-12 11:52:09 21590

原创 深入浅出Android系统启动流程

转载请标明出处:【顾林海的博客】init进程启动过程init进程概述       Android系统基于Linux,init进程是Android系统中用户空间的第一个进程,进程号为1,init源代码在system/core/init目录下。既然init进程是Android系统用户空间的第一个进程,因此担负着非常重要的责任,主要负责以下两件事:解...

2019-01-03 17:38:09 22189

原创 Android之全面解析Retrofit网络框架封装库

转载请标明出处:【顾林海的博客】前言Retrofit是Square公司推出的一个HTTP的框架,主要用于Android和Java,Retrofit会将每一个HTTP的API请求变成一个Java的接口,使用起来非常方便,同时Retrofit又是一个Restful HTTP的网络请求框架的封装。介绍与使用在上图中,我们会在应用层发起网络请求,同时请求会经过Retrofit这层,Retr...

2018-11-06 13:39:30 24185

原创 Android之全面解析OkHttp源码

转载请标明出处:【顾林海的博客】本平台的文章更新会有延迟,大家可以关注微信公众号-顾林海,更有Android、后端、Python、PHP、IOS以及React Native等等相关视频教程,如果大家想获取最新教程,请关注微信公众号,谢谢!前言OkHttp是目前非常火的网络库,支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接,连接池减少请求延时,透明的GZIP...

2018-10-27 15:38:49 25038

原创 Android之ActivityManagerService详解(APP启动过程)

转载请标明出处:【顾林海的博客】前言AMS(ActivityManagerService)的启动是在SystemServer进程中启动的,它的职责是用于和所有APP的四大组件进行通信,Activity的启动过程就是APP端与AMS端进行通信,首先理解的一点是APP端与AMS是在两个不同的进程中,因此APP端与AMS是通过跨进程通信的。从Launcher启动APPLauncher就是指...

2018-10-18 16:53:18 30957 1

原创 Android之加载外部dex

转载请标明出处:【顾林海的博客】想要了解插件化,首先得知道如何加载外部的dex文件,这里的插件APK会存放在主APP的assets目录中,用于模拟服务器下载插件。第一步:创建主项目和插件项目先创建我们的主项目,并在项目中创建一个插件依赖库,取名为pluginlibrary,主项目依赖pluginlibrary。主项目创建完毕后,接着创建插件项目,将项目中的app模块复制到主项目并重命...

2018-10-09 11:12:15 26710

原创 插件化知识储备-Binder和AIDL原理

前言插件化技术火热已久,为什么会有插件化,时势造英雄吧,随着移动互联网的快速发展,业务的飞速增长,如何在有限时间给用户提供高质量的APP,当线上出现各种BUG,如何快速修复并发布上线,插...

2018-10-03 00:00:00 145

原创 Android之Binder和AIDL原理

转载请标明出处:【顾林海的博客】前言插件化技术火热已久,为什么会有插件化,时势造英雄吧,随着移动互联网的快速发展,业务的飞速增长,如何在有限时间给用户提供高质量的APP,当线上出现各种BUG,如何快速修复并发布上线,插件化的意义也就在这里了。目前插件化解决方案分为两个方向,一是以张勇的DroidPlugin框架为代表的动态替换方案,对Android底层的各种类进行Hook,来达到加载插件...

2018-09-29 10:02:11 31121

原创 Android之EasyPermissions源码解析

转载请标明出处:【顾林海的博客】前言我们知道在Android中想要申请权限就需要在AndroidManifest配置文件中通过uses-permission标签设置申请的权限,通过这种方式申请权限固然方便,但在安全性方面却不高,比如开发者申请获取用户隐私的权限,这样用户在不知情的情况下获取到了用户的隐私,如何避免这种不安全的权限获取?从Android 6.0开始,Googl...

2018-08-20 18:16:25 25925 1

原创 Android之LocalBroadcastManager源码解析

转载请标明出处:【顾林海的博客】前言广播想必大家都不陌生,日常开发中同一个APP中的多个进程之间需要进行传输信息,或是不同APP之间的消息通信,都可以使用广播来实现,学习广播时,我们知道广播有普通广播和系统广播,通过自定义广播接受者BroadcastReceiver,并复写onReceive方法,内部通过Binder机制向AMS(Activity Manager Service...

2018-08-06 14:10:25 25215

原创 Android之EventBus框架源码解析下(源码解析)

转载请标明出处:【顾林海的博客】register方法流程概要public void register(Object subscriber) { Class<?> subscriberClass = subscriber.getClass(); List<SubscriberMethod> subscri

2018-05-15 11:27:20 25427

原创 Android之EventBus框架源码解析上(单例模式)

转载请标明出处:【顾林海的博客】前言EventBus能够简化各组件间的通信,让我们的代码书写变得简单,能有效的分离事件发送方和接收方(也就是解耦的意思),能避免复杂和容易出错的依赖性和生命周期问题。关于它的使用方式,同学们可以查看相关文章。EventBus.getDefault().register(this);以上是EventBus的注册,很简单,通过getDefault...

2018-04-05 14:34:12 25501 1

原创 Android小知识-Fragment

转载请标明出处:【顾林海的博客】前言今天还是总结下Android中的小知识点Fragment,Fragment使用广泛,有自己的生命周期(必须依附Activity),动态灵活的加载到Activity中去,Android 3.0 引入,常用模式有Fragment+ViewPager。Fragment加载到Activity的两种方式添加Fragment到Activity的...

2018-02-27 11:58:36 25295

原创 Android之了解ThreadLocal

转载请标明出处:【顾林海的博客】前言很长时间没写博客,不是自己懒,而是在这段时间在思考要写什么,以及自己的发展方向,之前的自己很浮躁,总想表现什么,这其实对技术人来说是不好的,把心沉淀下来,找准方向,再一步步去实现,幸运的是自己又找到自我,这篇文章就讲讲一个小知识点ThreadLocal。强调ThreadLocal与多线程并发没有任何关系,ThreadLocal解决...

2018-02-25 09:36:09 25694

原创 Android之View的绘制流程解析

转载请标明出处:【顾林海的博客】前言自定义View在Android中占据着非常重要的地位,因此了解View的绘制流程对自定义View来说尤其重要,View的绘制流程总的来说包含测量、布局和绘制三个流程,本篇会对这三个流程进行详细的讲解,力求对View的绘制流程有清晰的认识。视图绘制Activity代表着一个用于与用户进行交互的窗口,通常启动一个Activity时,会通过setContentView

2017-12-20 18:32:25 24355

原创 Android之Butterknife原理解析

转载请标明出处:【顾林海的博客】前言Butterknife是一个专注于Android系统的View注入框架,可以简化代码,比如findViewById、事件监听、资源绑定等,同时该框架使用了编译时注解,可能大家一听到编译时注解就认为这种方式会影响性能,其实编译时注解并不会影响应用的性能,这是因为编译时注解是在代码编译过程中对注解进行处理,生成代码,这些代码在运行时调用,除了编译时注解,还有一个是运

2017-12-18 13:14:08 28319 1

原创 IOS开发笔记17-Object-C中的继承

转载请标明出处:【顾林海的博客】前言在前面的程序Person.h文件中可以看到,Person继承了NSObject,通过继承可以获取自身定义的实例变量和方法外,还会拥有在NSObject中定义的实例变量和方法。实例#import <Foundation/Foundation.h>@interface Person : NSObject//定义两个属性@property (nonatomic)

2017-12-11 14:27:56 25269

原创 Android之AsyncTask源码解析

转载请标明出处:【顾林海的博客】前言AsyncTask是一种轻量级的异步任务类,内部封装了Thread和Handler,通过AsyncTask执行后台任务以及在主线程中访问UI控件,但AsyncTask在Android 1.6之前是串行任务,在Android 1.6时AsyncTask采用线程池处理并行任务,又在Android 3.0开始采用一个线程串行执行任务,所以在使用AsyncTask时需要

2017-11-24 19:14:21 25120

原创 ScheduledThreadPoolExecutor的相关知识

转载请标明出处:【顾林海的博客】前言ScheduledThreadPoolExecutor继承自ThreadPoolExecutor,而ThreadPoolExecutor是线程池的核心实现类,用来执行被提交的任务,ScheduledThreadPoolExecutor是一个实现类,可以在给定的延迟后运行命令,或者定期执行命令。ScheduledThreadPoolExecutorSchedule

2017-10-19 16:36:05 27307

原创 Android之解剖网络请求框架Volley

转载请标明出处:【顾林海的博客】Volley介绍Volley是Google推出的网络请求库,包含的特性有JSON、图像等的异步下载、网络请求的排序(scheduling)、网络请求的优先级处理、缓存、多级别取消请求、和Activity和生命周期的联动(Activity结束时同时取消所有网络请求),文章会先将Volley的基本使用,最后会从全局者的角度讲解Volley框架的具体流程以及缓存的相关知识

2017-09-21 16:30:27 25481

原创 Android之组件化开发

转载请标明出处:【顾林海的博客】前言在以前的项目中都是建一个基础库,项目依赖基础库,主项目中集成了所有的功能,这样的化导致主项目的臃肿,并且功能难以拆分,如果是有规模的公司,一般有好几个业务部门,业务部门之间的交流成本高,2015年所在的同程旅游亦是如此,所有项目组的代码都是在同一个项目中,虽然做了包的划分,但还是难以维护,业务的不断增加,代码的数量也会越来越多,单一工程下的架构势必会阻碍开发进度

2017-09-12 19:25:35 25142

原创 Android之图片加载框架Picasso源码解析

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/76146635 本文出自:【顾林海的博客】 前言picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能。仅仅只需要一行代码就能完全实现图片的异步

2017-08-03 19:15:30 25385

原创 Android之在BaseAdapter源码中了解观察者模式

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/76083113 本文出自:【顾林海的博客】 前言观察者模式也叫发布订阅模式,它是定义如下:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。适用的适用场景主要有关联行为场景,需要注意的是,关联行为是可

2017-07-26 14:35:16 24570 1

原创 Android之异步消息处理机制Handler源码解析

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/75125971 本文出自:【顾林海的博客】 前言 我们知道在应用启动时会开启一个主线程,也就是UI线程,主线程主要管理与用户交互的UI控件(UI展示,事件分发),如果在主线程中执行耗时操作会触发ANR(Application not respondin

2017-07-25 16:31:19 25277

原创 Android之使用Builder模式封装Dialog和PopupWindow

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/74729925 本文出自:【顾林海的博客】 前言Builder模式的定义是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,也就是说将构建过程和部件的表示隔离开,用户可以在不知道内部构建细节的情况下,对对象的构造流程进行相应的控制

2017-07-14 17:09:02 26420 1

原创 Android之View的Paint、Canvas和PorterDuffXfermode的用法

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/73863258 本文出自:【顾林海的博客】 前言 自定义View一直是初中级程序员的痛,在之前也写过很多关于自定义控件的文章,很多人也看了一些关于自定义控件的文章或是相关源码,效果不是很好,那么怎样才能学会自定义View呢,我认为基础很重要,先对自定义Vi

2017-07-07 15:59:15 25417

原创 Android之DiskLruCache源码解析

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/73802453 本文出自:【顾林海的博客】前言Andrpod的DiskLruCache是用于磁盘缓存的一套解决框架,虽然比较老,但也是一款比较经典的框架,阅读它的源码可以学习到关于缓存方面(磁盘)的一些知识,这套框架是由大神jakeWharton编写,相信大家

2017-06-28 19:27:24 25397

点赞后显示用户名控件

点赞后显示用户名控件

2016-03-07

老罗Android视频教学资源下载地址

老罗Android视频教学资源下载地址

2014-04-11

Java的一些案例开发,适合边学边做的,建议初学者看看

本书中全是案例,而且讲解详细,以下是本书的目录 第一章:Java与Applet 第二章:Java与特效 第三章:XML与其他 第四章:Java与游戏 第五章:Java与文件操作 第六章:Java与安全 第七章:Java与数据库 第八章:Java与Servlet 第九章:Java与网络 第十章:Java综合实例

2013-10-29

android开发,适合多媒体编程的开发者

第一章:android概述 第二章:android基础 第三章:多核通信 第四章:多媒体框架 第五章:图像框架 第六章:音频框架 第七章:视频框架 第八章:渲染机制 第九章:图像应用 第十章:音频应用 第十一章:视频应用

2013-10-29

空空如也

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

TA关注的人

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