自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我是紫色紫色的专栏

工作许久,决定记录下工作点滴,有些内容也许不太容易找到,但是我知道的一定会分享给大家!共同努力!

  • 博客(97)
  • 资源 (10)
  • 收藏
  • 关注

原创 好的技术文章收集整理,看这一篇就够了

前言:本篇博客仅作收集整理之用,将平时看到的比较好的文章整理一下,便于自己反复温故,也为他人提供便利,如有侵权,敬请联系我删除,感谢!1.Android图片加载库比较...

2020-01-04 14:52:05 48789

原创 我的服务器学习之路系列学习笔记

大家好,小弟初学服务器相关知识,将学习过程中的知识点整理成了一篇篇技术博客分享给大家,希望对初学者有所帮助,大佬们不要打击我说写的很低级就好,毕竟万丈高楼平地起,刚开始,只能从这些入手了,慢慢来,一切都会变好的,同时谢谢各位的支持,我也会继续分享下去,谢谢大家~笔芯~ JAVA学习笔记01——Linux常用命令详解JAVA学习笔记02——Linux系统下安装JDK JAVA学习笔记03

2018-01-31 10:59:59 1294

原创 Android+Java知识点总结-持续更新中(为了更好的自己)

前言:大家好,最近不管是看书也好,看博客也好,看到许多自己曾经看过但是可能时间久了有点记得不太清的内容,于是乎就想以后要是这种情况,现在何不随手记录下来呢,方便自己以后阅读回顾,同时也可以给大家提供帮助,所以在很长的一段时间内,我都会简短但是清楚的说明一个知识点,考虑到如果每个知识点都写的非常详细的话,篇幅会很长,并且查找起来也非常费力,所以如果有关的重点,我会单独的抽取出来详细讲解,本篇博...

2016-09-01 21:54:50 69816 3

原创 Android+jacoco实现代码覆盖率最正确的实现方式,没有之一!

前言 :jacoco是Java Code Coverage的缩写,是Java代码覆盖率统计的主流工具之一。关于jacoco的原理介绍的文章在网上有很多,感兴趣的同学可以去找别的博客看看,我这里不做赘述。它的作用是在安卓项目的代码覆盖率统计使用了jacoco的离线插桩方式,在测试前先对文件进行插桩,然后生成插过桩的class或jar包,测试(单元测试、UI测试或者手工测试等)插过桩的class和jar包后,会生成动态覆盖信息到文件,最后统一对覆盖信息进行处理,并生成报告。在我接到这个需求,需要统计开发人.

2021-04-13 14:59:09 99246 12

原创 阻塞队列实现生产者-消费者模式

