自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

谷哥的小弟

Mobile application developer

  • 博客(46)
  • 收藏
  • 关注

原创 再见,2017,你好,2018

一直想写一篇年终总结的,但是又不知道写点什么,感觉没有什么可总结的,但是今年有很多事情还是值得回顾纪念的,之后再来看这些东西应该会感触颇多。2017对我来说是值得回味的一年,可以用三个词来概括,成长、成果、成熟。这一年有太多不顺心的事情,也有很多值得纪念的时刻。对于我一个即将离开大学校园走上社会的大学生来说,2017的很多经历都是弥足珍贵的。我从今年年初就开始准备找工作的事情了,一开始我还是充满激情

2017-12-31 13:43:48 860 1

原创 Android动态加载

我们都知道,在Android手机中,应用程序需要通过下载apk文件然后安装才能正常运行,如果说可以不用安装直接运行,那就很方便了。这种想法是可以实现的,我们可以在一个应用中去动态加载一个APK文件中的功能逻辑,这并不是在任何情况下都可以的,这对APK是有一定的要求的,也就是这种APK不仅可以通过手动安装来运行,也要能够被其它的应用进行动态加载来运行。当然这里的运行并不是它自身的运行,而是依托于一个现

2017-11-13 19:54:28 662

转载 Windows Server上DHCP的配置

本文转自偶像鼍的博客,原文地址:http://blog.csdn.net/yuanguozhengjust/article/details/37512269学校实验室里大大小小设备还不少,网络环境虽说不复杂,但也比家用的复杂一些,就当练练手吧,刚好写点文章,免得以后实验室网络没人管了。那么就先从DHCP的配置来讲吧!1.DHCP是什么,有什么用DHC

2017-07-01 16:26:33 9215

原创 AIDL实现进程间通信

一、什么是AIDLAIDL(Android Interface Definition Language),Android接口定义语言,利用它定义客户端与服务端使用进程间通信进行相互通信时都认可的接口。在Android上,一个进程通常无法访问另一个进程的内存。尽管如此,进程需要需要将其对象分解成操作系统能够识别的原语,并将对象编组成括约边界的对象,编写这一编组操作的代码是一项繁琐的工作,因此An

2017-04-01 18:28:20 708

转载 TCP的三握四挥

三次握手         首先Client端发送连接请求报文,Server端接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server端发送ACK报文,并分配资源。这样就建立了TCP连接。过程如下图所示四次挥手(中断可以是Client端,也可以是Server端)         假设Client端发送中断请求,也就是发送FIN报文。Server

2017-02-28 22:00:29 2943

原创 View工作原理

上一篇博客主要讲了View的事件体系,主要就View参数的相关概念、滑动以及事件分发进行了详细说明,这次主要看下View的工作原理。主要就基本概念及三大绘制流程进行简要分析,文章主要理论知识来自 Android开发艺术探索1.    ViewRoot和DecorView当Activity调用setContentView方法后会调用PhoneWindow类的setContentView方

2017-02-27 09:41:15 613

原创 View事件体系

最近一直在看VIew的相关知识,因为马上要找工作了,所以还是总结下来,对以后也能有所帮助。本文理论知识选自Android开发艺术探索View参数概念1.     位置参数由顶点决定,对应于View的四个属性: top(左上角纵坐标)、left(左上角横坐标)、bottom(右下角纵坐标)、right(右下角横坐标),相对于View的父容器,view的宽高 width = right

2017-02-16 12:29:53 683

转载 App冷启动白屏解析

本文转载自郭霖博客:http://blog.csdn.net/guolin_blog/article/details/51019856记得在本月初,我发表了一篇文章叫《 Android Studio新功能解析,你真的了解Instant Run吗?》,里面详细讲解了Android Studio中新加入的Instant Run功能,使得我们开发的效率可以大大地提升。不过对于这个

2017-01-21 18:32:15 310

原创 另类加法

如果让我们实现两个整数相加,但是不允许用加号及其它算数运算符,应该怎么实现呢,不能用算数运算,那其实还有一种运算方式就是位运算,关于算数运算大家可以看下位运算简单介绍,那么到底怎样用位运算实现呢,,,其实用两种运算符就可以了,"&" 和 "^"。数据在计算机中都是以二进制的形式来存储的,所以对于没有进位的运算,比如1+2,其实就是这样的其实这就相当于异或,所以对于两个整数数a, b如果没有

2016-12-25 22:26:25 702 3

原创 Java基础知识

