自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Joyfulmath,一个快乐的程序员

记录一个农民在城市打拼,最终成为城里人的故事。

  • 博客(217)
  • 资源 (7)
  • 收藏
  • 关注

原创 Git 快速极简图文教程 第一篇

Git简介Git 是目前使用最广泛,最著名的工具。据了解,目前绝大部分互联网公司都已经全部切入到git作为版本管理工具,尤其是bat等头部公司,这是一个标准的技能。Git 最早是有linux之父,Linus Torvalds创建的,用来管理Linux Kernal的源码。你看,Git 还干着这么高大上的活。学习git最大的障碍,就是从svn等传统工具切换到git,通过命令行的方式,瞬间给人高...

2019-09-01 11:18:54 188

原创 Activity的生命周期&启动模式

1.Activity的生命周期生命周期这个事情,是android工程师最基础的知识,所以今天要讲的是一些不一样的东西。1.1 OnStart,OnResume,OnPause,OnStop 他们的区别是什么?OnStart & OnStop, 这一对发生的时候,页面已经显示,但是处于backgroud的状态,所以用户无法看到。OnResume & OnPause,发生在用户可以看到...

2018-04-01 22:09:21 279

原创 ThreadLocal 原理解析

1.对Thread local 理解ThreadLocal 是为了解决线程间同步而创建的一个新的思路。简单来说就是每个线程都保存一个变量副本。如果在Thread 内部定义一个field变量,也可以解决这个问题。这样就需要定义一个新的Thread类,来解决这个问题。每一次一个新的变量都需要这个case,but,实际这个新的类,与thread本身并没有关系。所以最好有一种方式,可以解决同步的问题,并且...

2018-04-01 22:09:18 292

原创 android 统计启动时长,标准

一.启动的类型冷启 动,application没有被创建,需要先创建进程,然后启动MainActivity。由于这个过程需要fork一个新进程,所以耗时。热启动,同上面对照,已经启动过application,并驻留在系统内存内,只是需要唤醒该进程,并启动MainActivity。二:统计启动时间1.物理统计通过高速相机,从点击launcher上面的图标开始,到MainActiv

2018-04-01 22:09:15 2628

原创 LRUCache原理分析

