- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 被你忽略掉的 Java 细节知识
静态代码块、构造代码块、构造函数同时存在时的执行顺序:静态代码块 -> 构造代码块 -> 构造函数为什么不支持多继承呢?因为当一个类同时继承两个父类时,两个父类中有相同的功能,那么子类对象调用该功能时,运行哪一个呢?父类中通常是不会出现同名成员变量的,因为父类中只要定义了,子类就不用在定义了,直接继承过来用就可以了。子类的所有构造函数中的第一行,其实都有一条隐身的语句super();接口:
2017-03-09 19:47:03
574
原创 Ubuntu 下真机调试 Android
在 Ubuntu 下进行真机调试,不再像 Windows 下面那么简单了,需要手动配置一些文件才能够拥有正确的调试姿势,本文将讲解如何最简配置 Ubuntu 真机调试。 1. 获取 USB 设备输入命令 lsusb 显示系统中以及连接到系统的USB总线信息,会出现很多行信息,每一行由以下四部分组成: Bus 002: 总线序号Device 011: 总线设备序号ID 05c6:67
2017-02-09 19:06:14
2906
原创 Android LruCache 源码分析
学过操作系统这门课的朋友都还记得 LRU 这个算法吧,中文名叫”最近最久未使用”,它是用在页面置换策略中的一种很巧妙的淘汰算法,而在 Android 中,也有一个缓存淘汰机制用到了它,叫做 LruCache,它也可以说是一个精妙的设计吧,这篇博文中,笔者将带领大家剖析它源码中的精妙之处…1. 初始化LruCache 类源码位于 android.util.LruCache 包下,大家也可以同
2017-01-18 12:35:51
1119
原创 Android 中多次设置 OnClickListener 只执行一次吗?
问题对于 Android 初学者,可能对这个问题会比较疑惑: 对于一个 View,比如 Button,如果为其设置多次点击监听 OnClickListener 回调方法,同时还在布局中设置了 onClick 属性,并且也实现了点击回调方法,那么问题来了,哪些回调方法会执行呢?又是以怎样的顺序执行呢?请跟随脚步和我一探究竟…实验现象我们先来做个实验,观察一下实验现象。 首先在布局文件中声明一个
2017-01-07 11:41:16
7289
1
原创 初探 Linux 系统编程之进程
本文对 Linux 系统编程的进程相关知识进行总结,包含了进程的创建方法、IPC 实现等。1 进程相关概念单道程序设计模式: DOS 操作系统多道程序设计模式: 通过时钟中断在硬件级别控制 CPU 轮转MMU: 内存管理单元,位于 CPU 内部,完成虚拟内存与物理内存的映射和设置修改内存访问级别PCB: 进程控制块,定义在 /usr/src/linux-haeders-3.16.0-
2016-12-26 22:13:42
652
原创 Android 相关重难点知识整理
集合对 HashMap 进行排序: HashMap 本身无序,但其子类 LinkedHashMap 使用链表结构,实现了有序。通过 HashMap#entrySet() 方法可以将 Map 转为 Set<Entry> ,再在 ArrayList 的构造函数中可以传入 Collections ,正好 Set 和 List 的父类就是 Collections ,这样就可以调用 Collections
2016-12-16 11:31:55
2471
原创 《深入理解Java虚拟机》学习笔记
本系列文章为《深入理解Java虚拟机: JVM高级特性与最佳实践》阅读笔记。 垃圾收集器与内存分配策略引用计数法 : 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的对象就是不可能再被使用的。但是,其不能解决对象之间的相互循环引用的问题。Java和C#,甚至包括古老的Lisp,都是使用 根搜索算法 判定对象是否存活的。该算
2016-10-09 10:05:41
347
原创 Java并发编程
线程安全无状态对象永远是线程安全的 无状态对象指的是没有成员域变量的对象原子操作 自增操作是三个离散操作的简写形式: 获取当前值,加1,写回新值。这是一个 读-改-写 操作的实例,其中,结果的状态衍生自它先前的状态。竞争条件 当计算的正确性依赖于运行时中的相关的时序或者多线程的交替时,会产生竞争条件;换句话说,想要得到正确的答案,要依赖于“幸运”的时序。最常见的一种竞争条件是 检查再运行
2016-09-03 19:55:53
445
原创 Android Handler机制 源码解析
0. 前言Handler 在 Android 开发过程可以说是必不可少的一枚棋,它保证了系统运行过程中的消息有序进行传递和处理。此文将在 Android 6.0 源码层面对 Handler 的运行机制进行简要剖析。 1. 总览Handler的内部实现主要涉及到这三个类: Thread、MessageQueue和Looper。它们之间的关系可以用如下的图来简单说明: Thread是最基础的,Lo
2016-08-27 18:56:06
600
原创 LayoutInflater 源码分析
LayoutInflater(布局填充器) 在安卓开发中,可以说是扮演着相当重要的角色,它让我们的 ListView 、 RecyclerView 等很容易变得多姿多彩,也正是它如此容易的操作,让它不由地多出了一份神秘…这篇博文将基于 Android 6.0 对 LayoutInflater 的源码进行一定分析。
2016-08-05 17:53:12
624
原创 EventBus 源码分析
0. 前言EventBus 是一款针对Android优化的发布/订阅事件总线。主要功能是替代 Intent , Handler , BroadCast 在 Fragment , Activity , Service ,线程之间传递消息。优点是开销小,代码更优雅,以及将发送者和接收者解耦。此文将对最新的 EventBus 3.0 的源码进行简要的分析。1. 用法回顾EventBus 3.0 的用法较之
2016-07-22 23:09:44
906
原创 分治法之快排&随机化
0. 快速排序由Tony Hoare在1962年发明,这是一个分治算法,它就在原地完成排序,类似与插入排序。 优点:节约内存资源,非常实用,线性复杂度1. 分治策略1.1 分快速排序通过选取一个关键数据,再根据它的大小,把原数组分为两个子数组,第一个数组里面的元数据都比第二个数组里的元素大或者相等。 1.2 治对两个子数组进行递归排序。1.3 合最后得到的数组便是排好序的数组。 快速排序关键
2016-07-18 21:25:07
709
原创 浅谈Android自定义View
0. 前言本文将对自定义View的原理和方法进行简要讲解,通过此文,你将学到:安卓的View架构View的绘图机制自定义View的方法步骤 1. View控件的架构1.1 View和ViewGroupAndroid中,控件大致可以分为两大类:View控件ViewGroup控件它们都会在界面中占得一块矩形区域。View控件是单个的视图控件,是一个独立的最小个体,View控件之间互不相容,比
2016-05-26 21:17:56
1125
1
原创 《简易新闻》源码分析
0. 前言本文将对github上 liuling开发的基于Material Design和MVP的《简易新闻》源码进行简要分析,通过本文你将学到:阅读应用源码的步骤RecyclerViewNavigationView下拉刷新和上拉加载Material过渡动画CollapsingToolbarLayout1. 寻找入口分析一个应用就是从MainActivity下手,那么如何找到MainA
2016-05-20 21:40:32
7395
原创 《极简笔记》源码分析(二)
此文将对Github上lguipeng大神所开发的 极简笔记 v2.0代码进行分析学习。 通过此文你将学到: - Lambda表达式 - Java自定义注解 - aFinal框架 - RxJava框架 - EventBus消息框架 - 布局文件常用技巧 - PreferenceFragment - 动态申请权限
2016-04-24 21:30:27
5340
原创 JSP+Servlet使用commons-fileupload上传文件连接被重置解决方案
问题描述在JSP+Servlet下,使用commons-fileupload上传文件,网页显示连接被重置,同时服务器端莫名终止。 如图所示: 解决过程搜索该问题无果,搜索回顾commons-fileupload的使用方法,发现需要导包commons-io-2.4.jar到WEB-INF/lib/下,而笔者并没有导入此包,因为这样工作依旧正常,而且奇怪的是IDE没有报任何的异常(比如: class
2016-04-22 15:23:18
5647
3
原创 《极简笔记》源码分析(一)
0. 介绍此文将对Github上lguipeng大神所开发的 极简笔记 v2.0 (点我下载源码)代码进行分析学习。 通过此文你将学到:应用源码的研读方法MVP架构模式Application的应用Degger2依赖注入框架搜索控件的使用ButterKnife库的使用Material主题RecyclerView等新控件的用法Lambda表达式Java自定义注解aFinal框架
2016-04-13 13:27:02
7198
4
转载 Android Application对象必须掌握的七点
1:Application是什么?Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 App
2016-04-08 18:48:04
1470
1
原创 RxJava入门学习笔记
什么是RxJava?RxJava的自我介绍是一个在 Java VM上使用可观测的序列来组成异步的、基于事件的程序的库。这是一个非常精准的概括,但是用“异步”两字概括也许更为通俗易懂。此文将简要记录学习RxJava的笔记。 参考文献 给Android开发者的RxJava详解基本概念RxJava 有四个基本概念:Observable (可观察者,即被观察者)、 Observer (观察者)、
2016-03-19 21:00:20
443
原创 Handler中不能操作Toast的解决方案
前言在安卓开发中,Toast和AlertDialog可以说是最常用的控件之一了吧,但是你在实际开发中有没有遇到过这个异常呢: Can’t create handler inside thread that has not called Lopper.prepare()没错,细心的你一定发现了这不就是在“非主线程中操作UI”或“在Handler中嵌套Handler”引发的异常吗,那么关于为什么会
2016-03-12 17:54:07
5008
原创 AutoCAD生成png透明图像
前言最近在做一个与地图有关项目,需要用到自定义现场地图。在使用激光测距仪测量后并使用AutoCAD绘制出地图后却发现一个严重问题,AutoCAD不能将图形保存为带透明度的Png格式图像文件,经过搜索引擎搜索和细细琢磨,最后使用Photoshop配合AutoCAD达到目的。不多说,具体方法请看正文。 准备工作既然配合着用,那么CAD和PS两款软件就不可少了,笔者使用的是以下版本: AutoCAD
2016-02-29 21:16:07
39184
1
原创 Selector无效的几种情况
前言在安卓开发中,经常会Selector来实现UI中的点按效果,以此回避重写相对复杂的OnTouchEvent事件方法,但是有没有遇到使用了Selector但点击无效果的情况呢?此文对会造成Selector无效的几种情况简单做一个总结。 1.同名问题使用xml生成的drawable与图片不能重名,否则系统优先调用图片而不是xml,所以使用xml记得删除同名图片。2.顺序问题在Selector文件中
2016-02-17 22:51:33
4244
原创 JNI开发之环境搭建
前言此文将介绍如何搭建JNI开发环境,包括Windows下C++编译器MinGW和Eclipse下CDT插件的安装两个部分。 MinGW安装 MinGW介绍: MinGW(Minimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。 另有可用
2016-02-11 23:16:39
634
原创 Accessibility辅助功能的使用
前言又到春节,大家这几天抢红包抢得高兴吗?最近,安卓“辅助功能”特性的应用倒是越来越火了,比如免Root自动安装应用、微信自动抢红包等,这些都是利用安卓的Accessibility实现的,所以是时候了解一下Accessibility了。 介绍 官方介绍: 许多Android用户有不同的能力,要求它们以不同的方式与他们的Android设备进行交互。这包括用户视觉、物理或年龄限制,防止他们完
2016-02-09 01:10:12
7096
原创 Android权限管理
前言农历腊月二十五,年味也愈加浓重了,在新年到来之前争取再多更新几篇博客。此文讲解安卓的权限管理,主要是针对Android 6.0新增加的动态权限获取的使用方法。 两种权限管理什么是权限管理大家也一定都知道,想必不需要笔者多说了,笔者在此只提一下目前的两种权限管理机制: 安装时权限管理: 这是在安卓5.1及以下采用的方案,指的是安装应用完成时,应用可以获得系统权限运行时权限管理: 安卓6.
2016-02-03 23:40:23
524
原创 深入理解Activity(二)
前言系列中上一篇文章中对Activity的基础知识进行了讲解,这篇文章主要讲一些易理解偏差的零碎知识点。 可交互与可见在Activity的生命周期中,出现了两个差不多的方法: onStart()与onResume(),与之配对的还有onStop()与onPause(),它们都是Activity出现在前台时调用,那它们有什么区别呢?区别在于:onStart()与onStop()都是处于前台,可见,
2016-02-02 15:22:02
501
原创 Windows去掉桌面右击菜单多余项
前言在Windows桌面鼠标右击菜单中,通常会出现很多多余的选项,比如显卡相关设置,office相关功能,而这些选项大多数人是不会经常去使用它们的,放在这里反而碍眼,特别是对于强迫症来说这能忍么,而且这样会减缓系统加载速度,表现就是电脑卡的时候想右击刷新,可右击菜单会死活弹不出来…这篇文章就交大家如何去掉右击菜单中的多余选项. 打开注册表首先需要打开系统注册表,使用Windows徽标+R键打开
2016-02-01 15:25:56
6408
原创 使用Tab创建滑动视图
滑动视图滑动视图就是在顶栏有个Tab标题栏,显示内容的标题,下面正文区域是ViewPager构成的可以滑动切换的布局,这种设计也是很常见的,一般用于新闻,应用市场等应用,Tab栏展示分类标题,ViewPager展示正文内容。 实现滑动视图首先要做的是让正文区域显示可以滑动切换的内容,毫无疑问,使用ViewPager来实现: <?xml version="1.0" encoding="utf-8"?
2016-01-29 16:45:25
477
原创 弹出消息的新方式——Snackbar
前言安卓学习的第一课应该就讲了安卓弹出消息Toast的使用,它能够简单快捷有效地以气泡方式提醒用户,但在MaterialDesign盛行的今天,Toast未免也太Low了,本文要讲的即是Toast的取代者——Snackbar。Snackbar介绍Snackerbar简单说就是用来取代Toast的,所以这里就不多说,放两张图大家自行体会。 Toast:Snackbar:使用CoordinatorLa
2016-01-26 18:19:46
2735
原创 安卓NavigationDrawer的使用
Navigation Drawer介绍 导航抽屉(NavigationDrawer)是一个面板,该面板显示应用程序的主导航选项在屏幕的左边缘。它通常是隐藏的,但当手指从屏幕左边缘滑出时,在应用程序中的最高层次,在动作栏中用户触摸应用程序图标。官方介绍总是那么不接地气,其实就是一个从左边拉出来的抽屉而已,是一个很常见的效果,说的再多也不如贴一张图看得明白。 关于导航抽屉的设计原则,可以参见Go
2016-01-25 16:46:42
737
原创 Java byte数组转有符号int
前言最近在写Java蓝牙串口通信读取数据中,需要将读取到的十六进制数转换为16位的有符号整数,网上Google一大堆,均无果,最后在StackOverFlow上找到了答案。 问题描述通信协议上指出需要需要解析出三个16位的int型数据,每个数据2个字节,即2个byte。 温习一下java数据类型基础知识: byte型占1个字节,int型占4个字节,在java中没有无符号的数据类型。下面是官方
2016-01-24 18:12:46
8971
2
原创 安卓Fragments入门
什么是Fragment Fragment代表的是在一个Activity里面用户界面的一个行为或者一个部分。可以在一个Activity中组合多个Fragment或者在多个Activity中使用同一个Fragment。Fragment拥有自己的生命周期和事件体系,但位Activity之下,所以我们可以把它看做是一个子Activity。Fragment受限于ActivityFragment必须嵌入在
2016-01-23 01:31:28
456
原创 Java输入输出流
read & write方法read和write方法在执行时都将阻塞,直至字节确实被读入或写出。available方法使我们可以去检查当前可读入的字节数量。当你完成对流的读写时,应该通过调用close方法来关闭它,否则可能写出字节的最后一个包永远也得不到传递,当然也可以用flush方法来人为地冲刷这些输出。if(is.available()>0){ ... is.read(buffe
2016-01-21 21:53:52
535
原创 Java使用HttpClient库发送请求
HttpClient介绍HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。 more 下载和安装
2016-01-21 21:53:02
1200
原创 Hexo搭建个人网站
关于购买云服务器、域名、DNS解析什么的还请自行百度,此文开始前假设读者会基本Linux操作命令,并且已经租借了云服务器配置java环境1.从oracle官网下载jdk-8u66-linux-x64.gz 2.通过tar -zxvf jdk-8u66-linux-x64.gz解压文件 然后为了便与管理,将解压后的文件移动到/opt/java/ 3.配置环境变量 用vim编辑器
2016-01-21 21:49:48
1156
原创 安卓项目实战----收集用户信息(二)
前言在安卓项目实战—-收集用户信息(一)中,已经实现了短信的读取并写入到文件的操作,这篇文章在此基础上增加广播短信操作的管理模块。 PS:临近考试,所以很久没有更新…bla bla bla… more 遗留的BUG在之前的短信操作类中,表面看没什么问题,在模拟器中完美运行,但是当把它放到真机测试时,就出现了写入文件失败,如图。 ![image](/AP151227/illegalChar.j
2016-01-21 21:41:45
751
原创 安卓项目实战----收集用户信息(一)
安卓项目实战—-收集用户信息(一)前言大家好!欢迎继续来访我的网站。从今天起,我将在这个专题记录我的一个安卓项目实战,我将在此中分享一些个人经验见解,希望能带给大家一点帮助,这个项目将帮助学习安卓SQLite的使用、反射工程、广播服务等等,甚至一些设计模式相关知识(其实目前我也不太懂,只是在读《设计之禅》中形成一点意识,另外也强烈推荐此书)OK,就这样不多说,开始吧! 项目简介首先介绍一下整个项目
2016-01-21 21:37:45
1198
原创 Activity深入理解(一)
Activity的生命周期对于单个Activity可见状态onCreate()->onStart()->onResume()不可见状态onPause()->onStop()onDestroy()销毁状态onDestroy()对于多个Activity不多讲,只注意一点: 每次打开新的Activity总会调用当前的onPause()方法交互设计思想为什么需要onPause()?是否多此
2016-01-21 21:36:11
733
原创 c、c++重难点
本文主要讲述C/C++的部分重难知识点一、结构体和联合体结构体:struct内部各成员共组为一个数据类型各成员拥有各自的内存空间,总内存为所有成员内存之和例如: typedef struct Student { string name; int age; IDcard id; //在下文中定义 }STUDENT a, b; a.name
2015-09-18 21:10:07
1051
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人