自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 java中的多线程

线程操作系统能够执行调度的最小单位。我们在面对一些高并发场景或耗时任务的时候,通常都会采用异步线程的方式,在java中,使用线程的方式本身就很多,除了原生的Thread可以包装Runnable,还有Executor线程池可以包装Runnable、Callable、Futrue接口,也可以用FutrueTask做适配。不同的线程创建方式对应不同的应用场景,而对于一般的后台系统或者应用程序而言,使用合...

2018-08-23 16:27:29 258

原创 Android 系统启动流程

Android系统是基于Linux定制的一款开源的而移动端操作系统,由于其开源的特性,各大手机厂商可以针对其源码进行深度定制,对于开发者来说,有如此庞大且优秀的开源os提供参考,尤其是对移动端的开发者来说,阅读Android系统源码可以帮助我们更好地理解其中的各种机制,平时束手无策的问题也可以在源码中寻找答案。当然光8.0的源码就20多个g,像全部读完几乎是不可能的事,我们主要以framework...

2018-08-10 14:53:38 378

原创 Ubuntu 上使用hexo+github打造个人blog

最近一段时间想要搭建个人的blog,然后好好写博客。在网上大致看了下,一致的推荐hexo来搭建个人blog,而且可以通过github挂载在公网上去,由于个人使用的Ubuntu 16.04,通过命令行操作各种环境比较方便,因此就使用Ubuntu+Hexo+Github开启了我的私博搭建,博客的地址在 我的博客。清除hexo,npm和nodejs相信很多人也各种google百度了各种方案,然而...

2018-06-29 18:45:27 2152 3

转载 Android 系统整体架构

前言看了Gityuan大神的博客,最近因为遇到一些工作上的问题踩了坑,决定正式开始阅读Android framework层源码,当然后面可能还会经历一个多月的毕设流程,等毕业回来工作也正式要迈上正轨了,好几个月没写博客了,前段时间因为感情上的问题消沉了几个月,好在现在走出来了,其实很早以前就想阅读framework了,趁着这段时间就开始吧。今天这篇文章主要梳理下Android整体的架构和系统启...

2018-04-11 16:25:49 9044

原创 Android怎么新建项目并上传到github上

在github新建项目clone项目到本地,在Android Studio下新建项目点击vcs->Import Into Version Control->Creat Git Repository创建新的本地代码仓库将克隆项目下的隐藏文件.git复制进项目目录下,输入命令cp -a .git /home/panhao/AndroidStudioProjects/Shake即把.git复制

2018-02-01 11:32:25 464

原创 Ubuntu 下 Android 模块打jar包

前言其实环境无所谓,现在Android主流的开发环境都是Android Studio,那么我们平时写的诸如一些框架或者类库之类的,为了提供给他人使用需要进行打包,打包的形式有很多种,如果是开源的框架之类的可以在jitpack等上面进行打包,别人只需要按提示添加依赖就好了。不过有时候公司需要的还是应该以jar包的形式进行打包,只在团队成员间使用,这时候往往需要我们打jar包提供给他人使用。安

2018-01-22 17:20:35 399

原创 手写Android网络框架——CatHttp(二)

客户端客户端有两种:IPCClient和IPCCreator,其中IPCCreator是基于IPCClient对请求和url等信息采用注解封装,使用方式更加简便,同时解析后的返回结果支持json和protobuf两种格式的数据,而IPCClient使用方式相对会复杂一些,但是灵活性和可操作性上更高。IPCClient 客户端内部支持AIDL和LockSocket两种方式进行通信,内置c

2018-01-19 16:23:31 351

原创 手写Android网络框架——CatHttp(一)

前言在实际Android应用的开发中,网络请求往往是必不可少的。现在有很多优秀的开源网络框架如Volley、Okhttp和Retrofit等,说到框架,很多童鞋信手拈来,反手一个Okhttp+etrofit+RxJava全家桶。不就是网络请求么,so easy~不过实际开发过程中,确实会出现各种各样的问题,比如你上传一张图片,服务器那边接收不到,怎么办呢?你看了下自己这边,完全按照标准ap