一.注释LRUCache的原理,基本都在注释里面描述清楚了。/** * A cache that holds strong references to a limited number of values. Each time * a value is accessed, it is moved to the head of a queue. When a value is

2018-04-01 22:09:12 265

原创 Android binder机制---概述

1.进程间通讯的原因目前操作系统都使用虚拟存储技术,管理内存。假设是32位机器,0-3G是用户空间,3-4G是系统使用。虚拟内存和逻辑内存都按4K分页。这样虚拟内存和逻辑内存就存在对应关系。一个进程只能操作自己的内存,无法直接访问其他的进程的物理页。系统进程可以访问所有的物理应用空间。进程通讯的本质是数据段交互。2.进程间通讯的方式操作系统提供一种共享内存的方式来进行通

2018-04-01 22:09:10 173

原创 Android React Native 开发环境搭建---windows下

环境搭建环境搭建可以参考RN官网,也可以参考中文版本:http://reactnative.cn/docs/0.45/getting-started.html如果你希望可以看到原版的安装流程,可以看官方的地址,本文只是我个人的实践,并且仅限于window平台。官方的地址:https://facebook.github.io/react-native/docs/getting-start

2018-04-01 22:09:07 133

原创 git详解

git详解git是从android出现,就作为版本管理工具。由于很多人从svn开始使用,简单的check in & check out操作,很难理解和适应通过命令行操作的git的管理。所以很多人继续使用图形界面的git管理工具,尤其android studio自带git的图形操作界面,使得很多人懒得学习和掌握git的具体运行规则。从而导致很多分支冲突,管理混乱的情况。以下是笔者写的一篇关于

2018-04-01 22:09:05 176

原创 Android 四大组件之再论BroadCast

BroadCast 是android提供的跨进程通讯的有一利器。1.异步执行onReceiver @Nullable public abstract Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, @Nullable String broadcas

2018-04-01 22:09:02 150

原创 Android 四大组件之再论service

service常见的有2种方式,本地service以及remote service。这2种的生命周期,同activity的通信方式等,都不相同。关于这2种service如何使用,这里不做介绍,只是介绍一些被遗漏的地方1.远程Service(AIDL方式)package com.joyfulmath.samples.basecontrol;import android

2018-04-01 22:09:00 138

原创 Android 四大组件之Activity(续2)

1.生命周期关于生命周期,在详细讲解下:上图是从android官网获取的生命周期。正常的流程,很多文章都讨论过了,我们讨论几个特殊的情况。1)OnResume->OnPause->OnResume 我们看这段解释:The activity is no longer visible。也就是说在onpause阶段,activity还是可见的,but,它不在最上面,这种情况一般情

2018-04-01 22:08:57 164

原创 Android 热修复,插件式开发---基本知识

Android插件技术已经出来很久了,从包建强大大的那篇《Android插件化:从入门到放弃》出来以后,插件化技术的场景也明朗了。app插件牵涉到很多基础1.app的启动流程过程分析,首先从launcher上面点击app图标,然后到activity的OnResume。在AMS里面调用startProcessLocked,首先开启一个新的进程,同步一个主线程。上图是启动默认a

2018-04-01 22:08:54 131

原创 Android 面试题及答案(2)

1.Activity相关。launchmode,OnSaveInstnceState,生命周期等。 4种默认的launchmode,以及OnNewIntent的回调。OnNewIntent->OnRestart->OnStart->onResumeOnActivity->OnResume.OnNewIntent ,OnActivityResult?OnNewIntent lau

2018-04-01 22:08:52 186

原创 Android 框架学习之 第一天 okhttp & Retrofit

最近面试,一直被问道新技术新框架,这块是短板,慢慢补吧。关于框架的学习,分几个步骤I.框架的使用II.框架主流使用的版本和Android对应的版本III.框架的衍生使用比如okhttp就会有Retrofit的使用IV.框架历史版本,已经每个版本解决的问题V.框架源码的分析VI.框架设计思想,优缺点,如何解决。第一天(20160919):计划:okhttp 的

2018-04-01 22:08:49 166

原创 Gui系统之View体系(2)---View的setContent

1.从SetContentView讲起1.1Activty的setContentView里面的内容 public void setContentView(@LayoutRes int layoutResID) { getWindow().setContentView(layoutResID); initWindowDecorActionBar(

2018-04-01 22:08:47 149

原创 Android 高级面试题及答案

一 性能优化1.如何对 Android 应用进行性能分析android 性能主要之响应速度 和UI刷新速度。可以参考博客:Android系统性能调优工具介绍首先从函数的耗时来说,有一个工具TraceView 这是androidsdk自带的工作,用于测量函数耗时的。UI布局的分析,可以有2块,一块就是Hierarchy Viewer 可以看到View的布局层次,以及每个View刷

2018-04-01 22:08:44 235

原创 Android 热修复技术(1)---原理

热修复技术分为几部分:原理介绍Android HotFix源码分析自定义框架1.Android分包MultiDex原理首先Dex是什么东西?Dex就是Window里面的exe文件 也就是可执行问题。Android没有用传统的Java虚拟机,而是使用dalvik虚拟机。当APK安装到手机后,dalvik会先把de文件转化位ODEX文件,优化结构。在早期的andro

2018-04-01 22:08:42 138

原创 android 事件分发机制

1.View的事件分发机制一个button,简单一点就是onTouch,还有onclick事件,我们一个一个来分析首先响应的是dispatchTouchEventpublic boolean dispatchTouchEvent(MotionEvent event) { if (mOnTouchListener != null && (mViewFlags & ENA

2018-04-01 22:08:39 131

原创 android Gui系统之WMS(2)----窗口的添加

Android系统很多,但是最常用的就两类,一类是有系统进场管理的,系统窗口。还有一类就是由应用程序产生的,应用窗口。1.系统窗口的添加流程1.1 addStatusBarWindowPhoneStatus.java中 private void addStatusBarWindow() { makeStatusBarView(); mS

2018-04-01 22:08:37 373

原创 计算机网络和Internet之核心网络

1.网状的路由器路由器的链接组成了网络的核心。任何一个路由器,或者某条线路挂掉,但是网络还是通的,这是internet的一个特性。data到底是怎么传输的?1)circuit switching专有线路,就像电话一样,每一条都有一个线路。2)packet-switching封包机制:就是data分成一个一个的包送资料。1.1 circuit switching首先要做一

2018-04-01 22:08:34 564

原创 android Gui系统之WMS(1)----window flags & view flags

SurfaceFlinger 前面说的,就是一个surface的合成。SurfaceFlinger就是一个默默的记录着,它不会对surface的内容有什么改动。WMS(WindowsManagerService)就是对surface的管理,或者说是一个大管家。它负责协调各方面资源。ViewRoot就是一个个演员,负责表演(产生surface)。从IO系统角度而言,WMS至少要干这几件事

2018-04-01 22:08:31 212

原创 Computer Network and Internet(1)

计算机网路相关的教材很少,TCP/IP,HTTP 协议非常多,很难找到一个合适的材料去学习。《计算机网络》自上而下方法是这个方面的经典之作。1.what is internet?1.1 nuts and bolts  基本元素Millions of devices connect in network.If we let devices connect each other

2018-04-01 22:08:28 413

原创 android Gui系统之SurfaceFlinger(5)---Vsync(2)

9.Vsync第二部分在上一篇中我们讲到,视图的刷新需要很多步骤,void SurfaceFlinger::handleMessageRefresh() { ATRACE_CALL(); preComposition();  //合成前的准备 rebuildLayerStacks();//重新建立layer堆栈 setUpHWComposer()

2018-04-01 22:08:25 207

原创 android Gui系统之SurfaceFlinger(4)---Vsync(1)

8.Vsync8.1概论VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步。“垂直同步(vsync)”指的是显卡的输出帧数和屏幕的垂直刷新率相同,这完全是一个CRT显示器上的概念。其实无论是VSYNC还是垂直同步这个名字,因为LCD根本就没有垂直扫描的这种东西,因此这个名字本身已经没有意义。但

2018-04-01 22:08:22 221

原创 android Gui系统之SurfaceFlinger(2)---BufferQueue

6 BufferQueue上一篇已经说到,BufferQueue是SurfaceFlinger管理和消费surface的中介,我们就开始分析bufferqueue。每个应用 可以由几个BufferQueue?应用绘制UI 所需的内存从何而来?应用和SurfaceFlinger 如何互斥共享资源的访问?6.1 Buffer的状态const char* BufferSlot

2018-04-01 22:08:11 340

原创 android Gui系统之SurfaceFlinger(1)---SurfaceFlinger概论

GUI 是任何系统都很重要的一块。android GUI大体分为4大块。1)SurfaceFlinger2)WMS3)View机制4)InputMethod这块内容非常之多,但是理解后,可以触类旁通,其实现在主流的系统,包括andorid,ios在构架上,都是有很多相识之处。我们先来讲SurfaceFlinger 1.OpenGL & OpenGL ESOP

2018-04-01 22:08:09 299

原创 敏捷软件开发(4)--- TEMPLATE METHOD & STRATEGY 模式

1.TEMPLATE METHOD 泛型,也就是这个模式,是可以基于泛型的。我们往往会有一些算法,比如排序算法。它的算法部分,我可以把它放在一个基类里面,这样具体类型的比较可以放在子类里面。看如下冒泡排序算法:package com.joyfulmath.agileexample.template.method;/** * @author deman.lu *

2018-04-01 22:08:04 96

原创 Android平台二维码之生成,扫描 & 识别

1.二维码的前世今生“二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码

2018-04-01 22:08:01 321

原创 android activity 管理器AMS----概述

AMS & WMS,应该是app端打交道最多的2个framwork层的service。ActivityManagerService 是android提供给用于管理Activity运行状态的系统进程。本系列共分3个部分,概述,ActivityStatck & Activiy Task.AMS 主要用于管理Activity之间的交互问题。核心问题有以下几个:1.activity 生

2018-04-01 22:07:58 395

原创 成为管理者---对组织的贡献

很多人常常有这样的情绪,总是觉得组织或者上司亏待了他们。 或者是怀才不遇,其实这是个人的偏见。一位知识工作者,他的“表现”是由,他个人的贡献而定的。1.概述所谓贡献,主要表现在以下三方面:1)自己的工作,工作内容,水准,以及影响。2)自己与他人的关系,上司,同事,下属的关系。3)各项管理手段的运用,比如会议& 报告等。绝大部分人,不能很好的做到这些,是因为他们不是以

2018-04-01 22:07:55 4129

原创 敏捷软件开发(3)---COMMAND 模式 & Active Object 模式

COMMAND 模式command模式非常简单,简单到你无法想象的地方。public interface Command { void execute();}这就是一个command模式的样子。也许你会觉得,这有点多此一举吗。但是当你使用他的时候,command模式就会闪现光华。这样一个场景:经理张三叫leader王二去开发一个项目, 王二就安排李四 去开发这

2018-04-01 22:07:50 139

原创 敏捷软件开发(2)--- 设计原则

之前讲设计模式系列的时候,也提过这些原则:http://www.cnblogs.com/deman/category/634503.html现在在根据敏捷一书,学习下。我们已经有23种设计模式,是不是每一个类,功能都要用到设计模式?怎么选用合适的设计模式?是不是开始开发了一个类,或者使用一个类以后,就不能修改这部分代码了吗?其实每一次选择都是根据具体的情况而定,没有标准。它

2018-04-01 22:07:48 134

原创 成为管理者---掌握自己的时间

时间对于每个人都是公平的。每个人的时间管理都是困难的,尤其是管理者,他的事情更多,更需要有效的管理时间。要成为一名合格的管理者,最重要的就是有效的管理时间,其他都是建立在这个的基础上的。知识工作者,与传统的体力劳动者是完全不同的。体力劳动者的劳动,可以量化,而知识工作者不能。所有如何有效的产出,是每个知识工作者的首要任务。作为管理者,需要有整块的时间段,才能有效的产出,而管理者往往

2018-04-01 22:07:45 125

原创 深入理解java虚拟机(7)---线程安全 & 锁优化

关于线程安全的话题,足可以使用一本书来讲解这些东西。 就是讲解这些的,在这里主要还是分析JVM中关于线程安全这块的内容。1.线程安全是什么?线程安全,有经验的开发人员都听过这个名词,但是能否给到一个准确的定义,很难。在 Java Concurrency in Practice里面定义是:当多个线程访问一个对象时,如果不用考虑这些线程在运行时的环境下的调度和交替执行,也不需要

2018-04-01 22:07:42 118

原创 深入理解java虚拟机(6)---内存模型与线程 & Volatile

其实关于线程的使用,之前已经写过博客讲解过这部分的内容:http://www.cnblogs.com/deman/category/621531.htmlJVM里面关于多线程的部分,主要是多线程是如何实现的,以及高效并发。1.Java内存模型CPU在运行的时候,不可能把所有的东西都放在寄存器里面,所有需要使用内存。这个内存就是我们知道的那个内存。但是实际情况是,内存的读写速度于

2018-04-01 22:07:39 87

原创 java注解框架

我们经常会在java代码里面看到:“@Override”,“@Target”等等样子的东西,这些是什么?在java里面它们是“注解”。下面是百度百科的解释:java.lang.annotation.Retention可以在您定义Annotation型态时,指示编译器如何对待您的自定义 Annotation,预设上编译器会将Annotation资讯留在class档案中,但不被虚拟机器读取

2018-04-01 22:07:37 102

原创 敏捷软件开发---闲话敏捷

第一篇状态模式,其实比本文更先发表。但是我终觉得要写点什么,来开始我的敏捷的旅程。知道看了bob大叔这本书以后,我才知道敏捷到底是怎么回事,纯属个人东拉西扯,所以就叫闲话敏捷。《敏捷软件开发》问世与2003年,距今已有13个年头了,能够历久长盛不衰,必然有其光辉的一面。以下都是个人的经验结合《敏捷》讲解和分享一些东西。敏捷软件开发 乍一看有点摸不着头脑,不知道是什么东西。软件开

2018-04-01 22:07:34 136

原创 深入理解java虚拟机(5)---字节码执行引擎

字节码是什么东西?以下是百度的解释:字节码(Byte-code)是一种包含执行程序、由一序列 op 代码/数据对组成的二进制文件。字节码是一种中间码,它比机器码更抽象。它经常被看作是包含一个执行程序的二进制文件,更像一个对象模型。字节码被这样叫是因为通常每个 opcode 是一字节长,但是指令码的长度是变化的。每个指令有从 0 到 255(或十六进制的: 00 到FF)的一字节操作

2018-04-01 22:07:32 174

原创 敏捷软件开发(1)--- STATE 模式

如果状态在运行过程中,不停的切换和改变,我们怎么办?状态的迁移是我们生活和工程中非常普遍的一个概念。于是在数学上有一种理论来分析和解决这个问题。有限状态机理论是一个非常成熟的理论,所有动作和流程的迁移可以归结为状态的迁移。这个理论的前提是:状态的数目是确定的,或者说是有限的。状态的迁移方向是固定的,也就是有向的。   状态存储关于过去的信息,就是说:它反映从系统开始到现

2018-04-01 22:07:29 200

原创 深入理解java虚拟机(4)---类加载机制

类加载的过程包括:  加载class到内存,数据校验,转换和解析,初始化,使用using和卸载unloading过程。除了解析阶段,其他过程的顺序是固定的。解析可以放在初始化之后,目的就是为了支持动态加载。从java开发者来讲,我们并不关心具体细节,只要知道整个流程以及每个流程大体干了那些事情。每个流程具体对开发代码会有那些影响就可以了。类的加载流程1.加载loading

2018-04-01 22:07:27 140

Computer Graph

OpenGL the tutorial of Computer Graph OpenGL+Programming+Guide+Red+Book.chm OpenGL.SuperBible.3rd.Edition.chm

2011-05-05

自己写的关于体系结构的书

见笑了。自己整的山寨版的,以后有机会在完善下,最近忙于搞算法,一直没时间。

2010-07-29

MTK GUIppt

公司一同事一年前写的.关于MTK平台构建的描述,不过写的有些粗。等有机会,自己在写一份详细点的

2010-07-29

win32 ASM编译环境

win32 ASM编译环境,需要的可以看看,罗云山的那本配套的

2010-04-01

MFC深入浅出

这两本书在CSDN上已经泛滥了, 可就是分不清是那本, 搞个合集, 包括李久进的那本和候杰的.

2008-01-21

高质量C++_C编程指南.pdf

C 编程经典规范, 其实网上有很多了

2007-11-26

空空如也

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

TA关注的人

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