技术分享

安卓--iOS常用知识点

主线程Looper.loop()里的死循环不ANR疑惑

引子: 正如我们所知,在android中如果主线程中进行耗时操作会引发ANR(Application Not Responding)异常。 当应用程序的UI线程响应超时才会引起ANR, 造成ANR的原因一般有两种: 1. 当前的事件没有机会得到处理,例如UI线程正在响应另一个事件,当前事件被阻...

2019-08-03 22:55:25

阅读数 31

评论数 0

Java 内存模型

并发编程模型的分类 在并发编程中, 我们需要处理两个关键问题: 线程之间如何通信及线程之间如何同步(线程指并发执行的活动实体). 通信是指线程之间以何种机制来交换信息. 在命令式编程中, 线程之间的通信机制有两种: 共享内存和消息机制. 在共享内存的并发模型里, 线程之间共享程序的...

2019-08-03 21:42:53

阅读数 27

评论数 1

网络库和图片库的简单架构模型

这里我们就简单分析一下demo中网络课和图片库的架构模型 网络库基本模型 架构设计过程分析: 对于一个框架的设计, 使用面向接口编程是必不可少的技能, http/https是基于请求-响应模型, 我们需要抽象出一个请求和响应接口类, 抽象一个请求接口, 其实现可以是基于HttpU...

2019-07-24 07:24:40

阅读数 12

评论数 0

hook系统类方法的技术调研

需求背景 前段时间组长让我调研一下一个技术需求, 需要在项目中每个调用 Log.x(TAG, msg); 的地方判断msg中是否有指定的字段来替换为我们自定义的方法来实现日志上报。 需求调研 首先想到了hook技术,Hook 又叫“钩子”,它可以在事件传送的过程中截获并监控事件的...

2019-07-24 07:23:11

阅读数 10

评论数 0

自定义gradle插件进阶

上次写过自定义gradle插件入门的博客, 介绍了最基本的gradle构建和简单的自定义gradle, 运用生命周期函数、task依赖和扩展配置等。在上篇博客的基础上, 这篇博客继续研究下自定义gradle插件。 动态编译技术在开源框架中的应用非常的广泛,现在市面上的插件化框架,热修复框架几乎都...

2019-06-24 10:19:44

阅读数 79

评论数 0

Android ANR原理分析及解决办法

一、ANR说明和原因 1.1 简介 ANR全称:Application Not Responding,也就是应用程序无响应。 1.2 原因 Android系统中,ActivityManagerService(简称AMS)和WindowManagerService(简称WMS)会检测App...

2019-06-06 15:38:27

阅读数 26

评论数 0

RxJava2.x的源码分析----线程切换

RxJava大家已经很熟悉了, 百度上关于RxJava的技术文章大把, 为了锻炼自己阅读源码的习惯, 现在阅读第三方库的时候做个记录, 假装自己看过开源库的源码. 今天我们就分析RxJava的线程切换源码, 没有看过RxJava的基本调用过程的请移步RxJava的基本流程, 分析的demo代码如...

2019-05-25 18:53:59

阅读数 17

评论数 0

RxJava2.x的源码分析----基本调用

