自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (8)
  • 收藏
  • 关注

原创 ThreadLocal源码探究(Android版)

Android的Looper实现中核心用到了ThreadLocal这个类,但是基于对这个类不甚了解,所以详细看了源码和参考了一些博客,下面谈下自己的理解源码参考:Android源码的java.lang.ThreadLocal类(这里边实现同jdk关于ThreadLocal的实现有所区别)首先可以看下关于ThreadLocal类的官方注释:/** * Implements a thread-loca

2017-05-04 15:54:22 386 1

原创 LinkedHashMap源码探究

LinkedHashMap继承于HashMap,有HashMap的所有特性,除此之外LinkedHashMap维护了一个双重链表,这个链表定义了元素的访问顺序包括:插入顺序和访问顺序,默认为按照插入顺序关于HashMap介绍参考以下 http://blog.csdn.net/nuannuandetaiyang/article/details/71108241LinkedHashMap的构造函数

2017-05-03 11:16:15 260

原创 HashMap源码探究

HashMap的创建public HashMap() { table = (HashMapEntry<K, V>[]) EMPTY_TABLE; threshold = -1; // Forces first put invocation to replace EMPTY_TABLE } public HashMap(int capacity) {

2017-05-03 11:10:01 320

原创 图片缓存策略

内存缓存+sd卡缓存: 内存缓存策略LruCache:Least Recently Used最近最少使用算法即会淘汰最近最少使用的数据,可以看看源码:public class LruCache<K, V> { private final LinkedHashMap<K, V> map; /** Size of this cache in units. Not necessaril

2017-05-03 11:07:59 428

原创 崩溃捕获并上报服务器

Java 异常的分类: 基类为:Throwable Error 和 Exception 继承于Throwable RuntimeException和IOException等继承Exception 其中,Error和RuntimeException及其子类属于unchecked exception:可以不处理、抛出或交给其它代码或JVM完成 而其他异常为checked exception:

2016-11-01 15:00:47 468

原创 Android Studio实用插件

dexcount-gradle-plugin 编译时提示apk的方法数 https://github.com/KeepSafe/dexcount-gradle-pluginJenkins集成apk size与dexcount http://www.jianshu.com/p/c5c8528841eb#rd配置方式:在 app/build.gradlebuildscript { reposit

2016-11-01 14:57:30 602

原创 多输入条件逻辑判断(一)

例如下面图片这种情况有EditText、有TextView、有按钮点选EditText本身有输入限制包括错误提示和错误数据不支持输入、TextView或其它控件错误提示以上所有条件 错误或全部正确时自动修改底部按钮状态底部按钮点击时 如果有错误时提示通常做法: //fragment或activity添加EditText监听,并对各种条件进行判断 TextWatcher con

2016-11-01 14:52:49 1268

原创 二维码扫描逻辑梳理

http://coolshell.cn/articles/10590.html(二维码生成细节及原理)http://blog.csdn.net/u012917700/article/details/52369175(二维码扫描及优化策略)http://blog.csdn.net/Tau_Chan/article/category/1846313(打造极致二维码详解)打开摄像头扫描二维码拍照相关主要

2016-11-01 14:49:48 2764

原创 修改状态栏字体颜色

目前只有小米的MIUI、魅族的Flyme和Android6.0以上系统可以把状态栏文字和图标换成深色。/** * 设置状态栏图标为深色和魅族特定的文字风格 * 可以用来判断是否为Flyme用户 * @param window 需要设置的窗口 * @param dark 是否把状态栏字体及图标颜色设置为深色 * @return boolean 成功执行返回true * */publ

2016-11-01 14:47:31 666

原创 多线程&并发(二)

上次遗留问题:System.out.print()函数是线程安全的吗?//字符串打印是线程安全的 public synchronized void print(String str) {}//类似以下这些都不是public void print(char c) { print(String.valueOf(c));}public void print(char[] chars)

2016-11-01 14:44:29 271

原创 多线程&并发(一)

