自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

now_android

学习者,总结者,研究者,创新者。

  • 博客(68)
  • 资源 (14)
  • 收藏
  • 关注

原创 【Android】Gradle构建生命周期和hook点

1、Gradle 的生命周期分三个阶段,初始化阶段,配置阶段,执行阶段。(1)初始化阶段通过 settings.gradle 判断有哪些项目需要初始化,加载所有需要初始化的项目的build.gradle 文件,并为每个项目创建 project 对象。(2)配置阶段执行各项目下的 build.gradle 脚本完成 project 的配置,构造 Task 任务依赖关系图以便在执行阶段...

2019-05-30 12:12:46 1887

原创 【Java】不可变类(immutable)总结

1、不可变类(1)不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值,也就是不能改变对象的状态。(2)Java 中八个基本类型的包装类和 String 类都属于不可变类,而其他的大多数类都属于可变类。(3)不可变对象是线程安全的。2、如何设计不可变类?(1)类声明为final,不可以被继承。(2)所有成员变量定义为私有和final(private final)。(3)不提...

2019-05-28 17:25:10 8741

原创 【Java】Java CAS机制

1、原子操作类所谓原子操作类,指的是java.util.concurrent.atomic包下,一系列以Atomic开头的包装类。如AtomicBoolean,AtomicInteger,AtomicLong,它们分别用于Boolean,Integer,Long类型的原子性操作。这里的Atomic操作类的底层正是使用了“CAS机制”。2、CASCAS(Compare and Swap)...

2019-05-28 12:45:45 668

原创 【flutter】flutter原始指针事件PointerEvent处理

(1)在移动端,各个平台或UI系统的原始指针事件模型基本都是一致,即:一次完整的事件分为三个阶段:手指按下、手指移动、和手指抬起,而更高级别的手势(如点击、双击、拖动等)都是基于这些原始事件的。当指针按下时,Flutter会对应用程序执行命中测试(Hit Test),以确定指针与屏幕接触的位置存在哪些widget。注意,只有通过命中测试的Widget才能触发事件。(2)Flutter中可以使用...

2019-05-26 10:33:10 3182

原创 【Android】cookie/session/token技术点总结