RxJava大家已经很熟悉了, 百度上关于RxJava的技术文章大把, 我为了锻炼自己阅读源码的习惯, 现在开始阅读第三方库的时候做个记录, 假装自己看过开源库的源码. 我们就从RxJava的基本使用来开始分析吧, 常用的使用方式如下所示: Observable.create(new Obs...

2019-05-25 13:44:42

阅读数 16

评论数 0

浅析Android平台图像压缩方案

一、前言 在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种:其一是质量压缩,其二是尺寸压缩。 前者是在不改变图片尺寸的情况下,改变图片的存储体积,而后者则是降低图像尺寸,达到相同目的。 在介绍Android平台的压缩方案之前,先了解一下Bitmap的几个主要概念。...

2019-05-19 22:55:53

阅读数 24

评论数 0

Java的四种引用方式

java内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象。 java对象的引用包括 强引用,软引用,弱引用,虚引用。 Java中提供这四种引用类型主要有两个目的: 第一是可以让程序员通过代码的方式决定某些对象的生命周期; 第二是有利于JVM...

2019-05-19 13:48:37

阅读数 19

评论数 0

并发容器ConcurrentHashMap线程安全的使用姿势

什么是线程安全的数据结构? 简单的说就是不同线程可以访问同一份数据时,它们对这份数据的访问是无序、随机的,是不可控的。比如说你的房间谁都可以进来,但是你不确定他们谁先来谁后来或者可能同时来。你想让整件事更有秩序的在你的掌控之中,至少不能同时进来,于是就给房间上一把锁,每次只给一个人钥匙,他出来还钥...

2019-05-18 20:25:23

阅读数 16

评论数 0

多线程按顺序执行

一.前言 本文使用了5中方法实现在多线程中让线程按顺序运行的方法,涉及到多线程中许多常用的方法,不止为了知道如何让线程按顺序运行,更是让读者对多线程的使用有更深刻的了解。 使用的方法如下: [1] 使用线程的join方法 [2] 使用主线程的join方法 [3] 使用线程的线程池方法 [...

2019-05-18 16:39:05

阅读数 18

评论数 0

加密算法的比较和项目中的应用

加密技术通常分为两大类:"对称式"和"非对称式"。 对称性加密算法:对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密钥和加解密算法且其密钥是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。 非对称算法:非对...

2019-05-17 11:20:44

阅读数 10

评论数 0

android常用加密方案——三重DES实现

一什么是三重DES 三重DES是为了增加DES的强度,将DES重复3次所得到的一种密码算法,通常缩写为3DES。 二三重DSE加密 明文经过三次DES处理才能变成最后的密文,由于DES密钥长度实质是56位,因此3DES的密钥长度就是56*3=168比特。 注意:三重DES的三次DES加密是...

2019-05-17 10:59:24

阅读数 32

评论数 0

android常用加密方案——AES实现

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。 那么为什么原来的DES会被取代呢,,原因就在于其使用56位密钥,比较容易被破解。而AES可以使用128、192、和2...

2019-05-17 10:18:53

阅读数 39

评论数 0

gradle日常使用命令

1. 查看库依赖

2019-04-03 14:28:01

阅读数 13

评论数 0

一次线上bug的追踪

      最近快要过年了,项目上也不是很忙,就是做些修修补补的工作,下午组长给我一个任务,把我拉进一个风控部门建立的群。看了下问题描述:        线上某壳拉新时大约有三分之二的新用户升级到2.3.0版本时上报的某盟id为null。接到这个任务后头脑里一片空白,竟然不知如何下手,线上apk...

2019-01-26 17:36:18

阅读数 428

评论数 0

flutter知识点

加载本地图片: 1. lib同级目录下新建一个images文件夹 2. pubspec.yaml文件下,注意空格格式 assets: - images/img_load_fail.png 3. 代码中使用 image: new DecorationImage( image...

2019-01-09 15:56:26

阅读数 78

评论数 0

NDK在验签加密项目中的应用

基本概念介绍 JNI 全称 Java Native Interface,Java 本地化接口,可以通过 JNI 调用系统提供的 API。操作系统,无论是 Linux,Windows 还是 Mac OS,或者一些汇编语言写的底层硬件驱动都是 C/C++ 写的。Java和C/C++不同 ,它不...

2018-11-27 23:15:16

阅读数 52

评论数 0

自定义gradle插件入门

Android Gradle Android项目使用 Gradle 作为构建框架,Gradle 又是以Groovy为脚本语言。所以学习Gradle之前需要先熟悉Groovy脚本语言。 Groovy是基于Java语言的脚本语言,所以它的语法和Java非常相似,但是具有比java更好的灵活性。下...

2018-09-01 22:39:25

阅读数 196

评论数 0

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