发展史没有操作系统,计算机从头到尾只执行一个程序,这个程序可以访问计算机所有的资源且每次只能运行一个资源利用率、公平性、便利性有了操作系统,出现了进程。操作系统负责为各个单独的进程分配各种资源如内存、文件句柄、安全证书等。 并在进程间采用套接字、信号处理器、共享内存、信号量、文件来共享&通信数据有了线程。允许进程存在多个程序控制流,线程共享进程范围的资源。线程的共享&通信需要更细粒度的机制

2016-09-14 11:12:41 317

翻译 异步线程处理bitmap

高效加载大bitmap课程讨论过,当从磁盘或者网络读取数据(或者其他没有在内存的数据)时,不应该在主线程执行BitmapFactory.decode*方法。因为此时加载数据花费的时间是不确定的,依赖于很多因素(磁盘读取速度、网速、图片大小、或者CPUd的功率等等),如果这些任务其中一个阻塞了UI线程,系统就会把应用标志为无响应,用户会有一个关闭它的选项(更多信息请参考响应性设计)这节课将会带领你使用

2016-07-24 17:20:53 1274

翻译 高效的显示bitmap

学习应该使用怎样的通用技术处理和加载bitmap对象来保持UI响应灵敏避免超过应用内存限制。如果不小心使用,bitmap会很快消耗掉可用的内存导致应用内存溢出的crashjava.lang.OutofMemoryError: bitmap size exceeds VM budget.有很多原因导致在Android应用中加载bitmap非常棘手:移动设备系统资源有限。Android设备一个应用只

2016-07-24 13:24:40 1094

翻译 性能优化小技巧

https://developer.android.com/training/articles/perf-tips.html这篇文章主要讲述了一些小优化,但是如果把这些小优化都结合起来的话则会提高一个app的整体性能。不过这也不代表对于性能它们会有质的改变。首当其冲是选择正确的算法和数据结构,不过它不在本篇文章的讨论范围内。你应该将本篇文章讨论的小技巧融入到编码习惯中以提示通用编码效率。编写有效率

2016-07-12 17:25:07 1605

翻译 管理App的内存

https://developer.android.com/training/articles/memory.html#Android对于任何软件来说RAM都是一个非常重要的资源,但是由于物理内存总是有限的,所以内存对于手机操作系统来说也更加重要。尽管Android的Dalvik虚拟机会执行GC,但是仍然不允许忽略应该在什么时候,什么地方分配和释放内存为了垃圾回收器能够回收app的内存,需要避免内存

2016-07-11 11:44:45 2691 2

原创 保存图片到相册

