- 博客(123)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 《APP研发录》读记(二)
第三章:经典场景设计图片缓存设计:图片缓存的出现是为了避免出现OOM问题,根据需要对图片的加载进行一些压缩和优化,它主要完成三个任务:图片的缓存,可以有效的减少对于流量的消耗,优化用户体验图片的压缩加载,降低加载大图时出现OOM的几率,保证鲁棒性完成图片的异步加载,可以简化开发现在基本上使用的主流图片开源框架有很多:Universal-Image-Loader(已不再更新维护,不推荐使用,但
2016-12-14 12:13:47 624
原创 《APP研发录》读记
第一章APP框架设计和重构重新规划Android的项目结构:合理的使用项目间的依赖,将项目中和业务无关联的类封装到一个AndroidLib项目中作为依赖。合理的进行分包处理,可以依据功能模块或者是类的类型来分类管理。不直接使用Activity,而是在基类中封装之后,之后的Activity统一继承自BaseActivity,同时实现在BaseActivity中定义的一些抽象方法。统一
2016-12-13 22:15:47 1131
原创 Git学习总结
简介:本文参考自stormzhang的主页和《Android群英传–神兵利器》—第二章版本控制神器 将学习的Git常见命令做一个总结,加深记忆,方便查看。Git的版本控制状态图:Git基础命令:git –version:查看当前git版本git config –list:显示当前所有配置信息git config –global [属性名] [属性值]:配置指定的配置,例如:git confi
2016-12-13 13:43:53 617
原创 Android中的Gradle
说明:本文参考自《Android群英传–神兵利器》对于Android开发者来说Gradle是个绕不过去的技术点,只有能理解并熟练的使用Gradle才可以高效有序的开发。Gradle是什么:简单来说Gradle就是一个新兴的项目构建工具,他有着很高的灵活度,可以满足我们很多的项目需求。关于Gradle的介绍可以看这篇博文: Gradle for Android 系列:为什么 Gradle 这么火And
2016-12-11 20:16:29 10347
原创 《Android开发艺术探索》--Android线程和线程池
简介线程和线程池在Android开发中有着重要的地位。因为Android在主线程也就是UI线程中不能做太多耗时的操作(ANR问题),所以很多需要耗时的操作(文件读写,网络请求等)就需要在子线程中进行处理,完成之后在通知UI线程更新界面。 为什么只能在UI线程中更新UI:由于UI线程是非线程安全的,所以如果在子线程中更新UI容易导致未知的错误,但是也不能把UI线程设计成线程安全的,因为会进行频繁的
2016-12-09 21:06:37 1042
原创 Google官方支持的MVVM架构框架Data Binding使用入门
最新最新推出的MVVM架构是将MVP中的Presenter换成了View Model,也就是Model +View+ViewModel的模式。这种架构方式可以很便捷的进行数据的交互,当数据发生变化时通过ViewModel可以及时的将变化反应到View中去。DataBinding的引入:在需要应用DataBinding的Module的gradle文件中添加:dataBinding{ e
2016-11-29 21:36:20 4161
原创 Google官方推荐MVP基础示例学习总结
对于MVP架构,最近一段时间谷歌推出了官方的示例,包含多种不同的方式,先调了一个最基础的用来学习一下。Google官方示例的Git-Hub地址:Google官方示例地址,大家可以去参观学习。本文参考自http://mp.weixin.qq.com/s?__biz=MzI0MjE3OTYwMg==&mid=2649547602&idx=1&sn=571db7e744c998ef4ca762ec6a13
2016-11-27 21:37:18 3825
原创 Android基础----Intent
简介:在最开始学习Android时候我们都会被告知Android的四大组件:Activity,BroadcastReceiver,Service,Intent,之前已经讲过前边的三大组件,现在我们来看看Intent。Intent(意图),就像是其中文翻译一样,intent其实表达的是一种意图,即要让前边的三大组件怎么配合协作,所以说Intent其实是Android系统中的信使,负责调度各组件,传递消
2016-11-26 14:01:53 552
原创 计算机网络基础汇总
计算机网络体系分类:计算机网络整个体系有两个大的分类:一个是国际组织制定的OSI七层模型,一种是实际使用中的TCP/IP四层模型。 OSI七层模型 TCP/IP四层模型 应用层 表示层 应用层 会话层 传输层 传输层 网络层 网络层 数据链路层 物理接入层 物理层 物理层:物理层主要是实现主机和网络之间的物理连接,规定一些与传输媒体
2016-11-24 11:05:30 1552
转载 Android SQLite是线程安全的吗?
本文转载自SQLite数据库本身不具有线程安全性 Android SQLiteDatabase提供了线程安全的保证,里面添加了同步逻辑。 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#setLockingEnabled%28boolean%29 http://stack
2016-11-15 23:40:27 2789 1
原创 Android群英传--绘图机制和处理技巧(四)
Android中图像的图形特效处理之前都是关于图像中色彩处理的特效,后边就是开始关于图像方面的处理。 和之前在处理色彩的时候使用一个4x5的矩阵一样,在进行图像的处理的时候也是使用矩阵进行处理,只是处理图像使用的是3x3的矩阵。对于每一个像素点而言,都有其各自的坐标矩阵来表达其坐标信息。例如对于像素点C而言其坐标矩阵为⎡⎣⎢XY1⎤⎦⎥\begin{bmatrix}X \\ Y \\ 1 \\ \
2016-11-12 17:59:11 560
原创 《剑指》7
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。package offer;import java.util.Stack;/** * 用两个栈来实现一个队列,完成队列的Push和Pop操作。 * 队列中的元素为int类型。 * @author WQC * */public class offer7_TwoStackImplQueue {
2016-11-10 20:36:35 449
原创 《剑指》6
题目:给定一颗二叉树的前序和中序遍历结果,重构该二叉树,并输入其头结点package offer;public class offer6_ReBuildTree { /** * 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树,并输出其头结点。 * 假设输入的两种遍历结果中都不含重复的数字 * @param args */ public
2016-11-10 18:54:29 406
原创 《Android开发艺术探索》--View事件分发
简介分析Android中的事件体系其实就是分析MotionEvent对象的处理过程。即当一个事件序列产生之后,系统需要把这一系列的事件交给一个具体的View来进行处理,而传递的过程就是事件的分发。在这个过程中最重要的就是这三个方法:public boolean dispatchTouchEvent(MotionEvent ev) 用于事件的分发,如果事件能传递给当前的View,那么此方法一定会被
2016-11-09 11:59:51 548
转载 面试中的 10 大排序算法总结
本文转载自码农网:http://www.codeceo.com/article/10-sort-algorithm-interview.html#0-tsina-1-10490-397232819ff9a47a7b7e80a40613cfe1 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其
2016-11-07 21:40:10 622
原创 树的Java实现
关于View和View事件的基础知识:View:View是Android中所有的控件的基类,Android中所有的控件基本可以分为两类,一种是只有其自身的控件(类似于web中的单标签),另一种是在这个组件中可以放置其他的View组件(类似于web中的双标签),即View和ViewGroup。这样根据控件之间的相互嵌套就形成了树一样的结构,即控件树。关于View的更多的介绍可以看这篇博文:Androi
2016-11-07 17:36:30 540
原创 Android群英传--自定义View详解(一)
Android中的控件架构 :概述:Android中所有的控件都继承自View类,View为最顶层的类,然后在其之下又有ViewGroup和View两个大的分类,ViewGroup作为父控件可以包含多个View控件,并管理其所包含的View控件,通过ViewGroup,整个界面形成了一个树形结构,也就是常说的控件树。实例:那么具体到一个Activity中,这些控件树又是怎么体现的呢?通常情况下,我们
2016-11-06 21:41:46 696
原创 《Android开发艺术探索》--消息机制
介绍:在Android中,我们最经常使用的消息传递机制就是Handler+Looper+MessageQueue。这种机制常用于,将耗时任务在另一个线程中运行,而不影响主线程中UI的绘制,只有当任务完成时会通知UI线程进行界面的更新。Android中只能在主线程中更新UI的原因: 使用这种机制的原因是因为Android中UI线程是非线程安全的,也就是说当多线程进行访问时会出现意想不到的错误,所以就
2016-11-03 14:59:23 556
原创 《剑指》5
题目:从尾到头打印一个单链表方法:很容易的就想到了栈先进后出的特性,可以把链表从头到尾遍历,同时将结点入栈,然后将栈中的元素依次弹出。这里写代码片
2016-11-01 15:01:12 344
原创 Android群英传--动画机制与技巧(二)
继续上一篇的,总结一下最后的SVG矢量动画。SVG矢量动画:介绍:矢量动画是Google在Android5.X中新增加的动画类型。要了解这种动画类型,首先我们来了解一下什么是SVG。 引用自W3C文档:http://www.w3school.com.cn/svg/svg_intro.asp 什么是SVG? SVG 指可伸缩矢量图形 (Scalable Vector Graphic
2016-11-01 14:51:58 504
原创 Android群英传--动画机制与技巧(一)
动画是一个App的极为重要的部分,若把一个App看做是一个“人”,那么各种框架是组成这个“人”的各种骨骼,UI界面就是这个“人”的面部五官,肤色等外观,而动画就是“人体”内的各种软组织,用于缓冲,可以保护“人体”内“器官”不受“伤害”。若是缺少了动画,那么整个系统就会显得生硬而没有美感。动画分类:Android中的动画分为三类:最初的视图动画,然后加入了属性动画,然后又加入了矢量动画,一步
2016-10-31 15:08:31 604
原创 《剑指》4
题目:实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy”,则输出“We%20are%20happy”方法一:最直观的就是遍历字符串,每当遇到一个空格的时候将其替换成%20,然后继续扫描,但是得每一次都得移动空格之后的所有字符。/** * 遍历字符串,遇到空格就替换成%20 * @param str * @return */
2016-10-27 15:57:49 396
原创 《剑指》3
题目:在二维数组中,每一行都是按照从左到右的顺序递增排序,每一列都是按照从上到下递增排序。请完成一个函数,输入一个这样的二维数组和一个整数,判断数组中是否含有这个整数。方法一:最直观的方法肯定是遍历整个数组,寻找是含有给出的整数。/** * 遍历数组 * @param array * @param target * @return */ pu
2016-10-27 14:56:20 363
原创 《剑指》42
题目:输入一个英文句子,翻转句子中单词的顺序,但是单词内支付的顺序不变,为简单起见,标点符号和普通字母一样处理。例如输入字符串“I am a student.”则输出“student. a am I ”。翻转字符串可以先翻转整个字符串,然后再将每个单词的字符翻转过来。public class Offer42 { public static void main(String[] args) {
2016-10-27 14:40:32 392
原创 《剑指》41
题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得他们的和证号是s。如果有多对数字的和等于s,输出任意一对即可。方法一:定义两个指针,分别指向数组第一个和数组最后一个,然后判断两者的和与s的关系:若两者的和大于s,则指向数组最后一个的指针向前移动若两者的和等于s,则直接输出这两个数若两者的和小于s,则指向数组第一个的指针向后移动
2016-10-27 11:41:30 329
原创 无线测量APP开发总结
简介:博主小白一枚,这个app只是大三时候和一位学长一起做了这个用于测量吊车倾角的app,硬件上是有两个姿态传感器,将姿态传感器的数据通过总机接收汇总之后,通过总机和手机之间的蓝牙连接,将数据上传到手机上,在手机上实时的绘制出当前的吊钩倾角状态。现在做一下总结也算是对这次经历的反思和改进,第一次做一个实际的项目,所以比较混乱,欢迎各位看后提出改进意见。界面很简单,只有一个设置界面和一个进行
2016-10-26 11:21:51 1571
原创 哈希表及其操作
哈希表定义:一般的查找都是基于比较的,其关键字和在结构中的位置是没有确定的对应关系的,查找的效率依赖于比较的次数。 理想的情况是,每个记录的关键字和其在结构中的位置是有确定的关系的,就像是函数的变量和因变量一样,对于每一个KK,有一个f(K)f(K)与之对应。这样我们在查找时候就可以根据给定的关键字K而直接找到其对应的镜像。此时,我们称这个对应关系ff为哈希函数,按这个思想建立的表称
2016-10-17 22:18:56 1107
原创 常见查找算法(Java实现)
查找的性能分析:对于查找算法而言,常用“其关键字和给定值进行过比较的记录个数的平均值”作为衡量查找算法的依据。定义:为了确定记录在查找表中的位置,需要和给定的值进行比较的关键字个数的期望值称为查找算法在查找成功时的平均查找长度。 对于含有n个记录的表。查找成功时的平均查找长度为ASL=∑i=1nPiCiASL= \sum _{i=1}^nP_iC_i 其中PiP_i为查找表中第ii个记录
2016-09-29 17:33:46 9680 2
原创 图及其操作(C语言版)
图及其操作(C语言版)标签(空格分隔): 未分类图的定义和性质:定义: 图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,R),其中,G表示一个图,V是图G中顶点的集合,R是图G中边的集合。顶点:在图中的数据元素通常叫做顶点。弧头/弧尾:若<v,w>∈VR<v,w>\in VR则<v,w><v,w>表示从vv到 ww的一条弧,且称vv为弧尾或初始点,称ww为弧头或终端点。有
2016-09-27 22:23:12 6892
原创 树及其操作(C语言版)
树及其操作(C语言版)标签(空格分隔): 数据结构 树树定义和性质:树的定义:树是n个(n>=0)有限节点组成一个具有层次关系的集合。根及子树:在任意一个非空树中,有且仅有一个特定的称为根的结点,当n>1时,其余结点又可以分为m(m>0)个互不相交的有限集T1,T2,...Tm T_1,T_2,...T_m,其中每一个集合本身又是一颗树,并称为根的子树。基本操作:InitTree(&T):构造
2016-09-23 09:50:34 10511 1
转载 Google Java编程风格指南
Google Java编程风格指南作者:Hawstein 出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。1.前言这份文档是Google Java编程风格规范的完整定义。当且仅当一个Jav
2016-08-30 10:51:02 651
原创 Android基础----Fragment
简介:Fragment(碎片)最初是为了大屏幕的平板设备而设计出来的一款控件,他必须”嵌入”Activity中进行使用,一个Activity可以包含多个Fragment,而一个Fragment也可以被多个Activity复用。当在大屏幕设备上时,可以在一个Activity中同时显示多个Fragment,通过多个Fragment的配合来使得交互更加的友好。基本用法:自定义一个Fragment,继承自
2016-07-15 23:06:29 565
原创 Android基础----Activity
简介:Activity可以说是Android中最重要的组件,其承载着显示界面的重任,一个应用需要包含多个Activity,这些Activity构成了一个Activity栈,当前显示在屏幕上可见的Activity位于栈顶,当一个应用的Activity栈中所有的Activity都退出之后,改应用也就结束了。基本用法:Activity最基础的用法可以参考之前的文章:Android中Activity的初步接
2016-07-11 23:38:12 707
原创 Android基础----BroadcastReceiver
简介:BroadcastReceiver(广播接收者)可以接收发出来的广播,通过不同的广播来进行不同的业务处理。,例如接收到开机时系统启动的广播就可以激活相对应的Service,即实现了开机自启动功能。基本用法:实现自定义广播接收者,继承自系统的BroadcastReceiver,并实现相应的方法。注册广播,分为两种方式,可以在AndroidManifest.xml文件中注册,也可以在Activ
2016-07-02 11:21:37 590
原创 Android基础----Service
简介:Service是和Activity相类似的应用组件,他们都是一个可以自行的程序,最大的区别就在于Activity是有界面显示的,而Service是不需要界面显示的,其是运行在后台的服务。所以Service常用于处理不需要交互界面的一些任务,例如后台播放器播音乐等任务。基本用法:实现一个自定义的Service类,继承自系统的Service类,并实现其中的方法在AndroidManifest.
2016-07-02 10:15:06 768
原创 Android基础----ContentProvider
简介:ContentProvider和ContentResolver是Android中用于实现应用程序之间相互共享数据的一个组件,同属于Android四大组件之一。其中ContentProvider用于将应用程序中的数据暴露给外部,供其他程序调用,ContentResolve则是用于查询ContentProvider所提供的数据,二者之间通过URI来进行连接。即ContentProvider通过UR
2016-06-30 15:54:17 647
原创 Linux下的TCP/IP编程----线程及多线程服务端
之前有讲过进程及多进程服务端的实现,现在我们来看看更为广泛而且实用的线程及多线程服务端的实现。那么什么是线程呢? 线程是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是行程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并行多个线程,每条线程并行执行不同的任务。这是比较正式的解释,简单点来说,线程就是进程的更进一步的细化。由于进程代表的
2016-06-29 20:27:47 4302 3
原创 记录一些遇到的坑
1.构建工具太高级导致的错bug显示Error:java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0Error: at java.lang.ClassLoader.defineClass1(Native Method)Error: a
2016-06-25 21:25:58 1471
原创 ORM数据库框架使用
ORM框架ActiveAndroid简介及使用教程:ActiveAndroid框架是是一个轻量级的数据库框架,对于数据库的CUDR操作进行了很好的封装,使用起来很是方便,使得数据库的操作不再是用原始的API。activeandroid的github地址:https://github.com/pardom/ActiveAndroid具体的使用教程在其github地址上有很详细的教程:https://g
2016-06-20 22:40:12 2111
原创 Linux常见基础命令总结(三)
Linux的bash:1. 检查命令是否为bash的内置命令: type [-tpa] command t :当加入-t时type会将command以下列的字眼显示出它的意义: file:外部命令 alias:该命令是某一命令设置的别名 builtn:该命令是bash的内置命令 p:如果后边接的是外部命令,就显示完整文件名 a:会从PATH变量定义的路径中,
2016-06-19 16:01:52 642
在有多个图形的情况下OpenGLES如何单独移动一个图形
2015-11-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人