public class Test { private int queueSize = 10; private ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<>(queueSize); public static void main(String[] args) { Test test = new Test(); Producer producer = test.new Produc

2021-01-08 18:42:40 2170

原创 Android获取桌面启动图标的位置

Android系统默认会将用户点击的“桌面图标”的位置发送给启动页MainActivity,以此来实现某些系统的过渡动画,所以在MainActivity中调用下面的代码是可以得到当前App的icon坐标的。public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan

2020-05-24 16:44:54 3632

原创 Android利用反射下拉出通知栏

因为并没有公开的API提供这个功能,所以只能通过反射来调用了,简单demo如下:import android.content.Context;import android.os.Build;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;

2020-05-24 11:11:51 2522

原创 Android动态代理实现修改App版本号

应用场景通过这个案例,我们可以了解一下动态代理技术,并且能够在不改变版本号的情况下,动态修改版本号进行升级功能的测试,主要实现原理是通过动态代理getPackageInfo()来mock数据。一、创建PackageManagerHook代理类public class PackageManagerHook { /** * 越早hook越好,推荐在Application.attachBaseContext中调用 */ public static void hook(final Cont

2020-05-19 11:55:48 4468

原创 快速有效解决Fragment中onActivityResult不回调的问题

应用场景:MainActivity嵌套了四个Fragment,信誓旦旦的在Fragment中打开一个功能页QrCodeActivity,在QrCodeActivity页面setResult(RESULT_OK, resultIntent);但是我的Fragment中的onActivityResult方法并没有执行到回调,网上有很多种方法,有的很复杂,下面提供一种简单有效的解决方案。1.在Fragment对应的MainActivity中,重写了onActivityResult方法,确保加上super.onA

2020-05-18 20:03:36 4868 1

原创 Android设置android:elevation无效?那是你的姿势不对!

因为本人开发的一个app是套壳应用,所以MainActivity可能会被多个product用到,最开始在某一个product开发UI的时候用到了android:elevation这个属性,能够营造出阴影的效果,没有任何问题。过了一段时间另一个product也需要用到MainActivity,因为是套的是webview加载H5页面,H5开发小伙伴用到了一个绘制图表的功能,但是最终运行到app的时候发现图表无法正常展示,当时查了半天这个问题是因为Activity开启了硬件加速,当把MainActivity的an

2020-05-13 17:41:28 56010

原创 Android系统启动流程介绍

前言:本文只将最近看书了解到的知识点进行一个浓缩总结,并没有对其中流程进行详细介绍,都是些C/C++代码,流程也比较复杂,可能这篇文章对没看过源码的人会很懵逼,也不知道实现原理,后续有精力再整理吧~一、整体流程1.启动电源以及系统启动当电源按下时引导芯片代码从预定义的地方(固化再ROM)开始执行。加载引导程序BootLoader到RAM中,然后执行。2.引导程序BootLoader引...

2020-01-10 22:57:12 47980

原创 SharedPreferences使用性能优化

前言:SharedPreferences是开发中很常见的一个类,它的主要作用是持久化存储本地的一些轻量级数据,便于我们做一些简单的数据存储和逻辑判断,因为它简单和无结构化的特点,对于一般简单的业务场景来说,比数据库更加实用,本文主要说明一下在使用过程中的性能优化注意事项。1、避免存储大量数据SharedPreferences设计之初就是为了提供一个轻量级的数据存储方案,所以它不能和数据库相...

2020-01-05 15:36:15 58939

原创 Android App压力测试

前言:写这篇文章的原因呢,一是因为不少同学作为Android开发,很少会自己去做压力测试,不了解相关的技术,不知道压力测试是什么、怎么工作的;二是询问过身边的一些测试同学,他们进行压力测试的时候,很多情况只是执行monkey的随机操作,也有部分同学不会写测试脚本,那么本篇文章就应运而生了!一、背景1.为什么要进行压力测试?我们都知道一款产品上线之前都需要进行的一步操作就是测试验收,那么人...

2019-11-24 21:01:19 28653

原创 Android实现ViewPager视差动画效果及背景渐变过渡

在上一篇文章(TabLayout与ViewPager配合使用踩坑总结)中我记录了TabLayout搭配ViewPager使用过程中的踩坑过程,那么这一篇文章我来写一下ViewPager切换的视差动画效果及背景渐变过渡是如何实现的!一、视差动画实现惯例首先来看看ViewPager的切换效果:注意下方的三行文字,在切换的时候是有一个视觉差的,也就是它们仨不是以同一个偏移量移动,可以看到名称那一...

2019-11-09 12:14:27 67146 6

原创 TabLayout与ViewPager配合使用踩坑总结

前言:TabLayout是个神器,Android系统提供的一种控件,和ViewPager搭配使用,能帮助我们很快捷的实现头部Tab点击切换和ViewPager滑动关联滑动的动画效果,但是在我近期的使用过程中,还是发现了一些坑,耗费了一点时间,发现问题后简直被自己蠢哭了,特此记录一下使用中的坑,供大家参考。先来看看我们将要实现的一个效果吧:这是我们最终版的效果,那么其中的过程是什么样的呢?...

2019-11-08 20:07:21 79390

原创 Android基础编译流程

前言:该文章为学习笔记,记录Android知识点,大家一起学习。Android工程的构建打包是一个非常复杂的流程,涉及工程源代码、资源文件、AIDL文件,以及工程所依赖的库文件的编译转换。编译流程非常灵活,因此了解它的一些底层工作原理会很有帮助。从谷歌官网上找到一张典型的构建流程图:https://developer.android.com/studio/build/index.ht...

2019-10-31 11:29:11 81888

原创 Java中常见的类加载器及双亲委派机制的原理

相信不少的同学在面试的时候会被问到一个词:双亲委派,懂得同学懂,不懂的同学可能会尴尬一笑,那么今天咱们就来聊聊这个问题的原理,首先我们需要了解一下java中常见的几种类加载器。一、Java中常见的类加载器1.BootstrapClassLoader纯C++实现的类加载器,没有对应的Java类,主要加载的是jre/lib/目录下的核心库2.ExtClassLoader类的全名是...

2019-10-27 15:12:35 83617 2

原创 Android实现真正的344格式化手机号码输入框

前言:在最近一个项目的登录页上,输入手机号码这个输入框,UI稿要求显示344样式的格式化手机号码,例如“130 1234 5678”,在之前其实也有过类似的需求,但是在实现344格式化手机号码的过程中或多或少碰到不少坑,当时也没有深究,以项目排期紧为由将需求拍回去了,折中的方案是设置输入框的android:inputType=“phone”,android:maxLength=“11”,这是最常...

2019-08-08 20:40:57 28938 5

原创 Android实现多渠道打包,动态替换包名、Icon、图片等资源,解决因applicationId和BuildConfig路径不匹配的问题

前言:Android实现多渠道打包,这个问题并不新鲜,解决方案是固定的那么几种,网上的博客也有很多,我这里只是针对近期开发中遇到的坑进行整理,方便自己方便他人。一、初识productFlavors无疑要实现一个壳工程打出不同样式的包,这个技术解决方案Android已经替我们考虑到了,也就是使用Gradle中的productFlavors,在做定制或适配的时候,不需要建立多个工程、来回切换项...

2019-07-17 15:19:12 67862 5

原创 用LiveData实现新的事件总线

背景:在Android系统中,我们开发的时候不可避免的会用到消息传递,页面和组件之间都在进行消息传递,消息传递既可以用于Android四大组件之间的通信,也可用于主线程和子线程之间的通信。从一开始Android书本中学习的Handler、BroadcastReceiver、接口回调等方式,到我们现在广为使用到的greenrobot家的EventBus,Square家的Otto,还有依托响应式编程...

2019-05-22 10:59:16 56195

原创 如何正确的判断当前的Fragment是否对用户可见?

前言:写这篇文章的背景是最近做项目处理Fragment中曝光埋点逻辑时,发现当我切换到其他的Fragment时,页面从不可见到可见的过程中,已经隐藏的Fragment的onResume方法仍然会执行,究其原因是因为Fragment的生命周期是跟随其载体Activity的生命周期走,所以这个时候载体MainActivity从onPause-&gt;onResume过程中,会触发每个已经存在了的Fr...

2019-03-17 21:18:37 44604

原创 如何给PDF文件添加文字水印?

在最近一次自己捣鼓中,发现给PDF添加文字水印并不方便,有的说要下载Adobe的软件,有的在线pdf添加水印的网站,试过之后发现只能添加一个水印文字,并不能像我希望的那样能够全屏铺满,然后在搜索结果中发现了能够用itextpdf这个库用代码的方式给PDF添加水印,但是当中过程也是曲折,特此记录一下,并说明当中的坑。这里直接贴上java代码:public class PDFWaterMark {...

2019-02-19 14:13:34 36436

原创 AndroidMainfest.xml文件中allowBackup=true有什么风险?

前言:最近接到公司安全中心同学的邮件告知开发中的一款App存在数据备份及隐私泄漏的风险,具体为AndroidMainfest.xml文件中allowBackup=true,之前一直没有专门了解过这个属性的作用及有什么隐藏的风险,于是上网搜索了一下相关资料,发现这个属性还挺有意思的,包括属性的影响到底有多大和潜在风险啥的,于是记录此文,谈谈自己的理解。准备工作在我们开始演示之前,先做一些准备...

2019-01-02 20:25:45 36450 1

原创 Android解决MyScrollView包含RecyclerView刷新数据会滑动到RecyclerView顶部的问题

首先要说说MyScrollView是什么东西,其实这个控件大家用过的话都会了解,Android原生自带的ScrollView中如果包裹了RecyclerView或者ListView等控件的话,那么运行效果不尽如人意,主要体现在RecyclerView或ListView等数据不能完全显示出来,这是因为系统内部对这些并没有处理,所以这个时候MyScrollView基于ScrollView进行了改造,使...

2018-10-31 13:16:12 38214 1

原创 解决android studio编译后部分代码单词显示不全,吃字漏字的问题

今天碰到这个问题是个很偶然的情况,如图所示: 其实这个时候都单词是完整的,按住control+鼠标能够显示完整,但是就是看上去漏字,在网上查了一些方法,什么重启电脑+AS,重新编译,清除build文件夹内容再编译等等骚操作以后,都没有解决这个问题,后来我咨询了一些别的开发小哥哥小姐姐,终于有一位大佬提供的方案能完美的解决这个问题,秘技如下: 按照图中所示的操作,能完美解决吃字漏字的问题...

2018-07-12 11:33:19 32460 3

原创 Android自定义实现PullToRefreshRecycleView刷新加载控件原理和使用

写在前头:PullToRefresh这个下拉刷新上拉加载更多的控件相信大家并不陌生,Github上搜索也有很多相关的控件,并且star数量也不低,但是呢如果你想拥有很高的自由度的话,那么还是敌不过自己实现一个或者你能把开源的控件源码看明白然后基于上面自己修改成自己需要的样式,那么我就是干了这件事,在网上看到一篇博客,然后下载源码看了看,然后就想将它进行改造一番,那篇文章的地址我是真的找不到了...

2018-06-01 11:58:51 28204 1

原创 Android中IntentService实现原理详解

写在前头:近期或多或少的去了一些比较优秀的企业面试,现在的企业要求比较高,当然也可能和你面试的岗位有关,一定的工作年限需要有对应的知识的深度和宽度,并且会发现一个特性,就是面试官非常注重你的基础知识的理解和掌握能力,比如说去面试Android开发,但是可能会问你很多的java知识,包括Http和Https,还有网络通信,H5数据交互等等知识点,那么我们应该如何应对这些呢,答案只有一个,多看多...

2018-04-14 15:01:14 32735

原创 Thread使用start和run方法启动线程有什么区别?

写在前头:近期或多或少的去了一些比较优秀的企业面试,现在的企业要求比较高,当然也可能和你面试的岗位有关,一定的工作年限需要有对应的知识的深度和宽度,并且会发现一个特性,就是面试官非常注重你的基础知识的理解和掌握能力,比如说去面试Android开发,但是可能会问你很多的java知识,包括Http和Https,还有网络通信,H5数据交互等等知识点,那么我们应该如何应对这些呢,答案只有一个,多看多...

2018-04-14 12:35:05 31095 12

原创 Java使用反射创建被private修饰的构造函数对象

如果一个构造函数是public的话,那么我们利用反射是可以很容易的创建一个对象实例,但是如果我们的构造函数是被private修饰的话,那么用反射还能创建一个对象吗?答案是可以的,注意一点就可以拿到了,下面一起来看看。首先我们来创建一个类:public class PrivateTest { private PrivateTest() { } public v...

2018-04-10 13:00:57 16418 1

原创 Activity被回收掉之后的网络请求回调处理方法详解

想起写这么一篇博文的前提是上周去面试了一家公司,其中有这么一个问题印象深刻,结合当时在网上看到的解决办法我就说了一个错误答案,结果当场就被面试官给指出了错误,所以回来后和我的领导一起讨论了这么一个问题,他提出了一个很好地解决思路,于是乎我便写了这么一段代码,对于能够真正的解决这个问题的,我相信这是最正确的,如果有更好的,我收回这句话,哈哈哈~问:Android中进行网络请求,如果当网络...

2018-04-09 21:18:19 23759 2

原创 单例设计模式双判空实现以及使用volatile修饰instance讲解

单例设计模式的写法有那么几种,懒汉式和饿汉式,但是相比较而言都不够严谨,存在逻辑漏洞,某些情况下并不能保证完全实现单例,尤其是在并发的情况下,会出现线程不安全的问题,这一点我们这里并不细讲,大家可以自行查找其他文章。所以双判空加锁的单例写法就出现了,来看看一般人的写法:public class Test { private static Test instance; ...

2018-02-28 10:47:34 21835 4

原创 泛型中占位符T和?有什么区别?

泛型中占位符T和?有什么区别?这是一个好问题,有的人可能弄不清楚,所以我们这里简单的演示一下,相信大家一定能弄清楚的!先上两段代码:public static &lt;T&gt; void show1(List&lt;T&gt; list){ for (Object object : list) { System.out.println(object.toString...

2018-02-26 11:17:18 32280 26

原创 Android为什么推荐使用SparseArray来替代HashMap?

SparseArray也许你没听过,那正好今天就来学习一下咯,这也是Android官方推荐使用的,所以我们需要了解一下他的优势和劣势在哪些地方。首先SparseArray用来和HashMap做比较,在安卓项目中,你新建一个HashMap对象,注意下面会有下划线,里面有提示 翻译成白话文的意思就是建议使用SparseArray替代HashMap来获得更好的表现。我们都知道HashM...

2018-02-24 16:31:09 9545 1

原创 LruCache实现原理分析

LruCache是面试常客,你说你知道它是干啥的,却不知道它是怎么干的,你说这有啥用,知其然得知其所以然,所以一起看了看源码,一定会恍然大悟,以后面试可以有底气的说出它的工作原理了,那么一起来看看吧,代码不多,加上注释也就300多行。我们可以打开LruCache.java的源码,第一行代码就是声明了一个变量private final LinkedHashMap&lt;K, V&gt...

2018-02-22 16:00:53 26839

原创 Android事件分发机制流程详解(二)

前言:上一篇我们已经从事件分发执行流程入手,一起来了解并分析了事件分发的经过,大家应该从分析中能对事件分发的有个总体的认识,并且我相信应该也能自己分析出事件会如何执行,其实就那么点东西,弄明白了就不难了,但是今天我们还是要来看看activity,viewgroup,view的相关源码来学习一下他们的工作原理,那就开始吧!首先来结合我们上一篇的工程情况来看看: 再次强调,1个点击事...

2018-02-12 17:38:55 8238

原创 Android事件分发机制流程详解(一)

前言:今天来捋一捋Android的事件分发机制吧,其实很多人都知道有这么个东西,但是具体的事件执行流程没有认真的研究过分析过的,还是很难捋清楚其中的关系的,毕竟从activity到ViewGroup到View,有那么多的dispatchTouchEvent、onTouchEvent,ViewGroup中还多了个onInterceptTouchEvent方法,方法都可以返回true、false或者s...

2018-02-11 10:11:45 13142

原创 JAVA学习笔记28——网页静态化之Freemarker(二)

上一篇文章中我们讲了关于freemarker的基本知识和使用方法,包括一些标签的使用,如果没看过的童鞋,可以点击前往学习《JAVA学习笔记27——网页静态化之Freemarker(一)》那么今天我们来讲一下如何将freemarker和Spring进行整合,并且整合后如何在代码中进行使用,gogogo!!!1. 在pom.xml文件中添加依赖dependency> groupId

2018-02-06 10:09:06 6720

原创 JAVA学习笔记27——网页静态化之Freemarker(一)

开始我们的内容之前,我们先来了解一下为什么网站优化要把网页静态化?1.为什么网站优化要把网页静态化?SEO优化过程中,把动态网页转化为静态页面是许多SEO优化人员常常做的事情,面对这种SEO优化操作的行为很多人可能有疑问,那就是为什么网站优化要把网页静态化?下面就给大家详细的介绍一下关于网页静态化的一些问题。什么是动态页面?什么是静态页面?动态网页:是以.asp、.jsp、.p

2018-02-06 09:27:07 8190

原创 JAVA学习笔记26——ActiveMQ讲解之整合Spring(二)

上一篇文章中我们讲解了ActiveMQ的基本用法,在代码中按照步骤一步步的就可以正常使用了,但是我们应该都会觉得这样的写法太繁琐了,每次都得写这么一大段代码才能发送和接收消息,所以今天我们讲一下如何将ActiveMQ整合Spring,和Spring集成以后,ActiveMQ的使用将会简单不少。一、代码配置1.1 在pom文件中引用相关jar包dependency>

2018-02-05 14:23:33 5763

原创 JAVA学习笔记25——ActiveMQ讲解及实战入门(一)

情景分析: 1.在项目中,添加商品的业务逻辑中,需要添加一个同步索引库的业务逻辑。 如果把代码直接写在本项目中,那么就会导致业务逻辑耦合度高,业务拆分不明确 2.我们把业务逻辑在***search项目中实现,调用服务在***manager实现,将业务逻辑分开实现,但是这样又会导致服务之间的耦合度变高,服务的启动有先后顺序,如果调用服务先启动,执行服务后启动,那么调用服务将会失败。

2018-02-01 17:05:00 3221

MyTabLayout.zip

是TabLayout与ViewPager配合使用踩坑总结这篇文章的工程源码,其中包含了修改后的TabLayout源码,供大家学习使用

2019-11-08

itextpdf-5.5.12

亲测有效好用的itextpdf-5.5.12版本,支持在pdf中生成水印

2019-02-19

Android中abe工具

abe工具,用于解压allowbackup备份数据,支持V4版本,亲测有效!

2019-01-02

Android笔试面试指南

Android笔试面试指南,非常实用,对大家也有帮助,可以看看

2018-03-22

Springboot,axis1.4的demo

Springboot集成axis1.4的demo,亲测好用,大家可以试试

2018-03-22

log4j-为文章提供下载资源

log4j.zip,供文章内容使用,可结合本文阅读下载《JAVA学习笔记07——Hibernate框架第一章》

2017-10-13

Hibernate开发需要的jar包

Hibernate开发需要的jar包,必须用的,这里摘出来单独给各位

2017-10-13

android录制视频及播放Demo

这是android平台的一个利用MediaRecorder录制视频及播放的简单Demo,可以用于学习。

2016-07-11

Android闪闪发光字体Shimmer效果

Android闪闪发光字体Shimmer效果,像过去那种flash动画效果,一道光从左到右慢慢闪过,闪过的地方高亮显示,十分酷炫。

2015-08-11

FancyCoverFlow-master.zip

支持Item切换动画效果的类似Gallery View

2015-08-07

空空如也

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

TA关注的人

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