直接调用系统方法MediaStore类实现需要图片路径和名称 /** * Insert an image and create a thumbnail for it. * * @param cr The content resolver to use * @param imagePath The path to the image to insert

2016-05-04 11:44:47 599

原创 关于音乐推荐了解的一些概念

由于之前的工作,接触过一点点关于音乐客户端开发工作,后面也有留意过一些网易音乐背后nb的推荐算法,简单记录下,算是对这个领域或一些通用领域的一点点理解吧关于推荐这个产品属性,已经没什么新鲜,从电商、旅游、音乐甚至广告,只要与用户相关的,都有精准推荐的产品需求。而要做到精准推荐,做到真正让用户使用惊喜的推荐并非易事。首先要做到推荐,需要足够的相应的大数据已在数据库待分析,如要推荐用户歌单,首先需要收集

2016-03-21 15:19:43 481

原创 Android开发&测试工具

http://www.tuicool.com/articles/EFBjequ (参考) Android Studio PluginAndroid Studio-Preferences-Plugins 进入该界面可安装插件 GsonFormat 将json格式的数据转换为Java代码 robolectric 测试用例&编写框架 https://github.com/robolectr

2016-03-03 16:46:27 497

原创 android布局之二:布局复用

对于上一篇文章提到的布局管理器,使用起来容易,但是要想达到高效的目的还是没那么容易的,尤其是仅仅是利用它的最基本的特征往往创建不了最优的View,对于inflate布局文件本身是有性能消耗的,尤其是每增加一个嵌套布局或视图都会对应用程序产生很大的影响,所以我们就要尽量的做到对已存在的布局在更新时最小的变化一般原则有:避免不必要的嵌套:不要把一个布局放置在其他布局里,除非是必要的。避免使用太多视

2016-03-01 16:30:16 1062

翻译 GPU Debugging Tools

From:http://tools.android.com/tech-docs/gpu-profilerGPU debugging tools 是正在实验中的功能,目的是为了帮助检查GPU的状态和了解是什么导致了特定的渲染结果安装 GPU debugging tools默认studio没有安装GPU debugging tools,用之前你需要添加一下,你可以在SDK manager里边 SDK T

2016-03-01 16:07:51 7229 2

原创 精华链接整理

1、深入理解Java内存模型基本介绍 http://www.infoq.com/cn/articles/java-memory-model-1重排序 http://www.infoq.com/cn/articles/java-memory-model-2顺序一致性 http://www.infoq.com/cn/articles/java-memory-model-3volatile htt

2016-02-24 16:42:00 344

转载 home键监听(Android应用切换到后台监听)

1、通过注册广播监听package country.company.project.util;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import andro

2015-10-26 17:20:48 2117

原创 Android Studio快捷键设置

以下设置基于android studio 1.4版 1、当你已经下载完成了studio的安装文件、android sdk等等只需要安装并不需要联网下载各种文件,不需要漫长的等待,那么第一步需要如下的配置信息: Android Studio安装目录的bin目录下面的idea.properties文件,添加一条禁用开始运行向导的配置项:disable.android.first.run=true2、

2015-09-23 16:56:27 525

原创 Java的强 软 弱 虚引用

强:不会被垃圾回收器回收 软:内存不足时垃圾回收器才会回收对象。 弱:垃圾回收触发即回收对象 虚:必须配合引用队列一起使用,get方法一直返回null,指向的对象从内存中移除掉之后会加入到引用队列中。主要用来记录对象的生命周期或对象销毁后的操作

2015-09-09 18:08:04 480

转载 Handler MessageQueue Looper消息循环原理

Handler概述Handler在Android开发中非常重要,最常见的使用场景就是在子线程需要更新UI,用Handler来投递消息到主线程执行UI更新操作。因为Android系统的View是非线程安全的,所以需要在主线程更新UI。总的来说Handler就是用来做线程间通信,在不同线程之间传递消息。消息循环主体结图例从图中可以看出,四种颜色分别代表了四个对象,并且大致描述了几个对象之间的关系,以及消

2015-04-17 17:23:56 575

翻译 Android launchMode

在Intent 对象中一共有4种加载模式activity flags(FLAG_ACTIVITY.* 常量)来决定当处理一个intent操作的时候activity应该怎么展现 它们是: “standard” “singleTop” “singleTask” “singleInstance” 默认的是 “standard”. 就像下面列表展示的,加载模式分为两大类,一类是”stan

2015-04-16 16:33:28 466

原创 关于网络协议

什么是协议? 协议基本上是双方关于如何进行通信所达成的一致 不同机器中包含的对应层的实体叫做对等进程。在对等进程利用协议进行通信时,实际上并不是直接将数据从一台机器的第N层传送到另一台机器的第N层,而是每一层都把数据连同该层的控制信息打包交给它的下一层,它的下一层把这些内容看做数据,再加上它这一层的控制信息一起交给更下一层,依此类推,直到最下层。最下层是物理介质,它进行实际的通信。相邻层之间有接

2015-04-15 16:45:32 362

原创 Android数据库更新机制

Android源码:1、通过下面的构造方法传入新的版本号/**     * Create a helper object to create, open, and/or manage a database.     * This method always returns very quickly.  The database is not actually     * crea

2014-04-02 17:41:10 796

转载 JVM GC算法

原文:http://www.azure.com.cn/article.asp?id=223引用计数( Reference Counting )算法1960 年以前,人们为胚胎中的 Lisp 语言设计垃圾收集机制时,第一个想到的算法是引用计数算法。拿餐巾纸的例子来说,这种算法的原理大致可以描述为: 午 餐时,为了把脑子里突然跳出来的设计灵感记下来,我从餐巾纸袋中抽出一张餐巾纸,打

2012-05-11 15:19:16 811

原创 android问题多多

刚买的华为荣耀,发现竟无法输出log信息,查了下资料,自己也作为备忘:报错:Unable to open log device '/dev/log/main': No such file or directory解决:1.拨号盘输入*#*#2846579#*#*2.进入ProjectMenu->后台设置->log设置->log开关3.选择日志开OK!log正常输出...

2012-02-22 11:16:44 830

原创 android布局之一:简单入门

Android中UI涉及的Layout主要有:LinearLayout、RelativeLayout、TableLayout、TabLayout、GridView、Listview这里的六个为文档中提到的布局方式,除此之外,常用的还有AbsoluteLayout和FrameLayout布局。其中这些布局中需要注意的地方有:  LiearLayout本身是ViewGroup,它可以横向或者纵

2011-11-04 14:12:28 718

转载 一些文字

总是想要证明自己时,就没有了投入工作的心态 你感觉不舒服的时候,就是成长的时候 自得其乐是一种能力 不要太把自己当回事,也别把自己太当回事 与其怕失败,不如狠狠地失败一回 不要总认为自己比别人聪明 心中无敌,方能无敌于天下 不要害怕把自己的弱点暴露给他人 你自己觉得有,别人感觉不

2011-07-30 23:07:06 411

转载 图片和文字的混合显示

天气小图片显示在文字的后面,要实现此效果可以自己写一个View,但是也可以使用TextView结合android.text.Spanned来实现此效果。Spanned的内容可以是一段html文本,图片就可以用img元素嵌入进去了,图片的内容可以根据img元素的src地址获取,也可

2011-07-19 02:43:51 727

转载 android定时刷新界面

在做Android客户端软件的时候经常需要刷新某区块内容,比如微博客户端就需要定期检测是否有新发布的微博内容,如果有新微博客户端就显示出来。Android里可以选用两种方式来实现此功能。方式一、使用Timer(定时器)和TimerTask实现示例代码:public class M

2011-07-19 02:40:03 2378

原创 android实现自定义标题栏

全屏显示:requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.test);自定义具有进度条和滚动标题文字在需要修改标题栏的Activity的onCreat

2011-07-19 02:39:05 814

转载 JNDI的简单理解

<br />   看了JNDI的实现,我感有点惊讶和一点迷惑,惊讶的是系统编程比应用编程就难度来说还真不好说,比如就象实现JNDI,SUN已经定好了Interface,你要做的就是弄清楚整个功能的原理,然后去实现他,然而应用编程则没有人为你定好Interface,你只能根据需求分析自己定好Interface,自己定好框架,但是这个框架能不能满足需求那就不好说了,但是SUN定的规范可是肯定可以实现功能的,并且一般情况下你必须全部实现接口中的每一个函数,要不然,人家说你又不符合他的规范,不能通过他的认证。<br

2011-04-02 14:10:00 460

原创 关于数据库连接池的方方面面

  要说数据库连接池,我们先来谈谈对象池的概念  所谓对象池,就是把频繁使用的对象缓存起来,可以重复使用。首先:一个对象的生存周期包括:对象的创建、对象的使用、对象的销毁。1、对于对象的创建,我们知道,Java对象是通过构造函数来创建的,在这一过程中,该构造函数链中的所有构造函数也都会被自动调用。另外,默认情况下,调用类的构造函数时,Java会把变量初始化成确定的值:所有的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和double变量设置成0.0,逻辑值设置成

2011-04-02 14:07:00 1029

转载 初涉AOP

AOP下的权限控制实现摘要 面向方面的编程(AOP)是一种新的编程技术,它弥补了面向对象的编程(OOP)在跨越模块行为上的不足。AOP引进了Aspect,它将影响多个类的行为封装到一个可重用模块中,它允许程序员对横切关注点进行模块化,从而消除了OOP引起的代码混乱和分散问题,增强了系统的可维护性和代码的重用性。本文分析传统权限控制的实现方法,并研究了在AOP下权限控制的实现方法。<br /><br />关键词 AOP;横切关注点; 设计模式; 权限控制<br /><br />OOP应用开发面临的问题<br

2011-03-31 20:53:00 536

原创 网页上的一些事——拒绝“坏人”

  网页防盗链防盗链的概念:  网页显示的内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容,这样没有任何资源的网站利用了别的网站的资源来展示给浏览者,提高了自己的访问量,而大部分浏览者又不会很容易地发现,这样显然,对于那个被利用了资源的网站是不公平的。  盗链常见种类:图片盗链和文件盗链。盗链防止办法:  1、基于http协议头中的referer头字段,通过该字段可以知道引用网站的网址,而通过判断该引用网站是否合法便可以阻止盗链现象。如

2011-03-27 16:26:00 510

原创 多线程浅解(1)

多线程:生产者、消费者问题——多线程的经典案例,一直都晕晕乎乎,今天再看,稍微有了那么点心得就总结一下,加深一下印象。产生线程安全的原因:  1、多线程  2、操作共同资源  生产者、消费者首先操作的是同一资源,所以要解决首先得解决操作时的同步问题,应该把两者各自的生产和消费函数用synchronized和同一锁旗标锁起来,但这事实上只是解决了生产和消费过程互不打扰,却并没有解决生产和消费的有序过程,如果要解决还要借助于Thread从Object继承的wait()方法和 notify()方法,即当生产者

2011-03-23 18:57:00 517

Android面试题大全.pdf

Android面试题 BAT面试集锦 高级工程师面试题汇总 面试常被问知识点 高清带目录 Java基础知识点面试汇总

2020-05-12

操作系统之哲学原理(第2版)

本书对操作系统的核心内容进行了全面分析,包括操作系统的发展历史和基本概念、进程与线程、内存管理、文件系统、输入与输出、多核环境下的进程调度和操作系统设计。本书用大量生活实例,生动地解释了操作系统中的主要难点和模糊点:锁的实现、同步机制的发展轴线、纯粹分段到段页式的演变、多核环境下的进程同步与调度和操作系统设计等内容。本书重点突出、逻辑清晰、内容连贯,便于学生顺利掌握操作系统的核心内容

2019-01-21

计算机的心智 操作系统之哲学原理

本书对操作系统的核心内容进行了全面分析,包括操作系统的发展历史和基本概念、进程与线程、内存管理、文件系统、输入与输出、多核环境下的进程调度和操作系统设计。本书用大量生活实例,生动地解释了操作系统中的主要难点和模糊点:锁的实现、同步机制的发展轴线、纯粹分段到段页式的演变、多核环境下的进程同步与调度和操作系统设计等内容。本书重点突出、逻辑清晰、内容连贯,便于学生顺利掌握操作系统的核心内容

2019-01-21

GOF设计模式 Java中的经典

设计模式 Java经典技术 基础 教程 pdf

2011-07-06

Java多线程的总结

Java多线程的重要性可想而知,而对于多线程,某些情况下,又比较难理解,稍微参照网上的资料进行了总结

2010-12-02

c语言的面试题助你顺利通过

c语言面试题,经过我辛苦整理的,以电子书标识。

2010-11-15

自己整理的关于U盘的一些小知识

像u盘之类的东西从来都是难以琢磨的,自从那次我u盘出问题,便搜集了些关于u盘的信息,现在共享希望对大家有点用~~

2010-11-15

c c++ 帮助文档

c(c++)的帮助文档,帮助初学c的更好的学习

2010-10-21

空空如也

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

TA关注的人

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