自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java内存管理的一些小疑问

转载请注明出处:https://lizhaoxuan.github.io前言一直以来都在接受一个论调:在Java的内存管理中,基础类型变量保存在栈中,对象类型保存在堆中。 这其实是一个很粗的论调,会引起很多错误的理解。这篇博客的产出,仅是因为脑子里偶然间冒出来的一个问题:java栈内存的内存回收是怎么做的? 因为这个问题,引发了一系列的小问题:所有的基础类型变量都保存在栈中吗?

2018-01-28 00:27:08 274

原创 AccessibilityService分析与防御

转载请注明出处:https://lizhaoxuan.github.io前言提起AccessibilityService,你最容易联想到的肯定是微信抢红包插件!但这个服务的设计初衷,是为了帮助残障人士可以更好的使用App。一些“调皮”的开发者利用AccessibilityService可以监控与操作其他App的特性加上系统远超人类的反应速度,在某些竞争类场景开发出了作弊外挂,最常见

2018-01-28 00:23:36 9797 7

原创 探索Bitmap使用姿势

转载请注明出处:https://lizhaoxuan.github.io前言早些时候对Android下GC调用时机比较好奇,所以写了一些case测试各种情况下Android GC调用时机与现象,感兴趣的话可以跳过去瞅瞅 : 《Android GC机制实践调研》在这个过程中发现一个让人非常震惊的问题:从资源文件中加载一张110kb的图片创建Bitmap对象,占用的内存高达40MB!

2018-01-28 00:16:28 3263

原创 SUCAICUNFANG

素材存放:

2017-03-10 13:23:54 345

原创 观察者的前世今生

观察者的前世今生观察者是一个非常棒的消息通信机制模式,许多优秀的框架都使用了观察者模式的思想。====================观察者模式的前生这里我想借着观察者,聊聊回调。因为这真的是一个有趣的东西。而它也正是观察者的前生。我把回调理解为开发者的一个小进阶。为什么这么说呢?回调解决了所有初级程序猿都会遇到棘手问题: A → B B → A A调用B,B如何反过来调用A新手通常都会使用

2016-03-22 15:00:57 656

原创 责任链的方法化