1、cookie和session机制(1)HTTP Cookie(也叫 Web Cookie或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能。Cookie 主...

2019-05-23 15:23:55 747

原创 【flutter】flutter Widget核心点总结大全

1、WidgetWidget是个抽象类,定义如下:@immutableabstract class Widget extends DiagnosticableTree { const Widget({ this.key }); final Key key; @protected Element createElement(); static bool canUpd...

2019-05-22 11:40:44 1096

原创 【flutter】flutter核心原理总结

1、flutter架构2、flutter UI系统Flutter提供了一套Dart API,然后在底层通过OpenGL这种跨平台的绘制库(内部会调用操作系统API)实现了一套代码跨多端。由于Dart API也是调用操作系统API,所以它的性能接近原生。虽然Dart是先调用了OpenGL,OpenGL才会调用操作系统API,但是这仍然是原生渲染,因为OpenGL只是操作系统API的一...

2019-05-17 14:32:06 7515

原创 【Android】美团robust原理分析

主流的热修复框架类型(1)ClassLoader:将热修复的类放在dexElements[]的最前面,这样加载类时会优先加载到要修复的类以达到修复目的。如腾讯的Tinker、Nuwa等。(2)Native hook:修改java方法在native层的函数指针,指向修复后的方法以达到修复目的。如阿里的Andifix、DexPosed等。(3)Instant run:在编译打包阶段对每个函...

2019-03-31 17:20:46 1769

原创 【Android】Instant Run原理解析

1、研究主流的热修复框架后,你会发现andfix和dexposed采用jni hook方法,不用重启就能修复,而Nuwa的ClassLoader思路因为类被虚拟机加载后,不会重新加载,所以需要重启。Instant Run是怎么实现不重启加载的呢,难道也是jni hook?2、Instant Run原理一个插件一个库,Instant Run用的是gradle plugin和instant-r...

2019-03-30 16:15:00 658

原创 【Android】热修复影响1-Java类型擦除和桥方法

注:Java类型擦除发生在泛型编程中。Type Erasure and Bridge Methods类型擦除和桥方法(1)The compiler sometimes creates a synthetic(合成的) method, called a bridge method, as part of the type erasure process.在类型擦除过程中,编译器通常会生成...

2019-03-24 16:31:04 189

原创 【Java】Java并发编程之CountDownLatch、CyclicBarrier、Semaphore

今天说说Java并发编程辅助类CountDownLatch、CyclicBarrier、Semaphore。1、CountDownLatchjava.util.concurrent.CountDownLatch(1)官网英文解释A synchronization aid that allows one or more threads to wait until a set of o...

2019-01-25 16:55:48 267

原创 【Java】Arrays.asList()使用注意事项

Arrays.asList()的使用注意事项时常忘记,在此再做下总结。使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException异常。说明:Arrays.asList()的返回对象是Arrays的静态内部类ArrayList,而不是java.util.Ar...

2019-01-25 10:48:59 1157

原创 【Android】阿里路由框架ARouter原理分析总结

1、单向依赖的module之间组件化中两个单向依赖的module之间需要互相启动对方的Activity时,因为没有相互引用,startActivity()是实现不了的,必须需要一个协定的通信方式,此时类似ARouter的路由框架就派上用场了。2、互不依赖的module之间两个module之间没有依赖,便不能通过startActivity()的显示启动进行通信,那么如何进行通信呢?(...

2019-01-23 16:37:09 5751

原创 【Android】RecyclerView 辅助类 SnapHelper总结

1、SnapHelper说明    SnapHelper是个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。SnapHelper是个抽象类,官方提供了LinearSnapHelper、PagerSnapHelper子类。例如LinearSnapHelper可以让RecyclerView滚动停止时相应的Item停留中间位置。PagerSnapHelper可以使Rec...

2019-01-15 18:28:09 2069

原创 【Android】WindowManager.addView和removeView注意事项总结

1、addView窗体泄漏问题:android.view.WindowLeakedandroid.view.WindowLeaked一般会发生在Activity与Dialog的显示。(1)dialog、PopupWindown窗体原因:我们知道Android的每一个Activity都有个WindowManager窗体管理器,同样,构建在某个Activity之上的dialog、Popup...

2019-01-14 19:12:10 9165

原创 【Android】ViewPager实现无限循环滑动思想

ViewPager本身并不能实现循环滑动。网上查找到两种方法:1. 将ViewPager设置一个足够大的整数Integer.MAX_VALUE,但这并不是真正的无限循环;2. 在实际展现的ViewPager前后分别插入一个item,真正实现无限循环滑动。1、关于ViewPager.setOffscreenPageLimit方法(1)大家都知道,viewpager是默认预加载下一...

2018-10-31 14:31:10 1800

原创 【Android】startService和bindService混合使用总结

先自定义一个service:public class MyService extends Service { private Service startService; private Service bindService; @Nullable @Override public IBinder onBind(Intent intent) { ...

2018-10-05 17:56:44 4113 1

转载 通过ADB WiFi Connect插件无线真机调试

准备工作电脑端要把SDK下的工具adb.exe配置进环境变量安装好插件重启IDE后使用USB连上电脑打开插件窗口和电脑命令行窗口正式配置通过命令检查手机连接情况,序列号码如图 确定USB模式连接 查看手机IP 设置连接端口 建...

2018-09-04 09:59:35 2488

原创 【Android】带你一步步写JNI程序

网上关于NDK、so、JNI相关的博文很多,很少有一篇具有详细的步骤去带领大家学习。绝知此事要躬行,本文将带大家一步步去写一个JNI程序,步骤详细,后文并附可运行的demo源码。一、写在前面的话1、AndroidStudio环境:Android Studio 3.1.4Build #AI-173.4907809, built on July 24, 2018JRE: 1.8.0_...

2018-08-23 22:36:47 868

原创 【Android】Android so技术点总结

当我们需要使用NDK开发某些功能,或APP使用的第三方SDK中包含了so文件,我们需要去关注Android so文件相关问题。1、ABI(Application Binary Interface,应用程序二进制接口)随着Android系统的快速发展,搭载Android的硬件平台也早已多样化了,出现了多种CPU架构。每一种CPU架构,都定义了一种ABI,ABI定义了其所对应的CPU架构能够执...

2018-08-22 16:26:40 397

原创 【Android】SQLiteOpenHelper技术点总结

1、SQLiteOpenHelper是什么?A helper class to manage database creation and version management.一个数据库创建和版本管理的帮助类。2、SQLiteOpenHelper作用SQLiteOpenHelper既然是帮助类,并且是管理数据库的创建和版本,那么为什么类名包含"Open"这个单词呢?为什么不叫SQLit...

2018-08-21 15:03:49 384

原创 【前端】Webpack使用总结

1、Web资源分类(1)静态web资源:HTML在静态Web程序中,客户端使用Web浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给Web服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过Web服务器返回给客户端,客户端接收到内...

2018-07-22 14:41:29 517

原创 【前端】离线缓存

1、HTML5离线缓存离线缓存是Html5新特性之一,简单理解就是第一次加载后将数据缓存,在没有清除缓存前提下,下一次没有网络也可以加载,用在静态数据的网页或游戏比较好用。使用方式:(1)引入manifest文件。<!DOCTYPE html><html lang="en" manifest="test.manifest"> <head> ...

2018-07-21 18:48:35 3366

原创 【前端】单页面应用SPA总结

1、SPA简介SPA:单页面应用(Single Page Application)。通过动态重写当前页面来与用户交互,而非传统的从服务器重新加载整个新页面。这种方法使应用程序更像一个桌面应用程序。优势:前后端职责分离,架构清晰:前端进行交互逻辑,后端负责数据处理。劣势:初始加载脚本较大,首屏空白时间较长。比起一般的简单页面,SPA 最大的问题,就是在初始化之时引入大量框架方案脚本,这导致脚...

2018-07-21 13:32:42 1366

原创 【网络协议】TCP和HTTP中keep alive机制

简介:TCP协议和HTTP协议中,都有keepalive机制,只是二者的含义有所不同。TCP中keepalive主要用来进行链路检测;HTTP中keepalive主要用来进行链路复用。其中http1.1版本已经默认支持keepalive,即支持持久连接。下面将详细分析TCP和HTTP中keepalive机制。1、TCP keep alive(1)    TCP是无感知的虚拟连接,中间断...

2018-07-18 00:10:15 1859

原创 【Android】消息推送1-Socket长连接技术点总结

鉴于以往习惯,文章言简意赅,不拖泥带水,本文主要写Android消息推送中Socket长连接相关技术点。1、TCP/IP 协议(1)IP协议IP 协议提供了主机和主机间的通信。采用IP地址来唯一标识一台主机。(2)TCP协议TCP 协议在 IP 协议提供的主机间通信功能的基础上,完成这两个主机上进程对进程的通信。我们采用端口号来标识数据属于哪个进程。2、TCP三次握手 & 四次挥手说明:S...

2018-07-15 11:21:24 2545

原创 【Java】线程池排队策略 & 拒绝策略

1、为什么JDK1.5引入线程池在Java中,如果每个任务都创建一个新的thread,开销是非常大的。除了创建和销毁线程的时间开销外,还消耗大量的系统资源。为了规避以上问题,尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大的线程的创建和销毁,尽量利用已有的线程对象来进行服务,这就是线程池引入的原因。 2、ThreadPoolExecutor类分析(a)ThreadPoolExecutor构...

2018-07-01 16:07:46 7627

原创 继续上路 (2018)

谁都无法抵挡时间老去。一不小心,硕士毕业5年了。匆忙而过的5年,似乎从来未有过停歇,忙碌紧凑的日子把时间过的特别快。这些年,一直在努力向前奔跑,渴望抓住尽可能多的时间去延长青春延缓衰老,无论是年纪上还是内心中。越来越喜欢简单的生活、平静的内心,希望自己尽可能少的烦恼。当我在想该怎样去总结过去时,也许这就是最简的答案。从事Android开发5年了,平时学习都会做Word笔记。刚开始在CSDN上写博客...

2018-07-01 15:17:13 176

原创 Android使用Catmull_Rom插值算法画光滑曲线图

一、算法核心思想1、每次插值需要四个基础点(暂假设为A、B、C、D)。2、根据已知的四个基础点,插值算法每次只能实现在中间两个点间画出光滑的曲线(此处就是B点和C点)。二、工程代码1、“Catmull_Rom插值算法”画光滑曲线的类(Catmull_Rom.java)package com.example.test;import java.util.ArrayList;

2015-05-30 13:03:18 4442 1

原创 Fragment中onOptionsItemSelected方法不起作用的解决方法

以前一般都是在Activity中添加menu菜单,一般是重写onCreateOptionsMenu和onOptionsItemSelected方法。现在Fragment用的多了,就在Fragment里面添加menu菜单,也是重写了onCreateOptionsMenu和onOptionsItemSelected方法,但是发现没有效果。在源代码中可以发现,这跟一个叫mHasMenu的boolea

2014-07-21 10:45:36 9953 2

原创 Android分辨率详解

1、Android手机常见分辨率WVGA:800x480FWVGA:854x480QHD:960x540720P:1280x720(标清,standard definition,SD)1080P:1920x1080(高清,high definition,HD)2、分辨率对应dpidpi(dots per inch,每英寸点数)hdpi对应WVGA、FWVGA、QHD

2014-07-16 13:07:38 10549

原创 Android Menu

Android Menu1、Android一共有三种形式的菜单:(1)选项菜单(OptionsMenu)(2)上下文菜单(ContextMenu)(3)子菜单(SubMenu)2、OptionsMenu详解(1)public boolean onCreateOptionsMenu(Menu menu)此方法用于初始化菜单,其中menu参数就是即将要显示的Menu实例。返

2014-07-09 19:22:05 1005

转载 Android layout属性大全

第一类:属性值 true或者 false           android:layout_centerHrizontal 水平居中      android:layout_centerVertical 垂直居中      android:layout_centerInparent 相对于父元素完全居中      android:layout_alignParentBott

2014-07-08 16:12:50 37795 5

原创 Android中动态改变string.xml中的字符串

1、首先需要在string.xml文件的前面添加如下头部:2、strings.xml文件中可以用下面两种方法来设置参数的位置:选择号码:%d %d选择号码:%1$d %2$d3、动态改变字符串的方法如下:getString(R.string.choose_numbe, 变量1, 变量2);//这样设置后就可以将参数传入xml4、%后面是占位符的位置,从1

2014-07-02 13:31:10 11797 2

原创 source insight设置tab键为4个空格

首先通过路径(Options->Document Options)进入以下界面:

2014-06-26 10:30:15 41747 2

转载 TextView属性大全

TextView属性大全今天研究了TextView一天了,发现网上有一篇讲TextView属性的,非常全,收藏一下先。发现TextView有一个比较大的问题,就是文字排版的问题,遇到数字,字母,符号等就会有问题,目前还没有什么解决方法。如果有高人研究出方法来解决,请指教一下哈。android:autoLink设置是否当文本为URL链接

2014-06-20 18:27:05 894

原创 git pull时本地文件和服务器文件冲突解决方法

git pull时本地文件和服务器文件冲突解决方法:在git pull代码时,出错信息如下:error: Your local changes to 'contextTempl.java' would be overwritten by merge.  Aborting.Please, commit your changes or stash them before you can m

2014-06-10 18:11:58 6982

原创 AsyncTask

1、官网解释(1)Class OverviewThis classallows to perform background operations and publish results on the UI threadwithout having to manipulatethreadsand/or handlers.AsyncTask isdesigned to be a hel

2014-06-06 18:38:25 848

原创 SharedPreferences

SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data//shared_prefs/目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:1)根据

2014-05-23 16:23:04 780

原创 Thread与Runnable区别

1、Thread和Runnable是实现java多线程的两种方式,各自的实现方式如下:(1)采用Thread实现多线程将类声明为Thread的子类,该子类应重写Thread类的run方法。接下来创建并启动一个线程。PrimeThread p = new PrimeThread(143);p.start();(2)采用Runnable实现多线程声明实现Runnab

2014-05-22 19:42:21 1317

Android使用Catmull_Rom插值算法画光滑曲线图源代码

Android使用Catmull_Rom插值算法画光滑曲线图源代码

2015-05-30

如何培养编程能力

如何培养编程能力?1. 扎实的基础。2. 丰富的想象力。3. 最简单的是最好的。4. 不钻牛角尖。5. 对答案的渴求。6. 多与别人交流。7. 良好的编程风格。8. 韧性和毅力。

2013-04-26

这就是搜索引擎:核心技术详解

搜索引擎作为互联网发展中至关重要的一种应用,已经成为互联网各个领域的制高点,其重要性不言而喻。搜索引擎领域也是互联网应用中不多见的以核心技术作为其命脉的领域,搜索引擎各个子系统是如何设计的?这成为广大技术人员和搜索引擎优化人员密切关注的内容。

2013-04-26

马化腾的腾讯帝国

中信出版社于2009年出版的传记类图书。主要讲述真实的马化腾其人故事,也是一本关于马化腾为什么能创建出腾讯这家互联网公司的商业案例式读物,同时也是一本讲述互联网公司内部如何运做的实战读物。

2013-04-26

谷歌将带来什么

谷歌将带来什么.What.Would.Google.Do.Jeff.Jarvis

2013-04-26

Hadoop权威指南第2版中文版

Hadoop权威指南 第2版 中文版(Hadoop存储架构)

2013-04-09

Objective-C编程之道 IOS设计模式解析

Objective-C编程之道 IOS设计模式解析

2013-04-09

More_Exceptional_C++中文版

More_Exceptional_C++中文版

2013-04-09

Exceptional C++ Style中文版

Exceptional C++ Style中文版

2013-04-09

深入理解Linux内核第3版

深入学习linux操作系统 把握linux内核的关键技术 英文原版

2011-09-20

c语言深度剖析

有助于c语言初学者,更有助于c语言深度研究者。

2011-09-12

空空如也

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

TA关注的人

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