2018-01-19 16:22:17 1277

原创 JVM 类加载机制

前言在java文件被编译成class文件存储为二进制字节码后,并不能直接使用,经过类加载,一个类才可以被装载进运行时内存并被使用。因此理解类加载机制才能让我们更深刻地理解我们编写的java代码是如何一步一步的从 编译成class文件,到如何在内存中正确的使用的过程。类加载的时机 类从被加载到虚拟机内存开始,到卸载出内存为止,它的生命周期如上图。其中,验证、准备和解析3个部分统称

2017-11-28 21:24:27 213

原创 JAVA Class类文件结构

前言要想深入的了解jvm,了解java编译后的类文件结构和字节码是很有必要的。虽然这部分内容(主要是class文件的数据结构)比较枯燥,但是这也是最基础的内容,是我们深入理解jvm的内存、类的加载等内容的基石。Class类文件结构class文件是一组以8位字节为基础的二进制流,各个数据项目按照顺序排列在Class文件中,中间没有任何分隔符。因此整个class文件中存储的内容几乎全是

2017-11-19 15:14:35 326

原创 JVM 垃圾收集与内存分配

前言关于JVM的运行时内存,请看我的上一篇文章Java虚拟机的运行时数据区。引用判定的算法引用计数算法 传统的引用计数算法一般采用计数器方式,即给每一个新生成的对象 一个计数器,每当有新的地方引用它,计数器就+1,引用失效计数器-1,当计数器的值为0时,对象就不可以再被使用了,这样的对象就需要被回收。但是这个算法很难避免对象间循环引用的问题,容易造成“闭包”引发内存泄露。可达性分析算法 以一

2017-10-08 15:05:53 198

原创 Java的运行时数据区

Java虚拟机的运行时数据区文章参考:Java虚拟机 —— 运行时数据区前言之前对于jvm的数据区,大概只能说出一些来,但是对其中的各个区的作用及存储内容都不甚了解,前几天参见几篇博客,仔细的读了一遍,觉得豁然开朗,故记录下来避免以后忘了。之前也看过jvm的书,可是看完就忘了,最近打算再仔细读一遍,毕竟读书这种东西,每一遍都会有不同的感悟,不可能一遍就吃透。这就是jvm运行时数

2017-09-25 12:46:55 546

原创 Java中的lamda表达式---更加高效简洁的表达方式