今天在牛客网刷题时碰到了这样一道题,感觉是很基础的知识点,但是要做出来并不容易,先来看一下题目/** * Created by zmt on 2016/12/22. */public class Test { public static void main(String [] args){ System.out.println(new B().getValue()

2016-12-22 21:12:21 32011 22

转载 浅谈Java内部类

本文转自牛客网:https://www.nowcoder.com/questionTerminal/48524c47dd924887be6684b17175fa401.为什么使用内部类?使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响1.1.使用内部类最大的优点就在于它能够非常好的解决多重继

2016-12-21 21:01:04 529

原创 Handler机制原理

Handler、Looper、Message是Android线程间通信的重要概念,我们在项目中会经常用到,最常用的写法,创建一个Handler对象,在线程中通过Handler发送消息来更新UI,这是很常用的写法,那么有时候我们把Handler的创建写在线程里面,运行就会报错,错误信息大都是“Can't create handler inside thread that has notcalled

2016-11-16 01:08:01 1767 2

原创 基数排序

基数排序基本思想:将原始序列的每个数封装成一个对象,其中包括value(值域)和next(指向此类的下一个对象),把每个元素按照其值域value的位数从低到高分别进行排序,每一位上的数放到对应下标的数组中,当有相同的数时,把该对象放到当前元素所在链表的最后位置上(尾插法),这样从个位开始,一直到最大元素的最高位。这样就把整个序列按照从小到大的顺序存放于数组中了。具体实现:比如无序序列 46、2

2016-11-13 23:22:53 277

原创 二路归并排序

二路归并的基本思想:将初始序列的n个元素看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2的有序子序列,然后再对这n/2个有序子序列进行两两归并,得到n/4个长度为4的有序子序列,直到得到一个长度为n的有序序列。具体实现:现有无序序列46、25、68、33、33、19、12、80初始状态:第一次划分:第二次划分:第三次划分:

2016-11-11 12:03:55 813

原创 快速排序

快速排序的基本思想:从待排序列中任选一个记录并标记,称之为“枢轴”,然后遍历整个序列,小于枢轴的放到其前面,大于枢轴的放到其后面,这样一趟遍历完毕后,整个序列就成为两个子序列,前半部分都是小于记录的值,后半部分都大于记录的值,然后再递归的对每一个子序列进行快速排序,直到每个子序列只有一个元素,整个序列变得有序。具体实现:对于无序数组r[n],用两个标记low和high分别表示数组的两端,hig

2016-11-10 00:01:10 755

原创 希尔排序

希尔排序(Shell Sort)又称为 "缩小增量排序",其基本思想是:先将整个待排序列根据增量分割成若干个子序列,分别进行插入排序,然后再缩小增量依次进行排序,最后再对全体进行一次插入排序,因为插入排序在序列基本有序的情况下效率是很高的,所以Shell Sort 比直接插入排序有很大提高现在我们看一下Shell Sort的完整过程,比如无序序列46、25、68、33、33、19、12、80

2016-11-06 21:01:07 332

原创 RecyclerView实现多种item布局

在项目中列表是基本都会用到的,然而在显示列表时,我们需要的数据可能需要不止一种item显示,对于复杂的数据就需要多种item,以不同的样式显示出来,这样效果是很棒的,我们先看一下效果我们可以看到,这个RecyclerView中有多种item显示出来,那么具体怎么实现呢,其实在RecyclerView中,我们可以重写方法getItemViewType(),这个方法会传进一个参数posit

2016-11-03 22:39:19 36804 14

原创 插入排序

直接插入排序是利用顺序查找来判断带插入元素r[i]在r[1] ~ r[i - 1]有序序列中的位置,将r[i]与前面的记录的r[1] ~ r[i - 1]从后向前比较,将所有大于r[i]的元素后移一位,直到遇到一个小于或等于r[i]的元素,该元素位置就是r[i]插入的位置 。现在按照这个过程执行一遍比如无序数组 33、12、25、33、68、19、80初始状态首先选择第二个元素

2016-11-03 00:53:40 472

原创 二进制中1的个数

前几天看了一道题目,输入一个数,统计这个数的二进制中的1的个数,第一眼看这个题感觉很容易,先把这个数转成二进制,然后再用String.valueof(),方法(如果用Java写的话)将其转成字符串,最后遍历一遍,统计出1的个数,但是,这种做法效率很低,不推荐使用,其实我们可以通过位运算来高效的完成这个问题大概说下位运算,位运算一共分为五种,与、或、异或、左移、右移。与(&) 1 & 1 =

2016-10-26 22:58:04 458

原创 Toolbar Menu的显示与隐藏

我们在写项目的时候,一般都会用到fragment来显示多个页面,并且每个页面的功能可能都不尽相同,这样每个标题栏的菜单选项都会不太一样,所以我们就需要在不同的页面中显示不同的菜单选项,这就要求标题栏中menu的每个item选项要能够根据不同的页面显示或者隐藏,本文就着重解决这个问题。先来看一下最终的显示效果主页有三个页面选项新闻页面,menu什么都没有图片页面,同样menu

2016-10-22 15:30:28 10582 1

原创 探索ImageLoader

图片加载是Android程序中很常用的功能,这篇文章我们简要分析一下ImageLoader的过程1. Bitmap的高效加载       Bitmap在Android中指的是一张图片,BitmapFactory提供了四种方法来获取Bitmap,分别是decodeFile(StringpathName);decodeResource(R.xxx.xxx);decodeStream()

2016-10-17 19:08:13 307

原创 HashMap实现原理

HashMap实现原理  HashMap是Map接口的典型实现类,可以向其中添加很多组键值对来存储数据,并且允许值都为null,存储数据和取出数据的方法分别为put(Object, Object),get(Object,Object),关于这些大家应该经常会用到,这篇博客主要讲一下HashMap的存取过程。   首先我先简单讲一下HashMap内部存储数据的结构,它是采用数组+链表的形式来

2016-09-20 20:13:32 672 2

原创 简单爬虫

终于把教务系统搞定了,课表,个人信息,成绩,都可以拿到了,接下来要做的就是把数据存到数据库,直接操作数据库。1.    POST请求http://222.24.19.201/default4.aspx,请求体加上五对键值对  1)      ("__VIEWSTATE","dDwxMTE4MjQwNDc1Ozs+ombGLJflIyczODVOjorgMB6XZe8=")2)

2016-07-31 10:33:07 724

原创 获取当前网络IPv4地址

最近在做一个项目,需要获取当前所连接网络的IPv4地址,然后自己查了查资料得到如下结论,亲测完美!!!代码如下:import java.util.Enumeration;import java.net.Inet4Address;import java.net.NetworkInterface;import java.net.InetAddress;public class tes

2016-07-23 17:36:59 9612 2

原创 Socket实现文件互传(二)

Socket实现文件传输(二)         上次说了用Socket实现文件传输的前提工作,获取手机的各种资源文件,这篇就主要讲一下具体的实现过程,传输原理是基于Socket实现的。         实现文件传输        在拿到各种文件资源后(关于获取手机资源文件请参照我的上一篇博客获取手机文件资源),我们可以传输文件到电脑了,在传输文件之前先要连接设备,也就是在客户端连接到一台pc,So...

2016-07-22 16:43:11 5634 6

转载 Git常见错误

原文链接 如果输入$ git remote add origin [email protected]:djqiang(github帐号名)/gitdemo(项目名).git     提示出错信息:fatal: remote origin already exists.    解决办法如下:    1、先输入$ git remote rm origin   

2016-07-19 00:03:12 367

原创 Socket实现文件互传(一)

最近一直在做比赛的一个项目,就是实现客户端和PC端的文件互传,其实一开始在看到这个题目的时候,完全不知道怎么去实现,感觉一脸懵逼,后来在查阅了资料以及相关书籍后了解到可以用Socket来进行通信,通过IO流来实现文件的互传,于是开始着手写这个项目。下面来详细介绍一.   读取手机文件资源。要传输文件首先要有文件可传,这就要先从手机数据库中读取各种文件资源,包括音乐、视频

2016-06-01 16:08:57 8977

转载 浅谈Java中extends和implements

Extends可以理解为全盘继承了父类的功能。implements可以理解为为这个类附加一些额外的功能;interface定义一些方法,并没有实现,需要implements来实现才可用。extend可以继承一个接口,但仍是一个接口,也需要implements之后才可用。对于class而言,Extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)

2016-05-23 10:08:53 770

原创 Android Intent

Android中最重要的特征之一就是可以利用一个带有action的intent 使当前app跳转到其它app, 例如我们的app有一个地址想要显示在地图上,我们并不需要在app中创建一个activity来显示地图,而是使用intention来发出查看地址的请求, Android系统会启动能显示地图的程序来呈现该地址。一 . 建立隐式Intent          隐式Intention

2016-05-02 18:45:30 350

转载 使用Fragment建立动态UI

使用Fragment建立动态UI         为了在Android上为用户提供动态的、多窗口的交互体验,我们需要将UI组件和Activity操作封装成模块进行使用,使得我们可以在activity中对这些模块进行切入切出操作。可以用Fragment来创建这些模块,Fragment就像一个嵌套的activity,拥有自己的布局(layout)并管理自己的生命周期。接收自己的输入事件,可以在ac

2016-04-26 20:13:45 851

原创 Android SQLite数据库

SQLite是一款轻量级的关系型数据库,它的运算运算速度非常快,很适合在移动设备上使用,并且操作简单,下面简单介绍一下SQLite的使用        一 . 创建数据库Android中提供了一个SQLiteOpenHelper帮助类来管理数据库,它是一个抽象类,首先我们创建一个类来继承SQLiteOpenHelper,然后分别重写onCreat()和onUgrade()这两个方法,它们分

2016-04-16 01:20:56 480

转载 Sharedpreferences

获取SharedPreferences的两种方式:1 调用Context对象的getSharedPreferences()方法2 调用Activity对象的getPreferences()方法两种方式的区别:调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.

2016-03-24 00:03:38 270

转载 ListView监听OnItemClick无响应

有时会碰到ListView的onItemClickListener事件无法响应,主要原因:listview的子元素中包含了Button或者ImageButton之类的元素,button的优先级高于listview 所以不能监听item的点击事件。解决方法:在item 的根节点加入 “ android:descendantFocusability="blocksDescendants" 即可

2016-03-15 11:30:28 540

转载 Fragment 生命周期

官网帮助文档链接: http://developer.android.com/guide/components/fragments.html主要看两张图,和跑代码一,Fragment的生命周           二,与Activity生命周期的对比     场景演示 : 切换到该Fragment11-29 14:26:35.095: D/

2016-03-11 23:14:45 273

转载 图的遍历 DFS(深度优先),BFS(广度优先)

#include #include #include using namespace std; //表结点 typedef struct ArcNode{ int adjvex;//该弧所指向的顶点的位置 ArcNode *nextarc;//指向下一条弧的指针 }ArcNode; //头结点 typedef struct

2016-01-08 16:51:47 409

原创 Weather report

对于大多数的Android手机,天气app都是系统必备的,对于预测天气的功能的实现,博主最近也做了研究,其实也不是太复杂,主要用到了网络请求以及数据解析方面的内容。下面就来详细介绍下如何在android中实现天气appj基本功能的开发。1.网络请求,在android系统中,网络请求主要有两种实现方式,URLConnection和httpClient,这两种方式都可以实现网络请求。(1).U

2015-12-18 19:57:39 999

原创 最小生成树之Kruskal算法

对于城市交通问题,有一个要解决的问题是如何使n个城市之间在最节省经费的情况下建立交通路线,保证连通n个城市,在所有的线路中选择代价最小的。最小生成树就可以解决这一问题。要构成最小生成树,必须满足一下两个条件(1)尽可能选取权值最小的,但是不能构成回路。(2)选取n-1条恰当的边连接往中的n个顶点。Kruskal算法的基本思想:对于一个n个顶点的图,从权值最小的边开始,若它的添加不会

2015-12-13 17:42:14 385

原创 huffman

哈夫曼树又称最优二叉树,是带权路径最短的树,可以用来构造最优编码,用于信息传递,数据压缩等方面,是一种应用广泛的二叉树。哈夫曼算法的实现(1)存储结构哈夫曼树是一种二叉树,其有自己的存储特点,可以采用静态三叉链表来实现。对于每个节点,它的存储信息应包含自身的权值,双亲信息,以及左右孩子的信息。因此可以设计成如下所示的三叉链表结点结构。weight------parent------

2015-12-06 19:37:31 705

原创 栈的应用之算数表达式

对于一个算术表达式,我们可以用栈这种数据结构来计算他的值,也就是说可以将一个标准形式的表达式(或叫中缀表达式)转换成后缀表达式,并坚持普通的优先级法则,将一般问题浓缩成小规模问题,我们假设有运算符 + - * / ( )中缀表达式是合法的,比如 :a + b * c + ( d * e + f )  * g 转换成后缀表达式 a b c * + d e * f + g * + ,对表达式进行遍历,

2015-11-11 20:04:54 476

原创 Android MusicPlayer

最近一直在看android媒体播放的MediaPlayer类,本来以为用MediaPlayer的几个方法就可以完成基本音乐播放的功能了,然并卵,其中有好多需要自己去思考完善的,待我一一道来。一.在手机的SOLitaDatebase中获取音频文件要实现手机音乐播放的功能,首先要扫描手机数据库中的音频文件,这就要用到Cursor了,用它来存储音频文件,关于Cursor的用用法这里不做过多解释,

2015-10-28 22:03:09 750 1

空空如也

空空如也

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

TA关注的人

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