责任链的方法化责任链模式是一个非常简单容易理解的模式。在书中的介绍中,责任链的使用时用类似链表的方式将对象建立起一条链。这样的方式怎么说呢?有好有坏吧。===================概念责任链模式:将多个处理请求的对象按照优先级连成一条链,并沿着该条链处理请求,使得多个对象都有机会处理。应用场景分析我们先从书中(设计模式之禅)的最后例子开始分析。案例:注册时有两类注册:VIP用户和普通用户(

2016-03-22 15:00:08 480

原创 设配器模式不止是补救,有时更像是一个创造者

设配器模式不止是补救,有时更像是一个创造者适配器模式的官方应用场景是在软件开发后期,应对功能扩展后,新的类结构无法对应之前的接口,从而采用的一种补救措施。然而如果你只记住了这个,你可能会错过一个很重要的技巧。================定义将一个类的接口变换成客户端所期待的另一个类的接口,从而使原本因接口不匹配而无法一起工作的两个类可以匹配。咬文嚼字必须要承认的是适配器模式是一个非常好的补救模式

2016-03-22 14:59:35 423

原创 拒绝装饰模式

拒绝装饰模式装饰模式是委托的一种,它更注重的是对原有对象功能的扩展。所以是一个使用频率较高的模式。但是!今天我要告诉你,在一些时候,你应该拒绝它的“诱惑”==============背景通常,在我们的程序中都会存在两类javaBean:Entity(实体类)与Dto(数据传输类)。其中Entity是最普通的javaBean,只有属性与setter/getter方法,通常作为数据持久化操作。而Dto负

2016-03-22 14:58:52 368

原创 只关心零件的Buider

只关心零件的Buider建造者模式的初衷是为了将对象的构建与表示分离,封装一个对象的不懂表现方式。但往往实习使用中,我们的需求并没有那么多的表现方式,且遇到最多的Builder也不是定义中的Builder。==============定义传统定义:将复杂对象的构建与它的表示分离,使得同样的构建有着不同的表现方式。实际使用的Builder:依照赋予的不同参数,去创建不同表现的对象。这是我们最常见到的B

2016-03-22 14:58:06 440

原创 模板,新手读代码砸电脑的诱因

模板,新手读代码砸电脑的诱因模板是一个很初级的设计模式,很多时候我们不知不觉就已经使用了。很多时候新手问你的问题,是模板引起的?=============定义模板的官方定义是:在父类中定义一个算法框架,而将算法的具体实现延迟到子类中,使得可以在不改变算法结构,而改变算法的某些特定步骤。新手对代码懵懵懂懂的原因在传统的面向过程编程与初级的代码学习中,除了官方API是我们死记硬背的,模块与模块之间的依赖

2016-03-22 14:57:20 642

原创 工厂的争议

工厂的争议说起设计模式,你第一个所想到的几个设计模式里,一定有工厂模式。因为它既简单方便,见效快。但像所有设计模式一样,它也有着争议。============================工厂的滥用第一次明确的学习接触工厂模式,是在大学里学习JavaEE开发。老师的示例代码里,分别给Business,Dao设置了工厂,用来创建Business,Dao。就像这样:class BusinessFact

2016-03-22 14:56:50 383

原创 单例没你想的那么简单

单例没你想的那么简单单例是最简单的几种设计模式之一,但它远没有你想的那么简单!==============应用简单的提一下,哪里需要使用单例:线程池、缓存、网络等等需要保持全局作用域且唯一的对象。但是这里需要提一下,什么不适合申明为单例:View。View是比较重的对象,占内存较普通对象更多,而View更可能引用其他资源,而导致其他资源也无法被释放。懒汉:private static NetWork

2016-03-22 14:56:23 379

原创 从开闭原则,讲讲初级的代码设计

从开闭原则,讲讲初级的代码设计像所有小菜鸟一样,在看完了设计模式的6大原则以后,我以为我掌握了面向对象的绝世秘籍,迫不及待的连后面的设计模式都不愿意看了,因为我知道、书上说设计模式就是对6大原则的诠释和应用。从此~开始跌跌撞撞重构与架构之路。================= 又是啰嗦的前景描述,着急的直接看后面的总结吧。大概是在半年以前开始接触设计模式吧。因为被垃圾代码的维护彻底摧垮了内心,开始

2016-03-22 14:55:45 1113

原创 迪米特是触摸架构的开始(我瞎说的)

迪米特是触摸架构的开始(我瞎说的)为什么这么说呢?因为:解耦解耦解耦啊(重要的事情说三遍)。额……解耦急速架构了?不不不,我可没这么说,触摸架构嘛!====================迪米特法则:最少知识法则,一个对象应该对其他对象有最少的理解。说是这样说,其实真正用起来还是别别扭扭。我们换个角度讲:一个良好的架构,模块与模块之间、层与层之间完全像是一个黑盒子连着一个黑盒子。模块与模块只关心输入

2016-03-22 14:53:38 417

原创 接口隔离不止是要求,你应该要明白隔离的好处

接口隔离不止是要求,你应该要明白隔离的好处最早我没有理解这个原则,只是以为是一种实际要求。但是后来的实践中才终于发现了隔离的好处。==============接口隔离的两个概念:客户端不应该依赖它不需要的接口。类间的依赖关系应该建立在最小的接口上。其实这个概念我们在前几章就有接触过类似的。我是这样说的:你给我的,就是我都能用的,不要口头告诉我不要调用你这个方法。所以到这一章,你就应该能够隐约体

2016-03-22 14:51:51 3564 1

原创 依赖倒置像金鱼,好看但难养

依赖倒置像金鱼,好看但难养依赖导致是解耦的核心之一,但它就像金鱼一样,看着好看,缺很难伺候。================依赖倒置 - 面向接口编程。(是不是一下变得高大上了?)依赖倒置的核心:模块之间的依赖通过抽象(抽象类、接口)产生上一章我们聊了继承,这章聊实现。我理解的面向接口编程字面意思,是通过接口产生依赖关系。实现类不直接发生交互。那么接口是什么呢?接口是规则的集合接口设定了一系列的规则

2016-03-22 14:51:15 574

原创 里氏替换:爱恨纠葛的父子关系

里氏替换:爱恨纠葛的父子关系设计模式之禅里的这句话真的很形象。6大原则里,里氏替换可能是矛盾最大的一个。=========通俗了讲,依赖于面向对象的继承机制,父类能出现的地方,子类都可以无缝替换。这在整个架构设计中占据了举足轻重的地位。我相信大家对这一点都深有体会既然里氏替换这么矛盾,那么我们就从正反两个方面聊聊它好了。(里氏替换讲的除了继承类以外,还包括实现接口哦~接口你也可以理解为父类)正方父

2016-03-22 14:50:36 701

原创 因为够懒,所以我严守单一职责

因为够懒,所以我严守单一职责其实想把6大原则放一起说的,但是写开了以后才发现,光一个原则就能扯出一大通东西来,还是分开说吧。===========哪里单一?单一嘛,大家都懂的,只干一个事。但是,哪里需要单一呢?只有类和接口? 任何东西都要单一! 容我给你从小了慢慢往大了扯~变量要单一. 啊这个没疑问的吧,一个变量只干一件事,比如一个按钮不能又是播放按钮又是关机键。关机和开机放一起没关系,因为他们都

2016-03-22 14:49:52 379

原创 类才有设计模式?用方法不行么?

类才有设计模式?用方法不行么?我以为,一定程度限制新手很难应用设计模式到实际中的因素之一便是:设计模式是基于面向对象思想的,书中关于设计模式讲解均以类、接口为实现基础,可在实际使用中,新手对面向对象理解不够透彻,有限的开发经验很难想到需要那么多类的应用场景,由此造成无从下手的现状。==============真的必须要依赖于类吗?不是的,虽然大部分设计模式都需要继承、接口等来实现。但是缩小应用场景,

2016-03-22 14:49:13 445

原创 一句话设计模式

一句话设计模式如果有面试官问:你知道6大原则是哪6大吗?你应该能一一列举出来。又问:你能说出23种设计模式吗?你有点艰难了。再问:列出每种设计模式,并说出他们的概念,你要奔溃了……模式很多,书很厚,不能每次都翻书,我需要精简的总结一下.=================单一职责原则无论比变量、方法、类、接口等等,他们的职责或代表的含义负责的功能都应该是单一独立的,一个模块不能负责超过两种事情,一种事

2016-03-22 14:48:41 448

原创 设计模式实践报告 * 目录

设计模式实践报告 * 系列=========初学设计模式的最大困难在于短期内很难应用于实践,而一味的依照书本追求设计模式(滥用设计模式)常常得不偿失。当然,渡过漫长的“滥用设计模式”阶段之后一定会有不菲的收获。该系列是设计模式使用的经验类文章,脱离书本过于简单的例子,以更真实的接近实际需求的案例对设计模式实践进行讲述。- 了解了每一个设计模式的优点,也要了解每个设计模式的缺点!- 设计模式的最佳使用

2016-03-22 14:48:04 615

原创 类MVP实践报告

类MVP实践报告为什么要叫(类)MVP呢?因为MVP只是一种设计思想,大概的定义普及后,到了每个人手里都有不同的理解。想想当今的MVC吧,光一个C就能吵成一片,别说M和V的交互了。下面讲的所有MVP都属于我自己的理解,为不引起定义上的无意义争执,这里用到了“类似MVP”的概念。至少到现在为止,我用的还是很爽的嘛~克守常规是非常愚蠢的一件事=====================目录1.MVP基本概

2016-03-22 14:46:21 773

原创 Styling Views on Android

Styling Views on AndroidAndroid Style 的使用原文:http://blog.danlew.net/2014/11/19/styles-on-android/Styles are hard to get right on Android. There’s a lot of potential for frustration. The hierarchy easily

2016-02-07 13:56:17 533

原创 Android Performance Patterns(Android性能典范)

Android Performance Patterns Android性能典范Googole 开发者YouTube频道 发布了一组16个视频讲述Android性能典范,列述一些开发者们在开发Android应用时困惑的性能问题,以及在总结中呈现了如何处理这些问题的建议

2016-01-27 13:40:47 2101

原创 小米神隐模式破解(反系统息屏后网络中断)

为了提供更好的用户体验,以MIUI为首的神隐模式(因为我只知道MIUI的叫神隐……就先以他为首吧,有了解谁先出的快告诉我),各个系统厂商都推出自己的XX模式。在手机息屏后,未加入白名单的应用将会被禁止访问网络、GPS等。该文章皆在指出如何应对这种系统级屏蔽问题

2016-01-26 11:17:33 9657 9

原创 Android过度绘制深度优化---View提前绘制

原理介绍:上一篇文章对过度绘制和View优化做了大概的简介和介绍。我们知道,引起过度绘制的根本原因是 背景(背景包裹背景图片、颜色、形状、边框等等)。那么通常你在网络查找过度绘制优化策略,不外乎减少View的层叠、多余的控件、一个多余的背景设置等等。可如果你真的去审查代码,会发现你并没有多少可优化的地方。这个时候,你就需要 Android过度绘制深度优化—View提前绘制先说原理:不做处理的V

2015-11-07 15:47:25 7231

原创 Android 多Fragment共享数据的MVP模式实现

前言这里不在介绍MVP模式的概念。只讲一些自己开发中对MVP模式的体会,和一个Activity多个Fragment场景下MVP的应用,和需要注意的问题。注意问题【1】首先第一点,无论是什么模式,你都需要贯彻面向接口化编程的思想 ——–M, V,P三层之间都通过Interface实现依赖,这是实现解耦最简单的办法。【2】MVP的设计思想除了解耦意外,还要实现的一个目的是稳定和复用。(在V很容易变化的环

2015-10-21 20:45:59 8456

原创 Android-状态栏透明导致android:windowSoftInputMode属性失效

今天UI给的新设计稿,要求状态栏透明。透明化的状态看效果还挺不错。大概是这个样子(请忽略这张难看的背景,只是一个Demo): 方法呢,也很简单,onCreate 里一行代码: getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);同时。因为输入框都在底部,最下面还有一个按钮,所以为了用户体验,需要保

2015-10-21 20:07:00 7597 5

原创 Android空数据页面提示控件

前言通常,当我们的应用页面没有数据可以显示时,我们需要给予用户一些界面提示,以避免空空如也的页面带来较差的用户体验。一般这样的页面都为ListView, ListView 很贴心的提供了 setEmptyView(View emptyView);方法来保证用户体验,但是如果你有2年以上的开发经验,你肯定知道,系统的原生控件是永远都满足不了需求的。 setEmptyView 的Bug之一:一般

2015-10-20 23:31:00 3041

原创 Android下的自定义日志框架

前言说起日志,平时调试用的Log类你肯定非常熟悉,并且用着也很方便,可是当你的项目逐渐走上正轨,并且越来越完善的时候,你可能会发现之前大量的Log输出严重影响了你项目的调试,并且分散到每个没文件里的Log输出非常难以管理。(如果你已经开始考虑日志框架的问题了,那么说明你对日志有了一定的了解,这里就不在对日志级别之类的基础知识进行描述了,)这个时候你可能会想:我需要一个日志管理工具!如果你从事过jav

2015-10-20 22:57:32 2730

原创 Android性能优化之GPU过度绘制与图形渲染优化

Android之GPU过度绘制与图形渲染优化写在前面的话本文主要对过度绘制和图形渲染做一个概念性的描述,和简单的优化措施。 如果你已对过度绘制有过一些了解,那么你应该明白,仅是简单的层级优化对过度绘制的改善是很小的。所以,这时候你可以参考这篇文章:另外如果你还想知道一些关于View优化原理,可以参考这篇文章:1. 概念 GPU过度绘制:      是指在一个像素点上绘制多次(超过一次)。举

2015-10-16 21:20:21 8517

原创 android性能优化----工具篇

Android性能优化—-工具篇概览      Android 提供了多种工具帮助开发者调试android程序,保证应用的性能和稳定,如果你知道某一个工具,那么百度或者google会查到很多详细的介绍与帮助文档,但通常的情况是 初学的开发者们并不清楚都有哪些工具可以帮助他们开发。      本文的目的便是如此,下面按照工具所处环境 手机端工具、编译器端工具进行分类概览。之后我们将按照 UI、内存、代

2015-10-15 00:38:40 2497

原创 android性能编码规范

Android性能编码规范目录前言1.编码之初2.禁止(避免)操作3.优化操作4.优化策略5.性能优化心得参考资料 知识详述 前言      一个一般事实:只有当发现“严重”的性能问题时,我们才会开始着手进行性能优化,此时虽然可以针对性的解决程序严重性能问题。但在继续优化过程中,面对无数细小的“不良”代码,却又力不从心。相比得到的些微性能改善,庞大的工作量不得不令人放弃。      但同样不得不

2015-10-12 11:26:55 792 1

原创 Android之GPU过度绘制与图形渲染优化——Hierarchyviewer时间不显示

凡是开始接触或接触过Android图形渲染优化的童鞋肯定对 hierarchyviewer 这个工具不陌生。Hierarchy Viewer工具用来显示UI布局的层级关系。如下图:Hierarchy Viewer除了层级显示,更实用的地方可能就是它对View绘制时间的显示了,这对我们优化UI绘制效率很关键,但是有的童鞋就有些抓狂了,明明我第一次打开的时候是有时间显示的,怎么后来就没有了呢?变成这

2015-08-18 22:40:10 2414

原创 设计模式——6大设计原则笔记

今天刚开始系统化的学习设计模式。比起一年前什么基础都没有看的一头雾水,现在终于能懂了!!但还是理解的不太好。所以即时总结一下,以后经常拿起来巩固。 本文只是做了一部分概念总结性工作,且没有代码,类似于笔记。随着反复阅读,将会逐渐丰富。具体内容还请详阅 【设计模式之禅】6大设计原则:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。 (这个真不是一两天就能懂得啊,刚

2015-06-02 11:38:45 492

原创 关于无线搜索的理解

本来是为了应聘神马搜索产品实习写的,谁知道一面就莫名其妙挂了,完全没用到……哎……【关于无线搜索的理解】无限搜索:基于手机等移动设备上的搜索服务。 因为网速、屏幕、设备响应速度等限制,最初无线搜索的市场并不理想。而现阶段因为这些硬件技术问题都得到解决。而现在我们几乎是手机不离身的,那么又有几个电脑是不离身的呢? 所以现在无线搜索的份额已经快要超过PC搜索了。首先,谈无线搜索,我觉得可以从两个方面

2015-05-31 22:22:17 757

原创 Android面试题整理

最近找实习,狠狠恶补了一下Android基础。整理出一份文档来。分享一下…… 因为是准备来面试的答题的,所以很多都是口语化,并且只说出一个大概,后面每天拿出一个来详细写。 话说Android面试,感觉java才是重点啊,好多都是问java问题的。 基础真的很重要!!!【android5.0】 碎片化的问题开始得到改善 系统风格更偏向扁平加拟物 全新的通知栏,优先显示重要通知 不同数据独

2015-05-31 22:12:01 479

原创 Android--Eclipse常用快捷键

真不知道这两年自己怎么过来的,发现所有做的事情都是用最笨的办法……撸代码最烦的是什么?时不时需要去弄鼠标,恨不得手指头长在键盘上有木有?快捷键记一下【Ctrl+Shift+O】快速生成Import,再也不用鼠标点了/快速去掉所有没有用到的Import超级赞 【Alt+/】代码自动补全超级方便……但也不知道害了几代人,到现在连类名都记不住,一般只记得前三个字母……【A

2015-05-16 11:41:18 316

android过度绘制

通过View的提前绘制,从根本上解决android过度绘制

2015-10-27

Android多Fragment的MVP实现

Android下多Fragment的MVP实现

2015-10-21

Android空数据提示控件

Android空数据页面提示控件。较ListView体验更优

2015-10-20

Android下自定义日志框架

Android下的自定义日志框架。移动开发一般没有必要引入第三方日志框架,可以自己编写。

2015-10-20

Android聊天

Android聊天软件源码,可实现文字与表情发送

2014-07-10

jpg与rar合并,隐藏资源

用jpg图片隐藏资源,可以隐藏好多东西哦

2014-07-10

C语音指针于字符串技巧

C语言 指针与字符串的使用技巧与要点。内容不多,对于初学者很值得看一下

2014-07-10

java控制windows鼠标键盘

java控制windows 键盘鼠标。项目是一个工具盒子,可以调用盒子内部代码实现相关操作。

2014-07-10

空空如也

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

TA关注的人

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