前言刚好今天看到了lambda表达式,学习了一下基本用法,由于上午就是翻开几篇博客看了看,怕自己忘了,所以还是通过博客的方式记录下。语法确实简洁高效,以后也会在代码里慢慢转变多使用lambda表达式。前提想在项目中使用lambda表达式,那么必须在build.gradle文件中加入如下代码:defaultConfig { ...//省略 jackOptions {

2017-09-08 12:10:57 4905

原创 android事件传递机制---源码分析(下)

前言在前面的文章中分析过了android的View的事件传递机制—android事件传递机制—源码分析(上) 。那么这篇文章我们就来分析android中的ViewGroup的事件传递机制。ViewGroup的事件传递机制ViewGroup是View的子类,重写了View的dispatchTouchEvent方法,以便支持各种嵌套布局和子view。同样的,我们先做一个简单的demo,定义一个自定义l

2017-08-03 01:09:15 1321

原创 android事件传递机制---源码分析(上)

前言在android开发中经常会碰到各种View,ViewGroup嵌套等问题。在这种嵌套问题中经常就会碰到滑动,点击等的冲突问题,要想正确的处理这种问题,对android的事件传递机制的理解尤其重要 。平时看书自己测试各种方法都是一知半解,感觉最好的方式还是打开源码看看内部的实现方能理清这些思路。于是参考书籍和郭神的博客,开启了android事件传递源码的分析。分析思路其实最主要的,自己对自己准备

2017-08-02 00:30:14 984

原创 Activity的四种启动模式

前言我们都知道,android内部是通过回退栈来管理activity的,既然是通过栈来管理,那么activity就能够巧妙的利用栈来做一些事情,例如activity的四种启动模式,都是和activity栈有关系的。Activity的四种启动模式在一些特殊的情况下,我们可能对activity的实例做一些特殊的处理,可能要求整个应用只有一个activity,android系统为我们提供了这些功能,只要在

2017-07-27 13:19:33 253

原创 Handler消息处理机制---从源码分析

前言android应用在启动时,默认会有一个主线程(ui线程),这个线程会关联一个消息队列,所有的操作都会被封装成消息进入消息队列交给主线程来处理,获取到的消息会放入一个死循环中,因此保证程序不会退出。那么handler和looper还有messageQueen和线程到底有什么关系呢?带着这种疑问,我们从handler的源码开始入手分析。UI线程消息循环ui线程的消息循环是在ActivityThre

2017-07-26 13:20:07 447

原创 数据结构篇:实现顺序表和单链表

前言许久没写博客了,7月初去广州一家公司面试了实习生的岗位,是一家小型的创业公司,目前主要做外包业务。作为人生中第一次面试,感觉还是挺宝贵的。刚到广州的时候下着雨,一个人为了一件事走在一个陌生的城市,是一种熟悉又陌生的感觉。广州这座城市给我的感觉:安静,一切都井然有序,繁华,但你关注的绝对不是他的繁华,然后就是四通八达的地铁,我几天的出行全都是地铁,深切的感受到广州交通的发达。 第二天上午

2017-07-14 23:45:07 642

原创 JAVA 的反射基础

前言很早就看过了反射,但是很久没用着一块的知识怕给忘了,但是着一块又很重要,就干脆重新回顾一下反射加深以下印象好了。反射经常是结合注解和泛型一起,通常用来写框架,平时开发中除非特殊情况不然很少用到,但这并不是不好好掌握这些内容的理由,要往上进阶,这些基础的内容就必须掌握好。反射能做什么那么有些问题:反射能做什么?学过反射但很少用到反射原因是什么呢? 反射可以在运行时动态的修改class文件的内容

2017-06-21 21:36:27 224

原创 Android 针对layout,view和监听的绑定注解

前言之前对注解着一块的知识一直很少使用,只知道基本概念,需要用反射操作,恰好最近的项目中有使用ButterKnife这种注解框架,感觉好用很多,当然,我这里写的跟ButterKnife不太一样,ButterKnife用的是编译时注解,我这里用的是运行时注解,不过学东西,总要一步一步来嘛,先可以应用上,后续再考虑性能问题。注解讲到注解,就不得不谈谈注解了,注解是什么,例如一个重写的方法,上面会声明@O

2017-06-20 00:03:05 2224

原创 Retrofit的简单使用(一)

Retrofit简介Retrofit是基于OkHttp封装的一个网络请求框架,和OKHttp同出于Square公司,Retrofit感觉比较简单,看源码也就30来个文件,而且大部分都是注解。可以看一下它的目录结构如下: 引入最新版Retrofit引入Retrofit很简单,只要加上下面这句话 compile ‘com.squareup.retrofit2:retrofit:2.3.0’服务器

2017-06-15 17:42:54 447

原创 kotlin学习(一)kotlin的基本句法语法

前言最近google举行的开发者大会,将kotlin作为android开发的第一语言,当然大家都知道为什么,oracle因为android用java的原因,一直告google侵权要求赔偿,google在android7.0的时候甚至直接换成了openjdk。学习kotlin的原因当然,我并不觉得第一语言换成kotlin就不用好好学习java了,虽然kotlin与java100%互通,但是andro

2017-06-10 14:05:27 391

原创 从源码层分析和学习事件传递机制

前言学习Android,事件传递机制是必须要了解的,之前在项目中遇到一些诸如ScrollView嵌套ListView,RecycleView等,就需要用到这一块的知识,市面上有很多书籍,资料等都讲了这一块的知识,可是只按照别人那里得来的通用性结论死记硬背,感觉也不能深刻的理解,所以我觉得这一块最好的理解方式还是看源码,所以今天决定按照源码的角度来学习和分析事件传递机制。事件传递机制

2017-06-09 18:29:22 206

原创 MVP模式开发之项目框架的搭建

这段时间的感慨其实在之前那一篇MVP模式中大概的对MVP模式做了一个阐述,但是实际运用中要考虑到蛮多的细节性问题 ,而且感觉这次MVP开发的十分顺畅,虽然用户端这边是我一个人开发,数了下大概100多个类,1w行代码的样子。怎么说呢,这次中软杯,由于我不是弄算法这块的,对于Android端我把我现在能做的最好水平做出来了。 虽然做到最后做的想吐了(一个人在各种model、view、p

2017-06-01 01:24:33 3082 4

原创 干货!Android的保活的两种解决方案

做Android 保活的背景由于之前做一个项目的时候需要让进程一直在后台活下去保持不被杀死的状态,因此也是各种百度各种苦苦寻找,本来是想着靠Service来做保活的,因为我的手机是6.0系统的,之前试过的各种依靠Service的方式均以失败告终,因此决定站在另一个角度上来解决问题,–>Android的进程。方案一:双进程守护其实诸如类似360杀毒软件之类的产品本身原理是通过一个一个的遍历进程,如果存

2017-05-26 21:01:49 23648 9

原创 Android 通用的ViewHolder和Adapter的打造

原来的Adapter写法还记得刚学习Android时,刚写Adapter很直白,利用一个ViewHolder的缓存和convertview的复用来实现,当时感觉那种方式蛮不错的,最近准备中软杯项目的时候感觉总是要重复写getView里的方法真的是很不方便,我觉得还是可以进一步抽象的,这里参考了鸿洋大神的博客,博客地址http://blog.csdn.net/lmj623565791/article/

2017-05-26 20:02:29 1056

原创 Mvp模式在Android开发中的应用

前言对于将目标选定在Android端想更进一步的学习的同学来说,对于一些通用的设计模式的使用是必不可少的。尤其是对于大部分习惯于将逻辑代码写在Activity内的同学来说,希望看完这篇文章以后能参照这种分层解耦的方式的或者其它一些优秀的模式(例如MVVM)来进行代码的编写,养成一个良好的编码习惯。MVP结构Model层: Model层负责数据的获取,例如从网络中加载的数据,本地数据库取出的数

2017-03-12 17:27:12 340

原创 电子商城(6)其余工具类

一些工具类以下是一些工具类和一些位置放的不太好的类,有点就没改了。写的不太好还请大家多指教。package com.tmall.net;import org.apache.http.Header;import com.loopj.android.http.AsyncHttpResponseHandler;import com.tmall.view.base.BaseApplication;publ

2017-02-16 13:54:34 357

原创 电子商城(5)application类及视图类

Applicationpackage com.tmall.view.base;import android.app.Application;import android.content.Context;import android.content.res.Resources;import android.widget.Toast;public class BaseApplication ext

2017-02-16 13:50:58 788

原创 电子商城(4)bean包下的类

package com.tmall.bean;public class Address { private int userId; private int id; private String provinceName; private String cityName; private String areaName; private String ph

2017-02-16 13:44:55 308

原创 电子商城(3)-adapter包下类

前言又是隔了好久没写博客了,不知道是太急着学习还是怎么回事,总感觉写博客会占用蛮多时间的,可能还是我太懒了吧,不写博客的话中间学了好多的东西也没有巩固,最近感觉个人学习方法太单一,之前一个人完整开发完一个项目以后觉得什么都会了,继续学下去才发现自己这么点东西真的只算是个皮毛,最近android学完了又在学web后台,陷入一种迷茫中,心里想学精通一样,又担心移动市场目前饱和的现状,一边学着又一边地心不

2017-02-16 13:38:46 360

原创 UML电子商城(2)-首页功能及适配器的使用

前言上次大概给大家展示了一下电子商城的界面和功能,代码倒没有作太详细的讲解。这次带着大家从大体框架分析一下代码吧。由于做之前很认真的画了用例图和类图,服务器连到数据库的接口用JDBC的方式连接。那边针对十几个表写了十几个接口,而且感觉需求不对的时候还经常要改,感觉那一块耽误了不少的时间。好了,废话也不多说了,项目的过程中总会碰到困难的容易的事情,遇到问题想办法先解决,然后回头再看看原理之类的。首页

2016-11-13 17:34:59 1057 1

原创 uml电子商城项目

前言正如上次所说,最近两个星期在做一个Android端关于电子商城的项目。在各种繁忙的学业和平时的琐事中抽出两个星期,写了一个还不是非常完善的电子商城项目,算是对前面所学的Android基础知识一次综合运用吧,对我个人而言,也是一次大的总结。正好过完这个小时就双11了,好了,废话不多说,先上图吧。实际效果图 首页点进去每一个对应栏目会有相应的详情列表 对应的每个商品详情页,图片都是从服务器异

2016-11-11 00:10:08 4864

原创 Android阶段性学习总结

前言最近一直忙着在学习,却忽视了写博客。最近确实是有学到蛮多东西的,而且之前个人觉得每天学习的时间都不够用,哪有时间写博客,现在想想之前这种想法其实挺不对的,怎么说呢,总之我感觉:就算之前学到的东西再多,总会有遗忘,平时学习到的知识要及时的分类梳理,写博客其实是一个很好的方式,正所谓磨刀不误砍柴工嘛。知识梳理没写博客这段时间确实是在埋头苦学,知识点和项目在这里我大体罗列一下吧,以后这些代码都会一一的

2016-10-19 13:02:16 448

原创 Android实现简单的计算器

android

2016-07-07 20:14:23 18667

原创 udp与tcp通信代码

网络通信中,连接方式分为udp和tcp下面是udp的服务器代码:public void setServer() throws SocketException{ byte[] buffer = new byte[10]; DatagramSocket datagramSocket = new DatagramSocket(9090); DatagramPacket da

2016-07-06 23:29:28 406

原创 andriod的activity的生命周期

Android 的Activity 的生命周期        个人感觉android的activity是一种实现了线程并且拥有自己独立组件的界面。其中有几种方法,我做了一些测试,下面简单具体介绍一下activity的一些方法及方法的转换和测试过程。一、几种转态简介1.onCreate:    onCreate状态是在创建activity的实例对象的转台,当点击apk的图标进入apk

2016-07-03 17:26:07 354

原创 svn通信项目文件收发

这是一个SVN通信的项目,涵盖服务器与客户端的文件收发流程,目的是为了保证文件能够正确的在网络中进行传输,客户端上传的文件可以保存在服务器中,同时客户端可以下载服务器之前有用户上传过的所有文件,并以列表的形式展示在客户端。由于当时没有学习数据库,因此在当时处理的时候,文件都是存储在指定文件夹中的,当然这里我们的关注点还是文件在网络中的传输,剩下的可以随着我们学习的深入再进行改进。我认为这种的学习方

2016-06-25 14:14:47 1971

原创 通信项目阶段总结-IM聊客户端

这个学习项目的客户端业务流程基本是我写的,由于界面是用java的swing写的,非常难配置,所以很多都是直接使用的QQ的界面,不过既然能够分成模块,那么前台后台自然是无关的。下面给出我的业务流程代码供大家学习交流:

2016-06-24 11:19:24 1769

原创 浅谈个人对互联网未来发展的见解

最近几天,听了国防科技大学窦勇教授关于大数据与人工智能的讲座,今天又看了绿公司年会马云等人的演讲,充分阐述对未来各行各业发展的见解。我个人对此感受颇深,虽然对很多东西不是了解很多技术的关键点,但是当你听到许多在互联网等行业里工作了二三十年的目击了中国数十年发展的人阐述他们对未来的见解的时候的你眼光也就不仅仅是局限于某个语言某个技术点,而是放眼整个世界,放眼互联网未来行业的发展,一个更高更广的世界呈

2016-06-06 16:58:29 7178

电子商城客户端源码

电子商城的项目及其源码

2017-02-16

IM聊服务器+客户端java源码

所有IM聊项目的客户端和服务器端的java源代码

2016-06-24

空空如也

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

TA关注的人

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