自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java垃圾回收

当我们的内存不足的时候,会进行GC,也就是垃圾回收,收回占用的内存空间。所谓的垃圾,就是不会再被使用的对象,那么我们如何识别一个对象时存活的呢?那就是判断这个对象节点是否可达,这个判定可达的算法就是根索引算法。根索引算法 所谓根索引算法就是GC通过“GC Roots”节点开始,从上往下进行搜索,搜索走过的路径叫做“引用链”。当一个对象到引用链没有引用链相连时,表示这个对象不可达。也就会被判...

2018-04-03 17:14:43 164

原创 理解java.util.concurrent包(二)

下面我们来看java.util.concurrent.locks包: 1.AbstractOwnableSynchronizer、AbstractQueuedLongSynchronizer、AbstractQueuedSynchronizerAbstractQueuedLongSynchronizer和AbstractQueuedSynchronizer是AbstractOwnab...

2018-02-13 16:55:38 355

原创 理解java.util.concurrent包(一)

Java 5.0开始 提供了 java.util.concurrent 包,在此包中增加了在并发编程中很常用的实用工具类。 我们先看java.util.concurrent.atomic中的类: 以上的类均是使用了CAS算法来保证数据的原子性,所谓CAS即Compare and Set。CAS是一种无锁的非阻塞算法的实现,它的思想很简单:三个参数,一个当前内存值V、旧的预期值A、即...

2018-02-09 16:01:03 806

原创 Volley源码解析

Volley是Google推出的轻量级异步网络请求和图片加载框架,适用于数据量小,通讯频繁的网络操作。 下面我们来看Volley最基本的用法:RequestQueue queue= Volley.newRequestQueue(this); StringRequest request=new StringRequest(url, new Response.Listener() {

2018-01-23 16:48:00 171

原创 Glide源码解析(三)

终于到了我们的into方法啦,前面两篇分别讲了with和load方法,没有看的请戳Glide源码解析(一)及Glide源码解析(二)。话不多说,首先我们知道load方法返回的是一个GlideRequest对象,但是我们并没有在这个类中找到into方法,那么看看她的父类,GlideRequest继承于RequestBuilder,在这个类中我们看到了into方法@NonNull public

2018-01-17 18:59:40 733

原创 Glide源码解析(二)

上面一篇我们讲了Glide的with方法,没有看的请戳Glide源码解析(一), 这篇我们来看Glide的load方法,with方法返回的是一个GlideRequests,那么load肯定是在这个类里面,GlideRequests继承自RequestManager(管理和请求Glide的请求类,可以通过Activity和Fragment的生命周期自动停止和从起请求)。接下来我们看load方法,Gl

2018-01-17 14:08:40 349

原创 Glide源码解析(一)

Glide源码解析系列文章基于Glide4.5.0,源码看了很多遍,慢慢理清,文章链接如下: Glide源码解析(一) Glide源码解析(二) Glide源码解析(三) Glide最基本的使用如下:Glide.with(this) .load(R.raw.large_giphy_logo) .into(giphyLogoView);1、with

2018-01-16 18:59:27 1673 1

原创 Java中创建对象的5种方式

Java中有5种创建对象的方式

2017-12-28 10:50:11 691

原创 android虚拟按键NavigationBar的判断

下面方法可判断手机是否有虚拟按键功能:public boolean hasNavigationBar(Activity activity) { DisplayMetrics dm = new DisplayMetrics(); Display display = activity.getWindowManager().getDefaultDisplay();

2016-11-02 19:19:10 5669 5

原创 Android Facebook分享以及一些注意事项

Android Facebook分享以及一些注意事项在分享之前,你需要做以下几件事情:添加Facebook的SDK到你的应用中去dependencies { compile 'com.facebook.android:facebook-android-sdk:4.7.0'} 注意:Facebook支持的最小SDK版本为15,所以有两种方法:第一、将minSdkVersion设置为15

2015-12-29 16:07:45 7250 4

原创 万能ListView适配器

普通的ListView适配器仅仅适应一个listview,然而一个项目中可能不止一个listview,那么,对于每一个listview都要重写一个Adapter,如果需要的listview有很多,代码量是很大的。同时,每新增一个,都要重写一个适配器,很不方便。那可不可以极大地减少代码量呢,答案当然是可以的,下面就来讲解一下:首先,需要一个listview,代码如下: xmlns:

2015-08-09 21:15:33 589

原创 js实现鼠标点击获取相对于整个页面的位置

JS 获取图片相对坐标 function forward(event){ var e = event || window.event; var scrollX = document.documentElement.scrollLeft || document.

2015-06-17 10:48:14 3864

原创 Android用程序在桌面创建app快捷方式

首先,在AndroidManifest.xml添加权限然后创建一个CreateShut类,作为创建桌面快捷方式的工具public class CreateShut { public CreateShut(Activity activity) { // intent进行隐式跳转,到桌面创建快捷方式 Intent addIntent = new Intent("com.android

2015-03-24 10:21:47 715

转载 android中Service和Thread的区别

1.服务不是单一的进程。服务没有自己的进程,应用程序可以不同,服务运行在相同的进程中。2.服务不是线程。可以在线程中工作。一.在应用中,如果是长时间的在后台运行,而且不需要交互的情况下,使用服务。同样是在后台运行,不需要交互的情况下,如果只是完成某个任务,之后就不需要运行,而且可能是多个任务,需需要长时间运行的情况下使用线程。二.如果任务占用CPU时间多,资源大的情

2015-02-10 23:55:56 462

仿qq登录界面(包括下拉删除以及半透明忘记密码)

仿qq2014版登陆界面,包括删除下拉用户列表以及半透明忘记密码部分

2014-08-05

空空如也

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

TA关注的人

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